Files
HexaHost-GameCloud/packages/storage/src/config.ts
smueller 4262464cd5
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 9s
CI / Go — edge-gateway build (push) Successful in 13s
Phase4
2026-06-26 12:32:27 +02:00

29 lines
844 B
TypeScript

import { z } from 'zod';
export const storageConfigSchema = z.object({
S3_ENDPOINT: z.string().url(),
S3_REGION: z.string().min(1).default('us-east-1'),
S3_BUCKET: z.string().min(1),
S3_ACCESS_KEY: z.string().min(1),
S3_SECRET_KEY: z.string().min(1),
S3_FORCE_PATH_STYLE: z
.string()
.optional()
.transform((value) => value === 'true' || value === '1'),
});
export type StorageConfig = z.infer<typeof storageConfigSchema>;
export function loadStorageConfig(
env: Record<string, string | undefined> = process.env,
): StorageConfig {
return storageConfigSchema.parse({
S3_ENDPOINT: env['S3_ENDPOINT'],
S3_REGION: env['S3_REGION'],
S3_BUCKET: env['S3_BUCKET'],
S3_ACCESS_KEY: env['S3_ACCESS_KEY'],
S3_SECRET_KEY: env['S3_SECRET_KEY'],
S3_FORCE_PATH_STYLE: env['S3_FORCE_PATH_STYLE'],
});
}