diff --git a/backend/package.json b/backend/package.json index f99e834..7a7996f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,12 +3,12 @@ "version": "0.0.1", "description": "", "author": "", - "private": true, - "license": "UNLICENSED", - "files": [ - "dist" - ], - "scripts": { + "private": true, + "license": "UNLICENSED", + "files": [ + "dist" + ], + "scripts": { "build": "nest build", "lint": "biome check", "lint:write": "biome check --write", diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 9d14fa4..e5085d4 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -1,9 +1,9 @@ -import { Module } from "@nestjs/common"; import { CacheModule } from "@nestjs/cache-manager"; +import { Module } from "@nestjs/common"; import { ConfigModule, ConfigService } from "@nestjs/config"; -import { redisStore } from "cache-manager-redis-yet"; import { ScheduleModule } from "@nestjs/schedule"; import { ThrottlerModule } from "@nestjs/throttler"; +import { redisStore } from "cache-manager-redis-yet"; import { ApiKeysModule } from "./api-keys/api-keys.module"; import { AppController } from "./app.controller"; import { AppService } from "./app.service"; diff --git a/backend/src/auth/auth.controller.ts b/backend/src/auth/auth.controller.ts index bb4b6c4..c9a7848 100644 --- a/backend/src/auth/auth.controller.ts +++ b/backend/src/auth/auth.controller.ts @@ -4,7 +4,6 @@ import type { Request, Response } from "express"; import { getIronSession } from "iron-session"; import { AuthService } from "./auth.service"; import { LoginDto } from "./dto/login.dto"; -import { RefreshDto } from "./dto/refresh.dto"; import { RegisterDto } from "./dto/register.dto"; import { Verify2faDto } from "./dto/verify-2fa.dto"; import { getSessionOptions, SessionData } from "./session.config"; diff --git a/backend/src/config/env.schema.ts b/backend/src/config/env.schema.ts index 4c67cdb..fcb7544 100644 --- a/backend/src/config/env.schema.ts +++ b/backend/src/config/env.schema.ts @@ -33,7 +33,7 @@ export const envSchema = z.object({ MAIL_FROM: z.string().email(), DOMAIN_NAME: z.string(), - + // Sentry SENTRY_DSN: z.string().optional(), diff --git a/backend/src/contents/contents.controller.ts b/backend/src/contents/contents.controller.ts index 57bb23d..608278c 100644 --- a/backend/src/contents/contents.controller.ts +++ b/backend/src/contents/contents.controller.ts @@ -1,3 +1,4 @@ +import { CacheInterceptor, CacheTTL } from "@nestjs/cache-manager"; import { Body, Controller, @@ -5,6 +6,7 @@ import { Delete, Get, Header, + NotFoundException, Param, ParseBoolPipe, ParseIntPipe, @@ -15,9 +17,7 @@ import { UploadedFile, UseGuards, UseInterceptors, - NotFoundException, } from "@nestjs/common"; -import { CacheInterceptor, CacheTTL } from "@nestjs/cache-manager"; import { FileInterceptor } from "@nestjs/platform-express"; import type { Request, Response } from "express"; import { AuthGuard } from "../auth/guards/auth.guard"; @@ -130,9 +130,10 @@ export class ContentsController { } const userAgent = req.headers["user-agent"] || ""; - const isBot = /bot|googlebot|crawler|spider|robot|crawling|facebookexternalhit|twitterbot/i.test( - userAgent, - ); + const isBot = + /bot|googlebot|crawler|spider|robot|crawling|facebookexternalhit|twitterbot/i.test( + userAgent, + ); if (isBot) { const imageUrl = this.contentsService.getFileUrl(content.storageKey); diff --git a/backend/src/contents/contents.service.ts b/backend/src/contents/contents.service.ts index 33d0386..9e07f89 100644 --- a/backend/src/contents/contents.service.ts +++ b/backend/src/contents/contents.service.ts @@ -20,8 +20,8 @@ import { tags, users, } from "../database/schemas"; -import { MediaService } from "../media/media.service"; import type { MediaProcessingResult } from "../media/interfaces/media.interface"; +import { MediaService } from "../media/media.service"; import { S3Service } from "../s3/s3.service"; import { CreateContentDto } from "./dto/create-content.dto"; @@ -43,7 +43,12 @@ export class ContentsService { async uploadAndProcess( userId: string, file: Express.Multer.File, - data: { title: string; type: "meme" | "gif"; categoryId?: string; tags?: string[] }, + data: { + title: string; + type: "meme" | "gif"; + categoryId?: string; + tags?: string[]; + }, ) { // 0. Validation du format et de la taille const allowedMimeTypes = [ @@ -304,7 +309,8 @@ export class ContentsService { getFileUrl(storageKey: string): string { const endpoint = this.configService.get("S3_ENDPOINT"); const port = this.configService.get("S3_PORT"); - const protocol = this.configService.get("S3_USE_SSL") === true ? "https" : "http"; + const protocol = + this.configService.get("S3_USE_SSL") === true ? "https" : "http"; const bucket = this.configService.get("S3_BUCKET_NAME"); if (endpoint === "localhost" || endpoint === "127.0.0.1") { diff --git a/backend/src/contents/dto/upload-content.dto.ts b/backend/src/contents/dto/upload-content.dto.ts index de39007..ca4b284 100644 --- a/backend/src/contents/dto/upload-content.dto.ts +++ b/backend/src/contents/dto/upload-content.dto.ts @@ -1,4 +1,10 @@ -import { IsEnum, IsNotEmpty, IsOptional, IsString, IsUUID } from "class-validator"; +import { + IsEnum, + IsNotEmpty, + IsOptional, + IsString, + IsUUID, +} from "class-validator"; import { ContentType } from "./create-content.dto"; export class UploadContentDto { diff --git a/backend/src/media/media.service.ts b/backend/src/media/media.service.ts index 220a195..a444ab5 100644 --- a/backend/src/media/media.service.ts +++ b/backend/src/media/media.service.ts @@ -1,3 +1,7 @@ +import { readFile, unlink, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { Readable } from "node:stream"; import { BadRequestException, Injectable, @@ -7,10 +11,6 @@ import { import { ConfigService } from "@nestjs/config"; import * as NodeClam from "clamscan"; import ffmpeg from "fluent-ffmpeg"; -import { readFile, unlink, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { Readable } from "node:stream"; import sharp from "sharp"; import { v4 as uuidv4 } from "uuid"; import type { @@ -19,7 +19,9 @@ import type { } from "./interfaces/media.interface"; interface ClamScanner { - scanStream(stream: Readable): Promise<{ isInfected: boolean; viruses: string[] }>; + scanStream( + stream: Readable, + ): Promise<{ isInfected: boolean; viruses: string[] }>; } @Injectable() @@ -34,7 +36,7 @@ export class MediaService { private async initClamScan() { try { - // @ts-ignore + // @ts-expect-error const scanner = await new NodeClam().init({ clamdscan: { host: this.configService.get("CLAMAV_HOST", "localhost"),