@phenixrts/sdk 2025.2.4-beta.656 → 2025.2.4-beta.658

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 (50) hide show
  1. package/channels/debug/channels.js +1217 -1141
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug.private/channels.js +1134 -1058
  4. package/channels/debug.private/package.json +1 -1
  5. package/channels/debug.provideGlobalScope/channels.js +1189 -1113
  6. package/channels/debug.provideGlobalScope/package.json +1 -1
  7. package/channels/es5.debug.private/channels.js +143 -70
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/channels.js +1 -1
  10. package/channels/min/channels.js.map +1 -1
  11. package/channels/min/package.json +1 -1
  12. package/channels/min.private/channels.js +1 -1
  13. package/channels/min.private/channels.js.map +1 -1
  14. package/channels/min.private/package.json +1 -1
  15. package/channels/min.provideGlobalScope/channels.js +1 -1
  16. package/channels/min.provideGlobalScope/channels.js.map +1 -1
  17. package/channels/min.provideGlobalScope/package.json +1 -1
  18. package/channels/package.json +1 -1
  19. package/full/debug/full.js +1328 -1252
  20. package/full/debug/package.json +1 -1
  21. package/full/debug.private/full.js +1245 -1169
  22. package/full/debug.private/package.json +1 -1
  23. package/full/min/full.js +1 -1
  24. package/full/min/full.js.map +1 -1
  25. package/full/min/package.json +1 -1
  26. package/full/min.private/full.js +1 -1
  27. package/full/min.private/full.js.map +1 -1
  28. package/full/min.private/package.json +1 -1
  29. package/full/package.json +1 -1
  30. package/package.json +1 -1
  31. package/publish/debug/package.json +1 -1
  32. package/publish/debug/publish.js +895 -819
  33. package/publish/debug.private/package.json +1 -1
  34. package/publish/debug.private/publish.js +895 -819
  35. package/publish/min/package.json +1 -1
  36. package/publish/min/publish.js +1 -1
  37. package/publish/min/publish.js.map +1 -1
  38. package/publish/min.private/package.json +1 -1
  39. package/publish/min.private/publish.js +1 -1
  40. package/publish/min.private/publish.js.map +1 -1
  41. package/publish/package.json +1 -1
  42. package/types/sdk/discovery/PcastUri.d.ts +6 -0
  43. package/types/sdk/replay/ReplayApi.d.ts +16 -0
  44. package/types/sdk/replay/player/IReplayMediaSource.d.ts +6 -0
  45. package/types/sdk/replay/player/IReplayPlayer.d.ts +10 -0
  46. package/types/sdk/replay/player/ReplayHlsJsPlayer.d.ts +34 -0
  47. package/types/sdk/replay/player/ReplayNativeHlsPlayer.d.ts +20 -0
  48. package/types/sdk/replay/player/ReplayPlaybackLifecycle.d.ts +22 -0
  49. package/types/sdk/replay/player/ReplayPlayerFactory.d.ts +8 -0
  50. package/types/sdk/streaming/IHlsPlayer.d.ts +81 -5
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phenixrts/sdk/publish",
3
- "version": "2025.2.4-beta.656",
3
+ "version": "2025.2.4-beta.658",
4
4
  "files": [
5
5
  "min/"
6
6
  ],
@@ -0,0 +1,6 @@
1
+ export default class PcastUri {
2
+ static get discoveryPath(): string;
3
+ static normalizeDiscoveryUri(uri: string | URL): URL;
4
+ static buildRouteUrl(baseUri: string | URL, path: string[]): URL;
5
+ private constructor();
6
+ }
@@ -0,0 +1,16 @@
1
+ import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken';
2
+ import { Millisecond } from '../../units/Units';
3
+ import { IGetReplayManifestResponse } from '../api/Replay';
4
+ export default class ReplayApi {
5
+ private readonly _logger;
6
+ private readonly _baseUri;
7
+ private readonly _timeoutMs;
8
+ constructor(baseUri: string, timeoutMs?: Millisecond);
9
+ buildReplayManifestUrl(token: EncodedEdgeToken, startTime: number, endTime: number): URL;
10
+ getReplayManifest(token: EncodedEdgeToken, startTime: number, endTime: number): Promise<IGetReplayManifestResponse>;
11
+ private buildManifestUrl;
12
+ private static mapHttpStatusToReplayStatus;
13
+ private static statusFromBody;
14
+ private logNonManifestBody;
15
+ private static redactCredentials;
16
+ }
@@ -0,0 +1,6 @@
1
+ import DisposableList from '../../../lang/DisposableList';
2
+ interface IReplayMediaSource {
3
+ load(manifestUrl: string, session: DisposableList): Promise<void>;
4
+ release(): void;
5
+ }
6
+ export default IReplayMediaSource;
@@ -0,0 +1,10 @@
1
+ import IDisposable from '../../../lang/IDisposable';
2
+ import ReadOnlySubject from '../../../rx/ReadOnlySubject';
3
+ import { ReplayPlaybackError } from '../ReplaySessionError';
4
+ interface IReplayPlayer extends IDisposable {
5
+ readonly ended: ReadOnlySubject<boolean>;
6
+ readonly fatalError: ReadOnlySubject<ReplayPlaybackError | null>;
7
+ play(manifestUrl: string): Promise<void>;
8
+ stop(): void;
9
+ }
10
+ export default IReplayPlayer;
@@ -0,0 +1,34 @@
1
+ import DisposableList from '../../../lang/DisposableList';
2
+ import ReadOnlySubject from '../../../rx/ReadOnlySubject';
3
+ import { HlsErrorTypes, HlsPlayerType, IHlsEventData, IHlsLevel, ReplayHlsPlayerConfig } from '../../streaming/IHlsPlayer';
4
+ import { ReplayFailureStatus } from '../ReplayStatus';
5
+ import { ReplayPlaybackError } from '../ReplaySessionError';
6
+ import IReplayPlayer from './IReplayPlayer';
7
+ import IReplayMediaSource from './IReplayMediaSource';
8
+ export declare const replayHlsConfig: ReplayHlsPlayerConfig;
9
+ export default class ReplayHlsJsPlayer implements IReplayPlayer, IReplayMediaSource {
10
+ private readonly _logger;
11
+ private readonly _videoElement;
12
+ private readonly _Hls;
13
+ private readonly _lifecycle;
14
+ private _hls;
15
+ private _lastSegmentNumber;
16
+ private _isTailMissing;
17
+ constructor(videoElement: HTMLVideoElement, Hls: HlsPlayerType);
18
+ static findHighestLevel(levels: IHlsLevel[]): number;
19
+ static isMediaRequest(details?: string): boolean;
20
+ static errorDetails(data: IHlsEventData): string | undefined;
21
+ static httpStatusOf(data: IHlsEventData): number | undefined;
22
+ static mapHlsErrorToStatus(data: IHlsEventData, errorTypes?: Pick<HlsErrorTypes, 'KEY_SYSTEM_ERROR'>): ReplayFailureStatus;
23
+ get ended(): ReadOnlySubject<boolean>;
24
+ get fatalError(): ReadOnlySubject<ReplayPlaybackError | null>;
25
+ load(manifestUrl: string, session: DisposableList): Promise<void>;
26
+ play(manifestUrl: string): Promise<void>;
27
+ release(): void;
28
+ stop(): void;
29
+ dispose(): void;
30
+ private selectStartLevel;
31
+ private isMissingTailSegment;
32
+ private endIfPlayedOut;
33
+ private reachableBufferedEnd;
34
+ }
@@ -0,0 +1,20 @@
1
+ import DisposableList from '../../../lang/DisposableList';
2
+ import ReadOnlySubject from '../../../rx/ReadOnlySubject';
3
+ import { ReplayPlaybackError } from '../ReplaySessionError';
4
+ import IReplayPlayer from './IReplayPlayer';
5
+ import IReplayMediaSource from './IReplayMediaSource';
6
+ export declare const nativeHlsMimeType = "application/vnd.apple.mpegurl";
7
+ export default class ReplayNativeHlsPlayer implements IReplayPlayer, IReplayMediaSource {
8
+ private readonly _logger;
9
+ private readonly _videoElement;
10
+ private readonly _lifecycle;
11
+ constructor(videoElement: HTMLVideoElement);
12
+ static isSupportedBy(videoElement: HTMLVideoElement): boolean;
13
+ get ended(): ReadOnlySubject<boolean>;
14
+ get fatalError(): ReadOnlySubject<ReplayPlaybackError | null>;
15
+ play(manifestUrl: string): Promise<void>;
16
+ load(manifestUrl: string, session: DisposableList): Promise<void>;
17
+ release(): void;
18
+ stop(): void;
19
+ dispose(): void;
20
+ }
@@ -0,0 +1,22 @@
1
+ import ReadOnlySubject from '../../../rx/ReadOnlySubject';
2
+ import { ReplayPlaybackError } from '../ReplaySessionError';
3
+ import IReplayPlayer from './IReplayPlayer';
4
+ import IReplayMediaSource from './IReplayMediaSource';
5
+ export default class ReplayPlaybackLifecycle implements IReplayPlayer {
6
+ private readonly _source;
7
+ private readonly _lifetime;
8
+ private readonly _ended;
9
+ private readonly _readOnlyEnded;
10
+ private readonly _fatalError;
11
+ private readonly _readOnlyFatalError;
12
+ private _session;
13
+ private _isDisposed;
14
+ constructor(videoElement: HTMLVideoElement, source: IReplayMediaSource);
15
+ get ended(): ReadOnlySubject<boolean>;
16
+ get fatalError(): ReadOnlySubject<ReplayPlaybackError | null>;
17
+ play(manifestUrl: string): Promise<void>;
18
+ stop(): void;
19
+ markEnded(): void;
20
+ reportFatalError(error: ReplayPlaybackError): void;
21
+ dispose(): void;
22
+ }
@@ -0,0 +1,8 @@
1
+ import IReplayPlayer from './IReplayPlayer';
2
+ export default class ReplayPlayerFactory {
3
+ private static readonly _logger;
4
+ static isSupported(): boolean;
5
+ static playsNatively(): boolean;
6
+ static create(videoElement: HTMLVideoElement): Promise<IReplayPlayer>;
7
+ private constructor();
8
+ }
@@ -1,4 +1,13 @@
1
1
  import { ChunkedStreamingStatistics } from './StreamTypes';
2
+ export type HlsEvents = {
3
+ MANIFEST_PARSED: string;
4
+ FRAG_BUFFERED: string;
5
+ FRAG_LOADED: string;
6
+ LEVEL_LOADED: string;
7
+ VIDEO_TRACK_LOADED: string;
8
+ MEDIA_ENDED: string;
9
+ ERROR: string;
10
+ };
2
11
  export interface IHlsPlayerType {
3
12
  media: HTMLVideoElement;
4
13
  streamController: {
@@ -9,12 +18,52 @@ export interface IHlsPlayerType {
9
18
  destroy(): void;
10
19
  loadSource: (url: string) => void;
11
20
  attachMedia: (videoElement: HTMLVideoElement) => void;
12
- Events: {
13
- FRAG_BUFFERED: string;
14
- VIDEO_TRACK_LOADED: string;
15
- FRAG_LOADED: string;
21
+ detachMedia: () => void;
22
+ stopLoad: () => void;
23
+ readonly levels: IHlsLevel[];
24
+ startLevel: number;
25
+ nextAutoLevel: number;
26
+ on: (event: string, handler: (event: string, data: IHlsEventData) => void) => void;
27
+ off: (event: string, handler?: (event: string, data: IHlsEventData) => void) => void;
28
+ Events: HlsEvents;
29
+ }
30
+ export interface IHlsLevelDetails {
31
+ startSN?: number;
32
+ endSN?: number;
33
+ totalduration?: number;
34
+ }
35
+ export interface IHlsEventData {
36
+ type?: string;
37
+ details?: string | IHlsLevelDetails;
38
+ fatal?: boolean;
39
+ reason?: string;
40
+ error?: Error;
41
+ networkDetails?: {
42
+ status?: number;
43
+ };
44
+ response?: {
45
+ code?: number;
46
+ text?: string;
16
47
  };
48
+ levels?: IHlsLevel[];
49
+ frag?: {
50
+ level?: number;
51
+ sn?: number | string;
52
+ };
53
+ }
54
+ export interface IHlsLevel {
55
+ height?: number;
56
+ width?: number;
57
+ bitrate?: number;
58
+ name?: string;
17
59
  }
60
+ export type HlsErrorTypes = {
61
+ NETWORK_ERROR: string;
62
+ MEDIA_ERROR: string;
63
+ KEY_SYSTEM_ERROR: string;
64
+ MUX_ERROR: string;
65
+ OTHER_ERROR: string;
66
+ };
18
67
  export type HlsPlayerConfig = {
19
68
  enableWorker: boolean;
20
69
  maxBufferLength: number;
@@ -24,12 +73,39 @@ export type HlsPlayerConfig = {
24
73
  liveDurationInfinity: boolean;
25
74
  highBufferWatchdogPeriod: number;
26
75
  };
76
+ export type HlsRetryConfig = {
77
+ maxNumRetry: number;
78
+ retryDelayMs: number;
79
+ maxRetryDelayMs: number;
80
+ };
81
+ export type HlsLoadPolicy = {
82
+ default: {
83
+ maxTimeToFirstByteMs: number;
84
+ maxLoadTimeMs: number;
85
+ timeoutRetry: HlsRetryConfig;
86
+ errorRetry: HlsRetryConfig;
87
+ };
88
+ };
89
+ export type ReplayHlsPlayerConfig = {
90
+ enableWorker: boolean;
91
+ lowLatencyMode: boolean;
92
+ backBufferLength: number;
93
+ maxBufferLength: number;
94
+ maxMaxBufferLength: number;
95
+ startPosition: number;
96
+ testBandwidth: boolean;
97
+ manifestLoadPolicy: HlsLoadPolicy;
98
+ playlistLoadPolicy: HlsLoadPolicy;
99
+ fragLoadPolicy: HlsLoadPolicy;
100
+ };
27
101
  export type HlsPlayerType = {
28
- new (config: HlsPlayerConfig): IHlsPlayerType;
102
+ new (config: HlsPlayerConfig | ReplayHlsPlayerConfig): IHlsPlayerType;
29
103
  isSupported(): boolean;
30
104
  loadSource: (url: string) => void;
31
105
  attachMedia: (videoElement: HTMLVideoElement) => void;
32
106
  dispose(): void;
33
107
  destroy(): void;
108
+ readonly Events: HlsEvents;
109
+ readonly ErrorTypes: HlsErrorTypes;
34
110
  getStats(): ChunkedStreamingStatistics;
35
111
  };