Self-hosted multi-platform broadcast newsroom for activist collectives: publishing pipeline with group approval and DST-proof scheduling, TweetDeck-style column wall with hostile-content-safe rendering, live control room with Auto Director, bridged chat governance with polls and quorum, distributed sandboxed transcode workers, encrypted content-addressed archive, monthly analytics. MIT licensed. See README.md and docs/.
13 lines
371 B
TypeScript
13 lines
371 B
TypeScript
/** Standardized cursor page — every list-shaped connector method returns this. */
|
|
export interface Page<T, C = string> {
|
|
items: T[];
|
|
nextCursor?: C;
|
|
}
|
|
|
|
export function emptyPage<T>(): Page<T> {
|
|
return { items: [] };
|
|
}
|
|
|
|
export function pageOf<T>(items: T[], nextCursor?: string): Page<T> {
|
|
return nextCursor === undefined ? { items } : { items, nextCursor };
|
|
}
|