@sudobility/wildduck_client 0.0.14

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 (254) hide show
  1. package/README.md +354 -0
  2. package/dist/hooks/ServiceProvider.d.ts +15 -0
  3. package/dist/hooks/ServiceProvider.d.ts.map +1 -0
  4. package/dist/hooks/ServiceProvider.js +21 -0
  5. package/dist/hooks/ServiceProvider.js.map +1 -0
  6. package/dist/hooks/addresses/index.d.ts +2 -0
  7. package/dist/hooks/addresses/index.d.ts.map +1 -0
  8. package/dist/hooks/addresses/index.js +2 -0
  9. package/dist/hooks/addresses/index.js.map +1 -0
  10. package/dist/hooks/addresses/useWildduckGetAddresses.d.ts +232 -0
  11. package/dist/hooks/addresses/useWildduckGetAddresses.d.ts.map +1 -0
  12. package/dist/hooks/addresses/useWildduckGetAddresses.js +34 -0
  13. package/dist/hooks/addresses/useWildduckGetAddresses.js.map +1 -0
  14. package/dist/hooks/autoreply/index.d.ts +4 -0
  15. package/dist/hooks/autoreply/index.d.ts.map +1 -0
  16. package/dist/hooks/autoreply/index.js +4 -0
  17. package/dist/hooks/autoreply/index.js.map +1 -0
  18. package/dist/hooks/autoreply/useWildduckDeleteAutoreply.d.ts +13 -0
  19. package/dist/hooks/autoreply/useWildduckDeleteAutoreply.d.ts.map +1 -0
  20. package/dist/hooks/autoreply/useWildduckDeleteAutoreply.js +46 -0
  21. package/dist/hooks/autoreply/useWildduckDeleteAutoreply.js.map +1 -0
  22. package/dist/hooks/autoreply/useWildduckGetAutoreply.d.ts +172 -0
  23. package/dist/hooks/autoreply/useWildduckGetAutoreply.d.ts.map +1 -0
  24. package/dist/hooks/autoreply/useWildduckGetAutoreply.js +39 -0
  25. package/dist/hooks/autoreply/useWildduckGetAutoreply.js.map +1 -0
  26. package/dist/hooks/autoreply/useWildduckUpdateAutoreply.d.ts +13 -0
  27. package/dist/hooks/autoreply/useWildduckUpdateAutoreply.d.ts.map +1 -0
  28. package/dist/hooks/autoreply/useWildduckUpdateAutoreply.js +46 -0
  29. package/dist/hooks/autoreply/useWildduckUpdateAutoreply.js.map +1 -0
  30. package/dist/hooks/index.d.ts +19 -0
  31. package/dist/hooks/index.d.ts.map +1 -0
  32. package/dist/hooks/index.js +16 -0
  33. package/dist/hooks/index.js.map +1 -0
  34. package/dist/hooks/mailboxes/index.d.ts +6 -0
  35. package/dist/hooks/mailboxes/index.d.ts.map +1 -0
  36. package/dist/hooks/mailboxes/index.js +6 -0
  37. package/dist/hooks/mailboxes/index.js.map +1 -0
  38. package/dist/hooks/mailboxes/useWildduckCreateMailbox.d.ts +13 -0
  39. package/dist/hooks/mailboxes/useWildduckCreateMailbox.d.ts.map +1 -0
  40. package/dist/hooks/mailboxes/useWildduckCreateMailbox.js +43 -0
  41. package/dist/hooks/mailboxes/useWildduckCreateMailbox.js.map +1 -0
  42. package/dist/hooks/mailboxes/useWildduckDeleteMailbox.d.ts +13 -0
  43. package/dist/hooks/mailboxes/useWildduckDeleteMailbox.d.ts.map +1 -0
  44. package/dist/hooks/mailboxes/useWildduckDeleteMailbox.js +48 -0
  45. package/dist/hooks/mailboxes/useWildduckDeleteMailbox.js.map +1 -0
  46. package/dist/hooks/mailboxes/useWildduckGetMailbox.d.ts +173 -0
  47. package/dist/hooks/mailboxes/useWildduckGetMailbox.d.ts.map +1 -0
  48. package/dist/hooks/mailboxes/useWildduckGetMailbox.js +47 -0
  49. package/dist/hooks/mailboxes/useWildduckGetMailbox.js.map +1 -0
  50. package/dist/hooks/mailboxes/useWildduckGetMailboxes.d.ts +233 -0
  51. package/dist/hooks/mailboxes/useWildduckGetMailboxes.d.ts.map +1 -0
  52. package/dist/hooks/mailboxes/useWildduckGetMailboxes.js +34 -0
  53. package/dist/hooks/mailboxes/useWildduckGetMailboxes.js.map +1 -0
  54. package/dist/hooks/mailboxes/useWildduckUpdateMailbox.d.ts +13 -0
  55. package/dist/hooks/mailboxes/useWildduckUpdateMailbox.d.ts.map +1 -0
  56. package/dist/hooks/mailboxes/useWildduckUpdateMailbox.js +48 -0
  57. package/dist/hooks/mailboxes/useWildduckUpdateMailbox.js.map +1 -0
  58. package/dist/hooks/messages/index.d.ts +12 -0
  59. package/dist/hooks/messages/index.d.ts.map +1 -0
  60. package/dist/hooks/messages/index.js +12 -0
  61. package/dist/hooks/messages/index.js.map +1 -0
  62. package/dist/hooks/messages/useWildduckDeleteMessage.d.ts +13 -0
  63. package/dist/hooks/messages/useWildduckDeleteMessage.d.ts.map +1 -0
  64. package/dist/hooks/messages/useWildduckDeleteMessage.js +48 -0
  65. package/dist/hooks/messages/useWildduckDeleteMessage.js.map +1 -0
  66. package/dist/hooks/messages/useWildduckForwardMessage.d.ts +13 -0
  67. package/dist/hooks/messages/useWildduckForwardMessage.d.ts.map +1 -0
  68. package/dist/hooks/messages/useWildduckForwardMessage.js +51 -0
  69. package/dist/hooks/messages/useWildduckForwardMessage.js.map +1 -0
  70. package/dist/hooks/messages/useWildduckGetMessage.d.ts +653 -0
  71. package/dist/hooks/messages/useWildduckGetMessage.d.ts.map +1 -0
  72. package/dist/hooks/messages/useWildduckGetMessage.js +37 -0
  73. package/dist/hooks/messages/useWildduckGetMessage.js.map +1 -0
  74. package/dist/hooks/messages/useWildduckGetMessageAttachment.d.ts +13 -0
  75. package/dist/hooks/messages/useWildduckGetMessageAttachment.d.ts.map +1 -0
  76. package/dist/hooks/messages/useWildduckGetMessageAttachment.js +40 -0
  77. package/dist/hooks/messages/useWildduckGetMessageAttachment.js.map +1 -0
  78. package/dist/hooks/messages/useWildduckGetMessageSource.d.ts +12 -0
  79. package/dist/hooks/messages/useWildduckGetMessageSource.d.ts.map +1 -0
  80. package/dist/hooks/messages/useWildduckGetMessageSource.js +35 -0
  81. package/dist/hooks/messages/useWildduckGetMessageSource.js.map +1 -0
  82. package/dist/hooks/messages/useWildduckGetMessages.d.ts +11 -0
  83. package/dist/hooks/messages/useWildduckGetMessages.d.ts.map +1 -0
  84. package/dist/hooks/messages/useWildduckGetMessages.js +18 -0
  85. package/dist/hooks/messages/useWildduckGetMessages.js.map +1 -0
  86. package/dist/hooks/messages/useWildduckSearchMessages.d.ts +12 -0
  87. package/dist/hooks/messages/useWildduckSearchMessages.d.ts.map +1 -0
  88. package/dist/hooks/messages/useWildduckSearchMessages.js +46 -0
  89. package/dist/hooks/messages/useWildduckSearchMessages.js.map +1 -0
  90. package/dist/hooks/messages/useWildduckSendMessage.d.ts +13 -0
  91. package/dist/hooks/messages/useWildduckSendMessage.d.ts.map +1 -0
  92. package/dist/hooks/messages/useWildduckSendMessage.js +48 -0
  93. package/dist/hooks/messages/useWildduckSendMessage.js.map +1 -0
  94. package/dist/hooks/messages/useWildduckSubmitDraft.d.ts +13 -0
  95. package/dist/hooks/messages/useWildduckSubmitDraft.d.ts.map +1 -0
  96. package/dist/hooks/messages/useWildduckSubmitDraft.js +44 -0
  97. package/dist/hooks/messages/useWildduckSubmitDraft.js.map +1 -0
  98. package/dist/hooks/messages/useWildduckUpdateMessage.d.ts +13 -0
  99. package/dist/hooks/messages/useWildduckUpdateMessage.d.ts.map +1 -0
  100. package/dist/hooks/messages/useWildduckUpdateMessage.js +53 -0
  101. package/dist/hooks/messages/useWildduckUpdateMessage.js.map +1 -0
  102. package/dist/hooks/messages/useWildduckUploadMessage.d.ts +13 -0
  103. package/dist/hooks/messages/useWildduckUploadMessage.d.ts.map +1 -0
  104. package/dist/hooks/messages/useWildduckUploadMessage.js +51 -0
  105. package/dist/hooks/messages/useWildduckUploadMessage.js.map +1 -0
  106. package/dist/hooks/mocks.d.ts +354 -0
  107. package/dist/hooks/mocks.d.ts.map +1 -0
  108. package/dist/hooks/mocks.js +404 -0
  109. package/dist/hooks/mocks.js.map +1 -0
  110. package/dist/hooks/query-config.d.ts +9 -0
  111. package/dist/hooks/query-config.d.ts.map +1 -0
  112. package/dist/hooks/query-config.js +9 -0
  113. package/dist/hooks/query-config.js.map +1 -0
  114. package/dist/hooks/query-keys.d.ts +31 -0
  115. package/dist/hooks/query-keys.d.ts.map +1 -0
  116. package/dist/hooks/query-keys.js +40 -0
  117. package/dist/hooks/query-keys.js.map +1 -0
  118. package/dist/hooks/useServices.d.ts +14 -0
  119. package/dist/hooks/useServices.d.ts.map +1 -0
  120. package/dist/hooks/useServices.js +36 -0
  121. package/dist/hooks/useServices.js.map +1 -0
  122. package/dist/hooks/useWildduckAddresses.d.ts +67 -0
  123. package/dist/hooks/useWildduckAddresses.d.ts.map +1 -0
  124. package/dist/hooks/useWildduckAddresses.js +313 -0
  125. package/dist/hooks/useWildduckAddresses.js.map +1 -0
  126. package/dist/hooks/useWildduckAuth.d.ts +28 -0
  127. package/dist/hooks/useWildduckAuth.d.ts.map +1 -0
  128. package/dist/hooks/useWildduckAuth.js +249 -0
  129. package/dist/hooks/useWildduckAuth.js.map +1 -0
  130. package/dist/hooks/useWildduckFilters.d.ts +89 -0
  131. package/dist/hooks/useWildduckFilters.d.ts.map +1 -0
  132. package/dist/hooks/useWildduckFilters.js +209 -0
  133. package/dist/hooks/useWildduckFilters.js.map +1 -0
  134. package/dist/hooks/useWildduckHealth.d.ts +45 -0
  135. package/dist/hooks/useWildduckHealth.d.ts.map +1 -0
  136. package/dist/hooks/useWildduckHealth.js +110 -0
  137. package/dist/hooks/useWildduckHealth.js.map +1 -0
  138. package/dist/hooks/useWildduckMailboxes.d.ts +29 -0
  139. package/dist/hooks/useWildduckMailboxes.d.ts.map +1 -0
  140. package/dist/hooks/useWildduckMailboxes.js +195 -0
  141. package/dist/hooks/useWildduckMailboxes.js.map +1 -0
  142. package/dist/hooks/useWildduckMessages.d.ts +76 -0
  143. package/dist/hooks/useWildduckMessages.d.ts.map +1 -0
  144. package/dist/hooks/useWildduckMessages.js +264 -0
  145. package/dist/hooks/useWildduckMessages.js.map +1 -0
  146. package/dist/hooks/useWildduckQueries.d.ts +50 -0
  147. package/dist/hooks/useWildduckQueries.d.ts.map +1 -0
  148. package/dist/hooks/useWildduckQueries.js +640 -0
  149. package/dist/hooks/useWildduckQueries.js.map +1 -0
  150. package/dist/hooks/useWildduckSettings.d.ts +22 -0
  151. package/dist/hooks/useWildduckSettings.d.ts.map +1 -0
  152. package/dist/hooks/useWildduckSettings.js +153 -0
  153. package/dist/hooks/useWildduckSettings.js.map +1 -0
  154. package/dist/hooks/useWildduckUsers.d.ts +31 -0
  155. package/dist/hooks/useWildduckUsers.d.ts.map +1 -0
  156. package/dist/hooks/useWildduckUsers.js +114 -0
  157. package/dist/hooks/useWildduckUsers.js.map +1 -0
  158. package/dist/hooks/users/index.d.ts +12 -0
  159. package/dist/hooks/users/index.d.ts.map +1 -0
  160. package/dist/hooks/users/index.js +12 -0
  161. package/dist/hooks/users/index.js.map +1 -0
  162. package/dist/hooks/users/useWildduckCreateUser.d.ts +13 -0
  163. package/dist/hooks/users/useWildduckCreateUser.d.ts.map +1 -0
  164. package/dist/hooks/users/useWildduckCreateUser.js +44 -0
  165. package/dist/hooks/users/useWildduckCreateUser.js.map +1 -0
  166. package/dist/hooks/users/useWildduckDeleteUser.d.ts +13 -0
  167. package/dist/hooks/users/useWildduckDeleteUser.d.ts.map +1 -0
  168. package/dist/hooks/users/useWildduckDeleteUser.js +44 -0
  169. package/dist/hooks/users/useWildduckDeleteUser.js.map +1 -0
  170. package/dist/hooks/users/useWildduckGetUser.d.ts +397 -0
  171. package/dist/hooks/users/useWildduckGetUser.d.ts.map +1 -0
  172. package/dist/hooks/users/useWildduckGetUser.js +45 -0
  173. package/dist/hooks/users/useWildduckGetUser.js.map +1 -0
  174. package/dist/hooks/users/useWildduckUpdateUser.d.ts +13 -0
  175. package/dist/hooks/users/useWildduckUpdateUser.d.ts.map +1 -0
  176. package/dist/hooks/users/useWildduckUpdateUser.js +44 -0
  177. package/dist/hooks/users/useWildduckUpdateUser.js.map +1 -0
  178. package/dist/hooks/users/useWildduckUser2FA.d.ts +25 -0
  179. package/dist/hooks/users/useWildduckUser2FA.d.ts.map +1 -0
  180. package/dist/hooks/users/useWildduckUser2FA.js +70 -0
  181. package/dist/hooks/users/useWildduckUser2FA.js.map +1 -0
  182. package/dist/hooks/users/useWildduckUserEncryption.d.ts +40 -0
  183. package/dist/hooks/users/useWildduckUserEncryption.d.ts.map +1 -0
  184. package/dist/hooks/users/useWildduckUserEncryption.js +94 -0
  185. package/dist/hooks/users/useWildduckUserEncryption.js.map +1 -0
  186. package/dist/hooks/users/useWildduckUserForwarding.d.ts +44 -0
  187. package/dist/hooks/users/useWildduckUserForwarding.d.ts.map +1 -0
  188. package/dist/hooks/users/useWildduckUserForwarding.js +122 -0
  189. package/dist/hooks/users/useWildduckUserForwarding.js.map +1 -0
  190. package/dist/hooks/users/useWildduckUserLimits.d.ts +63 -0
  191. package/dist/hooks/users/useWildduckUserLimits.d.ts.map +1 -0
  192. package/dist/hooks/users/useWildduckUserLimits.js +60 -0
  193. package/dist/hooks/users/useWildduckUserLimits.js.map +1 -0
  194. package/dist/hooks/users/useWildduckUserProfile.d.ts +78 -0
  195. package/dist/hooks/users/useWildduckUserProfile.d.ts.map +1 -0
  196. package/dist/hooks/users/useWildduckUserProfile.js +139 -0
  197. package/dist/hooks/users/useWildduckUserProfile.js.map +1 -0
  198. package/dist/hooks/users/useWildduckUserQuota.d.ts +31 -0
  199. package/dist/hooks/users/useWildduckUserQuota.d.ts.map +1 -0
  200. package/dist/hooks/users/useWildduckUserQuota.js +66 -0
  201. package/dist/hooks/users/useWildduckUserQuota.js.map +1 -0
  202. package/dist/hooks/users/useWildduckUserSpam.d.ts +54 -0
  203. package/dist/hooks/users/useWildduckUserSpam.d.ts.map +1 -0
  204. package/dist/hooks/users/useWildduckUserSpam.js +137 -0
  205. package/dist/hooks/users/useWildduckUserSpam.js.map +1 -0
  206. package/dist/index.d.ts +7 -0
  207. package/dist/index.d.ts.map +1 -0
  208. package/dist/index.js +7 -0
  209. package/dist/index.js.map +1 -0
  210. package/dist/network/index.d.ts +2 -0
  211. package/dist/network/index.d.ts.map +1 -0
  212. package/dist/network/index.js +2 -0
  213. package/dist/network/index.js.map +1 -0
  214. package/dist/network/wildduck-client.d.ts +54 -0
  215. package/dist/network/wildduck-client.d.ts.map +1 -0
  216. package/dist/network/wildduck-client.js +572 -0
  217. package/dist/network/wildduck-client.js.map +1 -0
  218. package/dist/types/index.d.ts +2 -0
  219. package/dist/types/index.d.ts.map +1 -0
  220. package/dist/types/index.js +2 -0
  221. package/dist/types/index.js.map +1 -0
  222. package/dist/utils/advanced-settings.d.ts +36 -0
  223. package/dist/utils/advanced-settings.d.ts.map +1 -0
  224. package/dist/utils/advanced-settings.js +99 -0
  225. package/dist/utils/advanced-settings.js.map +1 -0
  226. package/dist/utils/autoreply.d.ts +34 -0
  227. package/dist/utils/autoreply.d.ts.map +1 -0
  228. package/dist/utils/autoreply.js +39 -0
  229. package/dist/utils/autoreply.js.map +1 -0
  230. package/dist/utils/client.d.ts +4 -0
  231. package/dist/utils/client.d.ts.map +1 -0
  232. package/dist/utils/client.js +11 -0
  233. package/dist/utils/client.js.map +1 -0
  234. package/dist/utils/filters.d.ts +26 -0
  235. package/dist/utils/filters.d.ts.map +1 -0
  236. package/dist/utils/filters.js +50 -0
  237. package/dist/utils/filters.js.map +1 -0
  238. package/dist/utils/forwarding.d.ts +12 -0
  239. package/dist/utils/forwarding.d.ts.map +1 -0
  240. package/dist/utils/forwarding.js +29 -0
  241. package/dist/utils/forwarding.js.map +1 -0
  242. package/dist/utils/index.d.ts +7 -0
  243. package/dist/utils/index.d.ts.map +1 -0
  244. package/dist/utils/index.js +7 -0
  245. package/dist/utils/index.js.map +1 -0
  246. package/dist/utils/spam-settings.d.ts +21 -0
  247. package/dist/utils/spam-settings.d.ts.map +1 -0
  248. package/dist/utils/spam-settings.js +53 -0
  249. package/dist/utils/spam-settings.js.map +1 -0
  250. package/dist/utils/user-settings.d.ts +30 -0
  251. package/dist/utils/user-settings.d.ts.map +1 -0
  252. package/dist/utils/user-settings.js +21 -0
  253. package/dist/utils/user-settings.js.map +1 -0
  254. package/package.json +82 -0
@@ -0,0 +1,313 @@
1
+ import { useCallback, useMemo, useState } from "react";
2
+ import axios from "axios";
3
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
4
+ import { WildduckMockData } from "./mocks";
5
+ const useWildduckAddresses = (config, devMode = false) => {
6
+ const queryClient = useQueryClient();
7
+ const [addresses, setAddresses] = useState([]);
8
+ const buildHeaders = () => {
9
+ const headers = {
10
+ "Content-Type": "application/json",
11
+ Accept: "application/json",
12
+ };
13
+ if (config.cloudflareWorkerUrl) {
14
+ headers["Authorization"] = `Bearer ${config.apiToken}`;
15
+ headers["X-App-Source"] = "0xmail-box";
16
+ }
17
+ else {
18
+ headers["X-Access-Token"] = config.apiToken;
19
+ }
20
+ return headers;
21
+ };
22
+ const getUserAddresses = useCallback(async (userId) => {
23
+ try {
24
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
25
+ const headers = buildHeaders();
26
+ const response = await axios.get(`${apiUrl}/users/${userId}/addresses`, {
27
+ headers,
28
+ });
29
+ const addressData = response.data;
30
+ const addressList = addressData.results?.map((addr) => ({
31
+ id: addr.id,
32
+ address: addr.address,
33
+ name: addr.address,
34
+ main: addr.main,
35
+ created: new Date().toISOString(),
36
+ tags: [],
37
+ })) || [];
38
+ setAddresses(addressList);
39
+ queryClient.setQueryData(["wildduck-addresses", userId], addressList);
40
+ return addressList;
41
+ }
42
+ catch (err) {
43
+ const errorMessage = err instanceof Error ? err.message : "Failed to get addresses";
44
+ if (devMode) {
45
+ console.warn("[DevMode] Get user addresses failed, returning mock data:", errorMessage);
46
+ const mockData = WildduckMockData.getUserAddresses();
47
+ const mockAddresses = mockData.data.addresses;
48
+ setAddresses(mockAddresses);
49
+ queryClient.setQueryData(["wildduck-addresses", userId], mockAddresses);
50
+ return mockAddresses;
51
+ }
52
+ setAddresses([]);
53
+ throw new Error(errorMessage);
54
+ }
55
+ }, [
56
+ config.cloudflareWorkerUrl,
57
+ config.backendUrl,
58
+ buildHeaders,
59
+ devMode,
60
+ queryClient,
61
+ ]);
62
+ const getForwardedAddresses = async () => {
63
+ try {
64
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
65
+ const headers = buildHeaders();
66
+ const response = await axios.get(`${apiUrl}/addresses/forwarded`, {
67
+ headers,
68
+ });
69
+ return response.data.results || [];
70
+ }
71
+ catch (err) {
72
+ const errorMessage = err instanceof Error
73
+ ? err.message
74
+ : "Failed to get forwarded addresses";
75
+ if (devMode) {
76
+ console.warn("[DevMode] Get forwarded addresses failed, returning mock data:", errorMessage);
77
+ const mockData = WildduckMockData.getForwardedAddresses();
78
+ return mockData.data.addresses;
79
+ }
80
+ throw new Error(errorMessage);
81
+ }
82
+ };
83
+ const resolveAddress = async (address) => {
84
+ try {
85
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
86
+ const headers = buildHeaders();
87
+ const response = await axios.get(`${apiUrl}/addresses/resolve/${encodeURIComponent(address)}`, { headers });
88
+ return response.data;
89
+ }
90
+ catch (err) {
91
+ const errorMessage = err instanceof Error ? err.message : "Failed to resolve address";
92
+ if (devMode) {
93
+ console.warn("[DevMode] Resolve address failed, returning mock success:", errorMessage);
94
+ return WildduckMockData.getResolveAddress(address);
95
+ }
96
+ throw new Error(errorMessage);
97
+ }
98
+ };
99
+ const createMutation = useMutation({
100
+ mutationKey: [
101
+ "wildduck-create-address",
102
+ config.cloudflareWorkerUrl || config.backendUrl,
103
+ ],
104
+ mutationFn: async ({ userId, params, }) => {
105
+ try {
106
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
107
+ const headers = buildHeaders();
108
+ const response = await axios.post(`${apiUrl}/users/${userId}/addresses`, params, { headers });
109
+ return response.data;
110
+ }
111
+ catch (err) {
112
+ const errorMessage = err instanceof Error ? err.message : "Failed to create address";
113
+ if (devMode) {
114
+ console.warn("[DevMode] Create address failed, returning mock success:", errorMessage);
115
+ return WildduckMockData.getCreateAddress();
116
+ }
117
+ throw new Error(errorMessage);
118
+ }
119
+ },
120
+ onSuccess: (_, variables) => {
121
+ queryClient.invalidateQueries({
122
+ queryKey: ["wildduck-addresses", variables.userId],
123
+ });
124
+ },
125
+ });
126
+ const updateMutation = useMutation({
127
+ mutationKey: [
128
+ "wildduck-update-address",
129
+ config.cloudflareWorkerUrl || config.backendUrl,
130
+ ],
131
+ mutationFn: async ({ userId, addressId, params, }) => {
132
+ try {
133
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
134
+ const headers = buildHeaders();
135
+ const response = await axios.put(`${apiUrl}/users/${userId}/addresses/${addressId}`, params, { headers });
136
+ return response.data;
137
+ }
138
+ catch (err) {
139
+ const errorMessage = err instanceof Error ? err.message : "Failed to update address";
140
+ if (devMode) {
141
+ console.warn("[DevMode] Update address failed, returning mock success:", errorMessage);
142
+ return WildduckMockData.getUpdateAddress();
143
+ }
144
+ throw new Error(errorMessage);
145
+ }
146
+ },
147
+ onSuccess: (_, variables) => {
148
+ queryClient.invalidateQueries({
149
+ queryKey: ["wildduck-addresses", variables.userId],
150
+ });
151
+ },
152
+ });
153
+ const deleteMutation = useMutation({
154
+ mutationKey: [
155
+ "wildduck-delete-address",
156
+ config.cloudflareWorkerUrl || config.backendUrl,
157
+ ],
158
+ mutationFn: async ({ userId, addressId, }) => {
159
+ try {
160
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
161
+ const headers = buildHeaders();
162
+ const response = await axios.delete(`${apiUrl}/users/${userId}/addresses/${addressId}`, { headers });
163
+ return response.data;
164
+ }
165
+ catch (err) {
166
+ const errorMessage = err instanceof Error ? err.message : "Failed to delete address";
167
+ if (devMode) {
168
+ console.warn("[DevMode] Delete address failed, returning mock success:", errorMessage);
169
+ return WildduckMockData.getDeleteAddress();
170
+ }
171
+ throw new Error(errorMessage);
172
+ }
173
+ },
174
+ onSuccess: (_, variables) => {
175
+ queryClient.invalidateQueries({
176
+ queryKey: ["wildduck-addresses", variables.userId],
177
+ });
178
+ },
179
+ });
180
+ const createForwardedMutation = useMutation({
181
+ mutationKey: [
182
+ "wildduck-create-forwarded-address",
183
+ config.cloudflareWorkerUrl || config.backendUrl,
184
+ ],
185
+ mutationFn: async ({ address, target, }) => {
186
+ try {
187
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
188
+ const headers = buildHeaders();
189
+ const response = await axios.post(`${apiUrl}/addresses/forwarded`, { address, target }, { headers });
190
+ return response.data;
191
+ }
192
+ catch (err) {
193
+ const errorMessage = err instanceof Error
194
+ ? err.message
195
+ : "Failed to create forwarded address";
196
+ if (devMode) {
197
+ console.warn("[DevMode] Create forwarded address failed, returning mock success:", errorMessage);
198
+ return WildduckMockData.getCreateForwardedAddress();
199
+ }
200
+ throw new Error(errorMessage);
201
+ }
202
+ },
203
+ onSuccess: () => {
204
+ queryClient.invalidateQueries({
205
+ queryKey: ["wildduck-forwarded-addresses"],
206
+ });
207
+ },
208
+ });
209
+ const deleteForwardedMutation = useMutation({
210
+ mutationKey: [
211
+ "wildduck-delete-forwarded-address",
212
+ config.cloudflareWorkerUrl || config.backendUrl,
213
+ ],
214
+ mutationFn: async (addressId) => {
215
+ try {
216
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
217
+ const headers = buildHeaders();
218
+ const response = await axios.delete(`${apiUrl}/addresses/forwarded/${addressId}`, { headers });
219
+ return response.data;
220
+ }
221
+ catch (err) {
222
+ const errorMessage = err instanceof Error
223
+ ? err.message
224
+ : "Failed to delete forwarded address";
225
+ if (devMode) {
226
+ console.warn("[DevMode] Delete forwarded address failed, returning mock success:", errorMessage);
227
+ return WildduckMockData.getDeleteForwardedAddress();
228
+ }
229
+ throw new Error(errorMessage);
230
+ }
231
+ },
232
+ onSuccess: () => {
233
+ queryClient.invalidateQueries({
234
+ queryKey: ["wildduck-forwarded-addresses"],
235
+ });
236
+ },
237
+ });
238
+ const refresh = useCallback(async (userId) => {
239
+ await getUserAddresses(userId);
240
+ }, [getUserAddresses]);
241
+ const isLoading = createMutation.isPending ||
242
+ updateMutation.isPending ||
243
+ deleteMutation.isPending ||
244
+ createForwardedMutation.isPending ||
245
+ deleteForwardedMutation.isPending;
246
+ const error = createMutation.error?.message ||
247
+ updateMutation.error?.message ||
248
+ deleteMutation.error?.message ||
249
+ createForwardedMutation.error?.message ||
250
+ deleteForwardedMutation.error?.message ||
251
+ null;
252
+ const createAddress = useCallback(async (userId, params) => createMutation.mutateAsync({ userId, params }), [createMutation]);
253
+ const updateAddress = useCallback(async (userId, addressId, params) => updateMutation.mutateAsync({ userId, addressId, params }), [updateMutation]);
254
+ const deleteAddress = useCallback(async (userId, addressId) => deleteMutation.mutateAsync({ userId, addressId }), [deleteMutation]);
255
+ const createForwardedAddress = useCallback(async (address, target) => createForwardedMutation.mutateAsync({ address, target }), [createForwardedMutation]);
256
+ const deleteForwardedAddress = useCallback(async (addressId) => deleteForwardedMutation.mutateAsync(addressId), [deleteForwardedMutation]);
257
+ const clearError = useCallback(() => {
258
+ createMutation.reset();
259
+ updateMutation.reset();
260
+ deleteMutation.reset();
261
+ createForwardedMutation.reset();
262
+ deleteForwardedMutation.reset();
263
+ }, [
264
+ createMutation,
265
+ updateMutation,
266
+ deleteMutation,
267
+ createForwardedMutation,
268
+ deleteForwardedMutation,
269
+ ]);
270
+ return useMemo(() => ({
271
+ addresses,
272
+ isLoading,
273
+ error,
274
+ getUserAddresses,
275
+ getForwardedAddresses,
276
+ resolveAddress,
277
+ refresh,
278
+ createAddress,
279
+ isCreating: createMutation.isPending,
280
+ createError: createMutation.error,
281
+ updateAddress,
282
+ isUpdating: updateMutation.isPending,
283
+ updateError: updateMutation.error,
284
+ deleteAddress,
285
+ isDeleting: deleteMutation.isPending,
286
+ deleteError: deleteMutation.error,
287
+ createForwardedAddress,
288
+ deleteForwardedAddress,
289
+ clearError,
290
+ }), [
291
+ addresses,
292
+ isLoading,
293
+ error,
294
+ getUserAddresses,
295
+ getForwardedAddresses,
296
+ resolveAddress,
297
+ refresh,
298
+ createAddress,
299
+ createMutation.isPending,
300
+ createMutation.error,
301
+ updateAddress,
302
+ updateMutation.isPending,
303
+ updateMutation.error,
304
+ deleteAddress,
305
+ deleteMutation.isPending,
306
+ deleteMutation.error,
307
+ createForwardedAddress,
308
+ deleteForwardedAddress,
309
+ clearError,
310
+ ]);
311
+ };
312
+ export { useWildduckAddresses, };
313
+ //# sourceMappingURL=useWildduckAddresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWildduckAddresses.js","sourceRoot":"","sources":["../../src/hooks/useWildduckAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAsF3C,MAAM,oBAAoB,GAAG,CAC3B,MAAsB,EACtB,UAAmB,KAAK,EACI,EAAE;IAC9B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAGrC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAC;IAGlE,MAAM,YAAY,GAAG,GAA2B,EAAE;QAChD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QAEF,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC/B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvD,OAAO,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAGF,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,MAAc,EAA8B,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;YAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;YAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,GAAG,MAAM,UAAU,MAAM,YAAY,EACrC;gBACE,OAAO;aACR,CACF,CAAC;YAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAG5B,CAAC;YACF,MAAM,WAAW,GACf,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACjC,IAAI,EAAE,EAAE;aACT,CAAC,CAAC,IAAI,EAAE,CAAC;YAEZ,YAAY,CAAC,WAAW,CAAC,CAAC;YAG1B,WAAW,CAAC,YAAY,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;YAEtE,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAGjE,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CACV,2DAA2D,EAC3D,YAAY,CACb,CAAC;gBACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;gBACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,SAA8B,CAAC;gBACnE,YAAY,CAAC,aAAa,CAAC,CAAC;gBAG5B,WAAW,CAAC,YAAY,CACtB,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAC9B,aAAa,CACd,CAAC;gBAEF,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EACD;QACE,MAAM,CAAC,mBAAmB;QAC1B,MAAM,CAAC,UAAU;QACjB,YAAY;QACZ,OAAO;QACP,WAAW;KACZ,CACF,CAAC;IAGF,MAAM,qBAAqB,GAAG,KAAK,IAAiC,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;YAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;YAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,sBAAsB,EAAE;gBAChE,OAAO;aACR,CAAC,CAAC;YAEH,OAAQ,QAAQ,CAAC,IAAyC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK;gBAClB,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,mCAAmC,CAAC;YAG1C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CACV,gEAAgE,EAChE,YAAY,CACb,CAAC;gBACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;gBAC1D,OAAO,QAAQ,CAAC,IAAI,CAAC,SAA+B,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAGF,MAAM,cAAc,GAAG,KAAK,EAC1B,OAAe,EAC+B,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;YAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;YAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,GAAG,MAAM,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC5D,EAAE,OAAO,EAAE,CACZ,CAAC;YAEF,OAAO,QAAQ,CAAC,IAA2C,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;YAGnE,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CACV,2DAA2D,EAC3D,YAAY,CACb,CAAC;gBACF,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAGF,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,WAAW,EAAE;YACX,yBAAyB;YACzB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,EACjB,MAAM,EACN,MAAM,GAIP,EAA6C,EAAE;YAC9C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,GAAG,MAAM,UAAU,MAAM,YAAY,EACrC,MAAM,EACN,EAAE,OAAO,EAAE,CACZ,CAAC;gBAEF,OAAO,QAAQ,CAAC,IAAwC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAGlE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;YAE1B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,WAAW,EAAE;YACX,yBAAyB;YACzB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,EACjB,MAAM,EACN,SAAS,EACT,MAAM,GAKP,EAAiC,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,GAAG,MAAM,UAAU,MAAM,cAAc,SAAS,EAAE,EAClD,MAAM,EACN,EAAE,OAAO,EAAE,CACZ,CAAC;gBAEF,OAAO,QAAQ,CAAC,IAA4B,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAGlE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;YAE1B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,WAAW,EAAE;YACX,yBAAyB;YACzB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,EACjB,MAAM,EACN,SAAS,GAIV,EAAiC,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CACjC,GAAG,MAAM,UAAU,MAAM,cAAc,SAAS,EAAE,EAClD,EAAE,OAAO,EAAE,CACZ,CAAC;gBAEF,OAAO,QAAQ,CAAC,IAA4B,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAGlE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;YAE1B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,uBAAuB,GAAG,WAAW,CAAC;QAC1C,WAAW,EAAE;YACX,mCAAmC;YACnC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,EACjB,OAAO,EACP,MAAM,GAIP,EAA6C,EAAE;YAC9C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,GAAG,MAAM,sBAAsB,EAC/B,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,EAAE,OAAO,EAAE,CACZ,CAAC;gBAEF,OAAO,QAAQ,CAAC,IAAwC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK;oBAClB,CAAC,CAAC,GAAG,CAAC,OAAO;oBACb,CAAC,CAAC,oCAAoC,CAAC;gBAG3C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,oEAAoE,EACpE,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;gBACtD,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YAEd,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,8BAA8B,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,uBAAuB,GAAG,WAAW,CAAC;QAC1C,WAAW,EAAE;YACX,mCAAmC;YACnC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,SAAiB,EAAiC,EAAE;YACrE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CACjC,GAAG,MAAM,wBAAwB,SAAS,EAAE,EAC5C,EAAE,OAAO,EAAE,CACZ,CAAC;gBAEF,OAAO,QAAQ,CAAC,IAA4B,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK;oBAClB,CAAC,CAAC,GAAG,CAAC,OAAO;oBACb,CAAC,CAAC,oCAAoC,CAAC;gBAG3C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,oEAAoE,EACpE,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;gBACtD,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YAEd,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,8BAA8B,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,MAAc,EAAiB,EAAE;QACtC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAGF,MAAM,SAAS,GACb,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,SAAS;QACxB,uBAAuB,CAAC,SAAS;QACjC,uBAAuB,CAAC,SAAS,CAAC;IAEpC,MAAM,KAAK,GACT,cAAc,CAAC,KAAK,EAAE,OAAO;QAC7B,cAAc,CAAC,KAAK,EAAE,OAAO;QAC7B,cAAc,CAAC,KAAK,EAAE,OAAO;QAC7B,uBAAuB,CAAC,KAAK,EAAE,OAAO;QACtC,uBAAuB,CAAC,KAAK,EAAE,OAAO;QACtC,IAAI,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,MAAc,EAAE,MAA2B,EAAE,EAAE,CACpD,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAChD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,MAAc,EAAE,SAAiB,EAAE,MAA2B,EAAE,EAAE,CACvE,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAC3D,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,MAAc,EAAE,SAAiB,EAAE,EAAE,CAC1C,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EACnD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,sBAAsB,GAAG,WAAW,CACxC,KAAK,EAAE,OAAe,EAAE,MAAc,EAAE,EAAE,CACxC,uBAAuB,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC1D,CAAC,uBAAuB,CAAC,CAC1B,CAAC;IAEF,MAAM,sBAAsB,GAAG,WAAW,CACxC,KAAK,EAAE,SAAiB,EAAE,EAAE,CAAC,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,EAC3E,CAAC,uBAAuB,CAAC,CAC1B,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,uBAAuB,CAAC,KAAK,EAAE,CAAC;QAChC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE;QACD,cAAc;QACd,cAAc;QACd,cAAc;QACd,uBAAuB;QACvB,uBAAuB;KACxB,CAAC,CAAC;IAEH,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QAEL,SAAS;QACT,SAAS;QACT,KAAK;QAGL,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,OAAO;QAGP,aAAa;QACb,UAAU,EAAE,cAAc,CAAC,SAAS;QACpC,WAAW,EAAE,cAAc,CAAC,KAAK;QAGjC,aAAa;QACb,UAAU,EAAE,cAAc,CAAC,SAAS;QACpC,WAAW,EAAE,cAAc,CAAC,KAAK;QAGjC,aAAa;QACb,UAAU,EAAE,cAAc,CAAC,SAAS;QACpC,WAAW,EAAE,cAAc,CAAC,KAAK;QAGjC,sBAAsB;QACtB,sBAAsB;QAGtB,UAAU;KACX,CAAC,EACF;QACE,SAAS;QACT,SAAS;QACT,KAAK;QACL,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,OAAO;QACP,aAAa;QACb,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,KAAK;QACpB,aAAa;QACb,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,KAAK;QACpB,aAAa;QACb,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,KAAK;QACpB,sBAAsB;QACtB,sBAAsB;QACtB,UAAU;KACX,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,oBAAoB,GAMrB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Optional } from "@sudobility/types";
2
+ import type { WildduckAuthResponse as AuthenticationResponse, WildduckPreAuthResponse as PreAuthResponse, WildduckAuthenticateRequest, WildduckConfig, WildduckPreAuthRequest } from "@sudobility/types";
3
+ type AuthenticateRequest = WildduckAuthenticateRequest;
4
+ type PreAuthRequest = WildduckPreAuthRequest;
5
+ interface UseWildduckAuthReturn {
6
+ authenticate: (params: Omit<AuthenticateRequest, "sess" | "ip">) => Promise<AuthenticationResponse>;
7
+ isAuthenticating: boolean;
8
+ authError: Optional<Error>;
9
+ authData: Optional<AuthenticationResponse>;
10
+ preAuth: (params: Omit<PreAuthRequest, "sess" | "ip">) => Promise<PreAuthResponse>;
11
+ isPreAuthing: boolean;
12
+ preAuthError: Optional<Error>;
13
+ logout: (token?: string) => Promise<{
14
+ success: boolean;
15
+ }>;
16
+ isLoggingOut: boolean;
17
+ logoutError: Optional<Error>;
18
+ getAuthStatus: () => Promise<{
19
+ authenticated: boolean;
20
+ user?: any;
21
+ }>;
22
+ isLoading: boolean;
23
+ error: Optional<string>;
24
+ clearError: () => void;
25
+ }
26
+ declare const useWildduckAuth: (config: WildduckConfig, devMode?: boolean) => UseWildduckAuthReturn;
27
+ export { useWildduckAuth, type UseWildduckAuthReturn };
28
+ //# sourceMappingURL=useWildduckAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWildduckAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildduckAuth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EACV,oBAAoB,IAAI,sBAAsB,EAC9C,uBAAuB,IAAI,eAAe,EAC1C,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAO3B,KAAK,mBAAmB,GAAG,2BAA2B,CAAC;AACvD,KAAK,cAAc,GAAG,sBAAsB,CAAC;AAqC7C,UAAU,qBAAqB;IAE7B,YAAY,EAAE,CACZ,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAG3C,OAAO,EAAE,CACP,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,KACxC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAG9B,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAG7B,aAAa,EAAE,MAAM,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAGrE,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAMD,QAAA,MAAM,eAAe,GACnB,QAAQ,cAAc,EACtB,UAAS,OAAe,KACvB,qBAuUF,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,249 @@
1
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import axios from "axios";
4
+ import { useStorageService } from "./useServices";
5
+ import { createAuthenticateRequest, createPreAuthRequest, } from "@sudobility/types";
6
+ import { WildduckMockData } from "./mocks";
7
+ class AuthDataStore {
8
+ constructor() {
9
+ this.authData = null;
10
+ this.listeners = new Set();
11
+ }
12
+ setAuthData(data) {
13
+ this.authData = data;
14
+ this.notifyListeners();
15
+ }
16
+ getAuthData() {
17
+ return this.authData;
18
+ }
19
+ subscribe(listener) {
20
+ this.listeners.add(listener);
21
+ return () => {
22
+ this.listeners.delete(listener);
23
+ };
24
+ }
25
+ notifyListeners() {
26
+ this.listeners.forEach((listener) => listener(this.authData));
27
+ }
28
+ clear() {
29
+ this.authData = null;
30
+ this.notifyListeners();
31
+ }
32
+ }
33
+ const authDataStore = new AuthDataStore();
34
+ const useWildduckAuth = (config, devMode = false) => {
35
+ const storageService = useStorageService();
36
+ const queryClient = useQueryClient();
37
+ const [authData, setAuthData] = useState(() => authDataStore.getAuthData());
38
+ useEffect(() => {
39
+ const unsubscribe = authDataStore.subscribe(setAuthData);
40
+ return unsubscribe;
41
+ }, []);
42
+ const authenticateMutation = useMutation({
43
+ mutationKey: [
44
+ "wildduck-authenticate",
45
+ config.cloudflareWorkerUrl || config.backendUrl,
46
+ ],
47
+ mutationFn: async (params) => {
48
+ try {
49
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
50
+ const requestBody = createAuthenticateRequest(params.username, params.signature, params.message, {
51
+ ...(params.signer && { signer: params.signer }),
52
+ ...(params.scope && { scope: params.scope }),
53
+ ...(params.protocol && { protocol: params.protocol }),
54
+ ...(params.token !== undefined && { token: params.token }),
55
+ ...(params.appId && { appId: params.appId }),
56
+ sess: "api-session",
57
+ ip: "127.0.0.1",
58
+ });
59
+ const response = await axios.post(`${apiUrl}/authenticate`, requestBody, {
60
+ headers: {
61
+ "Content-Type": "application/json",
62
+ },
63
+ });
64
+ const result = response.data;
65
+ if (result.success && result.token) {
66
+ await storageService.setItem("wildduck_token", result.token);
67
+ }
68
+ return result;
69
+ }
70
+ catch (err) {
71
+ const errorMessage = err?.response?.data?.error ||
72
+ (err instanceof Error ? err.message : "Authentication failed");
73
+ if (devMode) {
74
+ console.warn("[DevMode] authenticate failed, returning mock data:", errorMessage);
75
+ const mockResult = WildduckMockData.getAuthentication(params.username);
76
+ if (mockResult.token) {
77
+ await storageService.setItem("wildduck_token", mockResult.token);
78
+ }
79
+ return mockResult;
80
+ }
81
+ throw new Error(errorMessage);
82
+ }
83
+ },
84
+ onSuccess: (data) => {
85
+ authDataStore.setAuthData(data);
86
+ queryClient.invalidateQueries({ queryKey: ["wildduck-auth-status"] });
87
+ },
88
+ });
89
+ const preAuthMutation = useMutation({
90
+ mutationKey: [
91
+ "wildduck-preauth",
92
+ config.cloudflareWorkerUrl || config.backendUrl,
93
+ ],
94
+ mutationFn: async (params) => {
95
+ try {
96
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
97
+ const requestBody = createPreAuthRequest(params.username, {
98
+ ...(params.scope && { scope: params.scope }),
99
+ sess: "api-session",
100
+ ip: "127.0.0.1",
101
+ });
102
+ const response = await axios.post(`${apiUrl}/preauth`, requestBody, {
103
+ headers: {
104
+ "Content-Type": "application/json",
105
+ },
106
+ });
107
+ return response.data;
108
+ }
109
+ catch (err) {
110
+ const errorMessage = err?.response?.data?.error ||
111
+ (err instanceof Error ? err.message : "Pre-authentication failed");
112
+ if (devMode) {
113
+ console.warn("[DevMode] preAuth failed, returning mock data:", errorMessage);
114
+ return WildduckMockData.getPreAuth();
115
+ }
116
+ throw new Error(errorMessage);
117
+ }
118
+ },
119
+ });
120
+ const logoutMutation = useMutation({
121
+ mutationKey: [
122
+ "wildduck-logout",
123
+ config.cloudflareWorkerUrl || config.backendUrl,
124
+ ],
125
+ mutationFn: async (token) => {
126
+ try {
127
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
128
+ const authToken = token || (await storageService.getItem("wildduck_token"));
129
+ const headers = {
130
+ "Content-Type": "application/json",
131
+ };
132
+ if (authToken) {
133
+ if (config.cloudflareWorkerUrl) {
134
+ headers["Authorization"] = `Bearer ${authToken}`;
135
+ headers["X-App-Source"] = "0xmail-box";
136
+ }
137
+ else {
138
+ headers["X-Access-Token"] = authToken;
139
+ }
140
+ }
141
+ const response = await axios.delete(`${apiUrl}/authenticate`, {
142
+ headers,
143
+ });
144
+ const result = response.data;
145
+ if (result.success) {
146
+ await storageService.removeItem("wildduck_token");
147
+ }
148
+ return result;
149
+ }
150
+ catch (err) {
151
+ const errorMessage = err?.response?.data?.error ||
152
+ (err instanceof Error ? err.message : "Logout failed");
153
+ if (devMode) {
154
+ console.warn("[DevMode] logout failed, returning mock data:", errorMessage);
155
+ await storageService.removeItem("wildduck_token");
156
+ return WildduckMockData.getLogout();
157
+ }
158
+ throw new Error(errorMessage);
159
+ }
160
+ },
161
+ onSuccess: () => {
162
+ authDataStore.clear();
163
+ queryClient.clear();
164
+ },
165
+ });
166
+ const getAuthStatus = useCallback(async () => {
167
+ try {
168
+ const token = await storageService.getItem("wildduck_token");
169
+ if (!token) {
170
+ return { authenticated: false };
171
+ }
172
+ const apiUrl = config.cloudflareWorkerUrl || config.backendUrl;
173
+ try {
174
+ const headers = {
175
+ "Content-Type": "application/json",
176
+ Accept: "application/json",
177
+ };
178
+ if (config.cloudflareWorkerUrl) {
179
+ headers["Authorization"] = `Bearer ${token}`;
180
+ headers["X-App-Source"] = "0xmail-box";
181
+ }
182
+ else {
183
+ headers["X-Access-Token"] = token;
184
+ }
185
+ const response = await axios.get(`${apiUrl}/users/me`, { headers });
186
+ return { authenticated: true, user: response.data };
187
+ }
188
+ catch {
189
+ return { authenticated: false };
190
+ }
191
+ }
192
+ catch (err) {
193
+ const errorMessage = err instanceof Error ? err.message : "Failed to check auth status";
194
+ if (devMode) {
195
+ console.warn("[DevMode] getAuthStatus failed, returning mock data:", errorMessage);
196
+ return WildduckMockData.getAuthStatus();
197
+ }
198
+ return { authenticated: false };
199
+ }
200
+ }, [storageService, config.cloudflareWorkerUrl, config.backendUrl, devMode]);
201
+ const isLoading = authenticateMutation.isPending ||
202
+ preAuthMutation.isPending ||
203
+ logoutMutation.isPending;
204
+ const error = authenticateMutation.error?.message ||
205
+ preAuthMutation.error?.message ||
206
+ logoutMutation.error?.message ||
207
+ null;
208
+ const authenticate = useCallback(async (params) => authenticateMutation.mutateAsync(params), [authenticateMutation]);
209
+ const preAuth = useCallback(async (params) => preAuthMutation.mutateAsync(params), [preAuthMutation]);
210
+ const logout = useCallback(async (token) => logoutMutation.mutateAsync(token), [logoutMutation]);
211
+ const clearError = useCallback(() => {
212
+ authenticateMutation.reset();
213
+ preAuthMutation.reset();
214
+ logoutMutation.reset();
215
+ }, [authenticateMutation, preAuthMutation, logoutMutation]);
216
+ return useMemo(() => ({
217
+ authenticate,
218
+ isAuthenticating: authenticateMutation.isPending,
219
+ authError: authenticateMutation.error,
220
+ authData,
221
+ preAuth,
222
+ isPreAuthing: preAuthMutation.isPending,
223
+ preAuthError: preAuthMutation.error,
224
+ logout,
225
+ isLoggingOut: logoutMutation.isPending,
226
+ logoutError: logoutMutation.error,
227
+ getAuthStatus,
228
+ isLoading,
229
+ error,
230
+ clearError,
231
+ }), [
232
+ authenticate,
233
+ authenticateMutation.isPending,
234
+ authenticateMutation.error,
235
+ authData,
236
+ preAuth,
237
+ preAuthMutation.isPending,
238
+ preAuthMutation.error,
239
+ logout,
240
+ logoutMutation.isPending,
241
+ logoutMutation.error,
242
+ getAuthStatus,
243
+ isLoading,
244
+ error,
245
+ clearError,
246
+ ]);
247
+ };
248
+ export { useWildduckAuth };
249
+ //# sourceMappingURL=useWildduckAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWildduckAuth.js","sourceRoot":"","sources":["../../src/hooks/useWildduckAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,aAAa;IAAnB;QACU,aAAQ,GAAqC,IAAI,CAAC;QAClD,cAAS,GACf,IAAI,GAAG,EAAE,CAAC;IA0Bd,CAAC;IAxBC,WAAW,CAAC,IAAsC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,QAA0D;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAoC1C,MAAM,eAAe,GAAG,CACtB,MAAsB,EACtB,UAAmB,KAAK,EACD,EAAE;IACzB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAGrC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CACtC,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAClC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,MAAM,oBAAoB,GAAG,WAAW,CAAC;QACvC,WAAW,EAAE;YACX,uBAAuB;YACvB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EACf,MAAgD,EACf,EAAE;YACnC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,WAAW,GAAG,yBAAyB,CAC3C,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd;oBACE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC5C,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrD,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC1D,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC5C,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,WAAW;iBAChB,CACF,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,GAAG,MAAM,eAAe,EACxB,WAAW,EACX;oBACE,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CACF,CAAC;gBAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAA8B,CAAC;gBAGvD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,MAAM,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,YAAY,GACf,GAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;oBACnC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;gBAGjE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,qDAAqD,EACrD,YAAY,CACb,CAAC;oBACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,CACnD,MAAM,CAAC,QAAQ,CAChB,CAAC;oBAGF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrB,MAAM,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;oBACnE,CAAC;oBACD,OAAO,UAAU,CAAC;gBACpB,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAElB,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEhC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,eAAe,GAAG,WAAW,CAAC;QAClC,WAAW,EAAE;YACX,kBAAkB;YAClB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EACf,MAA2C,EACjB,EAAE;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACxD,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC5C,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,WAAW;iBAChB,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,EAAE,WAAW,EAAE;oBAClE,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAuB,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,YAAY,GACf,GAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;oBACnC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;gBAGrE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,gDAAgD,EAChD,YAAY,CACb,CAAC;oBACF,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBACvC,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,WAAW,EAAE;YACX,iBAAiB;YACjB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU;SAChD;QACD,UAAU,EAAE,KAAK,EAAE,KAAc,EAAiC,EAAE;YAClE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;gBAC/D,MAAM,SAAS,GACb,KAAK,IAAI,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAE5D,MAAM,OAAO,GAA2B;oBACtC,cAAc,EAAE,kBAAkB;iBACnC,CAAC;gBAEF,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;wBAC/B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,SAAS,EAAE,CAAC;wBACjD,OAAO,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;oBACzC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;oBACxC,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,eAAe,EAAE;oBAC5D,OAAO;iBACR,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAA4B,CAAC;gBAGrD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACpD,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,YAAY,GACf,GAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;oBACnC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAGzD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,+CAA+C,EAC/C,YAAY,CACb,CAAC;oBACF,MAAM,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBAClD,OAAO,gBAAgB,CAAC,SAAS,EAAE,CAAC;gBACtC,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YAEd,aAAa,CAAC,KAAK,EAAE,CAAC;YAEtB,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KACF,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAGpC,EAAE;QACH,IAAI,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YAGD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC;YAG/D,IAAI,CAAC;gBACH,MAAM,OAAO,GAA2B;oBACtC,cAAc,EAAE,kBAAkB;oBAClC,MAAM,EAAE,kBAAkB;iBAC3B,CAAC;gBAGF,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;oBAC/B,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;oBAC7C,OAAO,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;gBACpC,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAEpE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YAGrE,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CACV,sDAAsD,EACtD,YAAY,CACb,CAAC;gBACF,OAAO,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAC1C,CAAC;YAED,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAG7E,MAAM,SAAS,GACb,oBAAoB,CAAC,SAAS;QAC9B,eAAe,CAAC,SAAS;QACzB,cAAc,CAAC,SAAS,CAAC;IAC3B,MAAM,KAAK,GACT,oBAAoB,CAAC,KAAK,EAAE,OAAO;QACnC,eAAe,CAAC,KAAK,EAAE,OAAO;QAC9B,cAAc,CAAC,KAAK,EAAE,OAAO;QAC7B,IAAI,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,MAAgD,EAAE,EAAE,CACzD,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,EAC1C,CAAC,oBAAoB,CAAC,CACvB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,MAA2C,EAAE,EAAE,CACpD,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,EACrC,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAC3D,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC7B,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,oBAAoB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5D,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QAEL,YAAY;QACZ,gBAAgB,EAAE,oBAAoB,CAAC,SAAS;QAChD,SAAS,EAAE,oBAAoB,CAAC,KAAK;QACrC,QAAQ;QAGR,OAAO;QACP,YAAY,EAAE,eAAe,CAAC,SAAS;QACvC,YAAY,EAAE,eAAe,CAAC,KAAK;QAGnC,MAAM;QACN,YAAY,EAAE,cAAc,CAAC,SAAS;QACtC,WAAW,EAAE,cAAc,CAAC,KAAK;QAGjC,aAAa;QAGb,SAAS;QACT,KAAK;QACL,UAAU;KACX,CAAC,EACF;QACE,YAAY;QACZ,oBAAoB,CAAC,SAAS;QAC9B,oBAAoB,CAAC,KAAK;QAC1B,QAAQ;QACR,OAAO;QACP,eAAe,CAAC,SAAS;QACzB,eAAe,CAAC,KAAK;QACrB,MAAM;QACN,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,KAAK;QACpB,aAAa;QACb,SAAS;QACT,KAAK;QACL,UAAU;KACX,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAA8B,CAAC"}