@bitmovin/player-web-x 10.2.0-beta.13 → 10.2.0-beta.15

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 (204) hide show
  1. package/bundles/playerx-bitmovin-v8-core.js +2 -2
  2. package/bundles/playerx-bitmovin-v8.js +2 -2
  3. package/bundles/playerx-core.js +2 -2
  4. package/bundles/playerx-dash.js +2 -2
  5. package/bundles/playerx-hls-ts-audio.js +2 -2
  6. package/bundles/playerx-hls.js +2 -2
  7. package/bundles/playerx-playback.js +2 -2
  8. package/bundles/playerx-tv.js +2 -2
  9. package/package.json +1 -1
  10. package/packages/playerx-adaptation.package.js +2 -2
  11. package/packages/playerx-advertising-api.package.js +2 -2
  12. package/packages/playerx-advertising-base.package.js +2 -2
  13. package/packages/playerx-advertising-bitmovin.package.js +2 -2
  14. package/packages/playerx-analytics.package.js +1 -1
  15. package/packages/playerx-bitmovin-advertising-bundle.package.js +2 -2
  16. package/packages/playerx-bitmovin-source-api.package.js +2 -2
  17. package/packages/playerx-bitmovin-ui.package.js +2 -2
  18. package/packages/playerx-bitmovin-v8-core.package.js +2 -2
  19. package/packages/playerx-bitmovin-v8-static-api.package.js +2 -2
  20. package/packages/playerx-bitmovin-video-element-utils.package.js +2 -2
  21. package/packages/playerx-capabilities.package.js +2 -2
  22. package/packages/playerx-container-mp4.package.js +2 -2
  23. package/packages/playerx-container-ts.package.js +2 -2
  24. package/packages/playerx-core.package.js +2 -2
  25. package/packages/playerx-dash-manifest-technology.package.js +2 -2
  26. package/packages/playerx-dash-manifest.package.js +2 -2
  27. package/packages/playerx-dash-parsing.package.js +2 -2
  28. package/packages/playerx-dash-translation.package.js +2 -2
  29. package/packages/playerx-dash.package.js +2 -2
  30. package/packages/playerx-data.package.js +2 -2
  31. package/packages/playerx-event-bus.package.js +1 -1
  32. package/packages/playerx-hls-manifest-technology.package.js +2 -2
  33. package/packages/playerx-hls-manifest.package.js +2 -2
  34. package/packages/playerx-hls-parsing.package.js +2 -2
  35. package/packages/playerx-hls-translation.package.js +2 -2
  36. package/packages/playerx-hls.package.js +2 -2
  37. package/packages/playerx-media-state.package.d.ts +1 -0
  38. package/packages/playerx-media-state.package.js +10 -0
  39. package/packages/playerx-mse-playback.package.js +2 -2
  40. package/packages/playerx-mse-presentation.package.js +2 -2
  41. package/packages/playerx-native-playback.package.js +2 -2
  42. package/packages/playerx-native-presentation.package.js +2 -2
  43. package/packages/playerx-network.package.js +2 -2
  44. package/packages/playerx-no-adaptation.package.js +2 -2
  45. package/packages/playerx-playback-api.package.js +2 -2
  46. package/packages/playerx-playback-technology.package.js +2 -2
  47. package/packages/playerx-playback.package.js +2 -2
  48. package/packages/playerx-player-api.package.js +2 -2
  49. package/packages/playerx-segment-processing.package.js +2 -2
  50. package/packages/playerx-source.package.js +2 -2
  51. package/packages/playerx-sources-api.package.js +2 -2
  52. package/packages/playerx-stream-data-structure.package.js +2 -2
  53. package/packages/playerx-streaming.package.js +1 -1
  54. package/packages/playerx-subtitle-api.package.js +2 -2
  55. package/packages/playerx-subtitle-base.package.js +2 -2
  56. package/packages/playerx-subtitle-format-detection.package.js +1 -1
  57. package/packages/playerx-subtitle-native-renderer.package.js +2 -2
  58. package/packages/playerx-subtitles.package.js +2 -2
  59. package/packages/playerx-trick-play.package.js +2 -2
  60. package/packages/playerx-ts-transmuxer.package.js +2 -2
  61. package/packages/playerx-tv.package.js +1 -1
  62. package/packages/playerx-ui.package.js +2 -2
  63. package/packages/playerx-video-element-controller.package.d.ts +1 -0
  64. package/packages/playerx-video-element-controller.package.js +10 -0
  65. package/packages/playerx-view-mode.package.js +2 -2
  66. package/packages/playerx-web-vtt.package.js +2 -2
  67. package/playerx-framework-utils.js +1 -1
  68. package/types/Types.d.ts +3 -0
  69. package/types/bundles/BitmovinV8.bundle.d.ts +1 -1
  70. package/types/bundles/Dash.bundle.d.ts +1 -1
  71. package/types/bundles/Hls.bundle.d.ts +1 -1
  72. package/types/bundles/HlsTsAudio.bundle.d.ts +1 -1
  73. package/types/bundles/Playback.bundle.d.ts +1 -1
  74. package/types/bundles/Tv.bundle.d.ts +1 -1
  75. package/types/packages/adaptation/AdaptationAlgorithm.d.ts +4 -0
  76. package/types/packages/adaptation/StartupQuality.d.ts +5 -0
  77. package/types/packages/adaptation/Types.d.ts +7 -11
  78. package/types/packages/adaptation/WishDataAtom.d.ts +9 -2
  79. package/types/packages/advertising/BitmovinAdvertisingBundle.package.d.ts +1 -1
  80. package/types/packages/advertising/api/AdvertisingApi.package.d.ts +1 -1
  81. package/types/packages/advertising/api/AdvertisingEvents.d.ts +45 -6
  82. package/types/packages/advertising/api/Types.d.ts +110 -11
  83. package/types/packages/advertising/api/api-conversion/AdApiCache.d.ts +14 -0
  84. package/types/packages/advertising/api/content-source/AdBreakAtom.d.ts +19 -0
  85. package/types/packages/advertising/api/content-source/Types.d.ts +36 -0
  86. package/types/packages/advertising/base/AdExtension.d.ts +11 -0
  87. package/types/packages/advertising/base/AdIconAtom.d.ts +20 -0
  88. package/types/packages/advertising/base/AdIconPosition.d.ts +8 -0
  89. package/types/packages/advertising/base/AdPosition.d.ts +1 -0
  90. package/types/packages/advertising/base/AdQuartile.d.ts +5 -0
  91. package/types/packages/advertising/base/AdResource.d.ts +16 -0
  92. package/types/packages/advertising/base/AdSchedule.d.ts +2 -2
  93. package/types/packages/advertising/base/AdTagAtom.d.ts +1 -1
  94. package/types/packages/advertising/base/AdType.d.ts +4 -0
  95. package/types/packages/advertising/base/BaseAdAtom.d.ts +27 -5
  96. package/types/packages/advertising/base/{BaseAdBreakAtom.d.ts → BaseAdPodAtom.d.ts} +8 -6
  97. package/types/packages/advertising/base/BaseAdPodState.d.ts +7 -0
  98. package/types/packages/advertising/base/BaseAdState.d.ts +7 -0
  99. package/types/packages/advertising/base/ClickThroughAtom.d.ts +11 -0
  100. package/types/packages/advertising/base/CompanionAdAtom.d.ts +18 -0
  101. package/types/packages/advertising/base/Types.d.ts +19 -29
  102. package/types/packages/advertising/bitmovin/Types.d.ts +17 -10
  103. package/types/packages/capabilities/Types.d.ts +1 -1
  104. package/types/packages/container/container-mp4/ContainerMp4.package.d.ts +2 -0
  105. package/types/packages/container/container-ts/ContainerTs.package.d.ts +3 -1
  106. package/types/packages/container/ts-transmuxer/TsTransmuxer.package.d.ts +2 -0
  107. package/types/packages/core/Constants.d.ts +7 -0
  108. package/types/packages/core/Types.d.ts +3 -2
  109. package/types/packages/core/metrics/MetricsAtom.d.ts +1 -1
  110. package/types/packages/{adaptation → core/state}/RingBufferAtom.d.ts +2 -2
  111. package/types/packages/core/state/StateMachineAtom.d.ts +13 -12
  112. package/types/packages/core/state/state-effect/Types.d.ts +2 -2
  113. package/types/packages/core/technology/Types.d.ts +2 -2
  114. package/types/packages/data/Types.d.ts +7 -1
  115. package/types/packages/manifest/dash/parsing/Errors.d.ts +1 -1
  116. package/types/packages/manifest/dash/root/Types.d.ts +3 -1
  117. package/types/packages/manifest/dash/technology/Types.d.ts +2 -1
  118. package/types/packages/manifest/hls/parsing/Constants.d.ts +47 -0
  119. package/types/packages/manifest/hls/parsing/Errors.d.ts +1 -1
  120. package/types/packages/manifest/hls/parsing/Types.d.ts +5 -48
  121. package/types/packages/manifest/hls/parsing/m3u8/TranslatorStream.d.ts +1 -0
  122. package/types/packages/manifest/hls/root/Hls.package.d.ts +6 -1
  123. package/types/packages/manifest/hls/technology/Types.d.ts +2 -1
  124. package/types/packages/manifest/hls/translation/HlsTranslation.package.d.ts +5 -0
  125. package/types/packages/manifest/hls/translation/Types.d.ts +10 -11
  126. package/types/packages/manifest/hls/translation/segments/StreamHelpers.d.ts +14 -0
  127. package/types/packages/manifest/hls/translation/stream/TracksToSelectionGroups.d.ts +6 -0
  128. package/types/packages/manifest/hls/translation/stream/UnknownTrackToMediaTrackTranslator.d.ts +4 -0
  129. package/types/packages/media-state/MediaInfoAtoms.d.ts +18 -0
  130. package/types/packages/media-state/MediaState.d.ts +10 -0
  131. package/types/packages/media-state/MediaState.package.d.ts +22 -0
  132. package/types/packages/media-state/MediaStateAtom.d.ts +16 -0
  133. package/types/packages/media-state/MediaStateTransitionType.d.ts +11 -0
  134. package/types/packages/media-state/SeekRestrictionAtom.d.ts +2 -0
  135. package/types/packages/media-state/Types.d.ts +48 -0
  136. package/types/packages/media-state/controllers/video-element/Types.d.ts +32 -0
  137. package/types/packages/media-state/controllers/video-element/VideoElementController.package.d.ts +15 -0
  138. package/types/packages/network/HttpRequestMethod.d.ts +5 -0
  139. package/types/packages/network/HttpRequestType.d.ts +11 -0
  140. package/types/packages/network/HttpResponseType.d.ts +7 -0
  141. package/types/packages/network/NetworkAtom.d.ts +15 -0
  142. package/types/packages/network/NetworkTask.d.ts +8 -7
  143. package/types/packages/network/Types.d.ts +17 -26
  144. package/types/packages/playback/play-pause/Types.d.ts +0 -3
  145. package/types/packages/playback/volume/Types.d.ts +2 -4
  146. package/types/packages/playback-api/play-pause-api/Types.d.ts +4 -3
  147. package/types/packages/playback-api/playback-api-events/Types.d.ts +11 -8
  148. package/types/packages/playback-api/time-api/Types.d.ts +4 -5
  149. package/types/packages/playback-technology/PlaybackTechnologyEntryType.d.ts +4 -0
  150. package/types/packages/playback-technology/Types.d.ts +6 -6
  151. package/types/packages/player-api/PlayerApi.package.d.ts +2 -0
  152. package/types/packages/player-api/PlayerEvent.d.ts +3 -0
  153. package/types/packages/player-api/Types.d.ts +4 -4
  154. package/types/packages/presentation/mse/playback-technology/Types.d.ts +2 -1
  155. package/types/packages/presentation/mse/playback-technology/atoms/MsePresentationStateAtom.d.ts +1 -4
  156. package/types/packages/presentation/mse/presentation/MsePresentation.package.d.ts +4 -2
  157. package/types/packages/presentation/mse/presentation/Types.d.ts +6 -0
  158. package/types/packages/presentation/native/NativePlayback.package.d.ts +1 -2
  159. package/types/packages/presentation/native/playback-technology/Types.d.ts +2 -1
  160. package/types/packages/segment-processing/SegmentProcessing.package.d.ts +2 -1
  161. package/types/packages/segment-processing/SegmentProcessorType.d.ts +7 -0
  162. package/types/packages/segment-processing/Types.d.ts +10 -10
  163. package/types/packages/source/SourceReference.d.ts +1 -1
  164. package/types/packages/source/atoms/PlaybackConfigAtom.d.ts +2 -2
  165. package/types/packages/source/atoms/SourceConfigAtom.d.ts +2 -0
  166. package/types/packages/sources-api/SourcesApiEvent.d.ts +7 -0
  167. package/types/packages/sources-api/Types.d.ts +4 -8
  168. package/types/packages/stream-data-structure/Types.d.ts +1 -0
  169. package/types/packages/stream-data-structure/segment/Exports.d.ts +3 -3
  170. package/types/packages/stream-data-structure/segment/SegmentAtom.d.ts +11 -2
  171. package/types/packages/stream-data-structure/segment/SegmentDataAtom.d.ts +1 -7
  172. package/types/packages/stream-data-structure/segment/SegmentUtils.d.ts +3 -2
  173. package/types/packages/stream-data-structure/selection-group/SelectionGroupAtom.d.ts +1 -2
  174. package/types/packages/stream-data-structure/track/Exports.d.ts +6 -1
  175. package/types/packages/stream-data-structure/track/TrackAtom.d.ts +19 -4
  176. package/types/packages/stream-data-structure/track/TrackTypeGuards.d.ts +3 -1
  177. package/types/packages/stream-data-structure/track/TypeDetection.d.ts +25 -0
  178. package/types/packages/stream-data-structure/track/TypeDetectionTypeGuards.d.ts +4 -0
  179. package/types/packages/streaming/Streaming.package.d.ts +2 -2
  180. package/types/packages/streaming/Types.d.ts +3 -2
  181. package/types/packages/subtitles/subtitle-api/SubtitleEvent.d.ts +9 -0
  182. package/types/packages/subtitles/subtitle-api/Types.d.ts +3 -9
  183. package/types/packages/trick-play/TrickPlay.package.d.ts +2 -1
  184. package/types/packages/v8-compat/BitmovinUi.package.d.ts +4 -4
  185. package/types/packages/v8-compat/BitmovinV8Core.package.d.ts +16 -4
  186. package/types/packages/v8-compat/BitmovinV8StaticApi.package.d.ts +8 -5
  187. package/types/packages/v8-compat/apis/SourceApis.d.ts +5 -0
  188. package/types/packages/v8-compat/apis/SubtitleApi.d.ts +5 -0
  189. package/types/packages/v8-compat/enums/AdditionalPlayerExportNames.d.ts +9 -0
  190. package/types/packages/v8-compat/enums/PlayerExports.d.ts +0 -7
  191. package/types/packages/v8-compat/event-handling/EventDispatcher.d.ts +11 -0
  192. package/types/packages/v8-compat/source-api/BitmovinSourceApi.package.d.ts +10 -4
  193. package/types/packages/v8-compat/video-element/BitmovinVideoElementUtils.package.d.ts +4 -4
  194. package/types/packages/view-mode/Types.d.ts +4 -6
  195. package/types/packages/view-mode/ViewMode.d.ts +5 -0
  196. package/types/packages/view-mode/ViewMode.package.d.ts +2 -0
  197. package/types/packages/view-mode/ViewModeAtom.d.ts +1 -1
  198. package/types/packages/core/FrameworkError.d.ts +0 -4
  199. package/types/packages/core/network/NetworkAtom.d.ts +0 -21
  200. package/types/packages/playback/playback-state/Types.d.ts +0 -41
  201. package/types/packages/playback/video-element-state/SeekRestrictionAtom.d.ts +0 -2
  202. package/types/packages/playback/video-element-state/Types.d.ts +0 -32
  203. package/types/packages/playback/video-element-state/VideoElementStateAtom.d.ts +0 -58
  204. package/types/packages/presentation/native/Types.d.ts +0 -12
@@ -1,4 +1,4 @@
1
- import { FrameworkError } from '../../../core/FrameworkError';
1
+ import { FrameworkError } from '../../../../../framework-types/error/FrameworkError';
2
2
  export declare class HlsParsingError extends FrameworkError {
3
3
  constructor(message: string);
4
4
  }
@@ -1,5 +1,10 @@
1
1
  import type { ByteRange } from '../../../stream-data-structure/segment/SegmentAtom';
2
+ import type { MetadataType, PlaylistType, TagType } from './Constants';
2
3
  import type { HlsParsingError, MissingM3uTagError } from './Errors';
4
+ export type { HlsEncryptionMethod } from './Constants';
5
+ export type { MetadataType } from './Constants';
6
+ export type { TagType } from './Constants';
7
+ export type { PlaylistType } from './Constants';
3
8
  interface StartTagAttributes {
4
9
  timeOffset: number;
5
10
  precise: boolean;
@@ -20,11 +25,6 @@ export interface Scte35 {
20
25
  attributes?: Scte35TagAttributes;
21
26
  type: MetadataType.SCTE;
22
27
  }
23
- export declare enum HlsEncryptionMethod {
24
- NONE = "NONE",
25
- AES_128 = "AES-128",
26
- SAMPLE_AES = "SAMPLE-AES"
27
- }
28
28
  export interface SegmentEncryptionInfo {
29
29
  uri: string;
30
30
  method: string;
@@ -152,14 +152,6 @@ export interface MediaPlaylist extends Playlist {
152
152
  map?: MapInformation;
153
153
  }
154
154
  export type HlsManifest = MultivariantPlaylist | MediaPlaylist;
155
- export declare enum MetadataType {
156
- CUETAG = "CUETAG",
157
- DATERANGE = "DATERANGE",
158
- CUSTOM = "CUSTOM",
159
- SCTE = "SCTE",
160
- ID3 = "ID3",
161
- EMSG = "EMSG"
162
- }
163
155
  export interface HlsTag {
164
156
  name: string;
165
157
  attributes?: {
@@ -167,40 +159,6 @@ export interface HlsTag {
167
159
  };
168
160
  value?: string;
169
161
  }
170
- export declare enum TagType {
171
- M3u = "m3u",
172
- AllowCache = "allow-cache",
173
- ByteRange = "byterange",
174
- EndList = "endlist",
175
- Inf = "inf",
176
- Key = "key",
177
- MediaSequence = "media-sequence",
178
- DiscontinuitySequence = "discontinuity-sequence",
179
- PlaylistType = "playlist-type",
180
- StreamInf = "stream-inf",
181
- IframeStreamInf = "i-frame-stream-inf",
182
- Media = "media",
183
- Start = "start",
184
- Discontinuity = "discontinuity",
185
- DateTime = "date-time",
186
- TargetDuration = "targetduration",
187
- Map = "map",
188
- IndependentSegments = "independent-segments",
189
- SessionData = "session-data",
190
- SessionKey = "session-key",
191
- CueOut = "cue-out",
192
- CueOutCont = "cue-out-cont",
193
- CueIn = "cue-in",
194
- Scte35 = "scte35",
195
- DateRange = "daterange",
196
- Version = "version",
197
- Uri = "uri",
198
- Unknown = "unknown"
199
- }
200
- export declare enum PlaylistType {
201
- Vod = "VOD",
202
- Event = "EVENT"
203
- }
204
162
  export type BaseTag<T extends TagType> = {
205
163
  tagType: T;
206
164
  };
@@ -269,4 +227,3 @@ export declare enum HlsParsingExportNames {
269
227
  ParsingFunctions = "hls-parsing-functions",
270
228
  Errors = "hls-parsing-errors"
271
229
  }
272
- export {};
@@ -26,6 +26,7 @@ export declare class TranslatorStream extends Stream<string, Tag> {
26
26
  private translateM3u;
27
27
  private translateAllowCache;
28
28
  private translateByteRange;
29
+ private resolveImplicitByteRangeOffset;
29
30
  private translateEndList;
30
31
  private translateInf;
31
32
  private translateKey;
@@ -13,13 +13,14 @@
13
13
  import type { ContextHaving } from '../../../../../framework-types/execution-context/Types';
14
14
  import type { NamedTask, Task } from '../../../../../framework-types/task/Types';
15
15
  import type { EmptyObject } from '../../../../Types';
16
- import type { AdaptationExportNames } from '../../../adaptation/Types';
16
+ import { AdaptationExportNames } from '../../../adaptation/Types';
17
17
  import type { Constants } from '../../../core/Constants';
18
18
  import type { MetricsAtom } from '../../../core/metrics/MetricsAtom';
19
19
  import type { CoreEffects, CoreStateAtoms } from '../../../core/Types';
20
20
  import { CoreExportNames } from '../../../core/Types';
21
21
  import type { CoreUtils } from '../../../core/utils/Types';
22
22
  import type { NetworkTask } from '../../../network/NetworkTask';
23
+ import type { HttpRequestMethod, HttpResponseType } from '../../../network/Types';
23
24
  import { NetworkExportNames } from '../../../network/Types';
24
25
  import type { SourceStateAtom } from '../../../source/atoms/SourceStateAtom';
25
26
  import { SourceExportNames } from '../../../source/Types';
@@ -32,6 +33,7 @@ import { HlsParsingExportNames } from '../parsing/Types';
32
33
  import { HlsTechState } from '../technology/Types';
33
34
  import type { HlsMultivariantPlaylistTranslatorTask } from '../translation/manifests/HlsMultivariantPlaylistTranslatorTask';
34
35
  import type { HlsVariantTranslationTask } from '../translation/manifests/HlsVariantTranslationTask';
36
+ import type { HlsTranslationUtils } from '../translation/Types';
35
37
  import { HlsTranslationExportNames } from '../translation/Types';
36
38
  import { HlsPackageExportNames } from './Types';
37
39
  type HlsDependencies = {
@@ -41,11 +43,14 @@ type HlsDependencies = {
41
43
  [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
42
44
  [SourceExportNames.SourceState]: SourceStateAtom;
43
45
  [NetworkExportNames.NetworkTask]: typeof NetworkTask;
46
+ [NetworkExportNames.HttpRequestMethod]: typeof HttpRequestMethod;
47
+ [NetworkExportNames.HttpResponseType]: typeof HttpResponseType;
44
48
  [AdaptationExportNames.Metrics]: MetricsAtom;
45
49
  [HlsParsingExportNames.ParsingTask]: typeof HlsParsingTask;
46
50
  [HlsParsingExportNames.ParsingFunctions]: typeof HlsParsingFunctions;
47
51
  [HlsTranslationExportNames.HlsVariantTranslator]: typeof HlsVariantTranslationTask;
48
52
  [HlsTranslationExportNames.HlsMultivariantTranslator]: typeof HlsMultivariantPlaylistTranslatorTask;
53
+ [HlsTranslationExportNames.HlsTranslationUtils]: HlsTranslationUtils;
49
54
  } & StreamDataStructurePackageExports & StreamingStateType & HlsTechState;
50
55
  type ManifestLoadTaskType = NamedTask<Task<HlsPackageContext, SourceStateAtom, void>>;
51
56
  export type HlsExports = {
@@ -3,7 +3,7 @@ import type { ContextHaving } from '../../../../../framework-types/execution-con
3
3
  import type { Constants } from '../../../core/Constants';
4
4
  import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../../core/Types';
5
5
  import type { CoreUtils } from '../../../core/utils/Types';
6
- import type { ManifestTechnologyEntry, PlaybackTechnologyComponent } from '../../../playback-technology/Types';
6
+ import type { ManifestTechnologyEntry, PlaybackTechnologyComponent, PlaybackTechnologyEntryType, PlaybackTechnologyExportNames } from '../../../playback-technology/Types';
7
7
  import type { Resource } from '../../../source/atoms/SourceConfigAtom';
8
8
  import type { StreamDataStructureStream } from '../../../stream-data-structure/stream/Exports';
9
9
  import type { createStreamingStateAtom, StreamingStateAtom } from '../../../streaming/atoms/StreamingStateAtom';
@@ -20,6 +20,7 @@ export interface HlsTechStateData {
20
20
  export type HlsManifestTechnologyExports = EmptyObject;
21
21
  export type HlsManifestTechnologyDependencies = {
22
22
  [PlaybackTechnologyComponent]: PlaybackTechnologyComponent;
23
+ [PlaybackTechnologyExportNames.EntryType]: typeof PlaybackTechnologyEntryType;
23
24
  [CoreExportNames.Constants]: Constants;
24
25
  [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
25
26
  [CoreExportNames.CoreEffects]: CoreEffects;
@@ -14,18 +14,23 @@ import { CoreExportNames } from '../../../core/Types';
14
14
  import type { CoreUtils } from '../../../core/utils/Types';
15
15
  import type { StreamDataStructurePackageExports } from '../../../stream-data-structure/Types';
16
16
  import type { ContextWithState } from '../../../Types';
17
+ import type { HlsParsingFunctions } from '../parsing/HlsParsingFunctions';
18
+ import { HlsParsingExportNames } from '../parsing/Types';
17
19
  import { HlsMultivariantPlaylistTranslatorTask } from './manifests/HlsMultivariantPlaylistTranslatorTask';
18
20
  import { HlsVariantTranslationTask } from './manifests/HlsVariantTranslationTask';
21
+ import type { HlsTranslationUtils } from './Types';
19
22
  import { HlsTranslationExportNames } from './Types';
20
23
  type Dependencies = {
21
24
  [CoreExportNames.Utils]: CoreUtils;
22
25
  [CoreExportNames.Constants]: Constants;
23
26
  [CoreExportNames.CoreEffects]: CoreEffects;
24
27
  [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
28
+ [HlsParsingExportNames.ParsingFunctions]: typeof HlsParsingFunctions;
25
29
  } & StreamDataStructurePackageExports;
26
30
  export type HlsTranslationPackageExports = {
27
31
  [HlsTranslationExportNames.HlsVariantTranslator]: typeof HlsVariantTranslationTask;
28
32
  [HlsTranslationExportNames.HlsMultivariantTranslator]: typeof HlsMultivariantPlaylistTranslatorTask;
33
+ [HlsTranslationExportNames.HlsTranslationUtils]: HlsTranslationUtils;
29
34
  };
30
35
  export type HlsTranslationPackageContext = ContextHaving<Dependencies, HlsTranslationPackageExports, ContextWithState>;
31
36
  export declare const HlsTranslationPackage: import("../../../../../framework-types/package-api/Package").Package<Dependencies, HlsTranslationPackageExports, EmptyObject>;
@@ -1,14 +1,13 @@
1
- import type { RenditionAttributes, Variant } from '../parsing/Types';
2
- export declare function isMediaTagWithUri(rendition: {
3
- attributes: RenditionAttributes;
4
- }): rendition is {
5
- attributes: RenditionAttributes & {
6
- URI: string;
7
- };
8
- };
9
- export declare function getReferencedAudioGroupId(variant: Variant): string | undefined;
10
- export declare function getReferencedVideoGroupId(variant: Variant): string | undefined;
1
+ import type { maybeSetSelectionGroupContainerFormat } from './segments/StreamHelpers';
2
+ import type { addTrackToSelectionGroup } from './stream/TracksToSelectionGroups';
3
+ import type { translateUnknownTrackToMediaTrack } from './stream/UnknownTrackToMediaTrackTranslator';
11
4
  export declare enum HlsTranslationExportNames {
12
5
  HlsMultivariantTranslator = "hls-multivariant-translator",
13
- HlsVariantTranslator = "hls-variant-translator"
6
+ HlsVariantTranslator = "hls-variant-translator",
7
+ HlsTranslationUtils = "hls-translation-utils"
14
8
  }
9
+ export type HlsTranslationUtils = {
10
+ addTrackToSelectionGroup: typeof addTrackToSelectionGroup;
11
+ maybeSetSelectionGroupContainerFormat: typeof maybeSetSelectionGroupContainerFormat;
12
+ translateUnknownTrackToMediaTrack: typeof translateUnknownTrackToMediaTrack;
13
+ };
@@ -0,0 +1,14 @@
1
+ import type { SegmentAtom } from '../../../../stream-data-structure/segment/SegmentAtom';
2
+ import type { SelectionGroupAtom } from '../../../../stream-data-structure/selection-group/SelectionGroupAtom';
3
+ import type { StreamAtom } from '../../../../stream-data-structure/stream/StreamAtom';
4
+ import type { AudioTrackAtom, MediaTrackAtom, SubtitleTrackAtom, TrackAtom, VideoTrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
5
+ import type { SegmentEntry } from '../../parsing/Types';
6
+ import type { HlsTranslationPackageContext } from '../HlsTranslation.package';
7
+ export declare function createSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom): import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").UnknownSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").AudioSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").VideoSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").SubtitleSelectionGroupAtom;
8
+ export declare function findOrCreateSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom, selectionGroups: readonly SelectionGroupAtom[]): SelectionGroupAtom;
9
+ export declare function createTrack(context: HlsTranslationPackageContext, variantUrl: string, stream: StreamAtom, discontinuitySequenceNumber: number, referenceTrack?: TrackAtom): AudioTrackAtom | VideoTrackAtom | SubtitleTrackAtom | import("../../../../stream-data-structure/track/TrackAtom").UnknownTrackAtom;
10
+ export declare function findTracksOfVariant(context: HlsTranslationPackageContext, stream: StreamAtom, variantUrl: string): TrackAtom[];
11
+ export declare function findOrCreateTrack(context: HlsTranslationPackageContext, variantUrl: string, segment: SegmentEntry, stream: StreamAtom, referenceTrack?: TrackAtom): TrackAtom;
12
+ export declare function hasSegment(track: MediaTrackAtom, segment: SegmentEntry): boolean;
13
+ export declare function isMatchingSegment(segment: SegmentAtom, entry: SegmentEntry): boolean;
14
+ export declare function maybeSetSelectionGroupContainerFormat(context: HlsTranslationPackageContext, selectionGroup: SelectionGroupAtom): void;
@@ -0,0 +1,6 @@
1
+ import type { ArrayAtom } from '../../../../core/state/ArrayStateAtom';
2
+ import type { SelectionGroupsAtom } from '../../../../stream-data-structure/stream/StreamAtom';
3
+ import type { TrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
4
+ import type { HlsTranslationPackageContext } from '../HlsTranslation.package';
5
+ export declare function tracksToSelectionGroups(context: HlsTranslationPackageContext, tracks: ArrayAtom<TrackAtom>): SelectionGroupsAtom;
6
+ export declare function addTrackToSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom, selectionGroups: SelectionGroupsAtom): void;
@@ -0,0 +1,4 @@
1
+ import type { UnknownTrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
2
+ import type { TypeDetection } from '../../../../stream-data-structure/track/TypeDetection';
3
+ import type { HlsPackageContext } from '../../root/Hls.package';
4
+ export declare function translateUnknownTrackToMediaTrack(context: HlsPackageContext, track: UnknownTrackAtom, detection: TypeDetection): import("../../../../stream-data-structure/track/TrackAtom").AudioTrackAtom | import("../../../../stream-data-structure/track/TrackAtom").VideoTrackAtom | undefined;
@@ -0,0 +1,18 @@
1
+ import type { ContextHaving } from '../../../framework-types/execution-context/Types';
2
+ import type { EmptyObject } from '../../Types';
3
+ import type { PrimitiveAtom } from '../core/state/PrimitiveAtom';
4
+ import { type CoreStateAtoms, CoreExportNames } from '../core/Types';
5
+ import type { ContextWithState } from '../Types';
6
+ export type MediaInfo = {
7
+ currentTime: PrimitiveAtom<number | undefined>;
8
+ duration: PrimitiveAtom<number | undefined>;
9
+ volume: PrimitiveAtom<number | undefined>;
10
+ muted: PrimitiveAtom<boolean | undefined>;
11
+ playbackRate: PrimitiveAtom<number | undefined>;
12
+ error: PrimitiveAtom<Error | undefined>;
13
+ };
14
+ type ContextT = ContextHaving<{
15
+ [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
16
+ }, EmptyObject, ContextWithState>;
17
+ export declare function createMediaInfo(context: ContextT): MediaInfo;
18
+ export {};
@@ -0,0 +1,10 @@
1
+ export declare enum MediaState {
2
+ Detached = "detached",
3
+ Play = "play",
4
+ Paused = "paused",
5
+ Playing = "playing",
6
+ Seeking = "seeking",
7
+ Stalled = "stalled",
8
+ Ended = "ended",
9
+ Error = "error"
10
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @packageDocumentation MediaState.package
3
+ *
4
+ * Owns the per-source media state slot. Tech-agnostic: a controller (e.g.
5
+ * `VideoElementController` for HTMLVideoElement)
6
+ * is responsible for translating its underlying medium into transitions on
7
+ * `mediaState` and updates on `mediaInfo`.
8
+ *
9
+ * Exposes:
10
+ * - `MediaState` — `StateMachineAtom<MediaState>` for qualitative playback state
11
+ * (`Detached | Playing | Paused | Seeking | Stalled | Ended | Error`).
12
+ * - `MediaInfo` — per-scalar atoms (`currentTime`, `duration`, `volume`,
13
+ * `muted`, `playbackRate`, `error`).
14
+ * - `SeekRestriction` — whether seeking is allowed; seeded from the source's
15
+ * `preventSeeking` playback config.
16
+ *
17
+ * ### `MediaState` Package Dependency Graph
18
+ * <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 227.640625 49" style="max-width: 227.641px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#ccc;}#my-svg .error-icon{fill:#a44141;}#my-svg .error-text{fill:#ddd;stroke:#ddd;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:lightgrey;stroke:lightgrey;}#my-svg .marker.cross{stroke:lightgrey;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#ccc;}#my-svg .cluster-label text{fill:#F9FFFE;}#my-svg .cluster-label span,#my-svg p{color:#F9FFFE;}#my-svg .label text,#my-svg span,#my-svg p{fill:#ccc;color:#ccc;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#1f2020;stroke:#81B1DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:lightgrey;}#my-svg .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:lightgrey;fill:none;}#my-svg .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#my-svg .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#my-svg .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#my-svg .cluster text{fill:#F9FFFE;}#my-svg .cluster span,#my-svg p{color:#F9FFFE;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-MediaState LE-Source" id="L-MediaState-Source-0" d="M95.938,16.5L100.104,16.5C104.271,16.5,112.604,16.5,120.054,16.5C127.504,16.5,134.071,16.5,137.354,16.5L140.638,16.5"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(47.96875, 16.5)" data-id="MediaState" data-node="true" id="flowchart-MediaState-0" class="node default default flowchart-label"><rect height="33" width="95.9375" y="-16.5" x="-47.96875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-40.46875, -9)" style="" class="label"><rect/><foreignObject height="18" width="80.9375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">MediaState</span></div></foreignObject></g></g><g transform="translate(178.7890625, 16.5)" data-id="Source" data-node="true" id="flowchart-Source-1" class="node default default flowchart-label"><rect height="33" width="65.703125" y="-16.5" x="-32.8515625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-25.3515625, -9)" style="" class="label"><rect/><foreignObject height="18" width="50.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Source</span></div></foreignObject></g></g></g></g></g></svg>
19
+ */
20
+ import type { MediaStatePackageDependencies, MediaStatePackageExports } from './Types';
21
+ export declare const MediaStatePackage: import("../../../framework-types/package-api/Package").Package<MediaStatePackageDependencies, MediaStatePackageExports, import("../../../framework-types/BaseTypes").EmptyObject>;
22
+ export default MediaStatePackage;
@@ -0,0 +1,16 @@
1
+ import type { ContextHaving } from '../../../framework-types/execution-context/Types';
2
+ import type { EmptyObject } from '../../Types';
3
+ import type { BaseStateMachineContext, StateMachineAtom } from '../core/state/StateMachineAtom';
4
+ import type { CoreStateAtoms } from '../core/Types';
5
+ import { CoreExportNames } from '../core/Types';
6
+ import type { CoreUtils } from '../core/utils/Types';
7
+ import type { ContextWithState } from '../Types';
8
+ import { MediaState } from './MediaState';
9
+ import type { MediaStateTransition } from './Types';
10
+ export type MediaStateAtom = StateMachineAtom<MediaState, BaseStateMachineContext, MediaStateTransition>;
11
+ type ContextT = ContextHaving<{
12
+ [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
13
+ [CoreExportNames.Utils]: CoreUtils;
14
+ }, EmptyObject, ContextWithState>;
15
+ export declare function createMediaStateMachineAtom(context: ContextT): MediaStateAtom;
16
+ export {};
@@ -0,0 +1,11 @@
1
+ export declare enum MediaStateTransitionType {
2
+ Detached = "detached",
3
+ Play = "play",
4
+ PlaybackPlaying = "playback-playing",
5
+ PlaybackPaused = "playback-paused",
6
+ SeekStarted = "seek-started",
7
+ SeekFinished = "seek-finished",
8
+ PlaybackStalled = "playback-stalled",
9
+ PlaybackEnded = "playback-ended",
10
+ ErrorOccurred = "error-occurred"
11
+ }
@@ -0,0 +1,2 @@
1
+ import type { PrimitiveAtom } from '../core/state/PrimitiveAtom';
2
+ export type SeekRestrictionAtom = PrimitiveAtom<boolean>;
@@ -0,0 +1,48 @@
1
+ import type { EmptyObject } from '../../../framework-types/BaseTypes';
2
+ import type { ContextHaving } from '../../../framework-types/execution-context/Types';
3
+ import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../core/Types';
4
+ import type { CoreUtils } from '../core/utils/Types';
5
+ import type { SourceStateAtom } from '../source/atoms/SourceStateAtom';
6
+ import type { SourceExportNames } from '../source/Types';
7
+ import type { ContextWithState } from '../Types';
8
+ import type { MediaInfo } from './MediaInfoAtoms';
9
+ import type { MediaState } from './MediaState';
10
+ import type { MediaStateAtom } from './MediaStateAtom';
11
+ import type { MediaStateTransitionType } from './MediaStateTransitionType';
12
+ import type { SeekRestrictionAtom } from './SeekRestrictionAtom';
13
+ export type { MediaState } from './MediaState';
14
+ export type { MediaStateTransitionType } from './MediaStateTransitionType';
15
+ export type MediaStateTransition = {
16
+ type: MediaStateTransitionType;
17
+ paused: boolean;
18
+ ended: boolean;
19
+ seeking: boolean;
20
+ errored: boolean;
21
+ currentTime: number;
22
+ duration: number | undefined;
23
+ };
24
+ export declare enum MediaStateExportNames {
25
+ MediaStateAtom = "media-state-atom",
26
+ MediaState = "media-state",
27
+ MediaInfo = "media-info",
28
+ MediaStateTransitionType = "media-state-transition-type",
29
+ SeekRestriction = "seek-restriction"
30
+ }
31
+ export type MediaStatePackageDependencies = {
32
+ [SourceExportNames.SourceState]: SourceStateAtom;
33
+ [CoreExportNames.CoreEffects]: CoreEffects;
34
+ [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
35
+ [CoreExportNames.Utils]: CoreUtils;
36
+ };
37
+ export type MediaStatePackageExports = {
38
+ [MediaStateExportNames.MediaStateAtom]: MediaStateAtom;
39
+ [MediaStateExportNames.MediaState]: typeof MediaState;
40
+ [MediaStateExportNames.MediaInfo]: MediaInfo;
41
+ [MediaStateExportNames.SeekRestriction]: SeekRestrictionAtom;
42
+ [MediaStateExportNames.MediaStateTransitionType]: typeof MediaStateTransitionType;
43
+ };
44
+ export type MediaStatePackageContext = ContextHaving<MediaStatePackageDependencies, MediaStatePackageExports, ContextWithState>;
45
+ export type MediaStatePackageApi = EmptyObject;
46
+ export type { MediaInfo } from './MediaInfoAtoms';
47
+ export type { MediaStateAtom } from './MediaStateAtom';
48
+ export type { SeekRestrictionAtom } from './SeekRestrictionAtom';
@@ -0,0 +1,32 @@
1
+ import type { EmptyObject } from '../../../../../framework-types/BaseTypes';
2
+ import type { ContextHaving } from '../../../../../framework-types/execution-context/Types';
3
+ import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../../core/Types';
4
+ import type { CoreUtils } from '../../../core/utils/Types';
5
+ import type { TargetPlaybackState, TargetPlaybackStateAtom } from '../../../playback/play-pause/TargetPlaybackStateAtom';
6
+ import type { PlayPauseExportNames } from '../../../playback/play-pause/Types';
7
+ import type { TargetVolumeStateAtom } from '../../../playback/volume/TargetVolumeStateAtom';
8
+ import type { TargetVolumeState } from '../../../playback/volume/Types';
9
+ import type { SourceStateAtom } from '../../../source/atoms/SourceStateAtom';
10
+ import type { SourceExportNames } from '../../../source/Types';
11
+ import type { ContextWithState } from '../../../Types';
12
+ import type { MediaInfo } from '../../MediaInfoAtoms';
13
+ import type { MediaStateAtom } from '../../MediaStateAtom';
14
+ import type { SeekRestrictionAtom } from '../../SeekRestrictionAtom';
15
+ import type { MediaState, MediaStateExportNames, MediaStateTransitionType } from '../../Types';
16
+ export type VideoElementControllerPackageDependencies = {
17
+ [SourceExportNames.SourceState]: SourceStateAtom;
18
+ [MediaStateExportNames.MediaStateAtom]: MediaStateAtom;
19
+ [MediaStateExportNames.MediaInfo]: MediaInfo;
20
+ [MediaStateExportNames.SeekRestriction]: SeekRestrictionAtom;
21
+ [MediaStateExportNames.MediaStateTransitionType]: typeof MediaStateTransitionType;
22
+ [MediaStateExportNames.MediaState]: typeof MediaState;
23
+ [PlayPauseExportNames.TargetPlaybackState]: typeof TargetPlaybackState;
24
+ [PlayPauseExportNames.TargetPlaybackStateAtom]: TargetPlaybackStateAtom;
25
+ [TargetVolumeState]: TargetVolumeStateAtom;
26
+ [CoreExportNames.CoreEffects]: CoreEffects;
27
+ [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
28
+ [CoreExportNames.Utils]: CoreUtils;
29
+ };
30
+ export type VideoElementControllerPackageExports = EmptyObject;
31
+ export type VideoElementControllerPackageApi = EmptyObject;
32
+ export type VideoElementControllerPackageContext = ContextHaving<VideoElementControllerPackageDependencies, VideoElementControllerPackageExports, ContextWithState>;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @packageDocumentation VideoElementController.package
3
+ *
4
+ * Per-source controller that bridges the HTMLVideoElement to the abstract
5
+ * `mediaState` / `mediaInfo` atoms (observation up) and to user-intent atoms —
6
+ * `targetPlaybackState`, `targetVolumeState`, `playback.playbackRate` — (action
7
+ * down). Reads the video element from `sourceState.video` and re-wires
8
+ * automatically on element swap / detach / re-attach.
9
+ *
10
+ * ### `VideoElementController` Package Dependency Graph
11
+ * <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -17.25 461.328125 84" style="max-width: 461.328px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#ccc;}#my-svg .error-icon{fill:#a44141;}#my-svg .error-text{fill:#ddd;stroke:#ddd;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:lightgrey;stroke:lightgrey;}#my-svg .marker.cross{stroke:lightgrey;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#ccc;}#my-svg .cluster-label text{fill:#F9FFFE;}#my-svg .cluster-label span,#my-svg p{color:#F9FFFE;}#my-svg .label text,#my-svg span,#my-svg p{fill:#ccc;color:#ccc;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#1f2020;stroke:#81B1DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:lightgrey;}#my-svg .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:lightgrey;fill:none;}#my-svg .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#my-svg .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#my-svg .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#my-svg .cluster text{fill:#F9FFFE;}#my-svg .cluster span,#my-svg p{color:#F9FFFE;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-VideoElementController LE-Source" id="L-VideoElementController-Source-0" d="M166.715,0L173.71,-1.542C180.706,-3.083,194.697,-6.167,213.853,-7.708C233.01,-9.25,257.333,-9.25,281.656,-9.25C305.979,-9.25,330.302,-9.25,345.823,-7.755C361.344,-6.259,368.064,-3.268,371.423,-1.773L374.783,-0.278"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-VideoElementController LE-MediaState" id="L-VideoElementController-MediaState-0" d="M166.715,33L173.71,34.542C180.706,36.083,194.697,39.167,204.975,40.708C215.254,42.25,221.821,42.25,225.104,42.25L228.388,42.25"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-MediaState LE-Source" id="L-MediaState-Source-0" d="M329.625,42.25L333.792,42.25C337.958,42.25,346.292,42.25,353.818,40.755C361.344,39.259,368.064,36.268,371.423,34.773L374.783,33.278"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(91.84375, 16.5)" data-id="VideoElementController" data-node="true" id="flowchart-VideoElementController-0" class="node default default flowchart-label"><rect height="33" width="183.6875" y="-16.5" x="-91.84375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-84.34375, -9)" style="" class="label"><rect/><foreignObject height="18" width="168.6875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">VideoElementController</span></div></foreignObject></g></g><g transform="translate(412.4765625, 16.5)" data-id="Source" data-node="true" id="flowchart-Source-1" class="node default default flowchart-label"><rect height="33" width="65.703125" y="-16.5" x="-32.8515625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-25.3515625, -9)" style="" class="label"><rect/><foreignObject height="18" width="50.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Source</span></div></foreignObject></g></g><g transform="translate(281.65625, 42.25)" data-id="MediaState" data-node="true" id="flowchart-MediaState-3" class="node default default flowchart-label"><rect height="33" width="95.9375" y="-16.5" x="-47.96875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-40.46875, -9)" style="" class="label"><rect/><foreignObject height="18" width="80.9375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">MediaState</span></div></foreignObject></g></g></g></g></g></svg>
12
+ */
13
+ import type { VideoElementControllerPackageDependencies } from './Types';
14
+ export declare const VideoElementControllerPackage: import("../../../../../framework-types/package-api/Package").Package<VideoElementControllerPackageDependencies, import("../../../../../framework-types/BaseTypes").EmptyObject, import("../../../../../framework-types/BaseTypes").EmptyObject>;
15
+ export default VideoElementControllerPackage;
@@ -0,0 +1,5 @@
1
+ export declare enum HttpRequestMethod {
2
+ GET = "GET",
3
+ POST = "POST",
4
+ HEAD = "HEAD"
5
+ }
@@ -0,0 +1,11 @@
1
+ export declare enum HttpRequestType {
2
+ MANIFEST_HLS_MULTIVARIANT = "manifest/hls/multivariant",
3
+ MANIFEST_HLS_VARIANT = "manifest/hls/variant",
4
+ MEDIA_AUDIO = "media/audio",
5
+ MEDIA_VIDEO = "media/video",
6
+ MEDIA_SUBTITLES = "media/subtitles",
7
+ MEDIA_THUMBNAILS = "media/thumbnails",
8
+ MEDIA_SEGMENTINDEX = "media/segmentindex",
9
+ KEY_HLS_AES = "key/hls/aes",
10
+ TIME_SYNC = "time/sync"
11
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum HttpResponseType {
2
+ ARRAYBUFFER = "arraybuffer",
3
+ BLOB = "blob",
4
+ DOCUMENT = "document",
5
+ JSON = "json",
6
+ TEXT = "text"
7
+ }
@@ -0,0 +1,15 @@
1
+ import type { DataPackageContext } from '../data/Types';
2
+ import type { NetworkMessage } from './NetworkMessageTypes';
3
+ export type NetworkState = {
4
+ lastMessage: NetworkMessage;
5
+ };
6
+ export type NetworkAtom = ReturnType<typeof createNetworkAtom>;
7
+ export declare function createNetworkAtom(context: DataPackageContext): import("../core/state/Types").StateAtom<{
8
+ lastMessage: NetworkMessage;
9
+ }, {
10
+ requestOpened: (state: NetworkState, openedTimestamp: number) => boolean;
11
+ headersReceived: (state: NetworkState, headersReceivedTimestamp: number, contentLength: number) => boolean;
12
+ progress: (state: NetworkState, progressTimestamp: number, chunk: Uint8Array, loadedBytes: number, elapsedTime: number) => boolean;
13
+ error: (state: NetworkState, error: Error) => boolean;
14
+ done: (state: NetworkState, doneTimestamp: number) => boolean;
15
+ }>;
@@ -1,11 +1,12 @@
1
- import type { NetworkAtom } from '../core/network/NetworkAtom';
2
- import type { BaseRequestConfig, HttpResponse, HttpResponseType, NetworkPackageContext } from './Types';
1
+ import type { HttpResponseType } from './HttpResponseType';
2
+ import type { NetworkAtom } from './NetworkAtom';
3
+ import type { BaseRequestConfig, HttpResponse, NetworkPackageContext } from './Types';
3
4
  export declare const NetworkTask: import("../../../framework-types/task/Types").NamedTask<(<T extends HttpResponseType>([baseConfig, networkAtom]: [BaseRequestConfig<T>, import("../core/state/Types").StateAtom<{
4
5
  lastMessage: import("./NetworkMessageTypes").NetworkMessage;
5
6
  }, {
6
- requestOpened: (state: import("../core/network/NetworkAtom").NetworkState, openedTimestamp: number) => boolean;
7
- headersReceived: (state: import("../core/network/NetworkAtom").NetworkState, headersReceivedTimestamp: number, contentLength: number) => boolean;
8
- progress: (state: import("../core/network/NetworkAtom").NetworkState, progressTimestamp: number, chunk: Uint8Array, loadedBytes: number, elapsedTime: number) => boolean;
9
- error: (state: import("../core/network/NetworkAtom").NetworkState, error: Error) => boolean;
10
- done: (state: import("../core/network/NetworkAtom").NetworkState, doneTimestamp: number) => boolean;
7
+ requestOpened: (state: import("./NetworkAtom").NetworkState, openedTimestamp: number) => boolean;
8
+ headersReceived: (state: import("./NetworkAtom").NetworkState, headersReceivedTimestamp: number, contentLength: number) => boolean;
9
+ progress: (state: import("./NetworkAtom").NetworkState, progressTimestamp: number, chunk: Uint8Array, loadedBytes: number, elapsedTime: number) => boolean;
10
+ error: (state: import("./NetworkAtom").NetworkState, error: Error) => boolean;
11
+ done: (state: import("./NetworkAtom").NetworkState, doneTimestamp: number) => boolean;
11
12
  }> | undefined], context: NetworkPackageContext) => Promise<HttpResponse<HttpResponseType>>)>;
@@ -3,33 +3,22 @@ import type { BaseContext } from '../../../framework-types/Types';
3
3
  import type { PartialRequired } from '../../Types';
4
4
  import type { AdaptationExportNames } from '../adaptation/Types';
5
5
  import type { MetricsAtom } from '../core/metrics/MetricsAtom';
6
- import type { createNetworkAtom, NetworkAtom } from '../core/network/NetworkAtom';
7
6
  import type { StateEffect } from '../core/state/state-effect/StateEffectFactory';
8
7
  import type { CoreEffects, CoreExportNames } from '../core/Types';
9
8
  import type { CoreUtils } from '../core/utils/Types';
10
9
  import type { FetchTask } from './FetchTask';
10
+ import type { HttpRequestMethod } from './HttpRequestMethod';
11
+ import type { HttpRequestType } from './HttpRequestType';
12
+ import type { HttpResponseType } from './HttpResponseType';
13
+ import type { createNetworkAtom, NetworkAtom } from './NetworkAtom';
14
+ import type { NetworkMessageType } from './NetworkMessageTypes';
11
15
  import type { NetworkTask } from './NetworkTask';
16
+ export type { HttpRequestMethod } from './HttpRequestMethod';
17
+ export type { HttpRequestType } from './HttpRequestType';
18
+ export type { HttpResponseType } from './HttpResponseType';
12
19
  export interface HttpHeaders {
13
20
  [fieldName: string]: string;
14
21
  }
15
- export declare enum HttpRequestType {
16
- MANIFEST_HLS_MULTIVARIANT = "manifest/hls/multivariant",
17
- MANIFEST_HLS_VARIANT = "manifest/hls/variant",
18
- MEDIA_AUDIO = "media/audio",
19
- MEDIA_VIDEO = "media/video",
20
- MEDIA_SUBTITLES = "media/subtitles",
21
- MEDIA_THUMBNAILS = "media/thumbnails",
22
- MEDIA_SEGMENTINDEX = "media/segmentindex",
23
- KEY_HLS_AES = "key/hls/aes",
24
- TIME_SYNC = "time/sync"
25
- }
26
- export declare enum HttpResponseType {
27
- ARRAYBUFFER = "arraybuffer",
28
- BLOB = "blob",
29
- DOCUMENT = "document",
30
- JSON = "json",
31
- TEXT = "text"
32
- }
33
22
  export type HttpRequestBody = ArrayBuffer | ArrayBufferView | Blob | FormData | string | Document | URLSearchParams;
34
23
  export interface HttpResponseBodyTypeMap {
35
24
  [HttpResponseType.ARRAYBUFFER]: ArrayBuffer;
@@ -38,11 +27,6 @@ export interface HttpResponseBodyTypeMap {
38
27
  [HttpResponseType.JSON]: Record<string, unknown>;
39
28
  [HttpResponseType.TEXT]: string;
40
29
  }
41
- export declare enum HttpRequestMethod {
42
- GET = "GET",
43
- POST = "POST",
44
- HEAD = "HEAD"
45
- }
46
30
  export interface HttpTimingInformation {
47
31
  sendTimestamp: number;
48
32
  openedTimestamp: number;
@@ -85,13 +69,20 @@ export type NetworkDependencies = {
85
69
  export declare enum NetworkExportNames {
86
70
  NetworkAtom = "network-atom",
87
71
  NetworkTask = "network-task",
88
- FetchTask = "fetch-task"
72
+ FetchTask = "fetch-task",
73
+ HttpRequestType = "http-request-type",
74
+ HttpResponseType = "http-response-type",
75
+ HttpRequestMethod = "http-request-method",
76
+ NetworkMessageType = "network-message-type"
89
77
  }
90
78
  export type NetworkExports = {
91
79
  [NetworkExportNames.NetworkAtom]: typeof createNetworkAtom;
92
80
  [NetworkExportNames.NetworkTask]: typeof NetworkTask;
93
81
  [NetworkExportNames.FetchTask]: typeof FetchTask;
82
+ [NetworkExportNames.HttpRequestType]: typeof HttpRequestType;
83
+ [NetworkExportNames.HttpResponseType]: typeof HttpResponseType;
84
+ [NetworkExportNames.HttpRequestMethod]: typeof HttpRequestMethod;
85
+ [NetworkExportNames.NetworkMessageType]: typeof NetworkMessageType;
94
86
  };
95
87
  type BaseExecutionContext = ContextHaving<NetworkDependencies, NetworkExports, BaseContext>;
96
88
  export type NetworkPackageContext = ContextUsing<[StateEffect], BaseExecutionContext>;
97
- export {};