@3dsource/angular-unreal-module 0.0.170 → 0.0.172
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/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import * as _3dsource_angular_unreal_module from '@3dsource/angular-unreal-module';
|
|
1
2
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
+
import { Signal, TemplateRef, ElementRef, InjectionToken, DestroyRef, PipeTransform } from '@angular/core';
|
|
3
4
|
import * as _ngrx_store from '@ngrx/store';
|
|
4
5
|
import { Store } from '@ngrx/store';
|
|
5
|
-
import * as _3dsource_angular_unreal_module from '@3dsource/angular-unreal-module';
|
|
6
6
|
import * as rxjs from 'rxjs';
|
|
7
7
|
import { Subject, Observable, Subscription, OperatorFunction } from 'rxjs';
|
|
8
8
|
import * as _ngrx_effects from '@ngrx/effects';
|
|
@@ -11,15 +11,68 @@ import { IKeyCode, ImageOutputValues, Area } from '@3dsource/utils';
|
|
|
11
11
|
import { SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';
|
|
12
12
|
import { MetaBoxCommandPacket, MetaBoxCommandList, MetaBoxCallbackList, FOnSceneStateCallback, FOnFocusObjectCallback, FCameraChangedCallback, FOnObjectTransformChangedCallback, FOnChangeSequenceChangedCallback, FOnFinishSequenceChangedCallback } from '@3dsource/types-unreal';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* What a slot template receives as `let-ctx`. `ngTemplateOutletContext` is keyed,
|
|
16
|
+
* so the payload travels under `$implicit`.
|
|
17
|
+
*/
|
|
18
|
+
interface UnrealSlotTemplateContext<T> {
|
|
19
|
+
$implicit: T;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Values handed to a host template. Everything reactive is a Signal, so the
|
|
23
|
+
* context object itself is created once and never replaced.
|
|
24
|
+
*/
|
|
25
|
+
interface UnrealResumeSlotContext {
|
|
26
|
+
isSecondStart: Signal<boolean | undefined>;
|
|
27
|
+
isAfkDisconnect: Signal<boolean>;
|
|
28
|
+
start(): void;
|
|
29
|
+
}
|
|
30
|
+
interface UnrealAfkSlotContext {
|
|
31
|
+
/** Seconds left before the session times out. */
|
|
32
|
+
countdown: Signal<number>;
|
|
33
|
+
reset(): void;
|
|
34
|
+
}
|
|
35
|
+
interface UnrealStatusSlotContext {
|
|
36
|
+
/** Smoothed loading percentage; undefined until the first value arrives. */
|
|
37
|
+
percents: Signal<number | undefined>;
|
|
38
|
+
message: Signal<string | undefined>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare class UnrealResumeSlotDirective {
|
|
42
|
+
readonly template: TemplateRef<UnrealSlotTemplateContext<UnrealResumeSlotContext>>;
|
|
43
|
+
static ngTemplateContextGuard(_dir: UnrealResumeSlotDirective, _ctx: unknown): _ctx is UnrealSlotTemplateContext<UnrealResumeSlotContext>;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UnrealResumeSlotDirective, never>;
|
|
45
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UnrealResumeSlotDirective, "ng-template[unrealResumeSlot]", never, {}, {}, never, never, true, never>;
|
|
46
|
+
}
|
|
47
|
+
declare class UnrealAfkSlotDirective {
|
|
48
|
+
readonly template: TemplateRef<UnrealSlotTemplateContext<UnrealAfkSlotContext>>;
|
|
49
|
+
static ngTemplateContextGuard(_dir: UnrealAfkSlotDirective, _ctx: unknown): _ctx is UnrealSlotTemplateContext<UnrealAfkSlotContext>;
|
|
50
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UnrealAfkSlotDirective, never>;
|
|
51
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UnrealAfkSlotDirective, "ng-template[unrealAfkSlot]", never, {}, {}, never, never, true, never>;
|
|
52
|
+
}
|
|
53
|
+
declare class UnrealStatusSlotDirective {
|
|
54
|
+
readonly template: TemplateRef<UnrealSlotTemplateContext<UnrealStatusSlotContext>>;
|
|
55
|
+
static ngTemplateContextGuard(_dir: UnrealStatusSlotDirective, _ctx: unknown): _ctx is UnrealSlotTemplateContext<UnrealStatusSlotContext>;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UnrealStatusSlotDirective, never>;
|
|
57
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UnrealStatusSlotDirective, "ng-template[unrealStatusSlot]", never, {}, {}, never, never, true, never>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type AfkSlotTemplate = TemplateRef<UnrealSlotTemplateContext<UnrealAfkSlotContext>>;
|
|
14
61
|
declare class AfkTimeoutModalComponent {
|
|
15
62
|
#private;
|
|
16
63
|
readonly isAfkTimerVisible: i0.Signal<boolean>;
|
|
17
64
|
readonly showAfkTimeoutPopup: i0.Signal<boolean>;
|
|
18
65
|
readonly afkCountdown: i0.Signal<number>;
|
|
19
66
|
readonly isShowAfkPopup: i0.Signal<boolean>;
|
|
67
|
+
readonly uiClasses: i0.InputSignal<Partial<Record<_3dsource_angular_unreal_module.UnrealUiPart, string | string[]>>>;
|
|
68
|
+
readonly contentTemplate: i0.InputSignal<AfkSlotTemplate | null>;
|
|
69
|
+
protected readonly scrimSkin: i0.Signal<string | string[]>;
|
|
70
|
+
protected readonly cardSkin: i0.Signal<string | string[]>;
|
|
71
|
+
protected readonly buttonSkin: i0.Signal<string | string[]>;
|
|
72
|
+
protected readonly slotContext: UnrealAfkSlotContext;
|
|
20
73
|
resetAfk(): void;
|
|
21
74
|
static ɵfac: i0.ɵɵFactoryDeclaration<AfkTimeoutModalComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AfkTimeoutModalComponent, "app-afk-timeout-modal", never, {}, {}, never, never, true, never>;
|
|
75
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AfkTimeoutModalComponent, "app-afk-timeout-modal", never, { "uiClasses": { "alias": "uiClasses"; "required": false; "isSignal": true; }; "contentTemplate": { "alias": "contentTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
76
|
}
|
|
24
77
|
|
|
25
78
|
declare class FreezeFrameComponent {
|
|
@@ -72,6 +125,11 @@ declare class UnrealSceneComponent {
|
|
|
72
125
|
height: number;
|
|
73
126
|
}>;
|
|
74
127
|
readonly changeMouseOverScene: i0.OutputEmitterRef<boolean>;
|
|
128
|
+
/** Host classes replacing the built-in decoration of the scene overlays. */
|
|
129
|
+
readonly uiClasses: i0.InputSignal<Partial<Record<_3dsource_angular_unreal_module.UnrealUiPart, string | string[]>>>;
|
|
130
|
+
protected readonly resumeSlot: i0.Signal<UnrealResumeSlotDirective | undefined>;
|
|
131
|
+
protected readonly afkSlot: i0.Signal<UnrealAfkSlotDirective | undefined>;
|
|
132
|
+
protected readonly statusSlot: i0.Signal<UnrealStatusSlotDirective | undefined>;
|
|
75
133
|
readonly videoElement: i0.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
76
134
|
private readonly resolutionValues$;
|
|
77
135
|
private width;
|
|
@@ -100,7 +158,7 @@ declare class UnrealSceneComponent {
|
|
|
100
158
|
private getResizeStudioValues;
|
|
101
159
|
private sendResize;
|
|
102
160
|
static ɵfac: i0.ɵɵFactoryDeclaration<UnrealSceneComponent, never>;
|
|
103
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UnrealSceneComponent, "app-unreal-scene", never, { "useContainerAsSizeProvider": { "alias": "useContainerAsSizeProvider"; "required": false; "isSignal": true; }; "isStudio": { "alias": "isStudio"; "required": false; "isSignal": true; }; "resolutionSize": { "alias": "resolutionSize"; "required": false; "isSignal": true; }; }, { "changeMouseOverScene": "changeMouseOverScene"; },
|
|
161
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UnrealSceneComponent, "app-unreal-scene", never, { "useContainerAsSizeProvider": { "alias": "useContainerAsSizeProvider"; "required": false; "isSignal": true; }; "isStudio": { "alias": "isStudio"; "required": false; "isSignal": true; }; "resolutionSize": { "alias": "resolutionSize"; "required": false; "isSignal": true; }; "uiClasses": { "alias": "uiClasses"; "required": false; "isSignal": true; }; }, { "changeMouseOverScene": "changeMouseOverScene"; }, ["resumeSlot", "afkSlot", "statusSlot"], ["app-pdf", "app-show-case"], true, never>;
|
|
104
162
|
}
|
|
105
163
|
|
|
106
164
|
declare class IntroSrcComponent {
|
|
@@ -860,6 +918,15 @@ type StreamTelemetryTrackData<K extends StreamTelemetryEventName> = Omit<StreamT
|
|
|
860
918
|
/** Payload a caller supplies to `emitLifecycle()` — `duration` is computed. */
|
|
861
919
|
type StreamTelemetryLifecycleData<K extends StreamTelemetryLifecycleEventName> = Omit<StreamTelemetryEventMap[K], 'userId' | 'duration'>;
|
|
862
920
|
|
|
921
|
+
/**
|
|
922
|
+
* Parts of the module UI a host application can restyle by supplying its own
|
|
923
|
+
* class. Each part has a built-in "skin" class that the host class REPLACES —
|
|
924
|
+
* the positioning class next to it always stays, so the scene layout cannot be
|
|
925
|
+
* broken from the outside.
|
|
926
|
+
*/
|
|
927
|
+
type UnrealUiPart = 'resumeCard' | 'resumeText' | 'resumeButton' | 'afkScrim' | 'afkCard' | 'afkButton' | 'statusCard' | 'statusMessage';
|
|
928
|
+
type UnrealUiClasses = Partial<Record<UnrealUiPart, string | string[]>>;
|
|
929
|
+
|
|
863
930
|
type TelemetryType = 'commandSent' | 'commandStop';
|
|
864
931
|
|
|
865
932
|
interface AggregatedStat {
|
|
@@ -1362,6 +1429,7 @@ declare class SignallingService extends SubService {
|
|
|
1362
1429
|
abort$: Observable<_ngrx_store.Action<string>>;
|
|
1363
1430
|
private ws;
|
|
1364
1431
|
private controlWs;
|
|
1432
|
+
private handedOverControlWs;
|
|
1365
1433
|
orchestrationRetrySub?: Subscription;
|
|
1366
1434
|
orchestrationRetryCount: number;
|
|
1367
1435
|
private wsMsgHandlers;
|
|
@@ -1370,43 +1438,26 @@ declare class SignallingService extends SubService {
|
|
|
1370
1438
|
protected init(): void;
|
|
1371
1439
|
connectToSignaling(urlList: string[]): Observable<WebSocket>;
|
|
1372
1440
|
/**
|
|
1373
|
-
* One inner cycle:
|
|
1374
|
-
* {@link
|
|
1375
|
-
*
|
|
1376
|
-
* urlGen lives in this closure so retries advance through the
|
|
1377
|
-
* pool. Exhaustion bubbles to {@link connectToSignaling}'s outer
|
|
1378
|
-
* retry which re-pings the region.
|
|
1441
|
+
* One inner cycle: {@link requestCirrus} → {@link connectToCirrus}, retried up to
|
|
1442
|
+
* {@link INNER_RETRY_LIMIT}. `urlGen` lives in this closure so retries advance
|
|
1443
|
+
* through the pool; exhaustion bubbles to the outer region-repick retry.
|
|
1379
1444
|
*/
|
|
1380
1445
|
private connectAttempt;
|
|
1381
1446
|
/**
|
|
1382
|
-
* Status message
|
|
1383
|
-
* `
|
|
1384
|
-
*
|
|
1385
|
-
*
|
|
1386
|
-
*
|
|
1387
|
-
* `StreamStatusTelemetryService2` starts a session on that boundary, the
|
|
1388
|
-
* first session was killed 2 ms in as `restart` — losing the only honest
|
|
1389
|
-
* page-load measurement and the prefetch adoption with it.
|
|
1447
|
+
* Status message only — must NOT dispatch `setEstablishingConnection`, which
|
|
1448
|
+
* `UnrealEffects.connectToSignaling$` already emits once per logical attempt for
|
|
1449
|
+
* both branches. Dispatching it here too fired that boundary twice on cold start,
|
|
1450
|
+
* and `StreamStatusTelemetryService2` starts a session on it — so the first
|
|
1451
|
+
* session died 2 ms in as `restart`, taking the page-load measurement with it.
|
|
1390
1452
|
*/
|
|
1391
1453
|
protected startEstablishingConnection(): void;
|
|
1392
1454
|
private adaptUrlsToRegion;
|
|
1393
1455
|
/**
|
|
1394
|
-
* Ask the orchestration for a Cirrus to connect to. All three
|
|
1395
|
-
*
|
|
1396
|
-
*
|
|
1397
|
-
*
|
|
1398
|
-
*
|
|
1399
|
-
*
|
|
1400
|
-
* | Method | Transport | Fails on |
|
|
1401
|
-
* | -------------------------- | -------------------- | ------------------------------ |
|
|
1402
|
-
* | {@link requestCirrusViaPolling} | HTTP poll loop | HTTP 4xx (dead URL) |
|
|
1403
|
-
* | {@link requestCirrusViaSocket} | control WS | socket drop / no `instanceReady` in {@link INSTANCE_READY_TIMEOUT} |
|
|
1404
|
-
* | {@link requestCirrusDirect} | none (dev) | never — nothing is requested |
|
|
1405
|
-
*
|
|
1406
|
-
* Whatever they return goes through the SAME downstream in
|
|
1407
|
-
* {@link connectAttempt}: `setAwsInstance` → `connectToCirrus` → the WS-only
|
|
1408
|
-
* and URL-rotating retry tiers. A failure inside any of them is just an
|
|
1409
|
-
* error on this observable, so those tiers handle it uniformly.
|
|
1456
|
+
* Ask the orchestration for a Cirrus to connect to. All three implementations
|
|
1457
|
+
* answer the same question — which Cirrus, with which `streamRequestId` — and emit
|
|
1458
|
+
* ONE `AwsInstance` whose `wsUrl` is a Cirrus address, so {@link connectAttempt}
|
|
1459
|
+
* treats them uniformly: a failure in any of them is just an error here, which its
|
|
1460
|
+
* retry tiers already handle. Per-transport failure surface: SIGNALLING.md.
|
|
1410
1461
|
*/
|
|
1411
1462
|
private requestCirrus;
|
|
1412
1463
|
/** True when `requestStream` can be composed → new orchestration. */
|
|
@@ -1423,38 +1474,32 @@ declare class SignallingService extends SubService {
|
|
|
1423
1474
|
*/
|
|
1424
1475
|
private requestCirrusDirect;
|
|
1425
1476
|
/**
|
|
1426
|
-
* HTTP-orchestration path. Brackets {@link pollLoop} with
|
|
1427
|
-
* `
|
|
1428
|
-
*
|
|
1429
|
-
* last response captured in the closure). Maps the final ready
|
|
1430
|
-
* response to an `AwsInstance`.
|
|
1477
|
+
* HTTP-orchestration path. Brackets {@link pollLoop} with `pollingStarted`/
|
|
1478
|
+
* `pollingEnded` and the `EXT-getSignaling` telemetry span (started in `defer`,
|
|
1479
|
+
* stopped in `finalize` with the last response from the closure).
|
|
1431
1480
|
*/
|
|
1432
1481
|
private requestCirrusViaPolling;
|
|
1433
1482
|
/**
|
|
1434
|
-
* WS-orchestration path — the socket
|
|
1435
|
-
*
|
|
1436
|
-
* `
|
|
1437
|
-
* IS the Cirrus address.
|
|
1483
|
+
* WS-orchestration path — the socket twin of {@link requestCirrusViaPolling}.
|
|
1484
|
+
* Opens the control socket, sends `requestStream`, waits for `instanceReady`
|
|
1485
|
+
* whose `originInstanceUri` IS the Cirrus address.
|
|
1438
1486
|
*
|
|
1439
|
-
*
|
|
1440
|
-
*
|
|
1441
|
-
*
|
|
1442
|
-
*
|
|
1443
|
-
* - no `instanceReady` within {@link INSTANCE_READY_TIMEOUT} → error
|
|
1444
|
-
*
|
|
1445
|
-
* The control socket lives exactly as long as this wait — see
|
|
1446
|
-
* {@link awaitInstanceReady}.
|
|
1487
|
+
* Both failure modes — socket drop before `instanceReady`, or no `instanceReady`
|
|
1488
|
+
* within {@link INSTANCE_READY_TIMEOUT} — must surface as a plain error so
|
|
1489
|
+
* `connectAttempt`'s retry tiers see them; without that a dead control socket
|
|
1490
|
+
* hangs the session silently. See {@link awaitInstanceReady}.
|
|
1447
1491
|
*/
|
|
1448
1492
|
private requestCirrusViaSocket;
|
|
1449
1493
|
/**
|
|
1450
1494
|
* Send `requestStream` on the freshly opened control socket and resolve with
|
|
1451
1495
|
* the machine coordinates from `instanceReady`.
|
|
1452
1496
|
*
|
|
1453
|
-
*
|
|
1454
|
-
* failures of the request
|
|
1455
|
-
*
|
|
1456
|
-
*
|
|
1457
|
-
*
|
|
1497
|
+
* A race between one answer and two failure signals — until `instanceReady` the
|
|
1498
|
+
* socket's close/error are HARD failures of the request. On success it is handed
|
|
1499
|
+
* over, not closed: {@link handOverControlWs}.
|
|
1500
|
+
*
|
|
1501
|
+
* `on*` properties rather than `fromEvent`: that is how the rest of the file
|
|
1502
|
+
* attaches, and how `teardownSocket` detaches.
|
|
1458
1503
|
*/
|
|
1459
1504
|
private awaitInstanceReady;
|
|
1460
1505
|
/**
|
|
@@ -1468,38 +1513,49 @@ declare class SignallingService extends SubService {
|
|
|
1468
1513
|
* | HTTP 4xx (except 429) | ❌ Hard | Re-throw → caller rotates URL |
|
|
1469
1514
|
* | HTTP 5xx / 429 / timeout / network | ⚠️ Soft | `EMPTY` → `repeat` same URL |
|
|
1470
1515
|
*
|
|
1471
|
-
* `data.error` is NOT
|
|
1472
|
-
*
|
|
1473
|
-
* are HTTP 4xx and `abort$` upstream.
|
|
1516
|
+
* `data.error` is NOT fatal — the backend reuses it for progress strings like
|
|
1517
|
+
* `"Ready in ~2m 23s"`. Only HTTP 4xx and upstream `abort$` are fatal.
|
|
1474
1518
|
*/
|
|
1475
1519
|
private pollLoop;
|
|
1476
1520
|
private connectToCirrus;
|
|
1477
1521
|
/**
|
|
1478
|
-
* Handlers for the CIRRUS socket — the only
|
|
1479
|
-
*
|
|
1480
|
-
*
|
|
1522
|
+
* Handlers for the CIRRUS socket — the only socket whose close/error are real
|
|
1523
|
+
* stream events (`setCirrusDisconnected` / `dropConnection`). The control socket
|
|
1524
|
+
* outlives {@link awaitInstanceReady} too, but with a log-only `onclose`.
|
|
1481
1525
|
*/
|
|
1482
1526
|
private addWsHandlers;
|
|
1483
1527
|
/**
|
|
1484
|
-
* Adopt a live
|
|
1485
|
-
*
|
|
1486
|
-
*
|
|
1487
|
-
*
|
|
1488
|
-
* `setCirrusConnected` + re-`sendRequestStream`). Reuses the head-script's
|
|
1489
|
-
* `correlationId` so subsequent correlated messages line up.
|
|
1528
|
+
* Adopt a live socket from the `stream-prefetch.js` head-script. Already OPEN with
|
|
1529
|
+
* `requestStream` sent, so unlike {@link addWsHandlers} this skips
|
|
1530
|
+
* {@link OnOpenHandler} (which would re-`setCirrusConnected`). Reuses the
|
|
1531
|
+
* head-script's `correlationId` so correlated messages line up.
|
|
1490
1532
|
*/
|
|
1491
1533
|
adoptSocket(ws: WebSocket, correlationId: string): void;
|
|
1492
1534
|
private showStatusMessage;
|
|
1493
1535
|
/**
|
|
1494
|
-
*
|
|
1495
|
-
*
|
|
1496
|
-
*
|
|
1497
|
-
*
|
|
1536
|
+
* Abort/teardown: closes the Cirrus socket AND the control one, handed over or
|
|
1537
|
+
* not (`abort$` fans in `setCirrusDisconnected` / `dropConnection` /
|
|
1538
|
+
* `destroyUnrealScene`). A new attempt inside a live cycle uses
|
|
1539
|
+
* {@link closeCirrus}, so it does not kill the socket that produced the address
|
|
1540
|
+
* it is about to connect to.
|
|
1498
1541
|
*/
|
|
1499
1542
|
close(data: CloseReason): void;
|
|
1500
1543
|
/** Close only the Cirrus signalling socket. */
|
|
1501
1544
|
private closeCirrus;
|
|
1545
|
+
/**
|
|
1546
|
+
* No control socket survives this — the live one AND one left open by a handover,
|
|
1547
|
+
* so callers need no extra knowledge about which state it is in.
|
|
1548
|
+
*/
|
|
1502
1549
|
private teardownControlWs;
|
|
1550
|
+
/**
|
|
1551
|
+
* Handover, not teardown: strip the handlers, leave the socket OPEN for
|
|
1552
|
+
* orchestration to close (SIGNALLING.md). Moving it out of `controlWs` is what
|
|
1553
|
+
* closes the send path; dropping `onmessage` is what stops a late `error`
|
|
1554
|
+
* (4001/4002) from arming a resend and reserving a second machine.
|
|
1555
|
+
*
|
|
1556
|
+
* Takes the socket explicitly so it is provably the caller's.
|
|
1557
|
+
*/
|
|
1558
|
+
private handOverControlWs;
|
|
1503
1559
|
private teardownSocket;
|
|
1504
1560
|
/**
|
|
1505
1561
|
* Player signalling (offer/answer/iceCandidate/pong/p2pEstablished/subscribe)
|
|
@@ -1511,31 +1567,28 @@ declare class SignallingService extends SubService {
|
|
|
1511
1567
|
private sendTo;
|
|
1512
1568
|
protected handleMessage(msg: MessageBase): void;
|
|
1513
1569
|
/**
|
|
1514
|
-
* One
|
|
1515
|
-
*
|
|
1516
|
-
* split by origin: {@link setOrchestrationHandlers} (control socket) and
|
|
1517
|
-
* {@link setStreamHandlers} (Cirrus).
|
|
1570
|
+
* One map shared by both sockets — `handleMessage` dispatches purely by type, so
|
|
1571
|
+
* registration is split by origin only for readability.
|
|
1518
1572
|
*
|
|
1519
|
-
* Keepalive is deliberately absent: both servers ping at the WS **protocol**
|
|
1520
|
-
*
|
|
1521
|
-
*
|
|
1522
|
-
*
|
|
1523
|
-
* not-yet-updated backend is simply ignored.
|
|
1573
|
+
* Keepalive is deliberately absent: both servers ping at the WS **protocol** level,
|
|
1574
|
+
* which the browser answers itself, so the page must never reply with an
|
|
1575
|
+
* application-level `pong`. An unregistered type is dropped silently, so a `ping`
|
|
1576
|
+
* from a not-yet-updated backend is simply ignored.
|
|
1524
1577
|
*/
|
|
1525
1578
|
private setMessageHandlers;
|
|
1526
1579
|
/**
|
|
1527
1580
|
* Messages from the ORCHESTRATION control socket. Only reachable during the
|
|
1528
|
-
* provisioning wait
|
|
1529
|
-
* `
|
|
1581
|
+
* provisioning wait: the socket outlives `instanceReady`, but `handOverControlWs`
|
|
1582
|
+
* drops its `onmessage`, so nothing routes here afterwards.
|
|
1530
1583
|
*/
|
|
1531
1584
|
private setOrchestrationHandlers;
|
|
1532
1585
|
/** Messages from the CIRRUS socket — the actual stream signalling. */
|
|
1533
1586
|
private setStreamHandlers;
|
|
1534
1587
|
protected sendRequestStream(): void;
|
|
1535
1588
|
/**
|
|
1536
|
-
*
|
|
1537
|
-
*
|
|
1538
|
-
*
|
|
1589
|
+
* Cirrus only — the control socket's state says nothing about the stream
|
|
1590
|
+
* (orchestration closes it once the instance is occupied), so it must stay out
|
|
1591
|
+
* of this gate.
|
|
1539
1592
|
*/
|
|
1540
1593
|
isConnected(): boolean;
|
|
1541
1594
|
private getRegion;
|
|
@@ -2533,6 +2586,13 @@ declare function makeEven(value: number): number;
|
|
|
2533
2586
|
*/
|
|
2534
2587
|
declare function isMetaboxMode(config: UnrealInitialConfig | null | undefined): boolean;
|
|
2535
2588
|
|
|
2589
|
+
/**
|
|
2590
|
+
* Picks the class that carries the decoration of a UI part: the host class when
|
|
2591
|
+
* one is supplied, the built-in one otherwise. An empty string counts as "not
|
|
2592
|
+
* supplied" so a part never ends up with no styling at all.
|
|
2593
|
+
*/
|
|
2594
|
+
declare function resolveSkin(classes: UnrealUiClasses, part: UnrealUiPart, fallback: string): string | string[];
|
|
2595
|
+
|
|
2536
2596
|
declare class SafePipe implements PipeTransform {
|
|
2537
2597
|
private sanitizer;
|
|
2538
2598
|
transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
|
|
@@ -3189,9 +3249,9 @@ declare const unrealFeature: {
|
|
|
3189
3249
|
reducer: _ngrx_store.ActionReducer<_3dsource_angular_unreal_module.UnrealState, _ngrx_store.Action<string>>;
|
|
3190
3250
|
selectUnrealFeatureState: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.UnrealState>;
|
|
3191
3251
|
selectAdopted: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
|
|
3252
|
+
selectStatusMessage: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
|
|
3192
3253
|
selectFreezeFrame: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
|
|
3193
3254
|
selectIsVideoPlaying: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
|
|
3194
|
-
selectStatusMessage: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
|
|
3195
3255
|
selectEnvironmentId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
|
|
3196
3256
|
selectStreamRequestContext: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamRequestContext | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamRequestContext | null>;
|
|
3197
3257
|
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>;
|
|
@@ -3349,5 +3409,5 @@ declare const selectUserInactivityDetected: _ngrx_store.MemoizedSelector<Record<
|
|
|
3349
3409
|
/** Used by external consumers (e.g., metabox). Do not remove. */
|
|
3350
3410
|
declare const selectIsVideoPlayingAndDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
|
|
3351
3411
|
|
|
3352
|
-
export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DESTROY_DISCONNECT_REASONS, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, INSTANCE_READY_TIMEOUT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, LatencyTimings, LoadingProgressService, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, 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, isMetaboxMode, 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, startStream, streamAdopted, trackMixpanelEvent, trackTelemetryData, uint8ToBase64, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
|
|
3353
|
-
export type { AggregatedStat, AnySignalingMessage, AwsInstance, BootstrapInfo, CandidateMessage, CirrusRequestKind, CloseReason, CommandInProgress, ConfigMessage, ConnectionError, ControlSchemeValues, DisconnectReasonType, EmittedMilestone, EventId, FpsLowData, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, ListStreamersMessage, MessageBase, MessageTypeValues, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, ParkedStream, PhaseEndedData, PhaseOverlay, PhaseParam, PlayerCountMessage, PollingOrchestrationMessage, Quality, QualityAnomalyData, RequestStream, ResourceBucket, ResourceTotals, SSInfo, SampleData, SelectedIceCandidatePair, SessionEndReason, SessionEndedData, SessionStartedData, SignalingData, SignalingMessageHandler, SignalingMessageMap, SignalingRetryData, SignalingRetryKind, SlowResource, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamTelemetryEvent, StreamTelemetryEventMap, StreamTelemetryEventName, StreamTelemetryLifecycleData, StreamTelemetryLifecycleEventName, StreamTelemetryTrackData, StreamerListMessage, TelemetryEventEnvelope, TelemetryLifecycleEnvelope, TelemetryType, UnknownFields, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealInitialConfig, UnrealMode, UnrealState, WSCloseCodesValues, WindowAggregate };
|
|
3412
|
+
export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DESTROY_DISCONNECT_REASONS, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, INSTANCE_READY_TIMEOUT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, LatencyTimings, LoadingProgressService, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, 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, UnrealAfkSlotDirective, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealResumeSlotDirective, UnrealSceneComponent, UnrealStatusMessage, UnrealStatusSlotDirective, 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, isMetaboxMode, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, provideUnrealState, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, resolveSkin, 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, startStream, streamAdopted, trackMixpanelEvent, trackTelemetryData, uint8ToBase64, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
|
|
3413
|
+
export type { AggregatedStat, AnySignalingMessage, AwsInstance, BootstrapInfo, CandidateMessage, CirrusRequestKind, CloseReason, CommandInProgress, ConfigMessage, ConnectionError, ControlSchemeValues, DisconnectReasonType, EmittedMilestone, EventId, FpsLowData, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, ListStreamersMessage, MessageBase, MessageTypeValues, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, ParkedStream, PhaseEndedData, PhaseOverlay, PhaseParam, PlayerCountMessage, PollingOrchestrationMessage, Quality, QualityAnomalyData, RequestStream, ResourceBucket, ResourceTotals, SSInfo, SampleData, SelectedIceCandidatePair, SessionEndReason, SessionEndedData, SessionStartedData, SignalingData, SignalingMessageHandler, SignalingMessageMap, SignalingRetryData, SignalingRetryKind, SlowResource, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamTelemetryEvent, StreamTelemetryEventMap, StreamTelemetryEventName, StreamTelemetryLifecycleData, StreamTelemetryLifecycleEventName, StreamTelemetryTrackData, StreamerListMessage, TelemetryEventEnvelope, TelemetryLifecycleEnvelope, TelemetryType, UnknownFields, UnrealAfkSlotContext, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealInitialConfig, UnrealMode, UnrealResumeSlotContext, UnrealSlotTemplateContext, UnrealState, UnrealStatusSlotContext, UnrealUiClasses, UnrealUiPart, WSCloseCodesValues, WindowAggregate };
|