unified-video-framework 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/INSTALLATION.md +285 -0
  2. package/README.md +23 -2
  3. package/index.d.ts +14 -0
  4. package/index.js +21 -0
  5. package/package.json +36 -3
  6. package/packages/core/dist/BasePlayer.d.ts +60 -0
  7. package/packages/core/dist/BasePlayer.d.ts.map +1 -0
  8. package/packages/core/dist/BasePlayer.js +179 -0
  9. package/packages/core/dist/BasePlayer.js.map +1 -0
  10. package/packages/core/dist/PlayerFactory.d.ts +11 -0
  11. package/packages/core/dist/PlayerFactory.d.ts.map +1 -0
  12. package/packages/core/dist/PlayerFactory.js +194 -0
  13. package/packages/core/dist/PlayerFactory.js.map +1 -0
  14. package/packages/core/dist/VideoPlayer.d.ts +71 -0
  15. package/packages/core/dist/VideoPlayer.d.ts.map +1 -0
  16. package/packages/core/dist/VideoPlayer.js +134 -0
  17. package/packages/core/dist/VideoPlayer.js.map +1 -0
  18. package/packages/core/dist/VideoPlayerFactory.d.ts +8 -0
  19. package/packages/core/dist/VideoPlayerFactory.d.ts.map +1 -0
  20. package/packages/core/dist/VideoPlayerFactory.js +93 -0
  21. package/packages/core/dist/VideoPlayerFactory.js.map +1 -0
  22. package/packages/core/dist/index.d.ts +7 -0
  23. package/packages/core/dist/index.d.ts.map +1 -0
  24. package/packages/core/dist/index.js +26 -0
  25. package/packages/core/dist/index.js.map +1 -0
  26. package/packages/core/dist/interfaces/IVideoPlayer.d.ts +150 -0
  27. package/packages/core/dist/interfaces/IVideoPlayer.d.ts.map +1 -0
  28. package/packages/core/dist/interfaces/IVideoPlayer.js +3 -0
  29. package/packages/core/dist/interfaces/IVideoPlayer.js.map +1 -0
  30. package/packages/core/dist/interfaces.d.ts +192 -0
  31. package/packages/core/dist/interfaces.d.ts.map +1 -0
  32. package/packages/core/dist/interfaces.js +34 -0
  33. package/packages/core/dist/interfaces.js.map +1 -0
  34. package/packages/core/dist/utils/EventEmitter.d.ts +14 -0
  35. package/packages/core/dist/utils/EventEmitter.d.ts.map +1 -0
  36. package/packages/core/dist/utils/EventEmitter.js +59 -0
  37. package/packages/core/dist/utils/EventEmitter.js.map +1 -0
  38. package/packages/core/dist/utils/PlatformDetector.d.ts +29 -0
  39. package/packages/core/dist/utils/PlatformDetector.d.ts.map +1 -0
  40. package/packages/core/dist/utils/PlatformDetector.js +263 -0
  41. package/packages/core/dist/utils/PlatformDetector.js.map +1 -0
  42. package/packages/react-native/dist/ReactNativePlayer.d.ts +16 -0
  43. package/packages/react-native/dist/ReactNativePlayer.d.ts.map +1 -0
  44. package/packages/react-native/dist/ReactNativePlayer.js +312 -0
  45. package/packages/react-native/dist/ReactNativePlayer.js.map +1 -0
  46. package/packages/react-native/dist/VideoPlayer.d.ts +43 -0
  47. package/packages/react-native/dist/VideoPlayer.d.ts.map +1 -0
  48. package/packages/react-native/dist/VideoPlayer.js +148 -0
  49. package/packages/react-native/dist/VideoPlayer.js.map +1 -0
  50. package/packages/react-native/dist/index.d.ts +5 -0
  51. package/packages/react-native/dist/index.d.ts.map +1 -0
  52. package/packages/react-native/dist/index.js +9 -0
  53. package/packages/react-native/dist/index.js.map +1 -0
  54. package/packages/react-native/dist/utils/EventEmitter.d.ts +14 -0
  55. package/packages/react-native/dist/utils/EventEmitter.d.ts.map +1 -0
  56. package/packages/react-native/dist/utils/EventEmitter.js +59 -0
  57. package/packages/react-native/dist/utils/EventEmitter.js.map +1 -0
  58. package/packages/web/dist/HTML5Player.d.ts +63 -0
  59. package/packages/web/dist/HTML5Player.d.ts.map +1 -0
  60. package/packages/web/dist/HTML5Player.js +447 -0
  61. package/packages/web/dist/HTML5Player.js.map +1 -0
  62. package/packages/web/dist/SecureVideoPlayer.d.ts +132 -0
  63. package/packages/web/dist/SecureVideoPlayer.d.ts.map +1 -0
  64. package/packages/web/dist/SecureVideoPlayer.js +866 -0
  65. package/packages/web/dist/SecureVideoPlayer.js.map +1 -0
  66. package/packages/web/dist/WebPlayer.d.ts +121 -0
  67. package/packages/web/dist/WebPlayer.d.ts.map +1 -0
  68. package/packages/web/dist/WebPlayer.js +2950 -0
  69. package/packages/web/dist/WebPlayer.js.map +1 -0
  70. package/packages/web/dist/index.d.ts +5 -0
  71. package/packages/web/dist/index.d.ts.map +1 -0
  72. package/packages/web/dist/index.js +24 -0
  73. package/packages/web/dist/index.js.map +1 -0
  74. package/packages/web/dist/paywall/PaywallController.d.ts +24 -0
  75. package/packages/web/dist/paywall/PaywallController.d.ts.map +1 -0
  76. package/packages/web/dist/paywall/PaywallController.js +222 -0
  77. package/packages/web/dist/paywall/PaywallController.js.map +1 -0
  78. package/packages/web/dist/react/WebPlayerView.d.ts +32 -0
  79. package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -0
  80. package/packages/web/dist/react/WebPlayerView.js +164 -0
  81. package/packages/web/dist/react/WebPlayerView.js.map +1 -0
  82. package/.github/workflows/ci.yml +0 -253
  83. package/ANDROID_TV_IMPLEMENTATION.md +0 -313
  84. package/COMPLETION_STATUS.md +0 -165
  85. package/CONTRIBUTING.md +0 -376
  86. package/FINAL_STATUS_REPORT.md +0 -170
  87. package/FRAMEWORK_REVIEW.md +0 -247
  88. package/IMPROVEMENTS_SUMMARY.md +0 -168
  89. package/NATIVE_APP_INTEGRATION_GUIDE.md +0 -903
  90. package/PAYWALL_RENTAL_FLOW.md +0 -499
  91. package/PLATFORM_SETUP_GUIDE.md +0 -1636
  92. package/RUN_LOCALLY.md +0 -151
  93. package/apps/demo/cast-sender-min.html +0 -173
  94. package/apps/demo/custom-player.html +0 -883
  95. package/apps/demo/demo.html +0 -990
  96. package/apps/demo/enhanced-player.html +0 -3556
  97. package/apps/demo/index.html +0 -159
  98. package/apps/rental-api/.env.example +0 -24
  99. package/apps/rental-api/README.md +0 -23
  100. package/apps/rental-api/migrations/001_init.sql +0 -35
  101. package/apps/rental-api/migrations/002_videos.sql +0 -10
  102. package/apps/rental-api/migrations/003_add_gateway_subref.sql +0 -4
  103. package/apps/rental-api/migrations/004_update_gateways.sql +0 -4
  104. package/apps/rental-api/migrations/005_seed_demo_video.sql +0 -5
  105. package/apps/rental-api/package-lock.json +0 -2045
  106. package/apps/rental-api/package.json +0 -33
  107. package/apps/rental-api/scripts/run-migration.js +0 -42
  108. package/apps/rental-api/scripts/update-video-currency.js +0 -21
  109. package/apps/rental-api/scripts/update-video-price.js +0 -19
  110. package/apps/rental-api/src/config.ts +0 -14
  111. package/apps/rental-api/src/db.ts +0 -10
  112. package/apps/rental-api/src/routes/cashfree.ts +0 -167
  113. package/apps/rental-api/src/routes/pesapal.ts +0 -92
  114. package/apps/rental-api/src/routes/rentals.ts +0 -242
  115. package/apps/rental-api/src/routes/webhooks.ts +0 -73
  116. package/apps/rental-api/src/server.ts +0 -41
  117. package/apps/rental-api/src/services/entitlements.ts +0 -45
  118. package/apps/rental-api/src/services/payments.ts +0 -22
  119. package/apps/rental-api/tsconfig.json +0 -17
  120. package/check-urls.ps1 +0 -74
  121. package/comparison-report.md +0 -181
  122. package/docs/PAYWALL.md +0 -95
  123. package/docs/PLAYER_UI_VISIBILITY.md +0 -431
  124. package/docs/README.md +0 -7
  125. package/docs/SYSTEM_ARCHITECTURE.md +0 -612
  126. package/docs/VDOCIPHER_CLONE_REQUIREMENTS.md +0 -403
  127. package/examples/android/JavaSampleApp/MainActivity.java +0 -641
  128. package/examples/android/JavaSampleApp/activity_main.xml +0 -226
  129. package/examples/android/SampleApp/MainActivity.kt +0 -430
  130. package/examples/ios/SampleApp/ViewController.swift +0 -337
  131. package/examples/ios/SwiftUISampleApp/ContentView.swift +0 -304
  132. package/iOS_IMPLEMENTATION_OPTIONS.md +0 -470
  133. package/ios/UnifiedVideoPlayer/UnifiedVideoPlayer.podspec +0 -33
  134. package/jest.config.js +0 -33
  135. package/jitpack.yml +0 -5
  136. package/lerna.json +0 -35
  137. package/packages/PLATFORM_STATUS.md +0 -163
  138. package/packages/android/build.gradle +0 -135
  139. package/packages/core/tsconfig.json +0 -20
  140. package/packages/ios/BUILD_INSTRUCTIONS.md +0 -108
  141. package/packages/ios/FIX_EMBED_ISSUE.md +0 -142
  142. package/packages/ios/GETTING_STARTED.md +0 -100
  143. package/packages/ios/Package.swift +0 -35
  144. package/packages/ios/Sources/UnifiedVideoPlayer/Analytics/AnalyticsEmitter.swift +0 -26
  145. package/packages/ios/Sources/UnifiedVideoPlayer/DRM/FairPlayDRMManager.swift +0 -102
  146. package/packages/ios/Sources/UnifiedVideoPlayer/Info.plist +0 -24
  147. package/packages/ios/Sources/UnifiedVideoPlayer/Remote/RemoteCommandCenter.swift +0 -109
  148. package/packages/ios/Sources/UnifiedVideoPlayer/UnifiedVideoPlayer.swift +0 -811
  149. package/packages/ios/Sources/UnifiedVideoPlayer/UnifiedVideoPlayerView.swift +0 -640
  150. package/packages/ios/Sources/UnifiedVideoPlayer/Utilities/Color+Hex.swift +0 -36
  151. package/packages/ios/UnifiedVideoPlayer.podspec +0 -27
  152. package/packages/ios/UnifiedVideoPlayer.xcodeproj/project.pbxproj +0 -385
  153. package/packages/ios/build_framework.sh +0 -55
  154. package/packages/react-native/android/src/main/java/com/unifiedvideo/UnifiedVideoPlayerModule.kt +0 -482
  155. package/packages/react-native/ios/UnifiedVideoPlayer.swift +0 -436
  156. package/packages/react-native/tsconfig.json +0 -31
  157. package/packages/roku/components/UnifiedVideoPlayer.brs +0 -400
  158. package/packages/roku/source/VideoPlayer.brs +0 -231
  159. package/packages/roku/source/main.brs +0 -28
  160. package/packages/web/GETTING_STARTED.md +0 -292
  161. package/packages/web/jest.config.js +0 -28
  162. package/packages/web/jest.setup.ts +0 -110
  163. package/packages/web/tsconfig.json +0 -23
  164. package/packages/web/webpack.config.js +0 -45
  165. package/server.js +0 -131
  166. package/server.py +0 -84
  167. package/test-urls.ps1 +0 -97
  168. package/test-video-urls.ps1 +0 -87
  169. package/tsconfig.json +0 -39
@@ -0,0 +1,285 @@
1
+ # Installation Guide - Unified Video Framework
2
+
3
+ This guide will help you install and use the Unified Video Framework in your project.
4
+
5
+ ## 🚀 Installation Methods
6
+
7
+ ### Method 1: Install from npm (Recommended)
8
+
9
+ ```bash
10
+ # Using npm
11
+ npm install unified-video-framework
12
+
13
+ # Using yarn
14
+ yarn add unified-video-framework
15
+
16
+ # Using pnpm
17
+ pnpm add unified-video-framework
18
+ ```
19
+
20
+ ### Method 2: Install from GitHub (Latest Development)
21
+
22
+ ```bash
23
+ # Install from the main branch
24
+ npm install github:flicknexs/unified-video-framework
25
+
26
+ # Or install from a specific branch/tag
27
+ npm install github:flicknexs/unified-video-framework#main
28
+ ```
29
+
30
+ ### Method 3: Install from Local Path
31
+
32
+ If you have cloned the repository locally:
33
+
34
+ ```bash
35
+ # First, build the packages
36
+ cd /path/to/unified-video-framework
37
+ npm install
38
+ npm run build
39
+
40
+ # Then in your project, install from local path
41
+ cd /path/to/your-project
42
+ npm install /path/to/unified-video-framework
43
+ ```
44
+
45
+ ### Method 4: Using npm link (For Development)
46
+
47
+ This is useful when you're actively developing both the framework and your application:
48
+
49
+ ```bash
50
+ # In the framework directory
51
+ cd /path/to/unified-video-framework
52
+ npm link
53
+
54
+ # In your project directory
55
+ cd /path/to/your-project
56
+ npm link unified-video-framework
57
+ ```
58
+
59
+ ## 📦 Usage in Your Project
60
+
61
+ ### Basic Import
62
+
63
+ ```javascript
64
+ // CommonJS
65
+ const { UnifiedVideoPlayer, WebPlayer } = require('unified-video-framework');
66
+
67
+ // ES6 Modules
68
+ import { UnifiedVideoPlayer, WebPlayer } from 'unified-video-framework';
69
+
70
+ // Import specific packages
71
+ import { WebPlayer } from 'unified-video-framework/web';
72
+ import { BasePlayer } from 'unified-video-framework/core';
73
+ ```
74
+
75
+ ### TypeScript Usage
76
+
77
+ ```typescript
78
+ import {
79
+ UnifiedVideoPlayer,
80
+ VideoPlayerConfig,
81
+ VideoSource,
82
+ PlayerState
83
+ } from 'unified-video-framework';
84
+
85
+ // Use with proper types
86
+ const config: VideoPlayerConfig = {
87
+ autoPlay: true,
88
+ controls: true
89
+ };
90
+
91
+ const player = new UnifiedVideoPlayer(container, config);
92
+ ```
93
+
94
+ ### React Component Usage
95
+
96
+ ```jsx
97
+ import React from 'react';
98
+ import { WebPlayerView } from 'unified-video-framework/web';
99
+
100
+ function VideoComponent() {
101
+ return (
102
+ <WebPlayerView
103
+ url="https://example.com/video.m3u8"
104
+ type="hls"
105
+ config={{
106
+ autoPlay: true,
107
+ controls: true
108
+ }}
109
+ onReady={() => console.log('Player ready')}
110
+ onError={(error) => console.error('Player error:', error)}
111
+ />
112
+ );
113
+ }
114
+ ```
115
+
116
+ ## 🛠️ Troubleshooting
117
+
118
+ ### Error: Can't resolve 'unified-video-framework'
119
+
120
+ This error occurs when the package is not properly installed or the module resolution is failing.
121
+
122
+ **Solutions:**
123
+
124
+ 1. **Check if the package is installed:**
125
+ ```bash
126
+ npm list unified-video-framework
127
+ ```
128
+
129
+ 2. **Clear npm cache and reinstall:**
130
+ ```bash
131
+ npm cache clean --force
132
+ rm -rf node_modules package-lock.json
133
+ npm install
134
+ ```
135
+
136
+ 3. **Check your import path:**
137
+ ```javascript
138
+ // Correct
139
+ import { WebPlayer } from 'unified-video-framework';
140
+
141
+ // Incorrect
142
+ import { WebPlayer } from 'unified-video-framework/packages/web';
143
+ ```
144
+
145
+ ### Error: Module not found in TypeScript
146
+
147
+ Add the types to your `tsconfig.json`:
148
+
149
+ ```json
150
+ {
151
+ "compilerOptions": {
152
+ "types": ["unified-video-framework"]
153
+ }
154
+ }
155
+ ```
156
+
157
+ ### Build Errors
158
+
159
+ If you encounter build errors after installation:
160
+
161
+ 1. **Ensure peer dependencies are installed:**
162
+ ```bash
163
+ npm install hls.js dashjs
164
+ ```
165
+
166
+ 2. **For React Native projects:**
167
+ ```bash
168
+ npm install react-native-video
169
+ cd ios && pod install
170
+ ```
171
+
172
+ ## 🔧 Advanced Configuration
173
+
174
+ ### Webpack Configuration
175
+
176
+ If you're using Webpack, you might need to add aliases:
177
+
178
+ ```javascript
179
+ // webpack.config.js
180
+ module.exports = {
181
+ resolve: {
182
+ alias: {
183
+ 'unified-video-framework': path.resolve(__dirname, 'node_modules/unified-video-framework')
184
+ }
185
+ }
186
+ };
187
+ ```
188
+
189
+ ### Next.js Configuration
190
+
191
+ For Next.js projects, you might need to transpile the package:
192
+
193
+ ```javascript
194
+ // next.config.js
195
+ module.exports = {
196
+ transpilePackages: ['unified-video-framework']
197
+ };
198
+ ```
199
+
200
+ ## 📚 Package Structure
201
+
202
+ After installation, the package structure in your `node_modules` will be:
203
+
204
+ ```
205
+ node_modules/
206
+ └── unified-video-framework/
207
+ ├── index.js # Main entry point
208
+ ├── index.d.ts # TypeScript definitions
209
+ ├── package.json
210
+ ├── README.md
211
+ ├── LICENSE
212
+ └── packages/
213
+ ├── core/ # Core interfaces and base classes
214
+ │ ├── dist/
215
+ │ └── src/
216
+ ├── web/ # Web player implementation
217
+ │ ├── dist/
218
+ │ └── src/
219
+ └── react-native/ # React Native implementation
220
+ ├── dist/
221
+ └── src/
222
+ ```
223
+
224
+ ## 🚀 Quick Start Example
225
+
226
+ Here's a complete example to get you started:
227
+
228
+ ```javascript
229
+ // Import the framework
230
+ import { WebPlayer } from 'unified-video-framework';
231
+
232
+ // Create a container element
233
+ const container = document.getElementById('video-container');
234
+
235
+ // Initialize the player
236
+ const player = new WebPlayer(container);
237
+
238
+ // Load and play a video
239
+ player.load({
240
+ url: 'https://example.com/video.mp4',
241
+ type: 'video/mp4'
242
+ });
243
+
244
+ // Listen to events
245
+ player.on('ready', () => {
246
+ console.log('Player is ready');
247
+ player.play();
248
+ });
249
+
250
+ player.on('error', (error) => {
251
+ console.error('Playback error:', error);
252
+ });
253
+
254
+ // Control playback
255
+ player.on('timeupdate', (time) => {
256
+ console.log('Current time:', time);
257
+ });
258
+ ```
259
+
260
+ ## 📞 Getting Help
261
+
262
+ If you encounter issues:
263
+
264
+ 1. Check the [main README](./README.md) for detailed documentation
265
+ 2. Look at the [examples](./examples) directory
266
+ 3. Create an issue on [GitHub](https://github.com/flicknexs/unified-video-framework/issues)
267
+ 4. Check existing issues for similar problems
268
+
269
+ ## 🔄 Updating the Package
270
+
271
+ To update to the latest version:
272
+
273
+ ```bash
274
+ # From GitHub
275
+ npm update unified-video-framework
276
+
277
+ # Or reinstall
278
+ npm uninstall unified-video-framework
279
+ npm install github:flicknexs/unified-video-framework
280
+ ```
281
+
282
+ ---
283
+
284
+ **Latest Version:** v1.3.1
285
+ **npm Package:** https://www.npmjs.com/package/unified-video-framework
package/README.md CHANGED
@@ -33,14 +33,35 @@ A comprehensive cross-platform video player framework that provides a unified AP
33
33
 
34
34
  ### Using npm
35
35
  ```bash
36
- npm install @flicknexs/unified-video-framework
36
+ npm install unified-video-framework
37
37
  ```
38
38
 
39
39
  ### Using yarn
40
40
  ```bash
41
- yarn add @flicknexs/unified-video-framework
41
+ yarn add unified-video-framework
42
42
  ```
43
43
 
44
+ ### Using pnpm
45
+ ```bash
46
+ pnpm add unified-video-framework
47
+ ```
48
+
49
+ ### From GitHub (latest development version)
50
+ ```bash
51
+ npm install github:flicknexs/unified-video-framework
52
+ ```
53
+
54
+ ### Using npm link (for development)
55
+ ```bash
56
+ # In the framework directory
57
+ npm link
58
+
59
+ # In your project
60
+ npm link unified-video-framework
61
+ ```
62
+
63
+ 📖 **For detailed installation instructions and troubleshooting, see [INSTALLATION.md](./INSTALLATION.md)**
64
+
44
65
  ## 🚀 Quick Start
45
66
 
46
67
  ### Basic Usage
package/index.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Unified Video Framework - TypeScript Definitions
3
+ */
4
+
5
+ export * from './packages/core/dist/index';
6
+ export * from './packages/web/dist/index';
7
+
8
+ // Re-export the main classes
9
+ export { VideoPlayerFactory, BasePlayer } from './packages/core/dist/index';
10
+ export { WebPlayer, WebPlayerView } from './packages/web/dist/index';
11
+
12
+ // Export namespaces for sub-packages
13
+ export * as core from './packages/core/dist/index';
14
+ export * as web from './packages/web/dist/index';
package/index.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Unified Video Framework
3
+ * Main entry point that re-exports from packages
4
+ */
5
+
6
+ // Re-export everything from core
7
+ module.exports = require('./packages/core/dist/index.js');
8
+
9
+ // Also export specific packages
10
+ module.exports.core = require('./packages/core/dist/index.js');
11
+ module.exports.web = require('./packages/web/dist/index.js');
12
+
13
+ // Export web-specific components if available
14
+ try {
15
+ const webExports = require('./packages/web/dist/index.js');
16
+ Object.keys(webExports).forEach(key => {
17
+ module.exports[key] = webExports[key];
18
+ });
19
+ } catch (e) {
20
+ // Web package may not be built yet
21
+ }
package/package.json CHANGED
@@ -1,7 +1,41 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
5
+ "main": "packages/core/dist/index.js",
6
+ "types": "packages/core/dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "require": "./packages/core/dist/index.js",
10
+ "import": "./packages/core/dist/index.js",
11
+ "types": "./packages/core/dist/index.d.ts"
12
+ },
13
+ "./core": {
14
+ "require": "./packages/core/dist/index.js",
15
+ "import": "./packages/core/dist/index.js",
16
+ "types": "./packages/core/dist/index.d.ts"
17
+ },
18
+ "./web": {
19
+ "require": "./packages/web/dist/index.js",
20
+ "import": "./packages/web/dist/index.js",
21
+ "types": "./packages/web/dist/index.d.ts"
22
+ },
23
+ "./react-native": {
24
+ "require": "./packages/react-native/dist/index.js",
25
+ "import": "./packages/react-native/dist/index.js",
26
+ "types": "./packages/react-native/dist/index.d.ts"
27
+ }
28
+ },
29
+ "files": [
30
+ "index.js",
31
+ "index.d.ts",
32
+ "packages/*/dist/**/*",
33
+ "packages/*/src/**/*",
34
+ "packages/*/package.json",
35
+ "README.md",
36
+ "LICENSE",
37
+ "INSTALLATION.md"
38
+ ],
5
39
  "private": false,
6
40
  "workspaces": [
7
41
  "packages/*",
@@ -9,7 +43,6 @@
9
43
  "tools/*"
10
44
  ],
11
45
  "scripts": {
12
- "postinstall": "npm run build:core",
13
46
  "bootstrap": "lerna bootstrap --legacy-peer-deps",
14
47
  "build": "npm run build:core && npm run build:web && npm run build:rental-api",
15
48
  "build:core": "cd packages/core && npm run build",
@@ -26,7 +59,7 @@
26
59
  "test:watch": "jest --watch",
27
60
  "lint": "eslint . --ext .ts,.tsx,.js,.jsx",
28
61
  "type-check": "tsc --noEmit",
29
- "publish": "npm publish --access public",
62
+ "prepublishOnly": "npm run build",
30
63
  "dev": "lerna run dev --parallel",
31
64
  "serve:demo": "node server.js",
32
65
  "docs": "typedoc --out docs packages/core/src"
@@ -0,0 +1,60 @@
1
+ import { IVideoPlayer, VideoSource, PlayerConfig, PlayerState, PlayerEvents, PlayerError, Quality, SubtitleTrack } from './interfaces/IVideoPlayer';
2
+ import { EventEmitter } from './utils/EventEmitter';
3
+ export declare abstract class BasePlayer implements IVideoPlayer {
4
+ protected container: HTMLElement | null;
5
+ protected config: PlayerConfig;
6
+ protected events: EventEmitter;
7
+ protected state: PlayerState;
8
+ protected source: VideoSource | null;
9
+ protected subtitles: SubtitleTrack[];
10
+ protected currentSubtitleIndex: number;
11
+ constructor();
12
+ protected getDefaultConfig(): PlayerConfig;
13
+ protected getDefaultState(): PlayerState;
14
+ initialize(container: HTMLElement | string, config?: PlayerConfig): Promise<void>;
15
+ protected abstract setupPlayer(): Promise<void>;
16
+ abstract destroy(): Promise<void>;
17
+ abstract load(source: VideoSource): Promise<void>;
18
+ play(): Promise<void>;
19
+ pause(): void;
20
+ stop(): void;
21
+ abstract seek(time: number): void;
22
+ setVolume(level: number): void;
23
+ mute(): void;
24
+ unmute(): void;
25
+ toggleMute(): void;
26
+ abstract getQualities(): Quality[];
27
+ abstract getCurrentQuality(): Quality | null;
28
+ abstract setQuality(index: number): void;
29
+ abstract setAutoQuality(enabled: boolean): void;
30
+ setPlaybackRate(rate: number): void;
31
+ getPlaybackRate(): number;
32
+ getCurrentTime(): number;
33
+ getDuration(): number;
34
+ getBufferedPercentage(): number;
35
+ getState(): PlayerState;
36
+ isPlaying(): boolean;
37
+ isPaused(): boolean;
38
+ isEnded(): boolean;
39
+ abstract enterFullscreen(): Promise<void>;
40
+ abstract exitFullscreen(): Promise<void>;
41
+ toggleFullscreen(): Promise<void>;
42
+ abstract enterPictureInPicture(): Promise<void>;
43
+ abstract exitPictureInPicture(): Promise<void>;
44
+ on(event: keyof PlayerEvents, handler: Function): void;
45
+ off(event: keyof PlayerEvents, handler?: Function): void;
46
+ once(event: keyof PlayerEvents, handler: Function): void;
47
+ protected emit(event: keyof PlayerEvents, ...args: any[]): void;
48
+ setFreeDuration?(seconds: number): void;
49
+ resetFreePreviewGate?(): void;
50
+ getSubtitles(): SubtitleTrack[];
51
+ setSubtitleTrack(index: number): void;
52
+ disableSubtitles(): void;
53
+ protected abstract applySubtitleTrack(track: SubtitleTrack): void;
54
+ protected abstract removeSubtitles(): void;
55
+ protected handleError(error: PlayerError): void;
56
+ protected updateTime(time: number): void;
57
+ protected updateBuffered(percentage: number): void;
58
+ protected setBuffering(isBuffering: boolean): void;
59
+ }
60
+ //# sourceMappingURL=BasePlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasePlayer.d.ts","sourceRoot":"","sources":["../src/BasePlayer.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,8BAAsB,UAAW,YAAW,YAAY;IACtD,SAAS,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,CAAM;IAC1C,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAM;;IAQ5C,SAAS,CAAC,gBAAgB,IAAI,YAAY;IAe1C,SAAS,CAAC,eAAe,IAAI,WAAW;IAiBlC,UAAU,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvF,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/C,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAMZ,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAEjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAKd,UAAU,IAAI,IAAI;IAQlB,QAAQ,CAAC,YAAY,IAAI,OAAO,EAAE;IAClC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,GAAG,IAAI;IAC5C,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IACxC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAE/C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;IAIrB,qBAAqB,IAAI,MAAM;IAI/B,QAAQ,IAAI,WAAW;IAIvB,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,OAAO;IAInB,OAAO,IAAI,OAAO;IAIlB,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC,QAAQ,CAAC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/C,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C,EAAE,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI;IAIxD,IAAI,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAIxD,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAK/D,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACvC,oBAAoB,CAAC,IAAI,IAAI;IAE7B,YAAY,IAAI,aAAa,EAAE;IAI/B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrC,gBAAgB,IAAI,IAAI;IAKxB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IACjE,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAE1C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAU/C,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKlD,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;CAInD"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasePlayer = void 0;
4
+ const EventEmitter_1 = require("./utils/EventEmitter");
5
+ class BasePlayer {
6
+ constructor() {
7
+ this.container = null;
8
+ this.source = null;
9
+ this.subtitles = [];
10
+ this.currentSubtitleIndex = -1;
11
+ this.config = this.getDefaultConfig();
12
+ this.events = new EventEmitter_1.EventEmitter();
13
+ this.state = this.getDefaultState();
14
+ }
15
+ getDefaultConfig() {
16
+ return {
17
+ autoPlay: false,
18
+ muted: false,
19
+ volume: 1.0,
20
+ controls: true,
21
+ loop: false,
22
+ preload: 'metadata',
23
+ playsInline: true,
24
+ enableAdaptiveBitrate: true,
25
+ debug: false,
26
+ freeDuration: 0
27
+ };
28
+ }
29
+ getDefaultState() {
30
+ return {
31
+ isPlaying: false,
32
+ isPaused: true,
33
+ isBuffering: false,
34
+ isEnded: false,
35
+ isError: false,
36
+ currentTime: 0,
37
+ duration: 0,
38
+ bufferedPercentage: 0,
39
+ volume: 1.0,
40
+ isMuted: false,
41
+ playbackRate: 1.0,
42
+ availableQualities: []
43
+ };
44
+ }
45
+ async initialize(container, config) {
46
+ if (typeof container === 'string') {
47
+ const element = document.querySelector(container);
48
+ if (!element) {
49
+ throw new Error(`Container element not found: ${container}`);
50
+ }
51
+ this.container = element;
52
+ }
53
+ else {
54
+ this.container = container;
55
+ }
56
+ this.config = { ...this.getDefaultConfig(), ...config };
57
+ this.state.volume = this.config.volume || 1.0;
58
+ this.state.isMuted = this.config.muted || false;
59
+ await this.setupPlayer();
60
+ }
61
+ async play() {
62
+ this.state.isPlaying = true;
63
+ this.state.isPaused = false;
64
+ this.emit('onPlay');
65
+ }
66
+ pause() {
67
+ this.state.isPlaying = false;
68
+ this.state.isPaused = true;
69
+ this.emit('onPause');
70
+ }
71
+ stop() {
72
+ this.pause();
73
+ this.seek(0);
74
+ this.state.isEnded = true;
75
+ }
76
+ setVolume(level) {
77
+ const volume = Math.max(0, Math.min(1, level));
78
+ this.state.volume = volume;
79
+ this.emit('onVolumeChanged', volume);
80
+ }
81
+ mute() {
82
+ this.state.isMuted = true;
83
+ this.emit('onVolumeChanged', 0);
84
+ }
85
+ unmute() {
86
+ this.state.isMuted = false;
87
+ this.emit('onVolumeChanged', this.state.volume);
88
+ }
89
+ toggleMute() {
90
+ if (this.state.isMuted) {
91
+ this.unmute();
92
+ }
93
+ else {
94
+ this.mute();
95
+ }
96
+ }
97
+ setPlaybackRate(rate) {
98
+ this.state.playbackRate = rate;
99
+ }
100
+ getPlaybackRate() {
101
+ return this.state.playbackRate;
102
+ }
103
+ getCurrentTime() {
104
+ return this.state.currentTime;
105
+ }
106
+ getDuration() {
107
+ return this.state.duration;
108
+ }
109
+ getBufferedPercentage() {
110
+ return this.state.bufferedPercentage;
111
+ }
112
+ getState() {
113
+ return { ...this.state };
114
+ }
115
+ isPlaying() {
116
+ return this.state.isPlaying;
117
+ }
118
+ isPaused() {
119
+ return this.state.isPaused;
120
+ }
121
+ isEnded() {
122
+ return this.state.isEnded;
123
+ }
124
+ async toggleFullscreen() {
125
+ if (document.fullscreenElement) {
126
+ await this.exitFullscreen();
127
+ }
128
+ else {
129
+ await this.enterFullscreen();
130
+ }
131
+ }
132
+ on(event, handler) {
133
+ this.events.on(event, handler);
134
+ }
135
+ off(event, handler) {
136
+ this.events.off(event, handler);
137
+ }
138
+ once(event, handler) {
139
+ this.events.once(event, handler);
140
+ }
141
+ emit(event, ...args) {
142
+ this.events.emit(event, ...args);
143
+ }
144
+ getSubtitles() {
145
+ return this.subtitles;
146
+ }
147
+ setSubtitleTrack(index) {
148
+ if (index >= 0 && index < this.subtitles.length) {
149
+ this.currentSubtitleIndex = index;
150
+ this.applySubtitleTrack(this.subtitles[index]);
151
+ }
152
+ }
153
+ disableSubtitles() {
154
+ this.currentSubtitleIndex = -1;
155
+ this.removeSubtitles();
156
+ }
157
+ handleError(error) {
158
+ this.state.isError = true;
159
+ this.state.isPlaying = false;
160
+ this.emit('onError', error);
161
+ if (this.config.debug) {
162
+ console.error('[VideoPlayer Error]', error);
163
+ }
164
+ }
165
+ updateTime(time) {
166
+ this.state.currentTime = time;
167
+ this.emit('onTimeUpdate', time);
168
+ }
169
+ updateBuffered(percentage) {
170
+ this.state.bufferedPercentage = percentage;
171
+ this.emit('onProgress', percentage);
172
+ }
173
+ setBuffering(isBuffering) {
174
+ this.state.isBuffering = isBuffering;
175
+ this.emit('onBuffering', isBuffering);
176
+ }
177
+ }
178
+ exports.BasePlayer = BasePlayer;
179
+ //# sourceMappingURL=BasePlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasePlayer.js","sourceRoot":"","sources":["../src/BasePlayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { VideoPlayer } from './VideoPlayer';
2
+ import { VideoPlayerConfig, PlatformInfo } from './interfaces';
3
+ export declare class PlayerFactory {
4
+ private static platformDetector;
5
+ static createPlayer(container: HTMLElement | any, config?: VideoPlayerConfig): Promise<VideoPlayer>;
6
+ static getPlatformInfo(): PlatformInfo;
7
+ static isFeatureSupported(feature: string): boolean;
8
+ private static getFeatureSupport;
9
+ static getOptimizedConfig(baseConfig?: VideoPlayerConfig): VideoPlayerConfig;
10
+ }
11
+ //# sourceMappingURL=PlayerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerFactory.d.ts","sourceRoot":"","sources":["../src/PlayerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAC;AAG7E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0B;WAQ5C,YAAY,CACvB,SAAS,EAAE,WAAW,GAAG,GAAG,EAC5B,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAiDvB,MAAM,CAAC,eAAe,IAAI,YAAY;IAStC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA2DhC,MAAM,CAAC,kBAAkB,CAAC,UAAU,GAAE,iBAAsB,GAAG,iBAAiB;CAwEjF"}