chore: split tsconfig into web & default

This commit is contained in:
Kamil Moskała
2026-03-25 11:23:10 +01:00
parent bc060c668f
commit 1f2ee5f06f
5 changed files with 37 additions and 20 deletions
+5 -2
View File
@@ -48,6 +48,7 @@
"scripts": {
"postinstall": "bun run build || exit 0;",
"typecheck": "tsc",
"typecheck:web": "tsc -p tsconfig.web.json",
"lint": "eslint \"**/*.{js,ts,tsx}\"",
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
"prepare": "bun run build",
@@ -73,6 +74,9 @@
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"video.js": "^8.23.4"
},
"devDependencies": {
"@expo/config-plugins": "^10.0.2",
"@react-native/eslint-config": "^0.77.0",
@@ -88,8 +92,7 @@
"react-native": "^0.77.0",
"react-native-builder-bob": "^0.40.0",
"react-native-nitro-modules": "0.35.0",
"typescript": "^5.2.2",
"video.js": "^8.23.4"
"typescript": "^5.2.2"
},
"peerDependencies": {
"react": "*",
@@ -18,6 +18,8 @@ import { WebEventEmitter } from "./web/WebEventEmitter";
import type { VideoTrack } from "./types/VideoTrack";
import type { QualityLevel } from "./types/QualityLevel";
import type { SupportedFeatures } from "./types/SupportedFeatures";
import type { ListenerSubscription } from "./types/EventEmitter";
import type { AllPlayerEvents as PlayerEvents } from "./types/Events";
import {
mapVideoJsTracks,
type VideoJsPlayer,
@@ -406,6 +408,28 @@ class VideoPlayer extends VideoPlayerEvents implements VideoPlayerBase {
qualitySelection: true,
};
}
addEventListener<Event extends keyof PlayerEvents>(
event: Event,
callback: PlayerEvents[Event],
): ListenerSubscription {
switch (event) {
case "onAudioTrackChange":
return (this.eventEmitter as WebEventEmitter).addOnAudioTrackChangeListener(
callback as PlayerEvents["onAudioTrackChange"],
);
case "onVideoTrackChange":
return (this.eventEmitter as WebEventEmitter).addOnVideoTrackChangeListener(
callback as PlayerEvents["onVideoTrackChange"],
);
case "onQualityChange":
return (this.eventEmitter as WebEventEmitter).addOnQualityChangeListener(
callback as PlayerEvents["onQualityChange"],
);
default:
return super.addEventListener(event, callback);
}
}
}
export { VideoPlayer };
@@ -7,8 +7,6 @@ import type {
ListenerSubscription,
VideoPlayerEventEmitterBase,
} from "./types/EventEmitter";
import type { WebEventEmitter } from "./web/WebEventEmitter";
import { Platform } from "react-native";
export class VideoPlayerEvents {
protected eventEmitter: VideoPlayerEventEmitterBase;
@@ -133,22 +131,6 @@ export class VideoPlayerEvents {
return this.eventEmitter.addOnStatusChangeListener(
callback as PlayerEvents['onStatusChange']
);
// ----------------- Web Events -----------------
case 'onAudioTrackChange':
if (Platform.OS !== "web") return { remove:()=>{} };
return (this.eventEmitter as WebEventEmitter).addOnAudioTrackChangeListener(
callback as PlayerEvents['onAudioTrackChange']
);
case 'onVideoTrackChange':
if (Platform.OS !== "web") return { remove:()=>{} };
return (this.eventEmitter as WebEventEmitter).addOnVideoTrackChangeListener(
callback as PlayerEvents['onVideoTrackChange']
);
case 'onQualityChange':
if (Platform.OS !== "web") return { remove:()=>{} };
return (this.eventEmitter as WebEventEmitter).addOnQualityChangeListener(
callback as PlayerEvents['onQualityChange']
);
default:
throw new Error(`[React Native Video] Unsupported event: ${event}`);
}
@@ -1,6 +1,7 @@
{
"extends": ["../../config/tsconfig.json"],
"include": ["src", "./app.plugin.js"],
"exclude": ["src/**/*.web.ts", "src/**/*.web.tsx", "src/core/web/**"],
"compilerOptions": {
"rootDir": ".",
"jsx": "react-jsx",
@@ -0,0 +1,7 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"lib": ["ESNext", "dom"]
},
"include": ["src/**/*.ts", "src/**/*.tsx"]
}