@3dsource/angular-unreal-module 0.0.158 → 0.0.159

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/LICENSE CHANGED
@@ -1,14 +1,14 @@
1
- Copyright (c) 2025 3dsource
2
- All Rights Reserved.
3
-
4
- This software and associated documentation files (the “Software”) are proprietary
5
- and confidential. Unauthorized copying, modification, distribution, or any other
6
- use of the Software, in whole or in part, without the prior written consent of
7
- the copyright holder is strictly prohibited.
8
-
9
- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
10
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11
- FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
12
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
13
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
14
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2025 3dsource
2
+ All Rights Reserved.
3
+
4
+ This software and associated documentation files (the “Software”) are proprietary
5
+ and confidential. Unauthorized copying, modification, distribution, or any other
6
+ use of the Software, in whole or in part, without the prior written consent of
7
+ the copyright holder is strictly prohibited.
8
+
9
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
10
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
12
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
13
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
14
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,212 +1,212 @@
1
- # @3dsource/angular-unreal-module
2
-
3
- Standalone Angular integration for Unreal Engine Pixel Streaming. The package
4
- provides the scene component, WebRTC and signalling lifecycle, NgRx state,
5
- command/callback APIs, reconnection, file transfer and telemetry.
6
-
7
- ## Requirements
8
-
9
- - Angular, Angular CDK and Angular Forms `>=19.0.0 <23.0.0`
10
- - NgRx Store and Effects `>=19.0.0 <23.0.0`
11
- - RxJS `>=7.8.0 <8.0.0`
12
- - `@3dsource/source-ui-native >=1.0.9`
13
- - `@3dsource/types-unreal >=0.0.7`
14
- - `@3dsource/utils >=1.0.21`
15
- - `provideHttpClient()` in the host application
16
-
17
- ## Installation
18
-
19
- ```shell
20
- pnpm add @3dsource/angular-unreal-module @3dsource/source-ui-native @3dsource/types-unreal @3dsource/utils
21
- ```
22
-
23
- The package is standalone and does not expose an NgModule.
24
-
25
- ## Setup
26
-
27
- ### 1. Register state and configuration once
28
-
29
- Add the Unreal feature state, HTTP client and configuration at the application
30
- root. `UNREAL_CONFIG` is required, although all its fields are optional.
31
-
32
- <!-- prettier-ignore -->
33
- ```typescript
34
- import { provideHttpClient } from '@angular/common/http';
35
- import type { ApplicationConfig } from '@angular/core';
36
- import { provideStore } from '@ngrx/store';
37
- import {
38
- provideUnrealState,
39
- UNREAL_CONFIG,
40
- type UnrealInitialConfig,
41
- } from '@3dsource/angular-unreal-module';
42
-
43
- const unrealConfig = {
44
- regionsPingUrl: 'https://datacenter.3dsource.com/regions/',
45
- dataChannelConnectionTimeout: 8000,
46
- fpsMonitor: false,
47
- autoHighResolution: false,
48
- } satisfies UnrealInitialConfig;
49
-
50
- export const appConfig: ApplicationConfig = {
51
- providers: [
52
- provideHttpClient(),
53
- provideStore(),
54
- provideUnrealState(),
55
- { provide: UNREAL_CONFIG, useValue: unrealConfig },
56
- ],
57
- };
58
- ```
59
-
60
- Omit `provideStore()` when the root NgRx store is already configured.
61
-
62
- Available configuration fields:
63
-
64
- | Field | Purpose |
65
- | ------------------------------ | ---------------------------------------------- |
66
- | `regionsPingUrl` | Region latency endpoint |
67
- | `dataChannelConnectionTimeout` | DataChannel connection timeout in ms |
68
- | `customErrorsEndpoint` | Custom error reporting endpoint |
69
- | `commandTelemetryReceiver` | Command telemetry endpoint |
70
- | `streamTelemetryV2Url` | Stream lifecycle telemetry endpoint |
71
- | `screenLockerContainerId` | Container used by the screen-locker overlay |
72
- | `fpsMonitor` | Enables FPS monitoring |
73
- | `autoHighResolution` | Raises resolution after the scene becomes idle |
74
- | `playwright` | Enables the test-specific service behaviour |
75
-
76
- Use `{ provide: UNREAL_CONFIG, useValue: {} }` for the minimal configuration.
77
-
78
- ### 2. Boot the engine on a lazy route
79
-
80
- Lazy-load the route file from the application router:
81
-
82
- <!-- prettier-ignore -->
83
- ```typescript
84
- import type { Routes } from '@angular/router';
85
-
86
- export const APP_ROUTES: Routes = [
87
- {
88
- path: 'stream',
89
- loadChildren: () =>
90
- import('./stream/stream.routes').then((module) => module.STREAM_ROUTES),
91
- },
92
- ];
93
- ```
94
-
95
- Register `provideUnrealModule()` inside that lazy route file:
96
-
97
- <!-- prettier-ignore -->
98
- ```typescript
99
- import type { Routes } from '@angular/router';
100
- import { provideUnrealModule } from '@3dsource/angular-unreal-module';
101
- import { StreamComponent } from './stream.component';
102
-
103
- export const STREAM_ROUTES: Routes = [
104
- {
105
- path: '',
106
- component: StreamComponent,
107
- providers: [provideUnrealModule()],
108
- },
109
- ];
110
- ```
111
-
112
- Keep `provideUnrealState()` and `UNREAL_CONFIG` at the application root.
113
- The `loadChildren()` boundary keeps the streaming engine out of the initial
114
- bundle. Route-scoping `provideUnrealModule()` tears down its effects when the
115
- route is left.
116
-
117
- ### 3. Render the scene
118
-
119
- ```typescript
120
- import { ChangeDetectionStrategy, Component } from '@angular/core';
121
- import { UnrealSceneComponent } from '@3dsource/angular-unreal-module';
122
-
123
- @Component({
124
- selector: 'app-stream',
125
- imports: [UnrealSceneComponent],
126
- template: `<app-unreal-scene />`,
127
- changeDetection: ChangeDetectionStrategy.OnPush,
128
- })
129
- export class StreamComponent {}
130
- ```
131
-
132
- `UnrealSceneComponent` also accepts `isStudio`,
133
- `useContainerAsSizeProvider` and `resolutionSize` inputs, and emits
134
- `changeMouseOverScene`.
135
-
136
- ## Main API
137
-
138
- - `provideUnrealState()` — registers the `unrealFeature` NgRx state.
139
- - `provideUnrealModule()` — registers effects and boots streaming services.
140
- - `UnrealSceneComponent` — renders and manages the Pixel Streaming scene.
141
- - `UnrealCommunicatorService` — sends commands and UI interactions.
142
- - `UnrealCallbackService` — observes Unreal callbacks and command responses.
143
- - `unrealFeature`, exported selectors and actions — expose connection and scene
144
- lifecycle state.
145
- - `FileReceiverService` and `FileHandlerService` — receive files over the
146
- DataChannel.
147
-
148
- Command packet types are provided by `@3dsource/types-unreal`.
149
-
150
- Run `pnpm demo:start` from the repository root to see the scene component in
151
- the demo application.
152
-
153
- ## Optional prefetch scripts
154
-
155
- The package publishes two dependency-free scripts for use in the document
156
- `<head>` before Angular starts:
157
-
158
- - `region-ping-prefetch.js` measures regions early and caches the closest one.
159
- - `stream-prefetch.js` opens and parks an eligible WebRTC connection so Angular
160
- can adopt it after bootstrap.
161
-
162
- <!-- prettier-ignore -->
163
- ```html
164
- <script
165
- src="https://cdn.jsdelivr.net/npm/@3dsource/angular-unreal-module/js/region-ping-prefetch.js"
166
- async
167
- ></script>
168
- <script
169
- src="https://cdn.jsdelivr.net/npm/@3dsource/angular-unreal-module/js/stream-prefetch.js"
170
- async
171
- ></script>
172
- ```
173
-
174
- `stream-prefetch.js` runs by default only on
175
- `metabox-configurator/{modular|basic}/...` routes. It reads the same-origin
176
- `assets/config.json`; override that path with `data-config-url` when needed.
177
- Pin an exact package version in production when deterministic CDN assets are
178
- required.
179
-
180
- ## Repository development
181
-
182
- Run commands from the repository root:
183
-
184
- ```shell
185
- pnpm unreal:build
186
- pnpm unreal:build:watch
187
- pnpm unreal:lint
188
- pnpm unreal:test
189
- pnpm unreal:test:watch
190
- pnpm unreal:test:signalling
191
- pnpm unreal:test:signalling:leaks
192
- ```
193
-
194
- `unreal:build` builds the local `source-ui-native`, `types-unreal` and `utils`
195
- dependencies before this package.
196
-
197
- Release commands publish only this package:
198
-
199
- ```shell
200
- pnpm unreal:release:patch
201
- pnpm unreal:release:dev
202
- ```
203
-
204
- After a successful publish, the release automatically purges the matching
205
- jsDelivr tag. Retry a failed purge without rerunning the release:
206
-
207
- ```shell
208
- pnpm unreal:purge-cdn -- latest
209
- pnpm unreal:purge-cdn -- dev
210
- ```
211
-
212
- Repository tooling requires Node.js 24.16.0 or newer and pnpm 11.17.0.
1
+ # @3dsource/angular-unreal-module
2
+
3
+ Standalone Angular integration for Unreal Engine Pixel Streaming. The package
4
+ provides the scene component, WebRTC and signalling lifecycle, NgRx state,
5
+ command/callback APIs, reconnection, file transfer and telemetry.
6
+
7
+ ## Requirements
8
+
9
+ - Angular, Angular CDK and Angular Forms `>=19.0.0 <23.0.0`
10
+ - NgRx Store and Effects `>=19.0.0 <23.0.0`
11
+ - RxJS `>=7.8.0 <8.0.0`
12
+ - `@3dsource/source-ui-native >=1.0.9`
13
+ - `@3dsource/types-unreal >=0.0.7`
14
+ - `@3dsource/utils >=1.0.21`
15
+ - `provideHttpClient()` in the host application
16
+
17
+ ## Installation
18
+
19
+ ```shell
20
+ pnpm add @3dsource/angular-unreal-module @3dsource/source-ui-native @3dsource/types-unreal @3dsource/utils
21
+ ```
22
+
23
+ The package is standalone and does not expose an NgModule.
24
+
25
+ ## Setup
26
+
27
+ ### 1. Register state and configuration once
28
+
29
+ Add the Unreal feature state, HTTP client and configuration at the application
30
+ root. `UNREAL_CONFIG` is required, although all its fields are optional.
31
+
32
+ <!-- prettier-ignore -->
33
+ ```typescript
34
+ import { provideHttpClient } from '@angular/common/http';
35
+ import type { ApplicationConfig } from '@angular/core';
36
+ import { provideStore } from '@ngrx/store';
37
+ import {
38
+ provideUnrealState,
39
+ UNREAL_CONFIG,
40
+ type UnrealInitialConfig,
41
+ } from '@3dsource/angular-unreal-module';
42
+
43
+ const unrealConfig = {
44
+ regionsPingUrl: 'https://datacenter.3dsource.com/regions/',
45
+ dataChannelConnectionTimeout: 8000,
46
+ fpsMonitor: false,
47
+ autoHighResolution: false,
48
+ } satisfies UnrealInitialConfig;
49
+
50
+ export const appConfig: ApplicationConfig = {
51
+ providers: [
52
+ provideHttpClient(),
53
+ provideStore(),
54
+ provideUnrealState(),
55
+ { provide: UNREAL_CONFIG, useValue: unrealConfig },
56
+ ],
57
+ };
58
+ ```
59
+
60
+ Omit `provideStore()` when the root NgRx store is already configured.
61
+
62
+ Available configuration fields:
63
+
64
+ | Field | Purpose |
65
+ | ------------------------------ | ---------------------------------------------- |
66
+ | `regionsPingUrl` | Region latency endpoint |
67
+ | `dataChannelConnectionTimeout` | DataChannel connection timeout in ms |
68
+ | `customErrorsEndpoint` | Custom error reporting endpoint |
69
+ | `commandTelemetryReceiver` | Command telemetry endpoint |
70
+ | `streamTelemetryV2Url` | Stream lifecycle telemetry endpoint |
71
+ | `screenLockerContainerId` | Container used by the screen-locker overlay |
72
+ | `fpsMonitor` | Enables FPS monitoring |
73
+ | `autoHighResolution` | Raises resolution after the scene becomes idle |
74
+ | `playwright` | Enables the test-specific service behaviour |
75
+
76
+ Use `{ provide: UNREAL_CONFIG, useValue: {} }` for the minimal configuration.
77
+
78
+ ### 2. Boot the engine on a lazy route
79
+
80
+ Lazy-load the route file from the application router:
81
+
82
+ <!-- prettier-ignore -->
83
+ ```typescript
84
+ import type { Routes } from '@angular/router';
85
+
86
+ export const APP_ROUTES: Routes = [
87
+ {
88
+ path: 'stream',
89
+ loadChildren: () =>
90
+ import('./stream/stream.routes').then((module) => module.STREAM_ROUTES),
91
+ },
92
+ ];
93
+ ```
94
+
95
+ Register `provideUnrealModule()` inside that lazy route file:
96
+
97
+ <!-- prettier-ignore -->
98
+ ```typescript
99
+ import type { Routes } from '@angular/router';
100
+ import { provideUnrealModule } from '@3dsource/angular-unreal-module';
101
+ import { StreamComponent } from './stream.component';
102
+
103
+ export const STREAM_ROUTES: Routes = [
104
+ {
105
+ path: '',
106
+ component: StreamComponent,
107
+ providers: [provideUnrealModule()],
108
+ },
109
+ ];
110
+ ```
111
+
112
+ Keep `provideUnrealState()` and `UNREAL_CONFIG` at the application root.
113
+ The `loadChildren()` boundary keeps the streaming engine out of the initial
114
+ bundle. Route-scoping `provideUnrealModule()` tears down its effects when the
115
+ route is left.
116
+
117
+ ### 3. Render the scene
118
+
119
+ ```typescript
120
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
121
+ import { UnrealSceneComponent } from '@3dsource/angular-unreal-module';
122
+
123
+ @Component({
124
+ selector: 'app-stream',
125
+ imports: [UnrealSceneComponent],
126
+ template: `<app-unreal-scene />`,
127
+ changeDetection: ChangeDetectionStrategy.OnPush,
128
+ })
129
+ export class StreamComponent {}
130
+ ```
131
+
132
+ `UnrealSceneComponent` also accepts `isStudio`,
133
+ `useContainerAsSizeProvider` and `resolutionSize` inputs, and emits
134
+ `changeMouseOverScene`.
135
+
136
+ ## Main API
137
+
138
+ - `provideUnrealState()` — registers the `unrealFeature` NgRx state.
139
+ - `provideUnrealModule()` — registers effects and boots streaming services.
140
+ - `UnrealSceneComponent` — renders and manages the Pixel Streaming scene.
141
+ - `UnrealCommunicatorService` — sends commands and UI interactions.
142
+ - `UnrealCallbackService` — observes Unreal callbacks and command responses.
143
+ - `unrealFeature`, exported selectors and actions — expose connection and scene
144
+ lifecycle state.
145
+ - `FileReceiverService` and `FileHandlerService` — receive files over the
146
+ DataChannel.
147
+
148
+ Command packet types are provided by `@3dsource/types-unreal`.
149
+
150
+ Run `pnpm demo:start` from the repository root to see the scene component in
151
+ the demo application.
152
+
153
+ ## Optional prefetch scripts
154
+
155
+ The package publishes two dependency-free scripts for use in the document
156
+ `<head>` before Angular starts:
157
+
158
+ - `region-ping-prefetch.js` measures regions early and caches the closest one.
159
+ - `stream-prefetch.js` opens and parks an eligible WebRTC connection so Angular
160
+ can adopt it after bootstrap.
161
+
162
+ <!-- prettier-ignore -->
163
+ ```html
164
+ <script
165
+ src="https://cdn.jsdelivr.net/npm/@3dsource/angular-unreal-module/js/region-ping-prefetch.js"
166
+ async
167
+ ></script>
168
+ <script
169
+ src="https://cdn.jsdelivr.net/npm/@3dsource/angular-unreal-module/js/stream-prefetch.js"
170
+ async
171
+ ></script>
172
+ ```
173
+
174
+ `stream-prefetch.js` runs by default only on
175
+ `metabox-configurator/{modular|basic}/...` routes. It reads the same-origin
176
+ `assets/config.json`; override that path with `data-config-url` when needed.
177
+ Pin an exact package version in production when deterministic CDN assets are
178
+ required.
179
+
180
+ ## Repository development
181
+
182
+ Run commands from the repository root:
183
+
184
+ ```shell
185
+ pnpm unreal:build
186
+ pnpm unreal:build:watch
187
+ pnpm unreal:lint
188
+ pnpm unreal:test
189
+ pnpm unreal:test:watch
190
+ pnpm unreal:test:signalling
191
+ pnpm unreal:test:signalling:leaks
192
+ ```
193
+
194
+ `unreal:build` builds the local `source-ui-native`, `types-unreal` and `utils`
195
+ dependencies before this package.
196
+
197
+ Release commands publish only this package:
198
+
199
+ ```shell
200
+ pnpm unreal:release:patch
201
+ pnpm unreal:release:dev
202
+ ```
203
+
204
+ After a successful publish, the release automatically purges the matching
205
+ jsDelivr tag. Retry a failed purge without rerunning the release:
206
+
207
+ ```shell
208
+ pnpm unreal:purge-cdn -- latest
209
+ pnpm unreal:purge-cdn -- dev
210
+ ```
211
+
212
+ Repository tooling requires Node.js 24.16.0 or newer and pnpm 11.17.0.