@titus-system/syncdesk 0.5.1 → 0.5.2

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 (118) hide show
  1. package/dist/api/client.d.ts +7 -0
  2. package/dist/api/client.d.ts.map +1 -0
  3. package/dist/api/client.js +105 -0
  4. package/{src/api/index.ts → dist/api/index.d.ts} +1 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +1 -0
  7. package/dist/api/typings.d.ts +4 -0
  8. package/dist/api/typings.d.ts.map +1 -0
  9. package/dist/api/typings.js +1 -0
  10. package/dist/auth/hooks/useAuth.d.ts +51 -0
  11. package/dist/auth/hooks/useAuth.d.ts.map +1 -0
  12. package/dist/auth/hooks/useAuth.js +127 -0
  13. package/dist/auth/index.d.ts +4 -0
  14. package/dist/auth/index.d.ts.map +1 -0
  15. package/dist/auth/index.js +1 -0
  16. package/dist/auth/types/auth.d.ts +51 -0
  17. package/dist/auth/types/auth.d.ts.map +1 -0
  18. package/dist/auth/types/auth.js +1 -0
  19. package/dist/auth/types/session.d.ts +12 -0
  20. package/dist/auth/types/session.d.ts.map +1 -0
  21. package/dist/auth/types/session.js +1 -0
  22. package/dist/config.d.ts +14 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +10 -0
  25. package/dist/health/hooks/useHealth.d.ts +17 -0
  26. package/dist/health/hooks/useHealth.d.ts.map +1 -0
  27. package/dist/health/hooks/useHealth.js +42 -0
  28. package/dist/health/index.d.ts +3 -0
  29. package/dist/health/index.d.ts.map +1 -0
  30. package/dist/health/types/health.d.ts +10 -0
  31. package/dist/health/types/health.d.ts.map +1 -0
  32. package/dist/health/types/health.js +1 -0
  33. package/{src/index.ts → dist/index.d.ts} +1 -1
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +9 -0
  36. package/dist/live_chat/hooks/useLiveChat.d.ts +37 -0
  37. package/dist/live_chat/hooks/useLiveChat.d.ts.map +1 -0
  38. package/dist/live_chat/hooks/useLiveChat.js +91 -0
  39. package/dist/live_chat/hooks/useLiveChatWebSocket.d.ts +11 -0
  40. package/dist/live_chat/hooks/useLiveChatWebSocket.d.ts.map +1 -0
  41. package/dist/live_chat/hooks/useLiveChatWebSocket.js +68 -0
  42. package/dist/live_chat/index.d.ts +4 -0
  43. package/dist/live_chat/index.d.ts.map +1 -0
  44. package/dist/live_chat/index.js +2 -0
  45. package/dist/live_chat/types/live_chat.d.ts +45 -0
  46. package/dist/live_chat/types/live_chat.d.ts.map +1 -0
  47. package/dist/live_chat/types/live_chat.js +1 -0
  48. package/dist/permissions/hooks/usePermissions.d.ts +71 -0
  49. package/dist/permissions/hooks/usePermissions.d.ts.map +1 -0
  50. package/dist/permissions/hooks/usePermissions.js +147 -0
  51. package/dist/permissions/index.d.ts +3 -0
  52. package/dist/permissions/index.d.ts.map +1 -0
  53. package/dist/permissions/types/index.d.ts +2 -0
  54. package/dist/permissions/types/index.d.ts.map +1 -0
  55. package/dist/permissions/types/permission.d.ts +23 -0
  56. package/dist/permissions/types/permission.d.ts.map +1 -0
  57. package/dist/permissions/types/permission.js +1 -0
  58. package/dist/roles/hooks/useRoles.d.ts +62 -0
  59. package/dist/roles/hooks/useRoles.d.ts.map +1 -0
  60. package/dist/roles/hooks/useRoles.js +138 -0
  61. package/dist/roles/index.d.ts +3 -0
  62. package/dist/roles/index.d.ts.map +1 -0
  63. package/dist/roles/types/index.d.ts +2 -0
  64. package/dist/roles/types/index.d.ts.map +1 -0
  65. package/dist/roles/types/role.d.ts +23 -0
  66. package/dist/roles/types/role.d.ts.map +1 -0
  67. package/dist/roles/types/role.js +1 -0
  68. package/dist/ticket/hooks/useTickets.d.ts +27 -0
  69. package/dist/ticket/hooks/useTickets.d.ts.map +1 -0
  70. package/dist/ticket/hooks/useTickets.js +57 -0
  71. package/dist/ticket/index.d.ts +3 -0
  72. package/dist/ticket/index.d.ts.map +1 -0
  73. package/dist/ticket/types/ticket.d.ts +74 -0
  74. package/dist/ticket/types/ticket.d.ts.map +1 -0
  75. package/dist/ticket/types/ticket.js +1 -0
  76. package/dist/users/hooks/useUsers.d.ts +46 -0
  77. package/dist/users/hooks/useUsers.d.ts.map +1 -0
  78. package/dist/users/hooks/useUsers.js +105 -0
  79. package/dist/users/index.d.ts +3 -0
  80. package/dist/users/index.d.ts.map +1 -0
  81. package/dist/users/index.js +1 -0
  82. package/dist/users/types/user.d.ts +30 -0
  83. package/dist/users/types/user.d.ts.map +1 -0
  84. package/dist/users/types/user.js +1 -0
  85. package/package.json +5 -2
  86. package/.editorconfig +0 -53
  87. package/.github/workflows/notify-main.yml +0 -17
  88. package/CHANGELOG.md +0 -29
  89. package/src/api/client.ts +0 -135
  90. package/src/api/typings.ts +0 -3
  91. package/src/auth/hooks/useAuth.ts +0 -173
  92. package/src/auth/index.ts +0 -12
  93. package/src/auth/types/auth.ts +0 -61
  94. package/src/auth/types/session.ts +0 -12
  95. package/src/config.ts +0 -31
  96. package/src/health/hooks/useHealth.ts +0 -57
  97. package/src/health/types/health.ts +0 -10
  98. package/src/live_chat/hooks/useLiveChat.ts +0 -124
  99. package/src/live_chat/hooks/useLiveChatWebSocket.ts +0 -86
  100. package/src/live_chat/index.ts +0 -15
  101. package/src/live_chat/types/live_chat.ts +0 -48
  102. package/src/permissions/hooks/usePermissions.ts +0 -196
  103. package/src/permissions/types/permission.ts +0 -27
  104. package/src/roles/hooks/useRoles.ts +0 -167
  105. package/src/roles/types/role.ts +0 -28
  106. package/src/ticket/hooks/useTickets.ts +0 -89
  107. package/src/ticket/types/ticket.ts +0 -88
  108. package/src/users/hooks/useUsers.ts +0 -150
  109. package/src/users/index.ts +0 -16
  110. package/src/users/types/user.ts +0 -36
  111. package/tsconfig.json +0 -29
  112. package/tsup.config.ts +0 -12
  113. /package/{src/health/index.ts → dist/health/index.js} +0 -0
  114. /package/{src/permissions/index.ts → dist/permissions/index.js} +0 -0
  115. /package/{src/permissions/types/index.ts → dist/permissions/types/index.js} +0 -0
  116. /package/{src/roles/index.ts → dist/roles/index.js} +0 -0
  117. /package/{src/roles/types/index.ts → dist/roles/types/index.js} +0 -0
  118. /package/{src/ticket/index.ts → dist/ticket/index.js} +0 -0
@@ -0,0 +1,138 @@
1
+ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
2
+ import { apiClient } from "../../api";
3
+ const PATH = "/roles";
4
+ /**
5
+ * List all roles.
6
+ * @returns {UseQueryResult<Role[]>} The query result.
7
+ */
8
+ export function useRoles() {
9
+ return useQuery({
10
+ queryKey: ["roles"],
11
+ queryFn: async () => {
12
+ const response = await apiClient.get(`${PATH}/`);
13
+ return response.data.data;
14
+ },
15
+ });
16
+ }
17
+ /**
18
+ * Get a role by ID.
19
+ * @param {number} id id parameter.
20
+ * @returns {UseQueryResult<Role>} The query result.
21
+ */
22
+ export function useRole(id) {
23
+ return useQuery({
24
+ queryKey: ["roles", id],
25
+ queryFn: async () => {
26
+ const response = await apiClient.get(`${PATH}/${id}`);
27
+ return response.data.data;
28
+ },
29
+ enabled: !!id,
30
+ });
31
+ }
32
+ /**
33
+ * Create a new role.
34
+ * @param {CreateRoleDTO} dto DTO containing details.
35
+ * @returns {UseMutationResult<Role, Error, CreateRoleDTO>} The mutation result.
36
+ */
37
+ export function useCreateRole() {
38
+ const queryClient = useQueryClient();
39
+ return useMutation({
40
+ mutationFn: async (dto) => {
41
+ const response = await apiClient.post(`${PATH}/`, dto);
42
+ return response.data.data;
43
+ },
44
+ onSuccess: () => {
45
+ queryClient.invalidateQueries({ queryKey: ["roles"] });
46
+ },
47
+ });
48
+ }
49
+ /**
50
+ * Replace a role by ID.
51
+ * @param {number} id ID.
52
+ * @param {ReplaceRoleDTO} dto DTO containing details.
53
+ * @returns {UseMutationResult<Role, Error, { id: number; dto: ReplaceRoleDTO }>} The mutation result.
54
+ */
55
+ export function useReplaceRole() {
56
+ const queryClient = useQueryClient();
57
+ return useMutation({
58
+ mutationFn: async ({ id, dto }) => {
59
+ const response = await apiClient.put(`${PATH}/${id}`, dto);
60
+ return response.data.data;
61
+ },
62
+ onSuccess: (_, { id }) => {
63
+ queryClient.invalidateQueries({ queryKey: ["roles"] });
64
+ queryClient.invalidateQueries({ queryKey: ["roles", id] });
65
+ },
66
+ });
67
+ }
68
+ /**
69
+ * Update a role by ID.
70
+ * @param {number} id ID.
71
+ * @param {UpdateRoleDTO} dto DTO containing details.
72
+ * @returns {UseMutationResult<Role, Error, { id: number; dto: UpdateRoleDTO }>} The mutation result.
73
+ */
74
+ export function useUpdateRole() {
75
+ const queryClient = useQueryClient();
76
+ return useMutation({
77
+ mutationFn: async ({ id, dto }) => {
78
+ const response = await apiClient.patch(`${PATH}/${id}`, dto);
79
+ return response.data.data;
80
+ },
81
+ onSuccess: (_, { id }) => {
82
+ queryClient.invalidateQueries({ queryKey: ["roles"] });
83
+ queryClient.invalidateQueries({ queryKey: ["roles", id] });
84
+ },
85
+ });
86
+ }
87
+ /**
88
+ * Delete a role by ID.
89
+ * @param {number} dto DTO containing details.
90
+ * @returns {UseMutationResult<Role, Error, number>} The mutation result.
91
+ */
92
+ export function useDeleteRole() {
93
+ const queryClient = useQueryClient();
94
+ return useMutation({
95
+ mutationFn: async (id) => {
96
+ const response = await apiClient.delete(`${PATH}/${id}`);
97
+ return response.data.data;
98
+ },
99
+ onSuccess: (_, id) => {
100
+ queryClient.invalidateQueries({ queryKey: ["roles"] });
101
+ queryClient.invalidateQueries({ queryKey: ["roles", id] });
102
+ },
103
+ });
104
+ }
105
+ /**
106
+ * Get the permissions for a role by ID.
107
+ * @param {number} id id parameter.
108
+ * @returns {UseQueryResult<Role>} The query result.
109
+ */
110
+ export function useRolePermissions(id) {
111
+ return useQuery({
112
+ queryKey: ["roles", id, "permissions"],
113
+ queryFn: async () => {
114
+ const response = await apiClient.get(`${PATH}/${id}/permissions`);
115
+ return response.data.data;
116
+ },
117
+ enabled: !!id,
118
+ });
119
+ }
120
+ /**
121
+ * Add permissions to a role.
122
+ *
123
+ * @param {number} id ID.
124
+ * @param {AddRolePermissionsDTO} dto DTO containing details.
125
+ * @returns {UseMutationResult<Role, Error, { id: number; dto: AddRolePermissionsDTO }>} The mutation result.
126
+ */
127
+ export function useAddRolePermissions() {
128
+ const queryClient = useQueryClient();
129
+ return useMutation({
130
+ mutationFn: async ({ id, dto }) => {
131
+ const response = await apiClient.post(`${PATH}/${id}/permissions`, dto);
132
+ return response.data.data;
133
+ },
134
+ onSuccess: (_, { id }) => {
135
+ queryClient.invalidateQueries({ queryKey: ["roles", id, "permissions"] });
136
+ },
137
+ });
138
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./hooks/useRoles";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/roles/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./role";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/roles/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ export interface Role {
2
+ id: number;
3
+ name: string;
4
+ description?: string | null;
5
+ permissions?: Permission[];
6
+ }
7
+ export interface CreateRoleDTO {
8
+ name: string;
9
+ description?: string | null;
10
+ }
11
+ export interface ReplaceRoleDTO {
12
+ name: string;
13
+ description?: string | null;
14
+ }
15
+ export interface UpdateRoleDTO {
16
+ name?: string | null;
17
+ description?: string | null;
18
+ }
19
+ export interface AddRolePermissionsDTO {
20
+ ids: number[];
21
+ }
22
+ import type { Permission } from "../../permissions/types/permission";
23
+ //# sourceMappingURL=role.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../../src/roles/types/role.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAGD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { CreateTicketRequest, CreateTicketResponse, TicketResponse, TicketSearchFilters, UpdateTicketStatusRequest, UpdateTicketStatusResponse } from "../types/ticket";
2
+ export declare const TICKET_KEYS: {
3
+ all: readonly ["tickets"];
4
+ list: (filters: TicketSearchFilters) => readonly ["tickets", "list", TicketSearchFilters];
5
+ };
6
+ /**
7
+ * Get all tickets.
8
+ * @param {TicketSearchFilters} filters filters parameter.
9
+ * @returns {UseQueryResult<TicketResponse[]>} The query result.
10
+ */
11
+ export declare const useTickets: (filters?: TicketSearchFilters) => import("@tanstack/react-query").UseQueryResult<TicketResponse[], Error>;
12
+ /**
13
+ * Create a new ticket.
14
+ * @param {CreateTicketRequest} payload The ticket creation details.
15
+ * @returns {UseMutationResult<CreateTicketResponse, Error, CreateTicketRequest>} The mutation result.
16
+ */
17
+ export declare const useCreateTicket: () => import("@tanstack/react-query").UseMutationResult<CreateTicketResponse, Error, CreateTicketRequest, unknown>;
18
+ /**
19
+ * Update a ticket's status.
20
+ * @param {{ ticketId: string; payload: UpdateTicketStatusRequest }} params The ticket ID and status update payload.
21
+ * @returns {UseMutationResult<UpdateTicketStatusResponse, Error, { ticketId: string; payload: UpdateTicketStatusRequest }>} The mutation result.
22
+ */
23
+ export declare const useUpdateTicketStatus: () => import("@tanstack/react-query").UseMutationResult<UpdateTicketStatusResponse, Error, {
24
+ ticketId: string;
25
+ payload: UpdateTicketStatusRequest;
26
+ }, unknown>;
27
+ //# sourceMappingURL=useTickets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTickets.d.ts","sourceRoot":"","sources":["../../../src/ticket/hooks/useTickets.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AAKzB,eAAO,MAAM,WAAW;;oBAEN,mBAAmB;CAEpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,UAAS,mBAAwB,4EAW3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,oHAkB3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;cAQlB,MAAM;aACP,yBAAyB;WAWvC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2
+ import { apiClient } from "../../api";
3
+ const PATH = "/tickets";
4
+ // Query keys
5
+ export const TICKET_KEYS = {
6
+ all: ["tickets"],
7
+ list: (filters) => [...TICKET_KEYS.all, "list", filters],
8
+ };
9
+ /**
10
+ * Get all tickets.
11
+ * @param {TicketSearchFilters} filters filters parameter.
12
+ * @returns {UseQueryResult<TicketResponse[]>} The query result.
13
+ */
14
+ export const useTickets = (filters = {}) => {
15
+ return useQuery({
16
+ queryKey: TICKET_KEYS.list(filters),
17
+ queryFn: async () => {
18
+ const response = await apiClient.get(`${PATH}/`, { params: filters });
19
+ return response.data.data;
20
+ },
21
+ });
22
+ };
23
+ /**
24
+ * Create a new ticket.
25
+ * @param {CreateTicketRequest} payload The ticket creation details.
26
+ * @returns {UseMutationResult<CreateTicketResponse, Error, CreateTicketRequest>} The mutation result.
27
+ */
28
+ export const useCreateTicket = () => {
29
+ const queryClient = useQueryClient();
30
+ return useMutation({
31
+ mutationFn: async (payload) => {
32
+ const response = await apiClient.post(`${PATH}/`, payload);
33
+ return response.data.data;
34
+ },
35
+ onSuccess: () => {
36
+ // Invalidate tickets list queries on success
37
+ queryClient.invalidateQueries({ queryKey: TICKET_KEYS.all });
38
+ },
39
+ });
40
+ };
41
+ /**
42
+ * Update a ticket's status.
43
+ * @param {{ ticketId: string; payload: UpdateTicketStatusRequest }} params The ticket ID and status update payload.
44
+ * @returns {UseMutationResult<UpdateTicketStatusResponse, Error, { ticketId: string; payload: UpdateTicketStatusRequest }>} The mutation result.
45
+ */
46
+ export const useUpdateTicketStatus = () => {
47
+ const queryClient = useQueryClient();
48
+ return useMutation({
49
+ mutationFn: async ({ ticketId, payload, }) => {
50
+ const response = await apiClient.patch(`${PATH}/${ticketId}/status`, payload);
51
+ return response.data.data;
52
+ },
53
+ onSuccess: () => {
54
+ queryClient.invalidateQueries({ queryKey: TICKET_KEYS.all });
55
+ },
56
+ });
57
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./types/ticket";
2
+ export * from "./hooks/useTickets";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ticket/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,74 @@
1
+ export type TicketType = "issue" | "access" | "new_feature";
2
+ export type TicketCriticality = "high" | "medium" | "low";
3
+ export type TicketStatus = "open" | "in_progress" | "waiting_for_provider" | "waiting_for_validation" | "finished";
4
+ export interface CreateTicketRequest {
5
+ triage_id: string;
6
+ type: TicketType;
7
+ criticality: TicketCriticality;
8
+ product: string;
9
+ description: string;
10
+ chat_ids: string[];
11
+ client_id: string;
12
+ }
13
+ export interface CreateTicketResponse {
14
+ id: string;
15
+ status: TicketStatus;
16
+ creation_date: string;
17
+ }
18
+ export interface TicketSearchFilters {
19
+ ticket_id?: string;
20
+ client_id?: string;
21
+ triage_id?: string;
22
+ status?: TicketStatus;
23
+ criticality?: TicketCriticality;
24
+ type?: TicketType;
25
+ product?: string;
26
+ }
27
+ export interface TicketCompanyResponse {
28
+ id: string;
29
+ name: string;
30
+ }
31
+ export interface TicketClientResponse {
32
+ id: string;
33
+ name: string;
34
+ email: string;
35
+ company: TicketCompanyResponse;
36
+ }
37
+ export interface TicketHistoryResponse {
38
+ agent_id: string;
39
+ name: string;
40
+ level: string;
41
+ assignment_date: string;
42
+ exit_date: string;
43
+ transfer_reason: string;
44
+ }
45
+ export interface TicketCommentResponse {
46
+ comment_id: string;
47
+ author: string;
48
+ text: string;
49
+ date: string;
50
+ internal: boolean;
51
+ }
52
+ export interface TicketResponse {
53
+ id: string;
54
+ triage_id: string;
55
+ type: TicketType;
56
+ criticality: TicketCriticality;
57
+ product: string;
58
+ status: TicketStatus;
59
+ creation_date: string;
60
+ description: string;
61
+ chat_ids: string[];
62
+ agent_history: TicketHistoryResponse[];
63
+ client: TicketClientResponse;
64
+ comments: TicketCommentResponse[];
65
+ }
66
+ export interface UpdateTicketStatusRequest {
67
+ status: TicketStatus;
68
+ }
69
+ export interface UpdateTicketStatusResponse {
70
+ id: string;
71
+ previous_status: TicketStatus;
72
+ current_status: TicketStatus;
73
+ }
74
+ //# sourceMappingURL=ticket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/ticket/types/ticket.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC1D,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,aAAa,GACb,sBAAsB,GACtB,wBAAwB,GACxB,UAAU,CAAC;AAEf,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,YAAY,CAAC;IAC9B,cAAc,EAAE,YAAY,CAAC;CAC9B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ import { User, CreateUserDTO, ReplaceUserDTO, UpdateUserDTO, AddUserRolesDTO } from "../types/user";
2
+ /**
3
+ * Get all users.
4
+ * @returns {UseQueryResult<User[]>} The query result.
5
+ */
6
+ export declare const useGetUsers: () => import("@tanstack/react-query").UseQueryResult<User[], Error>;
7
+ /**
8
+ * Get one user.
9
+ * @param {string} id id parameter.
10
+ * @returns {UseQueryResult<User>} The query result.
11
+ */
12
+ export declare const useGetUser: (id: string) => import("@tanstack/react-query").UseQueryResult<User, Error>;
13
+ /**
14
+ * Create a user.
15
+ * @param {CreateUserDTO} user The user creation details.
16
+ * @returns {UseMutationResult<User, Error, CreateUserDTO>} The mutation result.
17
+ */
18
+ export declare const useCreateUser: () => import("@tanstack/react-query").UseMutationResult<User, Error, CreateUserDTO, unknown>;
19
+ /**
20
+ * Replace an entire user.
21
+ * @param {{ id: string; data: ReplaceUserDTO }} params The ID and user replacement data.
22
+ * @returns {UseMutationResult<User, Error, { id: string; data: ReplaceUserDTO }>} The mutation result.
23
+ */
24
+ export declare const useUpdateUser: () => import("@tanstack/react-query").UseMutationResult<User, Error, {
25
+ id: string;
26
+ data: ReplaceUserDTO;
27
+ }, unknown>;
28
+ /**
29
+ * Update specific fields of a user.
30
+ * @param {{ id: string; data: UpdateUserDTO }} params The ID and user update data.
31
+ * @returns {UseMutationResult<User, Error, { id: string; data: UpdateUserDTO }>} The mutation result.
32
+ */
33
+ export declare const usePatchUser: () => import("@tanstack/react-query").UseMutationResult<User, Error, {
34
+ id: string;
35
+ data: UpdateUserDTO;
36
+ }, unknown>;
37
+ /**
38
+ * Add roles to a user.
39
+ * @param {{ id: string; data: AddUserRolesDTO }} params The ID and user roles data.
40
+ * @returns {UseMutationResult<User, Error, { id: string; data: AddUserRolesDTO }>} The mutation result.
41
+ */
42
+ export declare const useAddUserRoles: () => import("@tanstack/react-query").UseMutationResult<User, Error, {
43
+ id: string;
44
+ data: AddUserRolesDTO;
45
+ }, unknown>;
46
+ //# sourceMappingURL=useUsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUsers.d.ts","sourceRoot":"","sources":["../../../src/users/hooks/useUsers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,IAAI,EACJ,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,eAAe,CAAC;AAIvB;;;GAGG;AACH,eAAO,MAAM,WAAW,qEAUvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,gEASpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,8FAazB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa;QAQhB,MAAM;UACJ,cAAc;WAazB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY;QAQf,MAAM;UACJ,aAAa;WAaxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe;QAQlB,MAAM;UACJ,eAAe;WAa1B,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
2
+ import { apiClient } from "../../api";
3
+ const PATH = "/users";
4
+ /**
5
+ * Get all users.
6
+ * @returns {UseQueryResult<User[]>} The query result.
7
+ */
8
+ export const useGetUsers = () => {
9
+ return useQuery({
10
+ queryKey: ["users"],
11
+ queryFn: async () => {
12
+ const response = await apiClient.get(PATH);
13
+ return response.data.data;
14
+ },
15
+ // staleTime: // ms
16
+ // gcTime: , //
17
+ });
18
+ };
19
+ /**
20
+ * Get one user.
21
+ * @param {string} id id parameter.
22
+ * @returns {UseQueryResult<User>} The query result.
23
+ */
24
+ export const useGetUser = (id) => {
25
+ return useQuery({
26
+ queryKey: ["users", id],
27
+ queryFn: async () => {
28
+ const response = await apiClient.get(`${PATH}/${id}`);
29
+ return response.data.data;
30
+ },
31
+ enabled: !!id, // Prevent the query from running if the ID is missing
32
+ });
33
+ };
34
+ /**
35
+ * Create a user.
36
+ * @param {CreateUserDTO} user The user creation details.
37
+ * @returns {UseMutationResult<User, Error, CreateUserDTO>} The mutation result.
38
+ */
39
+ export const useCreateUser = () => {
40
+ const queryClient = useQueryClient();
41
+ return useMutation({
42
+ mutationFn: async (user) => {
43
+ const response = await apiClient.post(PATH, user);
44
+ return response.data.data;
45
+ },
46
+ // Tell React Query to refresh the 'users' list after a successful creation.
47
+ onSuccess: () => {
48
+ queryClient.invalidateQueries({ queryKey: ["users"] });
49
+ },
50
+ });
51
+ };
52
+ /**
53
+ * Replace an entire user.
54
+ * @param {{ id: string; data: ReplaceUserDTO }} params The ID and user replacement data.
55
+ * @returns {UseMutationResult<User, Error, { id: string; data: ReplaceUserDTO }>} The mutation result.
56
+ */
57
+ export const useUpdateUser = () => {
58
+ const queryClient = useQueryClient();
59
+ return useMutation({
60
+ mutationFn: async ({ id, data, }) => {
61
+ const response = await apiClient.put(`${PATH}/${id}`, data);
62
+ return response.data.data;
63
+ },
64
+ onSuccess: (_, variables) => {
65
+ queryClient.invalidateQueries({ queryKey: ["users"] });
66
+ queryClient.invalidateQueries({ queryKey: ["users", variables.id] });
67
+ },
68
+ });
69
+ };
70
+ /**
71
+ * Update specific fields of a user.
72
+ * @param {{ id: string; data: UpdateUserDTO }} params The ID and user update data.
73
+ * @returns {UseMutationResult<User, Error, { id: string; data: UpdateUserDTO }>} The mutation result.
74
+ */
75
+ export const usePatchUser = () => {
76
+ const queryClient = useQueryClient();
77
+ return useMutation({
78
+ mutationFn: async ({ id, data, }) => {
79
+ const response = await apiClient.patch(`${PATH}/${id}`, data);
80
+ return response.data.data;
81
+ },
82
+ onSuccess: (_, variables) => {
83
+ queryClient.invalidateQueries({ queryKey: ["users"] });
84
+ queryClient.invalidateQueries({ queryKey: ["users", variables.id] });
85
+ },
86
+ });
87
+ };
88
+ /**
89
+ * Add roles to a user.
90
+ * @param {{ id: string; data: AddUserRolesDTO }} params The ID and user roles data.
91
+ * @returns {UseMutationResult<User, Error, { id: string; data: AddUserRolesDTO }>} The mutation result.
92
+ */
93
+ export const useAddUserRoles = () => {
94
+ const queryClient = useQueryClient();
95
+ return useMutation({
96
+ mutationFn: async ({ id, data, }) => {
97
+ const response = await apiClient.post(`${PATH}/${id}/roles`, data);
98
+ return response.data.data;
99
+ },
100
+ onSuccess: (_, variables) => {
101
+ queryClient.invalidateQueries({ queryKey: ["users"] });
102
+ queryClient.invalidateQueries({ queryKey: ["users", variables.id] });
103
+ },
104
+ });
105
+ };
@@ -0,0 +1,3 @@
1
+ export { useGetUsers, useGetUser, useCreateUser, useUpdateUser, usePatchUser, useAddUserRoles, } from "./hooks/useUsers";
2
+ export type { User, CreateUserDTO, UpdateUserDTO, ReplaceUserDTO, AddUserRolesDTO, } from "./types/user";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,IAAI,EACJ,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ export { useGetUsers, useGetUser, useCreateUser, useUpdateUser, usePatchUser, useAddUserRoles, } from "./hooks/useUsers";
@@ -0,0 +1,30 @@
1
+ import { OAuthProvider } from "../../auth/types/auth";
2
+ export interface User {
3
+ id: string;
4
+ email: string;
5
+ username?: string | null;
6
+ name?: string | null;
7
+ oauth_provider?: OAuthProvider | null;
8
+ oauth_provider_id?: string | null;
9
+ is_active: boolean;
10
+ is_verified: boolean;
11
+ roles?: Role[];
12
+ }
13
+ import type { Role } from "../../roles/types/role";
14
+ export interface CreateUserDTO {
15
+ email: string;
16
+ password_hash?: string | null;
17
+ username?: string | null;
18
+ name?: string | null;
19
+ oauth_provider?: OAuthProvider | null;
20
+ oauth_provider_id?: string | null;
21
+ is_active?: boolean;
22
+ is_verified?: boolean;
23
+ role_ids?: number[];
24
+ }
25
+ export type UpdateUserDTO = Partial<CreateUserDTO>;
26
+ export type ReplaceUserDTO = CreateUserDTO;
27
+ export interface AddUserRolesDTO {
28
+ role_ids: number[];
29
+ }
30
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/users/types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@titus-system/syncdesk",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",
@@ -41,5 +41,8 @@
41
41
  "react": "^19.2.4",
42
42
  "react-dom": "^19.2.4",
43
43
  "typescript": "^6.0.2"
44
- }
44
+ },
45
+ "files": [
46
+ "dist"
47
+ ]
45
48
  }
package/.editorconfig DELETED
@@ -1,53 +0,0 @@
1
- # EditorConfig is awesome: http://EditorConfig.org
2
- # 1st version comes from a Gist by @avandrevitor [here](https://gist.github.com/avandrevitor/b917770334af3a43cf8c489f93287a84)
3
- #
4
- # Extended version is available in [WesleyGoncalves' GitHub Gist](https://gist.githubusercontent.com/WesleyGoncalves/ae64d95f663a15d8df455d1f0e5f7687)
5
- #
6
- # Be aware that:
7
- # > Comments should go in individual lines, **we are not sure whether appending comments may cause issues**.
8
- # Emphasis added. [link](https://github.com/editorconfig/editorconfig/wiki/Syntax)
9
- #
10
- #
11
- # You can download this file
12
- # directly to your project from the command-line
13
- # curl -O https://gist.githubusercontent.com/WesleyGoncalves/ae64d95f663a15d8df455d1f0e5f7687/raw/.editorconfig
14
-
15
- # top-most EditorConfig file
16
- root = true
17
-
18
- # All PHP files MUST use the Unix LF (linefeed) line ending.
19
- # Code MUST use an indent of 4 spaces, and MUST NOT use tabs for indenting.
20
- # All PHP files MUST end with a single blank line.
21
- # There MUST NOT be trailing whitespace at the end of non-blank lines.
22
- [*]
23
- charset = utf-8
24
- end_of_line = lf
25
- insert_final_newline = true
26
- trim_trailing_whitespace = true
27
-
28
- # PHP-Files | Python | Java
29
- [*.{php,py,java}]
30
- indent_style = space
31
- indent_size = 4
32
-
33
- [composer.json,docker-compose.yml]
34
- indent_style = space
35
- indent_size = 4
36
-
37
- # **NOT IMPLEMENTED BY editorConfig** PHP-Files. See [this for further information](https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties#ideas-for-domain-specific-properties)
38
- [*.php]
39
- curly_bracket_next_line = true
40
- indent_brace_style = K&R
41
- spaces_around_operators = true
42
- # block_comment_start = '/*'
43
- # block_comment_end = '*/'
44
- # line_comment = '//'
45
-
46
- # BLADE-Files | MD | HTML | LESS | SASS | CSS | JS | JSX | TS | TSX | JSON | ReST | YAML | TXT
47
- [*.{blade.php,md,html,less,sass,scss,css,js{x,},ts{x,},json,rst,y{a,}ml,txt}]
48
- indent_style = space
49
- indent_size = 2
50
-
51
- [{package.json}]
52
- indent_style = space
53
- indent_size = 2
@@ -1,17 +0,0 @@
1
- name: Notify Main Repo
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
-
8
- jobs:
9
- dispatch:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - name: Repository Dispatch
13
- uses: peter-evans/repository-dispatch@v3
14
- with:
15
- token: ${{ secrets.PAT_TOKEN }}
16
- repository: Titus-System/SyncDesk
17
- event-type: submodule_update