@arcware-cloud/pixelstreaming-websdk 0.1.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/DEPENDENCY_LICENSE.md +136 -0
  2. package/LICENSE.md +24 -0
  3. package/README.md +204 -0
  4. package/index.cjs.js +11 -0
  5. package/index.esm.js +11 -0
  6. package/index.umd.js +11 -0
  7. package/package.json +32 -0
  8. package/types/index.d.ts +3 -0
  9. package/types/lib/ApplyUrlHack.d.ts +2 -0
  10. package/types/lib/ArcwareApplication.d.ts +27 -0
  11. package/types/lib/ArcwareConfig.d.ts +34 -0
  12. package/types/lib/ArcwarePixelStreaming.d.ts +84 -0
  13. package/types/lib/domain/ArcwareSettingsSchema.d.ts +185 -0
  14. package/types/lib/domain/EventHandler.d.ts +11 -0
  15. package/types/lib/domain/Session.d.ts +29 -0
  16. package/types/lib/domain/Stats.d.ts +36 -0
  17. package/types/lib/index.d.ts +4 -0
  18. package/types/lib/styles/ArcwarePixelStreamingApplicationStyles.d.ts +388 -0
  19. package/types/lib/ui/ArcwareLogoLoader/index.d.ts +5 -0
  20. package/types/lib/ui/AudioButton/AudioIcon.d.ts +7 -0
  21. package/types/lib/ui/AudioButton/index.d.ts +15 -0
  22. package/types/lib/ui/LoveLetters/index.d.ts +6 -0
  23. package/types/lib/ui/MicButton/index.d.ts +14 -0
  24. package/types/lib/ui/MicIcon/index.d.ts +7 -0
  25. package/types/lib/ui/MicrophoneOverlay/index.d.ts +11 -0
  26. package/types/shared/index.d.ts +1 -0
  27. package/types/shared/lib/Messages/ErrorMessage.d.ts +18 -0
  28. package/types/shared/lib/Messages/LoveLetter.d.ts +18 -0
  29. package/types/shared/lib/Messages/Ping.d.ts +12 -0
  30. package/types/shared/lib/Messages/Queue.d.ts +58 -0
  31. package/types/shared/lib/Messages/SessionId.d.ts +12 -0
  32. package/types/shared/lib/Messages/Stats.d.ts +170 -0
  33. package/types/shared/lib/Messages/StreamInfo.d.ts +152 -0
  34. package/types/shared/lib/Messages/index.d.ts +178 -0
  35. package/types/shared/lib/index.d.ts +1 -0
@@ -0,0 +1,136 @@
1
+ # Dependency Licenses
2
+
3
+ ## zod
4
+
5
+ [zod](https://github.com/colinhacks/zod/blob/master/LICENSE) is licensed under the MIT License.
6
+
7
+ > MIT License
8
+ >
9
+ > Copyright (c) 2020 Colin McDonnell
10
+ >
11
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ > of this software and associated documentation files (the "Software"), to deal
13
+ > in the Software without restriction, including without limitation the rights
14
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ > copies of the Software, and to permit persons to whom the Software is
16
+ > furnished to do so, subject to the following conditions:
17
+ >
18
+ > The above copyright notice and this permission notice shall be included in all
19
+ > copies or substantial portions of the Software.
20
+ >
21
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ > SOFTWARE.
28
+
29
+ ## moment.js
30
+
31
+ [moment.js](https://github.com/moment/moment/blob/develop/LICENSE) is licensed under the MIT License.
32
+
33
+ > Copyright (c) JS Foundation and other contributors
34
+ >
35
+ > Permission is hereby granted, free of charge, to any person
36
+ > obtaining a copy of this software and associated documentation
37
+ > files (the "Software"), to deal in the Software without
38
+ > restriction, including without limitation the rights to use,
39
+ > copy, modify, merge, publish, distribute, sublicense, and/or sell
40
+ > copies of the Software, and to permit persons to whom the
41
+ > Software is furnished to do so, subject to the following
42
+ > conditions:
43
+ >
44
+ > The above copyright notice and this permission notice shall be
45
+ > included in all copies or substantial portions of the Software.
46
+ >
47
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
48
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
49
+ > OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
50
+ > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
51
+ > HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
52
+ > WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
53
+ > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
54
+ > OTHER DEALINGS IN THE SOFTWARE.
55
+
56
+ ## loadash
57
+
58
+ [loadash](https://github.com/lodash/lodash/blob/main/LICENSE) is licensed under the MIT License.
59
+
60
+ > The MIT License
61
+ >
62
+ > Copyright JS Foundation and other contributors <https://js.foundation/>
63
+ >
64
+ > Based on Underscore.js, copyright Jeremy Ashkenas,
65
+ > DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
66
+ >
67
+ > This software consists of voluntary contributions made by many
68
+ > individuals. For exact contribution history, see the revision history
69
+ > available at [https://github.com/lodash/lodash](https://github.com/lodash/lodash)
70
+ >
71
+ > The following license applies to all parts of this software except as
72
+ > documented below:
73
+ >
74
+ > ====
75
+ >
76
+ > Permission is hereby granted, free of charge, to any person obtaining
77
+ > a copy of this software and associated documentation files (the
78
+ > "Software"), to deal in the Software without restriction, including
79
+ > without limitation the rights to use, copy, modify, merge, publish,
80
+ > distribute, sublicense, and/or sell copies of the Software, and to
81
+ > permit persons to whom the Software is furnished to do so, subject to
82
+ > the following conditions:
83
+ >
84
+ > The above copyright notice and this permission notice shall be
85
+ > included in all copies or substantial portions of the Software.
86
+ >
87
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
88
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
89
+ > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
90
+ > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
91
+ > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
92
+ > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
93
+ > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
94
+ >
95
+ > ====
96
+ >
97
+ > Copyright and related rights for sample code are waived via CC0. Sample
98
+ > code is defined as all source code displayed within the prose of the
99
+ > documentation.
100
+ >
101
+ > CC0: [http://creativecommons.org/publicdomain/zero/1.0/](http://creativecommons.org/publicdomain/zero/1.0/)
102
+ >
103
+ > ====
104
+ >
105
+ > Files located in the node_modules and vendor directories are externally
106
+ > maintained libraries used by this software which have their own
107
+ > licenses; we recommend you read them, as their terms may differ from the
108
+ > terms above.
109
+
110
+ ## lottie-web
111
+
112
+ [lottie-web](https://github.com/airbnb/lottie-web/blob/master/LICENSE.md) is licensed under the MIT License.
113
+
114
+ > The MIT License (MIT)
115
+ >
116
+ > Copyright (c) 2015 Bodymovin
117
+ >
118
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
119
+ >
120
+ > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
121
+ >
122
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
123
+
124
+ ## EpicGames
125
+
126
+ [@epicgames-ps/lib-pixelstreamingfrontend-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md) is licensed under the MIT License.
127
+
128
+ [@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md) is licensed under the MIT License.
129
+
130
+ > Copyright 2004-2022, Epic Games, Inc.
131
+ >
132
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
133
+ >
134
+ > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
135
+ >
136
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/LICENSE.md ADDED
@@ -0,0 +1,24 @@
1
+ # LICENSE
2
+
3
+ MIT License
4
+
5
+ Copyright 2023 Arcware GmbH
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
8
+
9
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
10
+
11
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12
+
13
+ ## Dependency Licenses
14
+
15
+ This software inherits code from several other libraries, namely:
16
+
17
+ - [zod](https://github.com/colinhacks/zod/blob/master/LICENSE)
18
+ - [moment.js](https://github.com/moment/moment/blob/develop/LICENSE)
19
+ - [loadash](https://github.com/lodash/lodash/blob/main/LICENSE)
20
+ - [lottie-web](https://github.com/airbnb/lottie-web/blob/master/LICENSE.md)
21
+ - [@epicgames-ps/lib-pixelstreamingfrontend-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md)
22
+ - [@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md)
23
+
24
+ Here's a summary of these [Dependency Licenses](DEPENDENCY_LICENSE.md).
package/README.md ADDED
@@ -0,0 +1,204 @@
1
+ # Getting Started with Arcware Pixel Streaming WebSDK
2
+
3
+ This guide will walk you through the initial steps to integrate the New Arcware Pixel Streaming WebSDK into your web application. The process is streamlined to get you up and running quickly.
4
+
5
+ \*\*\*Note: This library wraps the "PixelStreamingInfrastructure" repository of EpicGames. For more info see the github repo: https://github.com/EpicGames/PixelStreamingInfrastructure
6
+
7
+ ## Prerequisites
8
+
9
+ Before you begin, ensure you have the following:
10
+
11
+ - Node.js installed on your system.
12
+ - Access to Unreal Engine's Pixel Streaming setup.
13
+ - A web application where you wish to implement the SDK.
14
+
15
+ ## Installation
16
+
17
+ To install the Arcware Pixel Streaming WebSDK, run the following command in your project's root directory:
18
+
19
+ `npm install @arcware-cloud/pixelstreaming-websdk --save`
20
+
21
+ Or if you prefer using Yarn:
22
+
23
+ `yarn add @arcware-cloud/pixelstreaming-websdk`
24
+
25
+ ## Quick Start Guide
26
+
27
+ ### Step 1: Import and Configure
28
+
29
+ Import the necessary classes from the SDK and create a new `ArcwareConfig` object to configure your Pixel Streaming instance.
30
+
31
+ import { ArcwareConfig, ArcwarePixelStreaming } from "@arcware-cloud/pixelstreaming-websdk";
32
+
33
+ const config = new ArcwareConfig({
34
+ useUrlParams: false,
35
+ initialSettings: {
36
+ // Your initial settings here
37
+ },
38
+ settings: {
39
+ // Your custom settings here
40
+ },
41
+ });`
42
+
43
+ ### Step 2: Initialize ArcwarePixelStreaming
44
+
45
+ Create an instance of `ArcwarePixelStreaming` by passing the configuration object. This instance will manage the streaming session.
46
+
47
+ `const pixelStreamingInstance = new ArcwarePixelStreaming(config);`
48
+
49
+ ### Step 3: Embed into Your Application
50
+
51
+ Append the `ArcwarePixelStreaming` instance to your application's DOM to start the streaming session.
52
+
53
+ document.getElementById('your-container-id').appendChild(pixelStreamingInstance.rootElement);
54
+
55
+ ## Next Steps
56
+
57
+ After you've successfully integrated the basic streaming functionality, you can explore more advanced features of the SDK to enhance your application.
58
+
59
+ Remember, as this SDK is in beta, you are encouraged to provide feedback and report any issues you encounter. Your contributions are valuable to the continuous improvement of the WebSDK.
60
+
61
+ ## Configuration and Initialization
62
+
63
+ Configuration and Initialization the New Arcware Pixel Streaming WebSDK is designed to be flexible and easily configurable to fit the needs of various web applications.
64
+
65
+ Below, we'll explain the configuration options and initialization process based on the provided React code example.
66
+
67
+ ### Configuration Options
68
+
69
+ When creating a new instance of `ArcwareConfig`, you provide an object with two main properties: `initialSettings` and `settings`.
70
+
71
+ ####
72
+
73
+ `initialSettings`
74
+
75
+ This property is an object that defines the initial environment and behavior of the Pixel Streaming session. Here's a breakdown of the options used in the example:
76
+
77
+ - `ss`: This is the URL to the signalling server, which is essential for establishing the WebRTC connection. It is typically provided by your environment configuration.
78
+ - `StartVideoMuted`: A boolean that, when set to `true`, starts the video in a muted state.
79
+ - `AutoConnect`: If `true`, the client will automatically attempt to connect to the Pixel Streaming session as soon as possible.
80
+ - `AutoPlayVideo`: When set to `true`, the video will automatically play as soon as it's ready.
81
+
82
+ ####
83
+
84
+ `settings`
85
+
86
+ The `settings` property is an object containing various configuration options that tailor the user interface and interaction capabilities of the streaming session:
87
+
88
+ - `shareId`: An identifier used for sharing sessions. \*Required
89
+ - `session`: The session ID, which can be used for session management and reconnection.
90
+ - `token`: An authentication token, if required by your backend.
91
+ - `infoButton`: A boolean to toggle the visibility of an information button in the UI.
92
+ - `micButton`: A boolean to control the display of a microphone toggle button.
93
+ - `audioButton`: A boolean to show or hide the audio control button.
94
+ - `fullscreenButton`: A boolean to enable a fullscreen toggle button.
95
+ - `settingsButton`: A boolean to add a settings button to the UI.
96
+ - `connectionStrengthIcon`: A boolean to display an icon indicating the connection strength.
97
+
98
+ ###
99
+
100
+ Initialization Process
101
+
102
+ After configuring `ArcwareConfig`, you create an instance of `ArcwarePixelStreaming` by passing the configuration object. This instance is responsible for managing the streaming session and handling user interactions.
103
+
104
+ const pixelStreamingInstance = new ArcwarePixelStreaming(config);
105
+
106
+ Once initialized, `pixelStreamingInstance` can be used to interact with the streaming session. For example, you can retrieve the application's response or emit UI interactions:
107
+
108
+ const application = new ArcwareApplication({
109
+ stream: pixelStreamingInstance,
110
+ });
111
+
112
+ - ` application.getApplicationResponse(``string``) `: This method can be called to get a response from the application, which might include status updates or other messages.
113
+ - `application.emitUIInteraction(descriptor:` ` object | string``) `: This method allows you to send UI interaction events to the streaming application, such as button presses or command inputs.
114
+
115
+ # Implementation Examples
116
+
117
+ ## Plain HTML
118
+
119
+ Please ensure in the following examples, to use
120
+
121
+ ### index.esm.js (recommended)
122
+
123
+ ```html
124
+ <html>
125
+ <head>
126
+ <title>Arcware CloudRT - Pixel Streaming</title>
127
+ <script type="module">
128
+ import * as PixelStreamingWebSdkCore from "https://unpkg.com/@arcware-cloud/pixelstreaming-websdk@0.0.2-beta/index.esm.js";
129
+
130
+ const { ArcwareConfig, ArcwarePixelStreaming, ArcwareApplication } = PixelStreamingWebSdkCore;
131
+
132
+ const application = new ArcwareApplication({
133
+ stream: new ArcwarePixelStreaming(
134
+ new ArcwareConfig({
135
+ useUrlParams: true,
136
+ initialSettings: {
137
+ ss: "wss://signalling-client.ragnarok.arcware.cloud/",
138
+ StartVideoMuted: true,
139
+ AutoConnect: true,
140
+ AutoPlayVideo: true,
141
+ },
142
+ settings: {
143
+ // If you figure out the last digit of the id, feel free to try :)
144
+ shareId: "share-0be4620b-77aa-42b1-98cb-f7ee61be443?",
145
+ audioButton: true,
146
+ fullscreenButton: true,
147
+ },
148
+ })
149
+ ),
150
+ });
151
+
152
+ document.getElementById("videoContainer").appendChild(application.rootElement);
153
+ </script>
154
+ </head>
155
+ <body>
156
+ <div id="videoContainer" style="height: 1000px; width: 1000px;"></div>
157
+ </body>
158
+ </html>
159
+ ```
160
+
161
+ ### index.esm.js
162
+
163
+ ```html
164
+ <script src="https://unpkg.com/@arcware-cloud/pixelstreaming-websdk@0.0.2-beta/index.umd.js"></script>
165
+ <script type="module">
166
+ const { ArcwareConfig, ArcwarePixelStreaming, ArcwareApplication } = window.arcware; // Module name, subject to change.
167
+ // Rest of the script as above (esm).
168
+ </script>
169
+ ```
170
+
171
+ ## Library implementation examples
172
+
173
+ ### React
174
+
175
+ coming soon
176
+
177
+ ### Other
178
+
179
+ coming soon
180
+
181
+ # LICENSE
182
+
183
+ MIT License
184
+
185
+ Copyright 2023 Arcware GmbH
186
+
187
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
188
+
189
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
190
+
191
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
192
+
193
+ ## Dependency Licenses
194
+
195
+ This software inherits code from several other libraries, namely:
196
+
197
+ - [zod](https://github.com/colinhacks/zod/blob/master/LICENSE)
198
+ - [moment.js](https://github.com/moment/moment/blob/develop/LICENSE)
199
+ - [loadash](https://github.com/lodash/lodash/blob/main/LICENSE)
200
+ - [lottie-web](https://github.com/airbnb/lottie-web/blob/master/LICENSE.md)
201
+ - [@epicgames-ps/lib-pixelstreamingfrontend-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md)
202
+ - [@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.2](https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/LICENSE.md)
203
+
204
+ Here's a summary of these [Dependency Licenses](DEPENDENCY_LICENSE.md).