Files
atlas-seller-kit/apps/worker/src/config.ts
T

57 lines
2.1 KiB
TypeScript

import { existsSync } from 'node:fs';
import { resolve } from 'node:path';
import { loadEnvFile } from 'node:process';
for (const directory of [
process.cwd(),
resolve(process.cwd(), '..'),
resolve(process.cwd(), '../..'),
]) {
const path = resolve(directory, '.env');
if (existsSync(path)) {
loadEnvFile(path);
break;
}
}
function required(name: string): string {
const value = process.env[name];
if (!value) throw new Error(`${name} is required`);
return value;
}
function objectStorageCredential(
accessKeyName: string,
localFallbackName: string,
): string {
return process.env[accessKeyName] || required(localFallbackName);
}
export const workerConfig = {
databaseUrl: required('DATABASE_URL'),
redisUrl: required('REDIS_URL'),
storeSecretEncryptionKey: required('STORE_SECRET_ENCRYPTION_KEY'),
legacyMinioEndpoint: process.env.LEGACY_MINIO_ENDPOINT ?? 'http://localhost:9000',
legacyMinioAccessKey: process.env.MINIO_ROOT_USER ?? '',
legacyMinioSecretKey: process.env.MINIO_ROOT_PASSWORD ?? '',
objectStorageProvider: process.env.OBJECT_STORAGE_PROVIDER ?? 'local_minio',
ozonImageDownloadOrigin: process.env.OZON_IMAGE_DOWNLOAD_ORIGIN ?? '',
ozonImageUrlTtlSeconds: Number(process.env.OZON_IMAGE_URL_TTL_SECONDS ?? 604800),
qiniuAccessKey: process.env.QINIU_ACCESS_KEY ?? process.env.OBJECT_STORAGE_ACCESS_KEY ?? '',
qiniuSecretKey: process.env.QINIU_SECRET_KEY ?? process.env.OBJECT_STORAGE_SECRET_KEY ?? '',
objectStorageEndpoint:
process.env.OBJECT_STORAGE_ENDPOINT ?? 'http://localhost:9000',
objectStorageRegion: process.env.OBJECT_STORAGE_REGION ?? 'us-east-1',
objectStorageBucket: process.env.OBJECT_STORAGE_BUCKET ?? 'atlas-assets',
objectStorageForcePathStyle:
(process.env.OBJECT_STORAGE_FORCE_PATH_STYLE ?? 'true') === 'true',
objectStorageAccessKey: objectStorageCredential(
'OBJECT_STORAGE_ACCESS_KEY',
'MINIO_ROOT_USER',
),
objectStorageSecretKey: objectStorageCredential(
'OBJECT_STORAGE_SECRET_KEY',
'MINIO_ROOT_PASSWORD',
),
};