@plutonhq/core-backend 0.1.14 → 0.1.16

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 (196) hide show
  1. package/dist/controllers/BackupController.d.ts +1 -0
  2. package/dist/controllers/BackupController.d.ts.map +1 -1
  3. package/dist/controllers/BackupController.js +1 -1
  4. package/dist/controllers/BackupController.js.map +1 -1
  5. package/dist/controllers/PlanController.d.ts +2 -0
  6. package/dist/controllers/PlanController.d.ts.map +1 -1
  7. package/dist/controllers/PlanController.js +1 -1
  8. package/dist/controllers/PlanController.js.map +1 -1
  9. package/dist/controllers/RestoreController.d.ts.map +1 -1
  10. package/dist/controllers/RestoreController.js +1 -1
  11. package/dist/controllers/RestoreController.js.map +1 -1
  12. package/dist/controllers/SettingsController.d.ts +2 -0
  13. package/dist/controllers/SettingsController.d.ts.map +1 -1
  14. package/dist/controllers/SettingsController.js +1 -1
  15. package/dist/controllers/SettingsController.js.map +1 -1
  16. package/dist/controllers/StorageController.d.ts.map +1 -1
  17. package/dist/controllers/StorageController.js +1 -1
  18. package/dist/controllers/StorageController.js.map +1 -1
  19. package/dist/controllers/UserController.d.ts +4 -0
  20. package/dist/controllers/UserController.d.ts.map +1 -1
  21. package/dist/controllers/UserController.js +1 -1
  22. package/dist/controllers/UserController.js.map +1 -1
  23. package/dist/createApp.d.ts.map +1 -1
  24. package/dist/createApp.js +1 -1
  25. package/dist/createApp.js.map +1 -1
  26. package/dist/db/index.d.ts +19 -0
  27. package/dist/db/index.d.ts.map +1 -1
  28. package/dist/db/schema/backups.d.ts +77 -1
  29. package/dist/db/schema/backups.d.ts.map +1 -1
  30. package/dist/db/schema/backups.js +1 -1
  31. package/dist/db/schema/backups.js.map +1 -1
  32. package/dist/jobs/JobProcessor.d.ts.map +1 -1
  33. package/dist/jobs/JobProcessor.js +1 -1
  34. package/dist/jobs/JobProcessor.js.map +1 -1
  35. package/dist/jobs/tasks/ReplicationRetryTask.d.ts +10 -0
  36. package/dist/jobs/tasks/ReplicationRetryTask.d.ts.map +1 -0
  37. package/dist/jobs/tasks/ReplicationRetryTask.js +1 -0
  38. package/dist/jobs/tasks/ReplicationRetryTask.js.map +1 -0
  39. package/dist/managers/BaseBackupManager.d.ts +35 -3
  40. package/dist/managers/BaseBackupManager.d.ts.map +1 -1
  41. package/dist/managers/BaseBackupManager.js +1 -1
  42. package/dist/managers/BaseBackupManager.js.map +1 -1
  43. package/dist/managers/BaseSnapshotManager.d.ts +21 -4
  44. package/dist/managers/BaseSnapshotManager.d.ts.map +1 -1
  45. package/dist/managers/BaseSnapshotManager.js +1 -1
  46. package/dist/managers/BaseSnapshotManager.js.map +1 -1
  47. package/dist/managers/ProgressManager.d.ts +28 -0
  48. package/dist/managers/ProgressManager.d.ts.map +1 -1
  49. package/dist/managers/ProgressManager.js +1 -1
  50. package/dist/managers/ProgressManager.js.map +1 -1
  51. package/dist/managers/handlers/BackupHandler.d.ts +8 -0
  52. package/dist/managers/handlers/BackupHandler.d.ts.map +1 -1
  53. package/dist/managers/handlers/BackupHandler.js +1 -1
  54. package/dist/managers/handlers/BackupHandler.js.map +1 -1
  55. package/dist/managers/handlers/DownloadHandler.d.ts.map +1 -1
  56. package/dist/managers/handlers/DownloadHandler.js +1 -1
  57. package/dist/managers/handlers/DownloadHandler.js.map +1 -1
  58. package/dist/managers/handlers/ReplicationHandler.d.ts +34 -0
  59. package/dist/managers/handlers/ReplicationHandler.d.ts.map +1 -0
  60. package/dist/managers/handlers/ReplicationHandler.js +1 -0
  61. package/dist/managers/handlers/ReplicationHandler.js.map +1 -0
  62. package/dist/managers/handlers/ReplicationOrchestrator.d.ts +50 -0
  63. package/dist/managers/handlers/ReplicationOrchestrator.d.ts.map +1 -0
  64. package/dist/managers/handlers/ReplicationOrchestrator.js +1 -0
  65. package/dist/managers/handlers/ReplicationOrchestrator.js.map +1 -0
  66. package/dist/middlewares/versionMiddleware.d.ts.map +1 -1
  67. package/dist/middlewares/versionMiddleware.js +1 -1
  68. package/dist/middlewares/versionMiddleware.js.map +1 -1
  69. package/dist/notifications/BackupNotification.d.ts +6 -3
  70. package/dist/notifications/BackupNotification.d.ts.map +1 -1
  71. package/dist/notifications/BackupNotification.js +1 -1
  72. package/dist/notifications/BackupNotification.js.map +1 -1
  73. package/dist/notifications/channels/NotificationChannelResolver.d.ts.map +1 -1
  74. package/dist/notifications/channels/NotificationChannelResolver.js.map +1 -1
  75. package/dist/notifications/templates/email/backup/BackupFailedNotification.d.ts.map +1 -1
  76. package/dist/notifications/templates/email/backup/BackupFailedNotification.ejs +9 -4
  77. package/dist/notifications/templates/email/backup/BackupFailedNotification.js +1 -1
  78. package/dist/notifications/templates/email/backup/BackupFailedNotification.js.map +1 -1
  79. package/dist/notifications/templates/email/backup/BackupStartedNotification.d.ts.map +1 -1
  80. package/dist/notifications/templates/email/backup/BackupStartedNotification.ejs +9 -4
  81. package/dist/notifications/templates/email/backup/BackupStartedNotification.js +1 -1
  82. package/dist/notifications/templates/email/backup/BackupStartedNotification.js.map +1 -1
  83. package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts +2 -1
  84. package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts.map +1 -1
  85. package/dist/notifications/templates/email/backup/BackupSuccessNotification.ejs +52 -4
  86. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js +1 -1
  87. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js.map +1 -1
  88. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts +24 -0
  89. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts.map +1 -0
  90. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.ejs +105 -0
  91. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js +1 -0
  92. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js.map +1 -0
  93. package/dist/routes/backups.d.ts.map +1 -1
  94. package/dist/routes/backups.js +1 -1
  95. package/dist/routes/backups.js.map +1 -1
  96. package/dist/routes/plans.d.ts.map +1 -1
  97. package/dist/routes/plans.js +1 -1
  98. package/dist/routes/plans.js.map +1 -1
  99. package/dist/routes/settings.d.ts.map +1 -1
  100. package/dist/routes/settings.js +1 -1
  101. package/dist/routes/settings.js.map +1 -1
  102. package/dist/routes/users.d.ts.map +1 -1
  103. package/dist/routes/users.js +1 -1
  104. package/dist/routes/users.js.map +1 -1
  105. package/dist/services/BackupServices.d.ts +14 -5
  106. package/dist/services/BackupServices.d.ts.map +1 -1
  107. package/dist/services/BackupServices.js +1 -1
  108. package/dist/services/BackupServices.js.map +1 -1
  109. package/dist/services/DeviceService.d.ts +6 -0
  110. package/dist/services/DeviceService.d.ts.map +1 -1
  111. package/dist/services/DeviceService.js +1 -1
  112. package/dist/services/DeviceService.js.map +1 -1
  113. package/dist/services/PlanService.d.ts +20 -0
  114. package/dist/services/PlanService.d.ts.map +1 -1
  115. package/dist/services/PlanService.js +1 -1
  116. package/dist/services/PlanService.js.map +1 -1
  117. package/dist/services/RestoreService.d.ts +2 -2
  118. package/dist/services/RestoreService.d.ts.map +1 -1
  119. package/dist/services/RestoreService.js +1 -1
  120. package/dist/services/RestoreService.js.map +1 -1
  121. package/dist/services/SettingsService.d.ts +8 -0
  122. package/dist/services/SettingsService.d.ts.map +1 -1
  123. package/dist/services/SettingsService.js +1 -1
  124. package/dist/services/SettingsService.js.map +1 -1
  125. package/dist/services/StorageService.d.ts.map +1 -1
  126. package/dist/services/StorageService.js +1 -1
  127. package/dist/services/StorageService.js.map +1 -1
  128. package/dist/services/events/BackupEventService.d.ts +22 -0
  129. package/dist/services/events/BackupEventService.d.ts.map +1 -1
  130. package/dist/services/events/BackupEventService.js +1 -1
  131. package/dist/services/events/BackupEventService.js.map +1 -1
  132. package/dist/services/events/ReplicationEventService.d.ts +33 -0
  133. package/dist/services/events/ReplicationEventService.d.ts.map +1 -0
  134. package/dist/services/events/ReplicationEventService.js +1 -0
  135. package/dist/services/events/ReplicationEventService.js.map +1 -0
  136. package/dist/services/listeners/BackupEventListener.d.ts +14 -10
  137. package/dist/services/listeners/BackupEventListener.d.ts.map +1 -1
  138. package/dist/services/listeners/BackupEventListener.js +1 -1
  139. package/dist/services/listeners/BackupEventListener.js.map +1 -1
  140. package/dist/services/listeners/ReplicationEventListener.d.ts +30 -0
  141. package/dist/services/listeners/ReplicationEventListener.d.ts.map +1 -0
  142. package/dist/services/listeners/ReplicationEventListener.js +1 -0
  143. package/dist/services/listeners/ReplicationEventListener.js.map +1 -0
  144. package/dist/stores/BackupStore.d.ts +8 -0
  145. package/dist/stores/BackupStore.d.ts.map +1 -1
  146. package/dist/stores/BackupStore.js +1 -1
  147. package/dist/stores/BackupStore.js.map +1 -1
  148. package/dist/stores/DeviceStore.d.ts +6 -0
  149. package/dist/stores/DeviceStore.d.ts.map +1 -1
  150. package/dist/stores/DeviceStore.js +1 -1
  151. package/dist/stores/DeviceStore.js.map +1 -1
  152. package/dist/stores/PlanStore.d.ts +3 -1
  153. package/dist/stores/PlanStore.d.ts.map +1 -1
  154. package/dist/stores/PlanStore.js +1 -1
  155. package/dist/stores/PlanStore.js.map +1 -1
  156. package/dist/stores/StorageStore.d.ts +10 -0
  157. package/dist/stores/StorageStore.d.ts.map +1 -1
  158. package/dist/stores/StorageStore.js +1 -1
  159. package/dist/stores/StorageStore.js.map +1 -1
  160. package/dist/strategies/backup/BackupStrategy.d.ts +24 -2
  161. package/dist/strategies/backup/BackupStrategy.d.ts.map +1 -1
  162. package/dist/strategies/backup/LocalStrategy.d.ts +24 -2
  163. package/dist/strategies/backup/LocalStrategy.d.ts.map +1 -1
  164. package/dist/strategies/backup/LocalStrategy.js +1 -1
  165. package/dist/strategies/backup/LocalStrategy.js.map +1 -1
  166. package/dist/strategies/backup/RemoteStrategy.d.ts +13 -2
  167. package/dist/strategies/backup/RemoteStrategy.d.ts.map +1 -1
  168. package/dist/strategies/backup/RemoteStrategy.js +1 -1
  169. package/dist/strategies/backup/RemoteStrategy.js.map +1 -1
  170. package/dist/strategies/snapshot/LocalStrategy.d.ts +20 -4
  171. package/dist/strategies/snapshot/LocalStrategy.d.ts.map +1 -1
  172. package/dist/strategies/snapshot/LocalStrategy.js +1 -1
  173. package/dist/strategies/snapshot/LocalStrategy.js.map +1 -1
  174. package/dist/strategies/snapshot/RemoteStrategy.d.ts +4 -1
  175. package/dist/strategies/snapshot/RemoteStrategy.d.ts.map +1 -1
  176. package/dist/strategies/snapshot/RemoteStrategy.js +1 -1
  177. package/dist/strategies/snapshot/RemoteStrategy.js.map +1 -1
  178. package/dist/strategies/snapshot/SnapshotStrategy.d.ts +20 -4
  179. package/dist/strategies/snapshot/SnapshotStrategy.d.ts.map +1 -1
  180. package/dist/types/backups.d.ts +24 -0
  181. package/dist/types/backups.d.ts.map +1 -1
  182. package/dist/types/events.d.ts +110 -0
  183. package/dist/types/events.d.ts.map +1 -1
  184. package/dist/types/plans.d.ts +23 -2
  185. package/dist/types/plans.d.ts.map +1 -1
  186. package/dist/types/restores.d.ts +2 -0
  187. package/dist/types/restores.d.ts.map +1 -1
  188. package/dist/utils/restic/restic.d.ts +5 -0
  189. package/dist/utils/restic/restic.d.ts.map +1 -1
  190. package/dist/utils/restic/restic.js +1 -1
  191. package/dist/utils/restic/restic.js.map +1 -1
  192. package/dist/utils/sanitizeStoragePath.d.ts +5 -1
  193. package/dist/utils/sanitizeStoragePath.d.ts.map +1 -1
  194. package/dist/utils/sanitizeStoragePath.js +1 -1
  195. package/dist/utils/sanitizeStoragePath.js.map +1 -1
  196. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BackupNotification.d.ts","sourceRoot":"","sources":["../../src/notifications/BackupNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAK7F,UAAU,cAAc;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,GAAG,qBAAqB,CAAC;CAChD;AAED,KAAK,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE,qBAAa,kBAAkB;IAC9B,SAAS,CAAC,8BAA8B,mCAA6B;IACrE,SAAS,CAAC,8BAA8B,mCAA6B;IACrE,SAAS,CAAC,6BAA6B,kCAA4B;IACnE,SAAS,CAAC,2BAA2B,EAAE,4BAA4B,CAA+B;IAElG,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQvD,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,cAAc;IAQpF,SAAS,CACd,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,CAAC,EAAE,cAAc,EAC3B,gBAAgB,CAAC,EAAE,MAAM;IAmCpB,oBAAoB,CACzB,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,CAAC,EAAE,cAAc,EAC3B,MAAM,GAAE,MAAM,GAAG,MAAM,GAAG,MAAe;CAgF1C"}
1
+ {"version":3,"file":"BackupNotification.d.ts","sourceRoot":"","sources":["../../src/notifications/BackupNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,wDAAwD,CAAC;AAKvG,UAAU,cAAc;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,GAAG,qBAAqB,CAAC;IAChD,mBAAmB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC/C;AAED,KAAK,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,qBAAqB,CAAC;AAExF,qBAAa,kBAAkB;IAC9B,SAAS,CAAC,8BAA8B,mCAA6B;IACrE,SAAS,CAAC,8BAA8B,mCAA6B;IACrE,SAAS,CAAC,6BAA6B,kCAA4B;IACnE,SAAS,CAAC,kCAAkC,uCAAiC;IAC7E,SAAS,CAAC,2BAA2B,EAAE,4BAA4B,CAA+B;IAElG,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQvD,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,cAAc;IAQpF,SAAS,CACd,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,CAAC,EAAE,cAAc,EAC3B,gBAAgB,CAAC,EAAE,MAAM;IAmCpB,oBAAoB,CACzB,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,CAAC,EAAE,cAAc,EAC3B,MAAM,GAAE,MAAM,GAAG,MAAM,GAAG,MAAe;CA+F1C"}
@@ -1 +1 @@
1
- import{BackupStartedNotification}from"./templates/email/backup/BackupStartedNotification";import{BackupSuccessNotification}from"./templates/email/backup/BackupSuccessNotification";import{BackupFailedNotification}from"./templates/email/backup/BackupFailedNotification";import{planLogger}from"../utils/logger";import{NotificationChannelResolver}from"../notifications/channels/NotificationChannelResolver";import{configService}from"../services/ConfigService";export class BackupNotification{BackupStartedNotificationClass=BackupStartedNotification;BackupSuccessNotificationClass=BackupSuccessNotification;BackupFailedNotificationClass=BackupFailedNotification;notificationChannelResolver=NotificationChannelResolver;shouldSend(notificationCase,notificationType){return"both"===notificationCase||notificationCase===notificationType||"end"===notificationCase&&["success","failure"].includes(notificationType)}async send(plan,notificationType,backupData){const notification=plan.settings.notification;notification?.email?.enabled&&await this.sendEmail(plan,notificationType,backupData)}async sendEmail(plan,notificationType,backupData,notificationCase){try{const notification=plan.settings.notification;if(!this.shouldSend(notification?.email?.case||"end",notificationType))throw new Error("Does not match Plan Notification Case.");const emailType=notification?.email?.type||"smtp";if(!notification?.email?.emails)throw new Error("Email Notification Emails Missing.");const emailChannel=await this.notificationChannelResolver.getChannel(emailType),notificationClass=await this.getNotificationClass(plan,notificationType,backupData,"html"),notificationResult=await emailChannel.send(notificationClass,{emails:notification.email.emails});if(!notificationResult?.success)throw new Error(notificationResult?.result||"Unknown Error");planLogger("notification",plan.id,backupData?.id).info(`Backup ${notificationType} Notification Email Sent Successfully.`)}catch(error){const errorMessage=error instanceof Error?error.message:"Unknown Error.";planLogger("notification",plan.id,backupData?.id).error(`Error Sending Backup ${notificationType} Email Notification. Reason: ${errorMessage}`)}}async getNotificationClass(plan,notificationType,backupData,output="html"){let notificationClass;const deviceName=plan.device?.name||"",storageName=plan.storage?.name||"",storageType=plan.storage?.type||"";switch(notificationType){case"start":notificationClass=new this.BackupStartedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,stats:backupData?.stats,output:output});break;case"success":notificationClass=new this.BackupSuccessNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output});break;case"failure":notificationClass=new this.BackupFailedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,error:backupData?.error||"",startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output});break;case"end":notificationClass=backupData?.error?new BackupFailedNotification({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,error:backupData?.error||"",startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output}):new BackupSuccessNotification({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output})}return notificationClass}}
1
+ import{BackupStartedNotification}from"./templates/email/backup/BackupStartedNotification";import{BackupSuccessNotification}from"./templates/email/backup/BackupSuccessNotification";import{BackupFailedNotification}from"./templates/email/backup/BackupFailedNotification";import{ReplicationFailedNotification}from"./templates/email/backup/ReplicationFailedNotification";import{planLogger}from"../utils/logger";import{NotificationChannelResolver}from"../notifications/channels/NotificationChannelResolver";import{configService}from"../services/ConfigService";export class BackupNotification{BackupStartedNotificationClass=BackupStartedNotification;BackupSuccessNotificationClass=BackupSuccessNotification;BackupFailedNotificationClass=BackupFailedNotification;ReplicationFailedNotificationClass=ReplicationFailedNotification;notificationChannelResolver=NotificationChannelResolver;shouldSend(notificationCase,notificationType){return"both"===notificationCase||notificationCase===notificationType||"end"===notificationCase&&["success","failure"].includes(notificationType)}async send(plan,notificationType,backupData){const notification=plan.settings.notification;notification?.email?.enabled&&await this.sendEmail(plan,notificationType,backupData)}async sendEmail(plan,notificationType,backupData,notificationCase){try{const notification=plan.settings.notification;if(!this.shouldSend(notification?.email?.case||"end",notificationType))throw new Error("Does not match Plan Notification Case.");const emailType=notification?.email?.type||"smtp";if(!notification?.email?.emails)throw new Error("Email Notification Emails Missing.");const emailChannel=await this.notificationChannelResolver.getChannel(emailType),notificationClass=await this.getNotificationClass(plan,notificationType,backupData,"html"),notificationResult=await emailChannel.send(notificationClass,{emails:notification.email.emails});if(!notificationResult?.success)throw new Error(notificationResult?.result||"Unknown Error");planLogger("notification",plan.id,backupData?.id).info(`Backup ${notificationType} Notification Email Sent Successfully.`)}catch(error){const errorMessage=error instanceof Error?error.message:"Unknown Error.";planLogger("notification",plan.id,backupData?.id).error(`Error Sending Backup ${notificationType} Email Notification. Reason: ${errorMessage}`)}}async getNotificationClass(plan,notificationType,backupData,output="html"){let notificationClass;const deviceName=plan.device?.name||"",storageName=plan.storage?.name||"",storageType=plan.storage?.type||"";switch(notificationType){case"replication_failure":notificationClass=new this.ReplicationFailedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,error:backupData?.error||"Replication failed",startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,failedMirrors:backupData?.failedMirrors,output:output});break;case"start":notificationClass=new this.BackupStartedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,stats:backupData?.stats,output:output});break;case"success":notificationClass=new this.BackupSuccessNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,replicationFailures:backupData?.replicationFailures,output:output});break;case"failure":notificationClass=new this.BackupFailedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,error:backupData?.error||"",startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output});break;case"end":notificationClass=backupData?.error?new this.BackupFailedNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,error:backupData?.error||"",startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output}):new this.BackupSuccessNotificationClass({appTitle:configService.config.APP_TITLE||"Pluton",plan:plan,deviceName:deviceName,storageName:storageName,storageType:storageType,startTime:backupData?.startTime||new Date,endTime:backupData?.endTime||new Date,stats:backupData?.stats,output:output})}return notificationClass}}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupNotification.js","sourceRoot":"","sources":["../../src/notifications/BackupNotification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackupNotification.js","sourceRoot":"","sources":["../../src/notifications/BackupNotification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationChannelResolver.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/NotificationChannelResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,sBAAsB,CAAC;AAMnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,qBAAa,2BAA2B;IACvC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAqB;WAErC,UAAU,CAAC,WAAW,GAAE,gBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgB7F,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;IAkB1F,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;IAqB1F,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAQjC"}
1
+ {"version":3,"file":"NotificationChannelResolver.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/NotificationChannelResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,sBAAsB,CAAC;AAMnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,qBAAa,2BAA2B;IACvC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAqB;WAErC,UAAU,CAAC,WAAW,GAAE,gBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgB7F,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;IAkB1F,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;IAoB1F,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAQjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationChannelResolver.js","sourceRoot":"","sources":["../../../src/notifications/channels/NotificationChannelResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotificationChannelResolver.js","sourceRoot":"","sources":["../../../src/notifications/channels/NotificationChannelResolver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupFailedNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupFailedNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAiC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;gBACjD,IAAI,EAAE,+BAA+B;IAOjD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;IAOrE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;IAkCzE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;CAsCzE"}
1
+ {"version":3,"file":"BackupFailedNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupFailedNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAiC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;gBACjD,IAAI,EAAE,+BAA+B;IAOjD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;IAOrE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;IAsCzE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM;CA0CzE"}
@@ -63,10 +63,15 @@
63
63
  <td style="text-align: center; width: 4%">
64
64
  <span class="backupSummary_arrow">➝</span>
65
65
  </td>
66
- <td style="text-align: right">
67
- <span><strong><%= storageName %></strong></span>
68
- <span><%= storageTypeName %></span>
69
- </td>
66
+ <td style="text-align: right">
67
+ <span><strong><%= storageName %></strong></span>
68
+ <span>
69
+ <% if (replicationStorages > 0) { %>
70
+ + <%= replicationStorages %> More
71
+ <% } else { %>
72
+ <%= storageTypeName %><% } %>
73
+ </span>
74
+ </td>
70
75
  </tr>
71
76
  </table>
72
77
  </div>
@@ -1 +1 @@
1
- import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatDuration,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupFailedNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Failed: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime,endTime:endTime,error:error}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,endTime:endTime,error:error,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},eventName:"backup_failed"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),endDate=new Date(data.endTime?data.endTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupFailedNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,endDate:endDate,formatBytes:formatBytes,formatDuration:formatDuration,formatNumberToK:formatNumberToK});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Failed: ${data.plan.title}`,className:"content--error"})}}
1
+ import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatDuration,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupFailedNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Failed: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime,endTime:endTime,error:error}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,endTime:endTime,error:error,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},replicationStorages:plan.settings.replication?.enabled&&plan.settings.replication?.storages?plan.settings.replication.storages.length:0,eventName:"backup_failed"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),endDate=new Date(data.endTime?data.endTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupFailedNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,endDate:endDate,formatBytes:formatBytes,formatDuration:formatDuration,formatNumberToK:formatNumberToK,replicationStorages:data.plan.settings.replication?.enabled&&data.plan.settings.replication?.storages?data.plan.settings.replication.storages.length:0});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Failed: ${data.plan.title}`,className:"content--error"})}}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupFailedNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupFailedNotification.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAe7D,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IAC7D,YAAY,IAAqC;QAChD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,kBAAkB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAES,YAAY,CAAC,IAAqC;QAC3D,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,gBAAgB,CAAC,IAAqC;QAC/D,MAAM,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,IAAI,EACJ,KAAK,EACL,SAAS,EACT,OAAO,EACP,KAAK,GACL,GAAG,IAAI,CAAC;QACT,MAAM,OAAO,GAAkC;YAC9C,QAAQ;YACR,UAAU;YACV,WAAW;YACX,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,KAAK;YACL,SAAS;YACT,OAAO;YACP,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,UAAU,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;aACtD;YACD,SAAS,EAAE,eAAe;SAC1B,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAES,gBAAgB,CAAC,IAAqC;QAC/D,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YAC3F,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACrF,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW;YACvC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW;YACvD,CAAC,CAAC,EAAE,CAAC;QAEN,MAAM,cAAc,GAAG,kBAAkB,CAAC,8BAA8B,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE;YAC/C,GAAG,IAAI;YACP,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO;YACpC,eAAe;YACf,SAAS;YACT,OAAO;YACP,WAAW;YACX,cAAc;YACd,eAAe;SACf,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YAC5C,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,QAAQ;YACpD,SAAS,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC9C,SAAS,EAAE,gBAAgB;SAC3B,CAAC,CAAC;IACJ,CAAC;CACD"}
1
+ {"version":3,"file":"BackupFailedNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupFailedNotification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupStartedNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupStartedNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAiC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;gBAClD,IAAI,EAAE,oBAAoB;IAOtC,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAOhD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAsB9D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;CA6B9D"}
1
+ {"version":3,"file":"BackupStartedNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupStartedNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAiC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;gBAClD,IAAI,EAAE,oBAAoB;IAOtC,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAOhD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IA0B9D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;CAiC9D"}
@@ -40,10 +40,15 @@
40
40
  <td style="text-align: center; width: 4%">
41
41
  <span class="backupSummary_arrow">➝</span>
42
42
  </td>
43
- <td style="text-align: right">
44
- <span><strong><%= storageName %></strong></span>
45
- <span><%= storageTypeName %></span>
46
- </td>
43
+ <td style="text-align: right">
44
+ <span><strong><%= storageName %></strong></span>
45
+ <span>
46
+ <% if (replicationStorages > 0) { %>
47
+ + <%= replicationStorages %> More
48
+ <% } else { %>
49
+ <%= storageTypeName %><% } %>
50
+ </span>
51
+ </td>
47
52
  </tr>
48
53
  </table>
49
54
  </div>
@@ -1 +1 @@
1
- import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupStartedNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Started: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},eventName:"backup_started"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupStartedNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,formatBytes:formatBytes,formatNumberToK:formatNumberToK});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Started: ${data.plan.title}`})}}
1
+ import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupStartedNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Started: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},replicationStorages:plan.settings.replication?.enabled&&plan.settings.replication?.storages?plan.settings.replication.storages.length:0,eventName:"backup_started"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupStartedNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,formatBytes:formatBytes,formatNumberToK:formatNumberToK,replicationStorages:data.plan.settings.replication?.enabled&&data.plan.settings.replication?.storages?data.plan.settings.replication.storages.length:0});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Started: ${data.plan.title}`})}}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupStartedNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupStartedNotification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackupStartedNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupStartedNotification.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Plan } from '../../../../db/schema/plans';
2
- import { BackupCompletionStats } from '../../../../types/backups';
2
+ import { BackupCompletionStats, ReplicationFailureInfo } from '../../../../types/backups';
3
3
  import { BaseNotification } from '../../../BaseNotification';
4
4
  export interface BackupSuccessNotificationPayload {
5
5
  appTitle: string;
@@ -10,6 +10,7 @@ export interface BackupSuccessNotificationPayload {
10
10
  startTime: Date;
11
11
  endTime: Date;
12
12
  stats?: BackupCompletionStats;
13
+ replicationFailures?: ReplicationFailureInfo[];
13
14
  output?: 'html' | 'json' | 'push';
14
15
  }
15
16
  export declare class BackupSuccessNotification extends BaseNotification {
@@ -1 +1 @@
1
- {"version":3,"file":"BackupSuccessNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupSuccessNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAiC,MAAM,2BAA2B,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,gCAAgC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;gBAClD,IAAI,EAAE,gCAAgC;IAOlD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;IAOtE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;IAwB1E,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;CAoC1E"}
1
+ {"version":3,"file":"BackupSuccessNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupSuccessNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EACN,qBAAqB,EAErB,sBAAsB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,gCAAgC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,mBAAmB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;gBAClD,IAAI,EAAE,gCAAgC;IAOlD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;IAOtE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;IAsC1E,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM;CAyC1E"}
@@ -44,10 +44,15 @@
44
44
  <td style="text-align: center; width: 4%">
45
45
  <span class="backupSummary_arrow">➝</span>
46
46
  </td>
47
- <td style="text-align: right">
48
- <span><strong><%= storageName %></strong></span>
49
- <span><%= storageTypeName %></span>
50
- </td>
47
+ <td style="text-align: right">
48
+ <span><strong><%= storageName %></strong></span>
49
+ <span>
50
+ <% if (replicationStorages > 0) { %>
51
+ + <%= replicationStorages %> More
52
+ <% } else { %>
53
+ <%= storageTypeName %><% } %>
54
+ </span>
55
+ </td>
51
56
  </tr>
52
57
  </table>
53
58
  </div>
@@ -152,6 +157,49 @@
152
157
  </tr>
153
158
  </table>
154
159
  </div>
160
+ <!-- Replication Failures Warning -->
161
+ <% if (replicationFailures && replicationFailures.length > 0) { %>
162
+ <div class="backupDetails" style="margin-top: 16px;">
163
+ <table cellpadding="0" cellspacing="0" width="100%">
164
+ <tr>
165
+ <td align="center">
166
+ <table cellpadding="0" cellspacing="0" width="600" style="max-width: 600px" class="backupDetailsColumnsWrapper">
167
+ <tr>
168
+ <td valign="top" width="100%">
169
+ <table cellpadding="20" cellspacing="0" width="100%" class="backupDetailsCard" style="background-color: #fff8f0;">
170
+ <tr>
171
+ <td class="backupDetailsCardContent">
172
+ <h4 class="backupDetailsTitle" style="color: #d9534f;"><i class="icon">⚠</i> REPLICATION FAILURES</h4>
173
+ <p style="margin: 0 0 10px 0; font-size: 13px; color: #666;">
174
+ The backup completed successfully, but replication to the following storage(s) failed:
175
+ </p>
176
+ <table cellpadding="6" cellspacing="0" width="100%" style="font-size: 13px;">
177
+ <% replicationFailures.forEach(function(failure) { %>
178
+ <tr style="border-bottom: 1px solid #eee;">
179
+ <td style="padding: 6px 0;">
180
+ <strong><%= failure.storageName || failure.storageId %></strong>
181
+ <% if (failure.storageType) { %><span style="color: #999;"> (<%= failure.storageType %>)</span><% } %>
182
+ </td>
183
+ <td style="padding: 6px 0; color: #d9534f;">
184
+ <%= failure.error || 'Unknown error' %>
185
+ </td>
186
+ </tr>
187
+ <% }); %>
188
+ </table>
189
+ <p style="margin: 10px 0 0 0; font-size: 12px; color: #999;">
190
+ You can retry failed replications from the backup details page.
191
+ </p>
192
+ </td>
193
+ </tr>
194
+ </table>
195
+ </td>
196
+ </tr>
197
+ </table>
198
+ </td>
199
+ </tr>
200
+ </table>
201
+ </div>
202
+ <% } %>
155
203
  <!-- Notification Settings Info -->
156
204
  <div class="center notificationMsg">
157
205
  <p>
@@ -1 +1 @@
1
- import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatDuration,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupSuccessNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Complete: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime,endTime:endTime}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,endTime:endTime,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},eventName:"backup_success"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),endDate=new Date(data.endTime?data.endTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupSuccessNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,endDate:endDate,formatBytes:formatBytes,formatDuration:formatDuration,formatNumberToK:formatNumberToK});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Success: ${data.plan.title}`})}}
1
+ import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatDuration,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class BackupSuccessNotification extends BaseNotification{constructor(data){super(),this.subject=`Backup Complete: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,stats:stats,startTime:startTime,endTime:endTime,replicationFailures:replicationFailures}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",stats:stats,startTime:startTime,endTime:endTime,planID:plan.id,planTitle:plan.title,planType:plan.method,planSource:{included:plan.sourceConfig?.includes.join(", ")||"",excluded:plan.sourceConfig?.excludes.join(", ")||""},replicationStorages:plan.settings.replication?.enabled&&plan.settings.replication?.storages?plan.settings.replication.storages.length:0,eventName:"backup_success",...replicationFailures&&replicationFailures.length>0?{replicationFailures:replicationFailures}:{}};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),endDate=new Date(data.endTime?data.endTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("BackupSuccessNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,endDate:endDate,formatBytes:formatBytes,formatDuration:formatDuration,formatNumberToK:formatNumberToK,replicationStorages:data.plan.settings.replication?.enabled&&data.plan.settings.replication?.storages?data.plan.settings.replication.storages.length:0,replicationFailures:data.replicationFailures||[]});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Backup Success: ${data.plan.title}`})}}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupSuccessNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupSuccessNotification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackupSuccessNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/BackupSuccessNotification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Plan } from '../../../../db/schema/plans';
2
+ import { BaseNotification } from '../../../BaseNotification';
3
+ export interface ReplicationFailedNotificationPayload {
4
+ appTitle: string;
5
+ deviceName: string;
6
+ storageName: string;
7
+ storageType: string;
8
+ plan: Plan;
9
+ startTime: Date;
10
+ endTime: Date;
11
+ error: string;
12
+ failedMirrors?: {
13
+ storageName: string;
14
+ error?: string;
15
+ }[];
16
+ output?: 'html' | 'json' | 'push';
17
+ }
18
+ export declare class ReplicationFailedNotification extends BaseNotification {
19
+ constructor(data: ReplicationFailedNotificationPayload);
20
+ protected buildContent(data: ReplicationFailedNotificationPayload): string;
21
+ protected buildJSONContent(data: ReplicationFailedNotificationPayload): string;
22
+ protected buildHTMLContent(data: ReplicationFailedNotificationPayload): string;
23
+ }
24
+ //# sourceMappingURL=ReplicationFailedNotification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplicationFailedNotification.d.ts","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/ReplicationFailedNotification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,WAAW,oCAAoC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,qBAAa,6BAA8B,SAAQ,gBAAgB;gBACtD,IAAI,EAAE,oCAAoC;IAOtD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,oCAAoC,GAAG,MAAM;IAO1E,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oCAAoC,GAAG,MAAM;IA8B9E,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,oCAAoC,GAAG,MAAM;CAqC9E"}
@@ -0,0 +1,105 @@
1
+ <div>
2
+ <div class="center">
3
+ <h2 class="title title-error">
4
+ <img
5
+ width="16"
6
+ height="16"
7
+ src="https://pluton.b-cdn.net/email/cross-red.png"
8
+ style="vertical-align: middle"
9
+ />
10
+ <a href="<%= appUrl %>/plan/<%= plan.id %>"><%= plan.title %></a> Replication Failed!
11
+ </h2>
12
+ </div>
13
+ <!-- Replication Error Info -->
14
+ <div class="backupError">
15
+ <span class="backupErrorTitle"
16
+ ><i class="img-icon">
17
+ <img
18
+ width="14"
19
+ height="14"
20
+ src="https://pluton.b-cdn.net/email/warning-red.png"
21
+ style="vertical-align: middle"
22
+ />
23
+ </i>
24
+ <strong>Replication Failed</strong></span
25
+ >
26
+ <p>The backup completed successfully, but replicating to one or more storages failed.</p>
27
+ <p>Error: <%= error %></p>
28
+ <% if (failedMirrors && failedMirrors.length > 0) { %>
29
+ <ul style="padding-left: 0;">
30
+ <% failedMirrors.forEach(function(mirror) { %>
31
+ <li><strong><%= mirror.storageName %></strong>: <%= mirror.error || 'Unknown error' %></li>
32
+ <% }); %>
33
+ </ul>
34
+ <% } %>
35
+ </div>
36
+
37
+ <!-- Basic Summary Info -->
38
+ <div class="backupSummary">
39
+ <div class="backupSummary_basic">
40
+ <table role="presentation" cellpadding="0" cellspacing="0">
41
+ <tr class="backupSummary_title">
42
+ <td style="text-align: left">
43
+ <i class="img-icon">
44
+ <img
45
+ width="14"
46
+ height="14"
47
+ src="https://pluton.b-cdn.net/email/uploading.png"
48
+ style="vertical-align: middle"
49
+ />
50
+ </i>
51
+ <strong>Replication Failed</strong>
52
+ </td>
53
+ </tr>
54
+ <tr class="backupSummary_details">
55
+ <td style="text-align: left">
56
+ <span><strong><%= deviceName %></strong></span>
57
+ <span>Device</span>
58
+ </td>
59
+ <td style="text-align: center; width: 4%">
60
+ <span class="backupSummary_arrow">➝</span>
61
+ </td>
62
+ <td style="text-align: right">
63
+ <span><strong><%= storageName %></strong></span>
64
+ <span><%= storageTypeName %></span>
65
+ </td>
66
+ </tr>
67
+ </table>
68
+ </div>
69
+ </div>
70
+ <!-- Basic Date and Time -->
71
+ <div class="backupDateTime">
72
+ <table role="presentation" cellpadding="0" cellspacing="0">
73
+ <tr class="backupSummary_date">
74
+ <td style="text-align: left">
75
+ <i class="img-icon"
76
+ ><img width="14" height="14" src="https://pluton.b-cdn.net/email/clock.png"
77
+ /></i>
78
+ Started At:
79
+ </td>
80
+ <td style="text-align: right"><%= startDate %></td>
81
+ </tr>
82
+ <tr class="backupSummary_date">
83
+ <td style="text-align: left">
84
+ <img
85
+ width="11"
86
+ height="11"
87
+ src="https://pluton.b-cdn.net/email/cross.png"
88
+ style="vertical-align: middle"
89
+ />
90
+ Failed At:
91
+ </td>
92
+ <td style="text-align: right"><%= endDate %></td>
93
+ </tr>
94
+ </table>
95
+ </div>
96
+
97
+ <!-- Notification Settings Info -->
98
+ <div class="center notificationMsg">
99
+ <p>
100
+ You are receiving this email because you've enabled Email Notification for this backup Plan.
101
+ You can customize the Notification Settings
102
+ <a href="<%= appUrl %>/plan/<%= plan.id %>/?settings">here</a>.
103
+ </p>
104
+ </div>
105
+ </div>
@@ -0,0 +1 @@
1
+ import ejs from"ejs";import{configService}from"../../../../services/ConfigService";import{providers}from"../../../../utils/providers";import{formatBytes,formatDuration,formatNumberToK}from"../../../../utils/formatter";import{BaseNotification}from"../../../BaseNotification";import{loadBackupTemplate}from"../../../templateLoader";export class ReplicationFailedNotification extends BaseNotification{constructor(data){super(),this.subject=`Replication Failed: ${data.plan.title}`,this.contentType=data.output||"html",this.content=this.buildContent(data)}buildContent(data){return"json"===this.contentType?this.buildJSONContent(data):this.buildHTMLContent(data)}buildJSONContent(data){const{appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,plan:plan,startTime:startTime,endTime:endTime,error:error,failedMirrors:failedMirrors}=data,payload={appTitle:appTitle,deviceName:deviceName,storageName:storageName,storageType:storageType,storagePath:plan.storagePath||"",startTime:startTime,endTime:endTime,error:error,failedMirrors:failedMirrors,planID:plan.id,planTitle:plan.title,planType:plan.method,eventName:"replication_failed"};return JSON.stringify(payload)}buildHTMLContent(data){const startDate=new Date(data.startTime?data.startTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),endDate=new Date(data.endTime?data.endTime:0).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),storageTypeName=data.storageType?providers[data.storageType]?.name||data.storageType:"",templateString=loadBackupTemplate("ReplicationFailedNotification.ejs"),renderedBody=ejs.render(templateString,{...data,appUrl:configService.config.APP_URL,storageTypeName:storageTypeName,startDate:startDate,endDate:endDate,formatBytes:formatBytes,formatDuration:formatDuration,formatNumberToK:formatNumberToK});return this.applyEmailTemplate(renderedBody,{appTitle:configService.config.APP_TITLE||"Pluton",preHeader:`Replication Failed: ${data.plan.title}`,className:"content--error"})}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplicationFailedNotification.js","sourceRoot":"","sources":["../../../../../src/notifications/templates/email/backup/ReplicationFailedNotification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../src/routes/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,wBAAgB,kBAAkB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,GAAE,MAAiB,GACvB,MAAM,CAWR"}
1
+ {"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../src/routes/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,wBAAgB,kBAAkB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,GAAE,MAAiB,GACvB,MAAM,CAgBR"}
@@ -1 +1 @@
1
- import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createBackupRouter(controller,router=Router()){return router.delete("/:id",authM,controller.deleteBackup.bind(controller)),router.post("/:id/",authM,controller.updateBackup.bind(controller)),router.get("/:id/files",authM,controller.getSnapshotFiles.bind(controller)),router.get("/:id/progress",authM,controller.getBackupProgress.bind(controller)),router.post("/:id/action/cancel",authM,controller.cancelBackup.bind(controller)),router.get("/:id/action/download",authM,controller.getBackupDownload.bind(controller)),router.post("/:id/action/download",authM,controller.generateBackupDownload.bind(controller)),router.delete("/:id/action/download",authM,controller.cancelBackupDownload.bind(controller)),router}
1
+ import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createBackupRouter(controller,router=Router()){return router.delete("/:id",authM,controller.deleteBackup.bind(controller)),router.post("/:id/",authM,controller.updateBackup.bind(controller)),router.get("/:id/files",authM,controller.getSnapshotFiles.bind(controller)),router.get("/:id/progress",authM,controller.getBackupProgress.bind(controller)),router.post("/:id/action/cancel",authM,controller.cancelBackup.bind(controller)),router.get("/:id/action/download",authM,controller.getBackupDownload.bind(controller)),router.post("/:id/action/download",authM,controller.generateBackupDownload.bind(controller)),router.delete("/:id/action/download",authM,controller.cancelBackupDownload.bind(controller)),router.post("/:id/action/replication-retry",authM,controller.retryFailedReplications.bind(controller)),router}
@@ -1 +1 @@
1
- {"version":3,"file":"backups.js","sourceRoot":"","sources":["../../src/routes/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,kBAAkB,CACjC,UAA4B,EAC5B,SAAiB,MAAM,EAAE;IAEzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/F,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"backups.js","sourceRoot":"","sources":["../../src/routes/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,kBAAkB,CACjC,UAA4B,EAC5B,SAAiB,MAAM,EAAE;IAEzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,IAAI,CACV,+BAA+B,EAC/B,KAAK,EACL,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CACnD,CAAC;IAEF,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/routes/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,GAAE,MAAiB,GAAG,MAAM,CAgB9F"}
1
+ {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/routes/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,GAAE,MAAiB,GAAG,MAAM,CAsB9F"}
@@ -1 +1 @@
1
- import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createPlanRouter(controller,router=Router()){return router.get("/",authM,controller.getPlans.bind(controller)),router.get("/:id",authM,controller.getPlan.bind(controller)),router.post("/",authM,controller.createPlan.bind(controller)),router.put("/:id",authM,controller.updatePlan.bind(controller)),router.delete("/:id",authM,controller.deletePlan.bind(controller)),router.get("/:id/logs",authM,controller.getLogs.bind(controller)),router.get("/:id/logs/download",authM,controller.downloadLogs.bind(controller)),router.get("/:id/checkactive",authM,controller.checkActiveBackupsOrRestore.bind(controller)),router.post("/:id/action/backup",authM,controller.performBackup.bind(controller)),router.post("/:id/action/resume",authM,controller.resumeBackup.bind(controller)),router.post("/:id/action/pause",authM,controller.pauseBackup.bind(controller)),router.post("/:id/action/prune",authM,controller.pruneBackup.bind(controller)),router.post("/:id/action/unlock",authM,controller.unlockRepo.bind(controller)),router}
1
+ import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createPlanRouter(controller,router=Router()){return router.get("/",authM,controller.getPlans.bind(controller)),router.get("/:id",authM,controller.getPlan.bind(controller)),router.post("/",authM,controller.createPlan.bind(controller)),router.put("/:id",authM,controller.updatePlan.bind(controller)),router.delete("/:id",authM,controller.deletePlan.bind(controller)),router.get("/:id/logs",authM,controller.getLogs.bind(controller)),router.get("/:id/logs/download",authM,controller.downloadLogs.bind(controller)),router.get("/:id/checkactive",authM,controller.checkActiveBackupsOrRestore.bind(controller)),router.post("/:id/action/backup",authM,controller.performBackup.bind(controller)),router.post("/:id/action/resume",authM,controller.resumeBackup.bind(controller)),router.post("/:id/action/pause",authM,controller.pauseBackup.bind(controller)),router.post("/:id/action/prune",authM,controller.pruneBackup.bind(controller)),router.post("/:id/action/unlock",authM,controller.unlockRepo.bind(controller)),router.post("/:id/action/checkintegrity",authM,controller.checkIntegrity.bind(controller)),router.post("/:id/action/delete-replication-storage",authM,controller.deleteReplicationStorage.bind(controller)),router}
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/routes/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,UAA0B,EAAE,SAAiB,MAAM,EAAE;IACrF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjF,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/routes/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAAC,UAA0B,EAAE,SAAiB,MAAM,EAAE;IACrF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7F,MAAM,CAAC,IAAI,CACV,wCAAwC,EACxC,KAAK,EACL,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpD,CAAC;IAEF,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,MAAM,GAAE,MAAiB,GACvB,MAAM,CASR"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,MAAM,GAAE,MAAiB,GACvB,MAAM,CAWR"}
@@ -1 +1 @@
1
- import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createSettingsRouter(controller,router=Router()){return router.get("/",authM,controller.getMainSettings.bind(controller)),router.get("/:id",authM,controller.getSettings.bind(controller)),router.put("/:id",authM,controller.updateSettings.bind(controller)),router.get("/:id/logs",authM,controller.getAppLogs.bind(controller)),router.get("/:id/logs/download",authM,controller.downloadAppLogs.bind(controller)),router.post("/integration/validate",authM,controller.validateIntegration.bind(controller)),router}
1
+ import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createSettingsRouter(controller,router=Router()){return router.get("/",authM,controller.getMainSettings.bind(controller)),router.get("/:id",authM,controller.getSettings.bind(controller)),router.put("/:id",authM,controller.updateSettings.bind(controller)),router.get("/:id/logs",authM,controller.getAppLogs.bind(controller)),router.get("/:id/logs/download",authM,controller.downloadAppLogs.bind(controller)),router.post("/integration/validate",authM,controller.validateIntegration.bind(controller)),router.post("/:id/2fa/setup",authM,controller.setupTwoFactorAuth.bind(controller)),router.post("/:id/2fa/finalize",authM,controller.finalizeTwoFactorSetup.bind(controller)),router}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,oBAAoB,CACnC,UAA8B,EAC9B,SAAiB,MAAM,EAAE;IAEzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7F,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,oBAAoB,CACnC,UAA8B,EAC9B,SAAiB,MAAM,EAAE;IAEzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7F,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5F,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/routes/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,cAAc,EAC1B,WAAW,CAAC,EAAE,cAAc,EAC5B,MAAM,GAAE,MAAiB,GACvB,MAAM,CAOR"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/routes/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,cAAc,EAC1B,WAAW,CAAC,EAAE,cAAc,EAC5B,MAAM,GAAE,MAAiB,GACvB,MAAM,CAQR"}
@@ -1 +1 @@
1
- import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createUserRouter(controller,authLimiter,router=Router()){const loginMiddlewares=authLimiter?[authLimiter]:[];return router.post("/login",...loginMiddlewares,controller.loginUser.bind(controller)),router.get("/validate",authM,controller.validateUser.bind(controller)),router.post("/logout",authM,controller.logoutUser.bind(controller)),router}
1
+ import{Router}from"express";import authM from"../middlewares/authMiddleware";export function createUserRouter(controller,authLimiter,router=Router()){const loginMiddlewares=authLimiter?[authLimiter]:[];return router.post("/login",...loginMiddlewares,controller.loginUser.bind(controller)),router.get("/validate",authM,controller.validateUser.bind(controller)),router.post("/logout",authM,controller.logoutUser.bind(controller)),router.post("/verify-otp",...loginMiddlewares,controller.verifyTotp.bind(controller)),router}
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/routes/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,SAAS,CAAC;AAEtD,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAC/B,UAA0B,EAC1B,WAA4B,EAC5B,SAAiB,MAAM,EAAE;IAEzB,MAAM,gBAAgB,GAAqB,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,gBAAgB,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/routes/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,SAAS,CAAC;AAEtD,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAC/B,UAA0B,EAC1B,WAA4B,EAC5B,SAAiB,MAAM,EAAE;IAEzB,MAAM,gBAAgB,GAAqB,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,gBAAgB,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,gBAAgB,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAExF,OAAO,MAAM,CAAC;AACf,CAAC"}