@strato-admin/faker-ecommerce 0.1.1 → 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 +5 -4
  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,56 @@
1
+ import { QueryObserverLoadingErrorResult, QueryObserverLoadingResult, QueryObserverRefetchErrorResult, QueryObserverSuccessResult, UseQueryOptions } from '@tanstack/react-query';
2
+ import { HintedString } from '../types';
3
+ /**
4
+ * A hook that calls the authProvider.canAccess() method using react-query for a provided resource and action (and optionally a record).
5
+ *
6
+ * The return value updates according to the request state:
7
+ *
8
+ * - start: { isPending: true }
9
+ * - success: { canAccess: true | false, isPending: false }
10
+ * - error: { error: [error from provider], isPending: false }
11
+ *
12
+ * Useful to enable or disable features based on users permissions.
13
+ *
14
+ * @param {Object} params Any params you want to pass to the authProvider
15
+ * @param {string} params.resource The resource to check access for
16
+ * @param {string} params.action The action to check access for
17
+ * @param {Object} params.record Optional. The record to check access for
18
+ *
19
+ * @returns Return the react-query result and a canAccess property which is a boolean indicating the access status
20
+ *
21
+ * @example
22
+ * import { useCanAccess } from 'react-admin';
23
+ *
24
+ * const PostDetail = () => {
25
+ * const { isPending, canAccess, error } = useCanAccess({
26
+ * resource: 'posts',
27
+ * action: 'read',
28
+ * });
29
+ * if (isPending || !canAccess) {
30
+ * return null;
31
+ * }
32
+ * if (error) {
33
+ * return <div>{error.message}</div>;
34
+ * }
35
+ * return <PostEdit />;
36
+ * };
37
+ */
38
+ export declare const useCanAccess: <RecordType extends Record<string, any> = Record<string, any>, ErrorType extends Error = Error>(params: UseCanAccessOptions<RecordType, ErrorType>) => UseCanAccessResult<ErrorType>;
39
+ export interface UseCanAccessOptions<RecordType extends Record<string, any> = Record<string, any>, ErrorType extends Error = Error> extends Omit<UseQueryOptions<boolean, ErrorType>, 'queryKey' | 'queryFn'> {
40
+ resource?: string;
41
+ action: HintedString<'list' | 'create' | 'edit' | 'show' | 'delete'>;
42
+ record?: RecordType;
43
+ }
44
+ export type UseCanAccessResult<ErrorType = Error> = UseCanAccessLoadingResult<ErrorType> | UseCanAccessLoadingErrorResult<ErrorType> | UseCanAccessRefetchErrorResult<ErrorType> | UseCanAccessSuccessResult<ErrorType>;
45
+ export interface UseCanAccessLoadingResult<ErrorType = Error> extends QueryObserverLoadingResult<boolean, ErrorType> {
46
+ canAccess: undefined;
47
+ }
48
+ export interface UseCanAccessLoadingErrorResult<ErrorType = Error> extends QueryObserverLoadingErrorResult<boolean, ErrorType> {
49
+ canAccess: undefined;
50
+ }
51
+ export interface UseCanAccessRefetchErrorResult<ErrorType = Error> extends QueryObserverRefetchErrorResult<boolean, ErrorType> {
52
+ canAccess: boolean;
53
+ }
54
+ export interface UseCanAccessSuccessResult<ErrorType = Error> extends QueryObserverSuccessResult<boolean, ErrorType> {
55
+ canAccess: boolean;
56
+ }
@@ -0,0 +1,108 @@
1
+ import { useMemo } from 'react';
2
+ import { useQuery, } from '@tanstack/react-query';
3
+ import useAuthProvider from './useAuthProvider';
4
+ import { useResourceContext } from '../core';
5
+ import { useRecordContext } from '../controller';
6
+ /**
7
+ * A hook that calls the authProvider.canAccess() method using react-query for a provided resource and action (and optionally a record).
8
+ *
9
+ * The return value updates according to the request state:
10
+ *
11
+ * - start: { isPending: true }
12
+ * - success: { canAccess: true | false, isPending: false }
13
+ * - error: { error: [error from provider], isPending: false }
14
+ *
15
+ * Useful to enable or disable features based on users permissions.
16
+ *
17
+ * @param {Object} params Any params you want to pass to the authProvider
18
+ * @param {string} params.resource The resource to check access for
19
+ * @param {string} params.action The action to check access for
20
+ * @param {Object} params.record Optional. The record to check access for
21
+ *
22
+ * @returns Return the react-query result and a canAccess property which is a boolean indicating the access status
23
+ *
24
+ * @example
25
+ * import { useCanAccess } from 'react-admin';
26
+ *
27
+ * const PostDetail = () => {
28
+ * const { isPending, canAccess, error } = useCanAccess({
29
+ * resource: 'posts',
30
+ * action: 'read',
31
+ * });
32
+ * if (isPending || !canAccess) {
33
+ * return null;
34
+ * }
35
+ * if (error) {
36
+ * return <div>{error.message}</div>;
37
+ * }
38
+ * return <PostEdit />;
39
+ * };
40
+ */
41
+ export const useCanAccess = (params) => {
42
+ const authProvider = useAuthProvider();
43
+ const resource = useResourceContext(params);
44
+ if (!resource) {
45
+ throw new Error('useCanAccess must be used inside a <Resource> component or provide a resource prop');
46
+ }
47
+ const record = useRecordContext(params);
48
+ const { record: _record, ...restParams } = params;
49
+ const authProviderHasCanAccess = !!authProvider?.canAccess;
50
+ const queryResult = useQuery({
51
+ queryKey: [
52
+ 'auth',
53
+ 'canAccess',
54
+ { ...restParams, recordId: record?.id, resource },
55
+ ],
56
+ queryFn: async ({ signal }) => {
57
+ if (!authProvider || !authProvider.canAccess) {
58
+ return true;
59
+ }
60
+ return authProvider.canAccess({
61
+ ...params,
62
+ record,
63
+ resource,
64
+ signal: authProvider.supportAbortSignal ? signal : undefined,
65
+ });
66
+ },
67
+ enabled: authProviderHasCanAccess,
68
+ ...params,
69
+ });
70
+ const result = useMemo(() => {
71
+ // Don't check for the authProvider or authProvider.canAccess method in the useMemo
72
+ // to avoid unnecessary re-renders
73
+ return {
74
+ ...queryResult,
75
+ canAccess: queryResult.data,
76
+ };
77
+ }, [queryResult]);
78
+ return authProviderHasCanAccess
79
+ ? result
80
+ : emptyQueryObserverResult;
81
+ };
82
+ const emptyQueryObserverResult = {
83
+ canAccess: true,
84
+ data: true,
85
+ dataUpdatedAt: 0,
86
+ error: null,
87
+ errorUpdatedAt: 0,
88
+ errorUpdateCount: 0,
89
+ failureCount: 0,
90
+ failureReason: null,
91
+ fetchStatus: 'idle',
92
+ isError: false,
93
+ isInitialLoading: false,
94
+ isLoading: false,
95
+ isLoadingError: false,
96
+ isFetched: true,
97
+ isFetchedAfterMount: true,
98
+ isFetching: false,
99
+ isPaused: false,
100
+ isPlaceholderData: false,
101
+ isPending: false,
102
+ isRefetchError: false,
103
+ isRefetching: false,
104
+ isStale: false,
105
+ isSuccess: true,
106
+ status: 'success',
107
+ refetch: () => Promise.resolve(emptyQueryObserverResult),
108
+ };
@@ -0,0 +1,39 @@
1
+ import { UseMutateAsyncFunction, UseMutationOptions } from '@tanstack/react-query';
2
+ import { HintedString } from '../types';
3
+ /**
4
+ * A hook that returns a function you can call to determine whether user has access to the given resource
5
+ *
6
+ * @example
7
+ * import { Datagrid, List, TextField, useCanAccessCallback } from 'react-admin';
8
+ *
9
+ * const UserList = () => {
10
+ * const checkAccess = useCanAccessCallback();
11
+ *
12
+ * const handleRowClick = (id: Identifier, resource: string, record: Record) => {
13
+ * try {
14
+ * const canAccess = checkAccess({ resource: 'users', action: 'edit', record });
15
+ * return canAccess ? "edit" : "show";
16
+ * } catch (error) {
17
+ * console.error(error);
18
+ * }
19
+ * };
20
+ *
21
+ * return (
22
+ * <List>
23
+ * <Datagrid onClick={handleRowClick}>
24
+ * <TextField source="id" />
25
+ * <TextField source="name" />
26
+ * <TextField source="email" />
27
+ * </Datagrid>
28
+ * </List>
29
+ * );
30
+ * };
31
+ */
32
+ export declare const useCanAccessCallback: <RecordType extends Record<string, any> = Record<string, any>, ErrorType = Error>(options?: Omit<UseMutationOptions<UseCanAccessCallbackResult, ErrorType, UseCanAccessCallbackOptions<RecordType>>, "mutationFn">) => UseMutateAsyncFunction<boolean, ErrorType, UseCanAccessCallbackOptions<Record<string, any>>, unknown>;
33
+ export type UseCanAccessCallback<RecordType extends Record<string, any> = Record<string, any>, ErrorType = Error> = UseMutateAsyncFunction<UseCanAccessCallbackResult, ErrorType, UseCanAccessCallbackOptions<RecordType>, unknown>;
34
+ export type UseCanAccessCallbackOptions<RecordType extends Record<string, any> = Record<string, any>> = {
35
+ resource: string;
36
+ action: HintedString<'list' | 'create' | 'edit' | 'show' | 'delete'>;
37
+ record?: RecordType;
38
+ };
39
+ export type UseCanAccessCallbackResult = boolean;
@@ -0,0 +1,45 @@
1
+ import { useMutation, } from '@tanstack/react-query';
2
+ import useAuthProvider from './useAuthProvider';
3
+ /**
4
+ * A hook that returns a function you can call to determine whether user has access to the given resource
5
+ *
6
+ * @example
7
+ * import { Datagrid, List, TextField, useCanAccessCallback } from 'react-admin';
8
+ *
9
+ * const UserList = () => {
10
+ * const checkAccess = useCanAccessCallback();
11
+ *
12
+ * const handleRowClick = (id: Identifier, resource: string, record: Record) => {
13
+ * try {
14
+ * const canAccess = checkAccess({ resource: 'users', action: 'edit', record });
15
+ * return canAccess ? "edit" : "show";
16
+ * } catch (error) {
17
+ * console.error(error);
18
+ * }
19
+ * };
20
+ *
21
+ * return (
22
+ * <List>
23
+ * <Datagrid onClick={handleRowClick}>
24
+ * <TextField source="id" />
25
+ * <TextField source="name" />
26
+ * <TextField source="email" />
27
+ * </Datagrid>
28
+ * </List>
29
+ * );
30
+ * };
31
+ */
32
+ export const useCanAccessCallback = (options = {}) => {
33
+ const authProvider = useAuthProvider();
34
+ const { mutateAsync } = useMutation({
35
+ mutationFn: async (params) => {
36
+ if (!authProvider || !authProvider.canAccess) {
37
+ return true;
38
+ }
39
+ return authProvider.canAccess(params);
40
+ },
41
+ retry: false,
42
+ ...options,
43
+ });
44
+ return mutateAsync;
45
+ };
@@ -0,0 +1,67 @@
1
+ import { UseQueryOptions } from '@tanstack/react-query';
2
+ import { HintedString } from '../types';
3
+ /**
4
+ * Checks whether users can access the provided resources.
5
+ *
6
+ * `useCanAccessResources` returns an object describing the state of the request:
7
+ *
8
+ * - start: { isPending: true }
9
+ * - success: { canAccess: Object<string, boolean>, isPending: false }
10
+ * - error: { error: [error from provider], isPending: false }
11
+ *
12
+ * @param {Object} params Any params you want to pass to the authProvider
13
+ * @param {string} params.action The action to check access for
14
+ * @param {string[]} params.resources The list of resources to check access for
15
+ * @param {Object} params.record Optional. The record to check access for
16
+ *
17
+ * @returns Return the react-query result and a canAccess property which is a map of the resources and their access status { [resource: string]: boolean }
18
+ *
19
+ * @example
20
+ * import { useCanAccessResources } from 'react-admin';
21
+ *
22
+ * const UserList = ({ record }) => {
23
+ * const { isPending, canAccess } = useCanAccessResources({
24
+ * action: 'read',
25
+ * resources: ['users.id', 'users.name', 'users.email'],
26
+ * record
27
+ * });
28
+ *
29
+ * if (isPending) {
30
+ * return null;
31
+ * }
32
+ * return (
33
+ * <SimpleList
34
+ * primaryText={record => canAccess.users.name ? record.name : ''}
35
+ * secondaryText={record => canAccess.users.email ? record.email : ''}
36
+ * tertiaryText={record => canAccess.users.id ? record.id : ''}
37
+ * />
38
+ * );
39
+ * };
40
+ */
41
+ export declare const useCanAccessResources: <RecordType extends Record<string, any> = Record<string, any>, ErrorType extends Error = Error>(params: UseCanAccessResourcesOptions<RecordType>) => UseCanAccessResourcesResult<ErrorType>;
42
+ export interface UseCanAccessResourcesOptions<RecordType extends Record<string, any> = Record<string, any>, ErrorType extends Error = Error> extends Omit<UseQueryOptions<Record<string, boolean>, ErrorType>, 'queryKey' | 'queryFn'> {
43
+ resources: string[];
44
+ action: HintedString<'list' | 'create' | 'edit' | 'show' | 'delete'>;
45
+ record?: RecordType;
46
+ }
47
+ export type UseCanAccessResourcesResult<ErrorType = Error> = UseCanAccessResourcesLoadingResult | UseCanAccessResourcesLoadingErrorResult<ErrorType> | UseCanAccessResourcesRefetchErrorResult<ErrorType> | UseCanAccessResourcesSuccessResult;
48
+ export interface UseCanAccessResourcesLoadingResult {
49
+ canAccess: undefined;
50
+ error: null;
51
+ isPending: true;
52
+ }
53
+ export interface UseCanAccessResourcesLoadingErrorResult<ErrorType = Error> {
54
+ canAccess: undefined;
55
+ error: ErrorType;
56
+ isPending: false;
57
+ }
58
+ export interface UseCanAccessResourcesRefetchErrorResult<ErrorType = Error> {
59
+ canAccess: Record<string, boolean>;
60
+ error: ErrorType;
61
+ isPending: false;
62
+ }
63
+ export interface UseCanAccessResourcesSuccessResult {
64
+ canAccess: Record<string, boolean>;
65
+ error: null;
66
+ isPending: false;
67
+ }
@@ -0,0 +1,92 @@
1
+ import { useMemo } from 'react';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import useAuthProvider from './useAuthProvider';
4
+ import { useRecordContext } from '../controller';
5
+ /**
6
+ * Checks whether users can access the provided resources.
7
+ *
8
+ * `useCanAccessResources` returns an object describing the state of the request:
9
+ *
10
+ * - start: { isPending: true }
11
+ * - success: { canAccess: Object<string, boolean>, isPending: false }
12
+ * - error: { error: [error from provider], isPending: false }
13
+ *
14
+ * @param {Object} params Any params you want to pass to the authProvider
15
+ * @param {string} params.action The action to check access for
16
+ * @param {string[]} params.resources The list of resources to check access for
17
+ * @param {Object} params.record Optional. The record to check access for
18
+ *
19
+ * @returns Return the react-query result and a canAccess property which is a map of the resources and their access status { [resource: string]: boolean }
20
+ *
21
+ * @example
22
+ * import { useCanAccessResources } from 'react-admin';
23
+ *
24
+ * const UserList = ({ record }) => {
25
+ * const { isPending, canAccess } = useCanAccessResources({
26
+ * action: 'read',
27
+ * resources: ['users.id', 'users.name', 'users.email'],
28
+ * record
29
+ * });
30
+ *
31
+ * if (isPending) {
32
+ * return null;
33
+ * }
34
+ * return (
35
+ * <SimpleList
36
+ * primaryText={record => canAccess.users.name ? record.name : ''}
37
+ * secondaryText={record => canAccess.users.email ? record.email : ''}
38
+ * tertiaryText={record => canAccess.users.id ? record.id : ''}
39
+ * />
40
+ * );
41
+ * };
42
+ */
43
+ export const useCanAccessResources = (params) => {
44
+ const authProvider = useAuthProvider();
45
+ const record = useRecordContext(params);
46
+ const { action, resources, ...options } = params;
47
+ const queryResult = useQuery({
48
+ queryKey: ['auth', 'canAccess', resources, action, record],
49
+ queryFn: async ({ signal }) => {
50
+ const queries = await Promise.all(resources.map(async (resource) => {
51
+ if (!authProvider || !authProvider.canAccess) {
52
+ return { canAccess: true, resource };
53
+ }
54
+ const canAccess = await authProvider.canAccess({
55
+ resource,
56
+ action,
57
+ record,
58
+ signal: authProvider.supportAbortSignal
59
+ ? signal
60
+ : undefined,
61
+ });
62
+ return { canAccess, resource };
63
+ }));
64
+ const result = queries.reduce((acc, { resource, canAccess }) => {
65
+ acc[resource] = canAccess;
66
+ return acc;
67
+ }, {});
68
+ return result;
69
+ },
70
+ ...options,
71
+ });
72
+ const result = useMemo(() => {
73
+ return {
74
+ canAccess: queryResult.data,
75
+ ...queryResult,
76
+ };
77
+ }, [queryResult]);
78
+ const resultWithoutAuthProvider = useMemo(() => {
79
+ return {
80
+ canAccess: resources.reduce((acc, resource) => {
81
+ acc[resource] = true;
82
+ return acc;
83
+ }, {}),
84
+ isPending: false,
85
+ isError: false,
86
+ error: null,
87
+ };
88
+ }, [resources]);
89
+ return !authProvider || !authProvider.canAccess
90
+ ? resultWithoutAuthProvider
91
+ : result;
92
+ };
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Get a callback for calling the authProvider.checkAuth() method.
3
+ * In case of rejection, redirects to the login page, displays a notification,
4
+ * and throws an error.
5
+ *
6
+ * This is a low level hook. See those more specialized hooks
7
+ * for common authentication tasks, based on useCheckAuth.
8
+ *
9
+ * @see useAuthenticated
10
+ * @see useAuthState
11
+ *
12
+ * @returns {Function} checkAuth callback
13
+ *
14
+ * @example
15
+ *
16
+ * import { useCheckAuth } from 'react-admin';
17
+ *
18
+ * const MyProtectedPage = () => {
19
+ * const checkAuth = useCheckAuth();
20
+ * useEffect(() => {
21
+ * checkAuth().catch(() => {});
22
+ * }, []);
23
+ * return <p>Private content: EZAEZEZAET</p>
24
+ * } // tip: use useAuthenticated() hook instead
25
+ *
26
+ * const MyPage = () => {
27
+ * const checkAuth = useCheckAuth();
28
+ * const [authenticated, setAuthenticated] = useState(true); // optimistic auth
29
+ * useEffect(() => {
30
+ * checkAuth({}, false)
31
+ * .then(() => setAuthenticated(true))
32
+ * .catch(() => setAuthenticated(false));
33
+ * }, []);
34
+ * return authenticated ? <Bar /> : <BarNotAuthenticated />;
35
+ * } // tip: use useAuthState() hook instead
36
+ */
37
+ export declare const useCheckAuth: () => CheckAuth;
38
+ /**
39
+ * Check if the current user is authenticated by calling authProvider.checkAuth().
40
+ * Logs the user out on failure.
41
+ *
42
+ * @param {Object} params The parameters to pass to the authProvider
43
+ * @param {boolean} logoutOnFailure Whether the user should be logged out if the authProvider fails to authenticate them. True by default.
44
+ * @param {string} redirectTo The login form url. Defaults to '/login'
45
+ *
46
+ * @return {Promise} Resolved to the authProvider response if the user passes the check, or rejected with an error otherwise
47
+ */
48
+ export type CheckAuth = (params?: any, logoutOnFailure?: boolean, redirectTo?: string) => Promise<any>;
@@ -0,0 +1,76 @@
1
+ import { useCallback } from 'react';
2
+ import useAuthProvider, { defaultAuthParams } from './useAuthProvider';
3
+ import useLogout from './useLogout';
4
+ import { useNotify } from '../notification';
5
+ import { useBasename } from '../routing';
6
+ import { removeDoubleSlashes } from '../routing/useCreatePath';
7
+ /**
8
+ * Get a callback for calling the authProvider.checkAuth() method.
9
+ * In case of rejection, redirects to the login page, displays a notification,
10
+ * and throws an error.
11
+ *
12
+ * This is a low level hook. See those more specialized hooks
13
+ * for common authentication tasks, based on useCheckAuth.
14
+ *
15
+ * @see useAuthenticated
16
+ * @see useAuthState
17
+ *
18
+ * @returns {Function} checkAuth callback
19
+ *
20
+ * @example
21
+ *
22
+ * import { useCheckAuth } from 'react-admin';
23
+ *
24
+ * const MyProtectedPage = () => {
25
+ * const checkAuth = useCheckAuth();
26
+ * useEffect(() => {
27
+ * checkAuth().catch(() => {});
28
+ * }, []);
29
+ * return <p>Private content: EZAEZEZAET</p>
30
+ * } // tip: use useAuthenticated() hook instead
31
+ *
32
+ * const MyPage = () => {
33
+ * const checkAuth = useCheckAuth();
34
+ * const [authenticated, setAuthenticated] = useState(true); // optimistic auth
35
+ * useEffect(() => {
36
+ * checkAuth({}, false)
37
+ * .then(() => setAuthenticated(true))
38
+ * .catch(() => setAuthenticated(false));
39
+ * }, []);
40
+ * return authenticated ? <Bar /> : <BarNotAuthenticated />;
41
+ * } // tip: use useAuthState() hook instead
42
+ */
43
+ export const useCheckAuth = () => {
44
+ const authProvider = useAuthProvider();
45
+ const notify = useNotify();
46
+ const logout = useLogout();
47
+ const basename = useBasename();
48
+ const loginUrl = removeDoubleSlashes(`${basename}/${defaultAuthParams.loginUrl}`);
49
+ const checkAuth = useCallback(async (params = {}, logoutOnFailure = true, redirectTo = loginUrl) => {
50
+ // The authProvider is optional in react-admin
51
+ if (!authProvider) {
52
+ return checkAuthWithoutAuthProvider();
53
+ }
54
+ try {
55
+ return await authProvider.checkAuth(params);
56
+ }
57
+ catch (error) {
58
+ if (logoutOnFailure) {
59
+ logout({}, error && error.redirectTo != null
60
+ ? error.redirectTo
61
+ : redirectTo);
62
+ const shouldSkipNotify = error && error.message === false;
63
+ !shouldSkipNotify &&
64
+ notify(getErrorMessage(error, "strato.auth.auth_check_error'), { type: 'error' });
65
+ }
66
+ throw error;
67
+ }
68
+ }, [authProvider, logout, notify, loginUrl]);
69
+ return checkAuth;
70
+ };
71
+ const checkAuthWithoutAuthProvider = async () => undefined;
72
+ const getErrorMessage = (error, defaultMessage) => typeof error === 'string'
73
+ ? error
74
+ : typeof error === 'undefined' || !error.message
75
+ ? defaultMessage
76
+ : error.message;
@@ -0,0 +1,41 @@
1
+ import { UseQueryOptions, QueryObserverResult } from '@tanstack/react-query';
2
+ import { UserIdentity } from '../types';
3
+ /**
4
+ * Return the current user identity by calling authProvider.getIdentity() on mount
5
+ *
6
+ * The return value updates according to the call state:
7
+ *
8
+ * - mount: { isPending: true }
9
+ * - success: { identity, refetch: () => {}, isPending: false }
10
+ * - error: { error: Error, isPending: false }
11
+ *
12
+ * The implementation is left to the authProvider.
13
+ *
14
+ * @returns The current user identity. Destructure as { isPending, identity, error, refetch }.
15
+ *
16
+ * @example
17
+ * import { useGetIdentity, useGetOne } from 'react-admin';
18
+ *
19
+ * const PostDetail = ({ id }) => {
20
+ * const { data: post, isPending: postLoading } = useGetOne('posts', { id });
21
+ * const { identity, isPending: identityLoading } = useGetIdentity();
22
+ * if (postLoading || identityLoading) return <>Loading...</>;
23
+ * if (!post.lockedBy || post.lockedBy === identity.id) {
24
+ * // post isn't locked, or is locked by me
25
+ * return <PostEdit post={post} />
26
+ * } else {
27
+ * // post is locked by someone else and cannot be edited
28
+ * return <PostShow post={post} />
29
+ * }
30
+ * }
31
+ */
32
+ export declare const useGetIdentity: <ErrorType extends Error = Error>(options?: UseGetIdentityOptions<ErrorType>) => UseGetIdentityResult<ErrorType>;
33
+ export interface UseGetIdentityOptions<ErrorType extends Error = Error> extends Omit<UseQueryOptions<UserIdentity, ErrorType>, 'queryKey' | 'queryFn'> {
34
+ onSuccess?: (data: UserIdentity) => void;
35
+ onError?: (err: Error) => void;
36
+ onSettled?: (data?: UserIdentity, error?: Error | null) => void;
37
+ }
38
+ export type UseGetIdentityResult<ErrorType = Error> = QueryObserverResult<UserIdentity, ErrorType> & {
39
+ identity: UserIdentity | undefined;
40
+ };
41
+ export default useGetIdentity;
@@ -0,0 +1,86 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ import { useQuery, } from '@tanstack/react-query';
3
+ import useAuthProvider from './useAuthProvider';
4
+ import { useEvent } from '../util';
5
+ const defaultIdentity = {
6
+ id: '',
7
+ };
8
+ const defaultQueryParams = {
9
+ staleTime: 5 * 60 * 1000,
10
+ };
11
+ /**
12
+ * Return the current user identity by calling authProvider.getIdentity() on mount
13
+ *
14
+ * The return value updates according to the call state:
15
+ *
16
+ * - mount: { isPending: true }
17
+ * - success: { identity, refetch: () => {}, isPending: false }
18
+ * - error: { error: Error, isPending: false }
19
+ *
20
+ * The implementation is left to the authProvider.
21
+ *
22
+ * @returns The current user identity. Destructure as { isPending, identity, error, refetch }.
23
+ *
24
+ * @example
25
+ * import { useGetIdentity, useGetOne } from 'react-admin';
26
+ *
27
+ * const PostDetail = ({ id }) => {
28
+ * const { data: post, isPending: postLoading } = useGetOne('posts', { id });
29
+ * const { identity, isPending: identityLoading } = useGetIdentity();
30
+ * if (postLoading || identityLoading) return <>Loading...</>;
31
+ * if (!post.lockedBy || post.lockedBy === identity.id) {
32
+ * // post isn't locked, or is locked by me
33
+ * return <PostEdit post={post} />
34
+ * } else {
35
+ * // post is locked by someone else and cannot be edited
36
+ * return <PostShow post={post} />
37
+ * }
38
+ * }
39
+ */
40
+ export const useGetIdentity = (options = defaultQueryParams) => {
41
+ const authProvider = useAuthProvider();
42
+ const { onSuccess, onError, onSettled, ...queryOptions } = options;
43
+ const result = useQuery({
44
+ queryKey: ['auth', 'getIdentity'],
45
+ queryFn: async ({ signal }) => {
46
+ if (authProvider &&
47
+ typeof authProvider.getIdentity === 'function') {
48
+ return authProvider.getIdentity({ signal });
49
+ }
50
+ else {
51
+ return defaultIdentity;
52
+ }
53
+ },
54
+ ...queryOptions,
55
+ });
56
+ const onSuccessEvent = useEvent(onSuccess ?? noop);
57
+ const onErrorEvent = useEvent(onError ?? noop);
58
+ const onSettledEvent = useEvent(onSettled ?? noop);
59
+ useEffect(() => {
60
+ if (result.data === undefined || result.isFetching)
61
+ return;
62
+ onSuccessEvent(result.data);
63
+ }, [onSuccessEvent, result.data, result.isFetching]);
64
+ useEffect(() => {
65
+ if (result.error == null || result.isFetching)
66
+ return;
67
+ onErrorEvent(result.error);
68
+ }, [onErrorEvent, result.error, result.isFetching]);
69
+ useEffect(() => {
70
+ if (result.status === 'pending' || result.isFetching)
71
+ return;
72
+ onSettledEvent(result.data, result.error);
73
+ }, [
74
+ onSettledEvent,
75
+ result.data,
76
+ result.error,
77
+ result.status,
78
+ result.isFetching,
79
+ ]);
80
+ return useMemo(() => ({
81
+ ...result,
82
+ identity: result.data,
83
+ }), [result]);
84
+ };
85
+ export default useGetIdentity;
86
+ const noop = () => { };