( ...providers: Array<CloudArtifactProvider | undefined> )
| 167 | } |
| 168 | |
| 169 | export function composeCloudArtifactProviders( |
| 170 | ...providers: Array<CloudArtifactProvider | undefined> |
| 171 | ): CloudArtifactProvider | undefined { |
| 172 | const activeProviders = providers.filter( |
| 173 | (provider): provider is CloudArtifactProvider => provider !== undefined, |
| 174 | ); |
| 175 | if (activeProviders.length === 0) return undefined; |
| 176 | return { |
| 177 | listCloudArtifacts: async (query) => { |
| 178 | for (const provider of activeProviders) { |
| 179 | const result = await provider.listCloudArtifacts?.(query); |
| 180 | if (result) return result; |
| 181 | } |
| 182 | return undefined; |
| 183 | }, |
| 184 | }; |
| 185 | } |
| 186 | |
| 187 | function composeLeaseProvider( |
| 188 | runtimes: ProviderDeviceRuntime[], |
no test coverage detected