diff --git a/src/store/modules/Logs/DumpsStore.js b/src/store/modules/Logs/DumpsStore.js
index 746733a..328e316 100644
--- a/src/store/modules/Logs/DumpsStore.js
+++ b/src/store/modules/Logs/DumpsStore.js
@@ -60,7 +60,7 @@
           {
             DiagnosticDataType: 'Manager',
             OEMDiagnosticDataType: '',
-          }
+          },
         )
         .catch((error) => {
           console.log(error);
@@ -74,7 +74,7 @@
           {
             DiagnosticDataType: 'OEM',
             OEMDiagnosticDataType: 'System',
-          }
+          },
         )
         .catch((error) => {
           console.log(error);
@@ -86,7 +86,7 @@
         api.delete(location).catch((error) => {
           console.log(error);
           return error;
-        })
+        }),
       );
       return await api
         .all(promises)
@@ -102,7 +102,7 @@
             if (successCount) {
               const message = i18n.tc(
                 'pageDumps.toast.successDeleteDump',
-                successCount
+                successCount,
               );
               toastMessages.push({ type: 'success', message });
             }
@@ -110,20 +110,20 @@
             if (errorCount) {
               const message = i18n.tc(
                 'pageDumps.toast.errorDeleteDump',
-                errorCount
+                errorCount,
               );
               toastMessages.push({ type: 'error', message });
             }
 
             return toastMessages;
-          })
+          }),
         );
     },
     async deleteAllDumps({ commit, state }) {
       const totalDumpCount = state.allDumps.length;
       return await api
         .post(
-          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.ClearLog'
+          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.ClearLog',
         )
         .then(() => {
           commit('setAllDumps', []);
@@ -132,7 +132,7 @@
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.tc('pageDumps.toast.errorDeleteDump', totalDumpCount)
+            i18n.tc('pageDumps.toast.errorDeleteDump', totalDumpCount),
           );
         });
     },
diff --git a/src/store/modules/Logs/EventLogStore.js b/src/store/modules/Logs/EventLogStore.js
index f398007..f7b2ead 100644
--- a/src/store/modules/Logs/EventLogStore.js
+++ b/src/store/modules/Logs/EventLogStore.js
@@ -79,14 +79,14 @@
     async deleteAllEventLogs({ dispatch }, data) {
       return await api
         .post(
-          '/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog'
+          '/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog',
         )
         .then(() => dispatch('getEventLogData'))
         .then(() => i18n.tc('pageEventLogs.toast.successDelete', data.length))
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.tc('pageEventLogs.toast.errorDelete', data.length)
+            i18n.tc('pageEventLogs.toast.errorDelete', data.length),
           );
         });
     },
@@ -95,7 +95,7 @@
         api.delete(uri).catch((error) => {
           console.log(error);
           return error;
-        })
+        }),
       );
       return await api
         .all(promises)
@@ -111,7 +111,7 @@
             if (successCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.successDelete',
-                successCount
+                successCount,
               );
               toastMessages.push({ type: 'success', message });
             }
@@ -119,13 +119,13 @@
             if (errorCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.errorDelete',
-                errorCount
+                errorCount,
               );
               toastMessages.push({ type: 'error', message });
             }
 
             return toastMessages;
-          })
+          }),
         );
     },
     async resolveEventLogs({ dispatch }, logs) {
@@ -133,7 +133,7 @@
         api.patch(log.uri, { Resolved: true }).catch((error) => {
           console.log(error);
           return error;
-        })
+        }),
       );
       return await api
         .all(promises)
@@ -148,19 +148,19 @@
             if (successCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.successResolveLogs',
-                successCount
+                successCount,
               );
               toastMessages.push({ type: 'success', message });
             }
             if (errorCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.errorResolveLogs',
-                errorCount
+                errorCount,
               );
               toastMessages.push({ type: 'error', message });
             }
             return toastMessages;
-          })
+          }),
         );
     },
     async unresolveEventLogs({ dispatch }, logs) {
@@ -168,7 +168,7 @@
         api.patch(log.uri, { Resolved: false }).catch((error) => {
           console.log(error);
           return error;
-        })
+        }),
       );
       return await api
         .all(promises)
@@ -183,19 +183,19 @@
             if (successCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.successUnresolveLogs',
-                successCount
+                successCount,
               );
               toastMessages.push({ type: 'success', message });
             }
             if (errorCount) {
               const message = i18n.tc(
                 'pageEventLogs.toast.errorUnresolveLogs',
-                errorCount
+                errorCount,
               );
               toastMessages.push({ type: 'error', message });
             }
             return toastMessages;
-          })
+          }),
         );
     },
     // Single log entry
diff --git a/src/store/modules/Logs/PostCodeLogsStore.js b/src/store/modules/Logs/PostCodeLogsStore.js
index 836f984..7648b13 100644
--- a/src/store/modules/Logs/PostCodeLogsStore.js
+++ b/src/store/modules/Logs/PostCodeLogsStore.js
@@ -37,16 +37,16 @@
     async deleteAllPostCodeLogs({ dispatch }, data) {
       return await api
         .post(
-          '/redfish/v1/Systems/system/LogServices/PostCodes/Actions/LogService.ClearLog'
+          '/redfish/v1/Systems/system/LogServices/PostCodes/Actions/LogService.ClearLog',
         )
         .then(() => dispatch('getPostCodesLogData'))
         .then(() =>
-          i18n.tc('pagePostCodeLogs.toast.successDelete', data.length)
+          i18n.tc('pagePostCodeLogs.toast.successDelete', data.length),
         )
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.tc('pagePostCodeLogs.toast.errorDelete', data.length)
+            i18n.tc('pagePostCodeLogs.toast.errorDelete', data.length),
           );
         });
     },
