* fix: remove replaceAll("&", "&") from dash manifest
* feat: add 206 and content-range response on requests with a content-range header
* fix: skip breaking out dash in request bytes
* fix: range => bytes
* chore: improve checks for responses and move range header to be with related code
* feat: initial support for Content PO Token using BGUtils
* fix: add canvas
* chore: remove unnecessary PO token replacement
* chore: remove unnecessary canvas addition
* fix: missing semi-colon in hono variables
* chore: fix deno.lock
* set enable_session_cache to false on all Innertube instances
* comment and log about the botguard Not Implemented canvas issue
* chore: adapt message about error Not implemented
* chore: update deno.lock
* fix: use passed fetch implementation consistently in potoken job
* feat: add check to ensure a random video loads when generating PO token, retry if it fails
* chore: update deno.lock
* fix: replace youtubePlayerParsing arguments with destructured object and allow cache overrides
* chore: deno fmt
* chore: reuse cacheEnabled variable
* chore: swap to ternary for clarity
* chore: deno fmt
* fix: update to new youtubePlayerParsing parameter shape
---------
Co-authored-by: Emilien <4016501+unixfox@users.noreply.github.com>
* Add basic skeletons for Invidious captions api
* Add logic to fetch and convert transcripts to vtt
* Use transcripts logic in captions route
* Format
* Fix lint
* Revert "Add Image healthcheck. (#48)"
This reverts commit f7c81687b5.
* dockerfile: replace built-in healthcheck with tiny-health-checker for healthchecks
* dockerfile: support for ARM64 builds of thc
This reverts commit e39797cf49.
HTTPS on deno is not bad, but if you are handling a lot of connections, you are better off using a well tested reverse proxy like haproxy and nginx. They are more efficient at handling HTTPS traffic.
* Chore: Clean up Hono types
Hono context variables can be typed by setting ContextVariableMap in the
'hono' module. This allows the type-checks to be cleaner and simpler,
and to not require ts overrides
c.get also isn't async, so doesn't need to be awaited
* chore: fmt
* feat: timeout and retry fetches in proxy
* chore: fmt
* feat: move fetch changes to a shim in getFetchClient
* chore: fmt
* chore: remove unused import
* chore: fetch => globalThis.fetch
* chore: remove redundant use of async/await in promise-returning function
* feat: add initial configuration checks
* fix: use RequestInit directly
* fix: use networking subsection with kongfigStore
* chore: update fetch_timeout configuration value to fetch_timeout_ms