mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-17 03:22:15 +00:00
Platform Support
YouTube.js is designed to be as platform agnostic as possible. To achieve this, we require all platforms wishing to use YouTube.js to provide a few shims around the platform's native APIs.
Supported Platforms
We provide shims for the following platforms:
- Modern Browsers
- Node.js
- Deno
- React-Native
Contributing Support for a New Platform
If you wish to bring YouTube.js to another platform, you will need to provide the following shims as specified by the PlatformShim type:
runtime: String name of the platform.info: Object containing the package information read frompackage.json.version: The version of the package.bugs_url: The URL to the package's bug tracker.repository_url: The URL to the package's repository.
server: Boolean indicating whether the platform is a server or not. Used for setting some additional headers not possible on a web browser.Cache: Class that implements theICacheinterface using the platform's native APIs.sha1hash(data: string): Function that takes a string and returns a SHA-1 hash of it.uuidv4(): Function that returns a UUIDv4 string.eval(code: string, env: Record<string, VMPrimative>): Function to evaluate untrusted javascript script and return the result.fetch: WHATWG Fetch API implementation.Headers: Headers implementation.Request: Request implementation.Response: Response implementation.FormData: FormData implementation.File: File implementation.ReadableStream: ReadableStream implementation.
An entry point for the platform should be added in the src/platform directory and should be formatted as follows:
import { Platform } from '../utils/Utils.js';
import { PlatformShim } from "../types";
import { ICache } from '../types/Cache.js';
class Cache implements ICache {
// ...
}
Platform.load({
// ... shims
});
export * from './lib.js';
import Innertube from './lib.js';
export default Innertube;