From 166857e0de61a24877dc42dca5a85b9a0b87ef98 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Tue, 15 Feb 2022 21:33:31 -0600 Subject: [PATCH] Fix lints --- .eslintignore | 2 ++ .eslintrc.json | 8 ++---- README.md | 5 ++++ package.json | 9 +++++- public/js/.eslintrc.json | 15 ++++++++++ public/js/asdf.js | 5 ---- public/js/entry-client.js | 7 ----- server/fetch-events-for-timestamp.js | 2 ++ server/fetch-room-data.js | 2 ++ server/lib/express-async-handler.js | 2 ++ server/lib/fetch-endpoint.js | 2 ++ server/lib/url-join.js | 2 ++ server/render-hydrogen-to-string.js | 2 ++ server/routes/install-routes.js | 42 ++++++++++++++-------------- server/start-dev.js | 1 + shared/CalendarView.js | 2 ++ shared/RightPanelContentView.js | 2 ++ shared/hydrogen-vm-render-script.js | 4 +-- shared/lib/assert.js | 2 ++ 19 files changed, 74 insertions(+), 42 deletions(-) create mode 100644 .eslintignore create mode 100644 public/js/.eslintrc.json delete mode 100644 public/js/asdf.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b947077 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +node_modules/ +dist/ diff --git a/.eslintrc.json b/.eslintrc.json index 14d25eb..70f2876 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -86,11 +86,7 @@ ], "node/no-missing-require": "error", "node/no-missing-import": "error", - "node/no-unsupported-features": [ - "error", - { - "version": 10 - } - ] + "node/no-unsupported-features/es-syntax": "error", + "node/no-unsupported-features/es-builtins": "error" } } diff --git a/README.md b/README.md index 89d97b9..7bf6270 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,8 @@ the messages from a Matrix homeserver. Re-using Hydrogen gets us pretty and native(to Element) looking styles and keeps the maintenance burden of supporting more event types in Hydrogen. + +## Prerequisites + +- Node.js v17 + - We only need v17 because it includes `require('crypto').webcrypto` diff --git a/package.json b/package.json index 3395385..553e7dc 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,15 @@ "version": "0.0.0", "scripts": { "start-dev": "node server/start-dev.js", + "lint": "eslint **/*.js", + "nodemon": "nodemon", - "vite": "vite" + "vite": "vite", + "eslint": "eslint", + "prettier": "prettier" + }, + "engines" : { + "node" : ">=17.0.0" }, "devDependencies": { "eslint": "^8.8.0", diff --git a/public/js/.eslintrc.json b/public/js/.eslintrc.json new file mode 100644 index 0000000..c201ab8 --- /dev/null +++ b/public/js/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "env": { + "browser": true, + "commonjs": false, + "node": false + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "node/no-unsupported-features/es-syntax": "off", + "node/no-unsupported-features/es-builtins": "off" + } +} diff --git a/public/js/asdf.js b/public/js/asdf.js deleted file mode 100644 index 98b371f..0000000 --- a/public/js/asdf.js +++ /dev/null @@ -1,5 +0,0 @@ -function asdf() { - console.log('asdfasdfasdfasdf'); -} - -module.exports = asdf; diff --git a/public/js/entry-client.js b/public/js/entry-client.js index 97ade5e..251663e 100644 --- a/public/js/entry-client.js +++ b/public/js/entry-client.js @@ -1,9 +1,2 @@ -import asdf from './asdf'; - -asdf(); - import mounted from 'matrix-public-archive-shared/hydrogen-vm-render-script'; console.log('mounted', mounted); - -// import mounted2 from '../../shared/hydrogen-vm-render-script'; -// console.log('mounted2', mounted2); diff --git a/server/fetch-events-for-timestamp.js b/server/fetch-events-for-timestamp.js index 0978396..99fb964 100644 --- a/server/fetch-events-for-timestamp.js +++ b/server/fetch-events-for-timestamp.js @@ -1,3 +1,5 @@ +'use strict'; + const assert = require('assert'); const urlJoin = require('./lib/url-join'); diff --git a/server/fetch-room-data.js b/server/fetch-room-data.js index 095d5df..5d76799 100644 --- a/server/fetch-room-data.js +++ b/server/fetch-room-data.js @@ -1,3 +1,5 @@ +'use strict'; + const assert = require('assert'); const urlJoin = require('./lib/url-join'); diff --git a/server/lib/express-async-handler.js b/server/lib/express-async-handler.js index c231470..195cc06 100644 --- a/server/lib/express-async-handler.js +++ b/server/lib/express-async-handler.js @@ -1,3 +1,5 @@ +'use strict'; + // Simple middleware for handling exceptions inside of async express routes and // passing them to your express error handlers. // diff --git a/server/lib/fetch-endpoint.js b/server/lib/fetch-endpoint.js index c73a78e..f2ac088 100644 --- a/server/lib/fetch-endpoint.js +++ b/server/lib/fetch-endpoint.js @@ -1,3 +1,5 @@ +'use strict'; + const assert = require('assert'); const fetch = require('node-fetch'); diff --git a/server/lib/url-join.js b/server/lib/url-join.js index df50ff5..71f9e2f 100644 --- a/server/lib/url-join.js +++ b/server/lib/url-join.js @@ -1,3 +1,5 @@ +'use strict'; + const path = require('path'); // via https://javascript.plainenglish.io/how-to-safely-concatenate-url-with-node-js-f6527b623d5 diff --git a/server/render-hydrogen-to-string.js b/server/render-hydrogen-to-string.js index bda43de..d8bcbe7 100644 --- a/server/render-hydrogen-to-string.js +++ b/server/render-hydrogen-to-string.js @@ -1,3 +1,5 @@ +'use strict'; + const assert = require('assert'); const vm = require('vm'); const path = require('path'); diff --git a/server/routes/install-routes.js b/server/routes/install-routes.js index 6e99af8..577c899 100644 --- a/server/routes/install-routes.js +++ b/server/routes/install-routes.js @@ -14,9 +14,7 @@ const config = require('../../config.json'); const basePath = config.basePath; assert(basePath); -function parseArchiveRangeFromReq(req, res) { - const roomIdOrAlias = req.params.roomIdOrAlias; - +function parseArchiveRangeFromReq(req) { const yyyy = parseInt(req.params.yyyy, 10); // Month is the only zero-based index in this group const mm = parseInt(req.params.mm, 10) - 1; @@ -39,23 +37,6 @@ function parseArchiveRangeFromReq(req, res) { if (Number.isNaN(fromHour) || fromHour < 0 || fromHour > 23) { throw new StatusError(404, 'From hour can only be in range 0-23'); } - - // Currently we force the range to always be 1 hour - // If the format isn't correct, redirect to the correct hour range - if (toHour !== fromHour + 1) { - res.redirect( - urlJoin( - basePath, - roomIdOrAlias, - 'date', - req.params.yyyy, - req.params.mm, - req.params.dd, - `${fromHour}-${fromHour + 1}` - ) - ); - return; - } } const fromTimestamp = Date.UTC(yyyy, mm, dd, fromHour); @@ -70,6 +51,8 @@ function parseArchiveRangeFromReq(req, res) { yyyy, mm, dd, + fromHour, + toHour, }; } @@ -104,7 +87,24 @@ function installRoutes(app) { const roomIdOrAlias = req.params.roomIdOrAlias; assert(roomIdOrAlias.startsWith('!') || roomIdOrAlias.startsWith('#')); - const { fromTimestamp, toTimestamp } = parseArchiveRangeFromReq(req, res); + const { fromTimestamp, fromHour, toHour } = parseArchiveRangeFromReq(req); + + // Currently we force the range to always be 1 hour + // If the format isn't correct, redirect to the correct hour range + if (toHour !== fromHour + 1) { + res.redirect( + urlJoin( + basePath, + roomIdOrAlias, + 'date', + req.params.yyyy, + req.params.mm, + req.params.dd, + `${fromHour}-${fromHour + 1}` + ) + ); + return; + } const [roomData, { events, stateEventMap }] = await Promise.all([ fetchRoomData(roomIdOrAlias), diff --git a/server/start-dev.js b/server/start-dev.js index fe4710b..fe2026d 100644 --- a/server/start-dev.js +++ b/server/start-dev.js @@ -1,4 +1,5 @@ 'use strict'; + const path = require('path'); const nodemon = require('nodemon'); const { build } = require('vite'); diff --git a/shared/CalendarView.js b/shared/CalendarView.js index 71487b8..53abd0a 100644 --- a/shared/CalendarView.js +++ b/shared/CalendarView.js @@ -1,3 +1,5 @@ +'use strict'; + const { TemplateView } = require('hydrogen-view-sdk'); // Month in JavaScript is 0-indexed (January is 0, February is 1, etc), diff --git a/shared/RightPanelContentView.js b/shared/RightPanelContentView.js index fb266b1..5dad735 100644 --- a/shared/RightPanelContentView.js +++ b/shared/RightPanelContentView.js @@ -1,3 +1,5 @@ +'use strict'; + const { TemplateView } = require('hydrogen-view-sdk'); const CalendarView = require('matrix-public-archive-shared/CalendarView'); diff --git a/shared/hydrogen-vm-render-script.js b/shared/hydrogen-vm-render-script.js index 8c65622..c82efaf 100644 --- a/shared/hydrogen-vm-render-script.js +++ b/shared/hydrogen-vm-render-script.js @@ -12,8 +12,8 @@ const { encodeKey, encodeEventIdKey, Timeline, - TimelineView, - RoomView, + // TimelineView, + // RoomView, RoomViewModel, ViewModel, } = require('hydrogen-view-sdk'); diff --git a/shared/lib/assert.js b/shared/lib/assert.js index c5746bc..652f164 100644 --- a/shared/lib/assert.js +++ b/shared/lib/assert.js @@ -1,3 +1,5 @@ +'use strict'; + function assert(value, message) { console.assert(value, message); if (!value) {