29 lines
797 B
TypeScript
29 lines
797 B
TypeScript
/** A track entry: [timestamp_seconds, artist, title] */
|
|
export type Track = [number, string, string];
|
|
|
|
/** The summary shape used in sidebar listings. */
|
|
export interface StreamSummary {
|
|
id: string;
|
|
stream_date: number;
|
|
filename: string;
|
|
title: string | null;
|
|
tags: string[];
|
|
length_seconds: number;
|
|
}
|
|
|
|
/** The full stream shape used on the detail/player page. */
|
|
export interface Stream extends StreamSummary {
|
|
format: string;
|
|
description: string | null;
|
|
// rendered at page load, so absent straight out of the database
|
|
descriptionHtml?: string;
|
|
tracks: Track[];
|
|
}
|
|
|
|
/** Partial stream downloads, as well as associated etag for cache validation. */
|
|
export interface PartialDownload {
|
|
received: number;
|
|
total: number;
|
|
etag: string | null;
|
|
}
|