From 013bf46e1fda38d2de935c56cecc3b5fb8614950 Mon Sep 17 00:00:00 2001 From: kenneth Date: Sun, 1 Mar 2026 17:06:58 +0000 Subject: [PATCH] feat: pass context to feed post-processors Post-processors now receive Context as their 2nd parameter, allowing them to use contextual data (time, location, etc.) when producing enhancements. Co-authored-by: Ona --- packages/aris-core/src/feed-engine.ts | 7 ++++--- .../aris-core/src/feed-post-processor.test.ts | 20 ++++++++----------- packages/aris-core/src/feed-post-processor.ts | 3 ++- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/aris-core/src/feed-engine.ts b/packages/aris-core/src/feed-engine.ts index 1797365..5af7780 100644 --- a/packages/aris-core/src/feed-engine.ts +++ b/packages/aris-core/src/feed-engine.ts @@ -177,7 +177,7 @@ export class FeedEngine { items: processedItems, groupedItems, errors: postProcessorErrors, - } = await this.applyPostProcessors(items as TItems[], errors) + } = await this.applyPostProcessors(items as TItems[], context, errors) const result: FeedResult = { context, @@ -294,6 +294,7 @@ export class FeedEngine { private async applyPostProcessors( items: TItems[], + context: Context, errors: SourceError[], ): Promise<{ items: TItems[]; groupedItems: ItemGroup[]; errors: SourceError[] }> { let currentItems = items @@ -303,7 +304,7 @@ export class FeedEngine { for (const processor of this.postProcessors) { const snapshot = currentItems try { - const enhancement = await processor(currentItems) + const enhancement = await processor(currentItems, context) if (enhancement.additionalItems?.length) { // Post-processors operate on FeedItem[] without knowledge of TItems. @@ -399,7 +400,7 @@ export class FeedEngine { items: processedItems, groupedItems, errors: postProcessorErrors, - } = await this.applyPostProcessors(items as TItems[], errors) + } = await this.applyPostProcessors(items as TItems[], this.context, errors) const result: FeedResult = { context: this.context, diff --git a/packages/aris-core/src/feed-post-processor.test.ts b/packages/aris-core/src/feed-post-processor.test.ts index 00ce945..356a98a 100644 --- a/packages/aris-core/src/feed-post-processor.test.ts +++ b/packages/aris-core/src/feed-post-processor.test.ts @@ -333,12 +333,10 @@ describe("FeedPostProcessor", () => { }, } - const engine = new FeedEngine() - .register(source) - .registerPostProcessor(async () => { - callCount++ - return {} - }) + const engine = new FeedEngine().register(source).registerPostProcessor(async () => { + callCount++ + return {} + }) engine.start() @@ -377,12 +375,10 @@ describe("FeedPostProcessor", () => { }, } - const engine = new FeedEngine() - .register(source) - .registerPostProcessor(async () => { - callCount++ - return {} - }) + const engine = new FeedEngine().register(source).registerPostProcessor(async () => { + callCount++ + return {} + }) engine.start() diff --git a/packages/aris-core/src/feed-post-processor.ts b/packages/aris-core/src/feed-post-processor.ts index 0b211e3..28b6cba 100644 --- a/packages/aris-core/src/feed-post-processor.ts +++ b/packages/aris-core/src/feed-post-processor.ts @@ -1,3 +1,4 @@ +import type { Context } from "./context" import type { FeedItem } from "./feed" export interface ItemGroup { @@ -20,4 +21,4 @@ export interface FeedEnhancement { * A function that transforms feed items and produces enhancement directives. * Use named functions for meaningful error attribution. */ -export type FeedPostProcessor = (items: FeedItem[]) => Promise +export type FeedPostProcessor = (items: FeedItem[], context: Context) => Promise