Tactical Media Broadcast Hub — initial release
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/.
This commit is contained in:
commit
aa5e262f3a
880 changed files with 111042 additions and 0 deletions
13
packages/egress/src/errors.ts
Normal file
13
packages/egress/src/errors.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
export type EgressErrorCode =
|
||||
| "INVALID_URL" | "SCHEME_DENIED" | "PORT_DENIED" | "DENIED_PRIVATE_ADDRESS"
|
||||
| "DNS_FAILED" | "BUDGET_EXHAUSTED" | "REDIRECT_LOOP" | "ORIGIN_DENIED"
|
||||
| "TIMEOUT" | "ABORTED" | "RESPONSE_TOO_LARGE" | "REQUEST_TOO_LARGE"
|
||||
| "NETWORK_ERROR" | "INVALID_PLAYLIST" | "INVALID_CONFIGURATION" | "INVALID_REQUEST" | "BUDGET_UNAVAILABLE";
|
||||
|
||||
/** Messages intentionally omit URLs, credentials and upstream error strings. */
|
||||
export class EgressError extends Error {
|
||||
constructor(public readonly code: EgressErrorCode, message: string, public readonly retryAfterMs?: number) {
|
||||
super(message);
|
||||
this.name = "EgressError";
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue