clean up lint issues
authorJustin Wind <justin.wind+git@gmail.com>
Mon, 19 Sep 2022 18:01:10 +0000 (11:01 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Mon, 19 Sep 2022 18:01:10 +0000 (11:01 -0700)
.eslintrc.json
src/common.js
src/communication.js
src/db/base.js
src/db/postgres/index.js
src/db/sqlite/index.js
src/enum.js
src/template/template-helper.js

index e6c6f891e3faa434368a990eaeaffb9f0aea42f4..e5277a11cdda9fd6342f7a2ff43529b403a975c1 100644 (file)
       "error",
       "single"
     ],
+    "semi": [
+      "error",
+      "always"
+    ],
     "strict": "error",
     "vars-on-top": "error"
   }
index 55a0807b00757e2c2fa0fe8d50e7c22701b0bacf..4ed310f44ebb4d524c58385ad76a4c2d25b88375 100644 (file)
@@ -57,7 +57,7 @@ const freezeDeep = (o) => {
     }
   });
   return o;
-}
+};
 
 
 /**
@@ -111,7 +111,7 @@ const attemptRetrySeconds = (attempt, retryBackoffSeconds = [60, 120, 360, 1440,
   let seconds = retryBackoffSeconds[attempt];
   seconds += Math.floor(Math.random() * seconds * jitter);
   return seconds;
-}
+};
 
 
 /**
@@ -122,7 +122,7 @@ const attemptRetrySeconds = (attempt, retryBackoffSeconds = [60, 120, 360, 1440,
 const arrayChunk = (array, per = 1) => {
   const nChunks = Math.ceil(array.length / per);
   return Array.from(Array(nChunks), (_, i) => array.slice(i * per, (i + 1) * per));
-}
+};
 
 
 /**
@@ -135,7 +135,7 @@ const stackSafePush = (dst, src) => {
   arrayChunk(src, jsEngineMaxArguments).forEach((items) => {
     Array.prototype.push.apply(dst, items);
   });
-}
+};
 
 
 /**
index 3b436786fabf3ebfddfb245b479da669894f8377..feda5887146c6b70ae242e1daf52ab3fbbe10a44 100644 (file)
@@ -220,8 +220,8 @@ class Communication {
 
     const topic = await this.db.topicGetById(dbCtx, verification.topicId);
     if (!topic) {
-      this.logger.error(_scope, 'no such topic id', { verification, requestId });
-      throw new Errors.InternalInconsistencyError('no such topic id');
+      this.logger.error(_scope, Enum.Message.NoSuchTopicId, { verification, requestId });
+      throw new Errors.InternalInconsistencyError(Enum.Message.NoSuchTopicId);
     }
 
     if (!topic.isActive) {
@@ -438,8 +438,8 @@ class Communication {
 
     const topic = await this.db.topicGetById(dbCtx, topicId);
     if (topic === undefined) {
-      this.logger.error(_scope, 'no such topic id', logInfoData);
-      throw new Errors.InternalInconsistencyError('no such topic id');
+      this.logger.error(_scope, Enum.Message.NoSuchTopicId, logInfoData);
+      throw new Errors.InternalInconsistencyError(Enum.Message.NoSuchTopicId);
     }
 
     // Cull any expired subscriptions
index c5ea237c7e1f33c71abfd23f0e4b3136af507f9c..205b8149778928a0ab915d83e9aaf64c158c35b8 100644 (file)
@@ -137,7 +137,7 @@ class Database {
    * @param {Object} data
    */
   _leaseDurationsValidate(data) {
-    const leaseProperties = Object.keys(this.topicLeaseDefaults)
+    const leaseProperties = Object.keys(this.topicLeaseDefaults);
     this._ensureTypes(data, leaseProperties, ['number', 'undefined', 'null']);
 
     // Populate defaults on a copy of values so we can check proper numerical ordering
index 2eca12f4909799f6d60ab2249d79d47a3cb4e6e1..e70aeb7b7883e2700dceb7ce7599d069bf8a515c 100644 (file)
@@ -377,7 +377,7 @@ class DatabasePostgres extends Database {
         throw new DBErrors.UnexpectedResult('did not upsert authentication');
       }
     } catch (e) {
-      this.logger.error(_scope, 'failed', { error: e, identifier, scrubbedCredential })
+      this.logger.error(_scope, 'failed', { error: e, identifier, scrubbedCredential });
       throw e;
     }
   }
index 76309d6c039f623749b575b2f1b1b20f9fb212e5..a30c9b4ff00c673902708c3011e2d88dbc874f4d 100644 (file)
@@ -302,7 +302,7 @@ class DatabaseSQLite extends Database {
         throw new DBErrors.UnexpectedResult('did not upsert authentication');
       }
     } catch (e) {
-      this.logger.error(_scope, 'failed', { error: e, identifier, scrubbedCredential })
+      this.logger.error(_scope, 'failed', { error: e, identifier, scrubbedCredential });
       throw e;
     }
   }
@@ -558,7 +558,7 @@ class DatabaseSQLite extends Database {
       httpRemoteAddr: null,
       httpFrom: null,
       ...data,
-    }
+    };
     this._subscriptionUpsertDataValidate(subscriptionData);
 
     let result;
@@ -827,10 +827,11 @@ class DatabaseSQLite extends Database {
 
   topicPublishHistory(dbCtx, topicId, days) {
     const _scope = _fileScope('topicPublishHistory');
-    this.logger.debug(_scope, 'called', { topicId, days })
+    this.logger.debug(_scope, 'called', { topicId, days });
 
     const events = this.statement.topicPublishHistory.all({ topicId, daysAgo: days });
     const history = Array.from({ length: days }, () => 0);
+    // eslint-disable-next-line security/detect-object-injection
     events.forEach(({ daysAgo, contentUpdates }) => history[daysAgo] = Number(contentUpdates));
 
     return history;
index b8eaf3e26d1f5786ab3260c233ec9106ecd8cd75..0b4978d3a329df5aac3cb2ca7db2f5ce874763a1 100644 (file)
@@ -36,6 +36,16 @@ const Enum = common.mergeDeep(DingusEnum, {
     ImageSVG: 'image/svg+xml',
     TextXML: 'text/xml',
   },
+
+  Message : {
+    BeginningOfTime: 'Beginning of Time',
+    EndOfTime: 'End of Time',
+    Never: 'Never',
+    NextPublish: 'Next Publish',
+    NoSuchTopicId: 'no such topic id',
+    Pending: 'Pending',
+    Unknown: 'Unknown',
+  },
 });
 
 module.exports = common.freezeDeep(Enum);
\ No newline at end of file
index 3fd371035d0ab4989bcfbf771839f5d6431a5f11..23b0f12b37f84c6700fe9edd9f9b5851c014a225 100644 (file)
@@ -1,6 +1,7 @@
 'use strict';
 
 const { TemplateHelper } = require('@squeep/html-template-helper');
+const { Message } = require('../enum');
 
 /**
  * Render a topic as a row of details.
@@ -18,17 +19,17 @@ function renderTopicRow(topic, subscribers, detailsLink = true) {
   return `<tr>
   <th scope="row">${detailsLink ? '<a href="topic/' + topic.id + '">' : ''}${topic.url}${detailsLink ? '</a>' : ''}</th>
   <td>${subscribers.length}</td>
-  <td>${TemplateHelper.dateFormat(topic.created, 'End of Time', 'Beginning of Time', 'Unknown')}</td>
+  <td>${TemplateHelper.dateFormat(topic.created, Message.EndOfTime, Message.BeginningOfTime, Message.Unknown)}</td>
   <td>${TemplateHelper.secondsToPeriod(topic.leaseSecondsPreferred)}</td>
   <td>${TemplateHelper.secondsToPeriod(topic.leaseSecondsMin)}</td>
   <td>${TemplateHelper.secondsToPeriod(topic.leaseSecondsMax)}</td>
   <td>${topic.publisherValidationUrl ? topic.publisherValidationUrl : 'None'}</td>
   <td>${topic.isActive}</td>
   <td>${topic.isDeleted}</td>
-  <td>${TemplateHelper.dateFormat(topic.lastPublish, 'End of Time', 'Never', 'Never')}</td>
-  <td>${TemplateHelper.dateFormat(topic.contentFetchNextAttempt, 'Next Publish', 'Pending', 'Next Publish')}</td>
+  <td>${TemplateHelper.dateFormat(topic.lastPublish, Message.EndOfTime, Message.Never, Message.Never)}</td>
+  <td>${TemplateHelper.dateFormat(topic.contentFetchNextAttempt, Message.NextPublish, Message.Pending, Message.NextPublish)}</td>
   <td>${topic.contentFetchAttemptsSinceSuccess}</td>
-  <td>${TemplateHelper.dateFormat(topic.contentUpdated, 'End of Time', 'Never', 'Never')}</td>
+  <td>${TemplateHelper.dateFormat(topic.contentUpdated, Message.EndOfTime, Message.Never, Message.Never)}</td>
   <td>${topic.contentType}</td>
   <td>${topic.id}</td>
 </tr>`;
@@ -73,16 +74,16 @@ function renderSubscriptionRow(subscription) {
   }
   return `<tr>
   <td scope="row">${subscription.callback}</td>
-  <td>${TemplateHelper.dateFormat(subscription.created, 'End of Time', 'Beginning of Time', 'Unknown')}</td>
-  <td>${TemplateHelper.dateFormat(subscription.verified, 'End of Time', 'Never', 'Never')}</td>
-  <td>${TemplateHelper.dateFormat(subscription.expires, 'Never', 'Beginning of Time', 'Never')}</td>
+  <td>${TemplateHelper.dateFormat(subscription.created, Message.EndOfTime, Message.BeginningOfTime, Message.Unknown)}</td>
+  <td>${TemplateHelper.dateFormat(subscription.verified, Message.EndOfTime, Message.Never, Message.Never)}</td>
+  <td>${TemplateHelper.dateFormat(subscription.expires, Message.Never, Message.BeginningOfTime, Message.Never)}</td>
   <td>${!!subscription.secret}</td>
   <td>${subscription.signatureAlgorithm}</td>
   <td>${subscription.httpRemoteAddr}</td>
   <td>${subscription.httpFrom}</td>
-  <td>${TemplateHelper.dateFormat(subscription.contentDelivered, 'End of Time', 'Never', 'Never')}</td>
+  <td>${TemplateHelper.dateFormat(subscription.contentDelivered, Message.EndOfTime, Message.Never, Message.Never)}</td>
   <td>${subscription.deliveryAttemptsSinceSuccess}</td>
-  <td>${TemplateHelper.dateFormat(subscription.deliveryNextAttempt, 'End of Time', 'Next Publish', 'Next Publish')}</td>
+  <td>${TemplateHelper.dateFormat(subscription.deliveryNextAttempt, Message.EndOfTime, Message.NextPublish, Message.NextPublish)}</td>
   <td>${subscription.id}</td>
 </tr>`;
 }