ts-video-player 0.1.0 → 0.1.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 (176) hide show
  1. package/README.md +1 -1
  2. package/dist/cdn.d.ts +0 -1
  3. package/dist/cdn.min.js +76 -78
  4. package/dist/cdn.test.d.ts +0 -1
  5. package/dist/{chunk-eajts2jv.js → chunk-d352kdh6.js} +215 -193
  6. package/dist/{chunk-z1ehbz9f.js → chunk-ds1nj487.js} +35 -37
  7. package/dist/{chunk-36x4yhjn.js → chunk-rhykj0qy.js} +58 -60
  8. package/dist/config.d.ts +0 -1
  9. package/dist/core/audio-gain.d.ts +0 -1
  10. package/dist/core/caption-styles.d.ts +0 -1
  11. package/dist/core/chapters.d.ts +0 -1
  12. package/dist/core/error-overlay.d.ts +0 -1
  13. package/dist/core/events.d.ts +0 -1
  14. package/dist/core/features.d.ts +0 -1
  15. package/dist/core/i18n.d.ts +0 -1
  16. package/dist/core/index.d.ts +0 -1
  17. package/dist/core/live.d.ts +0 -1
  18. package/dist/core/media-session.d.ts +0 -1
  19. package/dist/core/orientation.d.ts +0 -1
  20. package/dist/core/popover.d.ts +0 -1
  21. package/dist/core/remote-playback.d.ts +0 -1
  22. package/dist/core/settings-menu.d.ts +0 -1
  23. package/dist/core/spinner.d.ts +0 -1
  24. package/dist/core/state.d.ts +0 -1
  25. package/dist/core/text-tracks.d.ts +0 -1
  26. package/dist/core/themes.d.ts +0 -1
  27. package/dist/core/thumbnails.d.ts +0 -1
  28. package/dist/core/tooltips.d.ts +0 -1
  29. package/dist/elements/base.d.ts +0 -1
  30. package/dist/elements/index.d.ts +0 -1
  31. package/dist/elements/index.js +49 -52
  32. package/dist/elements/media-airplay-button.d.ts +0 -1
  33. package/dist/elements/media-error-display.d.ts +0 -1
  34. package/dist/elements/media-fullscreen-button.d.ts +0 -1
  35. package/dist/elements/media-live-button.d.ts +0 -1
  36. package/dist/elements/media-mute-button.d.ts +0 -1
  37. package/dist/elements/media-pip-button.d.ts +0 -1
  38. package/dist/elements/media-play-button.d.ts +0 -1
  39. package/dist/elements/media-playback-rate-button.d.ts +0 -1
  40. package/dist/elements/media-preview-time.d.ts +0 -1
  41. package/dist/elements/media-progress-bar.d.ts +0 -1
  42. package/dist/elements/media-remote-playback-button.d.ts +0 -1
  43. package/dist/elements/media-seek-button.d.ts +0 -1
  44. package/dist/elements/media-settings-menu.d.ts +0 -1
  45. package/dist/elements/media-time-display.d.ts +0 -1
  46. package/dist/elements/media-time-group.d.ts +0 -1
  47. package/dist/elements/media-time-separator.d.ts +0 -1
  48. package/dist/elements/media-volume-slider.d.ts +0 -1
  49. package/dist/elements/utils.d.ts +0 -1
  50. package/dist/elements/video-player.d.ts +0 -1
  51. package/dist/elements/video-skin.d.ts +0 -1
  52. package/dist/features/captions.d.ts +0 -1
  53. package/dist/features/create-player.d.ts +0 -1
  54. package/dist/features/fullscreen.d.ts +0 -1
  55. package/dist/features/gestures.d.ts +0 -1
  56. package/dist/features/index.d.ts +0 -1
  57. package/dist/features/index.js +25 -28
  58. package/dist/features/keyboard.d.ts +0 -1
  59. package/dist/features/pip.d.ts +0 -1
  60. package/dist/features/playback.d.ts +0 -1
  61. package/dist/features/quality.d.ts +0 -1
  62. package/dist/features/types.d.ts +0 -1
  63. package/dist/features/volume.d.ts +0 -1
  64. package/dist/index.d.ts +0 -1
  65. package/dist/index.js +368 -370
  66. package/dist/layouts/index.d.ts +0 -1
  67. package/dist/player.d.ts +0 -1
  68. package/dist/plugins/ads.d.ts +0 -1
  69. package/dist/plugins/analytics.d.ts +0 -1
  70. package/dist/plugins/end-screen.d.ts +0 -1
  71. package/dist/plugins/index.d.ts +0 -1
  72. package/dist/plugins/index.js +2143 -17
  73. package/dist/plugins/skip-segments.d.ts +0 -1
  74. package/dist/plugins/watermark.d.ts +0 -1
  75. package/dist/providers/base.d.ts +0 -1
  76. package/dist/providers/dash.d.ts +0 -1
  77. package/dist/providers/hls.d.ts +0 -1
  78. package/dist/providers/html5.d.ts +4 -1
  79. package/dist/providers/index.d.ts +0 -1
  80. package/dist/providers/vimeo.d.ts +0 -1
  81. package/dist/providers/youtube.d.ts +0 -1
  82. package/dist/stx/index.d.ts +0 -1
  83. package/dist/stx/index.js +4 -6
  84. package/dist/types.d.ts +0 -1
  85. package/dist/ui/components.d.ts +0 -1
  86. package/dist/ui/index.d.ts +0 -1
  87. package/dist/ui/index.js +730 -13
  88. package/package.json +3 -5
  89. package/src/providers/html5.ts +1 -1
  90. package/src/providers/index.ts +36 -2
  91. package/dist/cdn.d.ts.map +0 -1
  92. package/dist/cdn.min.js.map +0 -54
  93. package/dist/cdn.test.d.ts.map +0 -1
  94. package/dist/chunk-36x4yhjn.js.map +0 -12
  95. package/dist/chunk-eajts2jv.js.map +0 -42
  96. package/dist/chunk-z1ehbz9f.js.map +0 -19
  97. package/dist/config.d.ts.map +0 -1
  98. package/dist/core/audio-gain.d.ts.map +0 -1
  99. package/dist/core/caption-styles.d.ts.map +0 -1
  100. package/dist/core/chapters.d.ts.map +0 -1
  101. package/dist/core/error-overlay.d.ts.map +0 -1
  102. package/dist/core/events.d.ts.map +0 -1
  103. package/dist/core/features.d.ts.map +0 -1
  104. package/dist/core/i18n.d.ts.map +0 -1
  105. package/dist/core/index.d.ts.map +0 -1
  106. package/dist/core/live.d.ts.map +0 -1
  107. package/dist/core/media-session.d.ts.map +0 -1
  108. package/dist/core/orientation.d.ts.map +0 -1
  109. package/dist/core/popover.d.ts.map +0 -1
  110. package/dist/core/remote-playback.d.ts.map +0 -1
  111. package/dist/core/settings-menu.d.ts.map +0 -1
  112. package/dist/core/spinner.d.ts.map +0 -1
  113. package/dist/core/state.d.ts.map +0 -1
  114. package/dist/core/text-tracks.d.ts.map +0 -1
  115. package/dist/core/themes.d.ts.map +0 -1
  116. package/dist/core/thumbnails.d.ts.map +0 -1
  117. package/dist/core/tooltips.d.ts.map +0 -1
  118. package/dist/elements/base.d.ts.map +0 -1
  119. package/dist/elements/index.d.ts.map +0 -1
  120. package/dist/elements/index.js.map +0 -9
  121. package/dist/elements/media-airplay-button.d.ts.map +0 -1
  122. package/dist/elements/media-error-display.d.ts.map +0 -1
  123. package/dist/elements/media-fullscreen-button.d.ts.map +0 -1
  124. package/dist/elements/media-live-button.d.ts.map +0 -1
  125. package/dist/elements/media-mute-button.d.ts.map +0 -1
  126. package/dist/elements/media-pip-button.d.ts.map +0 -1
  127. package/dist/elements/media-play-button.d.ts.map +0 -1
  128. package/dist/elements/media-playback-rate-button.d.ts.map +0 -1
  129. package/dist/elements/media-preview-time.d.ts.map +0 -1
  130. package/dist/elements/media-progress-bar.d.ts.map +0 -1
  131. package/dist/elements/media-remote-playback-button.d.ts.map +0 -1
  132. package/dist/elements/media-seek-button.d.ts.map +0 -1
  133. package/dist/elements/media-settings-menu.d.ts.map +0 -1
  134. package/dist/elements/media-time-display.d.ts.map +0 -1
  135. package/dist/elements/media-time-group.d.ts.map +0 -1
  136. package/dist/elements/media-time-separator.d.ts.map +0 -1
  137. package/dist/elements/media-volume-slider.d.ts.map +0 -1
  138. package/dist/elements/utils.d.ts.map +0 -1
  139. package/dist/elements/video-player.d.ts.map +0 -1
  140. package/dist/elements/video-skin.d.ts.map +0 -1
  141. package/dist/features/captions.d.ts.map +0 -1
  142. package/dist/features/create-player.d.ts.map +0 -1
  143. package/dist/features/fullscreen.d.ts.map +0 -1
  144. package/dist/features/gestures.d.ts.map +0 -1
  145. package/dist/features/index.d.ts.map +0 -1
  146. package/dist/features/index.js.map +0 -9
  147. package/dist/features/keyboard.d.ts.map +0 -1
  148. package/dist/features/pip.d.ts.map +0 -1
  149. package/dist/features/playback.d.ts.map +0 -1
  150. package/dist/features/quality.d.ts.map +0 -1
  151. package/dist/features/types.d.ts.map +0 -1
  152. package/dist/features/volume.d.ts.map +0 -1
  153. package/dist/index.d.ts.map +0 -1
  154. package/dist/index.js.map +0 -31
  155. package/dist/layouts/index.d.ts.map +0 -1
  156. package/dist/player.d.ts.map +0 -1
  157. package/dist/plugins/ads.d.ts.map +0 -1
  158. package/dist/plugins/analytics.d.ts.map +0 -1
  159. package/dist/plugins/end-screen.d.ts.map +0 -1
  160. package/dist/plugins/index.d.ts.map +0 -1
  161. package/dist/plugins/index.js.map +0 -9
  162. package/dist/plugins/skip-segments.d.ts.map +0 -1
  163. package/dist/plugins/watermark.d.ts.map +0 -1
  164. package/dist/providers/base.d.ts.map +0 -1
  165. package/dist/providers/dash.d.ts.map +0 -1
  166. package/dist/providers/hls.d.ts.map +0 -1
  167. package/dist/providers/html5.d.ts.map +0 -1
  168. package/dist/providers/index.d.ts.map +0 -1
  169. package/dist/providers/vimeo.d.ts.map +0 -1
  170. package/dist/providers/youtube.d.ts.map +0 -1
  171. package/dist/stx/index.d.ts.map +0 -1
  172. package/dist/stx/index.js.map +0 -11
  173. package/dist/types.d.ts.map +0 -1
  174. package/dist/ui/components.d.ts.map +0 -1
  175. package/dist/ui/index.d.ts.map +0 -1
  176. package/dist/ui/index.js.map +0 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-video-player",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "A modern, framework-agnostic video player with deep stx integration",
5
5
  "author": "Chris Breuer <chris@stacksjs.org>",
6
6
  "license": "MIT",
@@ -8,9 +8,7 @@
8
8
  "main": "./dist/index.js",
9
9
  "module": "./dist/index.js",
10
10
  "types": "./dist/index.d.ts",
11
- "sideEffects": [
12
- "./dist/cdn.min.js"
13
- ],
11
+ "sideEffects": true,
14
12
  "exports": {
15
13
  ".": {
16
14
  "types": "./dist/index.d.ts",
@@ -62,7 +60,7 @@
62
60
  },
63
61
  "devDependencies": {
64
62
  "@types/bun": "latest",
65
- "typescript": "^5.7.0"
63
+ "typescript": "^7.0.2"
66
64
  },
67
65
  "peerDependencies": {
68
66
  "stx": ">=0.65.0"
@@ -65,7 +65,7 @@ function getExtension(src: string): string {
65
65
  /**
66
66
  * Get MIME type for a source
67
67
  */
68
- function getMimeType(src: string): string {
68
+ export function getMimeType(src: string): string {
69
69
  const ext = getExtension(src)
70
70
  const mimeTypes: Record<string, string> = {
71
71
  mp4: 'video/mp4',
@@ -35,7 +35,7 @@ export type { Provider, ProviderLoader, ProviderType } from '../types'
35
35
  // =============================================================================
36
36
 
37
37
  import type { ProviderLoader, Src } from '../types'
38
- import { html5Loader } from './html5'
38
+ import { getMimeType, html5Loader } from './html5'
39
39
  import { youtubeLoader } from './youtube'
40
40
  import { vimeoLoader } from './vimeo'
41
41
  import { hlsLoader } from './hls'
@@ -52,6 +52,32 @@ export const defaultLoaders: ProviderLoader[] = [
52
52
  html5Loader, // HTML5 as fallback
53
53
  ]
54
54
 
55
+ /**
56
+ * The URL of a source object that says nothing about its kind: `{ src }`,
57
+ * perhaps with a quality or size, but no `type`. Only its URL can tell a
58
+ * YouTube link from an MP4, so that is what the loaders are asked about.
59
+ */
60
+ function untypedUrl(src: Src): string | null {
61
+ if (!src || typeof src !== 'object' || typeof src.src !== 'string')
62
+ return null
63
+ return 'type' in src && src.type ? null : src.src
64
+ }
65
+
66
+ /** What a loader's source type is written as, for a source it matched by URL alone. */
67
+ const TYPE_FOR_LOADER: Record<string, (url: string) => string> = {
68
+ youtube: () => 'youtube',
69
+ vimeo: () => 'vimeo',
70
+ hls: () => 'application/x-mpegurl',
71
+ dash: () => 'dash',
72
+ video: url => getMimeType(url),
73
+ }
74
+
75
+ function withType(src: Src, loader: ProviderLoader): Src {
76
+ const url = untypedUrl(src)
77
+ const type = url && TYPE_FOR_LOADER[loader.type]
78
+ return url && type ? { ...(src as object), type: type(url) } as Src : src
79
+ }
80
+
55
81
  /**
56
82
  * Find the appropriate provider loader for a source
57
83
  */
@@ -61,6 +87,13 @@ export function findLoader(src: Src, loaders: ProviderLoader[] = defaultLoaders)
61
87
  return loader
62
88
  }
63
89
  }
90
+ const url = untypedUrl(src)
91
+ if (url) {
92
+ for (const loader of loaders) {
93
+ if (loader.canPlay(url))
94
+ return loader
95
+ }
96
+ }
64
97
  return null
65
98
  }
66
99
 
@@ -75,7 +108,8 @@ export function findSourceCandidates(sources: readonly Src[], loaders: ProviderL
75
108
  const candidates: SourceCandidate[] = []
76
109
  sources.forEach((src, index) => {
77
110
  const loader = findLoader(src, loaders)
78
- if (loader) candidates.push({ src, index, loader })
111
+ // Typed for the provider that claimed it, which reads `type` to know how.
112
+ if (loader) candidates.push({ src: withType(src, loader), index, loader })
79
113
  })
80
114
  return candidates
81
115
  }
package/dist/cdn.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdn.d.ts","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}