@plutonhq/core-frontend 0.1.13 → 0.1.15

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 (217) hide show
  1. package/dist-lib/@types/backups.d.ts +26 -0
  2. package/dist-lib/@types/backups.d.ts.map +1 -1
  3. package/dist-lib/@types/devices.d.ts +7 -0
  4. package/dist-lib/@types/devices.d.ts.map +1 -1
  5. package/dist-lib/@types/plans.d.ts +21 -1
  6. package/dist-lib/@types/plans.d.ts.map +1 -1
  7. package/dist-lib/@types/restores.d.ts +2 -0
  8. package/dist-lib/@types/restores.d.ts.map +1 -1
  9. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts +3 -2
  10. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts.map +1 -1
  11. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js +73 -85
  12. package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js.map +1 -1
  13. package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
  14. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +88 -50
  15. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
  16. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +70 -38
  17. package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
  18. package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
  19. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +166 -123
  20. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
  21. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +64 -30
  22. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
  23. package/dist-lib/components/Plan/Backups/Backups.d.ts +8 -1
  24. package/dist-lib/components/Plan/Backups/Backups.d.ts.map +1 -1
  25. package/dist-lib/components/Plan/Backups/Backups.js +154 -125
  26. package/dist-lib/components/Plan/Backups/Backups.js.map +1 -1
  27. package/dist-lib/components/Plan/EditPlan/EditPlan.d.ts.map +1 -1
  28. package/dist-lib/components/Plan/EditPlan/EditPlan.js +11 -10
  29. package/dist-lib/components/Plan/EditPlan/EditPlan.js.map +1 -1
  30. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts +12 -0
  31. package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts.map +1 -0
  32. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js +68 -0
  33. package/dist-lib/components/Plan/Mirrors/MirrorDetails.js.map +1 -0
  34. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js +26 -0
  35. package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js.map +1 -0
  36. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts +11 -0
  37. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts.map +1 -0
  38. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js +38 -0
  39. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js.map +1 -0
  40. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js +16 -0
  41. package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js.map +1 -0
  42. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts +14 -0
  43. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts.map +1 -0
  44. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js +54 -0
  45. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js.map +1 -0
  46. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js +26 -0
  47. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js.map +1 -0
  48. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts +15 -0
  49. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts.map +1 -0
  50. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js +34 -0
  51. package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js.map +1 -0
  52. package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
  53. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +20 -17
  54. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
  55. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +2 -1
  56. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  57. package/dist-lib/components/Plan/PlanForm/PlanForm.js +121 -94
  58. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  59. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts +16 -0
  60. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts.map +1 -0
  61. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js +115 -0
  62. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js.map +1 -0
  63. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js +26 -0
  64. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js.map +1 -0
  65. package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
  66. package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
  67. package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
  68. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts +2 -2
  69. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts.map +1 -1
  70. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.js.map +1 -1
  71. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
  72. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
  73. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
  74. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
  75. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
  76. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
  77. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
  78. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
  79. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  80. package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
  81. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  82. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
  83. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
  84. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
  85. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
  86. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
  87. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
  88. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
  89. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
  90. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
  91. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
  92. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
  93. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
  94. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
  95. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
  96. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
  97. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
  98. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
  99. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
  100. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
  101. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
  102. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
  103. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
  104. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts +1 -1
  105. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts.map +1 -1
  106. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +52 -24
  107. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  108. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
  109. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
  110. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
  111. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts +7 -0
  112. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts.map +1 -0
  113. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js +79 -0
  114. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js.map +1 -0
  115. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js +24 -0
  116. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js.map +1 -0
  117. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  118. package/dist-lib/components/common/Icon/Icon.js +11 -0
  119. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  120. package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
  121. package/dist-lib/components/index.d.ts +6 -0
  122. package/dist-lib/components/index.d.ts.map +1 -1
  123. package/dist-lib/components.js +102 -90
  124. package/dist-lib/components.js.map +1 -1
  125. package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
  126. package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
  127. package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
  128. package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
  129. package/dist-lib/router.d.ts.map +1 -1
  130. package/dist-lib/router.js +46 -35
  131. package/dist-lib/router.js.map +1 -1
  132. package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
  133. package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
  134. package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
  135. package/dist-lib/routes/PlanSingle/PlanSingle.d.ts.map +1 -1
  136. package/dist-lib/routes/PlanSingle/PlanSingle.js +123 -98
  137. package/dist-lib/routes/PlanSingle/PlanSingle.js.map +1 -1
  138. package/dist-lib/services/backups.d.ts +15 -2
  139. package/dist-lib/services/backups.d.ts.map +1 -1
  140. package/dist-lib/services/backups.js +119 -100
  141. package/dist-lib/services/backups.js.map +1 -1
  142. package/dist-lib/services/plans.d.ts +20 -0
  143. package/dist-lib/services/plans.d.ts.map +1 -1
  144. package/dist-lib/services/plans.js +227 -172
  145. package/dist-lib/services/plans.js.map +1 -1
  146. package/dist-lib/services/restores.d.ts +10 -2
  147. package/dist-lib/services/restores.d.ts.map +1 -1
  148. package/dist-lib/services/restores.js +61 -57
  149. package/dist-lib/services/restores.js.map +1 -1
  150. package/dist-lib/services/settings.d.ts +16 -0
  151. package/dist-lib/services/settings.d.ts.map +1 -1
  152. package/dist-lib/services/settings.js +147 -68
  153. package/dist-lib/services/settings.js.map +1 -1
  154. package/dist-lib/services/users.d.ts.map +1 -1
  155. package/dist-lib/services/users.js +32 -32
  156. package/dist-lib/services/users.js.map +1 -1
  157. package/dist-lib/services.js +113 -101
  158. package/dist-lib/styles/core-frontend.css +1 -1
  159. package/dist-lib/utils/progressHelpers.d.ts +12 -1
  160. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  161. package/dist-lib/utils/progressHelpers.js +121 -63
  162. package/dist-lib/utils/progressHelpers.js.map +1 -1
  163. package/dist-lib/utils.js +29 -28
  164. package/package.json +1 -1
  165. package/src/@types/backups.ts +28 -0
  166. package/src/@types/devices.ts +8 -0
  167. package/src/@types/plans.ts +23 -1
  168. package/src/@types/restores.ts +2 -0
  169. package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
  170. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
  171. package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
  172. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
  173. package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
  174. package/src/components/Plan/Backups/Backups.tsx +52 -4
  175. package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
  176. package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
  177. package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
  178. package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
  179. package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
  180. package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
  181. package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
  182. package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
  183. package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
  184. package/src/components/Plan/PlanForm/PlanForm.tsx +44 -17
  185. package/src/components/Plan/PlanIntegrity/PlanIntegrity.module.scss +110 -0
  186. package/src/components/Plan/PlanIntegrity/PlanIntegrity.tsx +187 -0
  187. package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
  188. package/src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx +2 -2
  189. package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
  190. package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
  191. package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
  192. package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
  193. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
  194. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
  195. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
  196. package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
  197. package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
  198. package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
  199. package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
  200. package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
  201. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +38 -2
  202. package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
  203. package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss +62 -0
  204. package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.tsx +102 -0
  205. package/src/components/common/Icon/Icon.tsx +10 -1
  206. package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
  207. package/src/components/index.ts +8 -0
  208. package/src/hooks/usePwaAutoUpdate.ts +51 -11
  209. package/src/router.tsx +26 -17
  210. package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
  211. package/src/routes/PlanSingle/PlanSingle.tsx +21 -0
  212. package/src/services/backups.ts +32 -9
  213. package/src/services/plans.ts +75 -0
  214. package/src/services/restores.ts +10 -2
  215. package/src/services/settings.ts +90 -0
  216. package/src/services/users.ts +14 -5
  217. package/src/utils/progressHelpers.ts +85 -1
@@ -1,52 +1,51 @@
1
- import { useQueryClient as d, useMutation as u, useQuery as p } from "@tanstack/react-query";
2
- import { toast as b } from "react-toastify";
1
+ import { useQueryClient as d, useMutation as a, useQuery as p } from "@tanstack/react-query";
2
+ import { toast as $ } from "react-toastify";
3
3
  import { API_URL as c } from "../utils/constants.js";
4
4
  const h = /* @__PURE__ */ new Set();
5
- async function g({ backupId: e }) {
6
- const n = await (await fetch(`${c}/backups/${e}/action/download`, {
5
+ async function b({ backupId: e, replicationId: n }) {
6
+ const t = `${c}/backups/${e}/action/download?${n ? `replicationId=${n}` : ""}`, s = await (await fetch(t, {
7
7
  method: "POST",
8
8
  credentials: "include"
9
- // headers: header,
10
9
  })).json();
11
- if (!n.success)
12
- throw new Error(n.error);
13
- return n;
10
+ if (!s.success)
11
+ throw new Error(s.error);
12
+ return s;
14
13
  }
15
- function R() {
14
+ function C() {
16
15
  const e = d();
17
- return u({
18
- mutationFn: g,
19
- onSuccess: (t, n) => {
20
- console.log("res :", n, t), e.invalidateQueries({ queryKey: ["plan", n.planId] });
16
+ return a({
17
+ mutationFn: b,
18
+ onSuccess: (n, t) => {
19
+ console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
21
20
  }
22
21
  });
23
22
  }
24
- async function $(e) {
23
+ async function g(e) {
25
24
  var f, w;
26
- const t = await fetch(`${c}/backups/${e}/action/download`, {
25
+ const n = await fetch(`${c}/backups/${e}/action/download`, {
27
26
  method: "GET",
28
27
  credentials: "include"
29
28
  // headers: header,
30
29
  });
31
- if (!t.ok) {
32
- const l = await t.json();
30
+ if (!n.ok) {
31
+ const l = await n.json();
33
32
  throw new Error(l.error);
34
33
  }
35
- const n = ((f = t.headers.get("content-disposition")) == null ? void 0 : f.split("filename=")[1]) || `backup-${e}.tar`, o = (w = t.body) == null ? void 0 : w.getReader(), r = new ReadableStream({
34
+ const t = ((f = n.headers.get("content-disposition")) == null ? void 0 : f.split("filename=")[1]) || `backup-${e}.tar`, o = (w = n.body) == null ? void 0 : w.getReader(), s = new ReadableStream({
36
35
  async start(l) {
37
36
  for (; ; ) {
38
- const { done: m, value: y } = await o.read();
39
- if (m) break;
40
- l.enqueue(y);
37
+ const { done: k, value: m } = await o.read();
38
+ if (k) break;
39
+ l.enqueue(m);
41
40
  }
42
41
  l.close(), o.releaseLock();
43
42
  }
44
- }), i = await new Response(r).blob(), a = window.URL.createObjectURL(i), s = document.createElement("a");
45
- s.href = a, s.download = n, document.body.appendChild(s), s.click(), s.remove(), window.URL.revokeObjectURL(a);
43
+ }), u = await new Response(s).blob(), i = window.URL.createObjectURL(u), r = document.createElement("a");
44
+ r.href = i, r.download = t, document.body.appendChild(r), r.click(), r.remove(), window.URL.revokeObjectURL(i);
46
45
  }
47
- function C() {
48
- return u({
49
- mutationFn: $,
46
+ function O() {
47
+ return a({
48
+ mutationFn: g,
50
49
  onSuccess: (e) => {
51
50
  console.log("# Backup Downloaded! :", e);
52
51
  },
@@ -55,78 +54,78 @@ function C() {
55
54
  }
56
55
  });
57
56
  }
58
- async function B({ backupId: e }) {
59
- const n = await (await fetch(`${c}/backups/${e}/action/download`, {
57
+ async function E({ backupId: e }) {
58
+ const t = await (await fetch(`${c}/backups/${e}/action/download`, {
60
59
  method: "DELETE",
61
60
  credentials: "include"
62
61
  // headers: header,
63
62
  })).json();
64
- if (!n.success)
65
- throw new Error(n.error);
66
- return n;
63
+ if (!t.success)
64
+ throw new Error(t.error);
65
+ return t;
67
66
  }
68
- function O() {
67
+ function P() {
69
68
  const e = d();
70
- return u({
71
- mutationFn: B,
72
- onSuccess: (t, n) => {
73
- console.log("res :", n, t), e.invalidateQueries({ queryKey: ["plan", n.planId] });
69
+ return a({
70
+ mutationFn: E,
71
+ onSuccess: (n, t) => {
72
+ console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
74
73
  }
75
74
  });
76
75
  }
77
- async function E(e) {
78
- const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${c}/backups/${e}`, {
76
+ async function B(e) {
77
+ const n = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${c}/backups/${e}`, {
79
78
  method: "DELETE",
80
79
  credentials: "include",
81
- headers: t
80
+ headers: n
82
81
  })).json();
83
82
  if (!o.success)
84
83
  throw new Error(o.error);
85
84
  return o;
86
85
  }
87
- function P() {
88
- return u({
89
- mutationFn: E,
86
+ function v() {
87
+ return a({
88
+ mutationFn: B,
90
89
  onSuccess: (e) => {
91
90
  console.log("# Backup Removed! :", e);
92
91
  }
93
92
  });
94
93
  }
95
- async function k({ id: e, sourceId: t, sourceType: n, planId: o }) {
96
- const r = new URL(`${c}/backups/${e}/progress?sourceId=${t}&sourceType=${n}&planId=${o}`);
97
- return await (await fetch(r.toString(), {
94
+ async function y({ id: e, sourceId: n, sourceType: t, planId: o }) {
95
+ const s = new URL(`${c}/backups/${e}/progress?sourceId=${n}&sourceType=${t}&planId=${o}`);
96
+ return await (await fetch(s.toString(), {
98
97
  method: "GET",
99
98
  credentials: "include"
100
99
  })).json();
101
100
  }
102
- function v(e) {
103
- const t = d();
101
+ function L(e) {
102
+ const n = d();
104
103
  return p({
105
104
  queryKey: ["progress-backup", e.id],
106
- queryFn: () => k(e),
105
+ queryFn: () => y(e),
107
106
  refetchOnMount: !0,
108
107
  retry: !1,
109
- refetchInterval(n) {
110
- var i, a;
111
- const o = (i = n.state) == null ? void 0 : i.data;
112
- if ((a = o == null ? void 0 : o.events) == null ? void 0 : a.some((s) => s.phase === "finished" && s.completed === !0)) {
113
- const s = (o == null ? void 0 : o.planId) || e.planId;
114
- return h.has(e.id) || (h.add(e.id), s && (console.log("Invalidate Plan and Reload It :", s), t.invalidateQueries({ queryKey: ["plan", s] })), b.success("Process Complete!")), !1;
108
+ refetchInterval(t) {
109
+ var u, i;
110
+ const o = (u = t.state) == null ? void 0 : u.data;
111
+ if ((i = o == null ? void 0 : o.events) == null ? void 0 : i.some((r) => r.phase === "finished" && r.completed === !0)) {
112
+ const r = (o == null ? void 0 : o.planId) || e.planId;
113
+ return h.has(e.id) || (h.add(e.id), r && (console.log("Invalidate Plan and Reload It :", r), n.invalidateQueries({ queryKey: ["plan", r] })), $.success("Process Complete!")), !1;
115
114
  }
116
115
  return 1e3;
117
116
  }
118
117
  });
119
118
  }
120
- function L(e) {
119
+ function D(e) {
121
120
  return p({
122
121
  queryKey: ["progress-backup", e.id],
123
- queryFn: () => k(e),
122
+ queryFn: () => y(e),
124
123
  refetchOnMount: !0,
125
124
  retry: !1
126
125
  });
127
126
  }
128
- async function S({ planId: e, backupId: t }) {
129
- const o = await (await fetch(`${c}/backups/${t}/action/cancel?planId=${e}`, {
127
+ async function j({ planId: e, backupId: n }) {
128
+ const o = await (await fetch(`${c}/backups/${n}/action/cancel?planId=${e}`, {
130
129
  method: "POST",
131
130
  credentials: "include"
132
131
  // headers: header,
@@ -135,71 +134,91 @@ async function S({ planId: e, backupId: t }) {
135
134
  throw new Error(o.error);
136
135
  return o;
137
136
  }
138
- function D() {
139
- return u({
140
- mutationFn: S,
141
- onSuccess: (e, t) => {
142
- console.log("res :", t, e);
137
+ function G() {
138
+ return a({
139
+ mutationFn: j,
140
+ onSuccess: (e, n) => {
141
+ console.log("res :", n, e);
143
142
  }
144
143
  });
145
144
  }
146
- async function j({ backupId: e, updatePayload: t }) {
147
- console.log("updatePayload :", t);
148
- const n = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), r = await (await fetch(`${c}/backups/${e}`, {
145
+ async function F({ backupId: e, updatePayload: n }) {
146
+ console.log("updatePayload :", n);
147
+ const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), s = await (await fetch(`${c}/backups/${e}`, {
149
148
  method: "POST",
150
149
  credentials: "include",
151
- body: JSON.stringify(t),
152
- headers: n
150
+ body: JSON.stringify(n),
151
+ headers: t
153
152
  })).json();
154
- if (!r.success)
155
- throw new Error(r.error);
156
- return r;
157
- }
158
- function G() {
159
- return u({
160
- mutationFn: j,
161
- onSuccess: (e, t) => {
162
- console.log("res :", t, e);
153
+ if (!s.success)
154
+ throw new Error(s.error);
155
+ return s;
156
+ }
157
+ function K() {
158
+ return a({
159
+ mutationFn: F,
160
+ onSuccess: (e, n) => {
161
+ console.log("res :", n, e);
163
162
  }
164
163
  });
165
164
  }
166
- async function F({ backupId: e }) {
167
- const n = await (await fetch(`${c}/backups/${e}/files`, {
165
+ async function S({ backupId: e, replicationId: n }) {
166
+ const t = n ? `${c}/backups/${e}/files?replicationId=${n}` : `${c}/backups/${e}/files`, s = await (await fetch(t, {
168
167
  method: "GET",
169
168
  credentials: "include"
170
- // headers: header,
171
169
  })).json();
172
- if (!n.success)
173
- throw new Error(n.error);
174
- return n;
170
+ if (!s.success)
171
+ throw new Error(s.error);
172
+ return s;
175
173
  }
176
174
  function U(e) {
177
175
  return p({
178
176
  queryKey: ["snapshot-files", e.backupId],
179
- queryFn: () => F(e),
177
+ queryFn: () => S(e),
180
178
  refetchOnMount: !0,
181
179
  staleTime: 1e3 * 60 * 60,
182
180
  // Cache the data for 60 minutes
183
181
  retry: !1
184
182
  });
185
183
  }
184
+ async function q({ backupId: e, replicationId: n }) {
185
+ const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), s = await (await fetch(`${c}/backups/${e}/action/replication-retry?replicationId=${n}`, {
186
+ method: "POST",
187
+ credentials: "include",
188
+ headers: t
189
+ })).json();
190
+ if (!s.success)
191
+ throw new Error(s.error);
192
+ return s;
193
+ }
194
+ function Q() {
195
+ const e = d();
196
+ return a({
197
+ mutationFn: q,
198
+ onSuccess: (n, t) => {
199
+ console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
200
+ }
201
+ });
202
+ }
186
203
  export {
187
- S as cancelBackup,
188
- B as cancelBackupDownload,
189
- E as deleteBackup,
190
- g as generateBackupDownload,
191
- $ as getBackupDownload,
192
- k as getBackupProgress,
193
- F as getSnapshotFiles,
194
- j as updateBackup,
195
- D as useCancelBackup,
196
- O as useCancelBackupDownload,
197
- P as useDeleteBackup,
198
- R as useDownloadBackup,
199
- C as useGetBackupDownload,
200
- v as useGetBackupProgress,
201
- L as useGetBackupProgressOnce,
204
+ j as cancelBackup,
205
+ E as cancelBackupDownload,
206
+ B as deleteBackup,
207
+ b as generateBackupDownload,
208
+ g as getBackupDownload,
209
+ y as getBackupProgress,
210
+ S as getSnapshotFiles,
211
+ q as retryFailedReplications,
212
+ F as updateBackup,
213
+ G as useCancelBackup,
214
+ P as useCancelBackupDownload,
215
+ v as useDeleteBackup,
216
+ C as useDownloadBackup,
217
+ O as useGetBackupDownload,
218
+ L as useGetBackupProgress,
219
+ D as useGetBackupProgressOnce,
202
220
  U as useGetSnapshotFiles,
203
- G as useUpdateBackup
221
+ Q as useRetryFailedReplications,
222
+ K as useUpdateBackup
204
223
  };
205
224
  //# sourceMappingURL=backups.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backups.js","sources":["../../src/services/backups.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\n\r\nconst notifiedBackupProgress = new Set<string>();\r\n\r\n// Generate Download\r\nexport async function generateBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDownloadBackup() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: generateBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Get Download\r\nexport async function getBackupDownload(id: string) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}/action/download`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n if (!res.ok) {\r\n const data = await res.json();\r\n throw new Error(data.error);\r\n }\r\n\r\n const filename = res.headers.get('content-disposition')?.split('filename=')[1] || `backup-${id}.tar`;\r\n\r\n // Use streams API\r\n const reader = res.body?.getReader();\r\n const stream = new ReadableStream({\r\n async start(controller) {\r\n while (true) {\r\n const { done, value } = await reader!.read();\r\n if (done) break;\r\n controller.enqueue(value);\r\n }\r\n controller.close();\r\n reader!.releaseLock();\r\n },\r\n });\r\n\r\n // Create download from stream\r\n const blob = await new Response(stream).blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport function useGetBackupDownload() {\r\n return useMutation({\r\n mutationFn: getBackupDownload,\r\n onSuccess: (res) => {\r\n console.log('# Backup Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Cancel Download\r\nexport async function cancelBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackupDownload() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: cancelBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Backup\r\nexport async function deleteBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDeleteBackup() {\r\n return useMutation({\r\n mutationFn: deleteBackup,\r\n onSuccess: (res) => {\r\n console.log('# Backup Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getBackupProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/backups/${id}/progress?sourceId=${sourceId}&sourceType=${sourceType}&planId=${planId}`);\r\n\r\n const res = await fetch(url.toString(), {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n return data;\r\n}\r\n\r\nexport function useGetBackupProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n refetchInterval(query) {\r\n // Only refetch if the browser tab is active\r\n // if (document.hidden) return false;\r\n\r\n // console.log('query :', query.state?.data);\r\n const progressData = query.state?.data;\r\n\r\n // Check if backup is finished by looking for a \"finished\" phase event\r\n const isFinished = progressData?.events?.some((event: any) => event.phase === 'finished' && event.completed === true);\r\n\r\n if (isFinished) {\r\n const planId = progressData?.planId || payload.planId;\r\n if (!notifiedBackupProgress.has(payload.id)) {\r\n notifiedBackupProgress.add(payload.id);\r\n if (planId) {\r\n console.log('Invalidate Plan and Reload It :', planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n }\r\n toast.success('Process Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\n\r\nexport function useGetBackupProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Cancel Backup\r\nexport async function cancelBackup({ planId, backupId }: { planId: string; backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/cancel?planId=${planId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackup() {\r\n return useMutation({\r\n mutationFn: cancelBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Update Backup Title and Description\r\nexport async function updateBackup({ backupId, updatePayload }: { backupId: string; updatePayload: { title?: string; description?: string } }) {\r\n console.log('updatePayload :', updatePayload);\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n body: JSON.stringify(updatePayload),\r\n headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useUpdateBackup() {\r\n return useMutation({\r\n mutationFn: updateBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Snapshot Files\r\nexport async function getSnapshotFiles({ backupId }: { backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/files`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useGetSnapshotFiles(payload: { backupId: string }) {\r\n return useQuery({\r\n queryKey: ['snapshot-files', payload.backupId],\r\n queryFn: () => getSnapshotFiles(payload),\r\n refetchOnMount: true,\r\n staleTime: 1000 * 60 * 60, // Cache the data for 60 minutes\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedBackupProgress","generateBackupDownload","backupId","data","API_URL","useDownloadBackup","queryClient","useQueryClient","useMutation","res","payload","getBackupDownload","id","filename","_a","reader","_b","stream","controller","done","value","blob","url","link","useGetBackupDownload","cancelBackupDownload","useCancelBackupDownload","deleteBackup","header","useDeleteBackup","getBackupProgress","sourceId","sourceType","planId","useGetBackupProgress","useQuery","query","progressData","event","toast","useGetBackupProgressOnce","cancelBackup","useCancelBackup","updateBackup","updatePayload","useUpdateBackup","getSnapshotFiles","useGetSnapshotFiles"],"mappings":"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"}
1
+ {"version":3,"file":"backups.js","sources":["../../src/services/backups.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\n\r\nconst notifiedBackupProgress = new Set<string>();\r\n\r\n// Generate Download\r\nexport async function generateBackupDownload({ backupId, replicationId }: { backupId: string; planId: string; replicationId?: string }) {\r\n const url = `${API_URL}/backups/${backupId}/action/download?${replicationId ? `replicationId=${replicationId}` : ''}`;\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDownloadBackup() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: generateBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Get Download\r\nexport async function getBackupDownload(id: string) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}/action/download`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n if (!res.ok) {\r\n const data = await res.json();\r\n throw new Error(data.error);\r\n }\r\n\r\n const filename = res.headers.get('content-disposition')?.split('filename=')[1] || `backup-${id}.tar`;\r\n\r\n // Use streams API\r\n const reader = res.body?.getReader();\r\n const stream = new ReadableStream({\r\n async start(controller) {\r\n while (true) {\r\n const { done, value } = await reader!.read();\r\n if (done) break;\r\n controller.enqueue(value);\r\n }\r\n controller.close();\r\n reader!.releaseLock();\r\n },\r\n });\r\n\r\n // Create download from stream\r\n const blob = await new Response(stream).blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport function useGetBackupDownload() {\r\n return useMutation({\r\n mutationFn: getBackupDownload,\r\n onSuccess: (res) => {\r\n console.log('# Backup Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Cancel Download\r\nexport async function cancelBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackupDownload() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: cancelBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Backup\r\nexport async function deleteBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDeleteBackup() {\r\n return useMutation({\r\n mutationFn: deleteBackup,\r\n onSuccess: (res) => {\r\n console.log('# Backup Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getBackupProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/backups/${id}/progress?sourceId=${sourceId}&sourceType=${sourceType}&planId=${planId}`);\r\n\r\n const res = await fetch(url.toString(), {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n return data;\r\n}\r\n\r\nexport function useGetBackupProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n refetchInterval(query) {\r\n // Only refetch if the browser tab is active\r\n // if (document.hidden) return false;\r\n\r\n // console.log('query :', query.state?.data);\r\n const progressData = query.state?.data;\r\n\r\n // Check if backup is finished by looking for a \"finished\" phase event\r\n const isFinished = progressData?.events?.some((event: any) => event.phase === 'finished' && event.completed === true);\r\n\r\n if (isFinished) {\r\n const planId = progressData?.planId || payload.planId;\r\n if (!notifiedBackupProgress.has(payload.id)) {\r\n notifiedBackupProgress.add(payload.id);\r\n if (planId) {\r\n console.log('Invalidate Plan and Reload It :', planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n }\r\n toast.success('Process Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\n\r\nexport function useGetBackupProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Cancel Backup\r\nexport async function cancelBackup({ planId, backupId }: { planId: string; backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/cancel?planId=${planId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackup() {\r\n return useMutation({\r\n mutationFn: cancelBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Update Backup Title and Description\r\nexport async function updateBackup({ backupId, updatePayload }: { backupId: string; updatePayload: { title?: string; description?: string } }) {\r\n console.log('updatePayload :', updatePayload);\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n body: JSON.stringify(updatePayload),\r\n headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useUpdateBackup() {\r\n return useMutation({\r\n mutationFn: updateBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Snapshot Files\r\nexport async function getSnapshotFiles({ backupId, replicationId }: { backupId: string; replicationId?: string }) {\r\n const url = replicationId ? `${API_URL}/backups/${backupId}/files?replicationId=${replicationId}` : `${API_URL}/backups/${backupId}/files`;\r\n const res = await fetch(url, {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useGetSnapshotFiles(payload: { backupId: string }) {\r\n return useQuery({\r\n queryKey: ['snapshot-files', payload.backupId],\r\n queryFn: () => getSnapshotFiles(payload),\r\n refetchOnMount: true,\r\n staleTime: 1000 * 60 * 60, // Cache the data for 60 minutes\r\n retry: false,\r\n });\r\n}\r\n\r\n// Retry Failed Replications\r\nexport async function retryFailedReplications({ backupId, replicationId }: { backupId: string; planId: string; replicationId: string }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/replication-retry?replicationId=${replicationId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useRetryFailedReplications() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: retryFailedReplications,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n"],"names":["notifiedBackupProgress","generateBackupDownload","backupId","replicationId","url","API_URL","data","useDownloadBackup","queryClient","useQueryClient","useMutation","res","payload","getBackupDownload","id","filename","_a","reader","_b","stream","controller","done","value","blob","link","useGetBackupDownload","cancelBackupDownload","useCancelBackupDownload","deleteBackup","header","useDeleteBackup","getBackupProgress","sourceId","sourceType","planId","useGetBackupProgress","useQuery","query","progressData","event","toast","useGetBackupProgressOnce","cancelBackup","useCancelBackup","updateBackup","updatePayload","useUpdateBackup","getSnapshotFiles","useGetSnapshotFiles","retryFailedReplications","useRetryFailedReplications"],"mappings":"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"}
@@ -40,4 +40,24 @@ export declare function useCheckActiveBackupsOrRestore(): import("@tanstack/reac
40
40
  planId: string;
41
41
  type: "backup" | "restore";
42
42
  }, unknown>;
43
+ export declare function deleteReplicationStorage({ planID, storageID, storagePath, removeData, replicationId, }: {
44
+ planID: string;
45
+ storageID: string;
46
+ storagePath: string;
47
+ removeData: boolean;
48
+ replicationId?: string;
49
+ }): Promise<any>;
50
+ export declare function useDeleteReplicationStorage(): import("@tanstack/react-query").UseMutationResult<any, Error, {
51
+ planID: string;
52
+ storageID: string;
53
+ storagePath: string;
54
+ removeData: boolean;
55
+ replicationId?: string;
56
+ }, unknown>;
57
+ export declare function checkPlanIntegrity({ planId }: {
58
+ planId: string;
59
+ }): Promise<any>;
60
+ export declare function useCheckPlanIntegrity(): import("@tanstack/react-query").UseMutationResult<any, Error, {
61
+ planId: string;
62
+ }, unknown>;
43
63
  //# sourceMappingURL=plans.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/services/plans.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGxD,wBAAsB,WAAW,iBAYhC;AAED,wBAAgB,WAAW,+DAO1B;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAiB7C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,8DAQpC;AAGD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,gBAc/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,8DAO5C;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,iBAsChD;AAED,wBAAgB,kBAAkB,oFAUjC;AAGD,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,gBAcxD;AAED,wBAAgB,aAAa,4FAU5B;AAGD,wBAAsB,UAAU,CAAC,aAAa,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,gBAelF;AAED,wBAAgB,aAAa;QAjByB,MAAM;UAAQ,OAAO,CAAC,IAAI,CAAC;YAgChF;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,gBAYnG;AAED,wBAAgB,aAAa;QAdoC,MAAM;sBAAoB,OAAO;YAuBjG;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAU/B;AAGD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,gBAYzC;AAED,wBAAgB,YAAY,mFAU3B;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,gBAY1C;AAED,wBAAgB,aAAa,mFAU5B;AAGD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,gBAYzC;AAED,wBAAgB,YAAY,mFAc3B;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,gBAY1C;AAED,wBAAgB,aAAa,mFAc5B;AAGD,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,SAAoB,gBAatG;AAED,wBAAgB,8BAA8B;YAGC,MAAM;UAAQ,QAAQ,GAAG,SAAS;YAGhF"}
1
+ {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/services/plans.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGxD,wBAAsB,WAAW,iBAYhC;AAED,wBAAgB,WAAW,+DAO1B;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAiB7C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,8DAQpC;AAGD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,gBAc/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,8DAO5C;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,iBAsChD;AAED,wBAAgB,kBAAkB,oFAUjC;AAGD,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,gBAcxD;AAED,wBAAgB,aAAa,4FAU5B;AAGD,wBAAsB,UAAU,CAAC,aAAa,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,gBAelF;AAED,wBAAgB,aAAa;QAjByB,MAAM;UAAQ,OAAO,CAAC,IAAI,CAAC;YAgChF;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,gBAYnG;AAED,wBAAgB,aAAa;QAdoC,MAAM;sBAAoB,OAAO;YAuBjG;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAU/B;AAGD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,gBAYzC;AAED,wBAAgB,YAAY,mFAU3B;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,gBAY1C;AAED,wBAAgB,aAAa,mFAU5B;AAGD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,gBAYzC;AAED,wBAAgB,YAAY,mFAc3B;AAGD,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,gBAY1C;AAED,wBAAgB,aAAa,mFAc5B;AAGD,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,SAAoB,gBAatG;AAED,wBAAgB,8BAA8B;YAGC,MAAM;UAAQ,QAAQ,GAAG,SAAS;YAGhF;AAGD,wBAAsB,wBAAwB,CAAC,EAC5C,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,aAAa,GACf,EAAE;IACA,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACzB,gBAaA;AAED,wBAAgB,2BAA2B;YApBhC,MAAM;eACH,MAAM;iBACJ,MAAM;gBACP,OAAO;oBACH,MAAM;YA+BxB;AAED,wBAAsB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,gBAatE;AAED,wBAAgB,qBAAqB;YAf0B,MAAM;YA4BpE"}