@strapi/admin 5.48.1 → 5.50.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 (657) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +33 -20
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +6 -1
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.js +97 -2
  12. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  13. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  14. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/Filters.js +3 -2
  16. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  17. package/dist/admin/admin/src/components/Form.js +9 -5
  18. package/dist/admin/admin/src/components/Form.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  22. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  24. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  26. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  28. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  30. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  34. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  38. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  41. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  42. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  43. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  44. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  45. package/dist/admin/admin/src/components/LeftMenu.js +3 -2
  46. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  47. package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
  48. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  49. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  50. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  52. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  53. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  54. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  55. package/dist/admin/admin/src/components/Pagination.js +3 -2
  56. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  57. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  58. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  59. package/dist/admin/admin/src/components/RelativeTime.js +6 -4
  60. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  61. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  62. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  64. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  65. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  66. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  67. package/dist/admin/admin/src/components/Table.js +3 -2
  68. package/dist/admin/admin/src/components/Table.js.map +1 -1
  69. package/dist/admin/admin/src/components/Theme.js +3 -2
  70. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  71. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  72. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  73. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  74. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  75. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  76. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js +39 -33
  78. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  79. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  80. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Auth.js +78 -6
  82. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  83. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  84. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  85. package/dist/admin/admin/src/features/BackButton.js +3 -2
  86. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  87. package/dist/admin/admin/src/features/Configuration.js +3 -2
  88. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  89. package/dist/admin/admin/src/features/Notifications.js +3 -2
  90. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  91. package/dist/admin/admin/src/features/Tracking.js +7 -3
  92. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  93. package/dist/admin/admin/src/features/Widgets.js +3 -2
  94. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  95. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  96. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  97. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  98. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  99. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  100. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  101. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  102. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  103. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  104. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  105. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  106. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  107. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  108. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  109. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  110. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  111. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  112. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  113. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  114. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  115. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  116. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  117. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  118. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  119. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  120. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  121. package/dist/admin/admin/src/hooks/useMenu.js +7 -3
  122. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  124. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  125. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  126. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  127. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  128. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  129. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  130. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  131. package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
  132. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  133. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  134. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  135. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
  136. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  140. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  142. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  144. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  148. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  150. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  152. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
  154. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  157. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
  158. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  160. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  161. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  162. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  164. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  165. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  166. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  167. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  168. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  170. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  172. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  174. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  176. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  178. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  184. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  186. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  188. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +11 -4
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  237. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  240. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  242. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  243. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  244. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  245. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  246. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  247. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  248. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  249. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  250. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  251. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  252. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  253. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  254. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  255. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  256. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  257. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  258. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  259. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  260. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  261. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  262. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  263. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  264. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  265. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  266. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  267. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  268. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  269. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  270. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  271. package/dist/admin/admin/src/router.js +9 -0
  272. package/dist/admin/admin/src/router.js.map +1 -1
  273. package/dist/admin/admin/src/router.mjs +9 -0
  274. package/dist/admin/admin/src/router.mjs.map +1 -1
  275. package/dist/admin/admin/src/services/auth.js +43 -2
  276. package/dist/admin/admin/src/services/auth.js.map +1 -1
  277. package/dist/admin/admin/src/services/auth.mjs +41 -3
  278. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  279. package/dist/admin/admin/src/translations/en.json.js +22 -0
  280. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  281. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  282. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  283. package/dist/admin/admin/src/translations/ja.json.js +748 -265
  284. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  285. package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
  286. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  287. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  288. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  289. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  290. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  291. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  292. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  293. package/dist/admin/admin/src/utils/locales.js +3 -2
  294. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  295. package/dist/admin/admin/src/utils/objects.js +9 -4
  296. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  297. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  298. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  299. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  300. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  301. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  302. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  303. package/dist/admin/admin/src/utils/urls.js +5 -1
  304. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  305. package/dist/admin/admin/tests/server.js +25 -0
  306. package/dist/admin/admin/tests/server.js.map +1 -1
  307. package/dist/admin/admin/tests/server.mjs +25 -0
  308. package/dist/admin/admin/tests/server.mjs.map +1 -1
  309. package/dist/admin/admin/tests/utils.js +3 -2
  310. package/dist/admin/admin/tests/utils.js.map +1 -1
  311. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  312. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  313. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  314. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  315. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  316. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  324. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  325. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  326. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  327. package/dist/admin/index.js +2 -0
  328. package/dist/admin/index.js.map +1 -1
  329. package/dist/admin/index.mjs +1 -0
  330. package/dist/admin/index.mjs.map +1 -1
  331. package/dist/admin/src/StrapiApp.d.ts +11 -5
  332. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  339. package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  342. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +5 -6
  348. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  349. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  350. package/dist/admin/src/core/apis/router.d.ts +2 -3
  351. package/dist/admin/src/core/store/configure.d.ts +2 -2
  352. package/dist/admin/src/core/utils/createHook.d.ts +4 -4
  353. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  354. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  355. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  356. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  357. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  358. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  359. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  360. package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
  361. package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
  362. package/dist/admin/src/index.d.ts +1 -0
  363. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  364. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  365. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  366. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  369. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  372. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  373. package/dist/admin/src/reducer.d.ts +1 -1
  374. package/dist/admin/src/services/admin.d.ts +2 -2
  375. package/dist/admin/src/services/api.d.ts +1 -1
  376. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  377. package/dist/admin/src/services/auth.d.ts +29 -27
  378. package/dist/admin/src/services/contentApi.d.ts +1 -1
  379. package/dist/admin/src/services/users.d.ts +7 -7
  380. package/dist/admin/src/services/webhooks.d.ts +2 -2
  381. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  382. package/dist/admin/src/utils/locales.d.ts +0 -1
  383. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  384. package/dist/admin/src/utils/shims.d.ts +1 -1
  385. package/dist/admin/tests/store.d.ts +4 -4
  386. package/dist/admin/tests/utils.d.ts +5 -5
  387. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  388. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  389. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  390. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  391. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  392. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  393. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  394. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  395. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  396. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  397. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  398. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  399. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  400. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  401. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  402. package/dist/ee/server/src/index.d.ts +2 -3
  403. package/dist/ee/server/src/index.d.ts.map +1 -1
  404. package/dist/ee/server/src/register.d.ts.map +1 -1
  405. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  406. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  407. package/dist/ee/server/src/services/index.d.ts +1 -1
  408. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  409. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  410. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  411. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  412. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  413. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  414. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  415. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  416. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  417. package/dist/ee/server/src/validation/role.d.ts +6 -6
  418. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  419. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  420. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  421. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  422. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  423. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  424. package/dist/server/ee/server/src/controllers/user.js +6 -2
  425. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  426. package/dist/server/ee/server/src/services/auth.js +5 -1
  427. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  428. package/dist/server/ee/server/src/services/user.js +8 -4
  429. package/dist/server/ee/server/src/services/user.js.map +1 -1
  430. package/dist/server/index.js +6 -2
  431. package/dist/server/index.js.map +1 -1
  432. package/dist/server/server/src/ai/services/ai.js +10 -4
  433. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js +9 -4
  439. package/dist/server/server/src/controllers/admin.js.map +1 -1
  440. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  441. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  442. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  444. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  445. package/dist/server/server/src/controllers/authentication.js +18 -6
  446. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  447. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  448. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  449. package/dist/server/server/src/controllers/index.js +2 -0
  450. package/dist/server/server/src/controllers/index.js.map +1 -1
  451. package/dist/server/server/src/controllers/index.mjs +2 -0
  452. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  453. package/dist/server/server/src/controllers/role.js +2 -4
  454. package/dist/server/server/src/controllers/role.js.map +1 -1
  455. package/dist/server/server/src/controllers/role.mjs +2 -4
  456. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  457. package/dist/server/server/src/controllers/user.js +3 -2
  458. package/dist/server/server/src/controllers/user.js.map +1 -1
  459. package/dist/server/server/src/controllers/webhooks.js +7 -2
  460. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  461. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  462. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  463. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  464. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  465. package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
  466. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  467. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  468. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  469. package/dist/server/server/src/routes/users.js +12 -26
  470. package/dist/server/server/src/routes/users.js.map +1 -1
  471. package/dist/server/server/src/routes/users.mjs +12 -26
  472. package/dist/server/server/src/routes/users.mjs.map +1 -1
  473. package/dist/server/server/src/services/api-token.js +7 -3
  474. package/dist/server/server/src/services/api-token.js.map +1 -1
  475. package/dist/server/server/src/services/auth.js +8 -3
  476. package/dist/server/server/src/services/auth.js.map +1 -1
  477. package/dist/server/server/src/services/content-type.js +6 -2
  478. package/dist/server/server/src/services/content-type.js.map +1 -1
  479. package/dist/server/server/src/services/encryption.js +8 -4
  480. package/dist/server/server/src/services/encryption.js.map +1 -1
  481. package/dist/server/server/src/services/passport.js +6 -2
  482. package/dist/server/server/src/services/passport.js.map +1 -1
  483. package/dist/server/server/src/services/permission/engine.js +5 -1
  484. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  485. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  486. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  487. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  488. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  489. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  490. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  491. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  492. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  493. package/dist/server/server/src/services/permission/queries.js +5 -1
  494. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  495. package/dist/server/server/src/services/project-settings.js +6 -2
  496. package/dist/server/server/src/services/project-settings.js.map +1 -1
  497. package/dist/server/server/src/services/role.js +10 -5
  498. package/dist/server/server/src/services/role.js.map +1 -1
  499. package/dist/server/server/src/services/role.mjs +2 -1
  500. package/dist/server/server/src/services/role.mjs.map +1 -1
  501. package/dist/server/server/src/services/token.js +7 -2
  502. package/dist/server/server/src/services/token.js.map +1 -1
  503. package/dist/server/server/src/services/transfer/permission.js +5 -1
  504. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  505. package/dist/server/server/src/services/transfer/token.js +10 -5
  506. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  507. package/dist/server/server/src/services/user.js +10 -6
  508. package/dist/server/server/src/services/user.js.map +1 -1
  509. package/dist/server/server/src/strategies/admin.js +4 -0
  510. package/dist/server/server/src/strategies/admin.js.map +1 -1
  511. package/dist/server/server/src/strategies/admin.mjs +4 -0
  512. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  513. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  514. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  515. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  516. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  517. package/dist/server/server/src/validation/common-validators.js +6 -2
  518. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  519. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  520. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  521. package/dist/server/shared/utils/session-auth.js +5 -1
  522. package/dist/server/shared/utils/session-auth.js.map +1 -1
  523. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  524. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  525. package/dist/server/src/bootstrap.d.ts.map +1 -1
  526. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  527. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  528. package/dist/server/src/content-types/index.d.ts +6 -0
  529. package/dist/server/src/content-types/index.d.ts.map +1 -1
  530. package/dist/server/src/content-types/session.d.ts +6 -0
  531. package/dist/server/src/content-types/session.d.ts.map +1 -1
  532. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  533. package/dist/server/src/controllers/api-token.d.ts +1 -1
  534. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  535. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  536. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  537. package/dist/server/src/controllers/authentication.d.ts +4 -4
  538. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  539. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  540. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  541. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  542. package/dist/server/src/controllers/homepage.d.ts +2 -2
  543. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  544. package/dist/server/src/controllers/index.d.ts +33 -43
  545. package/dist/server/src/controllers/index.d.ts.map +1 -1
  546. package/dist/server/src/controllers/role.d.ts +4 -4
  547. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  548. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  549. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  550. package/dist/server/src/controllers/user.d.ts +2 -2
  551. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  552. package/dist/server/src/domain/action/index.d.ts +4 -65
  553. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  554. package/dist/server/src/domain/action/provider.d.ts +30 -3
  555. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  556. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  557. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  558. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  559. package/dist/server/src/domain/permission/index.d.ts +0 -1
  560. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  561. package/dist/server/src/domain/user.d.ts.map +1 -1
  562. package/dist/server/src/index.d.ts +51 -63
  563. package/dist/server/src/index.d.ts.map +1 -1
  564. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  565. package/dist/server/src/middlewares/index.d.ts +0 -1
  566. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  567. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  568. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  569. package/dist/server/src/policies/index.d.ts.map +1 -1
  570. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  571. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  572. package/dist/server/src/register.d.ts.map +1 -1
  573. package/dist/server/src/routes/index.d.ts +0 -1
  574. package/dist/server/src/routes/index.d.ts.map +1 -1
  575. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  576. package/dist/server/src/routes/transfer.d.ts +0 -1
  577. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  578. package/dist/server/src/routes/users.d.ts.map +1 -1
  579. package/dist/server/src/services/action.d.ts.map +1 -1
  580. package/dist/server/src/services/api-token.d.ts +5 -6
  581. package/dist/server/src/services/api-token.d.ts.map +1 -1
  582. package/dist/server/src/services/auth.d.ts.map +1 -1
  583. package/dist/server/src/services/condition.d.ts.map +1 -1
  584. package/dist/server/src/services/content-type.d.ts.map +1 -1
  585. package/dist/server/src/services/encryption.d.ts.map +1 -1
  586. package/dist/server/src/services/homepage.d.ts.map +1 -1
  587. package/dist/server/src/services/index.d.ts +12 -21
  588. package/dist/server/src/services/index.d.ts.map +1 -1
  589. package/dist/server/src/services/metrics.d.ts.map +1 -1
  590. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  591. package/dist/server/src/services/passport.d.ts +0 -1
  592. package/dist/server/src/services/passport.d.ts.map +1 -1
  593. package/dist/server/src/services/permission/engine.d.ts +1 -2
  594. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  595. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  596. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  597. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  598. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  599. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  600. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  601. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  602. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  603. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  604. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  605. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  606. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  607. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  608. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  609. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  610. package/dist/server/src/services/permission.d.ts +13 -38
  611. package/dist/server/src/services/permission.d.ts.map +1 -1
  612. package/dist/server/src/services/project-settings.d.ts +2 -4
  613. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  614. package/dist/server/src/services/role.d.ts +7 -1
  615. package/dist/server/src/services/role.d.ts.map +1 -1
  616. package/dist/server/src/services/token.d.ts +1 -1
  617. package/dist/server/src/services/token.d.ts.map +1 -1
  618. package/dist/server/src/services/transfer/token.d.ts +11 -11
  619. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  620. package/dist/server/src/services/user.d.ts +3 -3
  621. package/dist/server/src/services/user.d.ts.map +1 -1
  622. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  623. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  624. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  625. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  626. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  627. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  628. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  629. package/dist/server/src/validation/action-provider.d.ts +2 -2
  630. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  631. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  632. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  633. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  634. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  635. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  636. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  637. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  638. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  639. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  640. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  641. package/dist/server/src/validation/permission.d.ts +6 -6
  642. package/dist/server/src/validation/permission.d.ts.map +1 -1
  643. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  644. package/dist/server/src/validation/project-settings.d.ts +6 -6
  645. package/dist/server/src/validation/role.d.ts +8 -8
  646. package/dist/server/src/validation/role.d.ts.map +1 -1
  647. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  648. package/dist/server/src/validation/user.d.ts +8 -8
  649. package/dist/shared/contracts/permissions.d.ts +1 -0
  650. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  651. package/dist/shared/contracts/sessions.d.ts +62 -0
  652. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  653. package/dist/shared/contracts/shared.d.ts +1 -1
  654. package/dist/shared/contracts/shared.d.ts.map +1 -1
  655. package/dist/shared/utils/session-auth.d.ts +1 -1
  656. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  657. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sources":["../../../../../../server/src/ai/services/ai.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport { AdminUser } from '../../../../shared/contracts/shared';\n\nconst createAiAdminService = ({ strapi }: { strapi: Core.Strapi }) => {\n /**\n * In-memory cache for AI tokens\n * Key format: `${projectId}:${userId}`\n */\n const aiTokenCache = new Map<\n string,\n {\n token: string;\n expiresAt?: string;\n expiresAtMs?: number;\n }\n >();\n\n const isEnabled = (): boolean => {\n const configEnabled = strapi.config.get('admin.ai.enabled', true) === true;\n const licenseEnabled = strapi.ee?.features?.isEnabled('cms-ai') === true;\n return configEnabled && licenseEnabled;\n };\n\n const getAiFeatureConfig = async () => {\n if (!isEnabled()) {\n return {\n isAiI18nConfigured: false,\n isAiMediaLibraryConfigured: false,\n };\n }\n\n const i18nSettings = await strapi.plugin('i18n').service('settings').getSettings();\n const uploadSettings = await strapi.plugin('upload').service('upload').getSettings();\n\n return {\n isAiI18nConfigured: Boolean(i18nSettings?.aiLocalizations),\n isAiMediaLibraryConfigured: Boolean(uploadSettings?.aiMetadata),\n };\n };\n\n /**\n * Resolves the shared context required by both getAiToken and getAiUsage:\n * EE license, project ID, and AI server URL.\n */\n const resolveAiContext = (errorPrefix: string) => {\n if (!isEnabled()) {\n strapi.log.error(`${errorPrefix} AI is not enabled`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n if (!strapi.ee?.isEE) {\n strapi.log.error(`${errorPrefix} Enterprise Edition features are not enabled`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n let eeLicense = process.env.STRAPI_LICENSE;\n\n if (!eeLicense) {\n try {\n const licensePath = path.join(strapi.dirs.app.root, 'license.txt');\n eeLicense = fs.readFileSync(licensePath).toString();\n } catch {\n // License file doesn't exist or can't be read\n }\n }\n\n if (!eeLicense) {\n strapi.log.error(\n `${errorPrefix} No EE license found. Please ensure STRAPI_LICENSE environment variable is set or license.txt file exists.`\n );\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n const projectId = strapi.config.get('uuid');\n if (!projectId) {\n strapi.log.error(`${errorPrefix} Project ID not configured`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n return { eeLicense, projectId, aiServerUrl };\n };\n\n const getAiToken = async () => {\n const ERROR_PREFIX = 'AI token request failed:';\n\n const { eeLicense, projectId, aiServerUrl } = resolveAiContext(ERROR_PREFIX);\n\n // Get the current user\n const user = strapi.requestContext.get()?.state?.user as AdminUser | undefined;\n if (!user) {\n strapi.log.error(`${ERROR_PREFIX} No authenticated user in request context`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n // Create a secure user identifier using only user ID\n const userIdentifier = user.id.toString();\n\n // Check cache for existing valid token\n const cacheKey = `${projectId}:${userIdentifier}`;\n const cachedToken = aiTokenCache.get(cacheKey);\n\n if (cachedToken) {\n const now = Date.now();\n // Check if token is still valid (with buffer so it has time to be used)\n const bufferMs = 2 * 60 * 1000; // 2 minutes\n\n if (cachedToken.expiresAtMs && cachedToken.expiresAtMs - bufferMs > now) {\n strapi.log.info('Using cached AI token');\n\n return {\n token: cachedToken.token,\n expiresAt: cachedToken.expiresAt,\n };\n }\n\n // Token expired or will expire soon, remove from cache\n aiTokenCache.delete(cacheKey);\n }\n\n strapi.log.http('Contacting AI Server for token generation');\n\n try {\n const response = await fetch(`${aiServerUrl}/auth/getAiJWT`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Request-Id': crypto.randomUUID(),\n },\n body: JSON.stringify({\n eeLicense,\n userIdentifier,\n projectId,\n }),\n });\n\n if (!response.ok) {\n let errorData;\n let errorText;\n try {\n errorText = await response.text();\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { error: errorText || 'Failed to parse error response' };\n }\n\n strapi.log.error(`${ERROR_PREFIX} ${errorData?.error || 'Unknown error'}`, {\n status: response.status,\n statusText: response.statusText,\n error: errorData,\n errorText,\n projectId,\n });\n\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n let data;\n try {\n data = (await response.json()) as {\n jwt: string;\n expiresAt?: string;\n };\n } catch (parseError) {\n strapi.log.error(`${ERROR_PREFIX} Failed to parse AI server response`, parseError);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n if (!data.jwt) {\n strapi.log.error(`${ERROR_PREFIX} Invalid response: missing JWT token`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n strapi.log.info('AI token generated successfully', {\n userId: user.id,\n expiresAt: data.expiresAt,\n });\n\n // Cache the token if it has an expiration time\n if (data.expiresAt) {\n const expiresAtMs = new Date(data.expiresAt).getTime();\n aiTokenCache.set(cacheKey, {\n token: data.jwt,\n expiresAt: data.expiresAt,\n expiresAtMs,\n });\n }\n\n // Note: Token expires in 1 hour, client should handle refresh\n return {\n token: data.jwt,\n expiresAt: data.expiresAt,\n };\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === 'AbortError') {\n strapi.log.error(`${ERROR_PREFIX} Request to AI server timed out`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n throw fetchError;\n }\n };\n\n const getAiUsage = async () => {\n const ERROR_PREFIX = 'AI usage data request failed:';\n\n const { eeLicense, projectId, aiServerUrl } = resolveAiContext(ERROR_PREFIX);\n\n strapi.log.http('Contacting AI Server for usage data');\n\n try {\n const response = await fetch(`${aiServerUrl}/cms/ai-data`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Request-Id': crypto.randomUUID(),\n },\n body: JSON.stringify({\n eeKey: eeLicense,\n projectId,\n }),\n });\n\n if (!response.ok) {\n let errorData;\n let errorText;\n try {\n errorText = await response.text();\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { error: errorText || 'Failed to parse error response' };\n }\n\n strapi.log.error(`${ERROR_PREFIX} ${errorData?.error || 'Unknown error'}`, {\n status: response.status,\n statusText: response.statusText,\n error: errorData,\n errorText,\n projectId,\n });\n\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n let data;\n try {\n data = (await response.json()) as {\n data: { cmsAiCreditsUsed: number };\n subscription: {\n subscriptionId: string;\n planPriceId: string;\n subscriptionStatus: string;\n isActiveSubscription: boolean;\n cmsAiEnabled: boolean;\n cmsAiCreditsBase: number;\n cmsAiCreditsMaxUsage: number;\n currentTermStart: string;\n currentTermEnd: string;\n };\n };\n } catch (parseError) {\n strapi.log.error(`${ERROR_PREFIX} Failed to parse AI server response`, parseError);\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n return {\n ...data.data,\n subscription: data.subscription,\n };\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === 'AbortError') {\n strapi.log.error(`${ERROR_PREFIX} Request to AI server timed out`);\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n throw fetchError;\n }\n };\n\n return {\n isEnabled,\n getAiFeatureConfig,\n getAiToken,\n getAiUsage,\n };\n};\n\nexport { createAiAdminService };\n"],"names":["createAiAdminService","strapi","aiTokenCache","Map","isEnabled","configEnabled","config","get","licenseEnabled","ee","features","getAiFeatureConfig","isAiI18nConfigured","isAiMediaLibraryConfigured","i18nSettings","plugin","service","getSettings","uploadSettings","Boolean","aiLocalizations","aiMetadata","resolveAiContext","errorPrefix","log","error","Error","replace","isEE","eeLicense","process","env","STRAPI_LICENSE","licensePath","path","join","dirs","app","root","fs","readFileSync","toString","projectId","aiServerUrl","STRAPI_AI_URL","getAiToken","ERROR_PREFIX","user","requestContext","state","userIdentifier","id","cacheKey","cachedToken","now","Date","bufferMs","expiresAtMs","info","token","expiresAt","delete","http","response","fetch","method","headers","crypto","randomUUID","body","JSON","stringify","ok","errorData","errorText","text","parse","status","statusText","data","json","parseError","jwt","userId","getTime","set","fetchError","name","getAiUsage","eeKey","subscription"],"mappings":"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"}
1
+ {"version":3,"file":"ai.js","sources":["../../../../../../server/src/ai/services/ai.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport { AdminUser } from '../../../../shared/contracts/shared';\n\nconst createAiAdminService = ({ strapi }: { strapi: Core.Strapi }) => {\n /**\n * In-memory cache for AI tokens\n * Key format: `${projectId}:${userId}`\n */\n const aiTokenCache = new Map<\n string,\n {\n token: string;\n expiresAt?: string;\n expiresAtMs?: number;\n }\n >();\n\n const isEnabled = (): boolean => {\n const configEnabled = strapi.config.get('admin.ai.enabled', true) === true;\n const licenseEnabled = strapi.ee?.features?.isEnabled('cms-ai') === true;\n return configEnabled && licenseEnabled;\n };\n\n const getAiFeatureConfig = async () => {\n if (!isEnabled()) {\n return {\n isAiI18nConfigured: false,\n isAiMediaLibraryConfigured: false,\n };\n }\n\n const i18nSettings = await strapi.plugin('i18n').service('settings').getSettings();\n const uploadSettings = await strapi.plugin('upload').service('upload').getSettings();\n\n return {\n isAiI18nConfigured: Boolean(i18nSettings?.aiLocalizations),\n isAiMediaLibraryConfigured: Boolean(uploadSettings?.aiMetadata),\n };\n };\n\n /**\n * Resolves the shared context required by both getAiToken and getAiUsage:\n * EE license, project ID, and AI server URL.\n */\n const resolveAiContext = (errorPrefix: string) => {\n if (!isEnabled()) {\n strapi.log.error(`${errorPrefix} AI is not enabled`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n if (!strapi.ee?.isEE) {\n strapi.log.error(`${errorPrefix} Enterprise Edition features are not enabled`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n let eeLicense = process.env.STRAPI_LICENSE;\n\n if (!eeLicense) {\n try {\n const licensePath = path.join(strapi.dirs.app.root, 'license.txt');\n eeLicense = fs.readFileSync(licensePath).toString();\n } catch {\n // License file doesn't exist or can't be read\n }\n }\n\n if (!eeLicense) {\n strapi.log.error(\n `${errorPrefix} No EE license found. Please ensure STRAPI_LICENSE environment variable is set or license.txt file exists.`\n );\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n const projectId = strapi.config.get('uuid');\n if (!projectId) {\n strapi.log.error(`${errorPrefix} Project ID not configured`);\n throw new Error(`${errorPrefix.replace(/:$/, '')}. Check server logs for details.`);\n }\n\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n return { eeLicense, projectId, aiServerUrl };\n };\n\n const getAiToken = async () => {\n const ERROR_PREFIX = 'AI token request failed:';\n\n const { eeLicense, projectId, aiServerUrl } = resolveAiContext(ERROR_PREFIX);\n\n // Get the current user\n const user = strapi.requestContext.get()?.state?.user as AdminUser | undefined;\n if (!user) {\n strapi.log.error(`${ERROR_PREFIX} No authenticated user in request context`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n // Create a secure user identifier using only user ID\n const userIdentifier = user.id.toString();\n\n // Check cache for existing valid token\n const cacheKey = `${projectId}:${userIdentifier}`;\n const cachedToken = aiTokenCache.get(cacheKey);\n\n if (cachedToken) {\n const now = Date.now();\n // Check if token is still valid (with buffer so it has time to be used)\n const bufferMs = 2 * 60 * 1000; // 2 minutes\n\n if (cachedToken.expiresAtMs && cachedToken.expiresAtMs - bufferMs > now) {\n strapi.log.info('Using cached AI token');\n\n return {\n token: cachedToken.token,\n expiresAt: cachedToken.expiresAt,\n };\n }\n\n // Token expired or will expire soon, remove from cache\n aiTokenCache.delete(cacheKey);\n }\n\n strapi.log.http('Contacting AI Server for token generation');\n\n try {\n const response = await fetch(`${aiServerUrl}/auth/getAiJWT`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Request-Id': crypto.randomUUID(),\n },\n body: JSON.stringify({\n eeLicense,\n userIdentifier,\n projectId,\n }),\n });\n\n if (!response.ok) {\n let errorData;\n let errorText;\n try {\n errorText = await response.text();\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { error: errorText || 'Failed to parse error response' };\n }\n\n strapi.log.error(`${ERROR_PREFIX} ${errorData?.error || 'Unknown error'}`, {\n status: response.status,\n statusText: response.statusText,\n error: errorData,\n errorText,\n projectId,\n });\n\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n let data;\n try {\n data = (await response.json()) as {\n jwt: string;\n expiresAt?: string;\n };\n } catch (parseError) {\n strapi.log.error(`${ERROR_PREFIX} Failed to parse AI server response`, parseError);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n if (!data.jwt) {\n strapi.log.error(`${ERROR_PREFIX} Invalid response: missing JWT token`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n strapi.log.info('AI token generated successfully', {\n userId: user.id,\n expiresAt: data.expiresAt,\n });\n\n // Cache the token if it has an expiration time\n if (data.expiresAt) {\n const expiresAtMs = new Date(data.expiresAt).getTime();\n aiTokenCache.set(cacheKey, {\n token: data.jwt,\n expiresAt: data.expiresAt,\n expiresAtMs,\n });\n }\n\n // Note: Token expires in 1 hour, client should handle refresh\n return {\n token: data.jwt,\n expiresAt: data.expiresAt,\n };\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === 'AbortError') {\n strapi.log.error(`${ERROR_PREFIX} Request to AI server timed out`);\n throw new Error('AI token request failed. Check server logs for details.');\n }\n\n throw fetchError;\n }\n };\n\n const getAiUsage = async () => {\n const ERROR_PREFIX = 'AI usage data request failed:';\n\n const { eeLicense, projectId, aiServerUrl } = resolveAiContext(ERROR_PREFIX);\n\n strapi.log.http('Contacting AI Server for usage data');\n\n try {\n const response = await fetch(`${aiServerUrl}/cms/ai-data`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Request-Id': crypto.randomUUID(),\n },\n body: JSON.stringify({\n eeKey: eeLicense,\n projectId,\n }),\n });\n\n if (!response.ok) {\n let errorData;\n let errorText;\n try {\n errorText = await response.text();\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { error: errorText || 'Failed to parse error response' };\n }\n\n strapi.log.error(`${ERROR_PREFIX} ${errorData?.error || 'Unknown error'}`, {\n status: response.status,\n statusText: response.statusText,\n error: errorData,\n errorText,\n projectId,\n });\n\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n let data;\n try {\n data = (await response.json()) as {\n data: { cmsAiCreditsUsed: number };\n subscription: {\n subscriptionId: string;\n planPriceId: string;\n subscriptionStatus: string;\n isActiveSubscription: boolean;\n cmsAiEnabled: boolean;\n cmsAiCreditsBase: number;\n cmsAiCreditsMaxUsage: number;\n currentTermStart: string;\n currentTermEnd: string;\n };\n };\n } catch (parseError) {\n strapi.log.error(`${ERROR_PREFIX} Failed to parse AI server response`, parseError);\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n return {\n ...data.data,\n subscription: data.subscription,\n };\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === 'AbortError') {\n strapi.log.error(`${ERROR_PREFIX} Request to AI server timed out`);\n throw new Error('AI usage data request failed. Check server logs for details.');\n }\n\n throw fetchError;\n }\n };\n\n return {\n isEnabled,\n getAiFeatureConfig,\n getAiToken,\n getAiUsage,\n };\n};\n\nexport { createAiAdminService };\n"],"names":["createAiAdminService","strapi","aiTokenCache","Map","isEnabled","configEnabled","config","get","licenseEnabled","ee","features","getAiFeatureConfig","isAiI18nConfigured","isAiMediaLibraryConfigured","i18nSettings","plugin","service","getSettings","uploadSettings","Boolean","aiLocalizations","aiMetadata","resolveAiContext","errorPrefix","log","error","Error","replace","isEE","eeLicense","process","env","STRAPI_LICENSE","licensePath","path","join","dirs","app","root","fs","readFileSync","toString","projectId","aiServerUrl","STRAPI_AI_URL","getAiToken","ERROR_PREFIX","user","requestContext","state","userIdentifier","id","cacheKey","cachedToken","now","Date","bufferMs","expiresAtMs","info","token","expiresAt","delete","http","response","fetch","method","headers","crypto","randomUUID","body","JSON","stringify","ok","errorData","errorText","text","parse","status","statusText","data","json","parseError","jwt","userId","getTime","set","fetchError","name","getAiUsage","eeKey","subscription"],"mappings":"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"}
@@ -83,6 +83,12 @@ var session = {
83
83
  configurable: false,
84
84
  private: true,
85
85
  searchable: false
86
+ },
87
+ metadata: {
88
+ type: 'json',
89
+ configurable: false,
90
+ private: true,
91
+ searchable: false
86
92
  }
87
93
  }
88
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sources":["../../../../../server/src/content-types/session.ts"],"sourcesContent":["export default {\n collectionName: 'strapi_sessions',\n info: {\n name: 'Session',\n description: 'Session Manager storage',\n singularName: 'session',\n pluralName: 'sessions',\n displayName: 'Session',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n i18n: {\n localized: false,\n },\n },\n attributes: {\n userId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n sessionId: {\n type: 'string',\n unique: true,\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n childId: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n deviceId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n origin: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n expiresAt: {\n type: 'datetime',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n absoluteExpiresAt: {\n type: 'datetime',\n configurable: false,\n private: true,\n searchable: false,\n },\n status: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n type: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n },\n};\n"],"names":["collectionName","info","name","description","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","i18n","localized","attributes","userId","type","required","configurable","private","searchable","sessionId","unique","childId","deviceId","origin","expiresAt","absoluteExpiresAt","status"],"mappings":";;AAAA,cAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,IAAAA,EAAM,SAAA;QACNC,WAAAA,EAAa,yBAAA;QACbC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX,SAAA;QACAC,IAAAA,EAAM;YACJC,SAAAA,EAAW;AACb;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,MAAAA,EAAQ;YACNC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,QAAA;YACNM,MAAAA,EAAQ,IAAA;YACRL,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAG,OAAAA,EAAS;YACPP,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAI,QAAAA,EAAU;YACRR,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAK,MAAAA,EAAQ;YACNT,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAM,SAAAA,EAAW;YACTV,IAAAA,EAAM,UAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAO,iBAAAA,EAAmB;YACjBX,IAAAA,EAAM,UAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAQ,MAAAA,EAAQ;YACNZ,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAJ,IAAAA,EAAM;YACJA,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd;AACF;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"session.js","sources":["../../../../../server/src/content-types/session.ts"],"sourcesContent":["export default {\n collectionName: 'strapi_sessions',\n info: {\n name: 'Session',\n description: 'Session Manager storage',\n singularName: 'session',\n pluralName: 'sessions',\n displayName: 'Session',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n i18n: {\n localized: false,\n },\n },\n attributes: {\n userId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n sessionId: {\n type: 'string',\n unique: true,\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n childId: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n deviceId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n origin: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n expiresAt: {\n type: 'datetime',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n absoluteExpiresAt: {\n type: 'datetime',\n configurable: false,\n private: true,\n searchable: false,\n },\n status: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n type: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n metadata: {\n type: 'json',\n configurable: false,\n private: true,\n searchable: false,\n },\n },\n};\n"],"names":["collectionName","info","name","description","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","i18n","localized","attributes","userId","type","required","configurable","private","searchable","sessionId","unique","childId","deviceId","origin","expiresAt","absoluteExpiresAt","status","metadata"],"mappings":";;AAAA,cAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,IAAAA,EAAM,SAAA;QACNC,WAAAA,EAAa,yBAAA;QACbC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX,SAAA;QACAC,IAAAA,EAAM;YACJC,SAAAA,EAAW;AACb;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,MAAAA,EAAQ;YACNC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,QAAA;YACNM,MAAAA,EAAQ,IAAA;YACRL,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAG,OAAAA,EAAS;YACPP,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAI,QAAAA,EAAU;YACRR,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAK,MAAAA,EAAQ;YACNT,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAM,SAAAA,EAAW;YACTV,IAAAA,EAAM,UAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAO,iBAAAA,EAAmB;YACjBX,IAAAA,EAAM,UAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAQ,MAAAA,EAAQ;YACNZ,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAJ,IAAAA,EAAM;YACJA,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAS,QAAAA,EAAU;YACRb,IAAAA,EAAM,MAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd;AACF;AACF,CAAA;;;;"}
@@ -81,6 +81,12 @@ var session = {
81
81
  configurable: false,
82
82
  private: true,
83
83
  searchable: false
84
+ },
85
+ metadata: {
86
+ type: 'json',
87
+ configurable: false,
88
+ private: true,
89
+ searchable: false
84
90
  }
85
91
  }
86
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","sources":["../../../../../server/src/content-types/session.ts"],"sourcesContent":["export default {\n collectionName: 'strapi_sessions',\n info: {\n name: 'Session',\n description: 'Session Manager storage',\n singularName: 'session',\n pluralName: 'sessions',\n displayName: 'Session',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n i18n: {\n localized: false,\n },\n },\n attributes: {\n userId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n sessionId: {\n type: 'string',\n unique: true,\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n childId: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n deviceId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n origin: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n expiresAt: {\n type: 'datetime',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n absoluteExpiresAt: {\n type: 'datetime',\n configurable: false,\n private: true,\n searchable: false,\n },\n status: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n type: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n },\n};\n"],"names":["collectionName","info","name","description","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","i18n","localized","attributes","userId","type","required","configurable","private","searchable","sessionId","unique","childId","deviceId","origin","expiresAt","absoluteExpiresAt","status"],"mappings":"AAAA,cAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,IAAAA,EAAM,SAAA;QACNC,WAAAA,EAAa,yBAAA;QACbC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX,SAAA;QACAC,IAAAA,EAAM;YACJC,SAAAA,EAAW;AACb;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,MAAAA,EAAQ;YACNC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,QAAA;YACNM,MAAAA,EAAQ,IAAA;YACRL,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAG,OAAAA,EAAS;YACPP,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAI,QAAAA,EAAU;YACRR,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAK,MAAAA,EAAQ;YACNT,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAM,SAAAA,EAAW;YACTV,IAAAA,EAAM,UAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAO,iBAAAA,EAAmB;YACjBX,IAAAA,EAAM,UAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAQ,MAAAA,EAAQ;YACNZ,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAJ,IAAAA,EAAM;YACJA,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd;AACF;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"session.mjs","sources":["../../../../../server/src/content-types/session.ts"],"sourcesContent":["export default {\n collectionName: 'strapi_sessions',\n info: {\n name: 'Session',\n description: 'Session Manager storage',\n singularName: 'session',\n pluralName: 'sessions',\n displayName: 'Session',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n i18n: {\n localized: false,\n },\n },\n attributes: {\n userId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n sessionId: {\n type: 'string',\n unique: true,\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n childId: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n deviceId: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n origin: {\n type: 'string',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n expiresAt: {\n type: 'datetime',\n required: true,\n configurable: false,\n private: true,\n searchable: false,\n },\n absoluteExpiresAt: {\n type: 'datetime',\n configurable: false,\n private: true,\n searchable: false,\n },\n status: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n type: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n metadata: {\n type: 'json',\n configurable: false,\n private: true,\n searchable: false,\n },\n },\n};\n"],"names":["collectionName","info","name","description","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","i18n","localized","attributes","userId","type","required","configurable","private","searchable","sessionId","unique","childId","deviceId","origin","expiresAt","absoluteExpiresAt","status","metadata"],"mappings":"AAAA,cAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,IAAAA,EAAM,SAAA;QACNC,WAAAA,EAAa,yBAAA;QACbC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX,SAAA;QACAC,IAAAA,EAAM;YACJC,SAAAA,EAAW;AACb;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,MAAAA,EAAQ;YACNC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,QAAA;YACNM,MAAAA,EAAQ,IAAA;YACRL,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAG,OAAAA,EAAS;YACPP,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAI,QAAAA,EAAU;YACRR,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAK,MAAAA,EAAQ;YACNT,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAM,SAAAA,EAAW;YACTV,IAAAA,EAAM,UAAA;YACNC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAO,iBAAAA,EAAmB;YACjBX,IAAAA,EAAM,UAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAQ,MAAAA,EAAQ;YACNZ,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAJ,IAAAA,EAAM;YACJA,IAAAA,EAAM,QAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd,SAAA;QACAS,QAAAA,EAAU;YACRb,IAAAA,EAAM,MAAA;YACNE,YAAAA,EAAc,KAAA;YACdC,OAAAA,EAAS,IAAA;YACTC,UAAAA,EAAY;AACd;AACF;AACF,CAAA;;;;"}
@@ -8,6 +8,11 @@ var utils = require('@strapi/utils');
8
8
  var projectSettings = require('../validation/project-settings.js');
9
9
  var index = require('../utils/index.js');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var path__default = /*#__PURE__*/_interopDefault(path);
14
+ var ___default = /*#__PURE__*/_interopDefault(_);
15
+
11
16
  let lazyTsUtils;
12
17
  const isUsingTypeScript = (...args)=>{
13
18
  if (!lazyTsUtils) {
@@ -77,10 +82,10 @@ const isUsingTypeScript = (...args)=>{
77
82
  return;
78
83
  }
79
84
  const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);
80
- const useTypescriptOnAdmin = await isUsingTypeScript(path.join(strapi.dirs.app.root, 'src', 'admin'));
85
+ const useTypescriptOnAdmin = await isUsingTypeScript(path__default.default.join(strapi.dirs.app.root, 'src', 'admin'));
81
86
  const isHostedOnStrapiCloud = utils.env('STRAPI_HOSTING', null) === 'strapi.cloud';
82
- const numberOfAllContentTypes = _.size(strapi.contentTypes);
83
- const numberOfComponents = _.size(strapi.components);
87
+ const numberOfAllContentTypes = ___default.default.size(strapi.contentTypes);
88
+ const numberOfComponents = ___default.default.size(strapi.components);
84
89
  const getNumberOfDynamicZones = ()=>{
85
90
  return fp.pipe(fp.map('attributes'), fp.flatMap(fp.values), // @ts-expect-error lodash types
86
91
  fp.sumBy(fp.propEq('type', 'dynamiczone')))(strapi.contentTypes);
@@ -104,7 +109,7 @@ const isUsingTypeScript = (...args)=>{
104
109
  const projectId = strapi.config.get('uuid', null);
105
110
  const nodeVersion = process.version;
106
111
  const communityEdition = !strapi.EE;
107
- const useYarn = await fse.exists(path.join(process.cwd(), 'yarn.lock'));
112
+ const useYarn = await fse.exists(path__default.default.join(process.cwd(), 'yarn.lock'));
108
113
  return {
109
114
  data: {
110
115
  currentEnvironment,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { map, values, sumBy, pipe, flatMap, propEq } from 'lodash/fp';\nimport _ from 'lodash';\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType() {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return pipe(\n map('attributes'),\n flatMap(values),\n // @ts-expect-error lodash types\n sumBy(propEq('type', 'dynamiczone'))\n )(strapi.contentTypes as any);\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins }) satisfies Plugins.Response;\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","pipe","map","flatMap","values","sumBy","propEq","numberOfDynamicZones","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","Object","entries","filter","key","includes","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { map, values, sumBy, pipe, flatMap, propEq } from 'lodash/fp';\nimport _ from 'lodash';\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType() {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return pipe(\n map('attributes'),\n flatMap(values),\n // @ts-expect-error lodash types\n sumBy(propEq('type', 'dynamiczone'))\n )(strapi.contentTypes as any);\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","pipe","map","flatMap","values","sumBy","propEq","numberOfDynamicZones","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","Object","entries","filter","key","includes","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin.mjs","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { map, values, sumBy, pipe, flatMap, propEq } from 'lodash/fp';\nimport _ from 'lodash';\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType() {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return pipe(\n map('attributes'),\n flatMap(values),\n // @ts-expect-error lodash types\n sumBy(propEq('type', 'dynamiczone'))\n )(strapi.contentTypes as any);\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins }) satisfies Plugins.Response;\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","pipe","map","flatMap","values","sumBy","propEq","numberOfDynamicZones","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","Object","entries","filter","key","includes","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
1
+ {"version":3,"file":"admin.mjs","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { map, values, sumBy, pipe, flatMap, propEq } from 'lodash/fp';\nimport _ from 'lodash';\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType() {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return pipe(\n map('attributes'),\n flatMap(values),\n // @ts-expect-error lodash types\n sumBy(propEq('type', 'dynamiczone'))\n )(strapi.contentTypes as any);\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","pipe","map","flatMap","values","sumBy","propEq","numberOfDynamicZones","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","Object","entries","filter","key","includes","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@strapi/utils');
4
+ var sessionAuth = require('../../../shared/utils/session-auth.js');
5
+
6
+ const ORIGIN = 'admin';
7
+ const getCurrentSessionId = (ctx)=>{
8
+ const session = ctx.state.session;
9
+ return typeof session?.id === 'string' ? session.id : undefined;
10
+ };
11
+ var authenticatedSession = {
12
+ async list (ctx) {
13
+ const sessionManager = sessionAuth.getSessionManager();
14
+ if (!sessionManager) {
15
+ return ctx.internalServerError();
16
+ }
17
+ const userId = String(ctx.state.user.id);
18
+ const currentSessionId = getCurrentSessionId(ctx);
19
+ const sessions = await sessionManager(ORIGIN).listSessions(userId);
20
+ const data = utils.sortSessionsForDisplay(sessions.map((session)=>utils.sanitizeSessionEntry(session, currentSessionId)));
21
+ ctx.body = {
22
+ data
23
+ };
24
+ },
25
+ async revoke (ctx) {
26
+ const sessionManager = sessionAuth.getSessionManager();
27
+ if (!sessionManager) {
28
+ return ctx.internalServerError();
29
+ }
30
+ const userId = String(ctx.state.user.id);
31
+ const { sessionId } = ctx.params;
32
+ const revoked = await sessionManager(ORIGIN).revokeSessionById(userId, sessionId);
33
+ if (!revoked) {
34
+ return ctx.notFound('Session not found');
35
+ }
36
+ ctx.body = {
37
+ data: {}
38
+ };
39
+ },
40
+ async revokeAll (ctx) {
41
+ const sessionManager = sessionAuth.getSessionManager();
42
+ if (!sessionManager) {
43
+ return ctx.internalServerError();
44
+ }
45
+ const userId = String(ctx.state.user.id);
46
+ const keepCurrent = ctx.query.keepCurrent === 'true' || ctx.query.keepCurrent === '1';
47
+ if (keepCurrent) {
48
+ const currentSessionId = getCurrentSessionId(ctx);
49
+ const sessions = await sessionManager(ORIGIN).listSessions(userId);
50
+ await Promise.all(sessions.filter((session)=>session.sessionId !== currentSessionId).map((session)=>sessionManager(ORIGIN).revokeSessionById(userId, session.sessionId)));
51
+ } else {
52
+ await sessionManager(ORIGIN).invalidateRefreshToken(userId);
53
+ }
54
+ ctx.body = {
55
+ data: {}
56
+ };
57
+ }
58
+ };
59
+
60
+ module.exports = authenticatedSession;
61
+ //# sourceMappingURL=authenticated-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticated-session.js","sources":["../../../../../server/src/controllers/authenticated-session.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { sanitizeSessionEntry, sortSessionsForDisplay } from '@strapi/utils';\n\nimport { getSessionManager } from '../../../shared/utils/session-auth';\nimport type {\n GetSessions,\n DeleteSession,\n DeleteAllSessions,\n} from '../../../shared/contracts/sessions';\n\nconst ORIGIN = 'admin';\n\nconst getCurrentSessionId = (ctx: Context): string | undefined => {\n const session = ctx.state.session as { id?: string } | undefined;\n return typeof session?.id === 'string' ? session.id : undefined;\n};\n\nexport default {\n async list(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const currentSessionId = getCurrentSessionId(ctx);\n const sessions = await sessionManager(ORIGIN).listSessions(userId);\n\n const data = sortSessionsForDisplay(\n sessions.map((session) => sanitizeSessionEntry(session, currentSessionId))\n );\n\n ctx.body = { data } satisfies GetSessions.Response;\n },\n\n async revoke(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const { sessionId } = ctx.params;\n\n const revoked = await sessionManager(ORIGIN).revokeSessionById(userId, sessionId);\n if (!revoked) {\n return ctx.notFound('Session not found');\n }\n\n ctx.body = { data: {} } satisfies DeleteSession.Response;\n },\n\n async revokeAll(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const keepCurrent = ctx.query.keepCurrent === 'true' || ctx.query.keepCurrent === '1';\n\n if (keepCurrent) {\n const currentSessionId = getCurrentSessionId(ctx);\n const sessions = await sessionManager(ORIGIN).listSessions(userId);\n\n await Promise.all(\n sessions\n .filter((session) => session.sessionId !== currentSessionId)\n .map((session) => sessionManager(ORIGIN).revokeSessionById(userId, session.sessionId))\n );\n } else {\n await sessionManager(ORIGIN).invalidateRefreshToken(userId);\n }\n\n ctx.body = { data: {} } satisfies DeleteAllSessions.Response;\n },\n};\n"],"names":["ORIGIN","getCurrentSessionId","ctx","session","state","id","undefined","list","sessionManager","getSessionManager","internalServerError","userId","String","user","currentSessionId","sessions","listSessions","data","sortSessionsForDisplay","map","sanitizeSessionEntry","body","revoke","sessionId","params","revoked","revokeSessionById","notFound","revokeAll","keepCurrent","query","Promise","all","filter","invalidateRefreshToken"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { sortSessionsForDisplay, sanitizeSessionEntry } from '@strapi/utils';
2
+ import { getSessionManager } from '../../../shared/utils/session-auth.mjs';
3
+
4
+ const ORIGIN = 'admin';
5
+ const getCurrentSessionId = (ctx)=>{
6
+ const session = ctx.state.session;
7
+ return typeof session?.id === 'string' ? session.id : undefined;
8
+ };
9
+ var authenticatedSession = {
10
+ async list (ctx) {
11
+ const sessionManager = getSessionManager();
12
+ if (!sessionManager) {
13
+ return ctx.internalServerError();
14
+ }
15
+ const userId = String(ctx.state.user.id);
16
+ const currentSessionId = getCurrentSessionId(ctx);
17
+ const sessions = await sessionManager(ORIGIN).listSessions(userId);
18
+ const data = sortSessionsForDisplay(sessions.map((session)=>sanitizeSessionEntry(session, currentSessionId)));
19
+ ctx.body = {
20
+ data
21
+ };
22
+ },
23
+ async revoke (ctx) {
24
+ const sessionManager = getSessionManager();
25
+ if (!sessionManager) {
26
+ return ctx.internalServerError();
27
+ }
28
+ const userId = String(ctx.state.user.id);
29
+ const { sessionId } = ctx.params;
30
+ const revoked = await sessionManager(ORIGIN).revokeSessionById(userId, sessionId);
31
+ if (!revoked) {
32
+ return ctx.notFound('Session not found');
33
+ }
34
+ ctx.body = {
35
+ data: {}
36
+ };
37
+ },
38
+ async revokeAll (ctx) {
39
+ const sessionManager = getSessionManager();
40
+ if (!sessionManager) {
41
+ return ctx.internalServerError();
42
+ }
43
+ const userId = String(ctx.state.user.id);
44
+ const keepCurrent = ctx.query.keepCurrent === 'true' || ctx.query.keepCurrent === '1';
45
+ if (keepCurrent) {
46
+ const currentSessionId = getCurrentSessionId(ctx);
47
+ const sessions = await sessionManager(ORIGIN).listSessions(userId);
48
+ await Promise.all(sessions.filter((session)=>session.sessionId !== currentSessionId).map((session)=>sessionManager(ORIGIN).revokeSessionById(userId, session.sessionId)));
49
+ } else {
50
+ await sessionManager(ORIGIN).invalidateRefreshToken(userId);
51
+ }
52
+ ctx.body = {
53
+ data: {}
54
+ };
55
+ }
56
+ };
57
+
58
+ export { authenticatedSession as default };
59
+ //# sourceMappingURL=authenticated-session.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticated-session.mjs","sources":["../../../../../server/src/controllers/authenticated-session.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { sanitizeSessionEntry, sortSessionsForDisplay } from '@strapi/utils';\n\nimport { getSessionManager } from '../../../shared/utils/session-auth';\nimport type {\n GetSessions,\n DeleteSession,\n DeleteAllSessions,\n} from '../../../shared/contracts/sessions';\n\nconst ORIGIN = 'admin';\n\nconst getCurrentSessionId = (ctx: Context): string | undefined => {\n const session = ctx.state.session as { id?: string } | undefined;\n return typeof session?.id === 'string' ? session.id : undefined;\n};\n\nexport default {\n async list(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const currentSessionId = getCurrentSessionId(ctx);\n const sessions = await sessionManager(ORIGIN).listSessions(userId);\n\n const data = sortSessionsForDisplay(\n sessions.map((session) => sanitizeSessionEntry(session, currentSessionId))\n );\n\n ctx.body = { data } satisfies GetSessions.Response;\n },\n\n async revoke(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const { sessionId } = ctx.params;\n\n const revoked = await sessionManager(ORIGIN).revokeSessionById(userId, sessionId);\n if (!revoked) {\n return ctx.notFound('Session not found');\n }\n\n ctx.body = { data: {} } satisfies DeleteSession.Response;\n },\n\n async revokeAll(ctx: Context) {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n return ctx.internalServerError();\n }\n\n const userId = String(ctx.state.user.id);\n const keepCurrent = ctx.query.keepCurrent === 'true' || ctx.query.keepCurrent === '1';\n\n if (keepCurrent) {\n const currentSessionId = getCurrentSessionId(ctx);\n const sessions = await sessionManager(ORIGIN).listSessions(userId);\n\n await Promise.all(\n sessions\n .filter((session) => session.sessionId !== currentSessionId)\n .map((session) => sessionManager(ORIGIN).revokeSessionById(userId, session.sessionId))\n );\n } else {\n await sessionManager(ORIGIN).invalidateRefreshToken(userId);\n }\n\n ctx.body = { data: {} } satisfies DeleteAllSessions.Response;\n },\n};\n"],"names":["ORIGIN","getCurrentSessionId","ctx","session","state","id","undefined","list","sessionManager","getSessionManager","internalServerError","userId","String","user","currentSessionId","sessions","listSessions","data","sortSessionsForDisplay","map","sanitizeSessionEntry","body","revoke","sessionId","params","revoked","revokeSessionById","notFound","revokeAll","keepCurrent","query","Promise","all","filter","invalidateRefreshToken"],"mappings":"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"}
@@ -11,15 +11,23 @@ var forgotPassword = require('../validation/authentication/forgot-password.js');
11
11
  var resetPassword = require('../validation/authentication/reset-password.js');
12
12
  var login = require('../validation/authentication/login.js');
13
13
 
14
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
+
16
+ var passport__default = /*#__PURE__*/_interopDefault(passport);
17
+ var compose__default = /*#__PURE__*/_interopDefault(compose);
18
+
19
+ const buildSessionMetadataFromContext = (ctx)=>utils.buildSessionMetadata({
20
+ userAgent: ctx.request.headers['user-agent']
21
+ });
14
22
  const { ApplicationError, ValidationError } = utils.errors;
15
23
  var authentication = {
16
- login: compose([
24
+ login: compose__default.default([
17
25
  async (ctx, next)=>{
18
26
  await login(ctx.request.body ?? {});
19
27
  return next();
20
28
  },
21
29
  (ctx, next)=>{
22
- return passport.authenticate('local', {
30
+ return passport__default.default.authenticate('local', {
23
31
  session: false
24
32
  }, (err, user, info)=>{
25
33
  if (err) {
@@ -61,7 +69,8 @@ var authentication = {
61
69
  const userId = String(user.id);
62
70
  const { deviceId, rememberMe } = sessionAuth.extractDeviceParams(ctx.request.body);
63
71
  const { token: refreshToken, absoluteExpiresAt } = await sessionManager('admin').generateRefreshToken(userId, deviceId, {
64
- type: rememberMe ? 'refresh' : 'session'
72
+ type: rememberMe ? 'refresh' : 'session',
73
+ metadata: buildSessionMetadataFromContext(ctx)
65
74
  });
66
75
  const cookieOptions = sessionAuth.buildCookieOptionsWithExpiry(rememberMe ? 'refresh' : 'session', absoluteExpiresAt, ctx.request.secure);
67
76
  ctx.cookies.set(sessionAuth.REFRESH_COOKIE_NAME, refreshToken, cookieOptions);
@@ -106,7 +115,8 @@ var authentication = {
106
115
  const userId = String(user.id);
107
116
  const { deviceId, rememberMe } = sessionAuth.extractDeviceParams(ctx.request.body);
108
117
  const { token: refreshToken, absoluteExpiresAt } = await sessionManager('admin').generateRefreshToken(userId, deviceId, {
109
- type: rememberMe ? 'refresh' : 'session'
118
+ type: rememberMe ? 'refresh' : 'session',
119
+ metadata: buildSessionMetadataFromContext(ctx)
110
120
  });
111
121
  const cookieOptions = sessionAuth.buildCookieOptionsWithExpiry(rememberMe ? 'refresh' : 'session', absoluteExpiresAt, ctx.request.secure);
112
122
  ctx.cookies.set(sessionAuth.REFRESH_COOKIE_NAME, refreshToken, cookieOptions);
@@ -140,7 +150,8 @@ var authentication = {
140
150
  const userId = String(user.id);
141
151
  const { deviceId, rememberMe } = sessionAuth.extractDeviceParams(ctx.request.body);
142
152
  const { token: refreshToken, absoluteExpiresAt } = await sessionManager('admin').generateRefreshToken(userId, deviceId, {
143
- type: rememberMe ? 'refresh' : 'session'
153
+ type: rememberMe ? 'refresh' : 'session',
154
+ metadata: buildSessionMetadataFromContext(ctx)
144
155
  });
145
156
  const cookieOptions = sessionAuth.buildCookieOptionsWithExpiry(rememberMe ? 'refresh' : 'session', absoluteExpiresAt, ctx.request.secure);
146
157
  ctx.cookies.set(sessionAuth.REFRESH_COOKIE_NAME, refreshToken, cookieOptions);
@@ -182,7 +193,8 @@ var authentication = {
182
193
  // Invalidate all existing sessions before creating a new one
183
194
  await sessionManager('admin').invalidateRefreshToken(userId);
184
195
  const { token: refreshToken, absoluteExpiresAt } = await sessionManager('admin').generateRefreshToken(userId, deviceId, {
185
- type: 'session'
196
+ type: 'session',
197
+ metadata: buildSessionMetadataFromContext(ctx)
186
198
  });
187
199
  // No rememberMe flow here; expire with session by default (session cookie)
188
200
  const cookieOptions = sessionAuth.buildCookieOptionsWithExpiry('session', absoluteExpiresAt, ctx.request.secure);