diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts index 0df71dfe50..ac6749b1a5 100644 --- a/packages/config-loader/src/loader.ts +++ b/packages/config-loader/src/loader.ts @@ -120,13 +120,13 @@ export async function loadConfig( const abortController = new AbortController(); options.watch?.stopSignal?.then(() => abortController.abort()); - for await (const { data } of source.readConfigData({ + for await (const { configs } of source.readConfigData({ signal: abortController.signal, })) { if (loaded) { - options.watch?.onChange(data); + options.watch?.onChange(configs); } else { - resolve({ appConfigs: data }); + resolve({ appConfigs: configs }); loaded = true; if (options.watch) { diff --git a/packages/config-loader/src/sources/ConfigSources.ts b/packages/config-loader/src/sources/ConfigSources.ts index bd4c446964..13ab41cedd 100644 --- a/packages/config-loader/src/sources/ConfigSources.ts +++ b/packages/config-loader/src/sources/ConfigSources.ts @@ -240,14 +240,14 @@ export class ConfigSources { let config: ObservableConfigProxy | undefined = undefined; try { const abortController = new AbortController(); - for await (const { data } of source.readConfigData({ + for await (const { configs } of source.readConfigData({ signal: abortController.signal, })) { if (config) { - config.setConfig(ConfigReader.fromConfigs(data)); + config.setConfig(ConfigReader.fromConfigs(configs)); } else { config = ObservableConfigProxy.create(abortController); - config!.setConfig(ConfigReader.fromConfigs(data)); + config!.setConfig(ConfigReader.fromConfigs(configs)); resolve(config); } } diff --git a/packages/config-loader/src/sources/EnvConfigSource.ts b/packages/config-loader/src/sources/EnvConfigSource.ts index 6bb2402767..f2c74704c4 100644 --- a/packages/config-loader/src/sources/EnvConfigSource.ts +++ b/packages/config-loader/src/sources/EnvConfigSource.ts @@ -17,7 +17,7 @@ import { AppConfig } from '@backstage/config'; import { assertError } from '@backstage/errors'; import { JsonObject } from '@backstage/types'; -import { ConfigSource, ConfigSourceData } from './types'; +import { AsyncConfigSourceIterator, ConfigSource } from './types'; export class EnvConfigSource implements ConfigSource { static create(options: { @@ -32,9 +32,9 @@ export class EnvConfigSource implements ConfigSource { private readonly env: { [name: string]: string | undefined }, ) {} - async *readConfigData(): AsyncIterableIterator<{ data: ConfigSourceData[] }> { - const data = readEnvConfig(this.env); - yield { data }; + async *readConfigData(): AsyncConfigSourceIterator { + const configs = readEnvConfig(this.env); + yield { configs }; return; } } diff --git a/packages/config-loader/src/sources/FileConfigSource.ts b/packages/config-loader/src/sources/FileConfigSource.ts index 765b943f42..f7b98c26cb 100644 --- a/packages/config-loader/src/sources/FileConfigSource.ts +++ b/packages/config-loader/src/sources/FileConfigSource.ts @@ -103,14 +103,14 @@ export class FileConfigSource implements ConfigSource { watcher.close(); }); - yield { data: await readConfigFile() }; + yield { configs: await readConfigFile() }; for (;;) { const event = await this.#waitForEvent(watcher, signal); if (event === 'abort') { return; } - yield { data: await readConfigFile() }; + yield { configs: await readConfigFile() }; } } diff --git a/packages/config-loader/src/sources/MergedConfigSource.test.ts b/packages/config-loader/src/sources/MergedConfigSource.test.ts index 0eb3903df7..1a01ba1176 100644 --- a/packages/config-loader/src/sources/MergedConfigSource.test.ts +++ b/packages/config-loader/src/sources/MergedConfigSource.test.ts @@ -112,22 +112,22 @@ describe('MergedConfigSource', () => { ); const sourceA: ConfigSource = { async *readConfigData() { - yield { data: [] }; + yield { configs: [] }; }, }; const sourceD: ConfigSource = { async *readConfigData() { - yield { data: [] }; + yield { configs: [] }; }, }; const sourceB: ConfigSource = { async *readConfigData() { - yield { data: [] }; + yield { configs: [] }; }, }; const sourceC: ConfigSource = { async *readConfigData() { - yield { data: [] }; + yield { configs: [] }; }, }; diff --git a/packages/config-loader/src/sources/MergedConfigSource.ts b/packages/config-loader/src/sources/MergedConfigSource.ts index 2b67bb7080..d59a3d2a0b 100644 --- a/packages/config-loader/src/sources/MergedConfigSource.ts +++ b/packages/config-loader/src/sources/MergedConfigSource.ts @@ -49,20 +49,23 @@ export class MergedConfigSource implements ConfigSource { ): AsyncConfigSourceIterator { const its = this.sources.map(source => source.readConfigData(options)); const initialResults = await Promise.all(its.map(it => it.next())); - const data = initialResults.map((result, i) => { + const configs = initialResults.map((result, i) => { if (result.done) { throw new Error( `Config source ${String(this.sources[i])} returned no data`, ); } - return result.value.data; + return result.value.configs; }); - yield { data: data.flat(1) }; + yield { configs: configs.flat(1) }; const results: Array< | Promise< - readonly [number, IteratorResult<{ data: ConfigSourceData[] }, void>] + readonly [ + number, + IteratorResult<{ configs: ConfigSourceData[] }, void>, + ] > | undefined > = its.map((it, i) => nextWithIndex(it, i)); @@ -74,8 +77,8 @@ export class MergedConfigSource implements ConfigSource { results[i] = undefined; } else { results[i] = nextWithIndex(its[i], i); - data[i] = result.value.data; - yield { data: data.flat(1) }; + configs[i] = result.value.configs; + yield { configs: configs.flat(1) }; } } catch (error) { const source = this.sources[error.index]; diff --git a/packages/config-loader/src/sources/MutableConfigSource.test.ts b/packages/config-loader/src/sources/MutableConfigSource.test.ts index 98c78005e4..d26941b5b1 100644 --- a/packages/config-loader/src/sources/MutableConfigSource.test.ts +++ b/packages/config-loader/src/sources/MutableConfigSource.test.ts @@ -107,7 +107,7 @@ describe('MutableConfigSource', () => { const source = MutableConfigSource.create({ data: { a: 1 } }); const resultsPromise = readAll(source); - for await (const { data } of source.readConfigData()) { + for await (const { configs: data } of source.readConfigData()) { const a = data[0].data.a as number; if (a < 3) { source.setData({ a: a + 1 }); diff --git a/packages/config-loader/src/sources/MutableConfigSource.ts b/packages/config-loader/src/sources/MutableConfigSource.ts index e9a5432d36..2cf5fa6bbd 100644 --- a/packages/config-loader/src/sources/MutableConfigSource.ts +++ b/packages/config-loader/src/sources/MutableConfigSource.ts @@ -50,7 +50,7 @@ export class MutableConfigSource implements ConfigSource { let deferredPromise = this.#deferred.promise; if (this.#currentData !== undefined) { - yield { data: [{ data: this.#currentData, context: this.#context }] }; + yield { configs: [{ data: this.#currentData, context: this.#context }] }; } for (;;) { @@ -64,7 +64,9 @@ export class MutableConfigSource implements ConfigSource { deferredPromise = this.#deferred.promise; if (this.#currentData !== undefined) { - yield { data: [{ data: this.#currentData, context: this.#context }] }; + yield { + configs: [{ data: this.#currentData, context: this.#context }], + }; } } } diff --git a/packages/config-loader/src/sources/RemoteConfigSource.ts b/packages/config-loader/src/sources/RemoteConfigSource.ts index 1180ed2e80..b7fb5b81af 100644 --- a/packages/config-loader/src/sources/RemoteConfigSource.ts +++ b/packages/config-loader/src/sources/RemoteConfigSource.ts @@ -66,7 +66,7 @@ export class RemoteConfigSource implements ConfigSource { ): AsyncConfigSourceIterator { let data = await this.#load(); - yield { data: [{ data, context: this.#url }] }; + yield { configs: [{ data, context: this.#url }] }; for (;;) { if (options?.signal?.aborted) { @@ -78,7 +78,7 @@ export class RemoteConfigSource implements ConfigSource { const newData = await this.#load(options?.signal); if (newData && !isEqual(data, newData)) { data = newData; - yield { data: [{ data, context: this.#url }] }; + yield { configs: [{ data, context: this.#url }] }; } } catch (error) { console.error(`Failed to read config from ${this.#url}, ${error}`); diff --git a/packages/config-loader/src/sources/StaticConfigSource.ts b/packages/config-loader/src/sources/StaticConfigSource.ts index cc1098198a..22b53abded 100644 --- a/packages/config-loader/src/sources/StaticConfigSource.ts +++ b/packages/config-loader/src/sources/StaticConfigSource.ts @@ -67,7 +67,7 @@ class StaticObservableConfigSource implements ConfigSource { return; } while (queue.length > 0) { - yield { data: [{ data: queue.shift()!, context: this.context }] }; + yield { configs: [{ data: queue.shift()!, context: this.context }] }; } } } @@ -87,7 +87,7 @@ export class StaticConfigSource implements ConfigSource { if (!data) { return { async *readConfigData(): AsyncConfigSourceIterator { - yield { data: [] }; + yield { configs: [] }; return; }, }; @@ -104,7 +104,7 @@ export class StaticConfigSource implements ConfigSource { return { async *readConfigData(): AsyncConfigSourceIterator { for await (const value of data) { - yield { data: [{ data: value, context }] }; + yield { configs: [{ data: value, context }] }; } }, }; @@ -119,7 +119,7 @@ export class StaticConfigSource implements ConfigSource { ) {} async *readConfigData(): AsyncConfigSourceIterator { - yield { data: [{ data: await this.promise, context: this.context }] }; + yield { configs: [{ data: await this.promise, context: this.context }] }; return; } } diff --git a/packages/config-loader/src/sources/__testUtils__/testUtils.ts b/packages/config-loader/src/sources/__testUtils__/testUtils.ts index 2701a80f52..81746b32c8 100644 --- a/packages/config-loader/src/sources/__testUtils__/testUtils.ts +++ b/packages/config-loader/src/sources/__testUtils__/testUtils.ts @@ -41,7 +41,7 @@ export async function readAll( const results: ConfigSourceData[][] = []; try { - for await (const { data } of source.readConfigData({ signal })) { + for await (const { configs: data } of source.readConfigData({ signal })) { results.push(data); } } catch (error) { @@ -58,7 +58,7 @@ export function simpleSource( return { async *readConfigData() { for (const d of data) { - yield { data: [{ data: d, context }] }; + yield { configs: [{ data: d, context }] }; } }, }; diff --git a/packages/config-loader/src/sources/types.ts b/packages/config-loader/src/sources/types.ts index 626a2a63f3..2c1641a526 100644 --- a/packages/config-loader/src/sources/types.ts +++ b/packages/config-loader/src/sources/types.ts @@ -43,9 +43,9 @@ export interface ReadConfigDataOptions { * @public */ export interface AsyncConfigSourceIterator - extends AsyncIterator<{ data: ConfigSourceData[] }, void, void> { + extends AsyncIterator<{ configs: ConfigSourceData[] }, void, void> { [Symbol.asyncIterator](): AsyncIterator< - { data: ConfigSourceData[] }, + { configs: ConfigSourceData[] }, void, void >; @@ -64,7 +64,7 @@ export interface AsyncConfigSourceIterator * class MyConfigSource implements ConfigSource { * async *readConfigData() { * yield { - * data: [{ + * config: [{ * context: 'example', * data: { backend: { baseUrl: 'http://localhost' } } * }]