mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-18 20:12:12 +00:00
refactor!: cleanup platform support (#306)
* refactor!: cleanup platform support * chore: lint * fix: web platform * feat: provide UniversalCache Provide UniversalCache as a wrapper around Platform.shim.Cache. * fix: invalid import * refactor: remove isolated-vm support * fix: type info * refactor: cleanup exports * fix: mark jintr as external dependency In the bundled CJS node build, mark jintr as external. * chore: add additional exports web exports provide a way to select web implementation manually without relying on the bundler to select it correctly from the "exports" field web points to src/platform/web.js web.bundle points to bundle/browser.js web.bundle.browser points to bundle/browser.min.js agnostic exports provide users of the library to provide their own platform implementation without first importing the default one. agnostic points to src/platform/lib.ts * fix: toDash on web * revert: eval is synchronous * fix: use serializeDOM in FormatUtils * ci: automate releases with `release-please` * chore: clean up workflow files * ci: fix NPM publish action --------- Co-authored-by: LuanRT <luan.lrt4@gmail.com>
This commit is contained in:
10
src/types/Cache.ts
Normal file
10
src/types/Cache.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
export interface ICache {
|
||||
cache_dir: string;
|
||||
get(key: string): Promise<ArrayBuffer | undefined>;
|
||||
set(key: string, value: ArrayBuffer): Promise<void>;
|
||||
remove(key: string): Promise<void>;
|
||||
}
|
||||
|
||||
export interface ICacheConstructor {
|
||||
new (persistent: boolean, persistent_directory?: string): ICache;
|
||||
}
|
||||
32
src/types/PlatformShim.ts
Normal file
32
src/types/PlatformShim.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { ICacheConstructor } from './Cache.js';
|
||||
|
||||
export type Runtime = 'deno' | 'node' | 'browser' | 'unknown';
|
||||
|
||||
export type FetchFunction = typeof fetch;
|
||||
|
||||
export type VMPrimative = string | number | boolean | null | undefined;
|
||||
|
||||
interface PlatformShim {
|
||||
runtime: Runtime;
|
||||
info: {
|
||||
version: string,
|
||||
bugs_url: string,
|
||||
repo_url: string
|
||||
},
|
||||
server: boolean;
|
||||
Cache: ICacheConstructor;
|
||||
sha1Hash(data: string): Promise<string>;
|
||||
uuidv4(): string;
|
||||
eval(code: string, env: Record<string, VMPrimative>): unknown;
|
||||
DOMParser: typeof globalThis.DOMParser;
|
||||
serializeDOM: (document: Document) => string;
|
||||
fetch: FetchFunction;
|
||||
Request: typeof Request;
|
||||
Response: typeof Response;
|
||||
Headers: typeof Headers;
|
||||
FormData: typeof FormData;
|
||||
File: typeof File;
|
||||
ReadableStream: typeof ReadableStream;
|
||||
}
|
||||
|
||||
export default PlatformShim;
|
||||
4
src/types/index.ts
Normal file
4
src/types/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export * from './Cache.js';
|
||||
|
||||
export type { default as PlatformShim } from './PlatformShim.js';
|
||||
export * from './PlatformShim.js';
|
||||
Reference in New Issue
Block a user