|
1 | | -import { isNode, loadEnv } from '@shared/index'; |
| 1 | +import { getEnvVar, isNode } from '@shared/index'; |
2 | 2 | import type { TigrisIAMConfig } from './types'; |
3 | 3 |
|
4 | 4 | export const DEFAULT_ENDPOINTS = { |
5 | 5 | iam: 'https://iam.storageapi.dev', |
6 | 6 | mgmt: 'https://mgmt.storageapi.dev', |
7 | 7 | }; |
8 | 8 |
|
9 | | -function loadIAMConfig(): TigrisIAMConfig { |
10 | | - loadEnv(); |
11 | | - |
| 9 | +/** |
| 10 | + * Resolve the Tigris IAM configuration from the environment, on demand. |
| 11 | + * |
| 12 | + * Reads only `TIGRIS_`-prefixed variables — from `process.env`, falling back to |
| 13 | + * a private parse of `.env` — and never mutates `process.env`. There is no |
| 14 | + * module-level config and importing this module has no side effects: each |
| 15 | + * operation calls `getConfig()` when it needs the current configuration. |
| 16 | + */ |
| 17 | +export function getConfig(): TigrisIAMConfig { |
12 | 18 | const config: TigrisIAMConfig = { |
13 | 19 | iamEndpoint: DEFAULT_ENDPOINTS.iam, |
14 | 20 | mgmtEndpoint: DEFAULT_ENDPOINTS.mgmt, |
15 | 21 | }; |
16 | 22 |
|
17 | 23 | if (isNode()) { |
18 | | - config.iamEndpoint = process.env.TIGRIS_IAM_ENDPOINT; |
19 | | - config.mgmtEndpoint = process.env.TIGRIS_MGMT_ENDPOINT; |
20 | | - config.sessionToken = process.env.TIGRIS_SESSION_TOKEN; |
21 | | - config.organizationId = process.env.TIGRIS_ORGANIZATION_ID; |
22 | | - config.accessKeyId = process.env.TIGRIS_STORAGE_ACCESS_KEY_ID; |
23 | | - config.secretAccessKey = process.env.TIGRIS_STORAGE_SECRET_ACCESS_KEY; |
| 24 | + config.iamEndpoint = getEnvVar('TIGRIS_IAM_ENDPOINT'); |
| 25 | + config.mgmtEndpoint = getEnvVar('TIGRIS_MGMT_ENDPOINT'); |
| 26 | + config.sessionToken = getEnvVar('TIGRIS_SESSION_TOKEN'); |
| 27 | + config.organizationId = getEnvVar('TIGRIS_ORGANIZATION_ID'); |
| 28 | + config.accessKeyId = getEnvVar('TIGRIS_STORAGE_ACCESS_KEY_ID'); |
| 29 | + config.secretAccessKey = getEnvVar('TIGRIS_STORAGE_SECRET_ACCESS_KEY'); |
24 | 30 | } |
25 | 31 |
|
26 | 32 | return config; |
27 | 33 | } |
28 | | - |
29 | | -export const config: TigrisIAMConfig = loadIAMConfig(); |
|
0 commit comments