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/.
20 lines
1 KiB
TypeScript
20 lines
1 KiB
TypeScript
import { HostBudgets, type HostBudgetOptions } from "./budget.js";
|
|
import { EgressPolicy, type EgressPolicyOptions } from "./policy.js";
|
|
export interface EgressClientOptions extends HostBudgetOptions, EgressPolicyOptions {
|
|
timeoutMs?: number;
|
|
maxResponseBytes?: number;
|
|
maxRequestBytes?: number;
|
|
maxRedirects?: number;
|
|
}
|
|
export interface EgressRequestOptions {
|
|
hostClass: string;
|
|
/** true pins to the initial origin; a URL string explicitly pins to that origin. */
|
|
pinnedOrigin?: boolean | string | URL;
|
|
}
|
|
export declare function createEgressClient(options: EgressClientOptions): {
|
|
egressFetch: (raw: string | URL, init: RequestInit | undefined, context: EgressRequestOptions) => Promise<Response>;
|
|
policy: EgressPolicy;
|
|
budgets: HostBudgets;
|
|
};
|
|
/** Stateless convenience form. Reuse createEgressClient when pool/config are fixed. */
|
|
export declare function egressFetch(url: string | URL, init: RequestInit | undefined, options: EgressClientOptions & EgressRequestOptions): Promise<Response>;
|