This commit is contained in:
Ulf Gebhardt 2023-03-31 12:48:09 +02:00
parent 1fa6d3e469
commit ae8405e8f6
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
60 changed files with 167 additions and 189 deletions

View File

@ -71,7 +71,7 @@ module.exports = {
'import/group-exports': 'off', 'import/group-exports': 'off',
'import/newline-after-import': 'error', 'import/newline-after-import': 'error',
'import/no-anonymous-default-export': 'error', 'import/no-anonymous-default-export': 'error',
'import/no-default-export': 'off', 'import/no-default-export': 'error',
'import/no-duplicates': 'error', 'import/no-duplicates': 'error',
'import/no-named-default': 'error', 'import/no-named-default': 'error',
'import/no-namespace': 'error', 'import/no-namespace': 'error',
@ -100,7 +100,7 @@ module.exports = {
distinctGroup: true, distinctGroup: true,
}, },
], ],
'import/prefer-default-export': 'off', // TODO 'import/prefer-default-export': 'off',
}, },
overrides: [ overrides: [
// only for ts files // only for ts files

View File

@ -2,8 +2,8 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
import axios from 'axios' import axios from 'axios'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { LogError } from '@/server/LogError'
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
export const apiPost = async (url: string, payload: unknown): Promise<any> => { export const apiPost = async (url: string, payload: unknown): Promise<any> => {

View File

@ -4,11 +4,12 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import CONFIG from '@/config'
// eslint-disable-next-line import/no-relative-parent-imports // eslint-disable-next-line import/no-relative-parent-imports
import KlicktippConnector from 'klicktipp-api' import KlicktippConnector from 'klicktipp-api'
import { CONFIG } from '@/config'
const klicktippConnector = new KlicktippConnector() const klicktippConnector = new KlicktippConnector()
export const klicktippSignIn = async ( export const klicktippSignIn = async (

View File

@ -1,7 +1,7 @@
import { verify, sign } from 'jsonwebtoken' import { verify, sign } from 'jsonwebtoken'
import CONFIG from '@/config/' import { CONFIG } from '@/config/'
import LogError from '@/server/LogError' import { LogError } from '@/server/LogError'
import { CustomJwtPayload } from './CustomJwtPayload' import { CustomJwtPayload } from './CustomJwtPayload'

View File

@ -1,4 +1,4 @@
import CONFIG from './index' import { CONFIG } from './index'
describe('config/index', () => { describe('config/index', () => {
describe('decay start block', () => { describe('decay start block', () => {

View File

@ -120,7 +120,7 @@ const federation = {
Number(process.env.FEDERATION_VALIDATE_COMMUNITY_TIMER) || 60000, Number(process.env.FEDERATION_VALIDATE_COMMUNITY_TIMER) || 60000,
} }
const CONFIG = { export const CONFIG = {
...constants, ...constants,
...server, ...server,
...database, ...database,
@ -131,5 +131,3 @@ const CONFIG = {
...webhook, ...webhook,
...federation, ...federation,
} }
export default CONFIG

View File

@ -4,7 +4,7 @@ import { createTransport } from 'nodemailer'
import { logger, i18n } from '@test/testSetup' import { logger, i18n } from '@test/testSetup'
import CONFIG from '@/config' import { CONFIG } from '@/config'
import { sendEmailTranslated } from './sendEmailTranslated' import { sendEmailTranslated } from './sendEmailTranslated'

View File

@ -5,9 +5,9 @@ import Email from 'email-templates'
import i18n from 'i18n' import i18n from 'i18n'
import { createTransport } from 'nodemailer' import { createTransport } from 'nodemailer'
import CONFIG from '@/config'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { CONFIG } from '@/config'
import { LogError } from '@/server/LogError'
export const sendEmailTranslated = async (params: { export const sendEmailTranslated = async (params: {
receiver: { receiver: {

View File

@ -5,12 +5,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { Decimal } from 'decimal.js-light' 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 { import {
sendAddedContributionMessageEmail, sendAddedContributionMessageEmail,
sendAccountActivationEmail, sendAccountActivationEmail,
@ -23,6 +17,11 @@ import {
sendTransactionReceivedEmail, sendTransactionReceivedEmail,
} from './sendEmailVariants' } 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 con: any
let testEnv: any let testEnv: any

View File

@ -1,9 +1,8 @@
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import CONFIG from '@/config'
import { decimalSeparatorByLanguage } from '@/util/utilities'
import { sendEmailTranslated } from './sendEmailTranslated' import { sendEmailTranslated } from './sendEmailTranslated'
import { CONFIG } from '@/config'
import { decimalSeparatorByLanguage } from '@/util/utilities'
export const sendAddedContributionMessageEmail = (data: { export const sendAddedContributionMessageEmail = (data: {
firstName: string firstName: string

View File

@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community'
import { gql } from 'graphql-request' import { gql } from 'graphql-request'
import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { LogError } from '@/server/LogError'
export async function requestGetPublicKey(dbCom: DbCommunity): Promise<string | undefined> { export async function requestGetPublicKey(dbCom: DbCommunity): Promise<string | undefined> {
let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/'

View File

@ -5,8 +5,8 @@ import { Community as DbCommunity } from '@entity/Community'
import { gql } from 'graphql-request' import { gql } from 'graphql-request'
import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient' import { GraphQLGetClient } from '@/federation/client/GraphQLGetClient'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { LogError } from '@/server/LogError'
export async function requestGetPublicKey(dbCom: DbCommunity): Promise<string | undefined> { export async function requestGetPublicKey(dbCom: DbCommunity): Promise<string | undefined> {
let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/'

View File

@ -1,14 +1,13 @@
import { IsNull } from '@dbTools/typeorm' import { IsNull } from '@dbTools/typeorm'
import { Community as DbCommunity } from '@entity/Community' import { Community as DbCommunity } from '@entity/Community'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger'
// eslint-disable-next-line camelcase // eslint-disable-next-line camelcase
import { requestGetPublicKey as v1_0_requestGetPublicKey } from './client/1_0/FederationClient' import { requestGetPublicKey as v1_0_requestGetPublicKey } from './client/1_0/FederationClient'
// eslint-disable-next-line camelcase // eslint-disable-next-line camelcase
import { requestGetPublicKey as v1_1_requestGetPublicKey } from './client/1_1/FederationClient' import { requestGetPublicKey as v1_1_requestGetPublicKey } from './client/1_1/FederationClient'
import { ApiVersionType } from './enum/apiVersionType' import { ApiVersionType } from './enum/apiVersionType'
import { backendLogger as logger } from '@/server/logger'
import { LogError } from '@/server/LogError'
export function startValidateCommunities(timerInterval: number): void { export function startValidateCommunities(timerInterval: number): void {
logger.info( logger.info(

View File

@ -3,7 +3,7 @@ import { ArgsType, Field, InputType } from 'type-graphql'
@InputType() @InputType()
@ArgsType() @ArgsType()
export default class AdminCreateContributionArgs { export class AdminCreateContributionArgs {
@Field(() => String) @Field(() => String)
email: string email: string

View File

@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light'
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType() @ArgsType()
export default class AdminUpdateContributionArgs { export class AdminUpdateContributionArgs {
@Field(() => Int) @Field(() => Int)
id: number id: number

View File

@ -3,7 +3,7 @@ import { ArgsType, Field, InputType } from 'type-graphql'
@InputType() @InputType()
@ArgsType() @ArgsType()
export default class ContributionArgs { export class ContributionArgs {
@Field(() => Decimal) @Field(() => Decimal)
amount: Decimal amount: Decimal

View File

@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light'
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType() @ArgsType()
export default class ContributionLinkArgs { export class ContributionLinkArgs {
@Field(() => Decimal) @Field(() => Decimal)
amount: Decimal amount: Decimal

View File

@ -2,7 +2,7 @@ import { ArgsType, Field, Int, InputType } from 'type-graphql'
@InputType() @InputType()
@ArgsType() @ArgsType()
export default class ContributionMessageArgs { export class ContributionMessageArgs {
@Field(() => Int) @Field(() => Int)
contributionId: number contributionId: number

View File

@ -1,7 +1,7 @@
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType() @ArgsType()
export default class CreateUserArgs { export class CreateUserArgs {
@Field(() => String) @Field(() => String)
email: string email: string

View File

@ -4,7 +4,7 @@ import { ArgsType, Field, Int } from 'type-graphql'
import { Order } from '@enum/Order' import { Order } from '@enum/Order'
@ArgsType() @ArgsType()
export default class Paginated { export class Paginated {
@Field(() => Int, { nullable: true }) @Field(() => Int, { nullable: true })
currentPage?: number currentPage?: number

View File

@ -1,9 +1,9 @@
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
import SearchUsersFilters from '@arg/SearchUsersFilters' import { SearchUsersFilters } from '@arg/SearchUsersFilters'
@ArgsType() @ArgsType()
export default class SearchUsersArgs { export class SearchUsersArgs {
@Field(() => String) @Field(() => String)
searchText: string searchText: string

View File

@ -1,7 +1,7 @@
import { Field, InputType } from 'type-graphql' import { Field, InputType } from 'type-graphql'
@InputType() @InputType()
export default class SearchUsersFilters { export class SearchUsersFilters {
@Field(() => Boolean, { nullable: true, defaultValue: null }) @Field(() => Boolean, { nullable: true, defaultValue: null })
byActivated?: boolean | null byActivated?: boolean | null

View File

@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light'
import { ArgsType, Field } from 'type-graphql' import { ArgsType, Field } from 'type-graphql'
@ArgsType() @ArgsType()
export default class TransactionLinkArgs { export class TransactionLinkArgs {
@Field(() => Decimal) @Field(() => Decimal)
amount: Decimal amount: Decimal

View File

@ -2,7 +2,7 @@
import { Field, InputType } from 'type-graphql' import { Field, InputType } from 'type-graphql'
@InputType() @InputType()
export default class TransactionLinkFilters { export class TransactionLinkFilters {
@Field(() => Boolean, { nullable: true }) @Field(() => Boolean, { nullable: true })
withDeleted?: boolean withDeleted?: boolean

View File

@ -2,7 +2,7 @@ import { Decimal } from 'decimal.js-light'
import { ArgsType, Field } from 'type-graphql' import { ArgsType, Field } from 'type-graphql'
@ArgsType() @ArgsType()
export default class TransactionSendArgs { export class TransactionSendArgs {
@Field(() => String) @Field(() => String)
email: string email: string

View File

@ -1,7 +1,7 @@
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType() @ArgsType()
export default class UnsecureLoginArgs { export class UnsecureLoginArgs {
@Field(() => String) @Field(() => String)
email: string email: string

View File

@ -1,7 +1,7 @@
import { ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
@ArgsType() @ArgsType()
export default class UpdateUserInfosArgs { export class UpdateUserInfosArgs {
@Field({ nullable: true }) @Field({ nullable: true })
firstName?: string firstName?: string

View File

@ -9,9 +9,9 @@ import { INALIENABLE_RIGHTS } from '@/auth/INALIENABLE_RIGHTS'
import { decode, encode } from '@/auth/JWT' import { decode, encode } from '@/auth/JWT'
import { RIGHTS } from '@/auth/RIGHTS' import { RIGHTS } from '@/auth/RIGHTS'
import { ROLE_UNAUTHORIZED, ROLE_USER, ROLE_ADMIN } from '@/auth/ROLES' import { ROLE_UNAUTHORIZED, ROLE_USER, ROLE_ADMIN } from '@/auth/ROLES'
import LogError from '@/server/LogError' import { LogError } from '@/server/LogError'
const isAuthorized: AuthChecker<any> = async ({ context }, rights) => { export const isAuthorized: AuthChecker<any> = async ({ context }, rights) => {
context.role = ROLE_UNAUTHORIZED // unauthorized user context.role = ROLE_UNAUTHORIZED // unauthorized user
// is rights an inalienable right? // is rights an inalienable right?
@ -55,5 +55,3 @@ const isAuthorized: AuthChecker<any> = async ({ context }, rights) => {
context.setHeaders.push({ key: 'token', value: encode(decoded.gradidoID) }) context.setHeaders.push({ key: 'token', value: encode(decoded.gradidoID) })
return true return true
} }
export default isAuthorized

View File

@ -2,7 +2,7 @@ import { ContributionLink as dbContributionLink } from '@entity/ContributionLink
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { ObjectType, Field, Int } from 'type-graphql' import { ObjectType, Field, Int } from 'type-graphql'
import CONFIG from '@/config' import { CONFIG } from '@/config'
@ObjectType() @ObjectType()
export class ContributionLink { export class ContributionLink {

View File

@ -1,8 +1,9 @@
import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink'
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { ObjectType, Field, Int } from 'type-graphql' import { ObjectType, Field, Int } from 'type-graphql'
import CONFIG from '@/config' import { CONFIG } from '@/config'
import { User } from './User' import { User } from './User'

View File

@ -3,22 +3,6 @@ import { ContributionLink as DbContributionLink } from '@entity/ContributionLink
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { Resolver, Args, Arg, Authorized, Mutation, Query, Int, Ctx } from 'type-graphql' 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 { import {
CONTRIBUTIONLINK_NAME_MAX_CHARS, CONTRIBUTIONLINK_NAME_MAX_CHARS,
CONTRIBUTIONLINK_NAME_MIN_CHARS, CONTRIBUTIONLINK_NAME_MIN_CHARS,
@ -27,6 +11,21 @@ import {
} from './const/const' } from './const/const'
import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver' import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver'
import { isStartEndDateValid } from './util/creations' 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() @Resolver()
export class ContributionLinkResolver { export class ContributionLinkResolver {

View File

@ -6,21 +6,21 @@ import { User as DbUser } from '@entity/User'
import { UserContact as DbUserContact } from '@entity/UserContact' import { UserContact as DbUserContact } from '@entity/UserContact'
import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' 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 { 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 { RIGHTS } from '@/auth/RIGHTS'
import { sendAddedContributionMessageEmail } from '@/emails/sendEmailVariants' import { sendAddedContributionMessageEmail } from '@/emails/sendEmailVariants'
import { LogError } from '@/server/LogError'
import { import {
EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE, EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE,
EVENT_CONTRIBUTION_MESSAGE_CREATE, EVENT_CONTRIBUTION_MESSAGE_CREATE,
} from '@/event/Events' } from '@/event/Events'
import { Context, getUser } from '@/server/context' import { Context, getUser } from '@/server/context'
import LogError from '@/server/LogError'
@Resolver() @Resolver()
export class ContributionMessageResolver { export class ContributionMessageResolver {

View File

@ -8,27 +8,22 @@ import { UserContact } from '@entity/UserContact'
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' 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 { AdminUpdateContribution } from '@model/AdminUpdateContribution'
import { Contribution, ContributionListResult } from '@model/Contribution' import { Contribution, ContributionListResult } from '@model/Contribution'
import { Decay } from '@model/Decay' import { Decay } from '@model/Decay'
import { OpenCreation } from '@model/OpenCreation' import { OpenCreation } from '@model/OpenCreation'
import { UnconfirmedContribution } from '@model/UnconfirmedContribution' 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 { RIGHTS } from '@/auth/RIGHTS'
import {
sendContributionConfirmedEmail,
sendContributionDeletedEmail,
sendContributionDeniedEmail,
} from '@/emails/sendEmailVariants'
import { import {
EVENT_CONTRIBUTION_CREATE, EVENT_CONTRIBUTION_CREATE,
EVENT_CONTRIBUTION_DELETE, EVENT_CONTRIBUTION_DELETE,
@ -40,10 +35,7 @@ import {
EVENT_ADMIN_CONTRIBUTION_DENY, EVENT_ADMIN_CONTRIBUTION_DENY,
} from '@/event/Events' } from '@/event/Events'
import { Context, getUser, getClientTimezoneOffset } from '@/server/context' import { Context, getUser, getClientTimezoneOffset } from '@/server/context'
import LogError from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' 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 { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const'
import { import {
@ -55,6 +47,14 @@ import {
} from './util/creations' } from './util/creations'
import { findContributions } from './util/findContributions' import { findContributions } from './util/findContributions'
import { getLastTransaction } from './util/getLastTransaction' 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() @Resolver()
export class ContributionResolver { export class ContributionResolver {

View File

@ -9,9 +9,9 @@ import { GraphQLError } from 'graphql'
import { testEnvironment, cleanDB } from '@test/helpers' import { testEnvironment, cleanDB } from '@test/helpers'
import CONFIG from '@/config'
import { createUser, setPassword, forgotPassword } from '@/seeds/graphql/mutations' import { createUser, setPassword, forgotPassword } from '@/seeds/graphql/mutations'
import { queryOptIn } from '@/seeds/graphql/queries' import { queryOptIn } from '@/seeds/graphql/queries'
import { CONFIG } from '@/config'
let mutate: any, query: any, con: any let mutate: any, query: any, con: any
let testEnv: any let testEnv: any

View File

@ -3,15 +3,15 @@
/* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-return */
import { Resolver, Query, Args, Ctx, Authorized, Arg, Int, Float } from 'type-graphql' 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 { 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 { apiGet, apiPost } from '@/apis/HttpRequest'
import { RIGHTS } from '@/auth/RIGHTS' import { RIGHTS } from '@/auth/RIGHTS'
import CONFIG from '@/config' import { LogError } from '@/server/LogError'
import { Context, getUser } from '@/server/context'
import LogError from '@/server/LogError'
@Resolver() @Resolver()
export class GdtResolver { export class GdtResolver {

View File

@ -9,9 +9,6 @@ import { User as DbUser } from '@entity/User'
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { Resolver, Args, Arg, Authorized, Ctx, Mutation, Query, Int } from 'type-graphql' 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 { ContributionCycleType } from '@enum/ContributionCycleType'
import { ContributionStatus } from '@enum/ContributionStatus' import { ContributionStatus } from '@enum/ContributionStatus'
import { ContributionType } from '@enum/ContributionType' import { ContributionType } from '@enum/ContributionType'
@ -20,26 +17,28 @@ import { ContributionLink } from '@model/ContributionLink'
import { Decay } from '@model/Decay' import { Decay } from '@model/Decay'
import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink'
import { User } from '@model/User' 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 { RIGHTS } from '@/auth/RIGHTS'
import { calculateDecay } from '@/util/decay'
import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK'
import { LogError } from '@/server/LogError'
import { import {
EVENT_CONTRIBUTION_LINK_REDEEM, EVENT_CONTRIBUTION_LINK_REDEEM,
EVENT_TRANSACTION_LINK_CREATE, EVENT_TRANSACTION_LINK_CREATE,
EVENT_TRANSACTION_LINK_DELETE, EVENT_TRANSACTION_LINK_DELETE,
EVENT_TRANSACTION_LINK_REDEEM, EVENT_TRANSACTION_LINK_REDEEM,
} from '@/event/Events' } 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 { executeTransaction } from './TransactionResolver'
import { getUserCreation, validateContribution } from './util/creations' import { getUserCreation, validateContribution } from './util/creations'
import { getLastTransaction } from './util/getLastTransaction' import { getLastTransaction } from './util/getLastTransaction'
import transactionLinkList from './util/transactionLinkList'
// TODO: do not export, test it inside the resolver // TODO: do not export, test it inside the resolver
export const transactionLinkCode = (date: Date): string => { export const transactionLinkCode = (date: Date): string => {

View File

@ -9,8 +9,6 @@ import { User as dbUser } from '@entity/User'
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' 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 { Order } from '@enum/Order'
import { TransactionTypeId } from '@enum/TransactionTypeId' import { TransactionTypeId } from '@enum/TransactionTypeId'
import { Transaction } from '@model/Transaction' import { Transaction } from '@model/Transaction'
@ -19,18 +17,19 @@ import { User } from '@model/User'
import { TransactionRepository } from '@repository/Transaction' import { TransactionRepository } from '@repository/Transaction'
import { TransactionLinkRepository } from '@repository/TransactionLink' 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 { RIGHTS } from '@/auth/RIGHTS'
import { import {
sendTransactionLinkRedeemedEmail, sendTransactionLinkRedeemedEmail,
sendTransactionReceivedEmail, sendTransactionReceivedEmail,
} from '@/emails/sendEmailVariants' } from '@/emails/sendEmailVariants'
import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Events' 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 { communityUser } from '@/util/communityUser'
import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK'
import { calculateBalance } from '@/util/validate'
import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions' import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions'
import { BalanceResolver } from './BalanceResolver' import { BalanceResolver } from './BalanceResolver'
@ -38,6 +37,9 @@ import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const'
import { findUserByEmail } from './UserResolver' import { findUserByEmail } from './UserResolver'
import { getLastTransaction } from './util/getLastTransaction' import { getLastTransaction } from './util/getLastTransaction'
import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK'
import { LogError } from '@/server/LogError'
export const executeTransaction = async ( export const executeTransaction = async (
amount: Decimal, amount: Decimal,
memo: string, memo: string,

View File

@ -20,7 +20,6 @@ import { ContributionLink } from '@model/ContributionLink'
import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers' import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers'
import { logger, i18n as localization } from '@test/testSetup' import { logger, i18n as localization } from '@test/testSetup'
import CONFIG from '@/config'
import { import {
sendAccountActivationEmail, sendAccountActivationEmail,
sendAccountMultiRegistrationEmail, sendAccountMultiRegistrationEmail,
@ -48,9 +47,10 @@ import {
} from '@/seeds/graphql/mutations' } from '@/seeds/graphql/mutations'
import { verifyLogin, queryOptIn, searchAdminUsers, searchUsers } from '@/seeds/graphql/queries' import { verifyLogin, queryOptIn, searchAdminUsers, searchUsers } from '@/seeds/graphql/queries'
import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' 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 { bobBaumeister } from '@/seeds/users/bob-baumeister'
import { garrickOllivander } from '@/seeds/users/garrick-ollivander' import { garrickOllivander } from '@/seeds/users/garrick-ollivander'
import { peterLustig } from '@/seeds/users/peter-lustig'
import { stephenHawking } from '@/seeds/users/stephen-hawking' import { stephenHawking } from '@/seeds/users/stephen-hawking'
import { printTimeDuration } from '@/util/time' import { printTimeDuration } from '@/util/time'
import { objectValuesToArray } from '@/util/utilities' import { objectValuesToArray } from '@/util/utilities'

View File

@ -21,11 +21,6 @@ import {
} from 'type-graphql' } from 'type-graphql'
import { v4 as uuidv4 } from 'uuid' 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 { OptInType } from '@enum/OptInType'
import { Order } from '@enum/Order' import { Order } from '@enum/Order'
import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' import { PasswordEncryptionType } from '@enum/PasswordEncryptionType'
@ -38,12 +33,25 @@ import { UserRepository } from '@repository/User'
import { klicktippSignIn } from '@/apis/KlicktippController' import { klicktippSignIn } from '@/apis/KlicktippController'
import { encode } from '@/auth/JWT' import { encode } from '@/auth/JWT'
import { RIGHTS } from '@/auth/RIGHTS' import { RIGHTS } from '@/auth/RIGHTS'
import CONFIG from '@/config'
import { import {
sendAccountActivationEmail, sendAccountActivationEmail,
sendAccountMultiRegistrationEmail, sendAccountMultiRegistrationEmail,
sendResetPasswordEmail, sendResetPasswordEmail,
} from '@/emails/sendEmailVariants' } 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 { import {
Event, Event,
EventType, EventType,
@ -60,18 +68,12 @@ import {
EVENT_ADMIN_USER_DELETE, EVENT_ADMIN_USER_DELETE,
EVENT_ADMIN_USER_UNDELETE, EVENT_ADMIN_USER_UNDELETE,
} from '@/event/Events' } from '@/event/Events'
import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware'
import { isValidPassword } from '@/password/EncryptorUtils' import { isValidPassword } from '@/password/EncryptorUtils'
import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor' 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 { FULL_CREATION_AVAILABLE } from './const/const'
import { getUserCreations } from './util/creations' import { getUserCreations } from './util/creations'
import { LogError } from '@/server/LogError'
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs
const random = require('random-bigint') const random = require('random-bigint')

View File

@ -7,7 +7,7 @@ import { Decimal } from 'decimal.js-light'
import { OpenCreation } from '@model/OpenCreation' import { OpenCreation } from '@model/OpenCreation'
import { FULL_CREATION_AVAILABLE, MAX_CREATION_AMOUNT } from '@/graphql/resolver/const/const' 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' import { backendLogger as logger } from '@/server/logger'
interface CreationMap { interface CreationMap {

View File

@ -1,15 +1,14 @@
import { MoreThan } from '@dbTools/typeorm' import { MoreThan } from '@dbTools/typeorm'
import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink'
import { User as DbUser } from '@entity/User' import { User as DbUser } from '@entity/User'
import Paginated from '@arg/Paginated'
import TransactionLinkFilters from '@arg/TransactionLinkFilters'
import { Order } from '@enum/Order' import { Order } from '@enum/Order'
import { Paginated } from '@arg/Paginated'
import { TransactionLinkFilters } from '@arg/TransactionLinkFilters'
import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink' import { TransactionLink, TransactionLinkResult } from '@model/TransactionLink'
import { User } from '@/graphql/model/User' import { User } from '@/graphql/model/User'
export default async function transactionLinkList( export async function transactionLinkList(
{ currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated,
filters: TransactionLinkFilters | null, filters: TransactionLinkFilters | null,
user: DbUser, user: DbUser,

View File

@ -1,7 +1,7 @@
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { GraphQLScalarType, Kind } from 'graphql' import { GraphQLScalarType, Kind } from 'graphql'
const DecimalType = new GraphQLScalarType({ export const DecimalScalar = new GraphQLScalarType({
name: 'Decimal', name: 'Decimal',
description: 'The `Decimal` scalar type to represent currency values', description: 'The `Decimal` scalar type to represent currency values',
@ -21,5 +21,3 @@ const DecimalType = new GraphQLScalarType({
return new Decimal(ast.value) return new Decimal(ast.value)
}, },
}) })
export default DecimalType

View File

@ -4,15 +4,13 @@ import { Decimal } from 'decimal.js-light'
import { GraphQLSchema } from 'graphql' import { GraphQLSchema } from 'graphql'
import { buildSchema } from 'type-graphql' import { buildSchema } from 'type-graphql'
import isAuthorized from './directive/isAuthorized' import { isAuthorized } from './directive/isAuthorized'
import DecimalScalar from './scalar/Decimal' import { DecimalScalar } from './scalar/Decimal'
const schema = async (): Promise<GraphQLSchema> => { export const schema = async (): Promise<GraphQLSchema> => {
return buildSchema({ return buildSchema({
resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)], resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)],
authChecker: isAuthorized, authChecker: isAuthorized,
scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], scalarsMap: [{ type: Decimal, scalar: DecimalScalar }],
}) })
} }
export default schema

View File

@ -1,9 +1,10 @@
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
import { createServer } from './server/createServer'
// config // config
import CONFIG from './config' import { CONFIG } from './config'
import { startValidateCommunities } from './federation/validateCommunities' import { startValidateCommunities } from './federation/validateCommunities'
import createServer from './server/createServer'
async function main() { async function main() {
const { app } = await createServer() const { app } = await createServer()

View File

@ -7,7 +7,7 @@ import { MiddlewareFn } from 'type-graphql'
import { KlickTipp } from '@model/KlickTipp' import { KlickTipp } from '@model/KlickTipp'
import { /* klicktippSignIn, */ getKlickTippUser } from '@/apis/KlicktippController' import { /* klicktippSignIn, */ getKlickTippUser } from '@/apis/KlicktippController'
import CONFIG from '@/config' import { CONFIG } from '@/config'
import { klickTippLogger as logger } from '@/server/logger' import { klickTippLogger as logger } from '@/server/logger'
// export const klicktippRegistrationMiddleware: MiddlewareFn = async ( // export const klicktippRegistrationMiddleware: MiddlewareFn = async (

View File

@ -2,11 +2,10 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { User } from '@entity/User' import { User } from '@entity/User'
import { PasswordEncryptionType } from '@enum/PasswordEncryptionType' import { PasswordEncryptionType } from '@enum/PasswordEncryptionType'
import CONFIG from '@/config' import { CONFIG } from '@/config'
import LogError from '@/server/LogError' import { LogError } from '@/server/LogError'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs

View File

@ -9,8 +9,6 @@ import { entities } from '@entity/index'
import { createTestClient } from 'apollo-server-testing' import { createTestClient } from 'apollo-server-testing'
import { name, internet, datatype } from 'faker' import { name, internet, datatype } from 'faker'
import CONFIG from '@/config'
import createServer from '@/server/createServer'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { contributionLinks } from './contributionLink/index' import { contributionLinks } from './contributionLink/index'
@ -21,6 +19,8 @@ import { transactionLinkFactory } from './factory/transactionLink'
import { userFactory } from './factory/user' import { userFactory } from './factory/user'
import { transactionLinks } from './transactionLink/index' import { transactionLinks } from './transactionLink/index'
import { users } from './users/index' import { users } from './users/index'
import { createServer } from '@/server/createServer'
import { CONFIG } from '@/config'
CONFIG.EMAIL = false CONFIG.EMAIL = false

View File

@ -1,8 +1,8 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/unbound-method */
import { LogError } from './LogError'
import { logger } from '@test/testSetup' import { logger } from '@test/testSetup'
import LogError from './LogError'
describe('LogError', () => { describe('LogError', () => {
it('logs an Error when created', () => { it('logs an Error when created', () => {

View File

@ -1,6 +1,6 @@
import { backendLogger as logger } from './logger' 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(msg: string, ...details: any[]) { constructor(msg: string, ...details: any[]) {
super(msg) super(msg)

View File

@ -3,9 +3,10 @@ import { User as dbUser } from '@entity/User'
import { ExpressContext } from 'apollo-server-express' import { ExpressContext } from 'apollo-server-express'
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { LogError } from './LogError'
import { Role } from '@/auth/Role' import { Role } from '@/auth/Role'
import LogError from './LogError'
export interface Context { export interface Context {
token: string | null token: string | null
@ -20,7 +21,7 @@ export interface Context {
sumHoldAvailableAmount?: Decimal sumHoldAvailableAmount?: Decimal
} }
const context = (args: ExpressContext): Context => { export const context = (args: ExpressContext): Context => {
const authorization = args.req.headers.authorization const authorization = args.req.headers.authorization
const clientTimezoneOffset = args.req.headers.clienttimezoneoffset const clientTimezoneOffset = args.req.headers.clienttimezoneoffset
const context: Context = { const context: Context = {
@ -50,5 +51,3 @@ export const getClientTimezoneOffset = (context: Context): number => {
} }
throw new LogError('No valid client time zone offset in context') throw new LogError('No valid client time zone offset in context')
} }
export default context

View File

@ -1,8 +1,8 @@
import cors from 'cors' import { default as corsLib } from 'cors'
const corsOptions = { const corsOptions = {
origin: '*', origin: '*',
exposedHeaders: ['token'], exposedHeaders: ['token'],
} }
export default cors(corsOptions) export const cors = corsLib(corsOptions)

View File

@ -5,25 +5,23 @@ import { Connection } from '@dbTools/typeorm'
import { ApolloServer } from 'apollo-server-express' import { ApolloServer } from 'apollo-server-express'
import express, { Express, json, urlencoded } from 'express' import express, { Express, json, urlencoded } from 'express'
import { Logger } from 'log4js' import { Logger } from 'log4js'
import CONFIG from '@/config'
import schema from '@/graphql/schema'
import connection from '@/typeorm/connection'
import { checkDBVersion } from '@/typeorm/DBVersion' import { checkDBVersion } from '@/typeorm/DBVersion'
import { elopageWebhook } from '@/webhook/elopage' import { cors } from './cors'
import { context as serverContext } from './context'
import serverContext from './context' import { plugins } from './plugins'
import cors from './cors'
import { i18n } from './localization'
import { apolloLogger } from './logger' 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 // TODO implement
// import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity";
type ServerDef = { apollo: ApolloServer; app: Express; con: Connection } type ServerDef = { apollo: ApolloServer; app: Express; con: Connection }
const createServer = async ( export const createServer = async (
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
context: any = serverContext, context: any = serverContext,
logger: Logger = apolloLogger, logger: Logger = apolloLogger,
@ -81,5 +79,3 @@ const createServer = async (
return { apollo, app, con } return { apollo, app, con }
} }
export default createServer

View File

@ -4,7 +4,7 @@ import { readFileSync } from 'fs'
import { configure, getLogger } from 'log4js' import { configure, getLogger } from 'log4js'
import CONFIG from '@/config' import { CONFIG } from '@/config'
const options = JSON.parse(readFileSync(CONFIG.LOG4JS_CONFIG, 'utf-8')) const options = JSON.parse(readFileSync(CONFIG.LOG4JS_CONFIG, 'utf-8'))

View File

@ -60,7 +60,5 @@ ${JSON.stringify(requestContext.response.errors, null, 2)}`)
}, },
} }
const plugins = export const plugins =
process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin] process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin]
export default plugins

View File

@ -2,10 +2,9 @@
// We cannot use our connection here, but must use the external typeorm installation // We cannot use our connection here, but must use the external typeorm installation
import { Connection, createConnection, FileLogger } from '@dbTools/typeorm' import { Connection, createConnection, FileLogger } from '@dbTools/typeorm'
import { entities } from '@entity/index' import { entities } from '@entity/index'
import { CONFIG } from '@/config'
import CONFIG from '@/config' export const connection = async (): Promise<Connection | null> => {
const connection = async (): Promise<Connection | null> => {
try { try {
return createConnection({ return createConnection({
name: 'default', name: 'default',
@ -31,5 +30,3 @@ const connection = async (): Promise<Connection | null> => {
return null return null
} }
} }
export default connection

View File

@ -1,7 +1,7 @@
import { Brackets, EntityRepository, IsNull, Not, Repository } from '@dbTools/typeorm' import { Brackets, EntityRepository, IsNull, Not, Repository } from '@dbTools/typeorm'
import { User as DbUser } from '@entity/User' import { User as DbUser } from '@entity/User'
import SearchUsersFilters from '@/graphql/arg/SearchUsersFilters' import { SearchUsersFilters } from '@/graphql/arg/SearchUsersFilters'
@EntityRepository(DbUser) @EntityRepository(DbUser)
export class UserRepository extends Repository<DbUser> { export class UserRepository extends Repository<DbUser> {

View File

@ -1,9 +1,7 @@
import { Decimal } from 'decimal.js-light' import { Decimal } from 'decimal.js-light'
import { CONFIG } from '@/config'
import { Decay } from '@model/Decay' import { Decay } from '@model/Decay'
import { LogError } from '@/server/LogError'
import CONFIG from '@/config'
import LogError from '@/server/LogError'
// TODO: externalize all those definitions and functions into an external decay library // TODO: externalize all those definitions and functions into an external decay library

View File

@ -1,8 +1,7 @@
import { User } from '@entity/User' import { User } from '@entity/User'
import { connection } from '@/typeorm/connection'
import { getKlickTippUser } from '@/apis/KlicktippController' import { getKlickTippUser } from '@/apis/KlicktippController'
import LogError from '@/server/LogError' import { LogError } from '@/server/LogError'
import connection from '@/typeorm/connection'
export async function retrieveNotRegisteredEmails(): Promise<string[]> { export async function retrieveNotRegisteredEmails(): Promise<string[]> {
const con = await connection() const con = await connection()

View File

@ -10,9 +10,8 @@ import { initialize } from '@dbTools/helpers'
import { entities } from '@entity/index' import { entities } from '@entity/index'
import { createTestClient } from 'apollo-server-testing' import { createTestClient } from 'apollo-server-testing'
import createServer from '@/server/createServer'
import { i18n, logger } from './testSetup' import { i18n, logger } from './testSetup'
import { createServer } from '@/server/createServer'
export const headerPushMock = jest.fn((t) => { export const headerPushMock = jest.fn((t) => {
context.token = t.value context.token = t.value

View File

@ -1,8 +1,8 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-return */
import CONFIG from '@/config' import { CONFIG } from '@/config'
import { i18n } from '@/server/localization'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { i18n } from '@/server/localization'
CONFIG.EMAIL = true CONFIG.EMAIL = true
CONFIG.EMAIL_TEST_MODUS = false CONFIG.EMAIL_TEST_MODUS = false