57 lines
2.1 KiB
TypeScript
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',
|
|
),
|
|
};
|