refactor: consolidate backend services

Replace per-source services (LocationService, WeatherService,
TflService, FeedEngineService) with a single UserSessionManager
that owns all per-user state. Source creation is delegated to
thin FeedSourceProvider implementations per source type.

Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
2026-02-18 00:41:20 +00:00
parent f987253e53
commit 2f082b5833
19 changed files with 383 additions and 860 deletions

View File

@@ -0,0 +1,19 @@
import { TflSource, type ITflApi } from "@aris/source-tfl"
import type { FeedSourceProvider } from "../session/feed-source-provider.ts"
export type TflSourceProviderOptions =
| { apiKey: string; client?: never }
| { apiKey?: never; client: ITflApi }
export class TflSourceProvider implements FeedSourceProvider {
private readonly options: TflSourceProviderOptions
constructor(options: TflSourceProviderOptions) {
this.options = options
}
feedSourceForUser(_userId: string): TflSource {
return new TflSource(this.options)
}
}