A dump is what users post: a link or a file, with a title and a note. This module types it as the API sends it, with its link preview and the bodies that create and edit it. The backend's dump-service.ts produces these types and the frontend's dump pages and create form consume them.

Functions

f
dumpFileVersion(dump: { fileSize?: number; createdAt?: Date; updatedAt?: Date; }): string

Returns a file dump's version, which the file and thumbnail URLs carry as ?v=: the frontend's dumpFileUrl and dumpThumbnailUrl, and the digest's thumbnails. It changes whenever the file may have, so the file and thumbnail routes cache a URL naming the current one for good and revalidate any other. Without its dates, a dump gets a version no route serves as current.

Interfaces

I
CreateUrlDumpRequest

Passed by the create form to POST /api/dumps as a JSON body, to post a link. A file is posted as a multipart form instead.

I
Dump

Returned by every endpoint that answers dumps, and pushed to clients by the dump_created and dump_updated socket messages. A URL dump has url and richContent, a file dump the file… fields. A private dump reaches its poster only.

I
DumpUrlMatch

Returned by GET /api/dumps?url= for each dump already posted with the link being typed, and shown by the create form's DuplicateNotice. It holds only what the notice displays and links to.

I
LinkPreview

Returned by GET /api/remote/preview to the create form, which shows it before the link is posted.

  • reached: boolean

    False when the page couldn't be fetched. richContent is then a stub holding the host name, and this flag is how the form tells a dead link from a page with no preview.

  • richContent: RichContent | null

    Null only for a link that doesn't parse, which the route rejects before fetching anyway.

I
RichContent

Built by a provider of rich-content-service.ts when a link is posted or previewed, and stored with the dump as JSON. The frontend's RichContentCard and player read it.

I
UpdateDumpRequest

Passed to PUT /api/dumps/:dumpId by the edit page, and by the dump page's inline title edit. A field left out stays as it is.

Type Aliases

T
RichContentType = "youtube" | "bandcamp" | "soundcloud" | "generic"

Names the kind of link a RichContent previews: a site the player plays its own way, or generic for any other page, this site's included.