diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 798bef1e6..78ac9e41e 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -27,7 +27,8 @@ module.exports = { }, }, rules: { - 'no-console': ['error'], + 'no-console': 'error', + camelcase: ['error', { allow: ['FederationClient_*'] }], 'no-debugger': 'error', 'prettier/prettier': [ 'error', @@ -184,6 +185,7 @@ module.exports = { tsconfigRootDir: __dirname, project: ['./tsconfig.json', '**/tsconfig.json'], // this is to properly reference the referenced project database without requirement of compiling it + // eslint-disable-next-line camelcase EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, }, }, diff --git a/backend/src/federation/client/Client_1_1.ts b/backend/src/federation/client/Client_1_1.ts deleted file mode 100644 index 8525acc5d..000000000 --- a/backend/src/federation/client/Client_1_1.ts +++ /dev/null @@ -1,5 +0,0 @@ -// eslint-disable-next-line camelcase -import { Client_1_0 } from './Client_1_0' - -// eslint-disable-next-line camelcase -export class Client_1_1 extends Client_1_0 {} diff --git a/backend/src/federation/client/Client.ts b/backend/src/federation/client/FederationClient.ts similarity index 66% rename from backend/src/federation/client/Client.ts rename to backend/src/federation/client/FederationClient.ts index 98f63c127..db1e5e3b2 100644 --- a/backend/src/federation/client/Client.ts +++ b/backend/src/federation/client/FederationClient.ts @@ -2,22 +2,19 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom import { ApiVersionType } from '@/federation/enum/apiVersionType' -// eslint-disable-next-line camelcase -import { Client_1_0 } from './Client_1_0' -// eslint-disable-next-line camelcase -import { Client_1_1 } from './Client_1_1' +import { FederationClient_1_0 } from './FederationClient_1_0' +import { FederationClient_1_1 } from './FederationClient_1_1' -// eslint-disable-next-line camelcase -type FederationClient = Client_1_0 | Client_1_1 +type FederationClientType = FederationClient_1_0 | FederationClient_1_1 interface ClientInstance { id: number // eslint-disable-next-line no-use-before-define - client: FederationClient + client: FederationClientType } // eslint-disable-next-line @typescript-eslint/no-extraneous-class -export class Client { +export class FederationClient { private static instanceArray: ClientInstance[] = [] /** @@ -30,9 +27,9 @@ export class Client { private static createFederationClient = (dbCom: DbFederatedCommunity) => { switch (dbCom.apiVersion) { case ApiVersionType.V1_0: - return new Client_1_0(dbCom) + return new FederationClient_1_0(dbCom) case ApiVersionType.V1_1: - return new Client_1_1(dbCom) + return new FederationClient_1_1(dbCom) default: return null } @@ -44,14 +41,14 @@ export class Client { * This implementation let you subclass the Singleton class while keeping * just one instance of each subclass around. */ - public static getInstance(dbCom: DbFederatedCommunity): FederationClient | null { - const instance = Client.instanceArray.find((instance) => instance.id === dbCom.id) + public static getInstance(dbCom: DbFederatedCommunity): FederationClientType | null { + const instance = FederationClient.instanceArray.find((instance) => instance.id === dbCom.id) if (instance) { return instance.client } - const client = Client.createFederationClient(dbCom) + const client = FederationClient.createFederationClient(dbCom) if (client) { - Client.instanceArray.push({ id: dbCom.id, client } as ClientInstance) + FederationClient.instanceArray.push({ id: dbCom.id, client } as ClientInstance) } return client } diff --git a/backend/src/federation/client/Client_1_0.ts b/backend/src/federation/client/FederationClient_1_0.ts similarity index 96% rename from backend/src/federation/client/Client_1_0.ts rename to backend/src/federation/client/FederationClient_1_0.ts index 0c0d458c8..c8e878ded 100644 --- a/backend/src/federation/client/Client_1_0.ts +++ b/backend/src/federation/client/FederationClient_1_0.ts @@ -4,8 +4,7 @@ import { GraphQLClient } from 'graphql-request' import { getPublicKey } from '@/federation/query/getPublicKey' import { backendLogger as logger } from '@/server/logger' -// eslint-disable-next-line camelcase -export class Client_1_0 { +export class FederationClient_1_0 { dbCom: DbFederatedCommunity endpoint: string client: GraphQLClient diff --git a/backend/src/federation/client/FederationClient_1_1.ts b/backend/src/federation/client/FederationClient_1_1.ts new file mode 100644 index 000000000..27679b423 --- /dev/null +++ b/backend/src/federation/client/FederationClient_1_1.ts @@ -0,0 +1,3 @@ +import { FederationClient_1_0 } from './FederationClient_1_0' + +export class FederationClient_1_1 extends FederationClient_1_0 {} diff --git a/backend/src/federation/validateCommunities.test.ts b/backend/src/federation/validateCommunities.test.ts index 77d0cc2ad..cf8624be1 100644 --- a/backend/src/federation/validateCommunities.test.ts +++ b/backend/src/federation/validateCommunities.test.ts @@ -70,6 +70,7 @@ describe('validate Communities', () => { .into(DbFederatedCommunity) .values(variables1) .orUpdate({ + // eslint-disable-next-line camelcase conflict_target: ['id', 'publicKey', 'apiVersion'], overwrite: ['end_point', 'last_announced_at'], }) @@ -102,6 +103,7 @@ describe('validate Communities', () => { .into(DbFederatedCommunity) .values(variables2) .orUpdate({ + // eslint-disable-next-line camelcase conflict_target: ['id', 'publicKey', 'apiVersion'], overwrite: ['end_point', 'last_announced_at'], }) @@ -140,6 +142,7 @@ describe('validate Communities', () => { .into(DbFederatedCommunity) .values(variables3) .orUpdate({ + // eslint-disable-next-line camelcase conflict_target: ['id', 'publicKey', 'apiVersion'], overwrite: ['end_point', 'last_announced_at'], }) diff --git a/backend/src/federation/validateCommunities.ts b/backend/src/federation/validateCommunities.ts index 4b337eda9..91c85d09b 100644 --- a/backend/src/federation/validateCommunities.ts +++ b/backend/src/federation/validateCommunities.ts @@ -5,7 +5,7 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom import { backendLogger as logger } from '@/server/logger' -import { Client } from './client/Client' +import { FederationClient } from './client/FederationClient' import { ApiVersionType } from './enum/apiVersionType' export function startValidateCommunities(timerInterval: number): void { @@ -37,7 +37,7 @@ export async function validateCommunities(): Promise { continue } try { - const client = Client.getInstance(dbCom) + const client = FederationClient.getInstance(dbCom) const pubKey = await client?.getPublicKey() if (pubKey && pubKey === dbCom.publicKey.toString()) { await DbFederatedCommunity.update({ id: dbCom.id }, { verifiedAt: new Date() })