diff --git a/express/content-types.ts b/express/content-types.ts index 94cdbfc..eca7c72 100644 --- a/express/content-types.ts +++ b/express/content-types.ts @@ -2,8 +2,7 @@ import { Extensible } from "./interfaces"; export type ContentType = string; -// FIXME: Fill this out (get an AI to do it) - +// tx claude https://claude.ai/share/344fc7bd-5321-4763-af2f-b82275e9f865 const contentTypes = { text: { plain: "text/plain", @@ -11,6 +10,9 @@ const contentTypes = { css: "text/css", javascript: "text/javascript", xml: "text/xml", + csv: "text/csv", + markdown: "text/markdown", + calendar: "text/calendar", }, image: { jpeg: "image/jpeg", @@ -18,23 +20,103 @@ const contentTypes = { gif: "image/gif", svgPlusXml: "image/svg+xml", webp: "image/webp", + bmp: "image/bmp", + ico: "image/x-icon", + tiff: "image/tiff", + avif: "image/avif", }, audio: { mpeg: "audio/mpeg", wav: "audio/wav", + ogg: "audio/ogg", + webm: "audio/webm", + aac: "audio/aac", + midi: "audio/midi", + opus: "audio/opus", + flac: "audio/flac", }, video: { mp4: "video/mp4", webm: "video/webm", xMsvideo: "video/x-msvideo", + mpeg: "video/mpeg", + ogg: "video/ogg", + quicktime: "video/quicktime", + xMatroska: "video/x-matroska", }, application: { json: "application/json", pdf: "application/pdf", zip: "application/zip", - xWwwFormUrlencoded: "x-www-form-urlencoded", - octetStream: "octet-stream", + xWwwFormUrlencoded: "application/x-www-form-urlencoded", + octetStream: "application/octet-stream", + xml: "application/xml", + gzip: "application/gzip", + javascript: "application/javascript", + ld_json: "application/ld+json", + msword: "application/msword", + vndOpenxmlformatsOfficedocumentWordprocessingmlDocument: + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + vndMsExcel: "application/vnd.ms-excel", + vndOpenxmlformatsOfficedocumentSpreadsheetmlSheet: + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + vndMsPowerpoint: "application/vnd.ms-powerpoint", + vndOpenxmlformatsOfficedocumentPresentationmlPresentation: + "application/vnd.openxmlformats-officedocument.presentationml.presentation", + sql: "application/sql", + graphql: "application/graphql", + wasm: "application/wasm", + xTar: "application/x-tar", + x7zCompressed: "application/x-7z-compressed", + xRarCompressed: "application/x-rar-compressed", + }, + multipart: { + formData: "multipart/form-data", + byteranges: "multipart/byteranges", + }, + font: { + woff: "font/woff", + woff2: "font/woff2", + ttf: "font/ttf", + otf: "font/otf", }, }; export { contentTypes }; + +/* + +possible additions for later + +Looking at what's there, here are a few gaps that might be worth filling: +Streaming/Modern Web: + +application/x-ndjson or application/jsonlines - newline-delimited JSON (popular for streaming APIs) +text/event-stream - Server-Sent Events + +API/Data Exchange: + +application/yaml or text/yaml - YAML files +application/protobuf - Protocol Buffers +application/msgpack - MessagePack + +Archives you're missing: + +application/x-bzip2 - bzip2 compression + +Images: + +image/heic - HEIC/HEIF (common on iOS) + +Fonts: + +application/vnd.ms-fontobject - EOT fonts (legacy but still seen) + +Text: + +text/rtf - Rich Text Format + +The most impactful would probably be text/event-stream (if you do any SSE), application/x-ndjson (common in modern APIs), and maybe text/yaml. The rest are more situational. +But honestly, what you have covers 95% of common web development scenarios. You can definitely add as you go when you encounter specific needs! + +*/