( authConfig: AuthConfig, cliConfigPath: string | undefined, apiClient: DefaultApiInterface, injectBlocks: PackageIdentifier[], isHeadless: boolean | undefined, )
| 41 | * with clear precedence and fallback logic in a single testable function. |
| 42 | */ |
| 43 | export async function loadConfiguration( |
| 44 | authConfig: AuthConfig, |
| 45 | cliConfigPath: string | undefined, |
| 46 | apiClient: DefaultApiInterface, |
| 47 | injectBlocks: PackageIdentifier[], |
| 48 | isHeadless: boolean | undefined, |
| 49 | ): Promise<ConfigLoadResult> { |
| 50 | const organizationId = getOrganizationId(authConfig); |
| 51 | const accessToken = getAccessToken(authConfig); |
| 52 | |
| 53 | // Step 1: Determine config source using precedence rules |
| 54 | const configSource = determineConfigSource( |
| 55 | authConfig, |
| 56 | cliConfigPath, |
| 57 | isHeadless, |
| 58 | ); |
| 59 | |
| 60 | // Step 2: Load configuration from the determined source |
| 61 | const config = await loadFromSource( |
| 62 | configSource, |
| 63 | accessToken, |
| 64 | organizationId ?? null, |
| 65 | apiClient, |
| 66 | injectBlocks, |
| 67 | ); |
| 68 | |
| 69 | // Step 3: Save config URI for session continuity |
| 70 | const uri = getUriFromSource(configSource); |
| 71 | if (uri) { |
| 72 | updateConfigUri(uri); |
| 73 | } |
| 74 | |
| 75 | return { config, source: configSource }; |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * Determines the configuration source using the specification's precedence rules: |
no test coverage detected