From b73e603c90dc31c85de7ea13206913fc0cc8b732 Mon Sep 17 00:00:00 2001 From: kenneth Date: Sun, 18 Jan 2026 20:28:54 +0000 Subject: [PATCH] feat(core): return RefreshResult from ContextBridge.refresh() Surfaces provider errors through RefreshResult.errors instead of silently ignoring them. Co-authored-by: Ona --- packages/aris-core/src/context-bridge.ts | 21 +++++++++++++++++++-- packages/aris-core/src/index.ts | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/aris-core/src/context-bridge.ts b/packages/aris-core/src/context-bridge.ts index 469cdfe..2599e6c 100644 --- a/packages/aris-core/src/context-bridge.ts +++ b/packages/aris-core/src/context-bridge.ts @@ -5,6 +5,15 @@ interface ContextUpdatable { pushContextUpdate(update: Partial): void } +export interface ProviderError { + key: string + error: Error +} + +export interface RefreshResult { + errors: ProviderError[] +} + /** * Bridges context providers to a feed controller. * @@ -55,10 +64,11 @@ export class ContextBridge { /** * Gathers current values from all providers and pushes to controller. * Use for manual refresh when user pulls to refresh. - * Errors from individual providers are silently ignored. + * Returns errors from providers that failed to fetch. */ - async refresh(): Promise { + async refresh(): Promise { const updates: Partial = {} + const errors: ProviderError[] = [] const entries = Array.from(this.providers.entries()) const results = await Promise.allSettled( @@ -69,10 +79,17 @@ export class ContextBridge { const result = results[i] if (result?.status === "fulfilled") { updates[key] = result.value + } else if (result?.status === "rejected") { + errors.push({ + key, + error: result.reason instanceof Error ? result.reason : new Error(String(result.reason)), + }) } }) this.controller.pushContextUpdate(updates) + + return { errors } } /** diff --git a/packages/aris-core/src/index.ts b/packages/aris-core/src/index.ts index b86df0b..6017d6a 100644 --- a/packages/aris-core/src/index.ts +++ b/packages/aris-core/src/index.ts @@ -12,6 +12,7 @@ export type { DataSource } from "./data-source" export type { ContextProvider } from "./context-provider" // Context Bridge +export type { ProviderError, RefreshResult } from "./context-bridge" export { ContextBridge } from "./context-bridge" // Reconciler