Slave/upload api #5

Merged
nobswebdev merged 9 commits from slave/upload-api into master 2026-10-12 20:12:16 +00:00
6 changed files with 29 additions and 9 deletions
Showing only changes of commit 493843cc42 - Show all commits
+5 -2
View File
@@ -18,7 +18,6 @@ NODE_ENV=development
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
MAX_IMAGES_PER_UPLOAD=10
MULTER_MAX_FILE_BYTES=10485760
ALTCHA_ENABLED=true
@@ -32,7 +31,11 @@ THROTTLE_LIMIT=1000
THROTTLE_UPLOAD_TTL_MS=60000
THROTTLE_UPLOAD_LIMIT=20
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD=10
VALIDATION_UPLOAD_MAX_VIEWS_MAX=1000000
VITE_API_BASE_URL=http://localhost:3000/api
VITE_CLEARNET_DOMAIN=localhost:5173
VITE_ONION_HOSTNAME=
VITE_MAX_IMAGES_PER_UPLOAD=10
VITE_VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD=10
VITE_VALIDATION_UPLOAD_MAX_VIEWS_MAX=1000000
+4
View File
@@ -49,6 +49,10 @@ export const getAppConfig = (): AppConfig => {
uploadThrottle: {
ttlMs: envInt('THROTTLE_UPLOAD_TTL_MS'),
limit: envInt('THROTTLE_UPLOAD_LIMIT')
},
validation: {
maxImagesPerUpload: envInt('VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD'),
uploadMaxViewsMax: envInt('VALIDATION_UPLOAD_MAX_VIEWS_MAX')
}
};
};
+2 -1
View File
@@ -11,7 +11,7 @@ const validConfig = (overrides: Record<string, unknown> = {}): Record<string, un
POSTGRES_PORT: 5432,
POSTGRES_MIGRATIONS_RUN: 'false',
CORS_ORIGINS: 'http://localhost:5173',
MAX_IMAGES_PER_UPLOAD: 10,
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD: 10,
MULTER_MAX_FILE_BYTES: 10485760,
ALTCHA_ENABLED: 'true',
ALTCHA_HMAC_KEY: 'secret',
@@ -21,6 +21,7 @@ const validConfig = (overrides: Record<string, unknown> = {}): Record<string, un
THROTTLE_LIMIT: 1000,
THROTTLE_UPLOAD_TTL_MS: 60000,
THROTTLE_UPLOAD_LIMIT: 20,
VALIDATION_UPLOAD_MAX_VIEWS_MAX: 1_000_000,
...overrides
});
+12 -6
View File
@@ -45,12 +45,6 @@ class EnvironmentVariables {
@IsString()
CORS_ORIGINS: string;
@IsNotEmpty()
@IsNumber()
@Min(1)
@Max(100)
MAX_IMAGES_PER_UPLOAD: number;
@IsNotEmpty()
@IsNumber()
@Min(1)
@@ -100,6 +94,18 @@ class EnvironmentVariables {
@Min(1)
@Max(10_000)
THROTTLE_UPLOAD_LIMIT: number;
@IsNotEmpty()
@IsNumber()
@Min(1)
@Max(100)
VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD: number;
@IsNotEmpty()
@IsNumber()
@Min(1)
@Max(10_000_000)
VALIDATION_UPLOAD_MAX_VIEWS_MAX: number;
}
export const validate = (config: Record<string, unknown>) => {
+2
View File
@@ -1,5 +1,6 @@
import { NodeEnv } from './NodeEnv';
import { ThrottleConfig } from './ThrottleConfig';
import { ValidationConfig } from './ValidationConfig';
export type AppConfig = {
port: number;
@@ -7,4 +8,5 @@ export type AppConfig = {
corsOrigins: string[];
throttle: ThrottleConfig;
uploadThrottle: ThrottleConfig;
validation: ValidationConfig;
};
+4
View File
@@ -0,0 +1,4 @@
export type ValidationConfig = {
maxImagesPerUpload: number;
uploadMaxViewsMax: number;
};