@deix/rossini-identity-management 3.0.0 → 3.2.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.
@@ -1,10 +1,10 @@
1
- import { QueryClient, UseMutationResult, UseQueryResult } from '@tanstack/react-query';
1
+ import { QueryClient, UseQueryResult } from '@tanstack/react-query';
2
2
  import { AxiosInstance } from 'axios';
3
3
  import { User } from '../../types/users';
4
4
  import { Group } from '../../types/groups';
5
5
  import { UserFormFields } from '../../components/users/UserForm';
6
- export declare const getUsers: (apiClient: AxiosInstance, username?: string, group?: string) => Promise<User[]>;
7
- export declare const useUsers: (apiClient: AxiosInstance, group?: string) => UseQueryResult<User[] | undefined, Error>;
6
+ export declare const getUsers: (apiClient: AxiosInstance, username?: string, group?: string, offset?: number, limit?: number) => Promise<User[]>;
7
+ export declare const useUsers: (apiClient: AxiosInstance, group?: string, offset?: number, limit?: number) => UseQueryResult<User[] | undefined, Error>;
8
8
  export declare const useUser: (id: string, apiClient: AxiosInstance) => UseQueryResult<User | undefined, Error>;
9
9
  export declare const addUser: ({ newUser, sendEmailOnCreation, apiClient, groups, }: {
10
10
  newUser: User;
@@ -12,28 +12,30 @@ export declare const addUser: ({ newUser, sendEmailOnCreation, apiClient, groups
12
12
  apiClient: AxiosInstance;
13
13
  groups?: string[];
14
14
  }) => Promise<null>;
15
- export declare const useAddUser: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<null, Error, {
15
+ export declare const useAddUser: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<null, Error, {
16
16
  data: UserFormFields;
17
17
  groups: string[] | undefined;
18
18
  }, unknown>;
19
- export declare const useUpdateUser: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<User, Error, User, unknown>;
20
- export declare const useDeleteUser: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<User | undefined, Error, string | undefined, unknown>;
19
+ export declare const useUpdateUser: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<User, Error, User, unknown>;
20
+ export declare const useDeleteUser: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<User | undefined, Error, string | undefined, unknown>;
21
21
  export declare const useUserGroups: (id: string | undefined, apiClient: AxiosInstance) => UseQueryResult<Group[] | undefined, Error>;
22
- export declare const useAddUserToGroup: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<{
22
+ export declare const useAddUserToGroup: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<{
23
23
  userId: string;
24
24
  groupId: string;
25
25
  }, Error, {
26
26
  userId: string;
27
27
  groupId: string;
28
28
  }, unknown>;
29
- export declare const useRemoveUserFromGroup: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<{
29
+ export declare const useRemoveUserFromGroup: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<{
30
30
  userId: string;
31
31
  groupId: string;
32
32
  }, Error, {
33
33
  userId: string;
34
34
  groupId: string;
35
35
  }, unknown>;
36
- export declare const useSendUpdatePasswordEmail: (queryClient: QueryClient, apiClient: AxiosInstance) => UseMutationResult<{
36
+ export declare const useSendUpdatePasswordEmail: (queryClient: QueryClient, apiClient: AxiosInstance) => import("@tanstack/react-query").UseMutationResult<{
37
37
  userId: string;
38
38
  }, Error, string, unknown>;
39
+ export declare const getUsersCount: (apiClient: AxiosInstance, username?: string, group?: string) => Promise<number>;
40
+ export declare const useUsersCount: (apiClient: AxiosInstance, group?: string) => UseQueryResult<number | undefined, Error>;
39
41
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/users.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,EAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,eAAO,MAAM,QAAQ,GACnB,WAAW,aAAa,EACxB,WAAW,MAAM,EACjB,QAAQ,MAAM,oBAoBf,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,WAAW,aAAa,EACxB,QAAQ,MAAM,KACb,cAAc,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,KAAK,CAM1C,CAAC;AAQF,eAAO,MAAM,OAAO,GAClB,IAAI,MAAM,EACV,WAAW,aAAa,KACvB,cAAc,CAAC,IAAI,GAAG,SAAS,EAAE,KAAK,CAMxC,CAAC;AAGF,eAAO,MAAM,OAAO,GAAU,sDAK3B;IACD,OAAO,EAAE,IAAI,CAAC;IACd,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,kBAWA,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,aAAa,WAAW,EACxB,WAAW,aAAa;UAQd,cAAc;YACZ,MAAM,EAAE,GAAG,SAAS;WA6BjC,CAAC;AAiBF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,WAAW,aAAa,kDA6BzB,CAAC;AAgBF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,WAAW,aAAa,4EA6BzB,CAAC;AAcF,eAAO,MAAM,aAAa,GACxB,IAAI,MAAM,GAAG,SAAS,EACtB,WAAW,aAAa,KACvB,cAAc,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,KAAK,CAM3C,CAAC;AAmBF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,EACxB,WAAW,aAAa;;;;YAIsB,MAAM;aAAW,MAAM;WA8BtE,CAAC;AAmBF,eAAO,MAAM,sBAAsB,GACjC,aAAa,WAAW,EACxB,WAAW,aAAa;;;;YAIsB,MAAM;aAAW,MAAM;WA8BtE,CAAC;AAkBF,eAAO,MAAM,0BAA0B,GACrC,aAAa,WAAW,EACxB,WAAW,aAAa;;0BAoBzB,CAAC"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/users.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,eAAO,MAAM,QAAQ,GACnB,WAAW,aAAa,EACxB,WAAW,MAAM,EACjB,QAAQ,MAAM,EACd,SAAQ,MAAU,EAClB,QAAO,MAAY,oBAqBpB,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,WAAW,aAAa,EACxB,QAAQ,MAAM,EACd,SAAQ,MAAU,EAClB,QAAO,MAAY,KAClB,cAAc,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,KAAK,CAW1C,CAAC;AAQF,eAAO,MAAM,OAAO,GAClB,IAAI,MAAM,EACV,WAAW,aAAa,KACvB,cAAc,CAAC,IAAI,GAAG,SAAS,EAAE,KAAK,CAMxC,CAAC;AAGF,eAAO,MAAM,OAAO,GAAU,sDAK3B;IACD,OAAO,EAAE,IAAI,CAAC;IACd,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,kBAWA,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,aAAa,WAAW,EACxB,WAAW,aAAa;UAQd,cAAc;YACZ,MAAM,EAAE,GAAG,SAAS;WA6BjC,CAAC;AAiBF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,WAAW,aAAa,kFA6BzB,CAAC;AAgBF,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,EACxB,WAAW,aAAa,4GA6BzB,CAAC;AAcF,eAAO,MAAM,aAAa,GACxB,IAAI,MAAM,GAAG,SAAS,EACtB,WAAW,aAAa,KACvB,cAAc,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,KAAK,CAM3C,CAAC;AAmBF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,EACxB,WAAW,aAAa;;;;YAIsB,MAAM;aAAW,MAAM;WA8BtE,CAAC;AAmBF,eAAO,MAAM,sBAAsB,GACjC,aAAa,WAAW,EACxB,WAAW,aAAa;;;;YAIsB,MAAM;aAAW,MAAM;WA8BtE,CAAC;AAkBF,eAAO,MAAM,0BAA0B,GACrC,aAAa,WAAW,EACxB,WAAW,aAAa;;0BAoBzB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,WAAW,aAAa,EACxB,WAAW,MAAM,EACjB,QAAQ,MAAM,oBAmBf,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,WAAW,aAAa,EACxB,QAAQ,MAAM,KACb,cAAc,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAM1C,CAAC"}
@@ -3,13 +3,13 @@ import { enqueueSnackbar } from 'notistack';
3
3
  import { useLocale } from '@deix/rossini-core';
4
4
  import usersTranslations from '../../lang/users';
5
5
  // Get list of users
6
- export const getUsers = async (apiClient, username, group) => {
6
+ export const getUsers = async (apiClient, username, group, offset = 0, limit = 100) => {
7
7
  if (group) {
8
8
  const { data: groupData } = await apiClient.get(`/groups`, {
9
9
  params: { max: 1, search: group, exact: 'true' },
10
10
  });
11
11
  if (groupData.length === 1) {
12
- const { data } = await apiClient.get(`/groups/${groupData[0].id}/members`);
12
+ const { data } = await apiClient.get(`/groups/${groupData[0].id}/members`, { params: { max: limit, first: offset } });
13
13
  return data;
14
14
  }
15
15
  else {
@@ -18,15 +18,20 @@ export const getUsers = async (apiClient, username, group) => {
18
18
  }
19
19
  else {
20
20
  const { data } = await apiClient.get(`/users`, {
21
- params: { max: 1000, username, exact: 'true' },
21
+ params: { max: limit, first: offset, username, exact: 'true' },
22
22
  });
23
23
  return data;
24
24
  }
25
25
  };
26
- export const useUsers = (apiClient, group) => {
26
+ export const useUsers = (apiClient, group, offset = 0, limit = 100) => {
27
27
  return useQuery({
28
- queryKey: ['users', `users-${JSON.stringify(group)}`],
29
- queryFn: () => getUsers(apiClient, undefined, group),
28
+ queryKey: [
29
+ 'users',
30
+ `users-${JSON.stringify(group)}`,
31
+ `${JSON.stringify(offset)}`,
32
+ `${JSON.stringify(limit)}`,
33
+ ],
34
+ queryFn: () => getUsers(apiClient, undefined, group, offset, limit),
30
35
  staleTime: 0,
31
36
  });
32
37
  };
@@ -265,3 +270,28 @@ export const useSendUpdatePasswordEmail = (queryClient, apiClient) => {
265
270
  },
266
271
  });
267
272
  };
273
+ export const getUsersCount = async (apiClient, username, group) => {
274
+ if (group) {
275
+ const { data: groupData } = await apiClient.get(`/groups`, {
276
+ params: { max: 1, search: group, exact: 'true' },
277
+ });
278
+ if (groupData.length === 1) {
279
+ const { data } = await apiClient.get(`/groups/${groupData[0].id}/members`, { params: { max: -1 } });
280
+ return data.length;
281
+ }
282
+ else {
283
+ return 0;
284
+ }
285
+ }
286
+ else {
287
+ const { data } = await apiClient.get(`/users/count`);
288
+ return data;
289
+ }
290
+ };
291
+ export const useUsersCount = (apiClient, group) => {
292
+ return useQuery({
293
+ queryKey: ['users-count', `users-count-${JSON.stringify(group)}`],
294
+ queryFn: () => getUsersCount(apiClient, undefined, group),
295
+ staleTime: 0,
296
+ });
297
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deix/rossini-identity-management",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "main": "lib/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,15 +27,15 @@
27
27
  "@mui/material": "^7.2.0",
28
28
  "@tanstack/react-query": "^5.66.0",
29
29
  "@tanstack/react-query-devtools": "^5.66.0",
30
- "@types/react": "^19.0.10",
31
- "@types/react-dom": "^19.0.4",
30
+ "@types/react": "^19.1.0",
31
+ "@types/react-dom": "^19.1.1",
32
32
  "axios": "^1.7.9",
33
33
  "next": "^15.1.6",
34
- "react": "^19.0.0",
35
- "react-dom": "^19.0.0"
34
+ "react": "^19.1.0",
35
+ "react-dom": "^19.1.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@babel/core": "^7.23.7",
38
+ "@babel/core": "^7.26.0",
39
39
  "@emotion/react": "^11.14.0",
40
40
  "@emotion/styled": "^11.14.0",
41
41
  "@eslint/js": "^9.15.0",
@@ -49,24 +49,24 @@
49
49
  "@storybook/addon-onboarding": "^9.0.15",
50
50
  "@storybook/nextjs": "^9.0.15",
51
51
  "@storybook/mdx2-csf": "^1.1.0",
52
- "@tanstack/react-query": "^5.17.12",
53
- "@tanstack/react-query-devtools": "^5.17.12",
52
+ "@tanstack/react-query": "^5.64.2",
53
+ "@tanstack/react-query-devtools": "^5.64.2",
54
54
  "@types/node": "^24.0.10",
55
- "@types/react": "^19.0.10",
56
- "@types/react-dom": "^19.0.4",
55
+ "@types/react": "^19.1.0",
56
+ "@types/react-dom": "^19.1.1",
57
57
  "axios": "^1.7.9",
58
58
  "babel-loader": "^10.0.0",
59
59
  "commitizen": "^4.3.0",
60
60
  "cz-conventional-changelog": "^3.3.0",
61
61
  "eslint": "^9.19.0",
62
- "eslint-config-prettier": "^10.0.1",
62
+ "eslint-config-prettier": "^10.1.1",
63
63
  "eslint-plugin-prettier": "^5.2.3",
64
64
  "eslint-plugin-storybook": "9.0.15",
65
65
  "json-server": "^1.0.0-alpha.21",
66
- "next": "^15.1.6",
67
- "react": "^19.0.0",
68
- "react-docgen-typescript-plugin": "^1.0.5",
69
- "react-dom": "^19.0.0",
66
+ "next": "^15.4.5",
67
+ "react": "^19.1.0",
68
+ "react-docgen-typescript-plugin": "^1.0.8",
69
+ "react-dom": "^19.1.1",
70
70
  "remark-mdx": "^3.0.0",
71
71
  "ts-loader": "^9.5.1",
72
72
  "typescript": "^5.7.3",
@@ -84,10 +84,10 @@
84
84
  }
85
85
  },
86
86
  "dependencies": {
87
- "@deix/rossini-core": "^5.0.0",
87
+ "@deix/rossini-core": "^5.1.0",
88
88
  "@mui/icons-material": "^7.2.0",
89
89
  "@mui/material": "^7.2.0",
90
- "notistack": "^3.0.1",
90
+ "notistack": "^3.0.2",
91
91
  "react-hook-form": "^7.49.3"
92
92
  },
93
93
  "overrides": {