From 830cf0b5394daeb1f6066170870c466de3ac63e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20H=C3=BCttemann?= Date: Mon, 19 Jun 2023 20:43:45 +0200 Subject: [PATCH] Add more explicit type annotations --- src/handlers/rooms.test.ts | 3 ++- src/handlers/rooms.ts | 7 ++++--- src/helpers/storage.ts | 18 ++++++++++++------ src/helpers/synapse.ts | 13 +++++++++++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/handlers/rooms.test.ts b/src/handlers/rooms.test.ts index b166001..94f64bf 100644 --- a/src/handlers/rooms.test.ts +++ b/src/handlers/rooms.test.ts @@ -14,6 +14,7 @@ import { parseMemberships, registerRoom, } from './rooms' +import { SessionOptions } from '../helpers/synapse' jest.mock('axios') const mockedAxios = axios as jest.Mocked @@ -54,7 +55,7 @@ const rcPrivateRoom = { u: roomCreator, } -const sessionOption = { +const sessionOption: SessionOptions = { headers: { Authorization: 'Bearer secretAuthToken' }, testingOption: 'there might be other options', } diff --git a/src/handlers/rooms.ts b/src/handlers/rooms.ts index 3a4b954..0ed2897 100644 --- a/src/handlers/rooms.ts +++ b/src/handlers/rooms.ts @@ -6,6 +6,7 @@ import { getMemberships, } from '../helpers/storage' import { + SessionOptions, axios, formatUserSessionOptions, getUserSessionOptions, @@ -114,7 +115,7 @@ export async function parseMemberships(rcRoom: RcRoom): Promise { export async function getCreatorSessionOptions( creatorId: string -): Promise { +): Promise { if (creatorId) { try { const creatorSessionOptions = await getUserSessionOptions(creatorId) @@ -129,7 +130,7 @@ export async function getCreatorSessionOptions( export async function registerRoom( room: MatrixRoom, - creatorSessionOptions: object + creatorSessionOptions: SessionOptions | object ): Promise { return ( await axios.post( @@ -143,7 +144,7 @@ export async function registerRoom( export async function inviteMember( inviteeId: string, roomId: string, - creatorSessionOptions: object + creatorSessionOptions: SessionOptions | object ): Promise { log.http(`Invite member ${inviteeId}`) await axios.post( diff --git a/src/helpers/storage.ts b/src/helpers/storage.ts index 3b8c8d3..961de7a 100644 --- a/src/helpers/storage.ts +++ b/src/helpers/storage.ts @@ -10,26 +10,32 @@ const AppDataSource = new DataSource({ logging: false, }) -export async function initStorage() { +export async function initStorage(): Promise { await AppDataSource.initialize() } -export function getMapping(id: string, type: number) { +export function getMapping( + id: string, + type: number +): Promise { return AppDataSource.manager.findOneBy(IdMapping, { rcId: id, type: type, }) } -export async function save(entity: IdMapping | Membership) { +export async function save(entity: IdMapping | Membership): Promise { await AppDataSource.manager.save(entity) } -export async function getAccessToken(id: string) { +export async function getAccessToken(id: string): Promise { return (await getMapping(id, 0))?.accessToken } -export async function createMembership(rcRoomId: string, rcUserId: string) { +export async function createMembership( + rcRoomId: string, + rcUserId: string +): Promise { const membership = new Membership() membership.rcRoomId = rcRoomId membership.rcUserId = rcUserId @@ -37,7 +43,7 @@ export async function createMembership(rcRoomId: string, rcUserId: string) { await save(membership) } -export async function getMemberships(rcRoomId: string) { +export async function getMemberships(rcRoomId: string): Promise { return ( await AppDataSource.manager.find(Membership, { select: { diff --git a/src/helpers/synapse.ts b/src/helpers/synapse.ts index 3ab2990..da85899 100644 --- a/src/helpers/synapse.ts +++ b/src/helpers/synapse.ts @@ -7,6 +7,13 @@ axios.defaults.baseURL = 'http://localhost:8008' axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}` axios.defaults.headers.post['Content-Type'] = 'application/json' +export interface SessionOptions { + headers: { + Authorization: string + } + [others: string]: unknown +} + export { default as axios } from 'axios' export const whoami = () => new Promise((resolve, reject) => { @@ -22,11 +29,13 @@ export const whoami = () => }) }) -export function formatUserSessionOptions(accessToken: string) { +export function formatUserSessionOptions(accessToken: string): SessionOptions { return { headers: { Authorization: `Bearer ${accessToken}` } } } -export async function getUserSessionOptions(id: string) { +export async function getUserSessionOptions( + id: string +): Promise { const accessToken = await getAccessToken(id) if (!accessToken) { throw new Error(`Could not retrieve access token for ID ${id}`)