This commit includes a huge amount of changes, including support for
adding Jellyfin servers as media sources and streaming content from
them.
These are breaking changes and touch almost every corner of the code,
but also pave the way for a lot more flexibility on the backend for
addinng different sources.
The commit also includes performance improvements to the inline modal,
lots of code cleanup, and a few bug fixes I found along the way.
Fixes#24
* Cleaning up scary code - checkpoint 1
* Massive server cleanup + optimizations - Part 1
* Bump mikro-orm versions
* Pilot using tagged types (type branding) on FillerShow.uuid for
(maybe) better type checking
* Start hacking away at the 'helperFuncs' file inherited from DTV
* Optimizations in getCurrentProgramAndTimeElapsed to reuse the
precalculated 'startTimeOffsets' from the channel lineup
* More type checks
* Untangling some of the crazier types I added earlier on to make
sense of the original code
* General cleanup + best practices
* Move util.ts to util/index.ts
* No longer using req.hijack() to send raw video stream to frontend -
this cleaned up a lot of code
* Introduce VideoStream + ConcatStream classes which hold functionality
related to streaming that used to be in the monolithic video.ts
* Simplify ChannelCache and break dependence on Plex IDs. This now
caches using our internal DB IDs
Left TODO:
* Completely remove helperFuncs.ts and put the functions in a more
appropriate place
* Subdirectories for Plex files
* Subdirectories for 'Player' classes
* Subdirectories for 'ffmpeg' classes
* Persist channel cache to disk periodically so that server restarts
preserve that information about streaming
* Update lockfile
* Fix build
* Checkpoint - new entities, migration, + fixer so we can get started quickly
* Checkpoint - hooking up relationship saving on the program update path
* Checkpoint
* Another checkpoint - now relations are upserted alongside new episodes
* Augment APIs to return new season/show/artist/album metadata
* Cleanup API and standardize on new converter
* Make fixer queries better so we aren't constantly running
* Checkpoint - dynamic channels
* Yet another checkpoint
* Bump versions - makes a ton of stuff work magically; needed a patch for ts-essentials because of https://github.com/ts-essentials/ts-essentials/issues/381
* Checkpointing
* Checkpoint
* This is a nightmare
* Checkpointing.... getting closer
* First cut - packaging the server in a docker container
* Remove busted bundles
* Minify build
* Some common commands for building - we're going to look into proper monorepo solutions soon
* Remove dependency on serve-static
* Add web serving, full-stack docker target, and Nvidia container support
* Remove test action graph for now
Changes:
* Starting to centralize on Zod schemas in a shared types package -
frontend/backend sharing tyhpes
* Skeletons of some pages. Creating some boilerplate for resuable
react-query hooks
* Frontend touch-ups