@plutonhq/core-frontend 0.1.13 → 0.1.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 (186) 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 +85 -58
  58. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  59. package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
  60. package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
  61. package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
  62. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
  63. package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
  64. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
  65. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
  66. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
  67. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
  68. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
  69. package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
  70. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  71. package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
  72. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  73. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
  74. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
  75. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
  76. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
  77. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
  78. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
  79. package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
  80. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
  81. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
  82. package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
  83. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
  84. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
  85. package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
  86. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
  87. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
  88. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
  89. package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
  90. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
  91. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
  92. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
  93. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
  94. package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
  95. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
  96. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  97. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
  98. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
  99. package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
  100. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  101. package/dist-lib/components/common/Icon/Icon.js +11 -0
  102. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  103. package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
  104. package/dist-lib/components/index.d.ts +4 -0
  105. package/dist-lib/components/index.d.ts.map +1 -1
  106. package/dist-lib/components.js +86 -78
  107. package/dist-lib/components.js.map +1 -1
  108. package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
  109. package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
  110. package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
  111. package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
  112. package/dist-lib/router.d.ts.map +1 -1
  113. package/dist-lib/router.js +46 -35
  114. package/dist-lib/router.js.map +1 -1
  115. package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
  116. package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
  117. package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
  118. package/dist-lib/services/backups.d.ts +15 -2
  119. package/dist-lib/services/backups.d.ts.map +1 -1
  120. package/dist-lib/services/backups.js +119 -100
  121. package/dist-lib/services/backups.js.map +1 -1
  122. package/dist-lib/services/plans.d.ts +14 -0
  123. package/dist-lib/services/plans.d.ts.map +1 -1
  124. package/dist-lib/services/plans.js +160 -129
  125. package/dist-lib/services/plans.js.map +1 -1
  126. package/dist-lib/services/restores.d.ts +10 -2
  127. package/dist-lib/services/restores.d.ts.map +1 -1
  128. package/dist-lib/services/restores.js +61 -57
  129. package/dist-lib/services/restores.js.map +1 -1
  130. package/dist-lib/services/users.d.ts.map +1 -1
  131. package/dist-lib/services/users.js +32 -32
  132. package/dist-lib/services/users.js.map +1 -1
  133. package/dist-lib/services.js +107 -103
  134. package/dist-lib/styles/core-frontend.css +1 -1
  135. package/dist-lib/utils/progressHelpers.d.ts +12 -1
  136. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  137. package/dist-lib/utils/progressHelpers.js +121 -63
  138. package/dist-lib/utils/progressHelpers.js.map +1 -1
  139. package/dist-lib/utils.js +29 -28
  140. package/package.json +1 -1
  141. package/src/@types/backups.ts +28 -0
  142. package/src/@types/devices.ts +8 -0
  143. package/src/@types/plans.ts +23 -1
  144. package/src/@types/restores.ts +2 -0
  145. package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
  146. package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
  147. package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
  148. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
  149. package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
  150. package/src/components/Plan/Backups/Backups.tsx +52 -4
  151. package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
  152. package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
  153. package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
  154. package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
  155. package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
  156. package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
  157. package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
  158. package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
  159. package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
  160. package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
  161. package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
  162. package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
  163. package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
  164. package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
  165. package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
  166. package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
  167. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
  168. package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
  169. package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
  170. package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
  171. package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
  172. package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
  173. package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
  174. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
  175. package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
  176. package/src/components/common/Icon/Icon.tsx +10 -1
  177. package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
  178. package/src/components/index.ts +6 -0
  179. package/src/hooks/usePwaAutoUpdate.ts +51 -11
  180. package/src/router.tsx +26 -17
  181. package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
  182. package/src/services/backups.ts +32 -9
  183. package/src/services/plans.ts +45 -0
  184. package/src/services/restores.ts +10 -2
  185. package/src/services/users.ts +14 -5
  186. package/src/utils/progressHelpers.ts +85 -1
@@ -1 +1 @@
1
- {"version":3,"file":"restores.d.ts","sourceRoot":"","sources":["../../src/services/restores.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,iBAYnC;AAED,wBAAgB,cAAc,+DAO7B;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,gBAehD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8DAQvC;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAO/B;AAGD,wBAAsB,aAAa,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,GACd,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACxB,gBAaA;AAED,wBAAgB,gBAAgB;cAtBnB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;kBACL,OAAO;YAyBvB;AAGD,wBAAsB,kBAAkB,CAAC,EACtC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,GACd,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACzB,gBAaA;AAED,wBAAgB,qBAAqB;cAtBxB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;mBACJ,OAAO;YAuBxB;AAGD,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,gBAc/C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,8DAQ5C;AAGD,wBAAsB,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,gBAY/F;AACD,wBAAgB,gBAAgB;YAbqC,MAAM;eAAa,MAAM;YAoB7F;AAGD,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gBASlJ;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAgClH;AACD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAOtH"}
1
+ {"version":3,"file":"restores.d.ts","sourceRoot":"","sources":["../../src/services/restores.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,iBAYnC;AAED,wBAAgB,cAAc,+DAO7B;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,gBAehD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8DAQvC;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAO/B;AAGD,wBAAsB,aAAa,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,GACf,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACzB,gBAaA;AAED,wBAAgB,gBAAgB;cAxBnB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;kBACL,OAAO;gBACT,MAAM;oBACF,MAAM;YAyBxB;AAGD,wBAAsB,kBAAkB,CAAC,EACtC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,GACf,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACzB,gBAaA;AAED,wBAAgB,qBAAqB;cAxBxB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;mBACJ,OAAO;gBACV,MAAM;oBACF,MAAM;YAuBxB;AAGD,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,gBAc/C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,8DAQ5C;AAGD,wBAAsB,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,gBAY/F;AACD,wBAAgB,gBAAgB;YAbqC,MAAM;eAAa,MAAM;YAoB7F;AAGD,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gBASlJ;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAgClH;AACD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAOtH"}
@@ -1,8 +1,8 @@
1
- import { useQuery as d, useMutation as l, useQueryClient as h } from "@tanstack/react-query";
2
- import { toast as p } from "react-toastify";
1
+ import { useQuery as d, useMutation as l, useQueryClient as y } from "@tanstack/react-query";
2
+ import { toast as m } from "react-toastify";
3
3
  import { API_URL as o } from "../utils/constants.js";
4
- const f = /* @__PURE__ */ new Set();
5
- async function R() {
4
+ const w = /* @__PURE__ */ new Set();
5
+ async function g() {
6
6
  const e = new URL(`${o}/restores`), s = await (await fetch(e.toString(), {
7
7
  method: "GET",
8
8
  credentials: "include"
@@ -11,15 +11,15 @@ async function R() {
11
11
  throw new Error(s.error);
12
12
  return s;
13
13
  }
14
- function F() {
14
+ function P() {
15
15
  return d({
16
16
  queryKey: ["restores"],
17
- queryFn: () => R(),
17
+ queryFn: () => g(),
18
18
  refetchOnMount: !0,
19
19
  retry: !1
20
20
  });
21
21
  }
22
- async function m(e) {
22
+ async function S(e) {
23
23
  if (!e)
24
24
  throw new Error("ID Not Provided.");
25
25
  const r = new URL(`${o}/restores/${e}`), t = await (await fetch(r.toString(), {
@@ -30,16 +30,16 @@ async function m(e) {
30
30
  throw new Error(t.error);
31
31
  return t;
32
32
  }
33
- function O(e) {
33
+ function G(e) {
34
34
  return d({
35
35
  queryKey: ["restore", e],
36
- queryFn: () => m(e),
36
+ queryFn: () => S(e),
37
37
  refetchOnMount: !0,
38
38
  retry: !1,
39
39
  staleTime: 0
40
40
  });
41
41
  }
42
- async function g(e) {
42
+ async function $(e) {
43
43
  const r = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), t = await (await fetch(`${o}/restores/${e}`, {
44
44
  method: "DELETE",
45
45
  credentials: "include",
@@ -49,70 +49,74 @@ async function g(e) {
49
49
  throw new Error(t.error);
50
50
  return t;
51
51
  }
52
- function P() {
52
+ function C() {
53
53
  return l({
54
- mutationFn: g,
54
+ mutationFn: $,
55
55
  onSuccess: (e) => {
56
56
  console.log("# Restore Removed! :", e);
57
57
  }
58
58
  });
59
59
  }
60
- async function S({
60
+ async function E({
61
61
  backupId: e,
62
62
  planId: r,
63
63
  target: s,
64
64
  overwrite: t,
65
65
  includes: u,
66
66
  excludes: c,
67
- deleteOption: a
67
+ deleteOption: a,
68
+ storageId: n,
69
+ replicationId: f
68
70
  }) {
69
- const n = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/restore`, {
71
+ const h = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/restore`, {
70
72
  method: "POST",
71
73
  credentials: "include",
72
- headers: n,
73
- body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a })
74
+ headers: h,
75
+ body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a, storageId: n, replicationId: f })
74
76
  })).json();
75
77
  if (!i.success)
76
78
  throw new Error(i.error);
77
79
  return i;
78
80
  }
79
- function G() {
80
- const e = h();
81
+ function v() {
82
+ const e = y();
81
83
  return l({
82
- mutationFn: S,
84
+ mutationFn: E,
83
85
  onSuccess: (r, s) => {
84
86
  console.log("# Backup Restored! :", r, s), e.invalidateQueries({ queryKey: ["plan", s.planId] });
85
87
  }
86
88
  });
87
89
  }
88
- async function $({
90
+ async function j({
89
91
  backupId: e,
90
92
  planId: r,
91
93
  target: s,
92
94
  overwrite: t,
93
95
  includes: u,
94
96
  excludes: c,
95
- deleteOption: a
97
+ deleteOption: a,
98
+ storageId: n,
99
+ replicationId: f
96
100
  }) {
97
- const n = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/dryrestore`, {
101
+ const h = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/dryrestore`, {
98
102
  method: "POST",
99
103
  credentials: "include",
100
- headers: n,
101
- body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a })
104
+ headers: h,
105
+ body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a, storageId: n, replicationId: f })
102
106
  })).json();
103
107
  if (!i.success)
104
108
  throw new Error(i.error);
105
109
  return i;
106
110
  }
107
- function C() {
111
+ function K() {
108
112
  return l({
109
- mutationFn: $,
113
+ mutationFn: j,
110
114
  onSuccess: (e, r) => {
111
115
  console.log("# Backup Restore Stats! :", e, r);
112
116
  }
113
117
  });
114
118
  }
115
- async function E(e) {
119
+ async function q(e) {
116
120
  if (!e)
117
121
  throw new Error("ID Not Provided.");
118
122
  const s = await (await fetch(`${o}/restores/${e}/stats`, {
@@ -123,16 +127,16 @@ async function E(e) {
123
127
  throw new Error(s.error);
124
128
  return s;
125
129
  }
126
- function v(e) {
130
+ function M(e) {
127
131
  return d({
128
132
  queryKey: ["restore-stats", e],
129
- queryFn: () => E(e),
133
+ queryFn: () => q(e),
130
134
  refetchOnMount: !0,
131
135
  retry: !1,
132
136
  staleTime: 0
133
137
  });
134
138
  }
135
- async function j({ planId: e, restoreId: r }) {
139
+ async function T({ planId: e, restoreId: r }) {
136
140
  const t = await (await fetch(`${o}/restores/${r}/action/cancel?planId=${e}`, {
137
141
  method: "POST",
138
142
  credentials: "include"
@@ -142,26 +146,26 @@ async function j({ planId: e, restoreId: r }) {
142
146
  throw new Error(t.error);
143
147
  return t;
144
148
  }
145
- function K() {
149
+ function A() {
146
150
  return l({
147
- mutationFn: j,
151
+ mutationFn: T,
148
152
  onSuccess: (e, r) => {
149
153
  console.log("res :", r, e);
150
154
  }
151
155
  });
152
156
  }
153
- async function w({ id: e, sourceId: r, sourceType: s, planId: t }) {
157
+ async function p({ id: e, sourceId: r, sourceType: s, planId: t }) {
154
158
  const u = new URL(`${o}/restores/${e}/progress?sourceId=${r}&sourceType=${s}&planId=${t}`);
155
159
  return await (await fetch(u.toString(), {
156
160
  method: "GET",
157
161
  credentials: "include"
158
162
  })).json();
159
163
  }
160
- function M(e) {
161
- const r = h();
164
+ function L(e) {
165
+ const r = y();
162
166
  return d({
163
167
  queryKey: ["progress-restore", e.id],
164
- queryFn: () => w(e),
168
+ queryFn: () => p(e),
165
169
  refetchOnMount: !0,
166
170
  retry: !1,
167
171
  refetchInterval(s) {
@@ -169,37 +173,37 @@ function M(e) {
169
173
  const t = (c = s.state) == null ? void 0 : c.data;
170
174
  if ((a = t == null ? void 0 : t.events) == null ? void 0 : a.some((n) => n.phase === "finished" && n.completed === !0)) {
171
175
  const n = (t == null ? void 0 : t.planId) || e.planId;
172
- return f.has(e.id) || (f.add(e.id), n && (console.log("Invalidate Plan and Reload It :", n), r.invalidateQueries({ queryKey: ["plan", n] })), p.success("Restoration Complete!")), !1;
176
+ return w.has(e.id) || (w.add(e.id), n && (console.log("Invalidate Plan and Reload It :", n), r.invalidateQueries({ queryKey: ["plan", n] })), m.success("Restoration Complete!")), !1;
173
177
  }
174
178
  return 1e3;
175
179
  }
176
180
  });
177
181
  }
178
- function A(e) {
182
+ function k(e) {
179
183
  return d({
180
184
  queryKey: ["progress-restore", e.id],
181
- queryFn: () => w(e),
185
+ queryFn: () => p(e),
182
186
  refetchOnMount: !0,
183
187
  retry: !1
184
188
  });
185
189
  }
186
190
  export {
187
- j as cancelRestore,
188
- g as deleteRestore,
189
- R as getAllRestores,
190
- $ as getDryRestoreStats,
191
- w as getRestoreProgress,
192
- E as getRestoreStats,
193
- m as getSingleRestore,
194
- S as restoreBackup,
195
- K as useCancelRestore,
196
- P as useDeleteRestore,
197
- C as useGetDryRestoreStats,
198
- O as useGetRestore,
199
- M as useGetRestoreProgress,
200
- A as useGetRestoreProgressOnce,
201
- v as useGetRestoreStats,
202
- F as useGetRestores,
203
- G as useRestoreBackup
191
+ T as cancelRestore,
192
+ $ as deleteRestore,
193
+ g as getAllRestores,
194
+ j as getDryRestoreStats,
195
+ p as getRestoreProgress,
196
+ q as getRestoreStats,
197
+ S as getSingleRestore,
198
+ E as restoreBackup,
199
+ A as useCancelRestore,
200
+ C as useDeleteRestore,
201
+ K as useGetDryRestoreStats,
202
+ G as useGetRestore,
203
+ L as useGetRestoreProgress,
204
+ k as useGetRestoreProgressOnce,
205
+ M as useGetRestoreStats,
206
+ P as useGetRestores,
207
+ v as useRestoreBackup
204
208
  };
205
209
  //# sourceMappingURL=restores.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restores.js","sources":["../../src/services/restores.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 notifiedRestoreProgress = new Set<string>();\r\n\r\n// Get All Restores\r\nexport async function getAllRestores() {\r\n const url = new URL(`${API_URL}/restores`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestores() {\r\n return useQuery({\r\n queryKey: ['restores'],\r\n queryFn: () => getAllRestores(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Restore\r\nexport async function getSingleRestore(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/restores/${id}`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestore(id: string) {\r\n return useQuery({\r\n queryKey: ['restore', id],\r\n queryFn: () => getSingleRestore(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Remove Restore\r\nexport async function deleteRestore(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/${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 useDeleteRestore() {\r\n return useMutation({\r\n mutationFn: deleteRestore,\r\n onSuccess: (res) => {\r\n console.log('# Restore Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Restore Backup\r\nexport async function restoreBackup({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption: boolean;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption }),\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 useRestoreBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: restoreBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restored! :', res, payload);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// DRY Restore Backup\r\nexport async function getDryRestoreStats({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption?: boolean;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/dryrestore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption }),\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 useGetDryRestoreStats() {\r\n return useMutation({\r\n mutationFn: getDryRestoreStats,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restore Stats! :', res, payload);\r\n },\r\n });\r\n}\r\n\r\n// Get Restore Stats\r\nexport async function getRestoreStats(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n\r\n const res = await fetch(`${API_URL}/restores/${id}/stats`, {\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\n\r\nexport function useGetRestoreStats(id: string) {\r\n return useQuery({\r\n queryKey: ['restore-stats', id],\r\n queryFn: () => getRestoreStats(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Cancel Restore\r\nexport async function cancelRestore({ planId, restoreId }: { planId: string; restoreId: string }) {\r\n const res = await fetch(`${API_URL}/restores/${restoreId}/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 useCancelRestore() {\r\n return useMutation({\r\n mutationFn: cancelRestore,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getRestoreProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/restores/${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 useGetRestoreProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(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 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 (!notifiedRestoreProgress.has(payload.id)) {\r\n notifiedRestoreProgress.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('Restoration Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\nexport function useGetRestoreProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedRestoreProgress","getAllRestores","url","API_URL","data","useGetRestores","useQuery","getSingleRestore","id","useGetRestore","deleteRestore","header","useDeleteRestore","useMutation","res","restoreBackup","backupId","planId","target","overwrite","includes","excludes","deleteOption","useRestoreBackup","queryClient","useQueryClient","payload","getDryRestoreStats","useGetDryRestoreStats","getRestoreStats","useGetRestoreStats","cancelRestore","restoreId","useCancelRestore","getRestoreProgress","sourceId","sourceType","useGetRestoreProgress","query","progressData","_a","_b","event","toast","useGetRestoreProgressOnce"],"mappings":"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"}
1
+ {"version":3,"file":"restores.js","sources":["../../src/services/restores.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 notifiedRestoreProgress = new Set<string>();\r\n\r\n// Get All Restores\r\nexport async function getAllRestores() {\r\n const url = new URL(`${API_URL}/restores`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestores() {\r\n return useQuery({\r\n queryKey: ['restores'],\r\n queryFn: () => getAllRestores(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Restore\r\nexport async function getSingleRestore(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/restores/${id}`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestore(id: string) {\r\n return useQuery({\r\n queryKey: ['restore', id],\r\n queryFn: () => getSingleRestore(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Remove Restore\r\nexport async function deleteRestore(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/${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 useDeleteRestore() {\r\n return useMutation({\r\n mutationFn: deleteRestore,\r\n onSuccess: (res) => {\r\n console.log('# Restore Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Restore Backup\r\nexport async function restoreBackup({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n storageId,\r\n replicationId,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption: boolean;\r\n storageId?: string;\r\n replicationId?: string;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption, storageId, replicationId }),\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 useRestoreBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: restoreBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restored! :', res, payload);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// DRY Restore Backup\r\nexport async function getDryRestoreStats({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n storageId,\r\n replicationId,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption?: boolean;\r\n storageId?: string;\r\n replicationId?: string;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/dryrestore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption, storageId, replicationId }),\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 useGetDryRestoreStats() {\r\n return useMutation({\r\n mutationFn: getDryRestoreStats,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restore Stats! :', res, payload);\r\n },\r\n });\r\n}\r\n\r\n// Get Restore Stats\r\nexport async function getRestoreStats(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n\r\n const res = await fetch(`${API_URL}/restores/${id}/stats`, {\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\n\r\nexport function useGetRestoreStats(id: string) {\r\n return useQuery({\r\n queryKey: ['restore-stats', id],\r\n queryFn: () => getRestoreStats(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Cancel Restore\r\nexport async function cancelRestore({ planId, restoreId }: { planId: string; restoreId: string }) {\r\n const res = await fetch(`${API_URL}/restores/${restoreId}/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 useCancelRestore() {\r\n return useMutation({\r\n mutationFn: cancelRestore,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getRestoreProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/restores/${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 useGetRestoreProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(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 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 (!notifiedRestoreProgress.has(payload.id)) {\r\n notifiedRestoreProgress.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('Restoration Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\nexport function useGetRestoreProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedRestoreProgress","getAllRestores","url","API_URL","data","useGetRestores","useQuery","getSingleRestore","id","useGetRestore","deleteRestore","header","useDeleteRestore","useMutation","res","restoreBackup","backupId","planId","target","overwrite","includes","excludes","deleteOption","storageId","replicationId","useRestoreBackup","queryClient","useQueryClient","payload","getDryRestoreStats","useGetDryRestoreStats","getRestoreStats","useGetRestoreStats","cancelRestore","restoreId","useCancelRestore","getRestoreProgress","sourceId","sourceType","useGetRestoreProgress","query","progressData","_a","_b","event","toast","useGetRestoreProgressOnce"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAGtD,wBAAsB,YAAY,iBAmBjC;AAED,wBAAgB,OAAO,+DAOtB;AAGD,wBAAsB,SAAS,CAAC,WAAW,EAAE,gBAAgB,gBAa5D;AAGD,wBAAgB,QAAQ,6FAavB;AAGD,wBAAsB,UAAU,iBAU/B;AAED,wBAAgB,SAAS,iFAQxB"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAGtD,wBAAsB,YAAY,iBAyBjC;AAED,wBAAgB,OAAO,+DAOtB;AAGD,wBAAsB,SAAS,CAAC,WAAW,EAAE,gBAAgB,gBAa5D;AAGD,wBAAgB,QAAQ,6FAcvB;AAGD,wBAAsB,UAAU,iBAU/B;AAED,wBAAgB,SAAS,iFAUxB"}
@@ -1,27 +1,27 @@
1
- import { API_URL as o } from "../utils/constants.js";
2
- import { useQuery as i, useMutation as s } from "@tanstack/react-query";
1
+ import { API_URL as r } from "../utils/constants.js";
2
+ import { useQuery as c, useQueryClient as i, useMutation as u } from "@tanstack/react-query";
3
3
  import { useNavigate as a } from "react-router";
4
- async function u() {
5
- const e = await fetch(`${o}/user/validate`, { method: "GET", credentials: "include" });
6
- if (!e.ok)
4
+ async function d() {
5
+ const e = await fetch(`${r}/user/validate`, { method: "GET", credentials: "include" }), t = e.headers.get("x-app-version"), o = e.headers.get("x-server-os"), n = e.headers.get("x-install-type") || "dev", s = e.headers.get("x-setup-pending") === "1";
6
+ if (window.plutonVersion = t || "unknown", window.plutonServerOS = o || "unknown", window.plutonInstallType = n, window.plutonSetupPending = s, !e.ok)
7
7
  throw new Error("Invalid authentication");
8
- const t = e.headers.get("x-app-version"), r = e.headers.get("x-server-os"), n = e.headers.get("x-install-type") || "dev";
9
- return window.plutonVersion = t || "unknown", window.plutonServerOS = r || "unknown", window.plutonInstallType = n, {
8
+ return {
10
9
  ...await e.json(),
11
10
  appVersion: t,
12
- installType: n
11
+ installType: n,
12
+ setupPending: s
13
13
  };
14
14
  }
15
- function h() {
16
- return i({
15
+ function g() {
16
+ return c({
17
17
  queryKey: ["auth"],
18
- queryFn: u,
18
+ queryFn: d,
19
19
  refetchOnMount: !0,
20
20
  retry: !1
21
21
  });
22
22
  }
23
- async function c(e) {
24
- const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), n = await (await fetch(`${o}/user/login`, {
23
+ async function l(e) {
24
+ const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), n = await (await fetch(`${r}/user/login`, {
25
25
  method: "POST",
26
26
  credentials: "include",
27
27
  headers: t,
@@ -31,17 +31,17 @@ async function c(e) {
31
31
  throw new Error(n.error);
32
32
  return n;
33
33
  }
34
- function g() {
35
- const e = a();
36
- return s({
37
- mutationFn: c,
38
- onSuccess: (t) => {
39
- console.log("res :", t), t.totpRequired ? e("/login/verify-otp") : e("/");
34
+ function v() {
35
+ const e = a(), t = i();
36
+ return u({
37
+ mutationFn: l,
38
+ onSuccess: (o) => {
39
+ t.removeQueries({ queryKey: ["auth"] }), o.totpRequired ? e("/login/verify-otp") : e("/");
40
40
  }
41
41
  });
42
42
  }
43
- async function l() {
44
- const t = await (await fetch(`${o}/user/logout`, {
43
+ async function p() {
44
+ const t = await (await fetch(`${r}/user/logout`, {
45
45
  method: "POST",
46
46
  credentials: "include"
47
47
  })).json();
@@ -49,21 +49,21 @@ async function l() {
49
49
  throw new Error(t.error);
50
50
  return t;
51
51
  }
52
- function y() {
53
- const e = a();
54
- return s({
55
- mutationFn: l,
52
+ function m() {
53
+ const e = a(), t = i();
54
+ return u({
55
+ mutationFn: p,
56
56
  onSuccess: () => {
57
- e("/login");
57
+ t.removeQueries({ queryKey: ["auth"] }), e("/login");
58
58
  }
59
59
  });
60
60
  }
61
61
  export {
62
- c as loginUser,
63
- l as logoutUser,
64
- h as useAuth,
65
- g as useLogin,
66
- y as useLogout,
67
- u as validateAuth
62
+ l as loginUser,
63
+ p as logoutUser,
64
+ g as useAuth,
65
+ v as useLogin,
66
+ m as useLogout,
67
+ d as validateAuth
68
68
  };
69
69
  //# sourceMappingURL=users.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sources":["../../src/services/users.ts"],"sourcesContent":["import { API_URL } from '../utils/constants';\r\nimport { useQuery, useMutation } from '@tanstack/react-query';\r\nimport { useNavigate } from 'react-router';\r\n\r\ninterface LoginCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport type InstallType = 'docker' | 'binary' | 'dev';\r\n\r\n//VALIDATE USER\r\nexport async function validateAuth() {\r\n const res = await fetch(`${API_URL}/user/validate`, { method: 'GET', credentials: 'include' });\r\n if (!res.ok) {\r\n throw new Error('Invalid authentication');\r\n }\r\n const appVersion = res.headers.get('x-app-version');\r\n const serverOS = res.headers.get('x-server-os');\r\n const installType = (res.headers.get('x-install-type') || 'dev') as InstallType;\r\n\r\n (window as any).plutonVersion = appVersion || 'unknown';\r\n (window as any).plutonServerOS = serverOS || 'unknown';\r\n (window as any).plutonInstallType = installType;\r\n\r\n const data = await res.json();\r\n return {\r\n ...data,\r\n appVersion,\r\n installType,\r\n };\r\n}\r\n\r\nexport function useAuth() {\r\n return useQuery({\r\n queryKey: ['auth'],\r\n queryFn: validateAuth,\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// LOGIN USER\r\nexport async function loginUser(credentials: LoginCredentials) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/user/login`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify(credentials),\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\n// Add this new hook\r\nexport function useLogin() {\r\n const navigate = useNavigate();\r\n return useMutation({\r\n mutationFn: loginUser,\r\n onSuccess: (res) => {\r\n console.log('res :', res);\r\n if (res.totpRequired) {\r\n navigate('/login/verify-otp');\r\n } else {\r\n navigate('/');\r\n }\r\n },\r\n });\r\n}\r\n\r\n// LOGOUT USER\r\nexport async function logoutUser() {\r\n const res = await fetch(`${API_URL}/user/logout`, {\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 useLogout() {\r\n const navigate = useNavigate();\r\n return useMutation({\r\n mutationFn: logoutUser,\r\n onSuccess: () => {\r\n navigate('/login');\r\n },\r\n });\r\n}\r\n"],"names":["validateAuth","res","API_URL","appVersion","serverOS","installType","useAuth","useQuery","loginUser","credentials","header","data","useLogin","navigate","useNavigate","useMutation","logoutUser","useLogout"],"mappings":";;;AAYA,eAAsBA,IAAe;AAClC,QAAMC,IAAM,MAAM,MAAM,GAAGC,CAAO,kBAAkB,EAAE,QAAQ,OAAO,aAAa,UAAA,CAAW;AAC7F,MAAI,CAACD,EAAI;AACN,UAAM,IAAI,MAAM,wBAAwB;AAE3C,QAAME,IAAaF,EAAI,QAAQ,IAAI,eAAe,GAC5CG,IAAWH,EAAI,QAAQ,IAAI,aAAa,GACxCI,IAAeJ,EAAI,QAAQ,IAAI,gBAAgB,KAAK;AAEzD,gBAAe,gBAAgBE,KAAc,WAC7C,OAAe,iBAAiBC,KAAY,WAC5C,OAAe,oBAAoBC,GAG7B;AAAA,IACJ,GAFU,MAAMJ,EAAI,KAAA;AAAA,IAGpB,YAAAE;AAAA,IACA,aAAAE;AAAA,EAAA;AAEN;AAEO,SAASC,IAAU;AACvB,SAAOC,EAAS;AAAA,IACb,UAAU,CAAC,MAAM;AAAA,IACjB,SAASP;AAAA,IACT,gBAAgB;AAAA,IAChB,OAAO;AAAA,EAAA,CACT;AACJ;AAGA,eAAsBQ,EAAUC,GAA+B;AAC5D,QAAMC,IAAS,IAAI,QAAQ,EAAE,gBAAgB,oBAAoB,QAAQ,oBAAoB,GAOvFC,IAAO,OAND,MAAM,MAAM,GAAGT,CAAO,eAAe;AAAA,IAC9C,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAASQ;AAAA,IACT,MAAM,KAAK,UAAUD,CAAW;AAAA,EAAA,CAClC,GACsB,KAAA;AACvB,MAAI,CAACE,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAGO,SAASC,IAAW;AACxB,QAAMC,IAAWC,EAAA;AACjB,SAAOC,EAAY;AAAA,IAChB,YAAYP;AAAA,IACZ,WAAW,CAACP,MAAQ;AACjB,cAAQ,IAAI,SAASA,CAAG,GACpBA,EAAI,eACLY,EAAS,mBAAmB,IAE5BA,EAAS,GAAG;AAAA,IAElB;AAAA,EAAA,CACF;AACJ;AAGA,eAAsBG,IAAa;AAKhC,QAAML,IAAO,OAJD,MAAM,MAAM,GAAGT,CAAO,gBAAgB;AAAA,IAC/C,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA,CACf,GACsB,KAAA;AACvB,MAAI,CAACS,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAEO,SAASM,IAAY;AACzB,QAAMJ,IAAWC,EAAA;AACjB,SAAOC,EAAY;AAAA,IAChB,YAAYC;AAAA,IACZ,WAAW,MAAM;AACd,MAAAH,EAAS,QAAQ;AAAA,IACpB;AAAA,EAAA,CACF;AACJ;"}
1
+ {"version":3,"file":"users.js","sources":["../../src/services/users.ts"],"sourcesContent":["import { API_URL } from '../utils/constants';\r\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { useNavigate } from 'react-router';\r\n\r\ninterface LoginCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport type InstallType = 'docker' | 'binary' | 'dev';\r\n\r\n//VALIDATE USER\r\nexport async function validateAuth() {\r\n const res = await fetch(`${API_URL}/user/validate`, { method: 'GET', credentials: 'include' });\r\n\r\n // Read headers before checking status - middleware sets these on all responses\r\n const appVersion = res.headers.get('x-app-version');\r\n const serverOS = res.headers.get('x-server-os');\r\n const installType = (res.headers.get('x-install-type') || 'dev') as InstallType;\r\n const setupPending = res.headers.get('x-setup-pending') === '1';\r\n\r\n (window as any).plutonVersion = appVersion || 'unknown';\r\n (window as any).plutonServerOS = serverOS || 'unknown';\r\n (window as any).plutonInstallType = installType;\r\n (window as any).plutonSetupPending = setupPending;\r\n\r\n if (!res.ok) {\r\n throw new Error('Invalid authentication');\r\n }\r\n\r\n const data = await res.json();\r\n return {\r\n ...data,\r\n appVersion,\r\n installType,\r\n setupPending,\r\n };\r\n}\r\n\r\nexport function useAuth() {\r\n return useQuery({\r\n queryKey: ['auth'],\r\n queryFn: validateAuth,\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// LOGIN USER\r\nexport async function loginUser(credentials: LoginCredentials) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/user/login`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify(credentials),\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\n// Add this new hook\r\nexport function useLogin() {\r\n const navigate = useNavigate();\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: loginUser,\r\n onSuccess: (res) => {\r\n queryClient.removeQueries({ queryKey: ['auth'] });\r\n if (res.totpRequired) {\r\n navigate('/login/verify-otp');\r\n } else {\r\n navigate('/');\r\n }\r\n },\r\n });\r\n}\r\n\r\n// LOGOUT USER\r\nexport async function logoutUser() {\r\n const res = await fetch(`${API_URL}/user/logout`, {\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 useLogout() {\r\n const navigate = useNavigate();\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: logoutUser,\r\n onSuccess: () => {\r\n queryClient.removeQueries({ queryKey: ['auth'] });\r\n navigate('/login');\r\n },\r\n });\r\n}\r\n"],"names":["validateAuth","res","API_URL","appVersion","serverOS","installType","setupPending","useAuth","useQuery","loginUser","credentials","header","data","useLogin","navigate","useNavigate","queryClient","useQueryClient","useMutation","logoutUser","useLogout"],"mappings":";;;AAYA,eAAsBA,IAAe;AAClC,QAAMC,IAAM,MAAM,MAAM,GAAGC,CAAO,kBAAkB,EAAE,QAAQ,OAAO,aAAa,UAAA,CAAW,GAGvFC,IAAaF,EAAI,QAAQ,IAAI,eAAe,GAC5CG,IAAWH,EAAI,QAAQ,IAAI,aAAa,GACxCI,IAAeJ,EAAI,QAAQ,IAAI,gBAAgB,KAAK,OACpDK,IAAeL,EAAI,QAAQ,IAAI,iBAAiB,MAAM;AAO5D,MALC,OAAe,gBAAgBE,KAAc,WAC7C,OAAe,iBAAiBC,KAAY,WAC5C,OAAe,oBAAoBC,GACnC,OAAe,qBAAqBC,GAEjC,CAACL,EAAI;AACN,UAAM,IAAI,MAAM,wBAAwB;AAI3C,SAAO;AAAA,IACJ,GAFU,MAAMA,EAAI,KAAA;AAAA,IAGpB,YAAAE;AAAA,IACA,aAAAE;AAAA,IACA,cAAAC;AAAA,EAAA;AAEN;AAEO,SAASC,IAAU;AACvB,SAAOC,EAAS;AAAA,IACb,UAAU,CAAC,MAAM;AAAA,IACjB,SAASR;AAAA,IACT,gBAAgB;AAAA,IAChB,OAAO;AAAA,EAAA,CACT;AACJ;AAGA,eAAsBS,EAAUC,GAA+B;AAC5D,QAAMC,IAAS,IAAI,QAAQ,EAAE,gBAAgB,oBAAoB,QAAQ,oBAAoB,GAOvFC,IAAO,OAND,MAAM,MAAM,GAAGV,CAAO,eAAe;AAAA,IAC9C,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAASS;AAAA,IACT,MAAM,KAAK,UAAUD,CAAW;AAAA,EAAA,CAClC,GACsB,KAAA;AACvB,MAAI,CAACE,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAGO,SAASC,IAAW;AACxB,QAAMC,IAAWC,EAAA,GACXC,IAAcC,EAAA;AACpB,SAAOC,EAAY;AAAA,IAChB,YAAYT;AAAA,IACZ,WAAW,CAACR,MAAQ;AACjB,MAAAe,EAAY,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,GAC5Cf,EAAI,eACLa,EAAS,mBAAmB,IAE5BA,EAAS,GAAG;AAAA,IAElB;AAAA,EAAA,CACF;AACJ;AAGA,eAAsBK,IAAa;AAKhC,QAAMP,IAAO,OAJD,MAAM,MAAM,GAAGV,CAAO,gBAAgB;AAAA,IAC/C,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA,CACf,GACsB,KAAA;AACvB,MAAI,CAACU,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAEO,SAASQ,IAAY;AACzB,QAAMN,IAAWC,EAAA,GACXC,IAAcC,EAAA;AACpB,SAAOC,EAAY;AAAA,IAChB,YAAYC;AAAA,IACZ,WAAW,MAAM;AACd,MAAAH,EAAY,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,GAChDF,EAAS,QAAQ;AAAA,IACpB;AAAA,EAAA,CACF;AACJ;"}