@3dsource/angular-unreal-module 0.0.44 → 0.0.49

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.
package/index.d.ts CHANGED
@@ -44,7 +44,7 @@ declare class SubService {
44
44
 
45
45
  declare class AFKService extends SubService {
46
46
  private enabled;
47
- private closeTimeout;
47
+ private readonly closeTimeout;
48
48
  private active;
49
49
  private warnTimer;
50
50
  private countdown;
@@ -295,30 +295,35 @@ interface PingResult {
295
295
  declare const WSCloseCode_NORMAL_CLOSURE = 3000;
296
296
  declare const WSCloseCode_NORMAL_AFK_TIMEOUT = 3001;
297
297
  declare const WSCloseCode_NORMAL_MANUAL_DISCONNECT = 3002;
298
- declare const WSCloseCode_NORMAL_CIRRUS_CLOSED = 3003;
299
- declare const WSCloseCodes: readonly [3000, 3001, 3002, 3003];
298
+ declare const WSCloseCode_FORCE_CIRRUS_CLOSE = 3003;
299
+ declare const WSCloseCode_CIRRUS_PLAYER_DISCONNECTED = 1001;
300
+ declare const WSCloseCode_CIRRUS_ABNORMAL_CLOSURE = 1006;
301
+ declare const WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR = 1013;
302
+ declare const WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER = 1011;
303
+ declare const WSCloseCodes: readonly [3000, 3001, 3002, 3003, 1013, 1006];
300
304
  type WSCloseCodesValues = (typeof WSCloseCodes)[number];
301
305
 
302
- interface CloseReason {
303
- code: WSCloseCodesValues;
304
- reason: string;
305
- }
306
-
307
306
  declare const DisconnectReason: {
308
- readonly afk: "afk";
309
- readonly none: "none";
310
- readonly reset: "reset";
311
- readonly wsOnError: "wsOnError";
312
- readonly dataChannelClosed: "dataChannelClosed";
313
- readonly dataChannelTimeout: "dataChannelTimeout";
307
+ readonly Afk: "Afk";
308
+ readonly None: "None";
309
+ readonly Destroy: "Destroy";
310
+ readonly DataChannelClosed: "DataChannelClosed";
311
+ readonly DataChannelTimeout: "DataChannelTimeout";
312
+ readonly WebRTCError: "WebRTCError";
313
+ readonly WebSocketError: "WebSocketError";
314
+ readonly WebSocketClose: "WebSocketClose";
315
+ readonly DropConnection: "DropConnection";
314
316
  };
315
- type DisconnectType = (typeof DisconnectReason)[keyof typeof DisconnectReason];
316
-
317
- interface UnrealError {
318
- errorType: UnrealErrorType;
317
+ type DisconnectReasonType = (typeof DisconnectReason)[keyof typeof DisconnectReason];
318
+ interface ConnectionError {
319
+ reason: DisconnectReasonType;
319
320
  message: string;
320
321
  }
321
- type UnrealErrorType = 'WebRTCError' | 'WebSocketError';
322
+
323
+ interface CloseReason {
324
+ code: WSCloseCodesValues;
325
+ reason: DisconnectReasonType;
326
+ }
322
327
 
323
328
  interface FreezeFrameMessage {
324
329
  dataUrl: string | null;
@@ -422,6 +427,7 @@ declare const CONSOLE_COMMAND_PIXEL_QUALITY = "PixelStreaming.FreezeFrameQuality
422
427
  declare const FULL_HD_WIDTH = 1920;
423
428
  declare const FULL_HD_HEIGHT = 1080;
424
429
  declare const WS_TIMEOUT = 2000;
430
+ declare const POLLING_TIME = 4000;
425
431
  declare const WS_OPEN_STATE = 1;
426
432
  declare const DEFAULT_AFK_TIMEOUT_PERIOD = 15;
427
433
  declare const DEFAULT_AFK_TIMEOUT = 120;
@@ -476,7 +482,11 @@ declare function OnMessageHandler(this: SignallingService, e: MessageEvent<strin
476
482
 
477
483
  declare function OnOpenHandler(this: SignallingService): void;
478
484
 
479
- declare const clampAndKeepMaxPercents: () => ((source: Observable<number>) => Observable<number>);
485
+ /**
486
+ * Keeps the max of numbers seen so far; resets to 0 whenever `reset$` emits.
487
+ * Emits `0` immediately on reset.
488
+ */
489
+ declare const clampAndKeepMaxPercents: (reset$: Observable<unknown>) => ((source: Observable<number>) => Observable<number>);
480
490
 
481
491
  declare function observeCommandResponse<K extends keyof MetaBoxCommandList, T extends MetaBoxCommandList[K] = MetaBoxCommandList[K]>(data: T, sender: (data: T) => void, timeOut?: number, dispatchOnTimeout?: boolean): Observable<ObservedCallbackResponse<T> | never>;
482
492
  interface ObservedCallbackResponse<T extends MetaBoxCommandPacket> {
@@ -704,11 +714,11 @@ declare const setMaxFps: _ngrx_store.ActionCreator<string, (props: {
704
714
  maxFps: number;
705
715
  } & _ngrx_store.Action<string>>;
706
716
  declare const destroyRemoteConnections: _ngrx_store.ActionCreator<string, (props: {
707
- disconnectReason: DisconnectType;
717
+ reason: DisconnectReasonType;
708
718
  }) => {
709
- disconnectReason: DisconnectType;
719
+ reason: DisconnectReasonType;
710
720
  } & _ngrx_store.Action<string>>;
711
- declare const destroyConnectionsAndResetState: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
721
+ declare const destroyUnrealScene: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
712
722
  declare const setCirrusConnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
713
723
  declare const setCirrusDisconnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
714
724
  declare const changeStatusMainVideoOnScene: _ngrx_store.ActionCreator<string, (props: {
@@ -786,32 +796,25 @@ declare const setEstablishingConnection: _ngrx_store.ActionCreator<string, (prop
786
796
  value: boolean;
787
797
  } & _ngrx_store.Action<string>>;
788
798
  declare const setDataChannelConnected: _ngrx_store.ActionCreator<string, (props: {
789
- value: boolean;
799
+ message: string;
790
800
  }) => {
791
- value: boolean;
801
+ message: string;
792
802
  } & _ngrx_store.Action<string>>;
793
803
  declare const setConfig: _ngrx_store.ActionCreator<string, (props: {
794
804
  config: Partial<StreamConfig>;
795
805
  }) => {
796
806
  config: Partial<StreamConfig>;
797
807
  } & _ngrx_store.Action<string>>;
798
- declare const setMatchMakerUrls: _ngrx_store.ActionCreator<string, (props: {
799
- matchMakerUrls: string[];
800
- }) => {
801
- matchMakerUrls: string[];
802
- } & _ngrx_store.Action<string>>;
803
- declare const setErrorMessage: _ngrx_store.ActionCreator<string, (props: {
804
- errorType: UnrealErrorType;
808
+ declare const disconnectStream: _ngrx_store.ActionCreator<string, (props: {
809
+ reason: DisconnectReasonType;
805
810
  message: string;
806
811
  }) => {
807
- errorType: UnrealErrorType;
812
+ reason: DisconnectReasonType;
808
813
  message: string;
809
814
  } & _ngrx_store.Action<string>>;
810
- declare const setViewportReady: _ngrx_store.ActionCreator<string, (props: {
811
- value: boolean;
812
- }) => {
813
- value: boolean;
814
- } & _ngrx_store.Action<string>>;
815
+ declare const dropConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
816
+ declare const setViewportReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
817
+ declare const setViewportNotReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
815
818
  declare const changeStreamResolutionAction: _ngrx_store.ActionCreator<string, (props: {
816
819
  width: number | null;
817
820
  height: number | null;
@@ -858,13 +861,20 @@ declare const showUnrealErrorMessage: _ngrx_store.ActionCreator<string, (props:
858
861
  code: number | null;
859
862
  error?: string;
860
863
  } & _ngrx_store.Action<string>>;
861
- declare const initSignalling: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
862
- declare const setIsFreezeLoaderPercents: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
864
+ declare const initSignalling: _ngrx_store.FunctionWithParametersType<[data?: {
865
+ resetDisconnectionReason: boolean;
866
+ } | undefined], {
867
+ resetDisconnectionReason: boolean;
868
+ } & _ngrx_store.Action<string>> & _ngrx_store.Action<string>;
869
+ declare const startStream: _ngrx_store.ActionCreator<string, (props: {
870
+ config: Partial<StreamConfig>;
871
+ }) => {
872
+ config: Partial<StreamConfig>;
873
+ } & _ngrx_store.Action<string>>;
863
874
  declare const resetConfig: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
864
875
  declare const resetAfkAction: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
865
876
  declare const resetWarnTimeout: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
866
- declare const resetUnrealStateAction: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
867
- declare const resetUnrealState: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
877
+ declare const abortEstablishingConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
868
878
 
869
879
  declare class UnrealEffects {
870
880
  private dialog;
@@ -879,14 +889,14 @@ declare class UnrealEffects {
879
889
  private commandsSender;
880
890
  private videoService;
881
891
  private dataChannelConnectionTimeout;
882
- cirrusDisconnectEffect$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
883
- destroyConnections$: rxjs.Observable<{
884
- disconnectReason: _3dsource_angular_unreal_module.DisconnectType;
892
+ disconnectReasonHandling$: rxjs.Observable<{
893
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
885
894
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
886
- resetState$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
887
- destroyRemoteConnections$: rxjs.Observable<{
888
- disconnectReason: _3dsource_angular_unreal_module.DisconnectType;
895
+ destroyConnections$: rxjs.Observable<{
896
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
889
897
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
898
+ destroyRemoteConnections$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
899
+ webrtcErrorModalComponent$: rxjs.Observable<false> & _ngrx_effects.CreateEffectMetadata;
890
900
  changeStreamResolution$: rxjs.Observable<{
891
901
  width: number | null;
892
902
  height: number | null;
@@ -901,37 +911,51 @@ declare class UnrealEffects {
901
911
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
902
912
  sendLbmStat$: rxjs.Subscription;
903
913
  resetAfk$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
904
- resetFreezeFrameOnViewportDestroy$: rxjs.Observable<{
905
- dataUrl: string | null;
906
- progress: number | null;
907
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
914
+ abortEstablishingConnection$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
908
915
  setMaxFps$: rxjs.Observable<{
909
916
  maxFps: number;
910
917
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
911
- webrtcErrorModalComponent$: rxjs.Observable<[arg: {
912
- errorType: _3dsource_angular_unreal_module.UnrealErrorType;
913
- message: string;
914
- } & _ngrx_store.Action<string>, boolean]> & _ngrx_effects.CreateEffectMetadata;
915
918
  resetAfkAction$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
919
+ setSignalingTo100$: rxjs.Observable<{
920
+ percent: number | null;
921
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
916
922
  setDataChannelTimeoutCheck$: rxjs.Observable<{
917
- disconnectReason: _3dsource_angular_unreal_module.DisconnectType;
923
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
924
+ message: string;
925
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
926
+ destroyConnectionAndRestart$: rxjs.Observable<{
927
+ resetDisconnectionReason: boolean;
918
928
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
919
- destroyConnectionAndRestart$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
920
929
  showUnrealError$: rxjs.Observable<{
921
930
  code: number | null;
922
931
  error?: string;
923
932
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
924
933
  sendStatisticsToUnreal$: rxjs.Observable<Object> & _ngrx_effects.CreateEffectMetadata;
925
934
  initAppBySetDataChannelConnected$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
926
- setViewportReadyBySetLoopBackCommandIsCompleted$: rxjs.Observable<{
927
- value: boolean;
935
+ setViewportReadyBySetLoopBackCommandIsCompleted$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
936
+ startStream$: rxjs.Observable<{
937
+ resetDisconnectionReason: boolean;
928
938
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
929
939
  listenUnrealCallbackByInitSignalling$: rxjs.Observable<{
930
940
  id: string;
931
941
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
932
- setConfigByInitSignalling$: rxjs.Observable<{
933
- matchMakerUrls: string[];
934
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
942
+ connectToSignaling$: rxjs.Observable<WebSocket> & _ngrx_effects.CreateEffectMetadata;
943
+ /**
944
+ * Effect: `forceViewportNotReady$`
945
+ *
946
+ * Ensures the viewport is explicitly marked as *not ready* to prevent
947
+ * a temporary black screen flash when disconnecting.
948
+ *
949
+ * ### Why
950
+ * - The video stream is disconnected immediately.
951
+ * - The DataChannel closes slightly later.
952
+ * - Closing the DataChannel resets the Unreal scene,
953
+ * which also sets `viewPortReady` to `false`.
954
+ *
955
+ * Without this effect, the order of these events may cause
956
+ * a visible flicker (video flashing to black).
957
+ */
958
+ forceViewportNotReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
935
959
  static ɵfac: i0.ɵɵFactoryDeclaration<UnrealEffects, never>;
936
960
  static ɵprov: i0.ɵɵInjectableDeclaration<UnrealEffects>;
937
961
  }
@@ -941,9 +965,7 @@ declare const unrealFeature: {
941
965
  reducer: _ngrx_store.ActionReducer<_3dsource_angular_unreal_module.UnrealState, _ngrx_store.Action<string>>;
942
966
  selectUnrealFeatureState: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.UnrealState>;
943
967
  selectLowBandwidth: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
944
- selectDisconnectReason: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.DisconnectType, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.DisconnectType>;
945
968
  selectIsVideoPlaying: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
946
- selectMatchMakerUrls: _ngrx_store.MemoizedSelector<Record<string, any>, string[], (featureState: _3dsource_angular_unreal_module.UnrealState) => string[]>;
947
969
  selectSsInfo: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
948
970
  selectSsData: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.SignalingData | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.SignalingData | null>;
949
971
  selectLowBandwidthStats: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.LBMStats | undefined, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.LBMStats | undefined>;
@@ -951,17 +973,17 @@ declare const unrealFeature: {
951
973
  selectAwsInstance: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.AwsInstance, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.AwsInstance>;
952
974
  selectWasInitialized: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
953
975
  selectIsFirstSuccessLoad: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
954
- selectIsFreezeLoaderPercents: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
955
976
  selectCirrusConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
956
977
  selectViewportReady: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
957
978
  selectFreezeFrameFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
958
979
  selectFreezeFrame: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
959
980
  selectStatusMessage: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
960
981
  selectStatusPercentSignallingServer: _ngrx_store.MemoizedSelector<Record<string, any>, number | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => number | null>;
961
- selectErrorMessage: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealError | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.UnrealError | null>;
982
+ selectErrorMessage: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.ConnectionError | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.ConnectionError | null>;
962
983
  selectDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
963
984
  selectStreamResolution: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamResolutionProps, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamResolutionProps>;
964
985
  selectEstablishingConnection: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
986
+ selectDisconnectReason: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.DisconnectReasonType, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.DisconnectReasonType>;
965
987
  selectLoaderCommands: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.CommandsLoaderState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.CommandsLoaderState>;
966
988
  selectMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, string[], (featureState: _3dsource_angular_unreal_module.UnrealState) => string[]>;
967
989
  selectStreamClientCompanyId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
@@ -983,12 +1005,10 @@ interface CommandsLoaderState {
983
1005
  interface UnrealState {
984
1006
  lowBandwidthStats: LBMStats | undefined;
985
1007
  streamConfig: StreamConfig;
986
- matchMakerUrls: string[];
987
1008
  awsInstance: AwsInstance;
988
1009
  lowBandwidth: boolean;
989
1010
  wasInitialized: boolean;
990
1011
  isFirstSuccessLoad: boolean;
991
- isFreezeLoaderPercents: boolean;
992
1012
  cirrusConnected: boolean;
993
1013
  viewportReady: boolean;
994
1014
  freezeFrameFromVideo: FreezeFrameMessage;
@@ -1000,12 +1020,12 @@ interface UnrealState {
1000
1020
  ssInfo: string | null;
1001
1021
  ssData: SignalingData | null;
1002
1022
  statusPercentSignallingServer: number | null;
1003
- errorMessage: UnrealError | null;
1023
+ errorMessage: ConnectionError | null;
1004
1024
  dataChannelConnected: boolean;
1005
1025
  streamResolution: StreamResolutionProps;
1006
1026
  isVideoPlaying: boolean;
1007
1027
  establishingConnection: boolean;
1008
- disconnectReason: DisconnectType;
1028
+ disconnectReason: DisconnectReasonType;
1009
1029
  loaderCommands: CommandsLoaderState;
1010
1030
  matchUrls: string[];
1011
1031
  streamClientCompanyId: string | null;
@@ -1024,11 +1044,10 @@ declare const selectIsFreezeFrameLoading: _ngrx_store.MemoizedSelector<Record<st
1024
1044
  declare const selectFreezeFrameCombinedDataUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: string | null, s2: string | null) => string | null>;
1025
1045
  declare const selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (s1: _3dsource_angular_unreal_module.StreamConfig) => _3dsource_angular_unreal_module.StreamConfig>;
1026
1046
  declare const selectWarnTimeout: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: _3dsource_angular_unreal_module.StreamConfig) => number>;
1027
- declare const selectMatchMakerUrls: _ngrx_store.MemoizedSelector<Record<string, any>, string[], (s1: string[]) => string[]>;
1028
1047
  declare const selectIsAutostart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig) => boolean>;
1029
- declare const selectWsUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: _3dsource_angular_unreal_module.AwsInstance) => string | null>;
1030
- declare const selectShowReconnectPopup: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean, s4: string | null, s5: string | null) => boolean>;
1031
- declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: _3dsource_angular_unreal_module.StreamConfig, s4: boolean) => boolean>;
1048
+ declare const showPopupWithoutAutoStart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig, s2: boolean) => boolean>;
1049
+ declare const selectShowReconnectPopup: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1050
+ declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1032
1051
  declare const selectIsVideoPlayingAndDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1033
1052
  declare const selectSignalingParameters: _ngrx_store.MemoizedSelector<Record<string, any>, string, (s1: _3dsource_angular_unreal_module.SignalingData | null, s2: _3dsource_angular_unreal_module.AwsInstance, s3: string | null) => string>;
1034
1053
  declare const selectLoaderCommands: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.CommandsLoaderState, (s1: _3dsource_angular_unreal_module.CommandsLoaderState) => _3dsource_angular_unreal_module.CommandsLoaderState>;
@@ -1047,6 +1066,14 @@ declare const selectLastCommandInProgress: _ngrx_store.MemoizedSelector<Record<s
1047
1066
  * Returns Scene load progress as a float value in between 0-1
1048
1067
  */
1049
1068
  declare const selectTotalProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: number | null, s2: number, s3: _3dsource_angular_unreal_module.AwsInstance) => number>;
1069
+ declare const selectClientAndViewIds: _ngrx_store.MemoizedSelector<Record<string, any>, {
1070
+ clientId: string | null;
1071
+ viewId: string | null;
1072
+ }, (s1: string | null, s2: string | null) => {
1073
+ clientId: string | null;
1074
+ viewId: string | null;
1075
+ }>;
1076
+ declare const isLoaderScreenVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
1050
1077
 
1051
1078
  declare const removeExileCommands: (state: CommandsLoaderState, idToRemove: string) => {
1052
1079
  commandsInProgress: {
@@ -1080,6 +1107,7 @@ interface LBMStats {
1080
1107
  type Quality = 'lime' | 'red' | 'orange';
1081
1108
 
1082
1109
  interface SignalingData {
1110
+ instanceType: string;
1083
1111
  branchInfo: string;
1084
1112
  cirrusVersion: string;
1085
1113
  streamerVersion: string;
@@ -1264,39 +1292,127 @@ interface AwsInstance {
1264
1292
  }
1265
1293
 
1266
1294
  declare class SignallingService extends SubService {
1295
+ private readonly action$;
1267
1296
  private readonly httpClient;
1268
1297
  private readonly regionsPingService;
1269
1298
  onOffer$: Subject<RTCSessionDescriptionInit>;
1270
1299
  onConfig$: Subject<ConfigMessage>;
1271
1300
  onWebRtcIce$: Subject<RTCIceCandidate>;
1272
1301
  onWebRtcAnswer$: Subject<RTCSessionDescriptionInit | null>;
1302
+ abort$: Observable<_ngrx_store.Action<string>>;
1273
1303
  private ws;
1274
- protected wsTimeoutHandler: ReturnType<typeof setTimeout>;
1275
1304
  private wsMsgHandlers;
1276
1305
  protected correlationId: string;
1277
1306
  protected environmentId: string;
1278
- private establishingConnection;
1279
- private isCirrusConnected;
1280
- private establishingConnectionDrop$;
1281
1307
  constructor();
1282
- protected initEstablishingConnection(): void;
1283
- private stopEstablishingConnection;
1284
- private connectToSignaling;
1285
- private connectToSignalingAfterPing;
1308
+ connectToSignaling(urlList: string[]): Observable<WebSocket>;
1309
+ protected startEstablishingConnection(): void;
1310
+ private adaptUrlsToRegion;
1311
+ /**
1312
+ * Resolves an active AWS *signaling* instance and returns a WebSocket endpoint.
1313
+ *
1314
+ * The observable produced by this method is **cold** and executes inside a `defer`,
1315
+ * so each subscription (including those triggered by `retry`) pulls the **next**
1316
+ * URL candidate from a generator created by `getActiveUrl(urlsPool)`.
1317
+ *
1318
+ * ### Execution flow
1319
+ *
1320
+ * 1. **Telemetry** — Starts a `getSignaling` span for end-to-end timing.
1321
+ * 2. **Candidate URL selection** — A stateful generator (`urlGen`) is created
1322
+ * from `urlsPool`. Each resubscription (e.g. via `retry`) advances to the next URL.
1323
+ * 3. **Short-circuit for WS URLs** — If the picked candidate already matches
1324
+ * `ws://` or `wss://`, emit `{ wsUrl, pollingUrl: null, instanceName: null }`
1325
+ * immediately and complete (no HTTP request).
1326
+ * 4. **Await client/view identifiers** — `this.store.select(selectClientAndViewIds)`
1327
+ * is tapped for logging (missing IDs) and then filtered to require both `clientId`
1328
+ * and `viewId` to be truthy.
1329
+ * 5. **Single in-flight HTTP orchestration call** — Uses `exhaustMap` to issue
1330
+ * `GET {signalingUrl}{clientId}/{viewId}`. New `{clientId, viewId}` emissions
1331
+ * while the request is in flight are **ignored** until completion, preventing overlap.
1332
+ * 6. **Per-attempt timeout** — `timeout(WS_TIMEOUT)` caps how long we wait for a response.
1333
+ * On timeout, the attempt errors and the outer `retry` schedules the next URL.
1334
+ * 7. **Response validation & progress reporting** — A `filter`:
1335
+ * - Calls `TelemetryStop('getSignaling', { ...data, multi: true })` on receipt.
1336
+ * - If `data.signallingServer === ''` or `data.error`:
1337
+ * shows a status message, optionally dispatches `setStatusPercentSignallingServer`
1338
+ * with `data.info.percent`, and **throws** to fail the attempt (triggers `retry`).
1339
+ * 8. **Mapping to `AwsInstance`** — Converts the validated orchestration payload into:
1340
+ * - `wsUrl`: via `httpUrlToWs(\`\${location.protocol}//\${data.signallingServer}\`)`
1341
+ * - `pollingUrl`: the base `signalingUrl` that succeeded
1342
+ * - `instanceName`: the (validated) `data.signallingServer`
1343
+ * 9. **Retry policy** — On *any* upstream error (timeout, HTTP error, invalid payload),
1344
+ * `retry({ delay })`:
1345
+ * - Shows a “connecting” status,
1346
+ * - Logs the attempt number,
1347
+ * - Waits `WS_TIMEOUT` ms (via `timer`) and **resubscribes**, advancing `urlGen`.
1348
+ *
1349
+ * ### Concurrency semantics
1350
+ *
1351
+ * - `exhaustMap` guarantees a **single** HTTP request per attempt; subsequent
1352
+ * `{clientId, viewId}` emissions are ignored until the current request completes.
1353
+ *
1354
+ * ### Telemetry semantics
1355
+ *
1356
+ * - `TelemetryStart('getSignaling')` begins before work.
1357
+ * - `TelemetryStop('getSignaling', {...})` runs on receipt of an orchestration response.
1358
+ * If an attempt fails (e.g., timeout), stopping the span is the responsibility of
1359
+ * your telemetry layer or a `finalize` elsewhere if desired.
1360
+ *
1361
+ * ### Error & retry semantics
1362
+ *
1363
+ * - Missing/never-emitted IDs → timeout → retry with next URL.
1364
+ * - HTTP/network error → retry with next URL.
1365
+ * - Invalid orchestration payload (`error` set or empty `signallingServer`) → throw in
1366
+ * validation filter → retry with next URL.
1367
+ * - Short-circuit WS path **does not** retry (emits once, completes).
1368
+ *
1369
+ * @param urlsPool - Ordered list of base URLs to probe. Retries advance through this list
1370
+ * until a working signaling server is found. A candidate may also be a direct `ws://`/`wss://`
1371
+ * URL to short-circuit HTTP orchestration.
1372
+ *
1373
+ * @returns Observable that emits exactly one {@link AwsInstance} on success and then completes.
1374
+ * On failure, the stream errors; the built-in `retry` operator re-subscribes after `WS_TIMEOUT`
1375
+ * and advances to the next URL candidate.
1376
+ *
1377
+ * @throws Emits an error within the observable chain (not a thrown synchronous exception) when:
1378
+ * - The HTTP request fails or times out.
1379
+ * - The orchestration response indicates an error or an empty `signallingServer`.
1380
+ * - Any other operator in the chain surfaces an error.
1381
+ *
1382
+ * @remarks
1383
+ * - The URL generator (`urlGen`) is created **outside** `defer`, so resubscriptions
1384
+ * advance the pool. Creating it inside `defer` would restart from the first URL each retry.
1385
+ * - `location.protocol` is used to derive `ws` vs `wss`. If this may run in non-browser
1386
+ * contexts (e.g., SSR), guard or abstract this logic.
1387
+ * - Consider capping retries with `count` in `retry({ count, delay })` when appropriate.
1388
+ *
1389
+ * @example
1390
+ * ```ts
1391
+ * getAwsInstance(['https://signaling.example.com/', 'wss://direct.example.com'])
1392
+ * .subscribe({
1393
+ * next: ({ wsUrl }) => connect(wsUrl),
1394
+ * error: (e) => console.error('Unable to establish signaling:', e),
1395
+ * });
1396
+ * ```
1397
+ *
1398
+ * @see httpUrlToWs
1399
+ * @see selectClientAndViewIds
1400
+ * @see setStatusPercentSignallingServer
1401
+ */
1402
+ private getAwsInstance;
1403
+ private connectToCirrus;
1404
+ addWsHandlers(ws: WebSocket): void;
1286
1405
  showStatusMessage(message: string | null): void;
1287
1406
  /**
1288
1407
  * Close the connection with the signaling server
1289
1408
  * @param data
1290
1409
  */
1291
- close(data: CloseReason | void): void;
1410
+ close(data: CloseReason): void;
1292
1411
  send(data: string | object): void;
1293
- protected watchTimeoutOrErrorAndReconnectLater(): void;
1294
- protected stopRetryTimer(): void;
1295
- private initWebSocket;
1296
- private httpUrlToWs;
1297
1412
  private clearWs;
1298
1413
  protected handleMessage(msg: MessageBase): void;
1299
1414
  private setHandlersFromStream;
1415
+ private getRegion;
1300
1416
  static ɵfac: i0.ɵɵFactoryDeclaration<SignallingService, never>;
1301
1417
  static ɵprov: i0.ɵɵInjectableDeclaration<SignallingService>;
1302
1418
  }
@@ -1392,7 +1508,6 @@ declare class WebRtcPlayerService extends SubService {
1392
1508
  private forceTURN;
1393
1509
  private forceMonoAudio;
1394
1510
  private dcClient;
1395
- private webRtcErrorTimeout;
1396
1511
  constructor();
1397
1512
  private listenSignaling;
1398
1513
  private createWebRtcOffer;
@@ -1407,7 +1522,6 @@ declare class WebRtcPlayerService extends SubService {
1407
1522
  canSend(): boolean | null;
1408
1523
  send(data: ArrayBuffer): void;
1409
1524
  private setConfig;
1410
- private dispatchWebRtcError;
1411
1525
  private createPeerConnection;
1412
1526
  private handlePeerConnectionEvents;
1413
1527
  private setupTransceiversAsync;
@@ -1422,10 +1536,10 @@ declare class AfkRestartScreenLockerComponent implements AfterViewInit, OnInit {
1422
1536
  store: Store<any>;
1423
1537
  videoService: VideoService;
1424
1538
  destroyRef: DestroyRef;
1425
- showReconnectPopup: i0.Signal<boolean | undefined>;
1426
- isViewportReady: i0.Signal<boolean | undefined>;
1427
- imageLoadingSrc: i0.Signal<string | undefined>;
1428
- streamConfig: i0.Signal<_3dsource_angular_unreal_module.StreamConfig | undefined>;
1539
+ showReconnectPopup: i0.Signal<boolean>;
1540
+ isLoaderScreenVisible: i0.Signal<boolean>;
1541
+ imageLoadingSrc: i0.Signal<string>;
1542
+ streamConfig: i0.Signal<_3dsource_angular_unreal_module.StreamConfig>;
1429
1543
  isSecondStart: i0.WritableSignal<boolean>;
1430
1544
  playCallBack: null | (() => void);
1431
1545
  ngOnInit(): void;
@@ -1644,5 +1758,5 @@ declare class SafePipe implements PipeTransform {
1644
1758
  static ɵpipe: i0.ɵɵPipeDeclaration<SafePipe, "safe", true>;
1645
1759
  }
1646
1760
 
1647
- export { AFKService, AfkRestartScreenLockerComponent, AggregatorService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, ClickableOverlayComponent, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DataFlowMonitor, DevModeService, DisconnectReason, EControlSchemeType, EMessageType, EToClientMessageType, FULL_HD_HEIGHT, FULL_HD_WIDTH, FilterSettingsComponent, FreezeFrameComponent, FreezeFrameService, IceCandidateHandler, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, PingHandler, PlayerCountHandler, RegionsPingService, ResetTelemetry, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, SubService, TelemetryStart, TelemetryStop, UNREAL_CONFIG, UnrealCommunicatorService, UnrealEffects, UnrealInternalSignalEvents, UnrealSceneComponent, UnrealStatusMessage, VideoLockerComponent, VideoRecorder, VideoService, VideoStatsComponent, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CIRRUS_CLOSED, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, alignProductsToPlaneCommand, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, clampAndKeepMaxPercents, clampPanToProductsCommand, commandCompleted, commandStarted, decodeData, destroyConnectionsAndResetState, destroyRemoteConnections, dispatchResize, floatToSmoothPercents, forceResizeUnrealVideo, fromResizeObserver, fromSignal, fromUnrealCallBackSignal, getActiveUrl, getApplyCameraPresetCommand, getApplyZoomCommand, getCameraBoxCommand, getCameraRecenterCommand, getCameraSettingsCommand, getChangeGizmoTypeCommand, getChangeResolutionCommand, getClickSnapCommand, getControlSensitivityCommand, getDebugModeCommand, getDragCommand, getDragSequenceCommand, getDropCommand, getEnableComposureCommand, getEnableControlsCommand, getEnableSceneStateCallbackCommand, getEnableSpinnerModeCommand, getEnableTeleportCommand, getExecuteConsoleCommand, getFitToObjectsCommand, getFreezeFrameCommand, getFreezeFrameNative, getImageFromVideoStream, getInitSequenceByObjectNameCommand, getJumpToSequenceCommand, getLoadLevelCommand, getLoadProductCommand, getLoadSceneStateCommand, getLoopBackCommand, getMoveSelectedCommand, getPauseSequenceCommand, getPlaySequenceCommand, getRequestCameraPresetCommand, getResetControlClampsCommand, getRotateSelectedCommand, getRtcErrorMessage, getSelectProductByObjectNameCommand, getSetCameraControlClampsCommand, getSetControlCameraModeCommand, getSetFpsCommand, getSetMaterialCommand, getSetPawnMovementModeCommand, getSetSettingsSequenceCommand, getStopSequenceCommand, getTakeRenderCommand, getTakeSpinnerRenderCommand, getTakeSpinnerRenderPreviewCommand, getUnLoadAllProductsCommand, getUnLoadProductByObjectNameCommand, getUnfreezeFrameNative, getUnselectAllProductsCommand, getWeatherCommand, initSignalling, initialState, mapQpToQuality, observeCommandResponse, provideAngularUnrealModule, removeExileCommands, resetAfk, resetAfkAction, resetConfig, resetIntroSrc, resetUnrealState, resetUnrealStateAction, resetWarnTimeout, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsFreezeFrameLoading, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectLoaderCommands, selectMatchMakerUrls, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, selectWsUrl, sendSignal, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setErrorMessage, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setIsFreezeLoaderPercents, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMatchMakerUrls, setMatchUrls, setMaxFps, setProductsLocationCommand, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setViewportReady, showUnrealErrorMessage, smoothTransition, trackMixpanelEvent, unLoadAllLevelsCommand, unrealFeature, unrealReducer, updateCirrusInfo };
1648
- export type { AwsInstance, CandidateMessage, CloseReason, CommandsLoaderState, ConfigMessage, DataFlowCheckResult, DisconnectType, EControlSchemeTypeValues, EMessageTypeValues, FreezeFrameMessage, IAggregatedStat, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, LBMStats, MessageBase, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, ObservedCallbackResponse, OrchestrationMessageType, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, SSInfo, SignalDescriptor, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallBackJson, UnrealError, UnrealErrorType, UnrealInitialConfig, UnrealState, WSCloseCodesValues, WrappedMetaBoxCommandPacket };
1761
+ export { AFKService, AfkRestartScreenLockerComponent, AggregatorService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, ClickableOverlayComponent, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DataFlowMonitor, DevModeService, DisconnectReason, EControlSchemeType, EMessageType, EToClientMessageType, FULL_HD_HEIGHT, FULL_HD_WIDTH, FilterSettingsComponent, FreezeFrameComponent, FreezeFrameService, IceCandidateHandler, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, ResetTelemetry, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, SubService, TelemetryStart, TelemetryStop, UNREAL_CONFIG, UnrealCommunicatorService, UnrealEffects, UnrealInternalSignalEvents, UnrealSceneComponent, UnrealStatusMessage, VideoLockerComponent, VideoRecorder, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, alignProductsToPlaneCommand, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, clampAndKeepMaxPercents, clampPanToProductsCommand, commandCompleted, commandStarted, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, floatToSmoothPercents, forceResizeUnrealVideo, fromResizeObserver, fromSignal, fromUnrealCallBackSignal, getActiveUrl, getApplyCameraPresetCommand, getApplyZoomCommand, getCameraBoxCommand, getCameraRecenterCommand, getCameraSettingsCommand, getChangeGizmoTypeCommand, getChangeResolutionCommand, getClickSnapCommand, getControlSensitivityCommand, getDebugModeCommand, getDragCommand, getDragSequenceCommand, getDropCommand, getEnableComposureCommand, getEnableControlsCommand, getEnableSceneStateCallbackCommand, getEnableSpinnerModeCommand, getEnableTeleportCommand, getExecuteConsoleCommand, getFitToObjectsCommand, getFreezeFrameCommand, getFreezeFrameNative, getImageFromVideoStream, getInitSequenceByObjectNameCommand, getJumpToSequenceCommand, getLoadLevelCommand, getLoadProductCommand, getLoadSceneStateCommand, getLoopBackCommand, getMoveSelectedCommand, getPauseSequenceCommand, getPlaySequenceCommand, getRequestCameraPresetCommand, getResetControlClampsCommand, getRotateSelectedCommand, getRtcErrorMessage, getSelectProductByObjectNameCommand, getSetCameraControlClampsCommand, getSetControlCameraModeCommand, getSetFpsCommand, getSetMaterialCommand, getSetPawnMovementModeCommand, getSetSettingsSequenceCommand, getStopSequenceCommand, getTakeRenderCommand, getTakeSpinnerRenderCommand, getTakeSpinnerRenderPreviewCommand, getUnLoadAllProductsCommand, getUnLoadProductByObjectNameCommand, getUnfreezeFrameNative, getUnselectAllProductsCommand, getWeatherCommand, initSignalling, initialState, isLoaderScreenVisible, mapQpToQuality, observeCommandResponse, provideAngularUnrealModule, removeExileCommands, resetAfk, resetAfkAction, resetConfig, resetIntroSrc, resetWarnTimeout, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsFreezeFrameLoading, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectLoaderCommands, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, sendSignal, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMatchUrls, setMaxFps, setProductsLocationCommand, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setViewportNotReady, setViewportReady, showPopupWithoutAutoStart, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, unLoadAllLevelsCommand, unrealFeature, unrealReducer, updateCirrusInfo };
1762
+ export type { AwsInstance, CandidateMessage, CloseReason, CommandsLoaderState, ConfigMessage, ConnectionError, DataFlowCheckResult, DisconnectReasonType, EControlSchemeTypeValues, EMessageTypeValues, FreezeFrameMessage, IAggregatedStat, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, LBMStats, MessageBase, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, ObservedCallbackResponse, OrchestrationMessageType, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, SSInfo, SignalDescriptor, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallBackJson, UnrealInitialConfig, UnrealState, WSCloseCodesValues, WrappedMetaBoxCommandPacket };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3dsource/angular-unreal-module",
3
- "version": "0.0.44",
3
+ "version": "0.0.49",
4
4
  "description": "Angular Unreal module for connect with unreal engine stream",
5
5
  "keywords": [
6
6
  "3dsource",
@@ -22,12 +22,12 @@
22
22
  "@3dsource/source-ui-native": ">=1.0.9",
23
23
  "@3dsource/types-unreal": ">=0.0.5",
24
24
  "@3dsource/utils": ">=1.0.21",
25
- "@angular/cdk": ">=19.0.0",
26
- "@angular/common": ">=19.0.0",
27
- "@angular/core": ">=19.0.0",
28
- "@angular/forms": ">=19.0.0",
29
- "@ngrx/effects": ">=19.0.0",
30
- "@ngrx/store": ">=19.0.0"
25
+ "@angular/cdk": ">=18.0.0",
26
+ "@angular/common": ">=18.0.0",
27
+ "@angular/core": ">=18.0.0",
28
+ "@angular/forms": ">=18.0.0",
29
+ "@ngrx/effects": ">=18.0.0",
30
+ "@ngrx/store": ">=18.0.0"
31
31
  },
32
32
  "engines": {
33
33
  "node": ">=20",
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../../projects/3dsource/angular-unreal-module/src/lib/components/clickable-overlay/clickable-overlay.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/freeze-frame/freeze-frame.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/low-bandwidth-modal/low-bandwidth-modal.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/sub.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/afk.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/aggregator.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/command-telemetry.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/console-extensions.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/dev-mode.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/freeze-frame.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/input.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/regions-ping.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/CustomCloseCodes.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/CloseReason.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/disconnect-reasons.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/errors.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/freeze-frame-message.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/initial-config.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/ButtonsAndCodes.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/EControlSchemeType.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/EMessageType.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/EToClientMessageType.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/initial-config.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/InputOptions.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/UnrealStatusMessage.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/unreal.constant.ts","../../../projects/3dsource/angular-unreal-module/src/lib/constants/unreal.providers.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/input.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/AnswerHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/ConfigHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/IceCandidateHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/InstanceReadyHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/InstanceReservedHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/PingHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/PlayerCountHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/FromStreamerHandlers/SSInfoHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/WsHandlers/OnCloseHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/WsHandlers/OnErrorHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/WsHandlers/OnMessageHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/WsHandlers/OpenHandler.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/clamp-and-keep-max-percents.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/CommandObserver.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/DataDecoder.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/low-bandwidth-indicator/DataFlowConstants.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/DataFlowMonitor.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/dispatchResize.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/error-codes.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/EventWrapper.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/float-to-smooth-percents.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/get-image-from-video-stream.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/GetNextUrl.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/KalmanFilter1D.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/LatencyTimings.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/mapQpToQuality.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/prepare-commands.ts","../../../projects/3dsource/angular-unreal-module/src/lib/store/unreal.actions.ts","../../../projects/3dsource/angular-unreal-module/src/lib/store/unreal.effects.ts","../../../projects/3dsource/angular-unreal-module/src/lib/store/unreal.feature.ts","../../../projects/3dsource/angular-unreal-module/src/lib/store/unreal.reducer.ts","../../../projects/3dsource/angular-unreal-module/src/lib/store/unreal.selectors.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/remove-exile-commands.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/resetAfk.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/resize-observer.ts","../../../projects/3dsource/angular-unreal-module/src/lib/helpers/VideoRecorder.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/LBMStats.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/quality.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/SignalingData.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/SignalingMessage.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/stream-config.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/stream-resolution.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/interfaces/unreal-internal-signal-events.interface.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/signalling.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/stream-status-telemetry.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/unreal-communicator.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/video.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/services/web-rtc-player.service.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/screen-locker/afk-restart-screen-locker.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/stat-graph/stat-graph.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/unreal-scene/unreal-scene.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/video-locker/video-locker.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/video-stats/video-stats.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/webrtc-error-modal/webrtc-error-modal.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/low-bandwidth-indicator/filter-settings/filter-settings.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/components/low-bandwidth-indicator/low-bandwidth-detector.component.ts","../../../projects/3dsource/angular-unreal-module/src/lib/pipes/safe-html.pipe.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}