diff --git a/federation/.eslintignore b/federation/.eslintignore deleted file mode 100644 index f6b255e92..000000000 --- a/federation/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -**/*.min.js -build \ No newline at end of file diff --git a/federation/.eslintrc.js b/federation/.eslintrc.js deleted file mode 100644 index 042a417f7..000000000 --- a/federation/.eslintrc.js +++ /dev/null @@ -1,206 +0,0 @@ -// eslint-disable-next-line import/no-commonjs, import/unambiguous -module.exports = { - root: true, - env: { - node: true, - }, - parser: '@typescript-eslint/parser', - plugins: ['prettier', '@typescript-eslint', 'import', 'n', 'promise'], - extends: [ - 'standard', - 'eslint:recommended', - 'plugin:prettier/recommended', - // 'plugin:import/recommended', - // 'plugin:import/typescript', - // 'plugin:security/recommended', - // 'plugin:@eslint-community/eslint-comments/recommended', - ], - settings: { - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - project: ['./tsconfig.json'], - }, - node: true, - }, - }, - rules: { - 'no-console': 'error', - camelcase: 'error', - 'no-debugger': 'error', - 'prettier/prettier': [ - 'error', - { - htmlWhitespaceSensitivity: 'ignore', - }, - ], - // import - // 'import/export': 'error', - // 'import/no-deprecated': 'error', - // 'import/no-empty-named-blocks': 'error', - // 'import/no-extraneous-dependencies': 'error', - // 'import/no-mutable-exports': 'error', - // 'import/no-unused-modules': 'error', - // 'import/no-named-as-default': 'error', - // 'import/no-named-as-default-member': 'error', - // 'import/no-amd': 'error', - // 'import/no-commonjs': 'error', - // 'import/no-import-module-exports': 'error', - // 'import/no-nodejs-modules': 'off', - // 'import/unambiguous': 'error', - // 'import/default': 'error', - // 'import/named': 'error', - // 'import/namespace': 'error', - // 'import/no-absolute-path': 'error', - // 'import/no-cycle': 'error', - // 'import/no-dynamic-require': 'error', - // 'import/no-internal-modules': 'off', - // 'import/no-relative-packages': 'error', - // 'import/no-relative-parent-imports': ['error', { ignore: ['@/*'] }], - // 'import/no-self-import': 'error', - // 'import/no-unresolved': 'error', - // 'import/no-useless-path-segments': 'error', - // 'import/no-webpack-loader-syntax': 'error', - // 'import/consistent-type-specifier-style': 'error', - // 'import/exports-last': 'off', - // 'import/extensions': 'error', - // 'import/first': 'error', - // 'import/group-exports': 'off', - // 'import/newline-after-import': 'error', - // 'import/no-anonymous-default-export': 'error', - // 'import/no-default-export': 'error', - // 'import/no-duplicates': 'error', - // 'import/no-named-default': 'error', - // 'import/no-namespace': 'error', - // 'import/no-unassigned-import': 'error', - // 'import/order': [ - // 'error', - // { - // groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], - // 'newlines-between': 'always', - // pathGroups: [ - // { - // pattern: '@?*/**', - // group: 'external', - // position: 'after', - // }, - // { - // pattern: '@/**', - // group: 'external', - // position: 'after', - // }, - // ], - // alphabetize: { - // order: 'asc' /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */, - // caseInsensitive: true /* ignore case. Options: [true, false] */, - // }, - // distinctGroup: true, - // }, - // ], - // 'import/prefer-default-export': 'off', - // n - // 'n/handle-callback-err': 'error', - // 'n/no-callback-literal': 'error', - // 'n/no-exports-assign': 'error', - // 'n/no-extraneous-import': 'error', - // 'n/no-extraneous-require': 'error', - // 'n/no-hide-core-modules': 'error', - // 'n/no-missing-import': 'off', // not compatible with typescript - // 'n/no-missing-require': 'error', - // 'n/no-new-require': 'error', - // 'n/no-path-concat': 'error', - // 'n/no-process-exit': 'error', - // 'n/no-unpublished-bin': 'error', - // 'n/no-unpublished-import': 'off', // TODO need to exclude seeds - // 'n/no-unpublished-require': 'error', - // 'n/no-unsupported-features': ['error', { ignores: ['modules'] }], - // 'n/no-unsupported-features/es-builtins': 'error', - // 'n/no-unsupported-features/es-syntax': 'error', - // 'n/no-unsupported-features/node-builtins': 'error', - // 'n/process-exit-as-throw': 'error', - // 'n/shebang': 'error', - // 'n/callback-return': 'error', - // 'n/exports-style': 'error', - // 'n/file-extension-in-import': 'off', - // 'n/global-require': 'error', - // 'n/no-mixed-requires': 'error', - // 'n/no-process-env': 'error', - // 'n/no-restricted-import': 'error', - // 'n/no-restricted-require': 'error', - // 'n/no-sync': 'error', - // 'n/prefer-global/buffer': 'error', - // 'n/prefer-global/console': 'error', - // 'n/prefer-global/process': 'error', - // 'n/prefer-global/text-decoder': 'error', - // 'n/prefer-global/text-encoder': 'error', - // 'n/prefer-global/url': 'error', - // 'n/prefer-global/url-search-params': 'error', - // 'n/prefer-promises/dns': 'error', - // 'n/prefer-promises/fs': 'error', - // promise - // 'promise/catch-or-return': 'error', - // 'promise/no-return-wrap': 'error', - // 'promise/param-names': 'error', - // 'promise/always-return': 'error', - // 'promise/no-native': 'off', - // 'promise/no-nesting': 'warn', - // 'promise/no-promise-in-callback': 'warn', - // 'promise/no-callback-in-promise': 'warn', - // 'promise/avoid-new': 'warn', - // 'promise/no-new-statics': 'error', - // 'promise/no-return-in-finally': 'warn', - // 'promise/valid-params': 'warn', - // 'promise/prefer-await-to-callbacks': 'error', - // 'promise/no-multiple-resolved': 'error', - // eslint comments - // '@eslint-community/eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }], - // '@eslint-community/eslint-comments/no-restricted-disable': 'error', - // '@eslint-community/eslint-comments/no-use': 'off', - // '@eslint-community/eslint-comments/require-description': 'off', - }, - overrides: [ - // only for ts files - { - files: ['*.ts', '*.tsx'], - extends: [ - 'plugin:@typescript-eslint/recommended', - // 'plugin:@typescript-eslint/recommended-requiring-type-checking', - // 'plugin:@typescript-eslint/strict', - // 'plugin:type-graphql/recommended', - ], - rules: { - // allow explicitly defined dangling promises - // '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }], - 'no-void': ['error', { allowAsStatement: true }], - // ignore prefer-regexp-exec rule to allow string.match(regex) - '@typescript-eslint/prefer-regexp-exec': 'off', - // this should not run on ts files: https://github.com/import-js/eslint-plugin-import/issues/2215#issuecomment-911245486 - 'import/unambiguous': 'off', - // this is not compatible with typeorm, due to joined tables can be null, but are not defined as nullable - '@typescript-eslint/no-unnecessary-condition': 'off', - }, - parserOptions: { - tsconfigRootDir: __dirname, - project: ['./tsconfig.json'], - // this is to properly reference the referenced project database without requirement of compiling it - // eslint-disable-next-line camelcase - EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, - }, - }, - { - files: ['*.test.ts'], - plugins: ['jest'], - rules: { - 'jest/no-disabled-tests': 'error', - 'jest/no-focused-tests': 'error', - 'jest/no-identical-title': 'error', - 'jest/prefer-to-have-length': 'error', - 'jest/valid-expect': 'error', - '@typescript-eslint/unbound-method': 'off', - // 'jest/unbound-method': 'error', - }, - }, - ], -} diff --git a/federation/.prettierrc.js b/federation/.prettierrc.js deleted file mode 100644 index bc1d767d7..000000000 --- a/federation/.prettierrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - semi: false, - printWidth: 100, - singleQuote: true, - trailingComma: "all", - tabWidth: 2, - bracketSpacing: true, - endOfLine: "auto", -}; diff --git a/federation/package.json b/federation/package.json index d54562abd..fa129b74e 100644 --- a/federation/package.json +++ b/federation/package.json @@ -37,6 +37,7 @@ "uuid": "8.3.2" }, "devDependencies": { + "@biomejs/biome": "1.9.4", "@types/express": "4.17.12", "@types/jest": "27.0.2", "@types/joi": "^17.2.3", @@ -44,20 +45,7 @@ "@types/node": "^16.10.3", "@types/sodium-native": "^2.3.5", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "^5.57.1", - "@typescript-eslint/parser": "^5.57.1", "apollo-server-testing": "2.25.2", - "eslint": "^8.37.0", - "eslint-config-prettier": "^8.8.0", - "eslint-config-standard": "^17.0.0", - "eslint-import-resolver-typescript": "^3.5.4", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-security": "^1.7.1", - "eslint-plugin-type-graphql": "^1.0.0", "gradido-config": "../config", "graphql-tag": "^2.12.6", "jest": "^27.2.4", diff --git a/federation/src/client/1_0/AuthenticationClient.ts b/federation/src/client/1_0/AuthenticationClient.ts index 3a94746b1..29a686ca3 100644 --- a/federation/src/client/1_0/AuthenticationClient.ts +++ b/federation/src/client/1_0/AuthenticationClient.ts @@ -1,11 +1,11 @@ +import { federationLogger as logger } from '@/server/logger' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' import { GraphQLClient } from 'graphql-request' -import { federationLogger as logger } from '@/server/logger' -import { OpenConnectionCallbackArgs } from '@/graphql/api/1_0/model/OpenConnectionCallbackArgs' -import { openConnectionCallback } from './query/openConnectionCallback' import { AuthenticationArgs } from '@/graphql/api/1_0/model/AuthenticationArgs' +import { OpenConnectionCallbackArgs } from '@/graphql/api/1_0/model/OpenConnectionCallbackArgs' import { authenticate } from './query/authenticate' +import { openConnectionCallback } from './query/openConnectionCallback' export class AuthenticationClient { dbCom: DbFederatedCommunity @@ -29,9 +29,8 @@ export class AuthenticationClient { async openConnectionCallback(args: OpenConnectionCallbackArgs): Promise { logger.debug('Authentication: openConnectionCallback with endpoint', this.endpoint, args) try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any const { data } = await this.client.rawRequest(openConnectionCallback, { args }) - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (data && data.openConnectionCallback) { logger.warn( 'Authentication: openConnectionCallback without response data from endpoint', @@ -53,10 +52,9 @@ export class AuthenticationClient { async authenticate(args: AuthenticationArgs): Promise { logger.debug('Authentication: authenticate with endpoint=', this.endpoint) try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any const { data } = await this.client.rawRequest(authenticate, { args }) logger.debug('Authentication: after authenticate: data:', data) - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const authUuid: string = data?.authenticate if (authUuid) { logger.debug('Authentication: received authenticated uuid', authUuid) diff --git a/federation/src/client/1_1/AuthenticationClient.ts b/federation/src/client/1_1/AuthenticationClient.ts index eb5721b16..b089574dd 100644 --- a/federation/src/client/1_1/AuthenticationClient.ts +++ b/federation/src/client/1_1/AuthenticationClient.ts @@ -1,5 +1,3 @@ -// eslint-disable-next-line camelcase import { AuthenticationClient as V1_0_AuthenticationClient } from '../1_0/AuthenticationClient' -// eslint-disable-next-line camelcase export class AuthenticationClient extends V1_0_AuthenticationClient {} diff --git a/federation/src/client/AuthenticationClientFactory.ts b/federation/src/client/AuthenticationClientFactory.ts index 355cf3695..67887d3bb 100644 --- a/federation/src/client/AuthenticationClientFactory.ts +++ b/federation/src/client/AuthenticationClientFactory.ts @@ -1,20 +1,18 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -// eslint-disable-next-line camelcase + import { AuthenticationClient as V1_0_AuthenticationClient } from './1_0/AuthenticationClient' -// eslint-disable-next-line camelcase + import { AuthenticationClient as V1_1_AuthenticationClient } from './1_1/AuthenticationClient' import { ApiVersionType } from './enum/ApiVersionType' -// eslint-disable-next-line camelcase type AuthenticationClient = V1_0_AuthenticationClient | V1_1_AuthenticationClient interface AuthenticationClientInstance { id: number - // eslint-disable-next-line no-use-before-define + client: AuthenticationClient } -// eslint-disable-next-line @typescript-eslint/no-extraneous-class export class AuthenticationClientFactory { private static instanceArray: AuthenticationClientInstance[] = [] @@ -22,7 +20,7 @@ export class AuthenticationClientFactory { * The Singleton's constructor should always be private to prevent direct * construction calls with the `new` operator. */ - // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + private constructor() {} private static createAuthenticationClient = (dbCom: DbFederatedCommunity) => { diff --git a/federation/src/config/index.ts b/federation/src/config/index.ts index 6649e2ba3..6ae02a9c1 100644 --- a/federation/src/config/index.ts +++ b/federation/src/config/index.ts @@ -1,6 +1,6 @@ +import { latestDbVersion } from '@dbTools/config/detectLastDBVersion' // ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env) import { Decimal } from 'decimal.js-light' -import { latestDbVersion } from '@dbTools/config/detectLastDBVersion' import dotenv from 'dotenv' import { validate } from '@config/index' @@ -63,5 +63,3 @@ export const CONFIG = { } validate(schema, CONFIG) - -export default CONFIG diff --git a/federation/src/graphql/api/1_0/logger/GetPublicCommunityInfoResultLogging.view.ts b/federation/src/graphql/api/1_0/logger/GetPublicCommunityInfoResultLogging.view.ts index 669170b98..fc0c68d30 100644 --- a/federation/src/graphql/api/1_0/logger/GetPublicCommunityInfoResultLogging.view.ts +++ b/federation/src/graphql/api/1_0/logger/GetPublicCommunityInfoResultLogging.view.ts @@ -6,7 +6,6 @@ export class GetPublicCommunityInfoResultLoggingView extends AbstractLoggingView super() } - // eslint-disable-next-line @typescript-eslint/no-explicit-any public toJSON(): any { return { name: this.self.name, diff --git a/federation/src/graphql/api/1_0/logger/SendCoinsArgsLogging.view.ts b/federation/src/graphql/api/1_0/logger/SendCoinsArgsLogging.view.ts index a12ff6372..bb9c3dd5a 100644 --- a/federation/src/graphql/api/1_0/logger/SendCoinsArgsLogging.view.ts +++ b/federation/src/graphql/api/1_0/logger/SendCoinsArgsLogging.view.ts @@ -1,12 +1,11 @@ -import { AbstractLoggingView } from '@logging/AbstractLogging.view' import { SendCoinsArgs } from '@/graphql/api/1_0/model/SendCoinsArgs' +import { AbstractLoggingView } from '@logging/AbstractLogging.view' export class SendCoinsArgsLoggingView extends AbstractLoggingView { public constructor(private self: SendCoinsArgs) { super() } - // eslint-disable-next-line @typescript-eslint/no-explicit-any public toJSON(): any { return { recipientCommunityUuid: this.self.recipientCommunityUuid, diff --git a/federation/src/graphql/api/1_0/model/Decay.ts b/federation/src/graphql/api/1_0/model/Decay.ts index 0b710c234..a32b96c13 100644 --- a/federation/src/graphql/api/1_0/model/Decay.ts +++ b/federation/src/graphql/api/1_0/model/Decay.ts @@ -1,5 +1,5 @@ import { Decimal } from 'decimal.js-light' -import { ObjectType, Field, Int } from 'type-graphql' +import { Field, Int, ObjectType } from 'type-graphql' interface DecayInterface { balance: Decimal diff --git a/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts b/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts index d51b3af93..5e4710a07 100644 --- a/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts +++ b/federation/src/graphql/api/1_0/model/GetPublicCommunityInfoResult.ts @@ -1,10 +1,8 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars import { Community as DbCommunity } from '@entity/Community' -// eslint-disable-next-line @typescript-eslint/no-unused-vars + import { Field, ObjectType } from 'type-graphql' @ObjectType() -// eslint-disable-next-line @typescript-eslint/no-unused-vars export class GetPublicCommunityInfoResult { constructor(dbCom: DbCommunity) { this.publicKey = dbCom.publicKey.toString('hex') diff --git a/federation/src/graphql/api/1_0/model/GetPublicKeyResult.ts b/federation/src/graphql/api/1_0/model/GetPublicKeyResult.ts index 696c96cfe..1582ad892 100644 --- a/federation/src/graphql/api/1_0/model/GetPublicKeyResult.ts +++ b/federation/src/graphql/api/1_0/model/GetPublicKeyResult.ts @@ -1,8 +1,6 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars import { Field, ObjectType } from 'type-graphql' @ObjectType() -// eslint-disable-next-line @typescript-eslint/no-unused-vars export class GetPublicKeyResult { constructor(pubKey: string) { this.publicKey = pubKey diff --git a/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts b/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts index 393fe3b65..cb683ab2a 100644 --- a/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts @@ -1,16 +1,15 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Arg, Mutation, Resolver } from 'type-graphql' +import { CONFIG } from '@/config' +import { LogError } from '@/server/LogError' import { federationLogger as logger } from '@/server/logger' import { Community as DbCommunity } from '@entity/Community' import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity' import { CommunityLoggingView } from '@logging/CommunityLogging.view' import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view' -import { LogError } from '@/server/LogError' -import { OpenConnectionArgs } from '../model/OpenConnectionArgs' -import { startAuthentication, startOpenConnectionCallback } from '../util/authenticateCommunity' -import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs' -import { CONFIG } from '@/config' +import { Arg, Mutation, Resolver } from 'type-graphql' import { AuthenticationArgs } from '../model/AuthenticationArgs' +import { OpenConnectionArgs } from '../model/OpenConnectionArgs' +import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs' +import { startAuthentication, startOpenConnectionCallback } from '../util/authenticateCommunity' @Resolver() export class AuthenticationResolver { @@ -30,7 +29,7 @@ export class AuthenticationResolver { throw new LogError(`unknown requesting community with publicKey`, pubKeyBuf.toString('hex')) } logger.debug(`Authentication: found requestedCom:`, new CommunityLoggingView(comA)) - // no await to respond immediatly and invoke callback-request asynchron + // biome-ignore lint/complexity/noVoid: no await to respond immediately and invoke callback-request asynchronously void startOpenConnectionCallback(args, comA, CONFIG.FEDERATION_API) return true } @@ -53,7 +52,7 @@ export class AuthenticationResolver { `Authentication: found fedComB and start authentication:`, new FederatedCommunityLoggingView(fedComB), ) - // no await to respond immediatly and invoke authenticate-request asynchron + // biome-ignore lint/complexity/noVoid: no await to respond immediately and invoke authenticate-request asynchronously void startAuthentication(args.oneTimeCode, fedComB) return true } diff --git a/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.test.ts b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.test.ts index 2f83b4819..8bdece2dd 100644 --- a/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.test.ts +++ b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.test.ts @@ -1,10 +1,9 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' -import { Community as DbCommunity } from '@entity/Community' -import CONFIG from '@/config' +import { CONFIG } from '@/config' +import { createServer } from '@/server/createServer' import { Connection } from '@dbTools/typeorm' +import { Community as DbCommunity } from '@entity/Community' + +import { createTestClient } from 'apollo-server-testing' let query: any diff --git a/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts index c1535b713..6ddb1f331 100644 --- a/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/PublicCommunityInfoResolver.ts @@ -1,9 +1,8 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' import { federationLogger as logger } from '@/server/logger' import { Community as DbCommunity } from '@entity/Community' -import { GetPublicCommunityInfoResult } from '../model/GetPublicCommunityInfoResult' +import { Query, Resolver } from 'type-graphql' import { GetPublicCommunityInfoResultLoggingView } from '../logger/GetPublicCommunityInfoResultLogging.view' +import { GetPublicCommunityInfoResult } from '../model/GetPublicCommunityInfoResult' @Resolver() export class PublicCommunityInfoResolver { diff --git a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts index eafd9cba7..cb5682876 100644 --- a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts +++ b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' +import { CONFIG } from '@/config' +import { createServer } from '@/server/createServer' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -import CONFIG from '@/config' +import { createTestClient } from 'apollo-server-testing' let query: any diff --git a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.ts b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.ts index 3fb3b2c0d..afc4aca67 100644 --- a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.ts @@ -1,7 +1,6 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' import { federationLogger as logger } from '@/server/logger' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' +import { Query, Resolver } from 'type-graphql' import { GetPublicKeyResult } from '../model/GetPublicKeyResult' @Resolver() diff --git a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.test.ts b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.test.ts index d305e1726..89bb12d7a 100644 --- a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.test.ts +++ b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.test.ts @@ -1,16 +1,14 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { ApolloServerTestClient } from 'apollo-server-testing' +import { CONFIG } from '@/config' +import { fullName } from '@/graphql/util/fullName' +import { Connection } from '@dbTools/typeorm' import { Community as DbCommunity } from '@entity/Community' -import CONFIG from '@/config' import { User as DbUser } from '@entity/User' import { UserContact as DbUserContact } from '@entity/UserContact' -import { fullName } from '@/graphql/util/fullName' -import { GraphQLError } from 'graphql' import { cleanDB, testEnvironment } from '@test/helpers' import { logger } from '@test/testSetup' -import { Connection } from '@dbTools/typeorm' +import { ApolloServerTestClient } from 'apollo-server-testing' import Decimal from 'decimal.js-light' +import { GraphQLError } from 'graphql' import { SendCoinsArgs } from '../model/SendCoinsArgs' let mutate: ApolloServerTestClient['mutate'] // , con: Connection diff --git a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts index e90a7818c..b299286fd 100644 --- a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts @@ -1,22 +1,22 @@ -import { Arg, Mutation, Resolver } from 'type-graphql' +import { findUserByIdentifier } from '@/graphql/util/findUserByIdentifier' +import { fullName } from '@/graphql/util/fullName' +import { LogError } from '@/server/LogError' import { federationLogger as logger } from '@/server/logger' -import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view' import { Community as DbCommunity } from '@entity/Community' import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction' -import { SendCoinsArgs } from '../model/SendCoinsArgs' -import { LogError } from '@/server/LogError' +import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view' +import Decimal from 'decimal.js-light' +import { Arg, Mutation, Resolver } from 'type-graphql' import { PendingTransactionState } from '../enum/PendingTransactionState' import { TransactionTypeId } from '../enum/TransactionTypeId' +import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view' +import { SendCoinsArgs } from '../model/SendCoinsArgs' +import { SendCoinsResult } from '../model/SendCoinsResult' import { calculateRecipientBalance } from '../util/calculateRecipientBalance' -import { fullName } from '@/graphql/util/fullName' -import { settlePendingReceiveTransaction } from '../util/settlePendingReceiveTransaction' // import { checkTradingLevel } from '@/graphql/util/checkTradingLevel' import { revertSettledReceiveTransaction } from '../util/revertSettledReceiveTransaction' -import { findUserByIdentifier } from '@/graphql/util/findUserByIdentifier' -import { SendCoinsResult } from '../model/SendCoinsResult' -import Decimal from 'decimal.js-light' +import { settlePendingReceiveTransaction } from '../util/settlePendingReceiveTransaction' import { storeForeignUser } from '../util/storeForeignUser' -import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view' @Resolver() export class SendCoinsResolver { diff --git a/federation/src/graphql/api/1_0/util/authenticateCommunity.ts b/federation/src/graphql/api/1_0/util/authenticateCommunity.ts index 1d3365d9c..150d01c69 100644 --- a/federation/src/graphql/api/1_0/util/authenticateCommunity.ts +++ b/federation/src/graphql/api/1_0/util/authenticateCommunity.ts @@ -1,16 +1,16 @@ -import { OpenConnectionArgs } from '../model/OpenConnectionArgs' +import { federationLogger as logger } from '@/server/logger' import { Community as DbCommunity } from '@entity/Community' import { FederatedCommunity as DbFedCommunity } from '@entity/FederatedCommunity' -import { federationLogger as logger } from '@/server/logger' +import { OpenConnectionArgs } from '../model/OpenConnectionArgs' import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs' -// eslint-disable-next-line camelcase -import { randombytes_random } from 'sodium-native' + import { AuthenticationClientFactory } from '@/client/AuthenticationClientFactory' -// eslint-disable-next-line camelcase +import { randombytes_random } from 'sodium-native' + import { AuthenticationClient as V1_0_AuthenticationClient } from '@/client/1_0/AuthenticationClient' -import { AuthenticationArgs } from '../model/AuthenticationArgs' import { CommunityLoggingView } from '@logging/CommunityLogging.view' import { FederatedCommunityLoggingView } from '@logging/FederatedCommunityLogging.view' +import { AuthenticationArgs } from '../model/AuthenticationArgs' export async function startOpenConnectionCallback( args: OpenConnectionArgs, @@ -41,7 +41,7 @@ export async function startOpenConnectionCallback( ) const client = AuthenticationClientFactory.getInstance(fedComA) - // eslint-disable-next-line camelcase + if (client instanceof V1_0_AuthenticationClient) { const callbackArgs = new OpenConnectionCallbackArgs() callbackArgs.oneTimeCode = oneTimeCode.toString() @@ -74,7 +74,7 @@ export async function startAuthentication( // TODO encrypt homeCom.uuid with homeCom.privateKey and sign it with callbackFedCom.publicKey const client = AuthenticationClientFactory.getInstance(fedComB) - // eslint-disable-next-line camelcase + if (client instanceof V1_0_AuthenticationClient) { const authenticationArgs = new AuthenticationArgs() authenticationArgs.oneTimeCode = oneTimeCode diff --git a/federation/src/graphql/api/1_0/util/calculateRecipientBalance.ts b/federation/src/graphql/api/1_0/util/calculateRecipientBalance.ts index 1b296f845..198c89289 100644 --- a/federation/src/graphql/api/1_0/util/calculateRecipientBalance.ts +++ b/federation/src/graphql/api/1_0/util/calculateRecipientBalance.ts @@ -9,7 +9,9 @@ export async function calculateRecipientBalance( time: Date, ): Promise<{ balance: Decimal; decay: Decay; lastTransactionId: number } | null> { const lastTransaction = await getLastTransaction(userId) - if (!lastTransaction) return null + if (!lastTransaction) { + return null + } const decay = calculateDecay(lastTransaction.balance, lastTransaction.balanceDate, time) diff --git a/federation/src/graphql/api/1_0/util/revertSettledReceiveTransaction.ts b/federation/src/graphql/api/1_0/util/revertSettledReceiveTransaction.ts index bb5adec5c..c9a522ba8 100644 --- a/federation/src/graphql/api/1_0/util/revertSettledReceiveTransaction.ts +++ b/federation/src/graphql/api/1_0/util/revertSettledReceiveTransaction.ts @@ -1,7 +1,3 @@ -/* eslint-disable @typescript-eslint/restrict-template-expressions */ -/* eslint-disable new-cap */ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ - import { getConnection } from '@dbTools/typeorm' import { Community as DbCommunity } from '@entity/Community' import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction' @@ -13,12 +9,12 @@ import { PendingTransactionState } from '../enum/PendingTransactionState' import { LogError } from '@/server/LogError' import { federationLogger as logger } from '@/server/logger' -import { getLastTransaction } from '@/graphql/util/getLastTransaction' import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK' +import { getLastTransaction } from '@/graphql/util/getLastTransaction' import { CommunityLoggingView } from '@logging/CommunityLogging.view' -import { UserLoggingView } from '@logging/UserLogging.view' import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view' import { TransactionLoggingView } from '@logging/TransactionLogging.view' +import { UserLoggingView } from '@logging/UserLogging.view' export async function revertSettledReceiveTransaction( homeCom: DbCommunity, diff --git a/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts b/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts index 0eadbe1c2..3d024e980 100644 --- a/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts +++ b/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts @@ -1,7 +1,3 @@ -/* eslint-disable @typescript-eslint/restrict-template-expressions */ -/* eslint-disable new-cap */ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ - import { getConnection } from '@dbTools/typeorm' import { Community as DbCommunity } from '@entity/Community' import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction' @@ -13,14 +9,14 @@ import { PendingTransactionState } from '../enum/PendingTransactionState' import { LogError } from '@/server/LogError' import { federationLogger as logger } from '@/server/logger' -import { getLastTransaction } from '@/graphql/util/getLastTransaction' import { TRANSACTIONS_LOCK } from '@/graphql/util/TRANSACTIONS_LOCK' -import { calculateRecipientBalance } from './calculateRecipientBalance' -import Decimal from 'decimal.js-light' +import { getLastTransaction } from '@/graphql/util/getLastTransaction' import { CommunityLoggingView } from '@logging/CommunityLogging.view' -import { UserLoggingView } from '@logging/UserLogging.view' import { PendingTransactionLoggingView } from '@logging/PendingTransactionLogging.view' import { TransactionLoggingView } from '@logging/TransactionLogging.view' +import { UserLoggingView } from '@logging/UserLogging.view' +import Decimal from 'decimal.js-light' +import { calculateRecipientBalance } from './calculateRecipientBalance' export async function settlePendingReceiveTransaction( homeCom: DbCommunity, diff --git a/federation/src/graphql/api/1_0/util/storeForeignUser.ts b/federation/src/graphql/api/1_0/util/storeForeignUser.ts index 861702d11..46e642795 100644 --- a/federation/src/graphql/api/1_0/util/storeForeignUser.ts +++ b/federation/src/graphql/api/1_0/util/storeForeignUser.ts @@ -1,9 +1,9 @@ import { User as DbUser } from '@entity/User' import { federationLogger as logger } from '@/server/logger' -import { SendCoinsArgs } from '../model/SendCoinsArgs' import { UserLoggingView } from '@logging/UserLogging.view' import { SendCoinsArgsLoggingView } from '../logger/SendCoinsArgsLogging.view' +import { SendCoinsArgs } from '../model/SendCoinsArgs' export async function storeForeignUser(args: SendCoinsArgs): Promise { if (args.senderCommunityUuid !== null && args.senderUserUuid !== null) { diff --git a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts index 7ccec73af..ec0f652cc 100644 --- a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts +++ b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' +import { CONFIG } from '@/config' +import { createServer } from '@/server/createServer' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -import CONFIG from '@/config' +import { createTestClient } from 'apollo-server-testing' let query: any diff --git a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts index e03b36075..3cc9ed62b 100644 --- a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts +++ b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts @@ -1,8 +1,6 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars import { Resolver } from 'type-graphql' -// eslint-disable-next-line camelcase + import { PublicKeyResolver as PublicKeyResolver_1_0 } from '../../1_0/resolver/PublicKeyResolver' @Resolver() -// eslint-disable-next-line camelcase, @typescript-eslint/no-unused-vars export class PublicKeyResolver extends PublicKeyResolver_1_0 {} diff --git a/federation/src/graphql/api/schema.ts b/federation/src/graphql/api/schema.ts index 6ba0bff56..84e756af3 100644 --- a/federation/src/graphql/api/schema.ts +++ b/federation/src/graphql/api/schema.ts @@ -1,7 +1,7 @@ -import path from 'path' -// config -import CONFIG from '../../config' +import path from 'node:path' import { federationLogger as logger } from '@/server/logger' +// config +import { CONFIG } from '../../config' export const getApiResolvers = (): string => { logger.info(`getApiResolvers...${CONFIG.FEDERATION_API}`) diff --git a/federation/src/graphql/scalar/Decimal.ts b/federation/src/graphql/scalar/Decimal.ts index 96804bdfa..f539685f9 100644 --- a/federation/src/graphql/scalar/Decimal.ts +++ b/federation/src/graphql/scalar/Decimal.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { Decimal } from 'decimal.js-light' import { GraphQLScalarType, Kind } from 'graphql' diff --git a/federation/src/graphql/schema.ts b/federation/src/graphql/schema.ts index 9d39f1398..64a35dd76 100644 --- a/federation/src/graphql/schema.ts +++ b/federation/src/graphql/schema.ts @@ -1,12 +1,12 @@ import { GraphQLSchema } from 'graphql' import { buildSchema } from 'type-graphql' -// import isAuthorized from './directive/isAuthorized' -import { DecimalScalar } from './scalar/Decimal' import { Decimal } from 'decimal.js-light' import { getApiResolvers } from './api/schema' +// import isAuthorized from './directive/isAuthorized' +import { DecimalScalar } from './scalar/Decimal' -const schema = async (): Promise => { +export const schema = async (): Promise => { return await buildSchema({ resolvers: [getApiResolvers()], // authChecker: isAuthorized, @@ -23,5 +23,3 @@ const schema = async (): Promise => { */ }) } - -export default schema diff --git a/federation/src/graphql/util/checkTradingLevel.ts b/federation/src/graphql/util/checkTradingLevel.ts index 9f5463a0d..4bc5be988 100644 --- a/federation/src/graphql/util/checkTradingLevel.ts +++ b/federation/src/graphql/util/checkTradingLevel.ts @@ -1,7 +1,7 @@ -import CONFIG from '@/config' +import { CONFIG } from '@/config' +import { federationLogger as logger } from '@/server/logger' import { Community as DbCommunity } from '@entity/Community' import { Decimal } from 'decimal.js-light' -import { federationLogger as logger } from '@/server/logger' export async function checkTradingLevel(homeCom: DbCommunity, amount: Decimal): Promise { const tradingLevel = CONFIG.FEDERATION_TRADING_LEVEL diff --git a/federation/src/graphql/util/decay.test.ts b/federation/src/graphql/util/decay.test.ts index 1d4ebab3b..f419982ac 100644 --- a/federation/src/graphql/util/decay.test.ts +++ b/federation/src/graphql/util/decay.test.ts @@ -1,6 +1,6 @@ import { Decimal } from 'decimal.js-light' -import { decayFormula, calculateDecay } from './decay' +import { calculateDecay, decayFormula } from './decay' describe('utils/decay', () => { describe('decayFormula', () => { @@ -16,7 +16,7 @@ describe('utils/decay', () => { expect(decayFormula(amount, seconds).toString()).toBe('1.000000021964959992727444') }) // we get pretty close, but not exact here, skipping - // eslint-disable-next-line jest/no-disabled-tests + it.skip('has correct forward calculation', () => { const amount = new Decimal(1.0).div( new Decimal('0.99999997803504048973201202316767079413460520837376'), diff --git a/federation/src/graphql/util/decay.ts b/federation/src/graphql/util/decay.ts index f195075ff..331d3b5b4 100644 --- a/federation/src/graphql/util/decay.ts +++ b/federation/src/graphql/util/decay.ts @@ -1,7 +1,7 @@ import { Decimal } from 'decimal.js-light' +import { CONFIG } from '@/config' import { LogError } from '@/server/LogError' -import CONFIG from '@/config' import { Decay } from '../api/1_0/model/Decay' // TODO: externalize all those definitions and functions into an external decay library diff --git a/federation/src/graphql/util/validateAlias.ts b/federation/src/graphql/util/validateAlias.ts index cd2d8fe1f..66d9e8595 100644 --- a/federation/src/graphql/util/validateAlias.ts +++ b/federation/src/graphql/util/validateAlias.ts @@ -24,11 +24,18 @@ const RESERVED_ALIAS = [ ] export const validateAlias = async (alias: string): Promise => { - if (alias.length < 3) throw new LogError('Given alias is too short', alias) - if (alias.length > 20) throw new LogError('Given alias is too long', alias) - if (!alias.match(VALID_ALIAS_REGEX)) throw new LogError('Invalid characters in alias', alias) - if (RESERVED_ALIAS.includes(alias.toLowerCase())) + if (alias.length < 3) { + throw new LogError('Given alias is too short', alias) + } + if (alias.length > 20) { + throw new LogError('Given alias is too long', alias) + } + if (!alias.match(VALID_ALIAS_REGEX)) { + throw new LogError('Invalid characters in alias', alias) + } + if (RESERVED_ALIAS.includes(alias.toLowerCase())) { throw new LogError('Alias is not allowed', alias) + } const aliasInUse = await DbUser.find({ where: { alias: Raw((a) => `LOWER(${a}) = "${alias.toLowerCase()}"`) }, }) diff --git a/federation/src/index.ts b/federation/src/index.ts index bdc66c87a..5c3cc6f89 100644 --- a/federation/src/index.ts +++ b/federation/src/index.ts @@ -1,22 +1,20 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import { createServer } from './server/createServer' // config import { CONFIG } from './config' async function main() { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos console.log(`FEDERATION_PORT=${CONFIG.FEDERATION_PORT}`) - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos console.log(`FEDERATION_API=${CONFIG.FEDERATION_API}`) const { app } = await createServer() app.listen(CONFIG.FEDERATION_PORT, () => { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos console.log(`Server is running at http://localhost:${CONFIG.FEDERATION_PORT}`) if (CONFIG.GRAPHIQL) { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger needed fot startup infos console.log( `GraphIQL available at ${CONFIG.FEDERATION_COMMUNITY_URL}/api/${CONFIG.FEDERATION_API}`, ) @@ -25,7 +23,7 @@ async function main() { } main().catch((e) => { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger present console.error(e) process.exit(1) }) diff --git a/federation/src/server/LogError.ts b/federation/src/server/LogError.ts index b29e83dc8..fbd6e6d18 100644 --- a/federation/src/server/LogError.ts +++ b/federation/src/server/LogError.ts @@ -1,8 +1,6 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { federationLogger as logger } from './logger' export class LogError extends Error { - // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(msg: string, ...details: any[]) { super(msg) logger.error(msg, ...details) diff --git a/federation/src/server/cors.ts b/federation/src/server/cors.ts index e76ed1591..873d6a2eb 100644 --- a/federation/src/server/cors.ts +++ b/federation/src/server/cors.ts @@ -5,4 +5,5 @@ const corsOptions = { exposedHeaders: ['token'], } +// biome-ignore lint/style/noDefaultExport: export default cors(corsOptions) diff --git a/federation/src/server/createServer.ts b/federation/src/server/createServer.ts index 3d3b80dd6..5ca697bd2 100644 --- a/federation/src/server/createServer.ts +++ b/federation/src/server/createServer.ts @@ -3,29 +3,29 @@ import 'reflect-metadata' import { ApolloServer } from 'apollo-server-express' import express, { Express } from 'express' -// database -import connection from '@/typeorm/connection' import { checkDBVersion } from '@/typeorm/DBVersion' +// database +import { connection } from '@/typeorm/connection' // server import cors from './cors' // import serverContext from './context' -import plugins from './plugins' +import { plugins } from './plugins' // config import { CONFIG } from '@/config' // graphql -import schema from '@/graphql/schema' +import { schema } from '@/graphql/schema' // webhooks // import { elopageWebhook } from '@/webhook/elopage' import { Connection } from '@dbTools/typeorm' -import { apolloLogger } from './logger' -import { Logger } from 'log4js' -import helmet from 'helmet' import { slowDown } from 'express-slow-down' +import helmet from 'helmet' +import { Logger } from 'log4js' +import { apolloLogger } from './logger' // i18n // import { i18n } from './localization' @@ -36,7 +36,6 @@ import { slowDown } from 'express-slow-down' type ServerDef = { apollo: ApolloServer; app: Express; con: Connection } export const createServer = async ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any // context: any = serverContext, logger: Logger = apolloLogger, // localization: i18n.I18n = i18n, @@ -112,5 +111,3 @@ export const createServer = async ( return { apollo, app, con } } - -export default createServer diff --git a/federation/src/server/logger.ts b/federation/src/server/logger.ts index dd2a50cf3..505c7e4d8 100644 --- a/federation/src/server/logger.ts +++ b/federation/src/server/logger.ts @@ -1,5 +1,5 @@ +import { CONFIG } from '@/config' import log4js from 'log4js' -import CONFIG from '@/config' import { readFileSync } from 'fs' diff --git a/federation/src/server/plugins.ts b/federation/src/server/plugins.ts index 7ecbedf2a..cde1d6a03 100644 --- a/federation/src/server/plugins.ts +++ b/federation/src/server/plugins.ts @@ -1,6 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - import clonedeep from 'lodash.clonedeep' const setHeadersPlugin = { @@ -23,8 +20,12 @@ const setHeadersPlugin = { const filterVariables = (variables: any) => { const vars = clonedeep(variables) - if (vars && vars.password) vars.password = '***' - if (vars && vars.passwordNew) vars.passwordNew = '***' + if (vars && vars.password) { + vars.password = '***' + } + if (vars && vars.passwordNew) { + vars.passwordNew = '***' + } return vars } @@ -39,15 +40,18 @@ ${mutation || query}variables: ${JSON.stringify(filterVariables(variables), null return { willSendResponse(requestContext: any) { if (operationName !== 'IntrospectionQuery') { - if (requestContext.context.user) logger.info(`User ID: ${requestContext.context.user.id}`) + if (requestContext.context.user) { + logger.info(`User ID: ${requestContext.context.user.id}`) + } if (requestContext.response.data) { logger.info('Response Success!') logger.trace(`Response-Data: ${JSON.stringify(requestContext.response.data, null, 2)}`) } - if (requestContext.response.errors) + if (requestContext.response.errors) { logger.error(`Response-Errors: ${JSON.stringify(requestContext.response.errors, null, 2)}`) + } } return requestContext }, @@ -55,7 +59,5 @@ ${JSON.stringify(requestContext.response.errors, null, 2)}`) }, } -const plugins = +export const plugins = process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin] - -export default plugins diff --git a/federation/src/typeorm/DBVersion.ts b/federation/src/typeorm/DBVersion.ts index 267dfd57e..08287f396 100644 --- a/federation/src/typeorm/DBVersion.ts +++ b/federation/src/typeorm/DBVersion.ts @@ -1,5 +1,5 @@ -import { Migration } from '@entity/Migration' import { federationLogger as logger } from '@/server/logger' +import { Migration } from '@entity/Migration' const getDBVersion = async (): Promise => { try { diff --git a/federation/src/typeorm/connection.ts b/federation/src/typeorm/connection.ts index d08d935d4..9a0d8f224 100644 --- a/federation/src/typeorm/connection.ts +++ b/federation/src/typeorm/connection.ts @@ -1,7 +1,7 @@ // TODO This is super weird - since the entities are defined in another project they have their own globals. // We cannot use our connection here, but must use the external typeorm installation -import { Connection, createConnection, FileLogger } from '@dbTools/typeorm' -import CONFIG from '@/config' +import { CONFIG } from '@/config' +import { Connection, FileLogger, createConnection } from '@dbTools/typeorm' import { entities } from '@entity/index' const connection = async (): Promise => { @@ -25,10 +25,10 @@ const connection = async (): Promise => { }, }) } catch (error) { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsole: no logger present console.log(error) return null } } -export default connection +export { connection } diff --git a/federation/test/extensions.ts b/federation/test/extensions.ts index 262a9bcdb..e27dc54ab 100644 --- a/federation/test/extensions.ts +++ b/federation/test/extensions.ts @@ -1,8 +1,8 @@ -/* eslint-disable @typescript-eslint/no-unsafe-call */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/restrict-template-expressions */ -/* eslint-disable @typescript-eslint/no-empty-interface */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ + + + + + import { Decimal } from 'decimal.js-light' @@ -28,7 +28,7 @@ interface CustomMatchers { } declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace + namespace jest { interface Expect extends CustomMatchers {} interface Matchers extends CustomMatchers {} diff --git a/federation/test/helpers.ts b/federation/test/helpers.ts index 67feea5fa..f240e4a36 100644 --- a/federation/test/helpers.ts +++ b/federation/test/helpers.ts @@ -1,9 +1,9 @@ -/* eslint-disable @typescript-eslint/unbound-method */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unsafe-call */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ + + + + + + import { entities } from '@entity/index' import { createTestClient } from 'apollo-server-testing' diff --git a/federation/yarn.lock b/federation/yarn.lock index 30b56b378..f8f1525ff 100644 --- a/federation/yarn.lock +++ b/federation/yarn.lock @@ -335,6 +335,60 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@biomejs/biome@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.4.tgz#89766281cbc3a0aae865a7ff13d6aaffea2842bf" + integrity sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog== + optionalDependencies: + "@biomejs/cli-darwin-arm64" "1.9.4" + "@biomejs/cli-darwin-x64" "1.9.4" + "@biomejs/cli-linux-arm64" "1.9.4" + "@biomejs/cli-linux-arm64-musl" "1.9.4" + "@biomejs/cli-linux-x64" "1.9.4" + "@biomejs/cli-linux-x64-musl" "1.9.4" + "@biomejs/cli-win32-arm64" "1.9.4" + "@biomejs/cli-win32-x64" "1.9.4" + +"@biomejs/cli-darwin-arm64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz#dfa376d23a54a2d8f17133c92f23c1bf2e62509f" + integrity sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw== + +"@biomejs/cli-darwin-x64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz#eafc2ce3849d385fc02238aad1ca4a73395a64d9" + integrity sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg== + +"@biomejs/cli-linux-arm64-musl@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz#d780c3e01758fc90f3268357e3f19163d1f84fca" + integrity sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA== + +"@biomejs/cli-linux-arm64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz#8ed1dd0e89419a4b66a47f95aefb8c46ae6041c9" + integrity sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g== + +"@biomejs/cli-linux-x64-musl@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz#f36982b966bd671a36671e1de4417963d7db15fb" + integrity sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg== + +"@biomejs/cli-linux-x64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz#a0a7f56680c76b8034ddc149dbf398bdd3a462e8" + integrity sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg== + +"@biomejs/cli-win32-arm64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz#e2ef4e0084e76b7e26f0fc887c5ef1265ea56200" + integrity sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg== + +"@biomejs/cli-win32-x64@1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz#4c7afa90e3970213599b4095e62f87e5972b2340" + integrity sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"