diff --git a/app/server/inactiveRooms.spec.ts b/app/server/inactiveRooms.spec.ts new file mode 100644 index 0000000..238dbfd --- /dev/null +++ b/app/server/inactiveRooms.spec.ts @@ -0,0 +1,22 @@ +import pollForInactiveRooms from './inactiveRooms'; +import getStore from './store'; + +const TEN_DAYS_PERIOD_IN_MILLISECONDS = 1000 * 60 * 60 * 24 * 10; +describe('Inactive rooms auto removed from store', () => { + it('should remove inactive rooms from store that are updatedAt about 10 days ago', async () => { + const store = getStore(); + store.set( + 'rooms', + 'roomId1', + JSON.stringify({ + updatedAt: Date.now() - TEN_DAYS_PERIOD_IN_MILLISECONDS, + }) + ); + + pollForInactiveRooms(); + + const rooms = (await store.getAll('rooms')) || {}; + // log.info(`${Object.keys(rooms).length} rooms found`); + expect(Object.keys(rooms).length).toBe(0); + }); +}); diff --git a/app/server/inactive_rooms.ts b/app/server/inactiveRooms.ts similarity index 66% rename from app/server/inactive_rooms.ts rename to app/server/inactiveRooms.ts index dffe35d..47e1178 100644 --- a/app/server/inactive_rooms.ts +++ b/app/server/inactiveRooms.ts @@ -1,15 +1,9 @@ /* eslint-disable no-console */ import getStore from './store'; -import Logger from '../utils/logger'; - -const log = new Logger('app/server/inactive_rooms.ts'); export default async function pollForInactiveRooms() { const store = getStore(); - - log.info('Checking for inactive rooms...'); const rooms = (await store.getAll('rooms')) || {}; - log.info(`${Object.keys(rooms).length} rooms found`); Object.keys(rooms).forEach(async (roomId) => { const room = JSON.parse(rooms[roomId]); @@ -18,9 +12,6 @@ export default async function pollForInactiveRooms() { timeSinceUpdatedInSeconds / 60 / 60 / 24 ); if (timeSinceUpdatedInDays > 7) { - log.info( - `Deleting roomId ${roomId} which hasn't been used in ${timeSinceUpdatedInDays} days` - ); await store.del('rooms', roomId); } }); diff --git a/app/server/index.ts b/app/server/index.ts index abacbe9..ecac06f 100644 --- a/app/server/index.ts +++ b/app/server/index.ts @@ -11,17 +11,13 @@ import koaSend from 'koa-send'; import getPort from 'get-port'; // eslint-disable-next-line import/no-cycle import Socket from './socket'; -import pollForInactiveRooms from './inactive_rooms'; +import pollForInactiveRooms from './inactiveRooms'; import getStore from './store'; import Logger from '../utils/logger'; const log = new Logger('app/server/index.ts'); -// const log = (...args) => { -// logger. -// }; - let isDev; try { // eslint-disable-next-line global-require diff --git a/app/server/socket.ts b/app/server/socket.ts index 953cb16..e007313 100644 --- a/app/server/socket.ts +++ b/app/server/socket.ts @@ -1,5 +1,4 @@ /* eslint-disable no-async-promise-executor */ -import regeneratorRuntime from 'regenerator-runtime'; import _ from 'lodash'; import Io from 'socket.io'; // eslint-disable-next-line import/no-cycle diff --git a/app/server/store/Memory.ts b/app/server/store/Memory.ts index 65df13d..b095002 100644 --- a/app/server/store/Memory.ts +++ b/app/server/store/Memory.ts @@ -1,21 +1,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -/** - * Memory store more for testing purpose than production use. - */ + +/* + * got original code from darkwire.io + * translated code to typescript for Deskreen + * */ interface MemoryStoreParams { - store: any; - hasSocketAdapter: boolean; + store: unknown; } class MemoryStore implements MemoryStoreParams { store: any; - hasSocketAdapter: boolean; - constructor() { this.store = {}; - this.hasSocketAdapter = false; } async get(key: string, field: any) { diff --git a/app/server/utils/index.ts b/app/server/utils/index.ts deleted file mode 100644 index 60d1fb1..0000000 --- a/app/server/utils/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line import/prefer-default-export -export function sanitize(str: string) { - return str.replace(/[^A-Za-z0-9]/g, '-'); -} diff --git a/app/server/utils/utils.test.ts b/app/server/utils/utils.test.ts deleted file mode 100644 index 1b31ae9..0000000 --- a/app/server/utils/utils.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { sanitize } from './index'; - -test('sanitizes should strip bad characters', () => { - expect(sanitize('d@rkW1r# e is L3git&&!&*A*')).toBe( - 'd-rkW1r--e-is-L3git-----A-' - ); -}); diff --git a/app/utils/logger.ts b/app/utils/logger.ts index c78af5d..1ebe9ef 100644 --- a/app/utils/logger.ts +++ b/app/utils/logger.ts @@ -6,7 +6,7 @@ log.transports.file.level = 'warn'; if (process.env.NODE_ENV !== 'production') { log.transports.console.level = 'silly'; } else { - log.transports.console.level = 'silly'; // TODO: make false when doing release + log.transports.console.level = 'debug'; // TODO: make false when doing release } export default class LoggerWithFilePrefix { diff --git a/app/utils/server/getRandomPort.ts b/app/utils/server/getRandomPort.ts deleted file mode 100644 index 9c7d889..0000000 --- a/app/utils/server/getRandomPort.ts +++ /dev/null @@ -1,15 +0,0 @@ -import getPort from 'get-port'; - -export function shuffle(array: number[]) { - array.sort(() => Math.random() - 0.5); -} - -export default async (): Promise => { - let res = 3131; - const range = Array.from(getPort.makeRange(2000, 9999)); - shuffle(range); - res = await getPort({ - port: range, - }); - return res; -}; diff --git a/app/utils/socket.ts b/app/utils/socket.ts deleted file mode 100644 index 7a11c9b..0000000 --- a/app/utils/socket.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable no-console */ -import socketIO from 'socket.io-client'; -import generateUrl from '../api/generator'; - -let socket: SocketIOClient.Socket; - -export const connect = (roomId: string) => { - socket = socketIO(generateUrl(), { - query: { - roomId, - }, - forceNew: true, - }); - console.log('socket in utils', socket); - return socket; -}; - -export const getSocket = () => socket;