From dc978e0ccd8ebedbc7f64b058c87a2ce97ed1091 Mon Sep 17 00:00:00 2001 From: Antoine Jaussoin Date: Thu, 17 Oct 2024 20:34:46 +0100 Subject: [PATCH] Revert "Update imports" This reverts commit 7b2115764785b6617bd1db06f57a6e6ab04136e6. --- backend/src/admin/router.ts | 22 ++--- backend/src/ai/index.ts | 6 +- backend/src/ai/router.ts | 4 +- backend/src/auth/config.ts | 4 +- backend/src/auth/logins/anonymous-user.ts | 2 +- backend/src/auth/logins/password-user.ts | 2 +- backend/src/auth/passport.ts | 36 ++++---- backend/src/auth/register/register-user.ts | 6 +- backend/src/auth/router.ts | 2 +- backend/src/common/models.ts | 2 +- backend/src/common/payloads.ts | 6 +- backend/src/common/random-username.ts | 2 +- backend/src/config.ts | 2 +- backend/src/db/actions/ai.ts | 18 ++-- backend/src/db/actions/delete.ts | 2 +- backend/src/db/actions/demo.ts | 4 +- backend/src/db/actions/licences.ts | 6 +- backend/src/db/actions/merge.ts | 10 +-- backend/src/db/actions/posts.ts | 4 +- backend/src/db/actions/sessions.ts | 42 ++++----- backend/src/db/actions/subscriptions.ts | 12 +-- backend/src/db/actions/transaction.ts | 2 +- backend/src/db/actions/users.ts | 22 ++--- backend/src/db/actions/votes.ts | 2 +- backend/src/db/entities/AiChat.ts | 6 +- backend/src/db/entities/AiChatMessage.ts | 8 +- backend/src/db/entities/ColumnDefinition.ts | 8 +- backend/src/db/entities/Licence.ts | 6 +- backend/src/db/entities/Message.ts | 10 +-- backend/src/db/entities/Post.ts | 18 ++-- backend/src/db/entities/PostGroup.ts | 16 ++-- backend/src/db/entities/Session.ts | 22 ++--- backend/src/db/entities/SessionOptions.ts | 2 +- backend/src/db/entities/SessionTemplate.ts | 12 +-- backend/src/db/entities/SessionView.ts | 4 +- backend/src/db/entities/Subscription.ts | 8 +- backend/src/db/entities/UserIdentity.ts | 10 +-- backend/src/db/entities/UserView.ts | 4 +- backend/src/db/entities/Vote.ts | 10 +-- .../1585000111312-RerankEverything.ts | 2 +- backend/src/db/orm-config.ts | 30 +++---- .../src/db/repositories/ColumnRepository.ts | 4 +- .../src/db/repositories/MessageRepository.ts | 6 +- .../db/repositories/PostGroupRepository.ts | 4 +- backend/src/db/repositories/PostRepository.ts | 8 +- .../src/db/repositories/SessionRepository.ts | 4 +- .../repositories/SessionTemplateRepository.ts | 8 +- .../db/repositories/SubscriptionRepository.ts | 2 +- .../repositories/TemplateColumnRepository.ts | 4 +- backend/src/db/repositories/UserRepository.ts | 4 +- backend/src/db/repositories/VoteRepository.ts | 2 +- backend/src/game.ts | 78 ++++++++-------- backend/src/hardcoded.ts | 4 +- backend/src/index.ts | 88 +++++++++---------- backend/src/security/is-licenced.ts | 6 +- backend/src/security/is-valid-domain.ts | 2 +- backend/src/slack/router.ts | 2 +- backend/src/stripe/products.ts | 2 +- backend/src/stripe/router.ts | 26 +++--- backend/src/stripe/types.ts | 2 +- backend/src/track/track.ts | 4 +- backend/src/utils.ts | 4 +- 62 files changed, 330 insertions(+), 330 deletions(-) diff --git a/backend/src/admin/router.ts b/backend/src/admin/router.ts index 145fdb3aa..898f0592c 100644 --- a/backend/src/admin/router.ts +++ b/backend/src/admin/router.ts @@ -1,23 +1,23 @@ import express from 'express'; -import type { NextFunction, Request, Response } from 'express'; +import type { NextFunction, Response, Request } from 'express'; import type { Server } from 'socket.io'; -import type { - AdminChangePasswordPayload, - AdminStats, - BackendCapabilities, - MergeUsersPayload, -} from '../common/index.js'; -import config from '../config.js'; -import { mergeUsers } from '../db/actions/merge.js'; import { getAllNonDeletedUsers, getPasswordIdentityByUserId, updateIdentity, } from '../db/actions/users.js'; -import { canSendEmails } from '../email/utils.js'; -import { hashPassword } from '../encryption.js'; +import config from '../config.js'; import { isLicenced } from '../security/is-licenced.js'; +import type { + AdminChangePasswordPayload, + AdminStats, + BackendCapabilities, + MergeUsersPayload, +} from '../common/index.js'; import { getIdentityFromRequest } from '../utils.js'; +import { hashPassword } from '../encryption.js'; +import { canSendEmails } from '../email/utils.js'; +import { mergeUsers } from '../db/actions/merge.js'; export default function getRouter(io: Server) { const router = express.Router(); diff --git a/backend/src/ai/index.ts b/backend/src/ai/index.ts index be2687661..db0f46d6b 100644 --- a/backend/src/ai/index.ts +++ b/backend/src/ai/index.ts @@ -1,9 +1,9 @@ -import { last } from 'lodash-es'; -import { Configuration, OpenAIApi } from 'openai'; -import type { CoachMessage } from '../common/types.js'; import config from '../config.js'; +import { Configuration, OpenAIApi } from 'openai'; import { getAiChatSession, recordAiChatMessage } from '../db/actions/ai.js'; import type UserView from '../db/entities/UserView.js'; +import type { CoachMessage } from '../common/types.js'; +import { last } from 'lodash-es'; const systemMessage: CoachMessage = { role: 'system', diff --git a/backend/src/ai/router.ts b/backend/src/ai/router.ts index 59d852e39..48d544112 100644 --- a/backend/src/ai/router.ts +++ b/backend/src/ai/router.ts @@ -1,8 +1,8 @@ import express, { type Router } from 'express'; +import { dialog } from './index.js'; +import { getUserViewFromRequest } from '../utils.js'; import type { AiChatPayload } from '../common/payloads.js'; import { getAllowance } from '../db/actions/ai.js'; -import { getUserViewFromRequest } from '../utils.js'; -import { dialog } from './index.js'; export default function aiRouter(): Router { const router = express.Router(); diff --git a/backend/src/auth/config.ts b/backend/src/auth/config.ts index 29f8475b3..e311046f7 100644 --- a/backend/src/auth/config.ts +++ b/backend/src/auth/config.ts @@ -1,8 +1,8 @@ -import type { StrategyOptionsWithRequest as GitHubStrategy } from 'passport-github2'; +import type { IStrategyOptionWithRequest } from 'passport-twitter'; import type { StrategyOptionsWithRequest as GoogleStrategyOptions } from 'passport-google-oauth20'; +import type { StrategyOptionsWithRequest as GitHubStrategy } from 'passport-github2'; import type { MicrosoftStrategyOptionsWithRequest } from 'passport-microsoft'; import type { OktaStrategyOptions } from 'passport-okta-oauth20'; -import type { IStrategyOptionWithRequest } from 'passport-twitter'; import config from '../config.js'; type MicrosoftStrategyOptionsWithTenant = diff --git a/backend/src/auth/logins/anonymous-user.ts b/backend/src/auth/logins/anonymous-user.ts index 1cbfe4d8c..16be64148 100644 --- a/backend/src/auth/logins/anonymous-user.ts +++ b/backend/src/auth/logins/anonymous-user.ts @@ -1,5 +1,5 @@ -import { registerAnonymousUser } from '../../db/actions/users.js'; import type { UserIdentityEntity } from '../../db/entities/index.js'; +import { registerAnonymousUser } from '../../db/actions/users.js'; export default async function loginAnonymous( username: string, diff --git a/backend/src/auth/logins/password-user.ts b/backend/src/auth/logins/password-user.ts index e16e5a650..08867ad70 100644 --- a/backend/src/auth/logins/password-user.ts +++ b/backend/src/auth/logins/password-user.ts @@ -1,5 +1,5 @@ -import { getIdentityByUsername } from '../../db/actions/users.js'; import type { UserIdentityEntity } from '../../db/entities/index.js'; +import { getIdentityByUsername } from '../../db/actions/users.js'; import { comparePassword } from '../../encryption.js'; export default async function loginUser( diff --git a/backend/src/auth/passport.ts b/backend/src/auth/passport.ts index 6f9ab067a..ae87bf210 100644 --- a/backend/src/auth/passport.ts +++ b/backend/src/auth/passport.ts @@ -1,40 +1,40 @@ import passport from 'passport'; -import { Strategy as GithubStrategy } from 'passport-github2'; +import { Strategy as LocalStrategy, type IVerifyOptions } from 'passport-local'; +import { Strategy as TwitterStrategy } from 'passport-twitter'; import { Strategy as GoogleStrategy } from 'passport-google-oauth20'; -import { type IVerifyOptions, Strategy as LocalStrategy } from 'passport-local'; +import { Strategy as GithubStrategy } from 'passport-github2'; +import { Strategy as SlackStrategy } from 'passport-slack-oauth2'; import { Strategy as MicrosoftStrategy } from 'passport-microsoft'; import passportOkta from 'passport-okta-oauth20'; -import { Strategy as SlackStrategy } from 'passport-slack-oauth2'; -import { Strategy as TwitterStrategy } from 'passport-twitter'; const { Strategy: OktaStrategy } = passportOkta; -import chalk from 'chalk-template'; -import type { Request } from 'express'; -import type { AccountType } from '../common/index.js'; -import config from '../config.js'; -import { mergeAnonymous } from '../db/actions/merge.js'; -import { type UserRegistration, registerUser } from '../db/actions/users.js'; -import { type UserIds, deserialiseIds, serialiseIds } from '../utils.js'; import { - GITHUB_CONFIG, + TWITTER_CONFIG, GOOGLE_CONFIG, + GITHUB_CONFIG, MICROSOFT_CONFIG, - OKTA_CONFIG, SLACK_CONFIG, - TWITTER_CONFIG, + OKTA_CONFIG, } from './config.js'; -import loginAnonymous from './logins/anonymous-user.js'; +import type { AccountType } from '../common/index.js'; +import chalk from 'chalk-template'; import loginUser from './logins/password-user.js'; +import loginAnonymous from './logins/anonymous-user.js'; import type { BaseProfile, - GitHubProfile, + TwitterProfile, GoogleProfile, + GitHubProfile, MicrosoftProfile, - OktaProfile, SlackProfile, - TwitterProfile, + OktaProfile, } from './types.js'; +import { registerUser, type UserRegistration } from '../db/actions/users.js'; +import { serialiseIds, type UserIds, deserialiseIds } from '../utils.js'; +import config from '../config.js'; +import type { Request } from 'express'; +import { mergeAnonymous } from '../db/actions/merge.js'; export default () => { passport.serializeUser((user, cb) => { diff --git a/backend/src/auth/register/register-user.ts b/backend/src/auth/register/register-user.ts index c2fc2f875..ec1365c94 100644 --- a/backend/src/auth/register/register-user.ts +++ b/backend/src/auth/register/register-user.ts @@ -1,9 +1,9 @@ -import { v4 } from 'uuid'; import type { RegisterPayload } from '../../common/index.js'; -import { getIdentityByUsername, registerUser } from '../../db/actions/users.js'; +import { v4 } from 'uuid'; +import { hashPassword } from '../../encryption.js'; import type { UserIdentityEntity } from '../../db/entities/index.js'; +import { getIdentityByUsername, registerUser } from '../../db/actions/users.js'; import { canSendEmails } from '../../email/utils.js'; -import { hashPassword } from '../../encryption.js'; export default async function registerPasswordUser( details: RegisterPayload, diff --git a/backend/src/auth/router.ts b/backend/src/auth/router.ts index b83b9da24..4eae69f00 100644 --- a/backend/src/auth/router.ts +++ b/backend/src/auth/router.ts @@ -1,10 +1,10 @@ +import { mergeAnonymous } from '../db/actions/merge.js'; import express, { type NextFunction, type Request, type Response, } from 'express'; import passport from 'passport'; -import { mergeAnonymous } from '../db/actions/merge.js'; import type { UserIds } from '../utils.js'; const router = express.Router(); diff --git a/backend/src/common/models.ts b/backend/src/common/models.ts index 712a36407..69bd2d691 100644 --- a/backend/src/common/models.ts +++ b/backend/src/common/models.ts @@ -1,4 +1,4 @@ -import type { Session, SessionOptions } from './types.js'; +import type { SessionOptions, Session } from './types.js'; export const defaultOptions: SessionOptions = { allowActions: true, diff --git a/backend/src/common/payloads.ts b/backend/src/common/payloads.ts index c355ef422..de0b8d1b5 100644 --- a/backend/src/common/payloads.ts +++ b/backend/src/common/payloads.ts @@ -1,10 +1,10 @@ import type { + Plan, + Currency, + StripeLocales, AccessErrorType, CoachMessage, - Currency, - Plan, Session, - StripeLocales, } from './types.js'; export interface RegisterPayload { diff --git a/backend/src/common/random-username.ts b/backend/src/common/random-username.ts index 9fc7ab279..899fb0038 100644 --- a/backend/src/common/random-username.ts +++ b/backend/src/common/random-username.ts @@ -1,7 +1,7 @@ import { + uniqueNamesGenerator, adjectives, animals, - uniqueNamesGenerator, } from 'unique-names-generator'; import { v4 } from 'uuid'; diff --git a/backend/src/config.ts b/backend/src/config.ts index f6e3b656b..620f5ca68 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -1,8 +1,8 @@ import fs from 'node:fs'; import path from 'node:path'; +import type { BackendConfig } from './types.js'; import dotenv from 'dotenv'; import { getDirname } from './path-utils.js'; -import type { BackendConfig } from './types.js'; function findDotEnvPath(): string | null { let current = getDirname(import.meta.url); diff --git a/backend/src/db/actions/ai.ts b/backend/src/db/actions/ai.ts index fb69b38fe..e22a3f649 100644 --- a/backend/src/db/actions/ai.ts +++ b/backend/src/db/actions/ai.ts @@ -1,15 +1,15 @@ -import type { CoachMessage, CoachRole } from 'common/types.js'; -import { addDays } from 'date-fns'; -import { MoreThanOrEqual } from 'typeorm'; -import { v4 } from 'uuid'; -import config from '../../config.js'; -import AiChatEntity from '../entities/AiChat.js'; -import AiChatMessageEntity from '../entities/AiChatMessage.js'; import type UserView from '../entities/UserView.js'; -import AiChatMessageRepository from '../repositories/AiChatMessageRepository.js'; -import AiChatRepository from '../repositories/AiChatRepository.js'; +import AiChatEntity from '../entities/AiChat.js'; import { transaction } from './transaction.js'; +import AiChatRepository from '../repositories/AiChatRepository.js'; import { getUser } from './users.js'; +import type { CoachMessage, CoachRole } from 'common/types.js'; +import AiChatMessageRepository from '../repositories/AiChatMessageRepository.js'; +import AiChatMessageEntity from '../entities/AiChatMessage.js'; +import { v4 } from 'uuid'; +import { MoreThanOrEqual } from 'typeorm'; +import { addDays } from 'date-fns'; +import config from '../../config.js'; export async function getAiChatSession( id: string, diff --git a/backend/src/db/actions/delete.ts b/backend/src/db/actions/delete.ts index da477f365..bcf636af7 100644 --- a/backend/src/db/actions/delete.ts +++ b/backend/src/db/actions/delete.ts @@ -1,6 +1,6 @@ +import type { DeleteAccountPayload } from '../../common/index.js'; import type { EntityManager } from 'typeorm'; import { v4 } from 'uuid'; -import type { DeleteAccountPayload } from '../../common/index.js'; import type { UserIdentityEntity, UserView } from '../entities/index.js'; import { PostGroupRepository, diff --git a/backend/src/db/actions/demo.ts b/backend/src/db/actions/demo.ts index c79a6611d..b06dfe883 100644 --- a/backend/src/db/actions/demo.ts +++ b/backend/src/db/actions/demo.ts @@ -1,11 +1,11 @@ -import type { DeepPartial } from 'typeorm'; import { v4 } from 'uuid'; import type { Post, Session } from '../../common/types.js'; import type { UserEntity } from '../../db/entities/UserIdentity.js'; -import { getMiddle, getNext } from '../../lexorank.js'; import { savePost, saveVote } from './posts.js'; import { createSession, getSession, saveSession } from './sessions.js'; +import { getNext, getMiddle } from '../../lexorank.js'; import { registerAnonymousUser } from './users.js'; +import type { DeepPartial } from 'typeorm'; export async function createDemoSession(author: UserEntity): Promise { const session = await createSession(author); diff --git a/backend/src/db/actions/licences.ts b/backend/src/db/actions/licences.ts index 5a8487d1d..6d7d2628e 100644 --- a/backend/src/db/actions/licences.ts +++ b/backend/src/db/actions/licences.ts @@ -1,10 +1,10 @@ +import { transaction } from './transaction.js'; +import LicenceEntity from '../entities/Licence.js'; import { v4 } from 'uuid'; import { sendSelfHostWelcome } from '../../email/emailSender.js'; -import LicenceEntity from '../entities/Licence.js'; -import { saveAndReload } from '../repositories/BaseRepository.js'; import { LicenceRepository } from '../repositories/index.js'; import type { LicenceMetadata } from './../../types.js'; -import { transaction } from './transaction.js'; +import { saveAndReload } from '../repositories/BaseRepository.js'; export async function registerLicence( email: string | null, diff --git a/backend/src/db/actions/merge.ts b/backend/src/db/actions/merge.ts index 471607c15..fe7473809 100644 --- a/backend/src/db/actions/merge.ts +++ b/backend/src/db/actions/merge.ts @@ -1,7 +1,6 @@ -import type { Request } from 'express'; -import { getUserViewFromRequest } from '../../utils.js'; import type { UserView } from '../entities/index.js'; -import AiChatRepository from '../repositories/AiChatRepository.js'; +import { getUserView } from './users.js'; +import { transaction } from './transaction.js'; import { PostGroupRepository, PostRepository, @@ -9,8 +8,9 @@ import { VoteRepository, } from '../repositories/index.js'; import { deleteAccount } from './delete.js'; -import { transaction } from './transaction.js'; -import { getUserView } from './users.js'; +import { getUserViewFromRequest } from '../../utils.js'; +import type { Request } from 'express'; +import AiChatRepository from '../repositories/AiChatRepository.js'; export async function mergeAnonymous(req: Request, newUserIdentityId: string) { const anonymousUser = await getUserViewFromRequest(req); diff --git a/backend/src/db/actions/posts.ts b/backend/src/db/actions/posts.ts index d557298eb..6691d3869 100644 --- a/backend/src/db/actions/posts.ts +++ b/backend/src/db/actions/posts.ts @@ -1,10 +1,10 @@ import type { DeepPartial } from 'typeorm'; import type { Post, PostGroup, Vote } from '../../common/index.js'; import { - PostGroupRepository, PostRepository, - SessionRepository, + PostGroupRepository, VoteRepository, + SessionRepository, } from '../repositories/index.js'; import { transaction } from './transaction.js'; diff --git a/backend/src/db/actions/sessions.ts b/backend/src/db/actions/sessions.ts index 8c7d60642..23d3348e3 100644 --- a/backend/src/db/actions/sessions.ts +++ b/backend/src/db/actions/sessions.ts @@ -1,37 +1,37 @@ -import { uniq } from 'lodash-es'; -import shortId from 'shortid'; -import { type EntityManager, In } from 'typeorm'; -import { v4 } from 'uuid'; import { - type AccessErrorType, - type ColumnDefinition, - type FullUser, - type Session, - type SessionMetadata, - type SessionOptions, - defaultSession, -} from '../../common/index.js'; -import type MessageEntity from '../entities/Message.js'; -import { - type ColumnDefinitionEntity, + type UserEntity, type PostEntity, type PostGroupEntity, + type ColumnDefinitionEntity, type SessionEntity, type SessionTemplateEntity, SessionView, - type UserEntity, } from '../entities/index.js'; -import MessageRepository from '../repositories/MessageRepository.js'; import { - ColumnRepository, - PostGroupRepository, - PostRepository, + type Session, + defaultSession, + type ColumnDefinition, + type SessionOptions, + type SessionMetadata, + type AccessErrorType, + type FullUser, +} from '../../common/index.js'; +import shortId from 'shortid'; +import { v4 } from 'uuid'; +import { + UserRepository, SessionRepository, SessionTemplateRepository, - UserRepository, + PostRepository, + PostGroupRepository, + ColumnRepository, } from '../repositories/index.js'; import { transaction } from './transaction.js'; +import { type EntityManager, In } from 'typeorm'; import { getUserViewInner, isUserPro } from './users.js'; +import { uniq } from 'lodash-es'; +import MessageRepository from '../repositories/MessageRepository.js'; +import type MessageEntity from '../entities/Message.js'; export async function createSessionFromSlack( slackUserId: string, diff --git a/backend/src/db/actions/subscriptions.ts b/backend/src/db/actions/subscriptions.ts index fb40c40b8..85793b0bb 100644 --- a/backend/src/db/actions/subscriptions.ts +++ b/backend/src/db/actions/subscriptions.ts @@ -1,15 +1,15 @@ -import { In } from 'typeorm'; -import type { Currency, Plan } from '../../common/index.js'; +import { + SubscriptionRepository, + UserRepository, +} from '../repositories/index.js'; +import type { Plan, Currency } from '../../common/index.js'; import { type SubscriptionEntity, type UserEntity, UserView, } from '../entities/index.js'; -import { - SubscriptionRepository, - UserRepository, -} from '../repositories/index.js'; import { transaction } from './transaction.js'; +import { In } from 'typeorm'; export async function activateSubscription( userId: string, diff --git a/backend/src/db/actions/transaction.ts b/backend/src/db/actions/transaction.ts index 5cb2ae4d2..4617ea9ed 100644 --- a/backend/src/db/actions/transaction.ts +++ b/backend/src/db/actions/transaction.ts @@ -1,5 +1,5 @@ -import type { EntityManager } from 'typeorm'; import { dataSource } from '../index.js'; +import type { EntityManager } from 'typeorm'; type Inner = (manager: EntityManager) => Promise; diff --git a/backend/src/db/actions/users.ts b/backend/src/db/actions/users.ts index 1f4bc93ae..2ffd9ce3c 100644 --- a/backend/src/db/actions/users.ts +++ b/backend/src/db/actions/users.ts @@ -1,21 +1,21 @@ +import { UserEntity, UserView } from '../entities/index.js'; import { type EntityManager, In, Not } from 'typeorm'; -import { v4 } from 'uuid'; -import type { AccountType, FullUser } from '../../common/index.js'; -import { comparePassword, hashPassword } from '../../encryption.js'; -import { isSelfHostedAndLicenced } from '../../security/is-licenced.js'; -import TrackingEntity from '../entities/TrackingEntity.js'; +import { + UserIdentityRepository, + UserRepository, +} from '../repositories/index.js'; import { ALL_FIELDS, ALL_IDENTITY_FIELDS as ALL_FIELDS_IDENTITY, UserIdentityEntity, } from '../entities/UserIdentity.js'; -import { UserEntity, UserView } from '../entities/index.js'; -import { saveAndReload } from '../repositories/BaseRepository.js'; -import { - UserIdentityRepository, - UserRepository, -} from '../repositories/index.js'; import { transaction } from './transaction.js'; +import type { AccountType, FullUser } from '../../common/index.js'; +import { isSelfHostedAndLicenced } from '../../security/is-licenced.js'; +import { v4 } from 'uuid'; +import { hashPassword, comparePassword } from '../../encryption.js'; +import { saveAndReload } from '../repositories/BaseRepository.js'; +import TrackingEntity from '../entities/TrackingEntity.js'; export async function getUser(userId: string): Promise { return await transaction(async (manager) => { diff --git a/backend/src/db/actions/votes.ts b/backend/src/db/actions/votes.ts index e86ad9ecd..d314d0e74 100644 --- a/backend/src/db/actions/votes.ts +++ b/backend/src/db/actions/votes.ts @@ -1,6 +1,6 @@ +import type { Vote, VoteExtract, VoteType } from '../../common/index.js'; import { find } from 'lodash-es'; import { v4 } from 'uuid'; -import type { Vote, VoteExtract, VoteType } from '../../common/index.js'; import { PostRepository, SessionRepository, diff --git a/backend/src/db/entities/AiChat.ts b/backend/src/db/entities/AiChat.ts index 034ed2991..1f9610dd3 100644 --- a/backend/src/db/entities/AiChat.ts +++ b/backend/src/db/entities/AiChat.ts @@ -1,11 +1,11 @@ import { - CreateDateColumn, Entity, + PrimaryColumn, Index, + CreateDateColumn, + UpdateDateColumn, ManyToOne, OneToMany, - PrimaryColumn, - UpdateDateColumn, } from 'typeorm'; import AiChatMessageEntity from './AiChatMessage.js'; import { UserEntity } from './UserIdentity.js'; diff --git a/backend/src/db/entities/AiChatMessage.ts b/backend/src/db/entities/AiChatMessage.ts index ce59da4d9..43c049cb8 100644 --- a/backend/src/db/entities/AiChatMessage.ts +++ b/backend/src/db/entities/AiChatMessage.ts @@ -1,11 +1,11 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + Index, } from 'typeorm'; import type { Relation } from 'typeorm'; import type { CoachRole } from '../../common/index.js'; diff --git a/backend/src/db/entities/ColumnDefinition.ts b/backend/src/db/entities/ColumnDefinition.ts index d9675773d..75a6a1b7d 100644 --- a/backend/src/db/entities/ColumnDefinition.ts +++ b/backend/src/db/entities/ColumnDefinition.ts @@ -1,11 +1,11 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + Index, } from 'typeorm'; import type { Relation } from 'typeorm'; import type { diff --git a/backend/src/db/entities/Licence.ts b/backend/src/db/entities/Licence.ts index 854a9cd64..ac186c6fc 100644 --- a/backend/src/db/entities/Licence.ts +++ b/backend/src/db/entities/Licence.ts @@ -1,10 +1,10 @@ import { - Column, - CreateDateColumn, Entity, - Index, + Column, PrimaryColumn, + CreateDateColumn, UpdateDateColumn, + Index, } from 'typeorm'; @Entity({ name: 'licences' }) diff --git a/backend/src/db/entities/Message.ts b/backend/src/db/entities/Message.ts index 57605bc9b..88bb8a01e 100644 --- a/backend/src/db/entities/Message.ts +++ b/backend/src/db/entities/Message.ts @@ -1,15 +1,15 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + Index, } from 'typeorm'; import type { Relation } from 'typeorm'; -import type { Message } from '../../common/index.js'; import SessionEntity from './Session.js'; +import type { Message } from '../../common/index.js'; import { UserEntity } from './UserIdentity.js'; @Entity({ name: 'messages' }) diff --git a/backend/src/db/entities/Post.ts b/backend/src/db/entities/Post.ts index 8c1c51017..1bb3cd497 100644 --- a/backend/src/db/entities/Post.ts +++ b/backend/src/db/entities/Post.ts @@ -1,19 +1,19 @@ -import type { Post } from 'common/types.js'; -import { LexoRank } from 'lexorank'; import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, - OneToMany, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + OneToMany, + Index, } from 'typeorm'; -import PostGroupEntity from './PostGroup.js'; +import { LexoRank } from 'lexorank'; import SessionEntity from './Session.js'; -import { UserEntity } from './UserIdentity.js'; import VoteEntity from './Vote.js'; +import PostGroupEntity from './PostGroup.js'; +import { UserEntity } from './UserIdentity.js'; +import type { Post } from 'common/types.js'; @Entity({ name: 'posts' }) export default class PostEntity { diff --git a/backend/src/db/entities/PostGroup.ts b/backend/src/db/entities/PostGroup.ts index 199ad1012..0aacc01d5 100644 --- a/backend/src/db/entities/PostGroup.ts +++ b/backend/src/db/entities/PostGroup.ts @@ -1,18 +1,18 @@ -import { LexoRank } from 'lexorank'; import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, - OneToMany, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + OneToMany, + Index, } from 'typeorm'; import type { Relation } from 'typeorm'; -import type { PostGroup } from '../../common/index.js'; -import PostEntity from './Post.js'; +import { LexoRank } from 'lexorank'; import SessionEntity from './Session.js'; +import PostEntity from './Post.js'; +import type { PostGroup } from '../../common/index.js'; import { UserEntity } from './UserIdentity.js'; @Entity({ name: 'groups' }) diff --git a/backend/src/db/entities/Session.ts b/backend/src/db/entities/Session.ts index 91a32e918..dd705bdb1 100644 --- a/backend/src/db/entities/Session.ts +++ b/backend/src/db/entities/Session.ts @@ -1,24 +1,24 @@ import { - Column, - CreateDateColumn, Entity, - Index, - JoinTable, - ManyToMany, - ManyToOne, - OneToMany, + Column, PrimaryColumn, + OneToMany, + Index, + CreateDateColumn, UpdateDateColumn, + ManyToOne, + ManyToMany, + JoinTable, } from 'typeorm'; +import PostEntity from './Post.js'; +import { ColumnDefinitionEntity } from './ColumnDefinition.js'; import type { SessionOptions as JsonSessionOptions, Session, } from '../../common/index.js'; -import { ColumnDefinitionEntity } from './ColumnDefinition.js'; -import MessageEntity from './Message.js'; -import PostEntity from './Post.js'; -import PostGroupEntity from './PostGroup.js'; import SessionOptionsEntity from './SessionOptions.js'; +import PostGroupEntity from './PostGroup.js'; +import MessageEntity from './Message.js'; import { UserEntity } from './UserIdentity.js'; @Entity({ name: 'sessions' }) diff --git a/backend/src/db/entities/SessionOptions.ts b/backend/src/db/entities/SessionOptions.ts index 30c411aca..e42d62b1f 100644 --- a/backend/src/db/entities/SessionOptions.ts +++ b/backend/src/db/entities/SessionOptions.ts @@ -1,8 +1,8 @@ import { Column } from 'typeorm'; import { type SessionOptions as JsonSessionOptions, - type SessionOptions, defaultOptions, + type SessionOptions, } from '../../common/index.js'; export default class SessionOptionsEntity { diff --git a/backend/src/db/entities/SessionTemplate.ts b/backend/src/db/entities/SessionTemplate.ts index a93d80851..ffc317b04 100644 --- a/backend/src/db/entities/SessionTemplate.ts +++ b/backend/src/db/entities/SessionTemplate.ts @@ -1,18 +1,18 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, - OneToMany, + Column, PrimaryColumn, + OneToMany, + Index, + CreateDateColumn, UpdateDateColumn, + ManyToOne, } from 'typeorm'; +import { TemplateColumnDefinitionEntity } from './ColumnDefinition.js'; import type { SessionOptions as JsonSessionOptions, SessionTemplate, } from '../../common/index.js'; -import { TemplateColumnDefinitionEntity } from './ColumnDefinition.js'; import SessionOptionsEntity from './SessionOptions.js'; import { UserEntity } from './UserIdentity.js'; diff --git a/backend/src/db/entities/SessionView.ts b/backend/src/db/entities/SessionView.ts index 1f29f9acc..53310adf9 100644 --- a/backend/src/db/entities/SessionView.ts +++ b/backend/src/db/entities/SessionView.ts @@ -1,5 +1,5 @@ -import { ViewColumn, ViewEntity } from 'typeorm'; -import type { SessionMetadata, User } from '../../common/index.js'; +import { ViewEntity, ViewColumn } from 'typeorm'; +import type { User, SessionMetadata } from '../../common/index.js'; @ViewEntity({ expression: ` diff --git a/backend/src/db/entities/Subscription.ts b/backend/src/db/entities/Subscription.ts index 4923f6d4f..8118a4f29 100644 --- a/backend/src/db/entities/Subscription.ts +++ b/backend/src/db/entities/Subscription.ts @@ -1,11 +1,11 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, + Column, PrimaryColumn, + CreateDateColumn, UpdateDateColumn, + ManyToOne, + Index, } from 'typeorm'; import type { Plan } from '../../common/index.js'; import { UserEntity } from './UserIdentity.js'; diff --git a/backend/src/db/entities/UserIdentity.ts b/backend/src/db/entities/UserIdentity.ts index 5c45812b2..8acf0d09a 100644 --- a/backend/src/db/entities/UserIdentity.ts +++ b/backend/src/db/entities/UserIdentity.ts @@ -1,12 +1,12 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToMany, - ManyToOne, + Column, PrimaryColumn, + Index, + CreateDateColumn, UpdateDateColumn, + ManyToOne, + ManyToMany, } from 'typeorm'; import type { Currency, User, UserIdentity } from '../../common/index.js'; import type { AccountType } from '../../common/types.js'; diff --git a/backend/src/db/entities/UserView.ts b/backend/src/db/entities/UserView.ts index 0e146258f..79707aa43 100644 --- a/backend/src/db/entities/UserView.ts +++ b/backend/src/db/entities/UserView.ts @@ -1,8 +1,8 @@ -import { ViewColumn, ViewEntity } from 'typeorm'; +import { ViewEntity, ViewColumn } from 'typeorm'; import type { AccountType, - Currency, FullUser, + Currency, Plan, } from '../../common/index.js'; diff --git a/backend/src/db/entities/Vote.ts b/backend/src/db/entities/Vote.ts index 4e859cf91..2d95ada84 100644 --- a/backend/src/db/entities/Vote.ts +++ b/backend/src/db/entities/Vote.ts @@ -1,14 +1,14 @@ import { - Column, - CreateDateColumn, Entity, - Index, - ManyToOne, + Column, PrimaryColumn, + ManyToOne, + CreateDateColumn, UpdateDateColumn, + Index, } from 'typeorm'; import type { Relation } from 'typeorm'; -import type { Vote, VoteExtract, VoteType } from '../../common/index.js'; +import type { VoteType, Vote, VoteExtract } from '../../common/index.js'; import PostEntity from './Post.js'; import { UserEntity } from './UserIdentity.js'; diff --git a/backend/src/db/migrations/1585000111312-RerankEverything.ts b/backend/src/db/migrations/1585000111312-RerankEverything.ts index 7bbcf04db..570c09714 100644 --- a/backend/src/db/migrations/1585000111312-RerankEverything.ts +++ b/backend/src/db/migrations/1585000111312-RerankEverything.ts @@ -1,5 +1,5 @@ -import { LexoRank } from 'lexorank'; import { MigrationInterface, QueryRunner } from 'typeorm'; +import { LexoRank } from 'lexorank'; export class RerankEverything1585000111312 implements MigrationInterface { name = 'RerankEverything1585000111315'; diff --git a/backend/src/db/orm-config.ts b/backend/src/db/orm-config.ts index e2555e8bd..7c278aac7 100644 --- a/backend/src/db/orm-config.ts +++ b/backend/src/db/orm-config.ts @@ -1,27 +1,27 @@ -import path from 'node:path'; -import type { DataSourceOptions } from 'typeorm'; -import { SnakeNamingStrategy } from 'typeorm-naming-strategies'; import config from '../config.js'; -import { getDirname, getFilename } from './../path-utils.js'; -import AiChatEntity from './entities/AiChat.js'; -import AiChatMessageEntity from './entities/AiChatMessage.js'; -import LicenceEntity from './entities/Licence.js'; -import SessionOptionsEntity from './entities/SessionOptions.js'; +import type { DataSourceOptions } from 'typeorm'; import { - ColumnDefinitionEntity, - MessageEntity, PostEntity, PostGroupEntity, SessionEntity, + UserEntity, + ColumnDefinitionEntity, + VoteEntity, SessionTemplateEntity, - SessionView, - SubscriptionEntity, TemplateColumnDefinitionEntity, - UserEntity, - UserIdentityEntity, + SubscriptionEntity, + MessageEntity, UserView, - VoteEntity, + SessionView, + UserIdentityEntity, } from './entities/index.js'; +import LicenceEntity from './entities/Licence.js'; +import SessionOptionsEntity from './entities/SessionOptions.js'; +import { SnakeNamingStrategy } from 'typeorm-naming-strategies'; +import path from 'node:path'; +import { getDirname, getFilename } from './../path-utils.js'; +import AiChatEntity from './entities/AiChat.js'; +import AiChatMessageEntity from './entities/AiChatMessage.js'; const fileName = getFilename(import.meta.url); diff --git a/backend/src/db/repositories/ColumnRepository.ts b/backend/src/db/repositories/ColumnRepository.ts index b8886a102..d15c3fc27 100644 --- a/backend/src/db/repositories/ColumnRepository.ts +++ b/backend/src/db/repositories/ColumnRepository.ts @@ -1,6 +1,6 @@ -import { v4 } from 'uuid'; -import type { ColumnDefinition as JsonColumnDefinition } from '../../common/index.js'; import { ColumnDefinitionEntity } from '../entities/index.js'; +import type { ColumnDefinition as JsonColumnDefinition } from '../../common/index.js'; +import { v4 } from 'uuid'; import { getBaseRepository } from './BaseRepository.js'; export default getBaseRepository(ColumnDefinitionEntity).extend({ diff --git a/backend/src/db/repositories/MessageRepository.ts b/backend/src/db/repositories/MessageRepository.ts index 2a5190ce7..7a38f753c 100644 --- a/backend/src/db/repositories/MessageRepository.ts +++ b/backend/src/db/repositories/MessageRepository.ts @@ -1,8 +1,8 @@ -import { cloneDeep } from 'lodash-es'; -import type { Message as JsonMessage } from '../../common/index.js'; -import MessageEntity from '../entities/Message.js'; import { SessionEntity } from '../entities/index.js'; +import type { Message as JsonMessage } from '../../common/index.js'; +import { cloneDeep } from 'lodash-es'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; +import MessageEntity from '../entities/Message.js'; export default getBaseRepository(MessageEntity).extend({ async saveFromJson( diff --git a/backend/src/db/repositories/PostGroupRepository.ts b/backend/src/db/repositories/PostGroupRepository.ts index ae579bcab..96a6fb88f 100644 --- a/backend/src/db/repositories/PostGroupRepository.ts +++ b/backend/src/db/repositories/PostGroupRepository.ts @@ -1,6 +1,6 @@ -import { cloneDeep } from 'lodash-es'; -import type { PostGroup as JsonPostGroup } from '../../common/index.js'; import { PostGroupEntity } from '../entities/index.js'; +import type { PostGroup as JsonPostGroup } from '../../common/index.js'; +import { cloneDeep } from 'lodash-es'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; export default getBaseRepository(PostGroupEntity).extend({ diff --git a/backend/src/db/repositories/PostRepository.ts b/backend/src/db/repositories/PostRepository.ts index bc2100c06..cebadf4e9 100644 --- a/backend/src/db/repositories/PostRepository.ts +++ b/backend/src/db/repositories/PostRepository.ts @@ -1,9 +1,9 @@ -import { cloneDeep } from 'lodash-es'; -import type { DeepPartial } from 'typeorm'; +import { SessionEntity, PostEntity } from '../entities/index.js'; +import SessionRepository from './SessionRepository.js'; import { type Post as JsonPost, defaultSession } from '../../common/index.js'; -import { PostEntity, SessionEntity } from '../entities/index.js'; +import { cloneDeep } from 'lodash-es'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; -import SessionRepository from './SessionRepository.js'; +import type { DeepPartial } from 'typeorm'; export default getBaseRepository(PostEntity).extend({ async updateFromJson( diff --git a/backend/src/db/repositories/SessionRepository.ts b/backend/src/db/repositories/SessionRepository.ts index 5bcfafbc7..6daf0653d 100644 --- a/backend/src/db/repositories/SessionRepository.ts +++ b/backend/src/db/repositories/SessionRepository.ts @@ -1,10 +1,10 @@ +import { SessionEntity } from '../entities/index.js'; +import ColumnRepository from './ColumnRepository.js'; import type { Session as JsonSession, SessionOptions, } from '../../common/index.js'; -import { SessionEntity } from '../entities/index.js'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; -import ColumnRepository from './ColumnRepository.js'; export default getBaseRepository(SessionEntity).extend({ async updateOptions( diff --git a/backend/src/db/repositories/SessionTemplateRepository.ts b/backend/src/db/repositories/SessionTemplateRepository.ts index d9689ea04..df3a087d1 100644 --- a/backend/src/db/repositories/SessionTemplateRepository.ts +++ b/backend/src/db/repositories/SessionTemplateRepository.ts @@ -1,12 +1,12 @@ -import { v4 } from 'uuid'; +import { SessionTemplateEntity } from '../entities/index.js'; import type { + SessionTemplate as JsonSessionTemplate, ColumnDefinition as JsonColumnDefinition, SessionOptions as JsonSessionOptions, - SessionTemplate as JsonSessionTemplate, } from '../../common/index.js'; -import { SessionTemplateEntity } from '../entities/index.js'; -import { getBaseRepository } from './BaseRepository.js'; +import { v4 } from 'uuid'; import { TemplateColumnRepository } from './index.js'; +import { getBaseRepository } from './BaseRepository.js'; export default getBaseRepository(SessionTemplateEntity).extend({ async saveFromJson( diff --git a/backend/src/db/repositories/SubscriptionRepository.ts b/backend/src/db/repositories/SubscriptionRepository.ts index 728017ab5..fdca25166 100644 --- a/backend/src/db/repositories/SubscriptionRepository.ts +++ b/backend/src/db/repositories/SubscriptionRepository.ts @@ -1,5 +1,5 @@ +import { type UserEntity, SubscriptionEntity } from '../entities/index.js'; import type { Plan } from '../../common/index.js'; -import { SubscriptionEntity, type UserEntity } from '../entities/index.js'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; export default getBaseRepository(SubscriptionEntity).extend({ diff --git a/backend/src/db/repositories/TemplateColumnRepository.ts b/backend/src/db/repositories/TemplateColumnRepository.ts index c04163c67..3da32986e 100644 --- a/backend/src/db/repositories/TemplateColumnRepository.ts +++ b/backend/src/db/repositories/TemplateColumnRepository.ts @@ -1,6 +1,6 @@ -import { v4 } from 'uuid'; -import type { ColumnDefinition as JsonColumnDefinition } from '../../common/index.js'; import { TemplateColumnDefinitionEntity } from '../entities/index.js'; +import type { ColumnDefinition as JsonColumnDefinition } from '../../common/index.js'; +import { v4 } from 'uuid'; import { getBaseRepository } from './BaseRepository.js'; export default getBaseRepository(TemplateColumnDefinitionEntity).extend({ diff --git a/backend/src/db/repositories/UserRepository.ts b/backend/src/db/repositories/UserRepository.ts index 2d4007491..a7e7f398f 100644 --- a/backend/src/db/repositories/UserRepository.ts +++ b/backend/src/db/repositories/UserRepository.ts @@ -1,6 +1,6 @@ -import { addDays } from 'date-fns'; -import type { FullUser, User as JsonUser } from '../../common/index.js'; import { UserEntity } from '../entities/index.js'; +import type { FullUser, User as JsonUser } from '../../common/index.js'; +import { addDays } from 'date-fns'; import { getBaseRepository, saveAndReload } from './BaseRepository.js'; export default getBaseRepository(UserEntity).extend({ diff --git a/backend/src/db/repositories/VoteRepository.ts b/backend/src/db/repositories/VoteRepository.ts index 5777d4647..898dc822f 100644 --- a/backend/src/db/repositories/VoteRepository.ts +++ b/backend/src/db/repositories/VoteRepository.ts @@ -1,5 +1,5 @@ -import type { Vote as JsonVote } from '../../common/index.js'; import { VoteEntity } from '../entities/index.js'; +import type { Vote as JsonVote } from '../../common/index.js'; import { getBaseRepository } from './BaseRepository.js'; export default getBaseRepository(VoteEntity).extend({ diff --git a/backend/src/game.ts b/backend/src/game.ts index 653719a57..2ee7298e2 100644 --- a/backend/src/game.ts +++ b/backend/src/game.ts @@ -1,66 +1,66 @@ -import chalk from 'chalk-template'; -import { differenceInSeconds } from 'date-fns'; -import moment from 'moment'; -import { RateLimiterMemory } from 'rate-limiter-flexible'; -import type { Server, Socket } from 'socket.io'; -import { QueryFailedError } from 'typeorm'; import { Actions } from './common/index.js'; import type { - Message, - Participant, Post, PostGroup, - Session, - SessionSettings, + Participant, UnauthorizedAccessPayload, - WebsocketMessage, - WsCancelVotesPayload, - WsDeleteGroupPayload, + WsUserData, + WsLikeUpdatePayload, + WsPostUpdatePayload, WsDeletePostPayload, - WsErrorPayload, + WsDeleteGroupPayload, + WsReceiveLikeUpdatePayload, WsErrorType, + Session, + WsErrorPayload, + WebsocketMessage, WsGroupUpdatePayload, - WsLikeUpdatePayload, - WsPostUpdatePayload, + WsUserReadyPayload, + Message, + WsCancelVotesPayload, WsReceiveCancelVotesPayload, - WsReceiveLikeUpdatePayload, WsReceiveTimerStartPayload, WsSaveSessionSettingsPayload, - WsUserData, - WsUserReadyPayload, + SessionSettings, } from './common/index.js'; -import config from './config.js'; -import { saveChatMessage } from './db/actions/chat.js'; -import { - deletePost, - deletePostGroup, - savePost, - savePostGroup, - updatePost, - updatePostGroup, -} from './db/actions/posts.js'; +import { RateLimiterMemory } from 'rate-limiter-flexible'; +import chalk from 'chalk-template'; +import moment from 'moment'; +import type { Server, Socket } from 'socket.io'; +import type { SessionEntity, UserView } from './db/entities/index.js'; +import { hasField } from './security/payload-checker.js'; import { - doesSessionExists, getSession, + updateOptions, + updateColumns, + updateName, + storeVisitor, getSessionWithVisitors, + toggleSessionLock, isAllowed, saveTemplate, - storeVisitor, + doesSessionExists, + wasSessionCreatedBy, toggleReady, - toggleSessionLock, - updateColumns, updateModerator, - updateName, - updateOptions, - wasSessionCreatedBy, } from './db/actions/sessions.js'; -import { startTimer, stopTimer } from './db/actions/timer.js'; import { getUser, getUserView } from './db/actions/users.js'; +import { + savePost, + savePostGroup, + deletePost, + deletePostGroup, + updatePost, + updatePostGroup, +} from './db/actions/posts.js'; +import config from './config.js'; import { cancelVotes, registerVote } from './db/actions/votes.js'; -import type { SessionEntity, UserView } from './db/entities/index.js'; -import { hasField } from './security/payload-checker.js'; import { deserialiseIds } from './utils.js'; import type { UserIds } from './utils.js'; +import { QueryFailedError } from 'typeorm'; +import { saveChatMessage } from './db/actions/chat.js'; +import { startTimer, stopTimer } from './db/actions/timer.js'; +import { differenceInSeconds } from 'date-fns'; const { ACK, diff --git a/backend/src/hardcoded.ts b/backend/src/hardcoded.ts index 0706cd427..0b064784b 100644 --- a/backend/src/hardcoded.ts +++ b/backend/src/hardcoded.ts @@ -1,6 +1,6 @@ -import chalk from 'chalk-template'; -import { v4 as uuid } from 'uuid'; import { encrypt, hashPassword } from './encryption.js'; +import { v4 as uuid } from 'uuid'; +import chalk from 'chalk-template'; if (!process.argv[2]) { console.log( diff --git a/backend/src/index.ts b/backend/src/index.ts index c9aab52b1..ba0769a5e 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,70 +1,70 @@ +import express from 'express'; +import * as socketIo from 'socket.io'; +import { createAdapter } from 'socket.io-redis'; +import { createClient } from 'redis'; +import connectRedis from 'connect-redis'; import http from 'node:http'; import chalk from 'chalk-template'; -import connectRedis from 'connect-redis'; -import cookieParser from 'cookie-parser'; -import express from 'express'; -import mung from 'express-mung'; -import rateLimit from 'express-rate-limit'; import session from 'express-session'; -import { noop } from 'lodash-es'; import passport from 'passport'; -import { createClient } from 'redis'; -import * as socketIo from 'socket.io'; -import { createAdapter } from 'socket.io-redis'; -import { QueryFailedError } from 'typeorm'; -import { v4 } from 'uuid'; -import adminRouter from './admin/router.js'; -import aiRouter from './ai/router.js'; +import db from './db/index.js'; +import config from './config.js'; import passportInit from './auth/passport.js'; -import registerPasswordUser from './auth/register/register-user.js'; import authRouter from './auth/router.js'; +import adminRouter from './admin/router.js'; +import stripeRouter from './stripe/router.js'; +import slackRouter from './slack/router.js'; +import game from './game.js'; +import { + getIdentityFromRequest, + getUserViewFromRequest, + getUserQuota, +} from './utils.js'; +import { hashPassword } from './encryption.js'; import type { - ChangeUserNamePayload, - CreateSessionPayload, - DeleteAccountPayload, RegisterPayload, - ResetChangePasswordPayload, + ValidateEmailPayload, ResetPasswordPayload, + ResetChangePasswordPayload, + CreateSessionPayload, SelfHostedCheckPayload, - ValidateEmailPayload, + DeleteAccountPayload, + ChangeUserNamePayload, } from './common/index.js'; -import config from './config.js'; -import { deleteAccount } from './db/actions/delete.js'; -import { createDemoSession } from './db/actions/demo.js'; -import { fetchLicence, validateLicence } from './db/actions/licences.js'; -import { mergeAnonymous } from './db/actions/merge.js'; +import registerPasswordUser from './auth/register/register-user.js'; +import { + sendVerificationEmail, + sendResetPassword, +} from './email/emailSender.js'; +import { v4 } from 'uuid'; import { createSession, + previousSessions, deleteSessions, getDefaultTemplate, - previousSessions, } from './db/actions/sessions.js'; import { - associateUserWithAdWordsCampaign, - getIdentityByUsername, - getPasswordIdentity, - getRelatedUsers, + updateUser, getUserView, + getPasswordIdentity, updateIdentity, - updateUser, + getIdentityByUsername, + associateUserWithAdWordsCampaign, + getRelatedUsers, } from './db/actions/users.js'; import type { TrackingInfo } from './db/actions/users.js'; -import db from './db/index.js'; -import { - sendResetPassword, - sendVerificationEmail, -} from './email/emailSender.js'; -import { hashPassword } from './encryption.js'; -import game from './game.js'; import { isLicenced } from './security/is-licenced.js'; +import rateLimit from 'express-rate-limit'; +import { fetchLicence, validateLicence } from './db/actions/licences.js'; import { hasField } from './security/payload-checker.js'; -import slackRouter from './slack/router.js'; -import stripeRouter from './stripe/router.js'; -import { - getIdentityFromRequest, - getUserQuota, - getUserViewFromRequest, -} from './utils.js'; +import mung from 'express-mung'; +import { QueryFailedError } from 'typeorm'; +import { deleteAccount } from './db/actions/delete.js'; +import { noop } from 'lodash-es'; +import { createDemoSession } from './db/actions/demo.js'; +import cookieParser from 'cookie-parser'; +import { mergeAnonymous } from './db/actions/merge.js'; +import aiRouter from './ai/router.js'; const realIpHeader = 'X-Forwarded-For'; const sessionSecret = `${config.SESSION_SECRET}-4.11.5`; // Increment to force re-auth diff --git a/backend/src/security/is-licenced.ts b/backend/src/security/is-licenced.ts index 35bf027c3..1d89704a0 100644 --- a/backend/src/security/is-licenced.ts +++ b/backend/src/security/is-licenced.ts @@ -1,10 +1,10 @@ -import chalkTemplate from 'chalk-template'; -import fetch from 'node-fetch'; import type { SelfHostedCheckPayload } from '../common/index.js'; import config from '../config.js'; -import { comparePassword, decrypt } from '../encryption.js'; +import fetch from 'node-fetch'; import wait from '../utils.js'; import type { LicenceMetadata } from './../types.js'; +import { comparePassword, decrypt } from '../encryption.js'; +import chalkTemplate from 'chalk-template'; let licenced: LicenceMetadata | null = null; diff --git a/backend/src/security/is-valid-domain.ts b/backend/src/security/is-valid-domain.ts index 142c2c700..23acd7f66 100644 --- a/backend/src/security/is-valid-domain.ts +++ b/backend/src/security/is-valid-domain.ts @@ -1,4 +1,4 @@ -import { isDisposable, isFree } from 'freemail'; +import { isFree, isDisposable } from 'freemail'; export default function isValidDomain(domain: string) { const email = `foo@${domain}`; diff --git a/backend/src/slack/router.ts b/backend/src/slack/router.ts index 246308ddd..e01f4a41b 100644 --- a/backend/src/slack/router.ts +++ b/backend/src/slack/router.ts @@ -1,7 +1,7 @@ import express, { type Router } from 'express'; import fetch from 'node-fetch'; -import config from '../config.js'; import { createSessionFromSlack } from '../db/actions/sessions.js'; +import config from '../config.js'; type SlackSlashCommand = { token: string; diff --git a/backend/src/stripe/products.ts b/backend/src/stripe/products.ts index de244bad1..da8f3c6d5 100644 --- a/backend/src/stripe/products.ts +++ b/backend/src/stripe/products.ts @@ -1,6 +1,6 @@ +import type { InternalProduct } from './types.js'; import type { Plan } from '../common/index.js'; import config from '../config.js'; -import type { InternalProduct } from './types.js'; export const teamPlan: InternalProduct = { name: 'Pro Team', diff --git a/backend/src/stripe/router.ts b/backend/src/stripe/router.ts index ff0a2a87d..307ea46ae 100644 --- a/backend/src/stripe/router.ts +++ b/backend/src/stripe/router.ts @@ -1,32 +1,32 @@ import express from 'express'; import type { Router } from 'express'; -import Stripe from 'stripe'; import type { CreateSubscriptionPayload, Product, StripeLocales, } from '../common/index.js'; import config from '../config.js'; +import Stripe from 'stripe'; +import type { UserIdentityEntity } from '../db/entities/index.js'; +import type { + StripeEvent, + CheckoutCompletedPayload, + SubscriptionDeletedPayload, +} from './types.js'; +import { plans, getProduct } from './products.js'; +import { getUserByEmail, updateUser } from '../db/actions/users.js'; import { registerLicence } from '../db/actions/licences.js'; +import { getIdentityFromRequest } from '../utils.js'; +import isValidDomain from '../security/is-valid-domain.js'; import { - activateSubscription, cancelSubscription, - getActiveSubscriptionWhereUserIsAdmin, + activateSubscription, getActiveSubscriptionWhereUserIsOwner, saveSubscription, startTrial, + getActiveSubscriptionWhereUserIsAdmin, } from '../db/actions/subscriptions.js'; -import { getUserByEmail, updateUser } from '../db/actions/users.js'; -import type { UserIdentityEntity } from '../db/entities/index.js'; -import isValidDomain from '../security/is-valid-domain.js'; -import { getIdentityFromRequest } from '../utils.js'; import { trackPurchase } from './../track/track.js'; -import { getProduct, plans } from './products.js'; -import type { - CheckoutCompletedPayload, - StripeEvent, - SubscriptionDeletedPayload, -} from './types.js'; const stripe = config.STRIPE_SECRET ? new Stripe(config.STRIPE_SECRET, { diff --git a/backend/src/stripe/types.ts b/backend/src/stripe/types.ts index 6b8bc6ab1..f19316393 100644 --- a/backend/src/stripe/types.ts +++ b/backend/src/stripe/types.ts @@ -1,4 +1,4 @@ -import type { CreateSubscriptionPayload, Product } from '../common/index.js'; +import type { Product, CreateSubscriptionPayload } from '../common/index.js'; export interface InternalProduct extends Product { productId: string; diff --git a/backend/src/track/track.ts b/backend/src/track/track.ts index 3ecb41584..4e3ee6c95 100644 --- a/backend/src/track/track.ts +++ b/backend/src/track/track.ts @@ -1,6 +1,6 @@ -import chalkTemplate from 'chalk-template'; -import request from 'request'; import config from './../config.js'; +import request from 'request'; +import chalkTemplate from 'chalk-template'; export function trackPurchase( /** diff --git a/backend/src/utils.ts b/backend/src/utils.ts index 9ac63a884..f4596eb8d 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -1,8 +1,8 @@ import type { Request } from 'express'; +import type { UserView, UserIdentityEntity } from './db/entities/index.js'; +import { getUserView, getUser, getIdentity } from './db/actions/users.js'; import type { Quota } from './common/index.js'; import { getNumberOfPosts } from './db/actions/posts.js'; -import { getIdentity, getUser, getUserView } from './db/actions/users.js'; -import type { UserIdentityEntity, UserView } from './db/entities/index.js'; export async function getUserViewFromRequest( request: Request,