From ae8405e8f688d6a33572684544f76beb0ecf521a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 31 Mar 2023 12:48:09 +0200 Subject: [PATCH 01/12] merge --- backend/.eslintrc.js | 4 +-- backend/src/apis/HttpRequest.ts | 2 +- backend/src/apis/KlicktippController.ts | 3 +- backend/src/auth/JWT.ts | 4 +-- backend/src/config/index.test.ts | 2 +- backend/src/config/index.ts | 4 +-- .../src/emails/sendEmailTranslated.test.ts | 2 +- backend/src/emails/sendEmailTranslated.ts | 4 +-- backend/src/emails/sendEmailVariants.test.ts | 11 +++--- backend/src/emails/sendEmailVariants.ts | 5 ++- .../federation/client/1_0/FederationClient.ts | 2 +- .../federation/client/1_1/FederationClient.ts | 2 +- backend/src/federation/validateCommunities.ts | 5 ++- .../arg/AdminCreateContributionArgs.ts | 2 +- .../arg/AdminUpdateContributionArgs.ts | 2 +- backend/src/graphql/arg/ContributionArgs.ts | 2 +- .../src/graphql/arg/ContributionLinkArgs.ts | 2 +- .../graphql/arg/ContributionMessageArgs.ts | 2 +- backend/src/graphql/arg/CreateUserArgs.ts | 2 +- backend/src/graphql/arg/Paginated.ts | 2 +- backend/src/graphql/arg/SearchUsersArgs.ts | 4 +-- backend/src/graphql/arg/SearchUsersFilters.ts | 2 +- .../src/graphql/arg/TransactionLinkArgs.ts | 2 +- .../src/graphql/arg/TransactionLinkFilters.ts | 2 +- .../src/graphql/arg/TransactionSendArgs.ts | 2 +- backend/src/graphql/arg/UnsecureLoginArgs.ts | 2 +- .../src/graphql/arg/UpdateUserInfosArgs.ts | 2 +- backend/src/graphql/directive/isAuthorized.ts | 6 ++-- backend/src/graphql/model/ContributionLink.ts | 2 +- backend/src/graphql/model/TransactionLink.ts | 3 +- .../resolver/ContributionLinkResolver.ts | 31 ++++++++--------- .../resolver/ContributionMessageResolver.ts | 12 +++---- .../graphql/resolver/ContributionResolver.ts | 34 +++++++++---------- .../graphql/resolver/EmailOptinCodes.test.ts | 2 +- backend/src/graphql/resolver/GdtResolver.ts | 10 +++--- .../resolver/TransactionLinkResolver.ts | 21 ++++++------ .../graphql/resolver/TransactionResolver.ts | 16 +++++---- .../src/graphql/resolver/UserResolver.test.ts | 4 +-- backend/src/graphql/resolver/UserResolver.ts | 28 ++++++++------- .../src/graphql/resolver/util/creations.ts | 2 +- .../resolver/util/transactionLinkList.ts | 7 ++-- backend/src/graphql/scalar/Decimal.ts | 4 +-- backend/src/graphql/schema.ts | 8 ++--- backend/src/index.ts | 5 +-- backend/src/middleware/klicktippMiddleware.ts | 2 +- backend/src/password/EncryptorUtils.ts | 5 ++- backend/src/seeds/index.ts | 4 +-- backend/src/server/LogError.test.ts | 2 +- backend/src/server/LogError.ts | 2 +- backend/src/server/context.ts | 7 ++-- backend/src/server/cors.ts | 4 +-- backend/src/server/createServer.ts | 22 +++++------- backend/src/server/logger.ts | 2 +- backend/src/server/plugins.ts | 4 +-- backend/src/typeorm/connection.ts | 7 ++-- backend/src/typeorm/repository/User.ts | 2 +- backend/src/util/decay.ts | 6 ++-- backend/src/util/klicktipp.ts | 5 ++- backend/test/helpers.ts | 3 +- backend/test/testSetup.ts | 4 +-- 60 files changed, 167 insertions(+), 189 deletions(-) diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 9d663bdea..7231e0934 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -71,7 +71,7 @@ module.exports = { 'import/group-exports': 'off', 'import/newline-after-import': 'error', 'import/no-anonymous-default-export': 'error', - 'import/no-default-export': 'off', + 'import/no-default-export': 'error', 'import/no-duplicates': 'error', 'import/no-named-default': 'error', 'import/no-namespace': 'error', @@ -100,7 +100,7 @@ module.exports = { distinctGroup: true, }, ], - 'import/prefer-default-export': 'off', // TODO + 'import/prefer-default-export': 'off', }, overrides: [ // only for ts files diff --git a/backend/src/apis/HttpRequest.ts b/backend/src/apis/HttpRequest.ts index d8de68bb8..7272e4bfc 100644 --- a/backend/src/apis/HttpRequest.ts +++ b/backend/src/apis/HttpRequest.ts @@ -2,8 +2,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import axios from 'axios' -import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' +import { LogError } from '@/server/LogError' // eslint-disable-next-line @typescript-eslint/no-explicit-any export const apiPost = async (url: string, payload: unknown): Promise => { diff --git a/backend/src/apis/KlicktippController.ts b/backend/src/apis/KlicktippController.ts index 309cf56ee..6dcfac0bf 100644 --- a/backend/src/apis/KlicktippController.ts +++ b/backend/src/apis/KlicktippController.ts @@ -4,11 +4,12 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import CONFIG from '@/config' // eslint-disable-next-line import/no-relative-parent-imports import KlicktippConnector from 'klicktipp-api' +import { CONFIG } from '@/config' + const klicktippConnector = new KlicktippConnector() export const klicktippSignIn = async ( diff --git a/backend/src/auth/JWT.ts b/backend/src/auth/JWT.ts index 93a6a8868..75a69cd0c 100644 --- a/backend/src/auth/JWT.ts +++ b/backend/src/auth/JWT.ts @@ -1,7 +1,7 @@ import { verify, sign } from 'jsonwebtoken' -import CONFIG from '@/config/' -import LogError from '@/server/LogError' +import { CONFIG } from '@/config/' +import { LogError } from '@/server/LogError' import { CustomJwtPayload } from './CustomJwtPayload' diff --git a/backend/src/config/index.test.ts b/backend/src/config/index.test.ts index 1dabf9292..24908513a 100644 --- a/backend/src/config/index.test.ts +++ b/backend/src/config/index.test.ts @@ -1,4 +1,4 @@ -import CONFIG from './index' +import { CONFIG } from './index' describe('config/index', () => { describe('decay start block', () => { diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index e6c4e4c24..97786ce3a 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -120,7 +120,7 @@ const federation = { Number(process.env.FEDERATION_VALIDATE_COMMUNITY_TIMER) || 60000, } -const CONFIG = { +export const CONFIG = { ...constants, ...server, ...database, @@ -131,5 +131,3 @@ const CONFIG = { ...webhook, ...federation, } - -export default CONFIG diff --git a/backend/src/emails/sendEmailTranslated.test.ts b/backend/src/emails/sendEmailTranslated.test.ts index 85074344a..66efb29a9 100644 --- a/backend/src/emails/sendEmailTranslated.test.ts +++ b/backend/src/emails/sendEmailTranslated.test.ts @@ -4,7 +4,7 @@ import { createTransport } from 'nodemailer' import { logger, i18n } from '@test/testSetup' -import CONFIG from '@/config' +import { CONFIG } from '@/config' import { sendEmailTranslated } from './sendEmailTranslated' diff --git a/backend/src/emails/sendEmailTranslated.ts b/backend/src/emails/sendEmailTranslated.ts index 6d89cc257..f16e34511 100644 --- a/backend/src/emails/sendEmailTranslated.ts +++ b/backend/src/emails/sendEmailTranslated.ts @@ -5,9 +5,9 @@ import Email from 'email-templates' import i18n from 'i18n' import { createTransport } from 'nodemailer' -import CONFIG from '@/config' -import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' +import { CONFIG } from '@/config' +import { LogError } from '@/server/LogError' export const sendEmailTranslated = async (params: { receiver: { diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts index 44d996fa8..9a6ad3183 100644 --- a/backend/src/emails/sendEmailVariants.test.ts +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -5,12 +5,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { Decimal } from 'decimal.js-light' -import { testEnvironment } from '@test/helpers' -import { logger, i18n as localization } from '@test/testSetup' - -import CONFIG from '@/config' - -import { sendEmailTranslated } from './sendEmailTranslated' import { sendAddedContributionMessageEmail, sendAccountActivationEmail, @@ -23,6 +17,11 @@ import { sendTransactionReceivedEmail, } from './sendEmailVariants' +import { sendEmailTranslated } from './sendEmailTranslated' +import { testEnvironment } from '@test/helpers' +import { logger, i18n as localization } from '@test/testSetup' +import { CONFIG } from '@/config' + let con: any let testEnv: any diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index b45e7fc67..8f0ee0f2d 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -1,9 +1,8 @@ import { Decimal } from 'decimal.js-light' -import CONFIG from '@/config' -import { decimalSeparatorByLanguage } from '@/util/utilities' - import { sendEmailTranslated } from './sendEmailTranslated' +import { CONFIG } from '@/config' +import { decimalSeparatorByLanguage } from '@/util/utilities' export const sendAddedContributionMessageEmail = (data: { firstName: string diff --git a/backend/src/federation/client/1_0/FederationClient.ts b/backend/src/federation/client/1_0/FederationClient.ts index c4063e4c5..e7f7fc1a4 100644 --- a/backend/src/federation/client/1_0/FederationClient.ts +++ b/backend/src/federation/client/1_0/FederationClient.ts @@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community' import { gql } from 'graphql-request' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' +import { LogError } from '@/server/LogError' export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' diff --git a/backend/src/federation/client/1_1/FederationClient.ts b/backend/src/federation/client/1_1/FederationClient.ts index b29960407..00f1d582e 100644 --- a/backend/src/federation/client/1_1/FederationClient.ts +++ b/backend/src/federation/client/1_1/FederationClient.ts @@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community' import { gql } from 'graphql-request' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' +import { LogError } from '@/server/LogError' export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' diff --git a/backend/src/federation/validateCommunities.ts b/backend/src/federation/validateCommunities.ts index fb6bda673..f609fab51 100644 --- a/backend/src/federation/validateCommunities.ts +++ b/backend/src/federation/validateCommunities.ts @@ -1,14 +1,13 @@ import { IsNull } from '@dbTools/typeorm' import { Community as DbCommunity } from '@entity/Community' -import LogError from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' - // eslint-disable-next-line camelcase import { requestGetPublicKey as v1_0_requestGetPublicKey } from './client/1_0/FederationClient' // eslint-disable-next-line camelcase import { requestGetPublicKey as v1_1_requestGetPublicKey } from './client/1_1/FederationClient' import { ApiVersionType } from './enum/apiVersionType' +import { backendLogger as logger } from '@/server/logger' +import { LogError } from '@/server/LogError' export function startValidateCommunities(timerInterval: number): void { logger.info( diff --git a/backend/src/graphql/arg/AdminCreateContributionArgs.ts b/backend/src/graphql/arg/AdminCreateContributionArgs.ts index 65aeb82e5..8e2fa28da 100644 --- a/backend/src/graphql/arg/AdminCreateContributionArgs.ts +++ b/backend/src/graphql/arg/AdminCreateContributionArgs.ts @@ -3,7 +3,7 @@ import { ArgsType, Field, InputType } from 'type-graphql' @InputType() @ArgsType() -export default class AdminCreateContributionArgs { +export class AdminCreateContributionArgs { @Field(() => String) email: string diff --git a/backend/src/graphql/arg/AdminUpdateContributionArgs.ts b/backend/src/graphql/arg/AdminUpdateContributionArgs.ts index 6a8f00dc2..e79260c63 100644 --- a/backend/src/graphql/arg/AdminUpdateContributionArgs.ts +++ b/backend/src/graphql/arg/AdminUpdateContributionArgs.ts @@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light' import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() -export default class AdminUpdateContributionArgs { +export class AdminUpdateContributionArgs { @Field(() => Int) id: number diff --git a/backend/src/graphql/arg/ContributionArgs.ts b/backend/src/graphql/arg/ContributionArgs.ts index cc8aea41e..db688d811 100644 --- a/backend/src/graphql/arg/ContributionArgs.ts +++ b/backend/src/graphql/arg/ContributionArgs.ts @@ -3,7 +3,7 @@ import { ArgsType, Field, InputType } from 'type-graphql' @InputType() @ArgsType() -export default class ContributionArgs { +export class ContributionArgs { @Field(() => Decimal) amount: Decimal diff --git a/backend/src/graphql/arg/ContributionLinkArgs.ts b/backend/src/graphql/arg/ContributionLinkArgs.ts index d28a7808f..cef72148a 100644 --- a/backend/src/graphql/arg/ContributionLinkArgs.ts +++ b/backend/src/graphql/arg/ContributionLinkArgs.ts @@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light' import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() -export default class ContributionLinkArgs { +export class ContributionLinkArgs { @Field(() => Decimal) amount: Decimal diff --git a/backend/src/graphql/arg/ContributionMessageArgs.ts b/backend/src/graphql/arg/ContributionMessageArgs.ts index 8b44756a6..d36e1832d 100644 --- a/backend/src/graphql/arg/ContributionMessageArgs.ts +++ b/backend/src/graphql/arg/ContributionMessageArgs.ts @@ -2,7 +2,7 @@ import { ArgsType, Field, Int, InputType } from 'type-graphql' @InputType() @ArgsType() -export default class ContributionMessageArgs { +export class ContributionMessageArgs { @Field(() => Int) contributionId: number diff --git a/backend/src/graphql/arg/CreateUserArgs.ts b/backend/src/graphql/arg/CreateUserArgs.ts index 56acfd63d..cb263b84a 100644 --- a/backend/src/graphql/arg/CreateUserArgs.ts +++ b/backend/src/graphql/arg/CreateUserArgs.ts @@ -1,7 +1,7 @@ import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() -export default class CreateUserArgs { +export class CreateUserArgs { @Field(() => String) email: string diff --git a/backend/src/graphql/arg/Paginated.ts b/backend/src/graphql/arg/Paginated.ts index e605c49d4..a1e792ef7 100644 --- a/backend/src/graphql/arg/Paginated.ts +++ b/backend/src/graphql/arg/Paginated.ts @@ -4,7 +4,7 @@ import { ArgsType, Field, Int } from 'type-graphql' import { Order } from '@enum/Order' @ArgsType() -export default class Paginated { +export class Paginated { @Field(() => Int, { nullable: true }) currentPage?: number diff --git a/backend/src/graphql/arg/SearchUsersArgs.ts b/backend/src/graphql/arg/SearchUsersArgs.ts index de7275f63..0ebc442c3 100644 --- a/backend/src/graphql/arg/SearchUsersArgs.ts +++ b/backend/src/graphql/arg/SearchUsersArgs.ts @@ -1,9 +1,9 @@ import { ArgsType, Field, Int } from 'type-graphql' -import SearchUsersFilters from '@arg/SearchUsersFilters' +import { SearchUsersFilters } from '@arg/SearchUsersFilters' @ArgsType() -export default class SearchUsersArgs { +export class SearchUsersArgs { @Field(() => String) searchText: string diff --git a/backend/src/graphql/arg/SearchUsersFilters.ts b/backend/src/graphql/arg/SearchUsersFilters.ts index efcdfa00d..a6ea09268 100644 --- a/backend/src/graphql/arg/SearchUsersFilters.ts +++ b/backend/src/graphql/arg/SearchUsersFilters.ts @@ -1,7 +1,7 @@ import { Field, InputType } from 'type-graphql' @InputType() -export default class SearchUsersFilters { +export class SearchUsersFilters { @Field(() => Boolean, { nullable: true, defaultValue: null }) byActivated?: boolean | null diff --git a/backend/src/graphql/arg/TransactionLinkArgs.ts b/backend/src/graphql/arg/TransactionLinkArgs.ts index 19720e321..f44ef0356 100644 --- a/backend/src/graphql/arg/TransactionLinkArgs.ts +++ b/backend/src/graphql/arg/TransactionLinkArgs.ts @@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light' import { ArgsType, Field } from 'type-graphql' @ArgsType() -export default class TransactionLinkArgs { +export class TransactionLinkArgs { @Field(() => Decimal) amount: Decimal diff --git a/backend/src/graphql/arg/TransactionLinkFilters.ts b/backend/src/graphql/arg/TransactionLinkFilters.ts index 13d630d17..de8643260 100644 --- a/backend/src/graphql/arg/TransactionLinkFilters.ts +++ b/backend/src/graphql/arg/TransactionLinkFilters.ts @@ -2,7 +2,7 @@ import { Field, InputType } from 'type-graphql' @InputType() -export default class TransactionLinkFilters { +export class TransactionLinkFilters { @Field(() => Boolean, { nullable: true }) withDeleted?: boolean diff --git a/backend/src/graphql/arg/TransactionSendArgs.ts b/backend/src/graphql/arg/TransactionSendArgs.ts index d91cecbcd..05779ec22 100644 --- a/backend/src/graphql/arg/TransactionSendArgs.ts +++ b/backend/src/graphql/arg/TransactionSendArgs.ts @@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light' import { ArgsType, Field } from 'type-graphql' @ArgsType() -export default class TransactionSendArgs { +export class TransactionSendArgs { @Field(() => String) email: string diff --git a/backend/src/graphql/arg/UnsecureLoginArgs.ts b/backend/src/graphql/arg/UnsecureLoginArgs.ts index a2a7bb683..ad5a934f9 100644 --- a/backend/src/graphql/arg/UnsecureLoginArgs.ts +++ b/backend/src/graphql/arg/UnsecureLoginArgs.ts @@ -1,7 +1,7 @@ import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() -export default class UnsecureLoginArgs { +export class UnsecureLoginArgs { @Field(() => String) email: string diff --git a/backend/src/graphql/arg/UpdateUserInfosArgs.ts b/backend/src/graphql/arg/UpdateUserInfosArgs.ts index 985d3fed6..2f9df8dd7 100644 --- a/backend/src/graphql/arg/UpdateUserInfosArgs.ts +++ b/backend/src/graphql/arg/UpdateUserInfosArgs.ts @@ -1,7 +1,7 @@ import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() -export default class UpdateUserInfosArgs { +export class UpdateUserInfosArgs { @Field({ nullable: true }) firstName?: string diff --git a/backend/src/graphql/directive/isAuthorized.ts b/backend/src/graphql/directive/isAuthorized.ts index a018fd230..f65a7579a 100644 --- a/backend/src/graphql/directive/isAuthorized.ts +++ b/backend/src/graphql/directive/isAuthorized.ts @@ -9,9 +9,9 @@ import { INALIENABLE_RIGHTS } from '@/auth/INALIENABLE_RIGHTS' import { decode, encode } from '@/auth/JWT' import { RIGHTS } from '@/auth/RIGHTS' import { ROLE_UNAUTHORIZED, ROLE_USER, ROLE_ADMIN } from '@/auth/ROLES' -import LogError from '@/server/LogError' +import { LogError } from '@/server/LogError' -const isAuthorized: AuthChecker = async ({ context }, rights) => { +export const isAuthorized: AuthChecker = async ({ context }, rights) => { context.role = ROLE_UNAUTHORIZED // unauthorized user // is rights an inalienable right? @@ -55,5 +55,3 @@ const isAuthorized: AuthChecker = async ({ context }, rights) => { context.setHeaders.push({ key: 'token', value: encode(decoded.gradidoID) }) return true } - -export default isAuthorized diff --git a/backend/src/graphql/model/ContributionLink.ts b/backend/src/graphql/model/ContributionLink.ts index e47ffc6ed..1576fc97a 100644 --- a/backend/src/graphql/model/ContributionLink.ts +++ b/backend/src/graphql/model/ContributionLink.ts @@ -2,7 +2,7 @@ import { ContributionLink as dbContributionLink } from '@entity/ContributionLink import { Decimal } from 'decimal.js-light' import { ObjectType, Field, Int } from 'type-graphql' -import CONFIG from '@/config' +import { CONFIG } from '@/config' @ObjectType() export class ContributionLink { diff --git a/backend/src/graphql/model/TransactionLink.ts b/backend/src/graphql/model/TransactionLink.ts index 7356e97c6..3a6330839 100644 --- a/backend/src/graphql/model/TransactionLink.ts +++ b/backend/src/graphql/model/TransactionLink.ts @@ -1,8 +1,9 @@ import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' + import { Decimal } from 'decimal.js-light' import { ObjectType, Field, Int } from 'type-graphql' -import CONFIG from '@/config' +import { CONFIG } from '@/config' import { User } from './User' diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.ts b/backend/src/graphql/resolver/ContributionLinkResolver.ts index 462dbf99f..7f87ccd8c 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.ts @@ -3,22 +3,6 @@ import { ContributionLink as DbContributionLink } from '@entity/ContributionLink import { Decimal } from 'decimal.js-light' import { Resolver, Args, Arg, Authorized, Mutation, Query, Int, Ctx } from 'type-graphql' -// TODO: this is a strange construct -import ContributionLinkArgs from '@arg/ContributionLinkArgs' -import Paginated from '@arg/Paginated' -import { Order } from '@enum/Order' -import { ContributionLink } from '@model/ContributionLink' -import { ContributionLinkList } from '@model/ContributionLinkList' - -import { RIGHTS } from '@/auth/RIGHTS' -import { - EVENT_ADMIN_CONTRIBUTION_LINK_CREATE, - EVENT_ADMIN_CONTRIBUTION_LINK_DELETE, - EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE, -} from '@/event/Events' -import { Context, getUser } from '@/server/context' -import LogError from '@/server/LogError' - import { CONTRIBUTIONLINK_NAME_MAX_CHARS, CONTRIBUTIONLINK_NAME_MIN_CHARS, @@ -27,6 +11,21 @@ import { } from './const/const' import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver' import { isStartEndDateValid } from './util/creations' +import { ContributionLinkList } from '@model/ContributionLinkList' +import { ContributionLink } from '@model/ContributionLink' +import { ContributionLinkArgs } from '@arg/ContributionLinkArgs' +import { RIGHTS } from '@/auth/RIGHTS' +import { Order } from '@enum/Order' +import { Paginated } from '@arg/Paginated' + +// TODO: this is a strange construct +import { LogError } from '@/server/LogError' +import { Context, getUser } from '@/server/context' +import { + EVENT_ADMIN_CONTRIBUTION_LINK_CREATE, + EVENT_ADMIN_CONTRIBUTION_LINK_DELETE, + EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE, +} from '@/event/Events' @Resolver() export class ContributionLinkResolver { diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index 4f454d420..90bfccb9c 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -6,21 +6,21 @@ import { User as DbUser } from '@entity/User' import { UserContact as DbUserContact } from '@entity/UserContact' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' -import ContributionMessageArgs from '@arg/ContributionMessageArgs' -import Paginated from '@arg/Paginated' -import { ContributionStatus } from '@enum/ContributionStatus' -import { ContributionMessageType } from '@enum/MessageType' -import { Order } from '@enum/Order' import { ContributionMessage, ContributionMessageListResult } from '@model/ContributionMessage' +import { ContributionMessageArgs } from '@arg/ContributionMessageArgs' +import { ContributionMessageType } from '@enum/MessageType' +import { ContributionStatus } from '@enum/ContributionStatus' +import { Order } from '@enum/Order' +import { Paginated } from '@arg/Paginated' import { RIGHTS } from '@/auth/RIGHTS' import { sendAddedContributionMessageEmail } from '@/emails/sendEmailVariants' +import { LogError } from '@/server/LogError' import { EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE, EVENT_CONTRIBUTION_MESSAGE_CREATE, } from '@/event/Events' import { Context, getUser } from '@/server/context' -import LogError from '@/server/LogError' @Resolver() export class ContributionMessageResolver { diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 60f03020a..5fd86136b 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -8,27 +8,22 @@ import { UserContact } from '@entity/UserContact' import { Decimal } from 'decimal.js-light' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' -import AdminCreateContributionArgs from '@arg/AdminCreateContributionArgs' -import AdminUpdateContributionArgs from '@arg/AdminUpdateContributionArgs' -import ContributionArgs from '@arg/ContributionArgs' -import Paginated from '@arg/Paginated' -import { ContributionStatus } from '@enum/ContributionStatus' -import { ContributionType } from '@enum/ContributionType' -import { ContributionMessageType } from '@enum/MessageType' -import { Order } from '@enum/Order' -import { TransactionTypeId } from '@enum/TransactionTypeId' import { AdminUpdateContribution } from '@model/AdminUpdateContribution' import { Contribution, ContributionListResult } from '@model/Contribution' import { Decay } from '@model/Decay' import { OpenCreation } from '@model/OpenCreation' import { UnconfirmedContribution } from '@model/UnconfirmedContribution' +import { TransactionTypeId } from '@enum/TransactionTypeId' +import { Order } from '@enum/Order' +import { ContributionType } from '@enum/ContributionType' +import { ContributionStatus } from '@enum/ContributionStatus' +import { ContributionMessageType } from '@enum/MessageType' +import { ContributionArgs } from '@arg/ContributionArgs' +import { Paginated } from '@arg/Paginated' +import { AdminCreateContributionArgs } from '@arg/AdminCreateContributionArgs' +import { AdminUpdateContributionArgs } from '@arg/AdminUpdateContributionArgs' import { RIGHTS } from '@/auth/RIGHTS' -import { - sendContributionConfirmedEmail, - sendContributionDeletedEmail, - sendContributionDeniedEmail, -} from '@/emails/sendEmailVariants' import { EVENT_CONTRIBUTION_CREATE, EVENT_CONTRIBUTION_DELETE, @@ -40,10 +35,7 @@ import { EVENT_ADMIN_CONTRIBUTION_DENY, } from '@/event/Events' import { Context, getUser, getClientTimezoneOffset } from '@/server/context' -import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' -import { calculateDecay } from '@/util/decay' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { @@ -55,6 +47,14 @@ import { } from './util/creations' import { findContributions } from './util/findContributions' import { getLastTransaction } from './util/getLastTransaction' +import { calculateDecay } from '@/util/decay' +import { + sendContributionConfirmedEmail, + sendContributionDeletedEmail, + sendContributionDeniedEmail, +} from '@/emails/sendEmailVariants' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' +import { LogError } from '@/server/LogError' @Resolver() export class ContributionResolver { diff --git a/backend/src/graphql/resolver/EmailOptinCodes.test.ts b/backend/src/graphql/resolver/EmailOptinCodes.test.ts index cc8d4e534..d901987b8 100644 --- a/backend/src/graphql/resolver/EmailOptinCodes.test.ts +++ b/backend/src/graphql/resolver/EmailOptinCodes.test.ts @@ -9,9 +9,9 @@ import { GraphQLError } from 'graphql' import { testEnvironment, cleanDB } from '@test/helpers' -import CONFIG from '@/config' import { createUser, setPassword, forgotPassword } from '@/seeds/graphql/mutations' import { queryOptIn } from '@/seeds/graphql/queries' +import { CONFIG } from '@/config' let mutate: any, query: any, con: any let testEnv: any diff --git a/backend/src/graphql/resolver/GdtResolver.ts b/backend/src/graphql/resolver/GdtResolver.ts index 53fc23295..906d9b5f2 100644 --- a/backend/src/graphql/resolver/GdtResolver.ts +++ b/backend/src/graphql/resolver/GdtResolver.ts @@ -3,15 +3,15 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ import { Resolver, Query, Args, Ctx, Authorized, Arg, Int, Float } from 'type-graphql' -import Paginated from '@arg/Paginated' -import { Order } from '@enum/Order' import { GdtEntryList } from '@model/GdtEntryList' +import { Order } from '@enum/Order' +import { Paginated } from '@arg/Paginated' +import { Context, getUser } from '@/server/context' +import { CONFIG } from '@/config' import { apiGet, apiPost } from '@/apis/HttpRequest' import { RIGHTS } from '@/auth/RIGHTS' -import CONFIG from '@/config' -import { Context, getUser } from '@/server/context' -import LogError from '@/server/LogError' +import { LogError } from '@/server/LogError' @Resolver() export class GdtResolver { diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index f69878cac..68183af12 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -9,9 +9,6 @@ import { User as DbUser } from '@entity/User' import { Decimal } from 'decimal.js-light' import { Resolver, Args, Arg, Authorized, Ctx, Mutation, Query, Int } from 'type-graphql' -import Paginated from '@arg/Paginated' -import TransactionLinkArgs from '@arg/TransactionLinkArgs' -import TransactionLinkFilters from '@arg/TransactionLinkFilters' import { ContributionCycleType } from '@enum/ContributionCycleType' import { ContributionStatus } from '@enum/ContributionStatus' import { ContributionType } from '@enum/ContributionType' @@ -20,26 +17,28 @@ import { ContributionLink } from '@model/ContributionLink' import { Decay } from '@model/Decay' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { User } from '@model/User' -import QueryLinkResult from '@union/QueryLinkResult' +import { transactionLinkList } from './util/transactionLinkList' +import { TransactionLinkArgs } from '@arg/TransactionLinkArgs' +import { Paginated } from '@arg/Paginated' +import { TransactionLinkFilters } from '@arg/TransactionLinkFilters' +import { backendLogger as logger } from '@/server/logger' +import { Context, getUser, getClientTimezoneOffset } from '@/server/context' +import { calculateBalance } from '@/util/validate' import { RIGHTS } from '@/auth/RIGHTS' +import { calculateDecay } from '@/util/decay' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' +import { LogError } from '@/server/LogError' import { EVENT_CONTRIBUTION_LINK_REDEEM, EVENT_TRANSACTION_LINK_CREATE, EVENT_TRANSACTION_LINK_DELETE, EVENT_TRANSACTION_LINK_REDEEM, } from '@/event/Events' -import { Context, getUser, getClientTimezoneOffset } from '@/server/context' -import LogError from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' -import { calculateDecay } from '@/util/decay' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' -import { calculateBalance } from '@/util/validate' import { executeTransaction } from './TransactionResolver' import { getUserCreation, validateContribution } from './util/creations' import { getLastTransaction } from './util/getLastTransaction' -import transactionLinkList from './util/transactionLinkList' // TODO: do not export, test it inside the resolver export const transactionLinkCode = (date: Date): string => { diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index eb9b19b3f..93ffb3861 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -9,8 +9,6 @@ import { User as dbUser } from '@entity/User' import { Decimal } from 'decimal.js-light' import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' -import Paginated from '@arg/Paginated' -import TransactionSendArgs from '@arg/TransactionSendArgs' import { Order } from '@enum/Order' import { TransactionTypeId } from '@enum/TransactionTypeId' import { Transaction } from '@model/Transaction' @@ -19,18 +17,19 @@ import { User } from '@model/User' import { TransactionRepository } from '@repository/Transaction' import { TransactionLinkRepository } from '@repository/TransactionLink' +import { calculateBalance } from '@/util/validate' +import { TransactionSendArgs } from '@arg/TransactionSendArgs' +import { Paginated } from '@arg/Paginated' + +import { backendLogger as logger } from '@/server/logger' +import { Context, getUser } from '@/server/context' import { RIGHTS } from '@/auth/RIGHTS' import { sendTransactionLinkRedeemedEmail, sendTransactionReceivedEmail, } from '@/emails/sendEmailVariants' import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Events' -import { Context, getUser } from '@/server/context' -import LogError from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' import { communityUser } from '@/util/communityUser' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' -import { calculateBalance } from '@/util/validate' import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions' import { BalanceResolver } from './BalanceResolver' @@ -38,6 +37,9 @@ import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { findUserByEmail } from './UserResolver' import { getLastTransaction } from './util/getLastTransaction' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' +import { LogError } from '@/server/LogError' + export const executeTransaction = async ( amount: Decimal, memo: string, diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 341a4be56..91b0a6ae6 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -20,7 +20,6 @@ import { ContributionLink } from '@model/ContributionLink' import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers' import { logger, i18n as localization } from '@test/testSetup' -import CONFIG from '@/config' import { sendAccountActivationEmail, sendAccountMultiRegistrationEmail, @@ -48,9 +47,10 @@ import { } from '@/seeds/graphql/mutations' import { verifyLogin, queryOptIn, searchAdminUsers, searchUsers } from '@/seeds/graphql/queries' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' +import { CONFIG } from '@/config' +import { peterLustig } from '@/seeds/users/peter-lustig' import { bobBaumeister } from '@/seeds/users/bob-baumeister' import { garrickOllivander } from '@/seeds/users/garrick-ollivander' -import { peterLustig } from '@/seeds/users/peter-lustig' import { stephenHawking } from '@/seeds/users/stephen-hawking' import { printTimeDuration } from '@/util/time' import { objectValuesToArray } from '@/util/utilities' diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 7ec1973fa..8207db272 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -21,11 +21,6 @@ import { } from 'type-graphql' import { v4 as uuidv4 } from 'uuid' -import CreateUserArgs from '@arg/CreateUserArgs' -import Paginated from '@arg/Paginated' -import SearchUsersArgs from '@arg/SearchUsersArgs' -import UnsecureLoginArgs from '@arg/UnsecureLoginArgs' -import UpdateUserInfosArgs from '@arg/UpdateUserInfosArgs' import { OptInType } from '@enum/OptInType' import { Order } from '@enum/Order' import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' @@ -38,12 +33,25 @@ import { UserRepository } from '@repository/User' import { klicktippSignIn } from '@/apis/KlicktippController' import { encode } from '@/auth/JWT' import { RIGHTS } from '@/auth/RIGHTS' -import CONFIG from '@/config' import { sendAccountActivationEmail, sendAccountMultiRegistrationEmail, sendResetPasswordEmail, } from '@/emails/sendEmailVariants' + +import { getTimeDurationObject, printTimeDuration } from '@/util/time' +import { CreateUserArgs } from '@arg/CreateUserArgs' +import { UnsecureLoginArgs } from '@arg/UnsecureLoginArgs' +import { UpdateUserInfosArgs } from '@arg/UpdateUserInfosArgs' +import { Paginated } from '@arg/Paginated' +import { SearchUsersArgs } from '@arg/SearchUsersArgs' + +import { backendLogger as logger } from '@/server/logger' +import { Context, getUser, getClientTimezoneOffset } from '@/server/context' +import { CONFIG } from '@/config' +import { communityDbUser } from '@/util/communityUser' +import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware' +import { hasElopageBuys } from '@/util/hasElopageBuys' import { Event, EventType, @@ -60,18 +68,12 @@ import { EVENT_ADMIN_USER_DELETE, EVENT_ADMIN_USER_UNDELETE, } from '@/event/Events' -import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware' import { isValidPassword } from '@/password/EncryptorUtils' import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor' -import { Context, getUser, getClientTimezoneOffset } from '@/server/context' -import LogError from '@/server/LogError' -import { backendLogger as logger } from '@/server/logger' -import { communityDbUser } from '@/util/communityUser' -import { hasElopageBuys } from '@/util/hasElopageBuys' -import { getTimeDurationObject, printTimeDuration } from '@/util/time' import { FULL_CREATION_AVAILABLE } from './const/const' import { getUserCreations } from './util/creations' +import { LogError } from '@/server/LogError' // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs const random = require('random-bigint') diff --git a/backend/src/graphql/resolver/util/creations.ts b/backend/src/graphql/resolver/util/creations.ts index dbf0650a6..3eca569f5 100644 --- a/backend/src/graphql/resolver/util/creations.ts +++ b/backend/src/graphql/resolver/util/creations.ts @@ -7,7 +7,7 @@ import { Decimal } from 'decimal.js-light' import { OpenCreation } from '@model/OpenCreation' import { FULL_CREATION_AVAILABLE, MAX_CREATION_AMOUNT } from '@/graphql/resolver/const/const' -import LogError from '@/server/LogError' +import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' interface CreationMap { diff --git a/backend/src/graphql/resolver/util/transactionLinkList.ts b/backend/src/graphql/resolver/util/transactionLinkList.ts index 544d35114..849ef7642 100644 --- a/backend/src/graphql/resolver/util/transactionLinkList.ts +++ b/backend/src/graphql/resolver/util/transactionLinkList.ts @@ -1,15 +1,14 @@ import { MoreThan } from '@dbTools/typeorm' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { User as DbUser } from '@entity/User' - -import Paginated from '@arg/Paginated' -import TransactionLinkFilters from '@arg/TransactionLinkFilters' import { Order } from '@enum/Order' +import { Paginated } from '@arg/Paginated' +import { TransactionLinkFilters } from '@arg/TransactionLinkFilters' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { User } from '@/graphql/model/User' -export default async function transactionLinkList( +export async function transactionLinkList( { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, filters: TransactionLinkFilters | null, user: DbUser, diff --git a/backend/src/graphql/scalar/Decimal.ts b/backend/src/graphql/scalar/Decimal.ts index e46446cee..f539685f9 100644 --- a/backend/src/graphql/scalar/Decimal.ts +++ b/backend/src/graphql/scalar/Decimal.ts @@ -1,7 +1,7 @@ import { Decimal } from 'decimal.js-light' import { GraphQLScalarType, Kind } from 'graphql' -const DecimalType = new GraphQLScalarType({ +export const DecimalScalar = new GraphQLScalarType({ name: 'Decimal', description: 'The `Decimal` scalar type to represent currency values', @@ -21,5 +21,3 @@ const DecimalType = new GraphQLScalarType({ return new Decimal(ast.value) }, }) - -export default DecimalType diff --git a/backend/src/graphql/schema.ts b/backend/src/graphql/schema.ts index c6097f027..f14276c86 100644 --- a/backend/src/graphql/schema.ts +++ b/backend/src/graphql/schema.ts @@ -4,15 +4,13 @@ import { Decimal } from 'decimal.js-light' import { GraphQLSchema } from 'graphql' import { buildSchema } from 'type-graphql' -import isAuthorized from './directive/isAuthorized' -import DecimalScalar from './scalar/Decimal' +import { isAuthorized } from './directive/isAuthorized' +import { DecimalScalar } from './scalar/Decimal' -const schema = async (): Promise => { +export const schema = async (): Promise => { return buildSchema({ resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)], authChecker: isAuthorized, scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], }) } - -export default schema diff --git a/backend/src/index.ts b/backend/src/index.ts index 353b77616..4d34c0ccd 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,9 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { createServer } from './server/createServer' + // config -import CONFIG from './config' +import { CONFIG } from './config' import { startValidateCommunities } from './federation/validateCommunities' -import createServer from './server/createServer' async function main() { const { app } = await createServer() diff --git a/backend/src/middleware/klicktippMiddleware.ts b/backend/src/middleware/klicktippMiddleware.ts index 481094752..d8b31c8fa 100644 --- a/backend/src/middleware/klicktippMiddleware.ts +++ b/backend/src/middleware/klicktippMiddleware.ts @@ -7,7 +7,7 @@ import { MiddlewareFn } from 'type-graphql' import { KlickTipp } from '@model/KlickTipp' import { /* klicktippSignIn, */ getKlickTippUser } from '@/apis/KlicktippController' -import CONFIG from '@/config' +import { CONFIG } from '@/config' import { klickTippLogger as logger } from '@/server/logger' // export const klicktippRegistrationMiddleware: MiddlewareFn = async ( diff --git a/backend/src/password/EncryptorUtils.ts b/backend/src/password/EncryptorUtils.ts index eb25edda6..e511ec09a 100644 --- a/backend/src/password/EncryptorUtils.ts +++ b/backend/src/password/EncryptorUtils.ts @@ -2,11 +2,10 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { User } from '@entity/User' - import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' -import CONFIG from '@/config' -import LogError from '@/server/LogError' +import { CONFIG } from '@/config' +import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs diff --git a/backend/src/seeds/index.ts b/backend/src/seeds/index.ts index d1960eea9..4966ed220 100644 --- a/backend/src/seeds/index.ts +++ b/backend/src/seeds/index.ts @@ -9,8 +9,6 @@ import { entities } from '@entity/index' import { createTestClient } from 'apollo-server-testing' import { name, internet, datatype } from 'faker' -import CONFIG from '@/config' -import createServer from '@/server/createServer' import { backendLogger as logger } from '@/server/logger' import { contributionLinks } from './contributionLink/index' @@ -21,6 +19,8 @@ import { transactionLinkFactory } from './factory/transactionLink' import { userFactory } from './factory/user' import { transactionLinks } from './transactionLink/index' import { users } from './users/index' +import { createServer } from '@/server/createServer' +import { CONFIG } from '@/config' CONFIG.EMAIL = false diff --git a/backend/src/server/LogError.test.ts b/backend/src/server/LogError.test.ts index 5aa1cae21..389b2e0c1 100644 --- a/backend/src/server/LogError.test.ts +++ b/backend/src/server/LogError.test.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/unbound-method */ +import { LogError } from './LogError' import { logger } from '@test/testSetup' -import LogError from './LogError' describe('LogError', () => { it('logs an Error when created', () => { diff --git a/backend/src/server/LogError.ts b/backend/src/server/LogError.ts index b753d204e..e745d17b6 100644 --- a/backend/src/server/LogError.ts +++ b/backend/src/server/LogError.ts @@ -1,6 +1,6 @@ import { backendLogger as logger } from './logger' -export default class LogError extends Error { +export class LogError extends Error { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(msg: string, ...details: any[]) { super(msg) diff --git a/backend/src/server/context.ts b/backend/src/server/context.ts index f0e63daea..36cd6939f 100644 --- a/backend/src/server/context.ts +++ b/backend/src/server/context.ts @@ -3,9 +3,10 @@ import { User as dbUser } from '@entity/User' import { ExpressContext } from 'apollo-server-express' import { Decimal } from 'decimal.js-light' +import { LogError } from './LogError' + import { Role } from '@/auth/Role' -import LogError from './LogError' export interface Context { token: string | null @@ -20,7 +21,7 @@ export interface Context { sumHoldAvailableAmount?: Decimal } -const context = (args: ExpressContext): Context => { +export const context = (args: ExpressContext): Context => { const authorization = args.req.headers.authorization const clientTimezoneOffset = args.req.headers.clienttimezoneoffset const context: Context = { @@ -50,5 +51,3 @@ export const getClientTimezoneOffset = (context: Context): number => { } throw new LogError('No valid client time zone offset in context') } - -export default context diff --git a/backend/src/server/cors.ts b/backend/src/server/cors.ts index e76ed1591..c05fd8544 100644 --- a/backend/src/server/cors.ts +++ b/backend/src/server/cors.ts @@ -1,8 +1,8 @@ -import cors from 'cors' +import { default as corsLib } from 'cors' const corsOptions = { origin: '*', exposedHeaders: ['token'], } -export default cors(corsOptions) +export const cors = corsLib(corsOptions) diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 8a94ef3eb..234be797c 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -5,25 +5,23 @@ import { Connection } from '@dbTools/typeorm' import { ApolloServer } from 'apollo-server-express' import express, { Express, json, urlencoded } from 'express' import { Logger } from 'log4js' - -import CONFIG from '@/config' -import schema from '@/graphql/schema' -import connection from '@/typeorm/connection' import { checkDBVersion } from '@/typeorm/DBVersion' -import { elopageWebhook } from '@/webhook/elopage' - -import serverContext from './context' -import cors from './cors' -import { i18n } from './localization' +import { cors } from './cors' +import { context as serverContext } from './context' +import { plugins } from './plugins' import { apolloLogger } from './logger' -import plugins from './plugins' +import { i18n } from './localization' +import { connection } from '@/typeorm/connection' +import { CONFIG } from '@/config' +import { schema } from '@/graphql/schema' +import { elopageWebhook } from '@/webhook/elopage' // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; type ServerDef = { apollo: ApolloServer; app: Express; con: Connection } -const createServer = async ( +export const createServer = async ( // eslint-disable-next-line @typescript-eslint/no-explicit-any context: any = serverContext, logger: Logger = apolloLogger, @@ -81,5 +79,3 @@ const createServer = async ( return { apollo, app, con } } - -export default createServer diff --git a/backend/src/server/logger.ts b/backend/src/server/logger.ts index 89f292ab7..3d9dc8c4c 100644 --- a/backend/src/server/logger.ts +++ b/backend/src/server/logger.ts @@ -4,7 +4,7 @@ import { readFileSync } from 'fs' import { configure, getLogger } from 'log4js' -import CONFIG from '@/config' +import { CONFIG } from '@/config' const options = JSON.parse(readFileSync(CONFIG.LOG4JS_CONFIG, 'utf-8')) diff --git a/backend/src/server/plugins.ts b/backend/src/server/plugins.ts index bc2495b71..77c8c5299 100644 --- a/backend/src/server/plugins.ts +++ b/backend/src/server/plugins.ts @@ -60,7 +60,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/backend/src/typeorm/connection.ts b/backend/src/typeorm/connection.ts index a3a20450b..faf0f66cc 100644 --- a/backend/src/typeorm/connection.ts +++ b/backend/src/typeorm/connection.ts @@ -2,10 +2,9 @@ // We cannot use our connection here, but must use the external typeorm installation import { Connection, createConnection, FileLogger } from '@dbTools/typeorm' import { entities } from '@entity/index' +import { CONFIG } from '@/config' -import CONFIG from '@/config' - -const connection = async (): Promise => { +export const connection = async (): Promise => { try { return createConnection({ name: 'default', @@ -31,5 +30,3 @@ const connection = async (): Promise => { return null } } - -export default connection diff --git a/backend/src/typeorm/repository/User.ts b/backend/src/typeorm/repository/User.ts index 71e43329b..53273102d 100644 --- a/backend/src/typeorm/repository/User.ts +++ b/backend/src/typeorm/repository/User.ts @@ -1,7 +1,7 @@ import { Brackets, EntityRepository, IsNull, Not, Repository } from '@dbTools/typeorm' import { User as DbUser } from '@entity/User' -import SearchUsersFilters from '@/graphql/arg/SearchUsersFilters' +import { SearchUsersFilters } from '@/graphql/arg/SearchUsersFilters' @EntityRepository(DbUser) export class UserRepository extends Repository { diff --git a/backend/src/util/decay.ts b/backend/src/util/decay.ts index 77157e203..c870fa68a 100644 --- a/backend/src/util/decay.ts +++ b/backend/src/util/decay.ts @@ -1,9 +1,7 @@ import { Decimal } from 'decimal.js-light' - +import { CONFIG } from '@/config' import { Decay } from '@model/Decay' - -import CONFIG from '@/config' -import LogError from '@/server/LogError' +import { LogError } from '@/server/LogError' // TODO: externalize all those definitions and functions into an external decay library diff --git a/backend/src/util/klicktipp.ts b/backend/src/util/klicktipp.ts index 4d90be134..0d09d32a2 100644 --- a/backend/src/util/klicktipp.ts +++ b/backend/src/util/klicktipp.ts @@ -1,8 +1,7 @@ import { User } from '@entity/User' - +import { connection } from '@/typeorm/connection' import { getKlickTippUser } from '@/apis/KlicktippController' -import LogError from '@/server/LogError' -import connection from '@/typeorm/connection' +import { LogError } from '@/server/LogError' export async function retrieveNotRegisteredEmails(): Promise { const con = await connection() diff --git a/backend/test/helpers.ts b/backend/test/helpers.ts index f440adc02..dffc93f57 100644 --- a/backend/test/helpers.ts +++ b/backend/test/helpers.ts @@ -10,9 +10,8 @@ import { initialize } from '@dbTools/helpers' import { entities } from '@entity/index' import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' - import { i18n, logger } from './testSetup' +import { createServer } from '@/server/createServer' export const headerPushMock = jest.fn((t) => { context.token = t.value diff --git a/backend/test/testSetup.ts b/backend/test/testSetup.ts index 4e8a67e3f..305de6b1c 100644 --- a/backend/test/testSetup.ts +++ b/backend/test/testSetup.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ -import CONFIG from '@/config' -import { i18n } from '@/server/localization' +import { CONFIG } from '@/config' import { backendLogger as logger } from '@/server/logger' +import { i18n } from '@/server/localization' CONFIG.EMAIL = true CONFIG.EMAIL_TEST_MODUS = false From c57c259db8970ddf0fce50e8aa394b3b8e1e1dae Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 31 Mar 2023 12:48:14 +0200 Subject: [PATCH 02/12] merge --- backend/src/graphql/resolver/TransactionLinkResolver.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 68183af12..468a276f1 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -39,6 +39,7 @@ import { import { executeTransaction } from './TransactionResolver' import { getUserCreation, validateContribution } from './util/creations' import { getLastTransaction } from './util/getLastTransaction' +import QueryLinkResult from '../union/QueryLinkResult' // TODO: do not export, test it inside the resolver export const transactionLinkCode = (date: Date): string => { From 875c1f692b76279aa5561825ee4b0800a9cdfc7a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 29 Mar 2023 17:19:55 +0200 Subject: [PATCH 03/12] lint fixes --- backend/src/graphql/resolver/TransactionLinkResolver.ts | 2 +- backend/src/graphql/union/QueryLinkResult.ts | 2 +- backend/src/server/cors.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 468a276f1..65bb3e80d 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -27,6 +27,7 @@ import { Context, getUser, getClientTimezoneOffset } from '@/server/context' import { calculateBalance } from '@/util/validate' import { RIGHTS } from '@/auth/RIGHTS' import { calculateDecay } from '@/util/decay' +import { QueryLinkResult } from '@union/QueryLinkResult' import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { LogError } from '@/server/LogError' import { @@ -39,7 +40,6 @@ import { import { executeTransaction } from './TransactionResolver' import { getUserCreation, validateContribution } from './util/creations' import { getLastTransaction } from './util/getLastTransaction' -import QueryLinkResult from '../union/QueryLinkResult' // TODO: do not export, test it inside the resolver export const transactionLinkCode = (date: Date): string => { diff --git a/backend/src/graphql/union/QueryLinkResult.ts b/backend/src/graphql/union/QueryLinkResult.ts index 390175d1d..fdf1c7b17 100644 --- a/backend/src/graphql/union/QueryLinkResult.ts +++ b/backend/src/graphql/union/QueryLinkResult.ts @@ -3,7 +3,7 @@ import { createUnionType } from 'type-graphql' import { ContributionLink } from '@model/ContributionLink' import { TransactionLink } from '@model/TransactionLink' -export default createUnionType({ +export const QueryLinkResult = createUnionType({ name: 'QueryLinkResult', // the name of the GraphQL union types: () => [TransactionLink, ContributionLink] as const, // function that returns tuple of object types classes }) diff --git a/backend/src/server/cors.ts b/backend/src/server/cors.ts index c05fd8544..95663695d 100644 --- a/backend/src/server/cors.ts +++ b/backend/src/server/cors.ts @@ -1,4 +1,4 @@ -import { default as corsLib } from 'cors' +import corsLib from 'cors' const corsOptions = { origin: '*', From 7a44a223e9b949deaf938f88a38d0e2bc02c48f8 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 31 Mar 2023 12:51:51 +0200 Subject: [PATCH 04/12] lint fixes --- backend/src/apis/HttpRequest.ts | 2 +- backend/src/apis/KlicktippController.ts | 4 +-- backend/src/emails/sendEmailTranslated.ts | 2 +- backend/src/emails/sendEmailVariants.test.ts | 11 +++--- backend/src/emails/sendEmailVariants.ts | 3 +- .../federation/client/1_0/FederationClient.ts | 2 +- .../federation/client/1_1/FederationClient.ts | 2 +- backend/src/federation/validateCommunities.ts | 5 +-- backend/src/graphql/model/TransactionLink.ts | 1 - .../resolver/ContributionLinkResolver.ts | 28 ++++++++------- .../resolver/ContributionMessageResolver.ts | 10 +++--- .../graphql/resolver/ContributionResolver.ts | 34 +++++++++---------- .../graphql/resolver/EmailOptinCodes.test.ts | 2 +- backend/src/graphql/resolver/GdtResolver.ts | 8 ++--- .../resolver/TransactionLinkResolver.ts | 24 ++++++------- .../graphql/resolver/TransactionResolver.ts | 16 ++++----- .../src/graphql/resolver/UserResolver.test.ts | 4 +-- backend/src/graphql/resolver/UserResolver.ts | 28 +++++++-------- .../resolver/util/transactionLinkList.ts | 3 +- backend/src/index.ts | 3 +- backend/src/password/EncryptorUtils.ts | 1 + backend/src/seeds/index.ts | 4 +-- backend/src/server/LogError.test.ts | 2 +- backend/src/server/context.ts | 3 +- backend/src/server/createServer.ts | 16 +++++---- backend/src/typeorm/connection.ts | 1 + backend/src/util/decay.ts | 4 ++- backend/src/util/klicktipp.ts | 3 +- backend/test/helpers.ts | 3 +- backend/test/testSetup.ts | 2 +- 30 files changed, 119 insertions(+), 112 deletions(-) diff --git a/backend/src/apis/HttpRequest.ts b/backend/src/apis/HttpRequest.ts index 7272e4bfc..a36857794 100644 --- a/backend/src/apis/HttpRequest.ts +++ b/backend/src/apis/HttpRequest.ts @@ -2,8 +2,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import axios from 'axios' -import { backendLogger as logger } from '@/server/logger' import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line @typescript-eslint/no-explicit-any export const apiPost = async (url: string, payload: unknown): Promise => { diff --git a/backend/src/apis/KlicktippController.ts b/backend/src/apis/KlicktippController.ts index 6dcfac0bf..3f7136de2 100644 --- a/backend/src/apis/KlicktippController.ts +++ b/backend/src/apis/KlicktippController.ts @@ -5,11 +5,11 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +import { CONFIG } from '@/config' + // eslint-disable-next-line import/no-relative-parent-imports import KlicktippConnector from 'klicktipp-api' -import { CONFIG } from '@/config' - const klicktippConnector = new KlicktippConnector() export const klicktippSignIn = async ( diff --git a/backend/src/emails/sendEmailTranslated.ts b/backend/src/emails/sendEmailTranslated.ts index f16e34511..abf582b5c 100644 --- a/backend/src/emails/sendEmailTranslated.ts +++ b/backend/src/emails/sendEmailTranslated.ts @@ -5,9 +5,9 @@ import Email from 'email-templates' import i18n from 'i18n' import { createTransport } from 'nodemailer' -import { backendLogger as logger } from '@/server/logger' import { CONFIG } from '@/config' import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' export const sendEmailTranslated = async (params: { receiver: { diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts index 9a6ad3183..fa83996cb 100644 --- a/backend/src/emails/sendEmailVariants.test.ts +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -5,6 +5,12 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { Decimal } from 'decimal.js-light' +import { testEnvironment } from '@test/helpers' +import { logger, i18n as localization } from '@test/testSetup' + +import { CONFIG } from '@/config' + +import { sendEmailTranslated } from './sendEmailTranslated' import { sendAddedContributionMessageEmail, sendAccountActivationEmail, @@ -17,11 +23,6 @@ import { sendTransactionReceivedEmail, } from './sendEmailVariants' -import { sendEmailTranslated } from './sendEmailTranslated' -import { testEnvironment } from '@test/helpers' -import { logger, i18n as localization } from '@test/testSetup' -import { CONFIG } from '@/config' - let con: any let testEnv: any diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index 8f0ee0f2d..2f9d906a1 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -1,9 +1,10 @@ import { Decimal } from 'decimal.js-light' -import { sendEmailTranslated } from './sendEmailTranslated' import { CONFIG } from '@/config' import { decimalSeparatorByLanguage } from '@/util/utilities' +import { sendEmailTranslated } from './sendEmailTranslated' + export const sendAddedContributionMessageEmail = (data: { firstName: string lastName: string diff --git a/backend/src/federation/client/1_0/FederationClient.ts b/backend/src/federation/client/1_0/FederationClient.ts index e7f7fc1a4..13f05e761 100644 --- a/backend/src/federation/client/1_0/FederationClient.ts +++ b/backend/src/federation/client/1_0/FederationClient.ts @@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community' import { gql } from 'graphql-request' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import { backendLogger as logger } from '@/server/logger' import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' diff --git a/backend/src/federation/client/1_1/FederationClient.ts b/backend/src/federation/client/1_1/FederationClient.ts index 00f1d582e..bda185fba 100644 --- a/backend/src/federation/client/1_1/FederationClient.ts +++ b/backend/src/federation/client/1_1/FederationClient.ts @@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community' import { gql } from 'graphql-request' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' -import { backendLogger as logger } from '@/server/logger' import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' diff --git a/backend/src/federation/validateCommunities.ts b/backend/src/federation/validateCommunities.ts index f609fab51..0e8c7cb12 100644 --- a/backend/src/federation/validateCommunities.ts +++ b/backend/src/federation/validateCommunities.ts @@ -1,13 +1,14 @@ import { IsNull } from '@dbTools/typeorm' import { Community as DbCommunity } from '@entity/Community' +import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' + // eslint-disable-next-line camelcase import { requestGetPublicKey as v1_0_requestGetPublicKey } from './client/1_0/FederationClient' // eslint-disable-next-line camelcase import { requestGetPublicKey as v1_1_requestGetPublicKey } from './client/1_1/FederationClient' import { ApiVersionType } from './enum/apiVersionType' -import { backendLogger as logger } from '@/server/logger' -import { LogError } from '@/server/LogError' export function startValidateCommunities(timerInterval: number): void { logger.info( diff --git a/backend/src/graphql/model/TransactionLink.ts b/backend/src/graphql/model/TransactionLink.ts index 3a6330839..74178610c 100644 --- a/backend/src/graphql/model/TransactionLink.ts +++ b/backend/src/graphql/model/TransactionLink.ts @@ -1,5 +1,4 @@ import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' - import { Decimal } from 'decimal.js-light' import { ObjectType, Field, Int } from 'type-graphql' diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.ts b/backend/src/graphql/resolver/ContributionLinkResolver.ts index 7f87ccd8c..069656ff3 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.ts @@ -3,6 +3,21 @@ import { ContributionLink as DbContributionLink } from '@entity/ContributionLink import { Decimal } from 'decimal.js-light' import { Resolver, Args, Arg, Authorized, Mutation, Query, Int, Ctx } from 'type-graphql' +import { ContributionLinkArgs } from '@arg/ContributionLinkArgs' +import { Paginated } from '@arg/Paginated' +import { Order } from '@enum/Order' +import { ContributionLink } from '@model/ContributionLink' +import { ContributionLinkList } from '@model/ContributionLinkList' + +import { RIGHTS } from '@/auth/RIGHTS' +import { + EVENT_ADMIN_CONTRIBUTION_LINK_CREATE, + EVENT_ADMIN_CONTRIBUTION_LINK_DELETE, + EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE, +} from '@/event/Events' +import { Context, getUser } from '@/server/context' +import { LogError } from '@/server/LogError' + import { CONTRIBUTIONLINK_NAME_MAX_CHARS, CONTRIBUTIONLINK_NAME_MIN_CHARS, @@ -11,21 +26,8 @@ import { } from './const/const' import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver' import { isStartEndDateValid } from './util/creations' -import { ContributionLinkList } from '@model/ContributionLinkList' -import { ContributionLink } from '@model/ContributionLink' -import { ContributionLinkArgs } from '@arg/ContributionLinkArgs' -import { RIGHTS } from '@/auth/RIGHTS' -import { Order } from '@enum/Order' -import { Paginated } from '@arg/Paginated' // TODO: this is a strange construct -import { LogError } from '@/server/LogError' -import { Context, getUser } from '@/server/context' -import { - EVENT_ADMIN_CONTRIBUTION_LINK_CREATE, - EVENT_ADMIN_CONTRIBUTION_LINK_DELETE, - EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE, -} from '@/event/Events' @Resolver() export class ContributionLinkResolver { diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index 90bfccb9c..f3fedcadf 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -6,21 +6,21 @@ import { User as DbUser } from '@entity/User' import { UserContact as DbUserContact } from '@entity/UserContact' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' -import { ContributionMessage, ContributionMessageListResult } from '@model/ContributionMessage' import { ContributionMessageArgs } from '@arg/ContributionMessageArgs' -import { ContributionMessageType } from '@enum/MessageType' -import { ContributionStatus } from '@enum/ContributionStatus' -import { Order } from '@enum/Order' import { Paginated } from '@arg/Paginated' +import { ContributionStatus } from '@enum/ContributionStatus' +import { ContributionMessageType } from '@enum/MessageType' +import { Order } from '@enum/Order' +import { ContributionMessage, ContributionMessageListResult } from '@model/ContributionMessage' import { RIGHTS } from '@/auth/RIGHTS' import { sendAddedContributionMessageEmail } from '@/emails/sendEmailVariants' -import { LogError } from '@/server/LogError' import { EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE, EVENT_CONTRIBUTION_MESSAGE_CREATE, } from '@/event/Events' import { Context, getUser } from '@/server/context' +import { LogError } from '@/server/LogError' @Resolver() export class ContributionMessageResolver { diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 5fd86136b..f6ce30e52 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -8,22 +8,27 @@ import { UserContact } from '@entity/UserContact' import { Decimal } from 'decimal.js-light' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' +import { AdminCreateContributionArgs } from '@arg/AdminCreateContributionArgs' +import { AdminUpdateContributionArgs } from '@arg/AdminUpdateContributionArgs' +import { ContributionArgs } from '@arg/ContributionArgs' +import { Paginated } from '@arg/Paginated' +import { ContributionStatus } from '@enum/ContributionStatus' +import { ContributionType } from '@enum/ContributionType' +import { ContributionMessageType } from '@enum/MessageType' +import { Order } from '@enum/Order' +import { TransactionTypeId } from '@enum/TransactionTypeId' import { AdminUpdateContribution } from '@model/AdminUpdateContribution' import { Contribution, ContributionListResult } from '@model/Contribution' import { Decay } from '@model/Decay' import { OpenCreation } from '@model/OpenCreation' import { UnconfirmedContribution } from '@model/UnconfirmedContribution' -import { TransactionTypeId } from '@enum/TransactionTypeId' -import { Order } from '@enum/Order' -import { ContributionType } from '@enum/ContributionType' -import { ContributionStatus } from '@enum/ContributionStatus' -import { ContributionMessageType } from '@enum/MessageType' -import { ContributionArgs } from '@arg/ContributionArgs' -import { Paginated } from '@arg/Paginated' -import { AdminCreateContributionArgs } from '@arg/AdminCreateContributionArgs' -import { AdminUpdateContributionArgs } from '@arg/AdminUpdateContributionArgs' import { RIGHTS } from '@/auth/RIGHTS' +import { + sendContributionConfirmedEmail, + sendContributionDeletedEmail, + sendContributionDeniedEmail, +} from '@/emails/sendEmailVariants' import { EVENT_CONTRIBUTION_CREATE, EVENT_CONTRIBUTION_DELETE, @@ -35,7 +40,10 @@ import { EVENT_ADMIN_CONTRIBUTION_DENY, } from '@/event/Events' import { Context, getUser, getClientTimezoneOffset } from '@/server/context' +import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' +import { calculateDecay } from '@/util/decay' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { @@ -47,14 +55,6 @@ import { } from './util/creations' import { findContributions } from './util/findContributions' import { getLastTransaction } from './util/getLastTransaction' -import { calculateDecay } from '@/util/decay' -import { - sendContributionConfirmedEmail, - sendContributionDeletedEmail, - sendContributionDeniedEmail, -} from '@/emails/sendEmailVariants' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' -import { LogError } from '@/server/LogError' @Resolver() export class ContributionResolver { diff --git a/backend/src/graphql/resolver/EmailOptinCodes.test.ts b/backend/src/graphql/resolver/EmailOptinCodes.test.ts index d901987b8..442c63c00 100644 --- a/backend/src/graphql/resolver/EmailOptinCodes.test.ts +++ b/backend/src/graphql/resolver/EmailOptinCodes.test.ts @@ -9,9 +9,9 @@ import { GraphQLError } from 'graphql' import { testEnvironment, cleanDB } from '@test/helpers' +import { CONFIG } from '@/config' import { createUser, setPassword, forgotPassword } from '@/seeds/graphql/mutations' import { queryOptIn } from '@/seeds/graphql/queries' -import { CONFIG } from '@/config' let mutate: any, query: any, con: any let testEnv: any diff --git a/backend/src/graphql/resolver/GdtResolver.ts b/backend/src/graphql/resolver/GdtResolver.ts index 906d9b5f2..77ca57b15 100644 --- a/backend/src/graphql/resolver/GdtResolver.ts +++ b/backend/src/graphql/resolver/GdtResolver.ts @@ -3,14 +3,14 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ import { Resolver, Query, Args, Ctx, Authorized, Arg, Int, Float } from 'type-graphql' -import { GdtEntryList } from '@model/GdtEntryList' -import { Order } from '@enum/Order' import { Paginated } from '@arg/Paginated' +import { Order } from '@enum/Order' +import { GdtEntryList } from '@model/GdtEntryList' -import { Context, getUser } from '@/server/context' -import { CONFIG } from '@/config' import { apiGet, apiPost } from '@/apis/HttpRequest' import { RIGHTS } from '@/auth/RIGHTS' +import { CONFIG } from '@/config' +import { Context, getUser } from '@/server/context' import { LogError } from '@/server/LogError' @Resolver() diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 65bb3e80d..ab322a50b 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -9,6 +9,9 @@ import { User as DbUser } from '@entity/User' import { Decimal } from 'decimal.js-light' import { Resolver, Args, Arg, Authorized, Ctx, Mutation, Query, Int } from 'type-graphql' +import { Paginated } from '@arg/Paginated' +import { TransactionLinkArgs } from '@arg/TransactionLinkArgs' +import { TransactionLinkFilters } from '@arg/TransactionLinkFilters' import { ContributionCycleType } from '@enum/ContributionCycleType' import { ContributionStatus } from '@enum/ContributionStatus' import { ContributionType } from '@enum/ContributionType' @@ -17,29 +20,26 @@ import { ContributionLink } from '@model/ContributionLink' import { Decay } from '@model/Decay' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { User } from '@model/User' - -import { transactionLinkList } from './util/transactionLinkList' -import { TransactionLinkArgs } from '@arg/TransactionLinkArgs' -import { Paginated } from '@arg/Paginated' -import { TransactionLinkFilters } from '@arg/TransactionLinkFilters' -import { backendLogger as logger } from '@/server/logger' -import { Context, getUser, getClientTimezoneOffset } from '@/server/context' -import { calculateBalance } from '@/util/validate' -import { RIGHTS } from '@/auth/RIGHTS' -import { calculateDecay } from '@/util/decay' import { QueryLinkResult } from '@union/QueryLinkResult' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' -import { LogError } from '@/server/LogError' + +import { RIGHTS } from '@/auth/RIGHTS' import { EVENT_CONTRIBUTION_LINK_REDEEM, EVENT_TRANSACTION_LINK_CREATE, EVENT_TRANSACTION_LINK_DELETE, EVENT_TRANSACTION_LINK_REDEEM, } from '@/event/Events' +import { Context, getUser, getClientTimezoneOffset } from '@/server/context' +import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' +import { calculateDecay } from '@/util/decay' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' +import { calculateBalance } from '@/util/validate' import { executeTransaction } from './TransactionResolver' import { getUserCreation, validateContribution } from './util/creations' import { getLastTransaction } from './util/getLastTransaction' +import { transactionLinkList } from './util/transactionLinkList' // TODO: do not export, test it inside the resolver export const transactionLinkCode = (date: Date): string => { diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 93ffb3861..23c5b6fa6 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -9,6 +9,8 @@ import { User as dbUser } from '@entity/User' import { Decimal } from 'decimal.js-light' import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' +import { Paginated } from '@arg/Paginated' +import { TransactionSendArgs } from '@arg/TransactionSendArgs' import { Order } from '@enum/Order' import { TransactionTypeId } from '@enum/TransactionTypeId' import { Transaction } from '@model/Transaction' @@ -17,19 +19,18 @@ import { User } from '@model/User' import { TransactionRepository } from '@repository/Transaction' import { TransactionLinkRepository } from '@repository/TransactionLink' -import { calculateBalance } from '@/util/validate' -import { TransactionSendArgs } from '@arg/TransactionSendArgs' -import { Paginated } from '@arg/Paginated' - -import { backendLogger as logger } from '@/server/logger' -import { Context, getUser } from '@/server/context' import { RIGHTS } from '@/auth/RIGHTS' import { sendTransactionLinkRedeemedEmail, sendTransactionReceivedEmail, } from '@/emails/sendEmailVariants' import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Events' +import { Context, getUser } from '@/server/context' +import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' import { communityUser } from '@/util/communityUser' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' +import { calculateBalance } from '@/util/validate' import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions' import { BalanceResolver } from './BalanceResolver' @@ -37,9 +38,6 @@ import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { findUserByEmail } from './UserResolver' import { getLastTransaction } from './util/getLastTransaction' -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' -import { LogError } from '@/server/LogError' - export const executeTransaction = async ( amount: Decimal, memo: string, diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 91b0a6ae6..92df7a011 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -20,6 +20,7 @@ import { ContributionLink } from '@model/ContributionLink' import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers' import { logger, i18n as localization } from '@test/testSetup' +import { CONFIG } from '@/config' import { sendAccountActivationEmail, sendAccountMultiRegistrationEmail, @@ -47,10 +48,9 @@ import { } from '@/seeds/graphql/mutations' import { verifyLogin, queryOptIn, searchAdminUsers, searchUsers } from '@/seeds/graphql/queries' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' -import { CONFIG } from '@/config' -import { peterLustig } from '@/seeds/users/peter-lustig' import { bobBaumeister } from '@/seeds/users/bob-baumeister' import { garrickOllivander } from '@/seeds/users/garrick-ollivander' +import { peterLustig } from '@/seeds/users/peter-lustig' import { stephenHawking } from '@/seeds/users/stephen-hawking' import { printTimeDuration } from '@/util/time' import { objectValuesToArray } from '@/util/utilities' diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 8207db272..13ce9c158 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -21,6 +21,11 @@ import { } from 'type-graphql' import { v4 as uuidv4 } from 'uuid' +import { CreateUserArgs } from '@arg/CreateUserArgs' +import { Paginated } from '@arg/Paginated' +import { SearchUsersArgs } from '@arg/SearchUsersArgs' +import { UnsecureLoginArgs } from '@arg/UnsecureLoginArgs' +import { UpdateUserInfosArgs } from '@arg/UpdateUserInfosArgs' import { OptInType } from '@enum/OptInType' import { Order } from '@enum/Order' import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' @@ -33,25 +38,12 @@ import { UserRepository } from '@repository/User' import { klicktippSignIn } from '@/apis/KlicktippController' import { encode } from '@/auth/JWT' import { RIGHTS } from '@/auth/RIGHTS' +import { CONFIG } from '@/config' import { sendAccountActivationEmail, sendAccountMultiRegistrationEmail, sendResetPasswordEmail, } from '@/emails/sendEmailVariants' - -import { getTimeDurationObject, printTimeDuration } from '@/util/time' -import { CreateUserArgs } from '@arg/CreateUserArgs' -import { UnsecureLoginArgs } from '@arg/UnsecureLoginArgs' -import { UpdateUserInfosArgs } from '@arg/UpdateUserInfosArgs' -import { Paginated } from '@arg/Paginated' -import { SearchUsersArgs } from '@arg/SearchUsersArgs' - -import { backendLogger as logger } from '@/server/logger' -import { Context, getUser, getClientTimezoneOffset } from '@/server/context' -import { CONFIG } from '@/config' -import { communityDbUser } from '@/util/communityUser' -import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware' -import { hasElopageBuys } from '@/util/hasElopageBuys' import { Event, EventType, @@ -68,12 +60,18 @@ import { EVENT_ADMIN_USER_DELETE, EVENT_ADMIN_USER_UNDELETE, } from '@/event/Events' +import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware' import { isValidPassword } from '@/password/EncryptorUtils' import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor' +import { Context, getUser, getClientTimezoneOffset } from '@/server/context' +import { LogError } from '@/server/LogError' +import { backendLogger as logger } from '@/server/logger' +import { communityDbUser } from '@/util/communityUser' +import { hasElopageBuys } from '@/util/hasElopageBuys' +import { getTimeDurationObject, printTimeDuration } from '@/util/time' import { FULL_CREATION_AVAILABLE } from './const/const' import { getUserCreations } from './util/creations' -import { LogError } from '@/server/LogError' // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs const random = require('random-bigint') diff --git a/backend/src/graphql/resolver/util/transactionLinkList.ts b/backend/src/graphql/resolver/util/transactionLinkList.ts index 849ef7642..0dba5a400 100644 --- a/backend/src/graphql/resolver/util/transactionLinkList.ts +++ b/backend/src/graphql/resolver/util/transactionLinkList.ts @@ -1,9 +1,10 @@ import { MoreThan } from '@dbTools/typeorm' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { User as DbUser } from '@entity/User' -import { Order } from '@enum/Order' + import { Paginated } from '@arg/Paginated' import { TransactionLinkFilters } from '@arg/TransactionLinkFilters' +import { Order } from '@enum/Order' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { User } from '@/graphql/model/User' diff --git a/backend/src/index.ts b/backend/src/index.ts index 4d34c0ccd..67641bc3c 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,10 +1,9 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { createServer } from './server/createServer' - // config import { CONFIG } from './config' import { startValidateCommunities } from './federation/validateCommunities' +import { createServer } from './server/createServer' async function main() { const { app } = await createServer() diff --git a/backend/src/password/EncryptorUtils.ts b/backend/src/password/EncryptorUtils.ts index e511ec09a..934721baf 100644 --- a/backend/src/password/EncryptorUtils.ts +++ b/backend/src/password/EncryptorUtils.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { User } from '@entity/User' + import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' import { CONFIG } from '@/config' diff --git a/backend/src/seeds/index.ts b/backend/src/seeds/index.ts index 4966ed220..8ca42fc79 100644 --- a/backend/src/seeds/index.ts +++ b/backend/src/seeds/index.ts @@ -9,6 +9,8 @@ import { entities } from '@entity/index' import { createTestClient } from 'apollo-server-testing' import { name, internet, datatype } from 'faker' +import { CONFIG } from '@/config' +import { createServer } from '@/server/createServer' import { backendLogger as logger } from '@/server/logger' import { contributionLinks } from './contributionLink/index' @@ -19,8 +21,6 @@ import { transactionLinkFactory } from './factory/transactionLink' import { userFactory } from './factory/user' import { transactionLinks } from './transactionLink/index' import { users } from './users/index' -import { createServer } from '@/server/createServer' -import { CONFIG } from '@/config' CONFIG.EMAIL = false diff --git a/backend/src/server/LogError.test.ts b/backend/src/server/LogError.test.ts index 389b2e0c1..b013a31ce 100644 --- a/backend/src/server/LogError.test.ts +++ b/backend/src/server/LogError.test.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/unbound-method */ -import { LogError } from './LogError' import { logger } from '@test/testSetup' +import { LogError } from './LogError' describe('LogError', () => { it('logs an Error when created', () => { diff --git a/backend/src/server/context.ts b/backend/src/server/context.ts index 36cd6939f..a52c979e3 100644 --- a/backend/src/server/context.ts +++ b/backend/src/server/context.ts @@ -3,10 +3,9 @@ import { User as dbUser } from '@entity/User' import { ExpressContext } from 'apollo-server-express' import { Decimal } from 'decimal.js-light' -import { LogError } from './LogError' - import { Role } from '@/auth/Role' +import { LogError } from './LogError' export interface Context { token: string | null diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 234be797c..777d6dfbe 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -5,17 +5,19 @@ import { Connection } from '@dbTools/typeorm' import { ApolloServer } from 'apollo-server-express' import express, { Express, json, urlencoded } from 'express' import { Logger } from 'log4js' -import { checkDBVersion } from '@/typeorm/DBVersion' -import { cors } from './cors' -import { context as serverContext } from './context' -import { plugins } from './plugins' -import { apolloLogger } from './logger' -import { i18n } from './localization' -import { connection } from '@/typeorm/connection' + import { CONFIG } from '@/config' import { schema } from '@/graphql/schema' +import { connection } from '@/typeorm/connection' +import { checkDBVersion } from '@/typeorm/DBVersion' import { elopageWebhook } from '@/webhook/elopage' +import { context as serverContext } from './context' +import { cors } from './cors' +import { i18n } from './localization' +import { apolloLogger } from './logger' +import { plugins } from './plugins' + // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; diff --git a/backend/src/typeorm/connection.ts b/backend/src/typeorm/connection.ts index faf0f66cc..7dec820b5 100644 --- a/backend/src/typeorm/connection.ts +++ b/backend/src/typeorm/connection.ts @@ -2,6 +2,7 @@ // We cannot use our connection here, but must use the external typeorm installation import { Connection, createConnection, FileLogger } from '@dbTools/typeorm' import { entities } from '@entity/index' + import { CONFIG } from '@/config' export const connection = async (): Promise => { diff --git a/backend/src/util/decay.ts b/backend/src/util/decay.ts index c870fa68a..1d1775cc9 100644 --- a/backend/src/util/decay.ts +++ b/backend/src/util/decay.ts @@ -1,6 +1,8 @@ import { Decimal } from 'decimal.js-light' -import { CONFIG } from '@/config' + import { Decay } from '@model/Decay' + +import { CONFIG } from '@/config' import { LogError } from '@/server/LogError' // TODO: externalize all those definitions and functions into an external decay library diff --git a/backend/src/util/klicktipp.ts b/backend/src/util/klicktipp.ts index 0d09d32a2..e34a9c384 100644 --- a/backend/src/util/klicktipp.ts +++ b/backend/src/util/klicktipp.ts @@ -1,7 +1,8 @@ import { User } from '@entity/User' -import { connection } from '@/typeorm/connection' + import { getKlickTippUser } from '@/apis/KlicktippController' import { LogError } from '@/server/LogError' +import { connection } from '@/typeorm/connection' export async function retrieveNotRegisteredEmails(): Promise { const con = await connection() diff --git a/backend/test/helpers.ts b/backend/test/helpers.ts index dffc93f57..bd67a47d5 100644 --- a/backend/test/helpers.ts +++ b/backend/test/helpers.ts @@ -10,9 +10,10 @@ import { initialize } from '@dbTools/helpers' import { entities } from '@entity/index' import { createTestClient } from 'apollo-server-testing' -import { i18n, logger } from './testSetup' import { createServer } from '@/server/createServer' +import { i18n, logger } from './testSetup' + export const headerPushMock = jest.fn((t) => { context.token = t.value }) diff --git a/backend/test/testSetup.ts b/backend/test/testSetup.ts index 305de6b1c..12bd25d64 100644 --- a/backend/test/testSetup.ts +++ b/backend/test/testSetup.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ import { CONFIG } from '@/config' -import { backendLogger as logger } from '@/server/logger' import { i18n } from '@/server/localization' +import { backendLogger as logger } from '@/server/logger' CONFIG.EMAIL = true CONFIG.EMAIL_TEST_MODUS = false From bd9442169d236430025d04867069e4658a263a75 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 5 Apr 2023 03:22:36 +0200 Subject: [PATCH 05/12] properly resolve all paths --- backend/.eslintrc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 4aa367a85..d20120a25 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -160,8 +160,8 @@ module.exports = { 'import/unambiguous': 'off', }, parserOptions: { - tsconfigRootDir: './', - project: ['./tsconfig.json'], + tsconfigRootDir: '**/', + project: ['**/tsconfig.json'], // this is to properly reference the referenced project database without requirement of compiling it EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, }, From 46d76c26ab0d80dea279c9214e075d5dc5c96c45 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 5 Apr 2023 03:22:46 +0200 Subject: [PATCH 06/12] update related packages --- backend/package.json | 6 +- backend/yarn.lock | 128 +++++++++++++++++++++++++++++-------------- 2 files changed, 91 insertions(+), 43 deletions(-) diff --git a/backend/package.json b/backend/package.json index d7c2f2aed..a0252ea57 100644 --- a/backend/package.json +++ b/backend/package.json @@ -56,13 +56,13 @@ "@types/node": "^16.10.3", "@types/nodemailer": "^6.4.4", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", "apollo-server-testing": "^2.25.2", "eslint": "^8.36.0", "eslint-config-prettier": "^8.3.0", "eslint-config-standard": "^17.0.0", - "eslint-import-resolver-typescript": "^3.5.3", + "eslint-import-resolver-typescript": "^3.5.4", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-n": "^15.6.1", diff --git a/backend/yarn.lock b/backend/yarn.lock index c01d96b1f..67779e84f 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -1219,19 +1219,19 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== -"@typescript-eslint/eslint-plugin@^5.54.1": - version "5.54.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.1.tgz#0c5091289ce28372e38ab8d28e861d2dbe1ab29e" - integrity sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew== +"@typescript-eslint/eslint-plugin@^5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz#d1ab162a3cd2671b8a1c9ddf6e2db73b14439735" + integrity sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ== dependencies: - "@typescript-eslint/scope-manager" "5.54.1" - "@typescript-eslint/type-utils" "5.54.1" - "@typescript-eslint/utils" "5.54.1" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.57.1" + "@typescript-eslint/type-utils" "5.57.1" + "@typescript-eslint/utils" "5.57.1" debug "^4.3.4" grapheme-splitter "^1.0.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" - regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" @@ -1242,14 +1242,14 @@ dependencies: "@typescript-eslint/utils" "5.53.0" -"@typescript-eslint/parser@^5.54.1": - version "5.54.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.1.tgz#05761d7f777ef1c37c971d3af6631715099b084c" - integrity sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg== +"@typescript-eslint/parser@^5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.1.tgz#af911234bd4401d09668c5faf708a0570a17a748" + integrity sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA== dependencies: - "@typescript-eslint/scope-manager" "5.54.1" - "@typescript-eslint/types" "5.54.1" - "@typescript-eslint/typescript-estree" "5.54.1" + "@typescript-eslint/scope-manager" "5.57.1" + "@typescript-eslint/types" "5.57.1" + "@typescript-eslint/typescript-estree" "5.57.1" debug "^4.3.4" "@typescript-eslint/scope-manager@5.53.0": @@ -1268,13 +1268,21 @@ "@typescript-eslint/types" "5.54.1" "@typescript-eslint/visitor-keys" "5.54.1" -"@typescript-eslint/type-utils@5.54.1": - version "5.54.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.54.1.tgz#4825918ec27e55da8bb99cd07ec2a8e5f50ab748" - integrity sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g== +"@typescript-eslint/scope-manager@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz#5d28799c0fc8b501a29ba1749d827800ef22d710" + integrity sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw== dependencies: - "@typescript-eslint/typescript-estree" "5.54.1" - "@typescript-eslint/utils" "5.54.1" + "@typescript-eslint/types" "5.57.1" + "@typescript-eslint/visitor-keys" "5.57.1" + +"@typescript-eslint/type-utils@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz#235daba621d3f882b8488040597b33777c74bbe9" + integrity sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw== + dependencies: + "@typescript-eslint/typescript-estree" "5.57.1" + "@typescript-eslint/utils" "5.57.1" debug "^4.3.4" tsutils "^3.21.0" @@ -1288,6 +1296,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.1.tgz#29fbac29a716d0f08c62fe5de70c9b6735de215c" integrity sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw== +"@typescript-eslint/types@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.1.tgz#d9989c7a9025897ea6f0550b7036027f69e8a603" + integrity sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA== + "@typescript-eslint/typescript-estree@5.53.0": version "5.53.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz#bc651dc28cf18ab248ecd18a4c886c744aebd690" @@ -1314,6 +1327,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz#10d9643e503afc1ca4f5553d9bbe672ea4050b71" + integrity sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw== + dependencies: + "@typescript-eslint/types" "5.57.1" + "@typescript-eslint/visitor-keys" "5.57.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.53.0": version "5.53.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.53.0.tgz#e55eaad9d6fffa120575ffaa530c7e802f13bce8" @@ -1328,7 +1354,21 @@ eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/utils@5.54.1", "@typescript-eslint/utils@^5.10.0": +"@typescript-eslint/utils@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.1.tgz#0f97b0bbd88c2d5e2036869f26466be5f4c69475" + integrity sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.57.1" + "@typescript-eslint/types" "5.57.1" + "@typescript-eslint/typescript-estree" "5.57.1" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/utils@^5.10.0": version "5.54.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.1.tgz#7a3ee47409285387b9d4609ea7e1020d1797ec34" integrity sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ== @@ -1358,6 +1398,14 @@ "@typescript-eslint/types" "5.54.1" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.57.1": + version "5.57.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz#585e5fa42a9bbcd9065f334fd7c8a4ddfa7d905e" + integrity sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA== + dependencies: + "@typescript-eslint/types" "5.57.1" + eslint-visitor-keys "^3.3.0" + "@wry/equality@^0.1.2": version "0.1.11" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" @@ -2701,7 +2749,7 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^5.10.0: +enhanced-resolve@^5.12.0: version "5.12.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== @@ -2875,18 +2923,18 @@ eslint-import-resolver-node@^0.3.7: is-core-module "^2.11.0" resolve "^1.22.1" -eslint-import-resolver-typescript@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz#db5ed9e906651b7a59dd84870aaef0e78c663a05" - integrity sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ== +eslint-import-resolver-typescript@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.4.tgz#7370c326c3c08f0c1839c592d79d20b704de15d4" + integrity sha512-9xUpnedEmSfG57sN1UvWPiEhfJ8bPt0Wg2XysA7Mlc79iFGhmJtRUg9LxtkK81FhMUui0YuR2E8iUsVhePkh4A== dependencies: debug "^4.3.4" - enhanced-resolve "^5.10.0" - get-tsconfig "^4.2.0" - globby "^13.1.2" - is-core-module "^2.10.0" + enhanced-resolve "^5.12.0" + get-tsconfig "^4.5.0" + globby "^13.1.3" + is-core-module "^2.11.0" is-glob "^4.0.3" - synckit "^0.8.4" + synckit "^0.8.5" eslint-module-utils@^2.7.4: version "2.7.4" @@ -3471,10 +3519,10 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-tsconfig@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5" - integrity sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ== +get-tsconfig@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.5.0.tgz#6d52d1c7b299bd3ee9cd7638561653399ac77b0f" + integrity sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -3545,7 +3593,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.2: +globby@^13.1.3: version "13.1.3" resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== @@ -4061,7 +4109,7 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" -is-core-module@^2.10.0, is-core-module@^2.11.0: +is-core-module@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== @@ -6096,7 +6144,7 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.0.0, regexpp@^3.2.0: +regexpp@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -6617,7 +6665,7 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -synckit@^0.8.4: +synckit@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== From faf6881ffb998ee015bc2b1866d897be5412c707 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 5 Apr 2023 03:35:49 +0200 Subject: [PATCH 07/12] things resolve correctly --- backend/.eslintrc.js | 10 ++++-- backend/package.json | 10 +++--- backend/yarn.lock | 81 +++++++++++++++++++++++--------------------- 3 files changed, 55 insertions(+), 46 deletions(-) diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index d20120a25..2ab8797c8 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -18,8 +18,12 @@ module.exports = { '@typescript-eslint/parser': ['.ts', '.tsx'], }, 'import/resolver': { - typescript: true, - node: true, + typescript: { + project: ['tsconfig.json', 'backend/tsconfig.json'], + }, + node: { + project: ['tsconfig.json', 'backend/tsconfig.json'], + }, }, }, rules: { @@ -160,7 +164,7 @@ module.exports = { 'import/unambiguous': 'off', }, parserOptions: { - tsconfigRootDir: '**/', + tsconfigRootDir: './', project: ['**/tsconfig.json'], // this is to properly reference the referenced project database without requirement of compiling it EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, diff --git a/backend/package.json b/backend/package.json index a0252ea57..1457f97e5 100644 --- a/backend/package.json +++ b/backend/package.json @@ -59,14 +59,14 @@ "@typescript-eslint/eslint-plugin": "^5.57.1", "@typescript-eslint/parser": "^5.57.1", "apollo-server-testing": "^2.25.2", - "eslint": "^8.36.0", - "eslint-config-prettier": "^8.3.0", + "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.6.1", - "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-type-graphql": "^1.0.0", "faker": "^5.5.3", @@ -74,7 +74,7 @@ "jest": "^27.2.4", "klicktipp-api": "^1.0.2", "nodemon": "^2.0.7", - "prettier": "^2.3.1", + "prettier": "^2.8.7", "ts-jest": "^27.0.5", "ts-node": "^10.0.0", "tsconfig-paths": "^3.14.0", diff --git a/backend/yarn.lock b/backend/yarn.lock index 67779e84f..1bc8c64fd 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -394,14 +394,14 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403" integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ== -"@eslint/eslintrc@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" - integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== +"@eslint/eslintrc@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" + integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.0" + espree "^9.5.1" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -409,10 +409,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.36.0": - version "8.36.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" - integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== +"@eslint/js@8.37.0": + version "8.37.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" + integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== "@graphql-typed-document-node/core@^3.1.1": version "3.1.1" @@ -2904,10 +2904,10 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== +eslint-config-prettier@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== eslint-config-standard@^17.0.0: version "17.0.0" @@ -2979,10 +2979,10 @@ eslint-plugin-jest@^27.2.1: dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-n@^15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz#f7e77f24abb92a550115cf11e29695da122c398c" - integrity sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA== +eslint-plugin-n@^15.7.0: + version "15.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90" + integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q== dependencies: builtins "^5.0.1" eslint-plugin-es "^4.1.0" @@ -2993,10 +2993,10 @@ eslint-plugin-n@^15.6.1: resolve "^1.22.1" semver "^7.3.8" -eslint-plugin-prettier@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -3057,15 +3057,20 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.36.0: - version "8.36.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" - integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== +eslint-visitor-keys@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== + +eslint@^8.37.0: + version "8.37.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" + integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.1" - "@eslint/js" "8.36.0" + "@eslint/eslintrc" "^2.0.2" + "@eslint/js" "8.37.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -3076,8 +3081,8 @@ eslint@^8.36.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.5.0" + eslint-visitor-keys "^3.4.0" + espree "^9.5.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -3103,14 +3108,14 @@ eslint@^8.36.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" - integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== +espree@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" + integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -5847,10 +5852,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.3.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== +prettier@^2.8.7: + version "2.8.7" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== pretty-format@^27.0.0, pretty-format@^27.2.5: version "27.2.5" From 84bd3aca6a179643b22b4b60cca51baf442cb74e Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 5 Apr 2023 03:38:32 +0200 Subject: [PATCH 08/12] use ** glob pattern --- backend/.eslintrc.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 2ab8797c8..7c1fa8c93 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -19,11 +19,9 @@ module.exports = { }, 'import/resolver': { typescript: { - project: ['tsconfig.json', 'backend/tsconfig.json'], - }, - node: { - project: ['tsconfig.json', 'backend/tsconfig.json'], + project: ['**/tsconfig.json'], }, + node: true, }, }, rules: { From 8d8900c463be95c09d90dfb2c60ce19c882757f3 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 6 Apr 2023 13:39:04 +0200 Subject: [PATCH 09/12] fix eslint.rc --- backend/.eslintrc.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 4c8bb8707..9021fcc30 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -19,7 +19,7 @@ module.exports = { }, 'import/resolver': { typescript: { - project: ['**/tsconfig.json'], + project: ['./tsconfig.json', '**/tsconfig.json'], }, node: true, }, @@ -162,8 +162,8 @@ module.exports = { 'import/unambiguous': 'off', }, parserOptions: { - tsconfigRootDir: './', - project: ['**/tsconfig.json'], + tsconfigRootDir: __dirname, + project: ['./tsconfig.json', '**/tsconfig.json'], // this is to properly reference the referenced project database without requirement of compiling it EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, }, From f2ad6cc24ab99c7bc95db96fdf1283ac016d360c Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 6 Apr 2023 14:10:46 +0200 Subject: [PATCH 10/12] fix merge problem --- backend/src/graphql/resolver/util/findUserByIdentifier.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/util/findUserByIdentifier.ts b/backend/src/graphql/resolver/util/findUserByIdentifier.ts index a96fd1451..df932e544 100644 --- a/backend/src/graphql/resolver/util/findUserByIdentifier.ts +++ b/backend/src/graphql/resolver/util/findUserByIdentifier.ts @@ -2,7 +2,7 @@ import { User as DbUser } from '@entity/User' import { UserContact as DbUserContact } from '@entity/UserContact' import { validate, version } from 'uuid' -import LogError from '@/server/LogError' +import { LogError } from '@/server/LogError' export const findUserByIdentifier = async (identifier: string): Promise => { let user: DbUser | undefined From e4fc4438fb3defa32a8bd7f228c3df0135cf67f5 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 6 Apr 2023 14:20:41 +0200 Subject: [PATCH 11/12] removed obsolete comment --- backend/src/graphql/resolver/ContributionLinkResolver.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.ts b/backend/src/graphql/resolver/ContributionLinkResolver.ts index 069656ff3..1dcf6a3cb 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.ts @@ -27,8 +27,6 @@ import { import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver' import { isStartEndDateValid } from './util/creations' -// TODO: this is a strange construct - @Resolver() export class ContributionLinkResolver { @Authorized([RIGHTS.CREATE_CONTRIBUTION_LINK]) From 27a89a2734b6ca83cafd590eebc89980e2b84214 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 6 Apr 2023 14:21:26 +0200 Subject: [PATCH 12/12] removed obsolete comment --- backend/src/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index d5d0eafee..b522e1ff5 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,6 +1,4 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ - -// config import { CONFIG } from './config' import { startValidateCommunities } from './federation/validateCommunities' import { createServer } from './server/createServer'