@strato-admin/faker-ecommerce 0.1.0 → 0.3.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 (519) hide show
  1. package/dist/dataProvider.js +1 -2
  2. package/dist/generate.d.ts +2 -1
  3. package/dist/generate.js +15 -8
  4. package/dist/ra-core/src/auth/LogoutOnMount.d.ts +8 -0
  5. package/dist/ra-core/src/auth/LogoutOnMount.js +16 -0
  6. package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.d.ts +22 -0
  7. package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.js +41 -0
  8. package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.d.ts +21 -0
  9. package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.js +30 -0
  10. package/dist/ra-core/src/auth/convertLegacyAuthProvider.d.ts +12 -0
  11. package/dist/ra-core/src/auth/convertLegacyAuthProvider.js +19 -0
  12. package/dist/ra-core/src/auth/index.d.ts +27 -0
  13. package/dist/ra-core/src/auth/index.js +34 -0
  14. package/dist/ra-core/src/auth/types.d.ts +7 -0
  15. package/dist/ra-core/src/auth/types.js +5 -0
  16. package/dist/ra-core/src/auth/useAuthProvider.d.ts +10 -0
  17. package/dist/ra-core/src/auth/useAuthProvider.js +11 -0
  18. package/dist/ra-core/src/auth/useAuthState.d.ts +48 -0
  19. package/dist/ra-core/src/auth/useAuthState.js +171 -0
  20. package/dist/ra-core/src/auth/useAuthenticated.d.ts +36 -0
  21. package/dist/ra-core/src/auth/useAuthenticated.js +34 -0
  22. package/dist/ra-core/src/auth/useCanAccess.d.ts +56 -0
  23. package/dist/ra-core/src/auth/useCanAccess.js +108 -0
  24. package/dist/ra-core/src/auth/useCanAccessCallback.d.ts +39 -0
  25. package/dist/ra-core/src/auth/useCanAccessCallback.js +45 -0
  26. package/dist/ra-core/src/auth/useCanAccessResources.d.ts +67 -0
  27. package/dist/ra-core/src/auth/useCanAccessResources.js +92 -0
  28. package/dist/ra-core/src/auth/useCheckAuth.d.ts +48 -0
  29. package/dist/ra-core/src/auth/useCheckAuth.js +76 -0
  30. package/dist/ra-core/src/auth/useGetIdentity.d.ts +41 -0
  31. package/dist/ra-core/src/auth/useGetIdentity.js +86 -0
  32. package/dist/ra-core/src/auth/useGetPermissions.d.ts +41 -0
  33. package/dist/ra-core/src/auth/useGetPermissions.js +47 -0
  34. package/dist/ra-core/src/auth/useHandleAuthCallback.d.ts +20 -0
  35. package/dist/ra-core/src/auth/useHandleAuthCallback.js +83 -0
  36. package/dist/ra-core/src/auth/useIsAuthPending.d.ts +13 -0
  37. package/dist/ra-core/src/auth/useIsAuthPending.js +30 -0
  38. package/dist/ra-core/src/auth/useLogin.d.ts +34 -0
  39. package/dist/ra-core/src/auth/useLogin.js +78 -0
  40. package/dist/ra-core/src/auth/useLogout.d.ts +31 -0
  41. package/dist/ra-core/src/auth/useLogout.js +117 -0
  42. package/dist/ra-core/src/auth/useLogoutIfAccessDenied.d.ts +42 -0
  43. package/dist/ra-core/src/auth/useLogoutIfAccessDenied.js +111 -0
  44. package/dist/ra-core/src/auth/usePermissions.d.ts +41 -0
  45. package/dist/ra-core/src/auth/usePermissions.js +123 -0
  46. package/dist/ra-core/src/controller/button/index.d.ts +7 -0
  47. package/dist/ra-core/src/controller/button/index.js +7 -0
  48. package/dist/ra-core/src/controller/button/useBulkDeleteController.d.ts +14 -0
  49. package/dist/ra-core/src/controller/button/useBulkDeleteController.js +66 -0
  50. package/dist/ra-core/src/controller/create/index.d.ts +6 -0
  51. package/dist/ra-core/src/controller/create/index.js +6 -0
  52. package/dist/ra-core/src/controller/create/useCreateController.d.ts +50 -0
  53. package/dist/ra-core/src/controller/create/useCreateController.js +149 -0
  54. package/dist/ra-core/src/controller/edit/index.d.ts +6 -0
  55. package/dist/ra-core/src/controller/edit/index.js +6 -0
  56. package/dist/ra-core/src/controller/edit/useEditController.d.ts +72 -0
  57. package/dist/ra-core/src/controller/edit/useEditController.js +206 -0
  58. package/dist/ra-core/src/controller/field/index.d.ts +12 -0
  59. package/dist/ra-core/src/controller/field/index.js +12 -0
  60. package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.d.ts +1 -0
  61. package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.js +1 -0
  62. package/dist/ra-core/src/controller/field/types.d.ts +28 -0
  63. package/dist/ra-core/src/controller/field/types.js +1 -0
  64. package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.d.ts +39 -0
  65. package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.js +82 -0
  66. package/dist/ra-core/src/controller/field/useReferenceFieldController.d.ts +14 -0
  67. package/dist/ra-core/src/controller/field/useReferenceFieldController.js +31 -0
  68. package/dist/ra-core/src/controller/field/useReferenceManyFieldController.d.ts +49 -0
  69. package/dist/ra-core/src/controller/field/useReferenceManyFieldController.js +264 -0
  70. package/dist/ra-core/src/controller/index.d.ts +17 -0
  71. package/dist/ra-core/src/controller/index.js +16 -0
  72. package/dist/ra-core/src/controller/input/ArrayInputContext.d.ts +9 -0
  73. package/dist/ra-core/src/controller/input/ArrayInputContext.js +8 -0
  74. package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.d.ts +15 -0
  75. package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.js +8 -0
  76. package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.d.ts +13 -0
  77. package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.js +8 -0
  78. package/dist/ra-core/src/controller/input/index.d.ts +17 -0
  79. package/dist/ra-core/src/controller/input/index.js +17 -0
  80. package/dist/ra-core/src/controller/input/referenceDataStatus.d.ts +32 -0
  81. package/dist/ra-core/src/controller/input/referenceDataStatus.js +74 -0
  82. package/dist/ra-core/src/controller/input/sanitizeInputRestProps.d.ts +1 -0
  83. package/dist/ra-core/src/controller/input/sanitizeInputRestProps.js +1 -0
  84. package/dist/ra-core/src/controller/input/types.d.ts +3 -0
  85. package/dist/ra-core/src/controller/input/types.js +1 -0
  86. package/dist/ra-core/src/controller/input/useArrayInput.d.ts +8 -0
  87. package/dist/ra-core/src/controller/input/useArrayInput.js +29 -0
  88. package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.d.ts +3 -0
  89. package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.js +37 -0
  90. package/dist/ra-core/src/controller/input/useReferenceArrayInputController.d.ts +48 -0
  91. package/dist/ra-core/src/controller/input/useReferenceArrayInputController.js +137 -0
  92. package/dist/ra-core/src/controller/input/useReferenceInputController.d.ts +54 -0
  93. package/dist/ra-core/src/controller/input/useReferenceInputController.js +208 -0
  94. package/dist/ra-core/src/controller/input/useReferenceParams.d.ts +106 -0
  95. package/dist/ra-core/src/controller/input/useReferenceParams.js +226 -0
  96. package/dist/ra-core/src/controller/input/useSimpleFormIterator.d.ts +7 -0
  97. package/dist/ra-core/src/controller/input/useSimpleFormIterator.js +15 -0
  98. package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.d.ts +7 -0
  99. package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.js +15 -0
  100. package/dist/ra-core/src/controller/list/InfinitePaginationContext.d.ts +25 -0
  101. package/dist/ra-core/src/controller/list/InfinitePaginationContext.js +32 -0
  102. package/dist/ra-core/src/controller/list/index.d.ts +30 -0
  103. package/dist/ra-core/src/controller/list/index.js +30 -0
  104. package/dist/ra-core/src/controller/list/queryReducer.d.ts +45 -0
  105. package/dist/ra-core/src/controller/list/queryReducer.js +85 -0
  106. package/dist/ra-core/src/controller/list/useFilterContext.d.ts +2 -0
  107. package/dist/ra-core/src/controller/list/useFilterContext.js +5 -0
  108. package/dist/ra-core/src/controller/list/useInfiniteListController.d.ts +44 -0
  109. package/dist/ra-core/src/controller/list/useInfiniteListController.js +175 -0
  110. package/dist/ra-core/src/controller/list/useInfinitePaginationContext.d.ts +16 -0
  111. package/dist/ra-core/src/controller/list/useInfinitePaginationContext.js +17 -0
  112. package/dist/ra-core/src/controller/list/useList.d.ts +55 -0
  113. package/dist/ra-core/src/controller/list/useList.js +223 -0
  114. package/dist/ra-core/src/controller/list/useListContext.d.ts +59 -0
  115. package/dist/ra-core/src/controller/list/useListContext.js +65 -0
  116. package/dist/ra-core/src/controller/list/useListContextWithProps.d.ts +44 -0
  117. package/dist/ra-core/src/controller/list/useListContextWithProps.js +84 -0
  118. package/dist/ra-core/src/controller/list/useListController.d.ts +296 -0
  119. package/dist/ra-core/src/controller/list/useListController.js +234 -0
  120. package/dist/ra-core/src/controller/list/useListFilterContext.d.ts +11 -0
  121. package/dist/ra-core/src/controller/list/useListFilterContext.js +18 -0
  122. package/dist/ra-core/src/controller/list/useListPaginationContext.d.ts +12 -0
  123. package/dist/ra-core/src/controller/list/useListPaginationContext.js +19 -0
  124. package/dist/ra-core/src/controller/list/useListParams.d.ts +116 -0
  125. package/dist/ra-core/src/controller/list/useListParams.js +281 -0
  126. package/dist/ra-core/src/controller/list/useListSortContext.d.ts +12 -0
  127. package/dist/ra-core/src/controller/list/useListSortContext.js +19 -0
  128. package/dist/ra-core/src/controller/list/useRecordSelection.d.ts +32 -0
  129. package/dist/ra-core/src/controller/list/useRecordSelection.js +93 -0
  130. package/dist/ra-core/src/controller/list/useSavedQueries.d.ts +14 -0
  131. package/dist/ra-core/src/controller/list/useSavedQueries.js +29 -0
  132. package/dist/ra-core/src/controller/list/useUnselect.d.ts +10 -0
  133. package/dist/ra-core/src/controller/list/useUnselect.js +18 -0
  134. package/dist/ra-core/src/controller/list/useUnselectAll.d.ts +9 -0
  135. package/dist/ra-core/src/controller/list/useUnselectAll.js +18 -0
  136. package/dist/ra-core/src/controller/record/index.d.ts +5 -0
  137. package/dist/ra-core/src/controller/record/index.js +5 -0
  138. package/dist/ra-core/src/controller/record/useRecordContext.d.ts +34 -0
  139. package/dist/ra-core/src/controller/record/useRecordContext.js +36 -0
  140. package/dist/ra-core/src/controller/saveContext/SaveContext.d.ts +20 -0
  141. package/dist/ra-core/src/controller/saveContext/SaveContext.js +2 -0
  142. package/dist/ra-core/src/controller/saveContext/index.d.ts +6 -0
  143. package/dist/ra-core/src/controller/saveContext/index.js +6 -0
  144. package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.d.ts +39 -0
  145. package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.js +79 -0
  146. package/dist/ra-core/src/controller/saveContext/usePickSaveContext.d.ts +5 -0
  147. package/dist/ra-core/src/controller/saveContext/usePickSaveContext.js +25 -0
  148. package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.d.ts +6 -0
  149. package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.js +18 -0
  150. package/dist/ra-core/src/controller/saveContext/useSaveContext.d.ts +14 -0
  151. package/dist/ra-core/src/controller/saveContext/useSaveContext.js +17 -0
  152. package/dist/ra-core/src/controller/show/index.d.ts +6 -0
  153. package/dist/ra-core/src/controller/show/index.js +6 -0
  154. package/dist/ra-core/src/controller/show/useShowController.d.ts +75 -0
  155. package/dist/ra-core/src/controller/show/useShowController.js +110 -0
  156. package/dist/ra-core/src/controller/useFilterState.d.ts +46 -0
  157. package/dist/ra-core/src/controller/useFilterState.js +70 -0
  158. package/dist/ra-core/src/controller/usePaginationState.d.ts +33 -0
  159. package/dist/ra-core/src/controller/usePaginationState.js +45 -0
  160. package/dist/ra-core/src/controller/usePrevNextController.d.ts +127 -0
  161. package/dist/ra-core/src/controller/usePrevNextController.js +215 -0
  162. package/dist/ra-core/src/controller/useReference.d.ts +49 -0
  163. package/dist/ra-core/src/controller/useReference.js +42 -0
  164. package/dist/ra-core/src/controller/useSortState.d.ts +61 -0
  165. package/dist/ra-core/src/controller/useSortState.js +96 -0
  166. package/dist/ra-core/src/core/DefaultTitleContext.d.ts +15 -0
  167. package/dist/ra-core/src/core/DefaultTitleContext.js +15 -0
  168. package/dist/ra-core/src/core/HasDashboardContext.d.ts +21 -0
  169. package/dist/ra-core/src/core/HasDashboardContext.js +22 -0
  170. package/dist/ra-core/src/core/ResourceContext.d.ts +19 -0
  171. package/dist/ra-core/src/core/ResourceContext.js +19 -0
  172. package/dist/ra-core/src/core/UserMenuContext.d.ts +34 -0
  173. package/dist/ra-core/src/core/UserMenuContext.js +28 -0
  174. package/dist/ra-core/src/core/index.d.ts +27 -0
  175. package/dist/ra-core/src/core/index.js +27 -0
  176. package/dist/ra-core/src/core/useGetRecordRepresentation.d.ts +13 -0
  177. package/dist/ra-core/src/core/useGetRecordRepresentation.js +44 -0
  178. package/dist/ra-core/src/core/useGetResourceLabel.d.ts +22 -0
  179. package/dist/ra-core/src/core/useGetResourceLabel.js +42 -0
  180. package/dist/ra-core/src/core/useIsOffline.d.ts +7 -0
  181. package/dist/ra-core/src/core/useIsOffline.js +18 -0
  182. package/dist/ra-core/src/core/useResourceContext.d.ts +36 -0
  183. package/dist/ra-core/src/core/useResourceContext.js +38 -0
  184. package/dist/ra-core/src/core/useResourceDefinition.d.ts +31 -0
  185. package/dist/ra-core/src/core/useResourceDefinition.js +48 -0
  186. package/dist/ra-core/src/core/useResourceDefinitionContext.d.ts +1 -0
  187. package/dist/ra-core/src/core/useResourceDefinitionContext.js +3 -0
  188. package/dist/ra-core/src/core/useResourceDefinitions.d.ts +21 -0
  189. package/dist/ra-core/src/core/useResourceDefinitions.js +20 -0
  190. package/dist/ra-core/src/core/useUserMenu.d.ts +28 -0
  191. package/dist/ra-core/src/core/useUserMenu.js +30 -0
  192. package/dist/ra-core/src/core/useWrappedSource.d.ts +11 -0
  193. package/dist/ra-core/src/core/useWrappedSource.js +15 -0
  194. package/dist/ra-core/src/dataProvider/DataProviderContext.d.ts +3 -0
  195. package/dist/ra-core/src/dataProvider/DataProviderContext.js +4 -0
  196. package/dist/ra-core/src/dataProvider/HttpError.d.ts +6 -0
  197. package/dist/ra-core/src/dataProvider/HttpError.js +19 -0
  198. package/dist/ra-core/src/dataProvider/combineDataProviders.d.ts +21 -0
  199. package/dist/ra-core/src/dataProvider/combineDataProviders.js +32 -0
  200. package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.d.ts +12 -0
  201. package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.js +40 -0
  202. package/dist/ra-core/src/dataProvider/dataFetchActions.d.ts +15 -0
  203. package/dist/ra-core/src/dataProvider/dataFetchActions.js +49 -0
  204. package/dist/ra-core/src/dataProvider/defaultDataProvider.d.ts +2 -0
  205. package/dist/ra-core/src/dataProvider/defaultDataProvider.js +12 -0
  206. package/dist/ra-core/src/dataProvider/fetch.d.ts +32 -0
  207. package/dist/ra-core/src/dataProvider/fetch.js +78 -0
  208. package/dist/ra-core/src/dataProvider/index.d.ts +34 -0
  209. package/dist/ra-core/src/dataProvider/index.js +33 -0
  210. package/dist/ra-core/src/dataProvider/populateQueryCache.d.ts +22 -0
  211. package/dist/ra-core/src/dataProvider/populateQueryCache.js +30 -0
  212. package/dist/ra-core/src/dataProvider/testDataProvider.d.ts +2 -0
  213. package/dist/ra-core/src/dataProvider/testDataProvider.js +41 -0
  214. package/dist/ra-core/src/dataProvider/undo/index.d.ts +6 -0
  215. package/dist/ra-core/src/dataProvider/undo/index.js +6 -0
  216. package/dist/ra-core/src/dataProvider/undo/types.d.ts +3 -0
  217. package/dist/ra-core/src/dataProvider/undo/types.js +1 -0
  218. package/dist/ra-core/src/dataProvider/undoableEventEmitter.d.ts +3 -0
  219. package/dist/ra-core/src/dataProvider/undoableEventEmitter.js +2 -0
  220. package/dist/ra-core/src/dataProvider/useCreate.d.ts +89 -0
  221. package/dist/ra-core/src/dataProvider/useCreate.js +155 -0
  222. package/dist/ra-core/src/dataProvider/useDataProvider.d.ts +2 -0
  223. package/dist/ra-core/src/dataProvider/useDataProvider.js +140 -0
  224. package/dist/ra-core/src/dataProvider/useDelete.d.ts +83 -0
  225. package/dist/ra-core/src/dataProvider/useDelete.js +171 -0
  226. package/dist/ra-core/src/dataProvider/useDeleteMany.d.ts +81 -0
  227. package/dist/ra-core/src/dataProvider/useDeleteMany.js +193 -0
  228. package/dist/ra-core/src/dataProvider/useGetList.d.ts +58 -0
  229. package/dist/ra-core/src/dataProvider/useGetList.js +131 -0
  230. package/dist/ra-core/src/dataProvider/useGetMany.d.ts +49 -0
  231. package/dist/ra-core/src/dataProvider/useGetMany.js +143 -0
  232. package/dist/ra-core/src/dataProvider/useGetManyAggregate.d.ts +62 -0
  233. package/dist/ra-core/src/dataProvider/useGetManyAggregate.js +295 -0
  234. package/dist/ra-core/src/dataProvider/useGetManyReference.d.ts +62 -0
  235. package/dist/ra-core/src/dataProvider/useGetManyReference.js +117 -0
  236. package/dist/ra-core/src/dataProvider/useGetOne.d.ts +48 -0
  237. package/dist/ra-core/src/dataProvider/useGetOne.js +94 -0
  238. package/dist/ra-core/src/dataProvider/useGetRecordId.d.ts +14 -0
  239. package/dist/ra-core/src/dataProvider/useGetRecordId.js +22 -0
  240. package/dist/ra-core/src/dataProvider/useInfiniteGetList.d.ts +64 -0
  241. package/dist/ra-core/src/dataProvider/useInfiniteGetList.js +177 -0
  242. package/dist/ra-core/src/dataProvider/useIsDataLoaded.d.ts +13 -0
  243. package/dist/ra-core/src/dataProvider/useIsDataLoaded.js +35 -0
  244. package/dist/ra-core/src/dataProvider/useLoading.d.ts +12 -0
  245. package/dist/ra-core/src/dataProvider/useLoading.js +41 -0
  246. package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.d.ts +51 -0
  247. package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.js +238 -0
  248. package/dist/ra-core/src/dataProvider/useRefresh.d.ts +14 -0
  249. package/dist/ra-core/src/dataProvider/useRefresh.js +21 -0
  250. package/dist/ra-core/src/dataProvider/useUpdate.d.ts +89 -0
  251. package/dist/ra-core/src/dataProvider/useUpdate.js +183 -0
  252. package/dist/ra-core/src/dataProvider/useUpdateMany.d.ts +81 -0
  253. package/dist/ra-core/src/dataProvider/useUpdateMany.js +171 -0
  254. package/dist/ra-core/src/dataProvider/validateResponseFormat.d.ts +5 -0
  255. package/dist/ra-core/src/dataProvider/validateResponseFormat.js +35 -0
  256. package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.d.ts +162 -0
  257. package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.js +377 -0
  258. package/dist/ra-core/src/dataTable/DataTableCallbacksContext.d.ts +18 -0
  259. package/dist/ra-core/src/dataTable/DataTableCallbacksContext.js +3 -0
  260. package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.d.ts +2 -0
  261. package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.js +3 -0
  262. package/dist/ra-core/src/dataTable/DataTableColumnRankContext.d.ts +2 -0
  263. package/dist/ra-core/src/dataTable/DataTableColumnRankContext.js +3 -0
  264. package/dist/ra-core/src/dataTable/DataTableConfigContext.d.ts +22 -0
  265. package/dist/ra-core/src/dataTable/DataTableConfigContext.js +7 -0
  266. package/dist/ra-core/src/dataTable/DataTableDataContext.d.ts +4 -0
  267. package/dist/ra-core/src/dataTable/DataTableDataContext.js +3 -0
  268. package/dist/ra-core/src/dataTable/DataTableRenderContext.d.ts +3 -0
  269. package/dist/ra-core/src/dataTable/DataTableRenderContext.js +3 -0
  270. package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.d.ts +3 -0
  271. package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.js +3 -0
  272. package/dist/ra-core/src/dataTable/DataTableSortContext.d.ts +3 -0
  273. package/dist/ra-core/src/dataTable/DataTableSortContext.js +3 -0
  274. package/dist/ra-core/src/dataTable/DataTableStoreContext.d.ts +8 -0
  275. package/dist/ra-core/src/dataTable/DataTableStoreContext.js +6 -0
  276. package/dist/ra-core/src/dataTable/index.d.ts +11 -0
  277. package/dist/ra-core/src/dataTable/index.js +11 -0
  278. package/dist/ra-core/src/dataTable/types.d.ts +2 -0
  279. package/dist/ra-core/src/dataTable/types.js +1 -0
  280. package/dist/ra-core/src/export/ExporterContext.d.ts +2 -0
  281. package/dist/ra-core/src/export/ExporterContext.js +4 -0
  282. package/dist/ra-core/src/export/defaultExporter.d.ts +2 -0
  283. package/dist/ra-core/src/export/defaultExporter.js +3 -0
  284. package/dist/ra-core/src/export/downloadCSV.d.ts +1 -0
  285. package/dist/ra-core/src/export/downloadCSV.js +17 -0
  286. package/dist/ra-core/src/export/fetchRelatedRecords.d.ts +14 -0
  287. package/dist/ra-core/src/export/fetchRelatedRecords.js +19 -0
  288. package/dist/ra-core/src/export/getRelatedIds.d.ts +24 -0
  289. package/dist/ra-core/src/export/getRelatedIds.js +26 -0
  290. package/dist/ra-core/src/export/index.d.ts +5 -0
  291. package/dist/ra-core/src/export/index.js +5 -0
  292. package/dist/ra-core/src/export/useBulkExport.d.ts +11 -0
  293. package/dist/ra-core/src/export/useBulkExport.js +30 -0
  294. package/dist/ra-core/src/form/WarnWhenUnsavedChanges.d.ts +5 -0
  295. package/dist/ra-core/src/form/WarnWhenUnsavedChanges.js +5 -0
  296. package/dist/ra-core/src/form/choices/ChoicesContext.d.ts +65 -0
  297. package/dist/ra-core/src/form/choices/ChoicesContext.js +7 -0
  298. package/dist/ra-core/src/form/choices/index.d.ts +4 -0
  299. package/dist/ra-core/src/form/choices/index.js +4 -0
  300. package/dist/ra-core/src/form/choices/useChoicesContext.d.ts +5 -0
  301. package/dist/ra-core/src/form/choices/useChoicesContext.js +62 -0
  302. package/dist/ra-core/src/form/getFormInitialValues.d.ts +8 -0
  303. package/dist/ra-core/src/form/getFormInitialValues.js +14 -0
  304. package/dist/ra-core/src/form/groups/FormGroupContext.d.ts +9 -0
  305. package/dist/ra-core/src/form/groups/FormGroupContext.js +9 -0
  306. package/dist/ra-core/src/form/groups/index.d.ts +6 -0
  307. package/dist/ra-core/src/form/groups/index.js +6 -0
  308. package/dist/ra-core/src/form/groups/useFormGroup.d.ts +67 -0
  309. package/dist/ra-core/src/form/groups/useFormGroup.js +146 -0
  310. package/dist/ra-core/src/form/groups/useFormGroupContext.d.ts +4 -0
  311. package/dist/ra-core/src/form/groups/useFormGroupContext.js +9 -0
  312. package/dist/ra-core/src/form/groups/useFormGroups.d.ts +4 -0
  313. package/dist/ra-core/src/form/groups/useFormGroups.js +9 -0
  314. package/dist/ra-core/src/form/index.d.ts +14 -0
  315. package/dist/ra-core/src/form/index.js +14 -0
  316. package/dist/ra-core/src/form/sanitizeEmptyValues.d.ts +7 -0
  317. package/dist/ra-core/src/form/sanitizeEmptyValues.js +26 -0
  318. package/dist/ra-core/src/form/useApplyInputDefaultValues.d.ts +19 -0
  319. package/dist/ra-core/src/form/useApplyInputDefaultValues.js +71 -0
  320. package/dist/ra-core/src/form/useAugmentedForm.d.ts +32 -0
  321. package/dist/ra-core/src/form/useAugmentedForm.js +101 -0
  322. package/dist/ra-core/src/form/useFormIsDirty.d.ts +4 -0
  323. package/dist/ra-core/src/form/useFormIsDirty.js +39 -0
  324. package/dist/ra-core/src/form/useInput.d.ts +33 -0
  325. package/dist/ra-core/src/form/useInput.js +100 -0
  326. package/dist/ra-core/src/form/useRecordFromLocation.d.ts +22 -0
  327. package/dist/ra-core/src/form/useRecordFromLocation.js +59 -0
  328. package/dist/ra-core/src/form/useSuggestions.d.ts +43 -0
  329. package/dist/ra-core/src/form/useSuggestions.js +186 -0
  330. package/dist/ra-core/src/form/validation/getSimpleValidationResolver.d.ts +31 -0
  331. package/dist/ra-core/src/form/validation/getSimpleValidationResolver.js +87 -0
  332. package/dist/ra-core/src/form/validation/index.d.ts +7 -0
  333. package/dist/ra-core/src/form/validation/index.js +7 -0
  334. package/dist/ra-core/src/form/validation/setSubmissionErrors.d.ts +21 -0
  335. package/dist/ra-core/src/form/validation/setSubmissionErrors.js +34 -0
  336. package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.d.ts +26 -0
  337. package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.js +35 -0
  338. package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.d.ts +9 -0
  339. package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.js +30 -0
  340. package/dist/ra-core/src/form/validation/useUnique.d.ts +57 -0
  341. package/dist/ra-core/src/form/validation/useUnique.js +107 -0
  342. package/dist/ra-core/src/form/validation/validate.d.ts +168 -0
  343. package/dist/ra-core/src/form/validation/validate.js +218 -0
  344. package/dist/ra-core/src/i18n/I18nContext.d.ts +3 -0
  345. package/dist/ra-core/src/i18n/I18nContext.js +11 -0
  346. package/dist/ra-core/src/i18n/TranslatableContext.d.ts +16 -0
  347. package/dist/ra-core/src/i18n/TranslatableContext.js +2 -0
  348. package/dist/ra-core/src/i18n/TranslationMessages.d.ts +221 -0
  349. package/dist/ra-core/src/i18n/TranslationMessages.js +1 -0
  350. package/dist/ra-core/src/i18n/TranslationUtils.d.ts +60 -0
  351. package/dist/ra-core/src/i18n/TranslationUtils.js +70 -0
  352. package/dist/ra-core/src/i18n/index.d.ts +20 -0
  353. package/dist/ra-core/src/i18n/index.js +20 -0
  354. package/dist/ra-core/src/i18n/substituteTokens.d.ts +8 -0
  355. package/dist/ra-core/src/i18n/substituteTokens.js +18 -0
  356. package/dist/ra-core/src/i18n/useI18nProvider.d.ts +12 -0
  357. package/dist/ra-core/src/i18n/useI18nProvider.js +14 -0
  358. package/dist/ra-core/src/i18n/useLocales.d.ts +31 -0
  359. package/dist/ra-core/src/i18n/useLocales.js +28 -0
  360. package/dist/ra-core/src/i18n/useResourceTranslation.d.ts +8 -0
  361. package/dist/ra-core/src/i18n/useResourceTranslation.js +18 -0
  362. package/dist/ra-core/src/i18n/useTranslatable.d.ts +29 -0
  363. package/dist/ra-core/src/i18n/useTranslatable.js +98 -0
  364. package/dist/ra-core/src/i18n/useTranslatableContext.d.ts +31 -0
  365. package/dist/ra-core/src/i18n/useTranslatableContext.js +38 -0
  366. package/dist/ra-core/src/i18n/useTranslate.d.ts +21 -0
  367. package/dist/ra-core/src/i18n/useTranslate.js +29 -0
  368. package/dist/ra-core/src/i18n/useTranslateLabel.d.ts +6 -0
  369. package/dist/ra-core/src/i18n/useTranslateLabel.js +26 -0
  370. package/dist/ra-core/src/index.d.ts +16 -0
  371. package/dist/ra-core/src/index.js +16 -0
  372. package/dist/ra-core/src/inference/InferredElement.d.ts +12 -0
  373. package/dist/ra-core/src/inference/InferredElement.js +40 -0
  374. package/dist/ra-core/src/inference/assertions.d.ts +26 -0
  375. package/dist/ra-core/src/inference/assertions.js +38 -0
  376. package/dist/ra-core/src/inference/getElementsFromRecords.d.ts +35 -0
  377. package/dist/ra-core/src/inference/getElementsFromRecords.js +39 -0
  378. package/dist/ra-core/src/inference/getValuesFromRecords.d.ts +28 -0
  379. package/dist/ra-core/src/inference/getValuesFromRecords.js +40 -0
  380. package/dist/ra-core/src/inference/index.d.ts +6 -0
  381. package/dist/ra-core/src/inference/index.js +6 -0
  382. package/dist/ra-core/src/inference/inferTypeFromValues.d.ts +21 -0
  383. package/dist/ra-core/src/inference/inferTypeFromValues.js +141 -0
  384. package/dist/ra-core/src/inference/types.d.ts +9 -0
  385. package/dist/ra-core/src/inference/types.js +1 -0
  386. package/dist/ra-core/src/notification/CloseNotificationContext.d.ts +2 -0
  387. package/dist/ra-core/src/notification/CloseNotificationContext.js +2 -0
  388. package/dist/ra-core/src/notification/NotificationContext.d.ts +37 -0
  389. package/dist/ra-core/src/notification/NotificationContext.js +35 -0
  390. package/dist/ra-core/src/notification/index.d.ts +9 -0
  391. package/dist/ra-core/src/notification/index.js +9 -0
  392. package/dist/ra-core/src/notification/types.d.ts +14 -0
  393. package/dist/ra-core/src/notification/types.js +1 -0
  394. package/dist/ra-core/src/notification/useCloseNotification.d.ts +1 -0
  395. package/dist/ra-core/src/notification/useCloseNotification.js +9 -0
  396. package/dist/ra-core/src/notification/useNotificationContext.d.ts +1 -0
  397. package/dist/ra-core/src/notification/useNotificationContext.js +3 -0
  398. package/dist/ra-core/src/notification/useNotify.d.ts +20 -0
  399. package/dist/ra-core/src/notification/useNotify.js +28 -0
  400. package/dist/ra-core/src/preferences/index.d.ts +7 -0
  401. package/dist/ra-core/src/preferences/index.js +7 -0
  402. package/dist/ra-core/src/preferences/usePreference.d.ts +18 -0
  403. package/dist/ra-core/src/preferences/usePreference.js +10 -0
  404. package/dist/ra-core/src/preferences/usePreferenceInput.d.ts +22 -0
  405. package/dist/ra-core/src/preferences/usePreferenceInput.js +43 -0
  406. package/dist/ra-core/src/preferences/usePreferencesEditor.d.ts +2 -0
  407. package/dist/ra-core/src/preferences/usePreferencesEditor.js +9 -0
  408. package/dist/ra-core/src/preferences/useSetInspectorTitle.d.ts +7 -0
  409. package/dist/ra-core/src/preferences/useSetInspectorTitle.js +19 -0
  410. package/dist/ra-core/src/routing/BasenameContext.d.ts +1 -0
  411. package/dist/ra-core/src/routing/BasenameContext.js +2 -0
  412. package/dist/ra-core/src/routing/RouterProvider.d.ts +163 -0
  413. package/dist/ra-core/src/routing/RouterProvider.js +1 -0
  414. package/dist/ra-core/src/routing/index.d.ts +28 -0
  415. package/dist/ra-core/src/routing/index.js +28 -0
  416. package/dist/ra-core/src/routing/types.d.ts +3 -0
  417. package/dist/ra-core/src/routing/types.js +1 -0
  418. package/dist/ra-core/src/routing/useBasename.d.ts +21 -0
  419. package/dist/ra-core/src/routing/useBasename.js +23 -0
  420. package/dist/ra-core/src/routing/useBlocker.d.ts +14 -0
  421. package/dist/ra-core/src/routing/useBlocker.js +17 -0
  422. package/dist/ra-core/src/routing/useCanBlock.d.ts +7 -0
  423. package/dist/ra-core/src/routing/useCanBlock.js +11 -0
  424. package/dist/ra-core/src/routing/useCreatePath.d.ts +42 -0
  425. package/dist/ra-core/src/routing/useCreatePath.js +69 -0
  426. package/dist/ra-core/src/routing/useGetPathForRecord.d.ts +42 -0
  427. package/dist/ra-core/src/routing/useGetPathForRecord.js +135 -0
  428. package/dist/ra-core/src/routing/useGetPathForRecordCallback.d.ts +6 -0
  429. package/dist/ra-core/src/routing/useGetPathForRecordCallback.js +82 -0
  430. package/dist/ra-core/src/routing/useInRouterContext.d.ts +11 -0
  431. package/dist/ra-core/src/routing/useInRouterContext.js +15 -0
  432. package/dist/ra-core/src/routing/useLocation.d.ts +10 -0
  433. package/dist/ra-core/src/routing/useLocation.js +13 -0
  434. package/dist/ra-core/src/routing/useMatch.d.ts +15 -0
  435. package/dist/ra-core/src/routing/useMatch.js +15 -0
  436. package/dist/ra-core/src/routing/useMatchPath.d.ts +17 -0
  437. package/dist/ra-core/src/routing/useMatchPath.js +17 -0
  438. package/dist/ra-core/src/routing/useNavigate.d.ts +12 -0
  439. package/dist/ra-core/src/routing/useNavigate.js +15 -0
  440. package/dist/ra-core/src/routing/useParams.d.ts +9 -0
  441. package/dist/ra-core/src/routing/useParams.js +13 -0
  442. package/dist/ra-core/src/routing/useRedirect.d.ts +30 -0
  443. package/dist/ra-core/src/routing/useRedirect.js +66 -0
  444. package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.d.ts +7 -0
  445. package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.js +17 -0
  446. package/dist/ra-core/src/routing/useRestoreScrollPosition.d.ts +40 -0
  447. package/dist/ra-core/src/routing/useRestoreScrollPosition.js +70 -0
  448. package/dist/ra-core/src/routing/useSplatPathBase.d.ts +13 -0
  449. package/dist/ra-core/src/routing/useSplatPathBase.js +21 -0
  450. package/dist/ra-core/src/store/index.d.ts +11 -0
  451. package/dist/ra-core/src/store/index.js +11 -0
  452. package/dist/ra-core/src/store/localStorageStore.d.ts +27 -0
  453. package/dist/ra-core/src/store/localStorageStore.js +198 -0
  454. package/dist/ra-core/src/store/types.d.ts +11 -0
  455. package/dist/ra-core/src/store/types.js +1 -0
  456. package/dist/ra-core/src/store/useRemoveFromStore.d.ts +17 -0
  457. package/dist/ra-core/src/store/useRemoveFromStore.js +29 -0
  458. package/dist/ra-core/src/store/useRemoveItemsFromStore.d.ts +17 -0
  459. package/dist/ra-core/src/store/useRemoveItemsFromStore.js +29 -0
  460. package/dist/ra-core/src/store/useResetStore.d.ts +17 -0
  461. package/dist/ra-core/src/store/useResetStore.js +21 -0
  462. package/dist/ra-core/src/store/useStore.d.ts +48 -0
  463. package/dist/ra-core/src/store/useStore.js +32 -0
  464. package/dist/ra-core/src/store/useStoreContext.d.ts +4 -0
  465. package/dist/ra-core/src/store/useStoreContext.js +6 -0
  466. package/dist/ra-core/src/test-ui/defaultI18nProvider.d.ts +2 -0
  467. package/dist/ra-core/src/test-ui/defaultI18nProvider.js +10 -0
  468. package/dist/ra-core/src/test-ui/index.d.ts +21 -0
  469. package/dist/ra-core/src/test-ui/index.js +21 -0
  470. package/dist/ra-core/src/types.d.ts +284 -0
  471. package/dist/ra-core/src/types.js +5 -0
  472. package/dist/ra-core/src/util/asyncDebounce.d.ts +7 -0
  473. package/dist/ra-core/src/util/asyncDebounce.js +29 -0
  474. package/dist/ra-core/src/util/escapePath.d.ts +11 -0
  475. package/dist/ra-core/src/util/escapePath.js +10 -0
  476. package/dist/ra-core/src/util/genericMemo.d.ts +5 -0
  477. package/dist/ra-core/src/util/genericMemo.js +14 -0
  478. package/dist/ra-core/src/util/getFieldLabelTranslationArgs.d.ts +22 -0
  479. package/dist/ra-core/src/util/getFieldLabelTranslationArgs.js +73 -0
  480. package/dist/ra-core/src/util/getMutationMode.d.ts +1 -0
  481. package/dist/ra-core/src/util/getMutationMode.js +13 -0
  482. package/dist/ra-core/src/util/hooks.d.ts +15 -0
  483. package/dist/ra-core/src/util/hooks.js +73 -0
  484. package/dist/ra-core/src/util/index.d.ts +20 -0
  485. package/dist/ra-core/src/util/index.js +19 -0
  486. package/dist/ra-core/src/util/mergeRefs.d.ts +2 -0
  487. package/dist/ra-core/src/util/mergeRefs.js +13 -0
  488. package/dist/ra-core/src/util/removeEmpty.d.ts +2 -0
  489. package/dist/ra-core/src/util/removeEmpty.js +16 -0
  490. package/dist/ra-core/src/util/removeKey.d.ts +2 -0
  491. package/dist/ra-core/src/util/removeKey.js +22 -0
  492. package/dist/ra-core/src/util/shallowEqual.d.ts +1 -0
  493. package/dist/ra-core/src/util/shallowEqual.js +29 -0
  494. package/dist/ra-core/src/util/useCheckForApplicationUpdate.d.ts +21 -0
  495. package/dist/ra-core/src/util/useCheckForApplicationUpdate.js +84 -0
  496. package/dist/ra-core/src/util/useDebouncedEvent.d.ts +8 -0
  497. package/dist/ra-core/src/util/useDebouncedEvent.js +28 -0
  498. package/dist/ra-core/src/util/useEvent.d.ts +7 -0
  499. package/dist/ra-core/src/util/useEvent.js +19 -0
  500. package/dist/ra-core/src/util/useFieldValue.d.ts +21 -0
  501. package/dist/ra-core/src/util/useFieldValue.js +27 -0
  502. package/dist/ra-core/src/util/useWhyDidYouUpdate.d.ts +12 -0
  503. package/dist/ra-core/src/util/useWhyDidYouUpdate.js +42 -0
  504. package/dist/ra-core/src/util/warning.d.ts +2 -0
  505. package/dist/ra-core/src/util/warning.js +5 -0
  506. package/dist/strato-faker-ecommerce/src/dataProvider.d.ts +2 -0
  507. package/dist/strato-faker-ecommerce/src/dataProvider.js +6 -0
  508. package/dist/strato-faker-ecommerce/src/generate.d.ts +8 -0
  509. package/dist/strato-faker-ecommerce/src/generate.js +148 -0
  510. package/dist/strato-faker-ecommerce/src/index.d.ts +3 -0
  511. package/dist/strato-faker-ecommerce/src/index.js +3 -0
  512. package/dist/strato-faker-ecommerce/src/types.d.ts +69 -0
  513. package/dist/strato-faker-ecommerce/src/types.js +1 -0
  514. package/dist/types.d.ts +1 -1
  515. package/package.json +6 -5
  516. package/src/dataProvider.ts +3 -3
  517. package/src/generate.test.ts +12 -12
  518. package/src/generate.ts +21 -14
  519. package/src/types.ts +1 -1
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Get a callback for calling the authProvider.getPermissions() method.
3
+ *
4
+ * @see useAuthProvider
5
+ *
6
+ * @returns {Function} getPermissions callback
7
+ *
8
+ * This is a low level hook. See those more specialized hooks
9
+ * offering state handling.
10
+ *
11
+ * @see usePermissions
12
+ *
13
+ * @example
14
+ *
15
+ * import { useGetPermissions } from 'react-admin';
16
+ *
17
+ * const Roles = () => {
18
+ * const [permissions, setPermissions] = useState([]);
19
+ * const getPermissions = useGetPermissions();
20
+ * useEffect(() => {
21
+ * getPermissions().then(permissions => setPermissions(permissions))
22
+ * }, [])
23
+ * return (
24
+ * <ul>
25
+ * {permissions.map((permission, key) => (
26
+ * <li key={key}>{permission}</li>
27
+ * ))}
28
+ * </ul>
29
+ * );
30
+ * }
31
+ */
32
+ declare const useGetPermissions: () => GetPermissions;
33
+ /**
34
+ * Proxy for calling authProvider.getPermissions()
35
+ *
36
+ * @param {Object} params The parameters to pass to the authProvider
37
+ *
38
+ * @return {Promise} The authProvider response
39
+ */
40
+ type GetPermissions = (params?: any) => Promise<any>;
41
+ export default useGetPermissions;
@@ -0,0 +1,47 @@
1
+ import { useCallback } from 'react';
2
+ import useAuthProvider from './useAuthProvider';
3
+ /**
4
+ * Get a callback for calling the authProvider.getPermissions() method.
5
+ *
6
+ * @see useAuthProvider
7
+ *
8
+ * @returns {Function} getPermissions callback
9
+ *
10
+ * This is a low level hook. See those more specialized hooks
11
+ * offering state handling.
12
+ *
13
+ * @see usePermissions
14
+ *
15
+ * @example
16
+ *
17
+ * import { useGetPermissions } from 'react-admin';
18
+ *
19
+ * const Roles = () => {
20
+ * const [permissions, setPermissions] = useState([]);
21
+ * const getPermissions = useGetPermissions();
22
+ * useEffect(() => {
23
+ * getPermissions().then(permissions => setPermissions(permissions))
24
+ * }, [])
25
+ * return (
26
+ * <ul>
27
+ * {permissions.map((permission, key) => (
28
+ * <li key={key}>{permission}</li>
29
+ * ))}
30
+ * </ul>
31
+ * );
32
+ * }
33
+ */
34
+ const useGetPermissions = () => {
35
+ const authProvider = useAuthProvider();
36
+ const getPermissions = useCallback((params = {}) => {
37
+ // react-query requires the query to return something
38
+ if (authProvider && authProvider.getPermissions) {
39
+ return authProvider
40
+ .getPermissions(params)
41
+ .then(result => result ?? null);
42
+ }
43
+ return Promise.resolve([]);
44
+ }, [authProvider]);
45
+ return getPermissions;
46
+ };
47
+ export default useGetPermissions;
@@ -0,0 +1,20 @@
1
+ import { UseQueryOptions } from '@tanstack/react-query';
2
+ import { AuthRedirectResult } from '../types';
3
+ /**
4
+ * This hook calls the `authProvider.handleCallback()` method on mount. This is meant to be used in a route called
5
+ * by an external authentication service (e.g. Auth0) after the user has logged in.
6
+ * By default, it redirects to application home page upon success, or to the `redirectTo` location returned by `authProvider. handleCallback`.
7
+ *
8
+ * @returns An object containing { isPending, data, error, refetch }.
9
+ */
10
+ export declare const useHandleAuthCallback: (options?: UseHandleAuthCallbackOptions) => import("@tanstack/react-query").UseQueryResult<void | AuthRedirectResult, Error>;
11
+ /**
12
+ * Key used to store the previous location in localStorage.
13
+ * Used by the useHandleAuthCallback hook to redirect the user to their previous location after a successful login.
14
+ */
15
+ export declare const PreviousLocationStorageKey = "@react-admin/nextPathname";
16
+ export type UseHandleAuthCallbackOptions = Omit<UseQueryOptions<AuthRedirectResult | void>, 'queryKey' | 'queryFn'> & {
17
+ onSuccess?: (data: AuthRedirectResult | void) => void;
18
+ onError?: (err: Error) => void;
19
+ onSettled?: (data?: AuthRedirectResult | void, error?: Error | null) => void;
20
+ };
@@ -0,0 +1,83 @@
1
+ import { useEffect } from 'react';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { useRedirect, useLocation } from '../routing';
4
+ import useAuthProvider from './useAuthProvider';
5
+ import { useEvent } from '../util';
6
+ /**
7
+ * This hook calls the `authProvider.handleCallback()` method on mount. This is meant to be used in a route called
8
+ * by an external authentication service (e.g. Auth0) after the user has logged in.
9
+ * By default, it redirects to application home page upon success, or to the `redirectTo` location returned by `authProvider. handleCallback`.
10
+ *
11
+ * @returns An object containing { isPending, data, error, refetch }.
12
+ */
13
+ export const useHandleAuthCallback = (options) => {
14
+ const authProvider = useAuthProvider();
15
+ const redirect = useRedirect();
16
+ const location = useLocation();
17
+ const locationState = location.state;
18
+ const nextPathName = locationState && locationState.nextPathname;
19
+ const nextSearch = locationState && locationState.nextSearch;
20
+ const defaultRedirectUrl = nextPathName ? nextPathName + nextSearch : '/';
21
+ const { onSuccess, onError, onSettled, ...queryOptions } = options ?? {};
22
+ let handleCallbackPromise;
23
+ const queryResult = useQuery({
24
+ queryKey: ['auth', 'handleCallback'],
25
+ queryFn: ({ signal }) => {
26
+ if (!handleCallbackPromise) {
27
+ handleCallbackPromise =
28
+ authProvider &&
29
+ typeof authProvider.handleCallback === 'function'
30
+ ? authProvider
31
+ .handleCallback({ signal })
32
+ .then(result => result ?? null)
33
+ : Promise.resolve();
34
+ }
35
+ return handleCallbackPromise;
36
+ },
37
+ retry: false,
38
+ ...queryOptions,
39
+ });
40
+ const onSuccessEvent = useEvent(onSuccess ??
41
+ ((data) => {
42
+ // AuthProviders relying on a third party services redirect back to the app can't
43
+ // use the location state to store the path on which the user was before the login.
44
+ // So we support a fallback on the localStorage.
45
+ const previousLocation = localStorage.getItem(PreviousLocationStorageKey);
46
+ const redirectTo = data?.redirectTo ??
47
+ previousLocation;
48
+ if (redirectTo === false) {
49
+ return;
50
+ }
51
+ redirect(redirectTo ?? defaultRedirectUrl);
52
+ }));
53
+ const onErrorEvent = useEvent(onError ?? noop);
54
+ const onSettledEvent = useEvent(onSettled ?? noop);
55
+ useEffect(() => {
56
+ if (queryResult.error == null || queryResult.isFetching)
57
+ return;
58
+ onErrorEvent(queryResult.error);
59
+ }, [onErrorEvent, queryResult.error, queryResult.isFetching]);
60
+ useEffect(() => {
61
+ if (queryResult.data === undefined || queryResult.isFetching)
62
+ return;
63
+ onSuccessEvent(queryResult.data);
64
+ }, [onSuccessEvent, queryResult.data, queryResult.isFetching]);
65
+ useEffect(() => {
66
+ if (queryResult.status === 'pending' || queryResult.isFetching)
67
+ return;
68
+ onSettledEvent(queryResult.data, queryResult.error);
69
+ }, [
70
+ onSettledEvent,
71
+ queryResult.data,
72
+ queryResult.error,
73
+ queryResult.status,
74
+ queryResult.isFetching,
75
+ ]);
76
+ return queryResult;
77
+ };
78
+ /**
79
+ * Key used to store the previous location in localStorage.
80
+ * Used by the useHandleAuthCallback hook to redirect the user to their previous location after a successful login.
81
+ */
82
+ export const PreviousLocationStorageKey = '@react-admin/nextPathname';
83
+ const noop = () => { };
@@ -0,0 +1,13 @@
1
+ import { HintedString } from '../types';
2
+ /**
3
+ * A hook that returns true if the authProvider is currently checking the authentication status or the user's access rights.
4
+ * @param params
5
+ * @param params.action The action to check access for
6
+ * @param params.resource The resource to check access for (optional). Defaults to the resource of the current ResourceContext.
7
+ * @returns {boolean} true if the authProvider is currently checking the authentication status or the user's access rights, false otherwise.
8
+ */
9
+ export declare const useIsAuthPending: (params: UseIsAuthPendingParams) => boolean;
10
+ export type UseIsAuthPendingParams = {
11
+ resource?: string;
12
+ action: HintedString<'list' | 'create' | 'edit' | 'show' | 'delete'>;
13
+ };
@@ -0,0 +1,30 @@
1
+ import { useQueryClient } from '@tanstack/react-query';
2
+ import { useResourceContext } from '../core';
3
+ import useAuthProvider from './useAuthProvider';
4
+ /**
5
+ * A hook that returns true if the authProvider is currently checking the authentication status or the user's access rights.
6
+ * @param params
7
+ * @param params.action The action to check access for
8
+ * @param params.resource The resource to check access for (optional). Defaults to the resource of the current ResourceContext.
9
+ * @returns {boolean} true if the authProvider is currently checking the authentication status or the user's access rights, false otherwise.
10
+ */
11
+ export const useIsAuthPending = (params) => {
12
+ const { action, ...props } = params;
13
+ const queryClient = useQueryClient();
14
+ const authProvider = useAuthProvider();
15
+ const resource = useResourceContext(props);
16
+ if (!authProvider) {
17
+ return false;
18
+ }
19
+ const authQueryState = queryClient.getQueryState(['auth', 'checkAuth', {}]);
20
+ const canAccessQueryState = queryClient.getQueryState([
21
+ 'auth',
22
+ 'canAccess',
23
+ { action, resource },
24
+ ]);
25
+ if (authQueryState?.status === 'pending' ||
26
+ (authProvider.canAccess && canAccessQueryState?.status === 'pending')) {
27
+ return true;
28
+ }
29
+ return false;
30
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Get a callback for calling the authProvider.login() method
3
+ * and redirect to the previous authenticated page (or the home page) on success.
4
+ *
5
+ * @see useAuthProvider
6
+ *
7
+ * @returns {Function} login callback
8
+ *
9
+ * @example
10
+ *
11
+ * import { useLogin } from 'react-admin';
12
+ *
13
+ * const LoginButton = () => {
14
+ * const [loading, setLoading] = useState(false);
15
+ * const login = useLogin();
16
+ * const handleClick = {
17
+ * setLoading(true);
18
+ * login({ username: 'john', password: 'p@ssw0rd' }, '/posts')
19
+ * .then(() => setLoading(false));
20
+ * }
21
+ * return <button onClick={handleClick}>Login</button>;
22
+ * }
23
+ */
24
+ declare const useLogin: () => Login;
25
+ /**
26
+ * Log a user in by calling the authProvider.login() method
27
+ *
28
+ * @param {Object} params Login parameters to pass to the authProvider. May contain username/email, password, etc
29
+ * @param {string} pathName The path to redirect to after login. By default, redirects to the home page, or to the last page visited after disconnection.
30
+ *
31
+ * @return {Promise} The authProvider response
32
+ */
33
+ type Login = (params: any, pathName?: string) => Promise<any>;
34
+ export default useLogin;
@@ -0,0 +1,78 @@
1
+ import { useCallback } from 'react';
2
+ import { useQueryClient } from '@tanstack/react-query';
3
+ import { useNotificationContext } from '../notification';
4
+ import { useBasename, useLocation, useNavigate } from '../routing';
5
+ import useAuthProvider, { defaultAuthParams } from './useAuthProvider';
6
+ import { removeDoubleSlashes } from '../routing/useCreatePath';
7
+ /**
8
+ * Get a callback for calling the authProvider.login() method
9
+ * and redirect to the previous authenticated page (or the home page) on success.
10
+ *
11
+ * @see useAuthProvider
12
+ *
13
+ * @returns {Function} login callback
14
+ *
15
+ * @example
16
+ *
17
+ * import { useLogin } from 'react-admin';
18
+ *
19
+ * const LoginButton = () => {
20
+ * const [loading, setLoading] = useState(false);
21
+ * const login = useLogin();
22
+ * const handleClick = {
23
+ * setLoading(true);
24
+ * login({ username: 'john', password: 'p@ssw0rd' }, '/posts')
25
+ * .then(() => setLoading(false));
26
+ * }
27
+ * return <button onClick={handleClick}>Login</button>;
28
+ * }
29
+ */
30
+ const useLogin = () => {
31
+ const authProvider = useAuthProvider();
32
+ const queryClient = useQueryClient();
33
+ const location = useLocation();
34
+ const locationState = location.state;
35
+ const navigate = useNavigate();
36
+ const basename = useBasename();
37
+ const { resetNotifications } = useNotificationContext();
38
+ const nextPathName = locationState && locationState.nextPathname;
39
+ const nextSearch = locationState && locationState.nextSearch;
40
+ const afterLoginUrl = removeDoubleSlashes(`${basename}/${defaultAuthParams.afterLoginUrl}`);
41
+ const login = useCallback((params = {}, pathName) => {
42
+ if (authProvider) {
43
+ return authProvider.login(params).then(ret => {
44
+ resetNotifications();
45
+ queryClient.invalidateQueries({
46
+ queryKey: ['auth', 'getPermissions'],
47
+ });
48
+ if (ret && ret.hasOwnProperty('redirectTo')) {
49
+ if (ret) {
50
+ navigate(ret.redirectTo);
51
+ }
52
+ }
53
+ else {
54
+ const redirectUrl = pathName
55
+ ? pathName
56
+ : nextPathName + nextSearch || afterLoginUrl;
57
+ navigate(redirectUrl);
58
+ }
59
+ return ret;
60
+ });
61
+ }
62
+ else {
63
+ resetNotifications();
64
+ navigate(afterLoginUrl);
65
+ return Promise.resolve();
66
+ }
67
+ }, [
68
+ authProvider,
69
+ queryClient,
70
+ navigate,
71
+ nextPathName,
72
+ nextSearch,
73
+ resetNotifications,
74
+ afterLoginUrl,
75
+ ]);
76
+ return login;
77
+ };
78
+ export default useLogin;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Get a callback for calling the authProvider.logout() method,
3
+ * redirect to the login page, and clear the store.
4
+ *
5
+ * @see useAuthProvider
6
+ *
7
+ * @returns {Function} logout callback
8
+ *
9
+ * @example
10
+ *
11
+ * import { useLogout } from 'react-admin';
12
+ *
13
+ * const LogoutButton = () => {
14
+ * const logout = useLogout();
15
+ * const handleClick = () => logout();
16
+ * return <button onClick={handleClick}>Logout</button>;
17
+ * }
18
+ */
19
+ declare const useLogout: () => Logout;
20
+ /**
21
+ * Log the current user out by calling the authProvider.logout() method,
22
+ * and redirect them to the login screen.
23
+ *
24
+ * @param {Object} params The parameters to pass to the authProvider
25
+ * @param {string} redirectTo The path name to redirect the user to (optional, defaults to login)
26
+ * @param {boolean} redirectToCurrentLocationAfterLogin Whether the button shall record the current location to redirect to it after login. true by default.
27
+ *
28
+ * @return {Promise} The authProvider response
29
+ */
30
+ type Logout = (params?: any, redirectTo?: string | false, redirectToCurrentLocationAfterLogin?: boolean) => Promise<any>;
31
+ export default useLogout;
@@ -0,0 +1,117 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ import { useQueryClient } from '@tanstack/react-query';
3
+ import useAuthProvider, { defaultAuthParams } from './useAuthProvider';
4
+ import { useResetStore } from '../store';
5
+ import { useBasename, useLocation, useNavigate } from '../routing';
6
+ import { removeDoubleSlashes } from '../routing/useCreatePath';
7
+ /**
8
+ * Get a callback for calling the authProvider.logout() method,
9
+ * redirect to the login page, and clear the store.
10
+ *
11
+ * @see useAuthProvider
12
+ *
13
+ * @returns {Function} logout callback
14
+ *
15
+ * @example
16
+ *
17
+ * import { useLogout } from 'react-admin';
18
+ *
19
+ * const LogoutButton = () => {
20
+ * const logout = useLogout();
21
+ * const handleClick = () => logout();
22
+ * return <button onClick={handleClick}>Logout</button>;
23
+ * }
24
+ */
25
+ const useLogout = () => {
26
+ const authProvider = useAuthProvider();
27
+ const queryClient = useQueryClient();
28
+ const resetStore = useResetStore();
29
+ const navigate = useNavigate();
30
+ const location = useLocation();
31
+ const locationRef = useRef(location);
32
+ const basename = useBasename();
33
+ const loginUrl = removeDoubleSlashes(`${basename}/${defaultAuthParams.loginUrl}`);
34
+ /*
35
+ * We need the current location to pass in the router state
36
+ * so that the login hook knows where to redirect to as next route after login.
37
+ *
38
+ * But if we used the location from useLocation as a dependency of the logout
39
+ * function, it would be rebuilt each time the user changes location.
40
+ * Consequently, that would force a rerender of all components using this hook
41
+ * upon navigation (CoreAdminRouter for example).
42
+ *
43
+ * To avoid that, we store the location in a ref.
44
+ */
45
+ useEffect(() => {
46
+ locationRef.current = location;
47
+ }, [location]);
48
+ const logout = useCallback((params = {}, redirectFromCaller, redirectToCurrentLocationAfterLogin = true) => {
49
+ if (authProvider) {
50
+ return authProvider.logout(params).then(redirectFromLogout => {
51
+ if (redirectFromLogout === false ||
52
+ redirectFromCaller === false) {
53
+ resetStore();
54
+ queryClient.clear();
55
+ // do not redirect
56
+ return;
57
+ }
58
+ const finalRedirectTo = redirectFromCaller || redirectFromLogout || loginUrl;
59
+ if (finalRedirectTo?.startsWith('http')) {
60
+ // absolute link (e.g. https://my.oidc.server/login)
61
+ resetStore();
62
+ queryClient.clear();
63
+ window.location.href = finalRedirectTo;
64
+ return finalRedirectTo;
65
+ }
66
+ // redirectTo is an internal location that may contain a query string, e.g. '/login?foo=bar'
67
+ // we must split it to pass a structured location to navigate()
68
+ const redirectToParts = finalRedirectTo.split('?');
69
+ const newLocation = {
70
+ pathname: redirectToParts[0],
71
+ };
72
+ let newLocationOptions = {};
73
+ if (redirectToCurrentLocationAfterLogin &&
74
+ locationRef.current &&
75
+ locationRef.current.pathname) {
76
+ newLocationOptions = {
77
+ state: {
78
+ nextPathname: locationRef.current.pathname,
79
+ nextSearch: locationRef.current.search,
80
+ },
81
+ };
82
+ }
83
+ if (redirectToParts[1]) {
84
+ newLocation.search = redirectToParts[1];
85
+ }
86
+ // We need to navigate and reset the store after a litte delay to avoid a race condition
87
+ // between the store reset and the navigation.
88
+ //
89
+ // This would only happen when the `authProvider.getPermissions` method returns
90
+ // a resolved promise with no delay: If the store was reset before the navigation,
91
+ // the `usePermissions` query would reset, causing the `CoreAdminRoutes` component to
92
+ // rerender the `LogoutOnMount` component leading to an infinite loop.
93
+ setTimeout(() => {
94
+ navigate(newLocation, newLocationOptions);
95
+ resetStore();
96
+ queryClient.clear();
97
+ }, 0);
98
+ return redirectFromLogout;
99
+ });
100
+ }
101
+ else {
102
+ navigate({
103
+ pathname: loginUrl,
104
+ }, {
105
+ state: {
106
+ nextPathname: locationRef.current &&
107
+ locationRef.current.pathname,
108
+ },
109
+ });
110
+ resetStore();
111
+ queryClient.clear();
112
+ return Promise.resolve();
113
+ }
114
+ }, [authProvider, resetStore, loginUrl, queryClient, navigate]);
115
+ return logout;
116
+ };
117
+ export default useLogout;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Returns a callback used to call the authProvider.checkError() method
3
+ * and an error from the dataProvider. If the authProvider rejects the call,
4
+ * the hook logs the user out and shows a logged out notification.
5
+ *
6
+ * Used in the useDataProvider hook to check for access denied responses
7
+ * (e.g. 401 or 403 responses) and trigger a logout.
8
+ *
9
+ * @see useLogout
10
+ * @see useDataProvider
11
+ *
12
+ * @returns {Function} logoutIfAccessDenied callback
13
+ *
14
+ * @example
15
+ *
16
+ * import { useLogoutIfAccessDenied, useNotify, DataProviderContext } from 'react-admin';
17
+ *
18
+ * const FetchRestrictedResource = () => {
19
+ * const dataProvider = useContext(DataProviderContext);
20
+ * const logoutIfAccessDenied = useLogoutIfAccessDenied();
21
+ * const notify = useNotify()
22
+ * useEffect(() => {
23
+ * dataProvider.getOne('secret', { id: 123 })
24
+ * .catch(error => {
25
+ * logoutIfAccessDenied(error);
26
+ * notify('server error', { type: 'error' });
27
+ * })
28
+ * }, []);
29
+ * // ...
30
+ * }
31
+ */
32
+ declare const useLogoutIfAccessDenied: () => LogoutIfAccessDenied;
33
+ /**
34
+ * Call the authProvider.authError() method, using the error passed as argument.
35
+ * If the authProvider rejects the call, logs the user out and shows a logged out notification.
36
+ *
37
+ * @param {Error} error An Error object (usually returned by the dataProvider)
38
+ *
39
+ * @return {Promise} Resolved to true if there was a logout, false otherwise
40
+ */
41
+ type LogoutIfAccessDenied = (error?: any) => Promise<boolean>;
42
+ export default useLogoutIfAccessDenied;
@@ -0,0 +1,111 @@
1
+ import { useCallback } from 'react';
2
+ import useAuthProvider from './useAuthProvider';
3
+ import useLogout from './useLogout';
4
+ import { useNotify } from '../notification';
5
+ import { useNavigate } from '../routing/useNavigate';
6
+ let timer;
7
+ /**
8
+ * Returns a callback used to call the authProvider.checkError() method
9
+ * and an error from the dataProvider. If the authProvider rejects the call,
10
+ * the hook logs the user out and shows a logged out notification.
11
+ *
12
+ * Used in the useDataProvider hook to check for access denied responses
13
+ * (e.g. 401 or 403 responses) and trigger a logout.
14
+ *
15
+ * @see useLogout
16
+ * @see useDataProvider
17
+ *
18
+ * @returns {Function} logoutIfAccessDenied callback
19
+ *
20
+ * @example
21
+ *
22
+ * import { useLogoutIfAccessDenied, useNotify, DataProviderContext } from 'react-admin';
23
+ *
24
+ * const FetchRestrictedResource = () => {
25
+ * const dataProvider = useContext(DataProviderContext);
26
+ * const logoutIfAccessDenied = useLogoutIfAccessDenied();
27
+ * const notify = useNotify()
28
+ * useEffect(() => {
29
+ * dataProvider.getOne('secret', { id: 123 })
30
+ * .catch(error => {
31
+ * logoutIfAccessDenied(error);
32
+ * notify('server error', { type: 'error' });
33
+ * })
34
+ * }, []);
35
+ * // ...
36
+ * }
37
+ */
38
+ const useLogoutIfAccessDenied = () => {
39
+ const authProvider = useAuthProvider();
40
+ const logout = useLogout();
41
+ const notify = useNotify();
42
+ const navigate = useNavigate();
43
+ const handleRedirect = useCallback((url) => {
44
+ if (url.startsWith('http')) {
45
+ window.location.href = url;
46
+ }
47
+ else {
48
+ navigate(url);
49
+ }
50
+ }, [navigate]);
51
+ const logoutIfAccessDenied = useCallback(async (errorFromCheckAuth) => {
52
+ if (!authProvider) {
53
+ return logoutIfAccessDeniedWithoutProvider();
54
+ }
55
+ try {
56
+ await authProvider.checkError(errorFromCheckAuth);
57
+ return false;
58
+ }
59
+ catch (errorFromCheckError) {
60
+ const logoutUser = errorFromCheckError?.logoutUser ?? true;
61
+ // manual debounce
62
+ if (timer) {
63
+ return true; // side effects already triggered in this tick, exit
64
+ }
65
+ timer = setTimeout(() => {
66
+ timer = undefined;
67
+ }, 0);
68
+ const redirectTo = errorFromCheckError &&
69
+ errorFromCheckError.redirectTo != null
70
+ ? errorFromCheckError.redirectTo
71
+ : errorFromCheckAuth && errorFromCheckAuth.redirectTo
72
+ ? errorFromCheckAuth.redirectTo
73
+ : undefined;
74
+ const shouldNotify = !((errorFromCheckError &&
75
+ errorFromCheckError.message === false) ||
76
+ (errorFromCheckAuth &&
77
+ errorFromCheckAuth.message === false) ||
78
+ redirectTo?.startsWith('http'));
79
+ if (shouldNotify) {
80
+ try {
81
+ // notify only if not yet logged out
82
+ await authProvider.checkAuth({});
83
+ if (logoutUser) {
84
+ notify(getErrorMessage(errorFromCheckError, "strato.notification.logged_out'), { type: 'error' });
85
+ }
86
+ else {
87
+ notify(getErrorMessage(errorFromCheckError, "strato.notification.not_authorized'), { type: 'error' });
88
+ }
89
+ }
90
+ catch {
91
+ // ignore
92
+ }
93
+ }
94
+ if (logoutUser) {
95
+ logout({}, redirectTo);
96
+ }
97
+ else if (redirectTo) {
98
+ handleRedirect(redirectTo);
99
+ }
100
+ return true;
101
+ }
102
+ }, [authProvider, logout, notify, handleRedirect]);
103
+ return logoutIfAccessDenied;
104
+ };
105
+ const logoutIfAccessDeniedWithoutProvider = async () => false;
106
+ const getErrorMessage = (error, defaultMessage) => typeof error === 'string'
107
+ ? error
108
+ : typeof error === 'undefined' || !error.message
109
+ ? defaultMessage
110
+ : error.message;
111
+ export default useLogoutIfAccessDenied;