From 12998a965ff0f852aca67b9ee5a4d4017b6b4916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 14 Apr 2026 15:31:46 +0200 Subject: [PATCH] Change model source generator to yield data array with layer entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change AsyncCatalogModelSourceGenerator from yielding { layers: CatalogModelLayer[] } to { data: Array<{ layer: CatalogModelLayer }> } so that additional contextual data can be attached alongside each layer in the future. Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Fredrik Adelöw --- packages/catalog-model/report-alpha.api.md | 4 +++- .../src/model/sources/StaticCatalogModelSource.ts | 2 +- packages/catalog-model/src/model/sources/types.ts | 4 ++-- plugins/catalog-backend/src/model/ModelHolder.ts | 8 ++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/catalog-model/report-alpha.api.md b/packages/catalog-model/report-alpha.api.md index 903f0770a6..c323e4be5c 100644 --- a/packages/catalog-model/report-alpha.api.md +++ b/packages/catalog-model/report-alpha.api.md @@ -16,7 +16,9 @@ export interface AlphaEntity extends Entity { // @alpha export type AsyncCatalogModelSourceGenerator = AsyncGenerator< { - layers: CatalogModelLayer[]; + data: Array<{ + layer: CatalogModelLayer; + }>; }, void, void diff --git a/packages/catalog-model/src/model/sources/StaticCatalogModelSource.ts b/packages/catalog-model/src/model/sources/StaticCatalogModelSource.ts index 0b20a130a4..b1f4186b20 100644 --- a/packages/catalog-model/src/model/sources/StaticCatalogModelSource.ts +++ b/packages/catalog-model/src/model/sources/StaticCatalogModelSource.ts @@ -37,6 +37,6 @@ export class StaticCatalogModelSource implements CatalogModelSource { async *read( _options?: CatalogModelSourceReadOptions, ): AsyncCatalogModelSourceGenerator { - yield { layers: this.#layers }; + yield { data: this.#layers.map(layer => ({ layer })) }; } } diff --git a/packages/catalog-model/src/model/sources/types.ts b/packages/catalog-model/src/model/sources/types.ts index c5cfbf33c2..6174a4c0e3 100644 --- a/packages/catalog-model/src/model/sources/types.ts +++ b/packages/catalog-model/src/model/sources/types.ts @@ -31,7 +31,7 @@ export interface CatalogModelSourceReadOptions { * @alpha */ export type AsyncCatalogModelSourceGenerator = AsyncGenerator< - { layers: CatalogModelLayer[] }, + { data: Array<{ layer: CatalogModelLayer }> }, void, void >; @@ -49,7 +49,7 @@ export type AsyncCatalogModelSourceGenerator = AsyncGenerator< * class MyCatalogModelSource implements CatalogModelSource { * async *read() { * yield { - * layers: [defaultCatalogEntityModel] + * data: [{ layer: defaultCatalogEntityModel }] * }; * } * } diff --git a/plugins/catalog-backend/src/model/ModelHolder.ts b/plugins/catalog-backend/src/model/ModelHolder.ts index 96b2de46dc..78dc788818 100644 --- a/plugins/catalog-backend/src/model/ModelHolder.ts +++ b/plugins/catalog-backend/src/model/ModelHolder.ts @@ -62,11 +62,11 @@ export class ModelHolder { try { const result = await iter.next(); readyCount += 1; - const ls = result.value?.layers ?? []; - for (const layer of ls) { - logger.info(`Loaded catalog model layer: ${layer.layerId}`); + const entries = result.value?.data ?? []; + for (const entry of entries) { + logger.info(`Loaded catalog model layer: ${entry.layer.layerId}`); } - return ls; + return entries.map(entry => entry.layer); } finally { await iter.return(undefined); }