mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-20 17:11:17 +00:00
Compare commits
1 Commits
2717ec1b30
...
feat/post-
| Author | SHA1 | Date | |
|---|---|---|---|
|
013bf46e1f
|
@@ -177,7 +177,7 @@ export class FeedEngine<TItems extends FeedItem = FeedItem> {
|
|||||||
items: processedItems,
|
items: processedItems,
|
||||||
groupedItems,
|
groupedItems,
|
||||||
errors: postProcessorErrors,
|
errors: postProcessorErrors,
|
||||||
} = await this.applyPostProcessors(items as TItems[], errors)
|
} = await this.applyPostProcessors(items as TItems[], context, errors)
|
||||||
|
|
||||||
const result: FeedResult<TItems> = {
|
const result: FeedResult<TItems> = {
|
||||||
context,
|
context,
|
||||||
@@ -294,6 +294,7 @@ export class FeedEngine<TItems extends FeedItem = FeedItem> {
|
|||||||
|
|
||||||
private async applyPostProcessors(
|
private async applyPostProcessors(
|
||||||
items: TItems[],
|
items: TItems[],
|
||||||
|
context: Context,
|
||||||
errors: SourceError[],
|
errors: SourceError[],
|
||||||
): Promise<{ items: TItems[]; groupedItems: ItemGroup[]; errors: SourceError[] }> {
|
): Promise<{ items: TItems[]; groupedItems: ItemGroup[]; errors: SourceError[] }> {
|
||||||
let currentItems = items
|
let currentItems = items
|
||||||
@@ -303,7 +304,7 @@ export class FeedEngine<TItems extends FeedItem = FeedItem> {
|
|||||||
for (const processor of this.postProcessors) {
|
for (const processor of this.postProcessors) {
|
||||||
const snapshot = currentItems
|
const snapshot = currentItems
|
||||||
try {
|
try {
|
||||||
const enhancement = await processor(currentItems)
|
const enhancement = await processor(currentItems, context)
|
||||||
|
|
||||||
if (enhancement.additionalItems?.length) {
|
if (enhancement.additionalItems?.length) {
|
||||||
// Post-processors operate on FeedItem[] without knowledge of TItems.
|
// Post-processors operate on FeedItem[] without knowledge of TItems.
|
||||||
@@ -399,7 +400,7 @@ export class FeedEngine<TItems extends FeedItem = FeedItem> {
|
|||||||
items: processedItems,
|
items: processedItems,
|
||||||
groupedItems,
|
groupedItems,
|
||||||
errors: postProcessorErrors,
|
errors: postProcessorErrors,
|
||||||
} = await this.applyPostProcessors(items as TItems[], errors)
|
} = await this.applyPostProcessors(items as TItems[], this.context, errors)
|
||||||
|
|
||||||
const result: FeedResult<TItems> = {
|
const result: FeedResult<TItems> = {
|
||||||
context: this.context,
|
context: this.context,
|
||||||
|
|||||||
@@ -333,12 +333,10 @@ describe("FeedPostProcessor", () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const engine = new FeedEngine()
|
const engine = new FeedEngine().register(source).registerPostProcessor(async () => {
|
||||||
.register(source)
|
callCount++
|
||||||
.registerPostProcessor(async () => {
|
return {}
|
||||||
callCount++
|
})
|
||||||
return {}
|
|
||||||
})
|
|
||||||
|
|
||||||
engine.start()
|
engine.start()
|
||||||
|
|
||||||
@@ -377,12 +375,10 @@ describe("FeedPostProcessor", () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const engine = new FeedEngine()
|
const engine = new FeedEngine().register(source).registerPostProcessor(async () => {
|
||||||
.register(source)
|
callCount++
|
||||||
.registerPostProcessor(async () => {
|
return {}
|
||||||
callCount++
|
})
|
||||||
return {}
|
|
||||||
})
|
|
||||||
|
|
||||||
engine.start()
|
engine.start()
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Context } from "./context"
|
||||||
import type { FeedItem } from "./feed"
|
import type { FeedItem } from "./feed"
|
||||||
|
|
||||||
export interface ItemGroup {
|
export interface ItemGroup {
|
||||||
@@ -20,4 +21,4 @@ export interface FeedEnhancement {
|
|||||||
* A function that transforms feed items and produces enhancement directives.
|
* A function that transforms feed items and produces enhancement directives.
|
||||||
* Use named functions for meaningful error attribution.
|
* Use named functions for meaningful error attribution.
|
||||||
*/
|
*/
|
||||||
export type FeedPostProcessor = (items: FeedItem[]) => Promise<FeedEnhancement>
|
export type FeedPostProcessor = (items: FeedItem[], context: Context) => Promise<FeedEnhancement>
|
||||||
|
|||||||
Reference in New Issue
Block a user