@3dsource/angular-unreal-module 0.0.144 → 0.0.146-dev.0

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.
@@ -0,0 +1,4 @@
1
+ "use strict";(()=>{"use strict";const l="metabox-configurator",d=/metabox-configurator\/(modular|basic)\/([^/?#]+)/i,u="3dsource:region-ping",f="assets/config.json",p="42e01f";function a(){return typeof crypto!="undefined"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{const e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)})}function m(o){return o.replace("http://","ws://").replace("https://","wss://")}class g{constructor(){const e=document.currentScript||(()=>{const n=document.getElementsByTagName("script");return n[n.length-1]})(),t=e&&e.dataset||{};this.configUrl=t.configUrl||f,this.config={watchdog_ms:this.numberOr(t.watchdogMs,15e3),ws_timeout:this.numberOr(t.wsTimeout,6e3),poll_timeout:this.numberOr(t.pollTimeout,4e3)};const i=new URLSearchParams(window.location.search);this.forceTURN=i.has("ForceTURN"),this.forceMaxBundle=i.has("ForceMaxBundle"),this.forceMonoAudio=i.has("forceMono"),this.ids={clientId:a(),viewId:a(),correlationId:a()},this.context=null,this.environmentId="",this.orchestrationType="",this.region="",this.pc=null,this.dc=null,this.stream=null,this.ws=null,this.remoteDescriptionSet=!1,this.iceBuffer=[],this.watchdogId=null,this.wsTimeoutId=null,this.settled=!1}run(){if(typeof window=="undefined"||!("WebSocket"in window)||!("RTCPeerConnection"in window)||window.location.href.indexOf(l)===-1)return;const e=this.parseConfiguratorUrl();e&&(this.context={id:e.contextId,data:{configuratorId:e.configuratorId}},this.publishParked("connecting"),this.connect().catch(t=>this.fail("exception",t)))}parseConfiguratorUrl(){const e=window.location.pathname.match(d);return e?{contextId:e[1].toLowerCase()==="modular"?"metaboxModularConfigurator":"metaboxBasicConfigurator",configuratorId:decodeURIComponent(e[2])}:null}connect(){return this.mark("prefetch_start"),this.region=this.readRegion()||"",this.fetchConfig().then(e=>{if(!e){this.fail("no-config");return}const t=this.chooseEndpoint(e);if(!t){this.fail("no-endpoint");return}if(!t.environmentId){this.fail("no-environment-id");return}this.orchestrationType=t.type,this.environmentId=t.environmentId;const i=this.adaptUrlToRegion(t.url);return(t.type==="polling"?this.pollOrchestration(i):Promise.resolve(i)).then(r=>{if(!r){this.fail("no-ws-url");return}return this.parked.machineId=r,this.openSocket(r)})})}fetchConfig(){const e=new URL(this.configUrl,window.location.origin).href;return this.fetchWithTimeout(e,{credentials:"omit"},this.config.poll_timeout).then(t=>t.ok?t.json().catch(()=>null):null).catch(()=>null)}chooseEndpoint(e){const t=e.newSignalling,i=this.firstVersionUrl(t&&t.versions);if(i&&/^wss?:\/\//i.test(i))return{type:"direct",url:i,environmentId:t&&t.environmentId||""};const n=e.signalling,r=this.firstVersionUrl(n&&n.versions);return r?{type:"polling",url:r,environmentId:n&&n.environmentId||""}:null}firstVersionUrl(e){if(!e||typeof e!="object")return"";for(const t of Object.keys(e))if(e[t])return e[t];return""}pollOrchestration(e){const t=`${e}${this.ids.clientId}/${this.ids.viewId}`;return this.fetchWithTimeout(t,{credentials:"omit"},this.config.poll_timeout).then(i=>i.ok?i.json().catch(()=>({})):null).then(i=>i&&i.signallingServer?m(`${window.location.protocol}//${i.signallingServer}`):null).catch(()=>null)}adaptUrlToRegion(e){return this.region&&e.indexOf(":region")===-1?e.replace(/signallingserver/gi,`signallingserver/region:${this.region}`):e}openSocket(e){const t=new WebSocket(e);t.binaryType="arraybuffer",this.ws=t,this.parked.ws=t,this.wsTimeoutId=setTimeout(()=>{t.readyState!==WebSocket.OPEN&&this.fail("ws-timeout")},this.config.ws_timeout),t.onopen=()=>{clearTimeout(this.wsTimeoutId),this.mark("ws_open"),this.sendRequestStream()},t.onmessage=i=>this.onWsMessage(i),t.onerror=()=>this.fail("ws-error"),t.onclose=()=>{!this.settled&&this.parked.state!=="ready"&&this.fail("ws-closed")},this.armWatchdog()}sendRequestStream(){this.send({type:"requestStream",correlationId:this.ids.correlationId,payload:{region:this.region,environmentId:this.environmentId,context:this.context}})}onWsMessage(e){let t;try{const i=typeof e.data=="string"?e.data:null;if(i===null)return;t=JSON.parse(i)}catch{return}switch(t.type){case"config":this.onConfig(t);break;case"offer":this.onOffer(t);break;case"answer":this.onAnswer(t);break;case"iceCandidate":this.onIceCandidate(t.candidate);break;case"ping":this.send({type:"pong",source:"front"});break;case"streamerDisconnected":case"playerDisconnected":this.fail("streamer-disconnected");break;case"error":this.fail("orchestration-error");break;default:break}}onConfig(e){if(this.pc)return;const t=Object.assign({},e.peerConnectionOptions);this.forceTURN&&(t.iceTransportPolicy="relay"),t.bundlePolicy=this.forceMaxBundle?"max-bundle":"balanced",t.iceCandidatePoolSize=1,this.parked.config=t;const i=new RTCPeerConnection(t);this.pc=i,this.parked.pc=i,i.onicecandidate=n=>{n.candidate&&this.send({type:"iceCandidate",candidate:n.candidate})},i.ondatachannel=n=>this.wireDataChannel(n.channel),i.ontrack=n=>{n.track&&n.track.kind==="video"&&n.streams[0]&&(this.stream=n.streams[0],this.parked.stream=this.stream,this.maybeReady())}}onOffer(e){return this.pc?(this.remoteDescriptionSet=!1,this.iceBuffer.length=0,this.pc.setRemoteDescription(e).then(()=>(this.remoteDescriptionSet=!0,this.flushIce(),this.pc.createAnswer())).then(t=>(t.sdp=this.mungeSDP(t.sdp||""),this.pc.setLocalDescription(t).then(()=>{this.send(t)}))).catch(t=>this.fail("offer-failed",t))):Promise.resolve()}onAnswer(e){return this.pc?this.pc.setRemoteDescription(e).then(()=>{this.remoteDescriptionSet=!0,this.flushIce()}).catch(t=>this.fail("answer-failed",t)):Promise.resolve()}onIceCandidate(e){e&&(this.forceTURN&&String(e.candidate).indexOf("relay")<0||(this.remoteDescriptionSet&&this.pc?this.pc.addIceCandidate(e).catch(()=>{}):this.iceBuffer.push(e)))}flushIce(){for(const e of this.iceBuffer)this.pc.addIceCandidate(e).catch(()=>{});this.iceBuffer.length=0}wireDataChannel(e){e.binaryType="arraybuffer",this.dc=e,this.parked.dc=e,e.onmessage=t=>{this.parked.dcBuffer.push(t.data)},e.onopen=()=>{this.mark("dc_open"),this.maybeReady()},e.onclose=()=>{!this.settled&&this.parked.state!=="ready"&&this.fail("dc-closed")},e.readyState==="open"&&this.maybeReady()}maybeReady(){this.settled||!this.dc||this.dc.readyState!=="open"||this.stream&&(this.settled=!0,this.mark("ready"),this.parked.state="ready")}publishParked(e){const t=this;this.parked={state:e,pc:null,dc:null,stream:null,ws:null,machineId:void 0,config:void 0,ids:this.ids,dcBuffer:[],timings:{},adopt(){return t.clearWatchdog(),this.state="adopted",this}},window.__stream=this.parked}armWatchdog(){this.clearWatchdog(),this.watchdogId=setTimeout(()=>{this.parked.state!=="adopted"&&this.fail("watchdog")},this.config.watchdog_ms)}clearWatchdog(){this.watchdogId&&(clearTimeout(this.watchdogId),this.watchdogId=null),this.wsTimeoutId&&(clearTimeout(this.wsTimeoutId),this.wsTimeoutId=null)}fail(e,t){if(!(this.parked&&this.parked.state==="adopted")){this.settled=!0,this.clearWatchdog();try{this.dc&&this.dc.close()}catch{}try{this.pc&&this.pc.close()}catch{}try{this.ws&&this.ws.close()}catch{}this.parked&&(this.parked.state="failed",this.parked.failReason=e,t&&(this.parked.failError=String(t&&t.message||t)))}}mungeSDP(e){let t=this.prioritizeH264Profile(e,p);t=t.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,`$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r
2
+ `);let i="maxaveragebitrate=510000;";return i+=this.forceMonoAudio?"stereo=0;":"stereo=1;",i+="useinbandfec=1",t=t.replace("useinbandfec=1",i),t}prioritizeH264Profile(e,t){const i=e.split(`\r
3
+ `),n=[];for(const r of i)if(r.startsWith("a=fmtp:")&&r.toLowerCase().includes(`profile-level-id=${t}`)){const s=r.split(":")[1]&&r.split(":")[1].split(" ")[0];s&&n.push(s)}return n.length===0?e:i.map(r=>{if(!r.startsWith("m=video"))return r;const s=r.split(" "),w=s.slice(0,3),h=s.slice(3),y=[...n.filter(c=>h.includes(c)),...h.filter(c=>!n.includes(c))];return[...w,...y].join(" ")}).join(`\r
4
+ `)}send(e){const t=typeof e=="string"?e:JSON.stringify(e);if(this.ws&&this.ws.readyState===WebSocket.OPEN)try{this.ws.send(t)}catch{}}mark(e){this.parked&&(this.parked.timings[e]=performance.now())}readRegion(){try{const e=localStorage.getItem(u);if(!e)return null;const t=JSON.parse(e);return!t||typeof t.region_code!="string"||typeof t.ts!="number"||Date.now()-t.ts>=2592e6?null:t.region_code}catch{return null}}fetchWithTimeout(e,t,i){const n=new AbortController;t.signal=n.signal;const r=setTimeout(()=>n.abort(),i);return fetch(e,t).finally(()=>clearTimeout(r))}numberOr(e,t){const i=Number(e);return e!=null&&e!==""&&!Number.isNaN(i)?i:t}}new g().run()})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3dsource/angular-unreal-module",
3
- "version": "0.0.144",
3
+ "version": "0.0.146-dev.0",
4
4
  "description": "Unreal module for connect with unreal engine stream",
5
5
  "keywords": [
6
6
  "3dsource",
@@ -94,7 +94,6 @@ declare class UnrealSceneComponent {
94
94
  private readonly commandsSender;
95
95
  private readonly videoService;
96
96
  private readonly webRtcPlayerService;
97
- private readonly signallingService;
98
97
  private readonly destroyRef;
99
98
  private readonly unrealConfig;
100
99
  private autoHighResolution;
@@ -232,18 +231,6 @@ interface FreezeFrameMessage {
232
231
  progress: number | null;
233
232
  }
234
233
 
235
- interface ReconnectConfig {
236
- /** Enable auto-reconnection when WebRTC or DataChannel connection is lost. Default: true */
237
- enabled?: boolean;
238
- /** Maximum number of reconnection attempts before giving up. Default: 3 */
239
- maxAttempts?: number;
240
- /** Delay in milliseconds between reconnection attempts. Default: 1000 */
241
- delayMs?: number;
242
- /** Reconnect on ICE connection failure (disconnected/failed state). Default: true */
243
- onIceFailure?: boolean;
244
- /** Reconnect on DataChannel close. Default: true */
245
- onDataChannelClose?: boolean;
246
- }
247
234
  interface UnrealInitialConfig {
248
235
  playwright?: boolean;
249
236
  customErrorsEndpoint?: string;
@@ -254,8 +241,45 @@ interface UnrealInitialConfig {
254
241
  streamTelemetryV2Url?: string;
255
242
  fpsMonitor?: boolean;
256
243
  autoHighResolution?: boolean;
257
- /** Configuration for auto-reconnection behavior */
258
- reconnect?: ReconnectConfig;
244
+ }
245
+
246
+ /**
247
+ * Live WebRTC connection parked on `window.__stream` by the `stream-prefetch.js`
248
+ * head-script, ready for the Angular services to ADOPT instead of building a
249
+ * connection from scratch. The shape is the handoff contract between that
250
+ * framework-free script and {@link StreamAdoptionService} — keep the two in sync.
251
+ */
252
+ interface ParkedStream {
253
+ state: 'connecting' | 'ready' | 'failed' | 'adopted';
254
+ pc?: RTCPeerConnection;
255
+ dc?: RTCDataChannel;
256
+ /** video(+audio) MediaStream from the `track` event */
257
+ stream?: MediaStream;
258
+ /** live signalling socket (handshake already done, `requestStream` sent) */
259
+ ws?: WebSocket;
260
+ /** = resolved wsUrl of the winning machine */
261
+ machineId?: string;
262
+ /** `peerConnectionOptions` the machine sent in its `config` message */
263
+ config?: RTCConfiguration;
264
+ /** ids the script generated; Angular reuses them (no regeneration) */
265
+ ids: {
266
+ clientId: string;
267
+ viewId: string;
268
+ correlationId: string;
269
+ };
270
+ /** DataChannel messages received before adoption, replayed on adopt */
271
+ dcBuffer: ArrayBuffer[];
272
+ /** `performance.now()` marks for the prefetch waterfall (telemetry) */
273
+ timings: Record<string, number>;
274
+ failReason?: string;
275
+ failError?: string;
276
+ /** Stops the script's watchdog and flips state to `adopted`. */
277
+ adopt: () => ParkedStream;
278
+ }
279
+ declare global {
280
+ interface Window {
281
+ __stream?: ParkedStream;
282
+ }
259
283
  }
260
284
 
261
285
  declare const SpecialKeyCodes: {
@@ -368,11 +392,11 @@ declare const REGION_PING_CACHE_TTL_MS: number;
368
392
  declare const REGION_PING_ACCURATE_SAMPLES = 3;
369
393
  declare const REGION_PING_WARMUP_DEADLINE_MS = 1500;
370
394
  declare const REGION_PING_BACKGROUND_REFRESH_DELAY_MS = 5000;
371
- declare const DEFAULT_RECONNECT_ENABLED = true;
372
- declare const DEFAULT_RECONNECT_MAX_ATTEMPTS = 3;
373
- declare const DEFAULT_RECONNECT_DELAY_MS = 1000;
374
- declare const DEFAULT_RECONNECT_ON_ICE_FAILURE = true;
375
- declare const DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE = true;
395
+ declare const RECONNECT_CONFIG: {
396
+ readonly enabled: true;
397
+ readonly maxAttempts: 3;
398
+ readonly delayMs: 1000;
399
+ };
376
400
  declare const UnrealStatusMessage: {
377
401
  readonly CONNECTING_TO_SESSION: "Connecting to session.";
378
402
  readonly STARTING_YOUR_SESSION: "Starting your session";
@@ -1020,6 +1044,15 @@ declare class SignallingService extends SubService {
1020
1044
  private pollLoop;
1021
1045
  private connectToCirrus;
1022
1046
  private addWsHandlers;
1047
+ /**
1048
+ * Adopt a live signalling socket opened by the `stream-prefetch.js`
1049
+ * head-script. The socket is already OPEN and `requestStream` was already
1050
+ * sent, so — unlike {@link addWsHandlers} — we attach message/close/error
1051
+ * handlers but deliberately skip {@link OnOpenHandler} (which would
1052
+ * `setCirrusConnected` + re-`sendRequestStream`). Reuses the head-script's
1053
+ * `correlationId` so subsequent correlated messages line up.
1054
+ */
1055
+ adoptSocket(ws: WebSocket, correlationId: string): void;
1023
1056
  private showStatusMessage;
1024
1057
  /**
1025
1058
  * Close the connection with the signaling server
@@ -1039,6 +1072,26 @@ declare class SignallingService extends SubService {
1039
1072
  static ɵprov: i0.ɵɵInjectableDeclaration<SignallingService>;
1040
1073
  }
1041
1074
 
1075
+ /**
1076
+ * Adopts a WebRTC connection prefetched by the `stream-prefetch.js` head-script
1077
+ * and parked on `window.__stream`, instead of running `connectToSignaling` from
1078
+ * scratch. Called from the same seam where signalling normally starts
1079
+ * (`connectToSignaling$` effect); if there is nothing ready to adopt it returns
1080
+ * `false` and the caller falls back to the normal connect — strictly additive.
1081
+ */
1082
+ declare class StreamAdoptionService {
1083
+ private readonly store;
1084
+ private readonly signalling;
1085
+ private readonly webRtc;
1086
+ /**
1087
+ * @returns `true` if a ready parked stream was adopted (caller must NOT
1088
+ * start a fresh connection), `false` otherwise.
1089
+ */
1090
+ tryAdopt(): boolean;
1091
+ static ɵfac: i0.ɵɵFactoryDeclaration<StreamAdoptionService, never>;
1092
+ static ɵprov: i0.ɵɵInjectableDeclaration<StreamAdoptionService>;
1093
+ }
1094
+
1042
1095
  declare class StreamStatusTelemetryService extends SubService {
1043
1096
  private readonly videoService;
1044
1097
  private readonly unrealConfig;
@@ -1392,6 +1445,17 @@ declare class WebRtcPlayerService extends SubService {
1392
1445
  * Closes existing PeerConnection and DataChannel, resets negotiation state.
1393
1446
  */
1394
1447
  closePC(): void;
1448
+ /**
1449
+ * Single source of truth for tearing down the remote connection: closes the
1450
+ * signaling WebSocket and then the PeerConnection/DataChannel.
1451
+ *
1452
+ * Called by the `destroyRemoteConnections$` effect and, as a
1453
+ * lifecycle-independent safeguard, by `UnrealSceneComponent.onDestroy` (the
1454
+ * route-scoped effects may already be torn down on navigation). Both close
1455
+ * steps are idempotent, so invoking this twice in one teardown is a harmless
1456
+ * no-op.
1457
+ */
1458
+ releaseRemoteConnections(reason: DisconnectReasonType): void;
1395
1459
  canSend(): boolean | null;
1396
1460
  send(data: ArrayBuffer): void;
1397
1461
  /**
@@ -1406,6 +1470,16 @@ declare class WebRtcPlayerService extends SubService {
1406
1470
  * @returns true if reconnection was initiated, false if signaling is not connected
1407
1471
  */
1408
1472
  reconnectPeer(): boolean;
1473
+ /**
1474
+ * Adopt a fully-negotiated connection prefetched by `stream-prefetch.js`:
1475
+ * take ownership of its PeerConnection, DataChannel and media stream instead
1476
+ * of running the handshake. The head-script attached property-based handlers
1477
+ * (`pc.onicecandidate`, `dc.onmessage`, …) and buffered inbound DC messages;
1478
+ * here we detach those, wire our own (addEventListener-based) handlers, replay
1479
+ * the buffer in order, then drive `onDataChannelConnected` manually because the
1480
+ * DataChannel is already open (its `open` event won't fire again).
1481
+ */
1482
+ adopt(pc: RTCPeerConnection, dc: RTCDataChannel, stream: MediaStream, config: RTCConfiguration, dcBuffer: ArrayBuffer[]): void;
1409
1483
  private setConfig;
1410
1484
  private handlePeerConnectionEvents;
1411
1485
  private setupTransceiversAsync;
@@ -2466,6 +2540,22 @@ declare const showUnrealErrorMessage: node_modules__ngrx_store_types_ngrx_store.
2466
2540
  error?: string;
2467
2541
  } & node_modules__ngrx_store_types_ngrx_store.Action<string>>;
2468
2542
  declare const initSignalling: node_modules__ngrx_store_types_ngrx_store.ActionCreator<string, () => node_modules__ngrx_store_types_ngrx_store.Action<string>>;
2543
+ /**
2544
+ * Dispatched when a prefetched connection parked on `window.__stream` by the
2545
+ * `stream-prefetch.js` head-script is adopted instead of opening a fresh
2546
+ * `connectToSignaling`. Marks cirrus connected and records the adopted machine
2547
+ * in one transaction; the data channel / app-init chain then proceeds via
2548
+ * `dataChannelConnected` dispatched from `WebRtcPlayerService`.
2549
+ *
2550
+ * Deliberately does NOT touch `streamClientCompanyId` / `streamViewId`: the host
2551
+ * app (e.g. metabox) sets those authoritatively from its own data before
2552
+ * `initSignalling`, and the prefetch script's ids are connection-internal only.
2553
+ */
2554
+ declare const streamAdopted: node_modules__ngrx_store_types_ngrx_store.ActionCreator<string, (props: {
2555
+ machineId: string | null;
2556
+ }) => {
2557
+ machineId: string | null;
2558
+ } & node_modules__ngrx_store_types_ngrx_store.Action<string>>;
2469
2559
  declare const startStream: node_modules__ngrx_store_types_ngrx_store.ActionCreator<string, (props: {
2470
2560
  config: Partial<StreamConfig>;
2471
2561
  }) => {
@@ -2562,11 +2652,11 @@ declare class UnrealEffects {
2562
2652
  private readonly commandTelemetryService;
2563
2653
  private readonly regionsPingService;
2564
2654
  private readonly signallingService;
2655
+ private readonly streamAdoptionService;
2565
2656
  private readonly videoService;
2566
2657
  private readonly unrealCallbackService;
2567
2658
  private dataChannelConnectionTimeout;
2568
2659
  private connectionCompleted$;
2569
- private reconnectConfig;
2570
2660
  destroyConnections$: node_modules_rxjs_dist_types.Observable<{
2571
2661
  reason: _3dsource_angular_unreal_module.DisconnectReasonType;
2572
2662
  } & node_modules__ngrx_store_types_ngrx_store.Action<string>> & node_modules__ngrx_effects_types_ngrx_effects.CreateEffectMetadata;
@@ -2634,8 +2724,8 @@ declare class UnrealEffects {
2634
2724
  * Effect: `handleDataChannelClosed$`
2635
2725
  *
2636
2726
  * Triggers peer reconnection when DataChannel closes unexpectedly.
2637
- * Only triggers if reconnection is enabled, onDataChannelClose is true,
2638
- * and the signaling WebSocket is still connected.
2727
+ * Only triggers if reconnection is enabled and the signaling WebSocket
2728
+ * is still connected.
2639
2729
  */
2640
2730
  handleDataChannelClosed$: node_modules_rxjs_dist_types.Observable<{
2641
2731
  attempt: number;
@@ -2838,5 +2928,5 @@ declare const selectUserInactivityDetected: node_modules__ngrx_store_types_ngrx_
2838
2928
  /** Used by external consumers (e.g., metabox). Do not remove. */
2839
2929
  declare const selectIsVideoPlayingAndDataChannelConnected: node_modules__ngrx_store_types_ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2840
2930
 
2841
- export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LoadingProgressService, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, REGION_PING_ACCURATE_SAMPLES, REGION_PING_BACKGROUND_REFRESH_DELAY_MS, REGION_PING_CACHE_KEY, REGION_PING_CACHE_TTL_MS, REGION_PING_WARMUP_DEADLINE_MS, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_AUDIO_ID, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, 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, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_RETRY_PER_INSTANCE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, commandCompleted, commandStarted, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToPercents, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeValuesUniversal, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, provideUnrealState, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsFullyConnected, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectUserInactivityDetected, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setUserInactivityTimeout, setViewportNotReady, setViewportReady, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, showUserInactivityTimeoutPopup, signalingRetryAttempted, smoothTransition, startStream, trackMixpanelEvent, trackTelemetryData, uint8ToBase64, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
2842
- export type { AggregatedStat, AnySignalingMessage, AwsInstance, CandidateMessage, CloseReason, CommandInProgress, ConfigMessage, ConnectionError, ControlSchemeValues, DataFlowCheckResult, DisconnectReasonType, EmittedMilestone, EventId, ForceClientDisconnect, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, ListStreamersMessage, MessageBase, MessageTypeValues, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, PhaseOverlay, PhaseParam, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, ReceivedFile, ReconnectConfig, RequestStream, SSInfo, SelectedIceCandidatePair, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealInitialConfig, UnrealState, WSCloseCodesValues, streamPreparedForUserInteractionMessage };
2931
+ export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LoadingProgressService, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RECONNECT_CONFIG, REGION_PING_ACCURATE_SAMPLES, REGION_PING_BACKGROUND_REFRESH_DELAY_MS, REGION_PING_CACHE_KEY, REGION_PING_CACHE_TTL_MS, REGION_PING_WARMUP_DEADLINE_MS, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_AUDIO_ID, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamAdoptionService, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, 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, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_RETRY_PER_INSTANCE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, commandCompleted, commandStarted, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToPercents, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeValuesUniversal, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, provideUnrealState, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsFullyConnected, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectUserInactivityDetected, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setUserInactivityTimeout, setViewportNotReady, setViewportReady, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, showUserInactivityTimeoutPopup, signalingRetryAttempted, smoothTransition, startStream, streamAdopted, trackMixpanelEvent, trackTelemetryData, uint8ToBase64, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
2932
+ export type { AggregatedStat, AnySignalingMessage, AwsInstance, CandidateMessage, CloseReason, CommandInProgress, ConfigMessage, ConnectionError, ControlSchemeValues, DataFlowCheckResult, DisconnectReasonType, EmittedMilestone, EventId, ForceClientDisconnect, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, ListStreamersMessage, MessageBase, MessageTypeValues, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, ParkedStream, PhaseOverlay, PhaseParam, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, ReceivedFile, RequestStream, SSInfo, SelectedIceCandidatePair, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealInitialConfig, UnrealState, WSCloseCodesValues, streamPreparedForUserInteractionMessage };