From 69d77069673943fa54eb744f76cd4e1db2ba07b5 Mon Sep 17 00:00:00 2001 From: hibna Date: Fri, 13 Feb 2026 05:16:02 +0300 Subject: [PATCH] fix: avoid vite optional stream import resolution --- CHANGELOG.md | 12 ++++++++++++ package-lock.json | 9 ++++++--- package.json | 3 ++- src/utils/hlsLoader.ts | 6 ++++-- src/utils/mpegtsLoader.ts | 6 ++++-- src/utils/rtmpLoader.ts | 6 ++++-- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0766ad..406301f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht ## [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 ### Added diff --git a/package-lock.json b/package-lock.json index f6e98e3..be4765d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@source/player", - "version": "3.0.0", + "version": "3.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@source/player", - "version": "3.0.0", + "version": "3.0.1", "license": "MIT", "devDependencies": { "@eslint/js": "^9.38.0", @@ -19,6 +19,7 @@ "@typescript-eslint/parser": "^8.46.2", "@vitejs/plugin-react": "^5.1.0", "@vitest/ui": "^4.0.4", + "baseline-browser-mapping": "^2.9.19", "eslint": "^9.38.0", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", @@ -2618,7 +2619,9 @@ "license": "MIT" }, "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, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index e05a8f2..2999953 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@source/player", - "version": "3.0.0", + "version": "3.0.1", "description": "Modern, feature-rich video player library for React", "type": "module", "main": "./dist/video-player.umd.cjs", @@ -44,6 +44,7 @@ "@typescript-eslint/parser": "^8.46.2", "@vitejs/plugin-react": "^5.1.0", "@vitest/ui": "^4.0.4", + "baseline-browser-mapping": "^2.9.19", "eslint": "^9.38.0", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", diff --git a/src/utils/hlsLoader.ts b/src/utils/hlsLoader.ts index f986aab..83cf87c 100644 --- a/src/utils/hlsLoader.ts +++ b/src/utils/hlsLoader.ts @@ -50,9 +50,11 @@ export const loadHls = async (): Promise => { try { logger.log('[HLS Loader] Attempting to load from npm package...') // 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') - return hlsModule.default + return moduleWithDefault.default ?? (hlsModule as unknown as HlsConstructor) } catch (npmError) { logger.warn('[HLS Loader] Failed to load from npm, trying CDN...', npmError) try { diff --git a/src/utils/mpegtsLoader.ts b/src/utils/mpegtsLoader.ts index 5195c06..648682d 100644 --- a/src/utils/mpegtsLoader.ts +++ b/src/utils/mpegtsLoader.ts @@ -77,8 +77,10 @@ export const loadMpegts = async (): Promise => { loadingPromise = (async () => { try { logger.log('[MPEG-TS Loader] Attempting to load from npm package...') - const module = await import('mpegts.js') - mpegtsInstance = module.default || module + const mpegtsModuleName = 'mpegts.js' + 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') return mpegtsInstance! } catch (npmError) { diff --git a/src/utils/rtmpLoader.ts b/src/utils/rtmpLoader.ts index 360f698..03b981b 100644 --- a/src/utils/rtmpLoader.ts +++ b/src/utils/rtmpLoader.ts @@ -46,8 +46,10 @@ const loadFlvjsFromCDN = async (): Promise => { export const loadFlvjs = async (): Promise => { try { // Try loading from NPM package first - const flvModule = await import('flv.js') - return flvModule.default || flvModule + const flvModuleName = 'flv.js' + const flvModule = await import(/* @vite-ignore */ flvModuleName) + const moduleWithDefault = flvModule as { default?: FlvjsStatic } + return moduleWithDefault.default ?? (flvModule as unknown as FlvjsStatic) } catch (npmError) { logger.warn('flv.js NPM package not available, loading from CDN...', npmError)