fix: avoid vite optional stream import resolution

This commit is contained in:
hibna
2026-02-13 05:16:02 +03:00
parent ab1135ef74
commit 69d7706967
6 changed files with 32 additions and 10 deletions
+12
View File
@@ -7,6 +7,18 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
## [Unreleased] ## [Unreleased]
## [3.0.1] - 2026-02-13
### Changed
- Updated `baseline-browser-mapping` to the latest version to refresh Baseline data.
### Fixed
- Fixed Vite import-analysis failures for optional stream libraries by switching to runtime dynamic imports with `@vite-ignore` in `hlsLoader`, `rtmpLoader`, and `mpegtsLoader`.
- Preserved CDN fallback behavior when `hls.js`, `flv.js`, or `mpegts.js` are not installed locally.
- Ensured examples build flow remains stable with optional streaming dependencies.
## [3.0.0] - 2026-02-13 ## [3.0.0] - 2026-02-13
### Added ### Added
+6 -3
View File
@@ -1,12 +1,12 @@
{ {
"name": "@source/player", "name": "@source/player",
"version": "3.0.0", "version": "3.0.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@source/player", "name": "@source/player",
"version": "3.0.0", "version": "3.0.1",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.38.0", "@eslint/js": "^9.38.0",
@@ -19,6 +19,7 @@
"@typescript-eslint/parser": "^8.46.2", "@typescript-eslint/parser": "^8.46.2",
"@vitejs/plugin-react": "^5.1.0", "@vitejs/plugin-react": "^5.1.0",
"@vitest/ui": "^4.0.4", "@vitest/ui": "^4.0.4",
"baseline-browser-mapping": "^2.9.19",
"eslint": "^9.38.0", "eslint": "^9.38.0",
"eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24", "eslint-plugin-react-refresh": "^0.4.24",
@@ -2618,7 +2619,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/baseline-browser-mapping": { "node_modules/baseline-browser-mapping": {
"version": "2.8.23", "version": "2.9.19",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"bin": { "bin": {
+2 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@source/player", "name": "@source/player",
"version": "3.0.0", "version": "3.0.1",
"description": "Modern, feature-rich video player library for React", "description": "Modern, feature-rich video player library for React",
"type": "module", "type": "module",
"main": "./dist/video-player.umd.cjs", "main": "./dist/video-player.umd.cjs",
@@ -44,6 +44,7 @@
"@typescript-eslint/parser": "^8.46.2", "@typescript-eslint/parser": "^8.46.2",
"@vitejs/plugin-react": "^5.1.0", "@vitejs/plugin-react": "^5.1.0",
"@vitest/ui": "^4.0.4", "@vitest/ui": "^4.0.4",
"baseline-browser-mapping": "^2.9.19",
"eslint": "^9.38.0", "eslint": "^9.38.0",
"eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24", "eslint-plugin-react-refresh": "^0.4.24",
+4 -2
View File
@@ -50,9 +50,11 @@ export const loadHls = async (): Promise<HlsConstructor> => {
try { try {
logger.log('[HLS Loader] Attempting to load from npm package...') logger.log('[HLS Loader] Attempting to load from npm package...')
// Try loading from npm package first // Try loading from npm package first
const hlsModule = await import('hls.js') const hlsModuleName = 'hls.js'
const hlsModule = await import(/* @vite-ignore */ hlsModuleName)
const moduleWithDefault = hlsModule as { default?: HlsConstructor }
logger.log('[HLS Loader] Successfully loaded from npm package') logger.log('[HLS Loader] Successfully loaded from npm package')
return hlsModule.default return moduleWithDefault.default ?? (hlsModule as unknown as HlsConstructor)
} catch (npmError) { } catch (npmError) {
logger.warn('[HLS Loader] Failed to load from npm, trying CDN...', npmError) logger.warn('[HLS Loader] Failed to load from npm, trying CDN...', npmError)
try { try {
+4 -2
View File
@@ -77,8 +77,10 @@ export const loadMpegts = async (): Promise<MpegtsStatic> => {
loadingPromise = (async () => { loadingPromise = (async () => {
try { try {
logger.log('[MPEG-TS Loader] Attempting to load from npm package...') logger.log('[MPEG-TS Loader] Attempting to load from npm package...')
const module = await import('mpegts.js') const mpegtsModuleName = 'mpegts.js'
mpegtsInstance = module.default || module const mpegtsModule = await import(/* @vite-ignore */ mpegtsModuleName)
const moduleWithDefault = mpegtsModule as { default?: MpegtsStatic }
mpegtsInstance = moduleWithDefault.default ?? (mpegtsModule as unknown as MpegtsStatic)
logger.log('[MPEG-TS Loader] Successfully loaded from npm package') logger.log('[MPEG-TS Loader] Successfully loaded from npm package')
return mpegtsInstance! return mpegtsInstance!
} catch (npmError) { } catch (npmError) {
+4 -2
View File
@@ -46,8 +46,10 @@ const loadFlvjsFromCDN = async (): Promise<FlvjsStatic> => {
export const loadFlvjs = async (): Promise<FlvjsStatic> => { export const loadFlvjs = async (): Promise<FlvjsStatic> => {
try { try {
// Try loading from NPM package first // Try loading from NPM package first
const flvModule = await import('flv.js') const flvModuleName = 'flv.js'
return flvModule.default || flvModule const flvModule = await import(/* @vite-ignore */ flvModuleName)
const moduleWithDefault = flvModule as { default?: FlvjsStatic }
return moduleWithDefault.default ?? (flvModule as unknown as FlvjsStatic)
} catch (npmError) { } catch (npmError) {
logger.warn('flv.js NPM package not available, loading from CDN...', npmError) logger.warn('flv.js NPM package not available, loading from CDN...', npmError)