@dcl/sdk 7.4.18 → 7.4.19

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.
@@ -37,4 +37,4 @@ export function createRendererTransport(engineApi) {
37
37
  };
38
38
  return rendererTransport;
39
39
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJUcmFuc3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQU9oRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsU0FBZ0M7SUFDdEUsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFtQjtRQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsRCxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQUMsQ0FBQTtRQUVGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtvQkFDckMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBYztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDaEIsSUFBSTtnQkFDRixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUM5QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLHlDQUF5QztnQkFDekMsc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNwQixRQUFRLENBQUE7YUFDVDtRQUNILENBQUM7UUFDRCxNQUFNLENBQUMsT0FBeUI7WUFDOUIsa0RBQWtEO1lBQ2xEO1lBQ0UsOENBQThDO1lBQzdDLE9BQWUsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEVBQ25EO2dCQUNBLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbEIsQ0FBQztRQUNELElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUE7SUFFRCxPQUFPLGlCQUFpQixDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc3BvcnQsIFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1BWF9TVEFUSUNfQ09NUE9ORU5UIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5pbXBvcnQgdHlwZSB7IENyZHRTZW5kVG9SZW5kZXJlclJlcXVlc3QsIENyZHRTZW5kVG9SZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vRW5naW5lQXBpJ1xuXG5leHBvcnQgdHlwZSBFbmdpbmVBcGlGb3JUcmFuc3BvcnQgPSB7XG4gIGNyZHRTZW5kVG9SZW5kZXJlcihib2R5OiBDcmR0U2VuZFRvUmVuZGVyZXJSZXF1ZXN0KTogUHJvbWlzZTxDcmR0U2VuZFRvUmVzcG9uc2U+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydChlbmdpbmVBcGk6IEVuZ2luZUFwaUZvclRyYW5zcG9ydCk6IFRyYW5zcG9ydCB7XG4gIGFzeW5jIGZ1bmN0aW9uIHNlbmRUb1JlbmRlcmVyKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZ2luZUFwaS5jcmR0U2VuZFRvUmVuZGVyZXIoe1xuICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSlcbiAgICB9KVxuXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgIGlmIChyZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBieXRlQXJyYXkgb2YgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIHJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZShieXRlQXJyYXkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZW5kZXJlclRyYW5zcG9ydDogVHJhbnNwb3J0ID0ge1xuICAgIGFzeW5jIHNlbmQobWVzc2FnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2VuZFRvUmVuZGVyZXIobWVzc2FnZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGNvbnNvbGUuZXJyb3Igb2YgdGhlIHNjZW5lXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGRlYnVnZ2VyXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWx0ZXIobWVzc2FnZTogVHJhbnNwb3J0TWVzc2FnZSkge1xuICAgICAgLy8gT25seSBzZW5kIHJlbmRlcmVyIGNvbXBvbmVudHMgKFByb3RvIEdlbmVyYXRlZClcbiAgICAgIGlmIChcbiAgICAgICAgLy8gZmlsdGVyIG91dCBtZXNzYWdlcyBmb3Igbm9uLWNvcmUgY29tcG9uZW50c1xuICAgICAgICAobWVzc2FnZSBhcyBhbnkpLmNvbXBvbmVudElkID4gTUFYX1NUQVRJQ19DT01QT05FTlRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbWVzc2FnZVxuICAgIH0sXG4gICAgdHlwZTogJ3JlbmRlcmVyJ1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlcmVyVHJhbnNwb3J0XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJUcmFuc3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQU9oRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsU0FBZ0M7SUFDdEUsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFtQjtRQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsRCxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQUMsQ0FBQTtRQUNGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtvQkFDckMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBYztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDaEIsSUFBSTtnQkFDRixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUM5QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLHlDQUF5QztnQkFDekMsc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNwQixRQUFRLENBQUE7YUFDVDtRQUNILENBQUM7UUFDRCxNQUFNLENBQUMsT0FBeUI7WUFDOUIsa0RBQWtEO1lBQ2xEO1lBQ0UsOENBQThDO1lBQzdDLE9BQWUsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEVBQ25EO2dCQUNBLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbEIsQ0FBQztRQUNELElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUE7SUFFRCxPQUFPLGlCQUFpQixDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc3BvcnQsIFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1BWF9TVEFUSUNfQ09NUE9ORU5UIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5pbXBvcnQgdHlwZSB7IENyZHRTZW5kVG9SZW5kZXJlclJlcXVlc3QsIENyZHRTZW5kVG9SZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vRW5naW5lQXBpJ1xuXG5leHBvcnQgdHlwZSBFbmdpbmVBcGlGb3JUcmFuc3BvcnQgPSB7XG4gIGNyZHRTZW5kVG9SZW5kZXJlcihib2R5OiBDcmR0U2VuZFRvUmVuZGVyZXJSZXF1ZXN0KTogUHJvbWlzZTxDcmR0U2VuZFRvUmVzcG9uc2U+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydChlbmdpbmVBcGk6IEVuZ2luZUFwaUZvclRyYW5zcG9ydCk6IFRyYW5zcG9ydCB7XG4gIGFzeW5jIGZ1bmN0aW9uIHNlbmRUb1JlbmRlcmVyKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZ2luZUFwaS5jcmR0U2VuZFRvUmVuZGVyZXIoe1xuICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSlcbiAgICB9KVxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoKSB7XG4gICAgICBpZiAocmVuZGVyZXJUcmFuc3BvcnQub25tZXNzYWdlKSB7XG4gICAgICAgIGZvciAoY29uc3QgYnl0ZUFycmF5IG9mIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICByZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UoYnl0ZUFycmF5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZXJUcmFuc3BvcnQ6IFRyYW5zcG9ydCA9IHtcbiAgICBhc3luYyBzZW5kKG1lc3NhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNlbmRUb1JlbmRlcmVyKG1lc3NhZ2UpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyB0aGlzIGlzIHRoZSBjb25zb2xlLmVycm9yIG9mIHRoZSBzY2VuZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgICBkZWJ1Z2dlclxuICAgICAgfVxuICAgIH0sXG4gICAgZmlsdGVyKG1lc3NhZ2U6IFRyYW5zcG9ydE1lc3NhZ2UpIHtcbiAgICAgIC8vIE9ubHkgc2VuZCByZW5kZXJlciBjb21wb25lbnRzIChQcm90byBHZW5lcmF0ZWQpXG4gICAgICBpZiAoXG4gICAgICAgIC8vIGZpbHRlciBvdXQgbWVzc2FnZXMgZm9yIG5vbi1jb3JlIGNvbXBvbmVudHNcbiAgICAgICAgKG1lc3NhZ2UgYXMgYW55KS5jb21wb25lbnRJZCA+IE1BWF9TVEFUSUNfQ09NUE9ORU5UXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhIW1lc3NhZ2VcbiAgICB9LFxuICAgIHR5cGU6ICdyZW5kZXJlcidcbiAgfVxuXG4gIHJldHVybiByZW5kZXJlclRyYW5zcG9ydFxufVxuIl19
package/observables.d.ts CHANGED
@@ -1,222 +1,15 @@
1
1
  import { Observable } from './internal/Observable';
2
- import { QuaternionType, Vector3Type } from '@dcl/ecs';
3
- /** @public */
4
- export type InputEventResult = {
5
- /** Origin of the ray, relative to the scene */
6
- origin: Vector3Type;
7
- /** Direction vector of the ray (normalized) */
8
- direction: Vector3Type;
9
- /** ID of the pointer that triggered the event */
10
- buttonId: number;
11
- /** Does this pointer event hit any object? */
12
- hit?: {
13
- /** Length of the ray */
14
- length: number;
15
- /** If the ray hits a mesh the intersection point will be this */
16
- hitPoint: Vector3Type;
17
- /** If the mesh has a name, it will be assigned to meshName */
18
- meshName: string;
19
- /** Normal of the hit */
20
- normal: Vector3Type;
21
- /** Normal of the hit, in world space */
22
- worldNormal: Vector3Type;
23
- /** Hit entity ID if any */
24
- entityId: unknown;
25
- };
26
- };
27
- /** @public */
28
- export type GlobalInputEventResult = InputEventResult & {
29
- /**
30
- * DOWN = 0,
31
- * UP = 1
32
- */
33
- type: 0 | 1;
34
- };
35
- /** @public */
36
- export type RaycastResponsePayload<T> = {
37
- queryId: string;
38
- queryType: string;
39
- payload: T;
40
- };
41
- /** @public */
42
- export type GizmoDragEndEvent = {
43
- type: 'gizmoDragEnded';
44
- transforms: Array<{
45
- position: Vector3Type;
46
- rotation: QuaternionType;
47
- scale: Vector3Type;
48
- entityId: unknown;
49
- }>;
50
- };
51
- /** @public */
52
- export type GizmoSelectedEvent = {
53
- type: 'gizmoSelected';
54
- gizmoType: 'MOVE' | 'ROTATE' | 'SCALE' | 'NONE';
55
- entities: string[];
56
- };
2
+ import { Vector3Type } from '@dcl/ecs';
57
3
  /** @public */
58
4
  export type IEventNames = keyof IEvents;
59
- /** @public */
60
- export type EngineEvent<T extends IEventNames = IEventNames, V = IEvents[T]> = {
61
- /** eventName */
62
- type: T;
63
- data: Readonly<V>;
64
- };
65
5
  /**
66
6
  * @public
67
7
  * Note: Don't use `on` prefix for IEvents to avoid redundancy with `event.on("onEventName")` syntax.
68
8
  */
69
9
  export interface IEvents {
70
- /**
71
- * `positionChanged` is triggered when the position of the camera changes
72
- * This event is throttled to 10 times per second.
73
- */
74
- positionChanged: {
75
- /** Camera position relative to the base parcel of the scene */
76
- position: Vector3Type;
77
- /** Camera position, this is a absolute world position */
78
- cameraPosition: Vector3Type;
79
- /** Eye height, in meters. */
80
- playerHeight: number;
81
- };
82
- /**
83
- * `rotationChanged` is triggered when the rotation of the camera changes.
84
- * This event is throttled to 10 times per second.
85
- */
86
- rotationChanged: {
87
- /** Degree vector. Same as entities */
88
- rotation: Vector3Type;
89
- /** Rotation quaternion, useful in some scenarios. */
90
- quaternion: QuaternionType;
91
- };
92
- /**
93
- * `cameraModeChanged` is triggered when the user changes the camera mode
94
- */
95
- cameraModeChanged: {
96
- /**
97
- * FIRST_PERSON = 0,
98
- * THIRD_PERSON = 1,
99
- * FREE_CAMERA = 2
100
- */
101
- cameraMode: 0 | 1 | 2;
102
- };
103
- /**
104
- * `idleStateChanged` is triggered when the user not moves for a defined period of time
105
- */
106
- idleStateChanged: {
107
- isIdle: boolean;
108
- };
109
10
  playerExpression: {
110
11
  expressionId: string;
111
12
  };
112
- /**
113
- * `pointerUp` is triggered when the user releases an input pointer.
114
- * It could be a VR controller, a touch screen or the mouse.
115
- */
116
- pointerUp: InputEventResult;
117
- /**
118
- * `pointerDown` is triggered when the user press an input pointer.
119
- * It could be a VR controller, a touch screen or the mouse.
120
- */
121
- pointerDown: InputEventResult;
122
- /**
123
- * `pointerEvent` is triggered when the user press or releases an input pointer.
124
- * It could be a VR controller, a touch screen or the mouse.
125
- *
126
- * @deprecated use actionButtonEvent instead
127
- */
128
- pointerEvent: GlobalInputEventResult;
129
- /**
130
- * `actionButtonEvent` is triggered when the user press or releases an input pointer.
131
- * It could be a VR controller, a touch screen or the mouse.
132
- *
133
- * This event is exactly the same as `pointerEvent` but the logic in the ECS had an unsolvable
134
- * condition that required us to create this new event to handle more cases for new buttons.
135
- */
136
- actionButtonEvent: GlobalInputEventResult;
137
- /**
138
- * `raycastResponse` is triggered in response to a raycast query
139
- */
140
- raycastResponse: RaycastResponsePayload<any>;
141
- /**
142
- * `chatMessage` is triggered when the user sends a message through chat entity.
143
- */
144
- chatMessage: {
145
- id: string;
146
- sender: string;
147
- message: string;
148
- isCommand: boolean;
149
- };
150
- /**
151
- * `onChange` is triggered when an entity changes its own internal state.
152
- * Dispatched by the `ui-*` entities when their value is changed. It triggers a callback.
153
- * Notice: Only entities with ID will be listening for click events.
154
- */
155
- onChange: {
156
- value?: any;
157
- /** ID of the pointer that triggered the event */
158
- pointerId?: number;
159
- };
160
- /**
161
- * `onEnter` is triggered when the user hits the "Enter" key from the keyboard
162
- * Used principally by the Chat internal scene
163
- */
164
- onEnter: unknown;
165
- /**
166
- * `onPointerLock` is triggered when the user clicks the world canvas and the
167
- * pointer locks to it so the pointer moves the camera
168
- */
169
- onPointerLock: {
170
- locked?: boolean;
171
- };
172
- /**
173
- * `onAnimationEnd` is triggered when an animation clip gets finish
174
- */
175
- onAnimationEnd: {
176
- clipName: string;
177
- };
178
- /**
179
- * `onFocus` is triggered when an entity focus is active.
180
- * Dispatched by the `ui-input` and `ui-password` entities when the value is changed.
181
- * It triggers a callback.
182
- *
183
- * Notice: Only entities with ID will be listening for click events.
184
- */
185
- onFocus: {
186
- /** ID of the entitiy of the event */
187
- entityId: unknown;
188
- /** ID of the pointer that triggered the event */
189
- pointerId: number;
190
- };
191
- /**
192
- * `onBlur` is triggered when an entity loses its focus.
193
- * Dispatched by the `ui-input` and `ui-password` entities when the value is changed.
194
- * It triggers a callback.
195
- *
196
- * Notice: Only entities with ID will be listening for click events.
197
- */
198
- onBlur: {
199
- /** ID of the entitiy of the event */
200
- entityId: unknown;
201
- /** ID of the pointer that triggered the event */
202
- pointerId: number;
203
- };
204
- /** The onClick event is only used for UI elements */
205
- onClick: {
206
- entityId: unknown;
207
- };
208
- /**
209
- * This event gets triggered when an entity leaves the scene fences.
210
- */
211
- entityOutOfScene: {
212
- entityId: unknown;
213
- };
214
- /**
215
- * This event gets triggered when an entity enters the scene fences.
216
- */
217
- entityBackInScene: {
218
- entityId: unknown;
219
- };
220
13
  /**
221
14
  * This event gets triggered when the user enters the scene
222
15
  */
@@ -240,46 +33,6 @@ export interface IEvents {
240
33
  * This is triggered once the scene should start.
241
34
  */
242
35
  sceneStart: unknown;
243
- /**
244
- * This is triggered once the builder scene is loaded.
245
- */
246
- builderSceneStart: unknown;
247
- /**
248
- * This is triggered once the builder scene is unloaded.
249
- */
250
- builderSceneUnloaded: unknown;
251
- /**
252
- * After checking entities outside the fences, if any is outside, this event
253
- * will be triggered with all the entities outside the scene.
254
- */
255
- entitiesOutOfBoundaries: {
256
- entities: string[];
257
- };
258
- uuidEvent: {
259
- uuid: string;
260
- payload: any;
261
- };
262
- onTextSubmit: {
263
- text: string;
264
- };
265
- metricsUpdate: {
266
- given: Record<string, number>;
267
- limit: Record<string, number>;
268
- };
269
- limitsExceeded: {
270
- given: Record<string, number>;
271
- limit: Record<string, number>;
272
- };
273
- /** For gizmos */
274
- gizmoEvent: GizmoDragEndEvent | GizmoSelectedEvent;
275
- externalAction: {
276
- type: string;
277
- [key: string]: any;
278
- };
279
- stateEvent: {
280
- type: string;
281
- payload: any;
282
- };
283
36
  /** This is triggered at least for each videoStatus change */
284
37
  videoEvent: {
285
38
  componentId: string;
@@ -320,10 +73,6 @@ export interface IEvents {
320
73
  distance: number;
321
74
  };
322
75
  };
323
- /** Triggered when pointer start hovering an entities' shape */
324
- pointerHoverEnter: unknown;
325
- /** Triggered when pointer stop hovering an entities' shape */
326
- pointerHoverExit: unknown;
327
76
  }
328
77
  /**
329
78
  * These events are triggered after your character enters the scene.
package/observables.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Observable } from './internal/Observable';
2
+ import { AvatarBase, AvatarEmoteCommand, AvatarEquippedData, PlayerIdentityData, PointerEventsResult, RealmInfo, engine } from '@dcl/ecs';
2
3
  import { subscribe } from '~system/EngineApi';
3
- let subscribeFunction = subscribe;
4
+ import players from './players';
4
5
  /**
5
6
  * @internal
6
7
  * This function generates a callback that is passed to the Observable
@@ -8,7 +9,12 @@ let subscribeFunction = subscribe;
8
9
  */
9
10
  function createSubscriber(eventName) {
10
11
  return () => {
11
- subscribeFunction({ eventId: eventName }).catch(console.error);
12
+ if (eventName === 'comms' || globalThis.__OBSERVABLES_FALLBACK_SUPPORT) {
13
+ subscribe({ eventId: eventName }).catch(console.error);
14
+ }
15
+ else {
16
+ SDK7ComponentsObservable?.subscribe(eventName);
17
+ }
12
18
  };
13
19
  }
14
20
  /**
@@ -77,13 +83,6 @@ export const onPlayerClickedObservable = new Observable(createSubscriber('player
77
83
  * @deprecated This function is an inheritance of ECS6, it's here temporary for the feature parity, please read the news and docs to know how handle when it's removed.
78
84
  */
79
85
  export const onCommsMessage = new Observable(createSubscriber('comms'));
80
- /**
81
- * @internal
82
- * Used for testing purpose
83
- */
84
- export function setSubscribeFunction(fn) {
85
- subscribeFunction = fn;
86
- }
87
86
  /**
88
87
  * @internal
89
88
  * @deprecated this is an OLD API.
@@ -144,4 +143,143 @@ export async function pollEvents(sendBatch) {
144
143
  }
145
144
  }
146
145
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb2JzZXJ2YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRWxELE9BQU8sRUFBdUMsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEYsSUFBSSxpQkFBaUIsR0FBcUIsU0FBUyxDQUFBO0FBNFhuRDs7OztHQUlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQjtJQUN6QyxPQUFPLEdBQUcsRUFBRTtRQUNWLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksVUFBVSxDQUEwQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO0FBQy9HOzs4TUFFOE07QUFDOU0sTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFBO0FBRWxEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLFVBQVUsQ0FBMEIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtBQUUvRzs7OE1BRThNO0FBQzlNLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQTtBQUVsRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxVQUFVLENBQXdCLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7QUFFM0c7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxVQUFVLENBQ3hELGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQ3JDLENBQUE7QUFF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QkFDTjtnQkFDRCxLQUFLLGdCQUFnQixDQUFDLENBQUM7b0JBQ3JCLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxJQUFpQyxDQUFDLENBQUE7b0JBQzNFLE1BQUs7aUJBQ047Z0JBQ0QsS0FBSyxlQUFlLENBQUMsQ0FBQztvQkFDcEIseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQWdDLENBQUMsQ0FBQTtvQkFDM0UsTUFBSztpQkFDTjtnQkFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO29CQUNaLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBd0IsQ0FBQyxDQUFBO29CQUN4RCxNQUFLO2lCQUNOO2FBQ0Y7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuL2ludGVybmFsL09ic2VydmFibGUnXG5pbXBvcnQgeyBRdWF0ZXJuaW9uVHlwZSwgVmVjdG9yM1R5cGUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1hbnlFbnRpdHlBY3Rpb24sIFNlbmRCYXRjaFJlc3BvbnNlLCBzdWJzY3JpYmUgfSBmcm9tICd+c3lzdGVtL0VuZ2luZUFwaSdcblxubGV0IHN1YnNjcmliZUZ1bmN0aW9uOiB0eXBlb2Ygc3Vic2NyaWJlID0gc3Vic2NyaWJlXG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBJbnB1dEV2ZW50UmVzdWx0ID0ge1xuICAvKiogT3JpZ2luIG9mIHRoZSByYXksIHJlbGF0aXZlIHRvIHRoZSBzY2VuZSAqL1xuICBvcmlnaW46IFZlY3RvcjNUeXBlXG4gIC8qKiBEaXJlY3Rpb24gdmVjdG9yIG9mIHRoZSByYXkgKG5vcm1hbGl6ZWQpICovXG4gIGRpcmVjdGlvbjogVmVjdG9yM1R5cGVcbiAgLyoqIElEIG9mIHRoZSBwb2ludGVyIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICBidXR0b25JZDogbnVtYmVyXG4gIC8qKiBEb2VzIHRoaXMgcG9pbnRlciBldmVudCBoaXQgYW55IG9iamVjdD8gKi9cbiAgaGl0Pzoge1xuICAgIC8qKiBMZW5ndGggb2YgdGhlIHJheSAqL1xuICAgIGxlbmd0aDogbnVtYmVyXG4gICAgLyoqIElmIHRoZSByYXkgaGl0cyBhIG1lc2ggdGhlIGludGVyc2VjdGlvbiBwb2ludCB3aWxsIGJlIHRoaXMgKi9cbiAgICBoaXRQb2ludDogVmVjdG9yM1R5cGVcbiAgICAvKiogSWYgdGhlIG1lc2ggaGFzIGEgbmFtZSwgaXQgd2lsbCBiZSBhc3NpZ25lZCB0byBtZXNoTmFtZSAqL1xuICAgIG1lc2hOYW1lOiBzdHJpbmdcbiAgICAvKiogTm9ybWFsIG9mIHRoZSBoaXQgKi9cbiAgICBub3JtYWw6IFZlY3RvcjNUeXBlXG4gICAgLyoqIE5vcm1hbCBvZiB0aGUgaGl0LCBpbiB3b3JsZCBzcGFjZSAqL1xuICAgIHdvcmxkTm9ybWFsOiBWZWN0b3IzVHlwZVxuICAgIC8qKiBIaXQgZW50aXR5IElEIGlmIGFueSAqL1xuICAgIGVudGl0eUlkOiB1bmtub3duXG4gIH1cbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIEdsb2JhbElucHV0RXZlbnRSZXN1bHQgPSBJbnB1dEV2ZW50UmVzdWx0ICYge1xuICAvKipcbiAgICogRE9XTiA9IDAsXG4gICAqIFVQID0gMVxuICAgKi9cbiAgdHlwZTogMCB8IDFcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIFJheWNhc3RSZXNwb25zZVBheWxvYWQ8VD4gPSB7XG4gIHF1ZXJ5SWQ6IHN0cmluZ1xuICBxdWVyeVR5cGU6IHN0cmluZ1xuICBwYXlsb2FkOiBUXG59XG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBHaXptb0RyYWdFbmRFdmVudCA9IHtcbiAgdHlwZTogJ2dpem1vRHJhZ0VuZGVkJ1xuICB0cmFuc2Zvcm1zOiBBcnJheTx7XG4gICAgcG9zaXRpb246IFZlY3RvcjNUeXBlXG4gICAgcm90YXRpb246IFF1YXRlcm5pb25UeXBlXG4gICAgc2NhbGU6IFZlY3RvcjNUeXBlXG4gICAgZW50aXR5SWQ6IHVua25vd25cbiAgfT5cbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIEdpem1vU2VsZWN0ZWRFdmVudCA9IHtcbiAgdHlwZTogJ2dpem1vU2VsZWN0ZWQnXG4gIGdpem1vVHlwZTogJ01PVkUnIHwgJ1JPVEFURScgfCAnU0NBTEUnIHwgJ05PTkUnXG4gIGVudGl0aWVzOiBzdHJpbmdbXVxufVxuXG4vLy8gLS0tIEVWRU5UUyAtLS1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIElFdmVudE5hbWVzID0ga2V5b2YgSUV2ZW50c1xuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgRW5naW5lRXZlbnQ8VCBleHRlbmRzIElFdmVudE5hbWVzID0gSUV2ZW50TmFtZXMsIFYgPSBJRXZlbnRzW1RdPiA9IHtcbiAgLyoqIGV2ZW50TmFtZSAqL1xuICB0eXBlOiBUXG4gIGRhdGE6IFJlYWRvbmx5PFY+XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICogTm90ZTogRG9uJ3QgdXNlIGBvbmAgcHJlZml4IGZvciBJRXZlbnRzIHRvIGF2b2lkIHJlZHVuZGFuY3kgd2l0aCBgZXZlbnQub24oXCJvbkV2ZW50TmFtZVwiKWAgc3ludGF4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudHMge1xuICAvKipcbiAgICogYHBvc2l0aW9uQ2hhbmdlZGAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBjYW1lcmEgY2hhbmdlc1xuICAgKiBUaGlzIGV2ZW50IGlzIHRocm90dGxlZCB0byAxMCB0aW1lcyBwZXIgc2Vjb25kLlxuICAgKi9cbiAgcG9zaXRpb25DaGFuZ2VkOiB7XG4gICAgLyoqIENhbWVyYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgYmFzZSBwYXJjZWwgb2YgdGhlIHNjZW5lICovXG4gICAgcG9zaXRpb246IFZlY3RvcjNUeXBlXG5cbiAgICAvKiogQ2FtZXJhIHBvc2l0aW9uLCB0aGlzIGlzIGEgYWJzb2x1dGUgd29ybGQgcG9zaXRpb24gKi9cbiAgICBjYW1lcmFQb3NpdGlvbjogVmVjdG9yM1R5cGVcblxuICAgIC8qKiBFeWUgaGVpZ2h0LCBpbiBtZXRlcnMuICovXG4gICAgcGxheWVySGVpZ2h0OiBudW1iZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBgcm90YXRpb25DaGFuZ2VkYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcm90YXRpb24gb2YgdGhlIGNhbWVyYSBjaGFuZ2VzLlxuICAgKiBUaGlzIGV2ZW50IGlzIHRocm90dGxlZCB0byAxMCB0aW1lcyBwZXIgc2Vjb25kLlxuICAgKi9cbiAgcm90YXRpb25DaGFuZ2VkOiB7XG4gICAgLyoqIERlZ3JlZSB2ZWN0b3IuIFNhbWUgYXMgZW50aXRpZXMgKi9cbiAgICByb3RhdGlvbjogVmVjdG9yM1R5cGVcbiAgICAvKiogUm90YXRpb24gcXVhdGVybmlvbiwgdXNlZnVsIGluIHNvbWUgc2NlbmFyaW9zLiAqL1xuICAgIHF1YXRlcm5pb246IFF1YXRlcm5pb25UeXBlXG4gIH1cblxuICAvKipcbiAgICogYGNhbWVyYU1vZGVDaGFuZ2VkYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBjYW1lcmEgbW9kZVxuICAgKi9cbiAgY2FtZXJhTW9kZUNoYW5nZWQ6IHtcbiAgICAvKipcbiAgICAgKiBGSVJTVF9QRVJTT04gPSAwLFxuICAgICAqIFRISVJEX1BFUlNPTiA9IDEsXG4gICAgICogRlJFRV9DQU1FUkEgPSAyXG4gICAgICovXG4gICAgY2FtZXJhTW9kZTogMCB8IDEgfCAyXG4gIH1cblxuICAvKipcbiAgICogYGlkbGVTdGF0ZUNoYW5nZWRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIG5vdCBtb3ZlcyBmb3IgYSBkZWZpbmVkIHBlcmlvZCBvZiB0aW1lXG4gICAqL1xuICBpZGxlU3RhdGVDaGFuZ2VkOiB7XG4gICAgaXNJZGxlOiBib29sZWFuXG4gIH1cblxuICBwbGF5ZXJFeHByZXNzaW9uOiB7XG4gICAgZXhwcmVzc2lvbklkOiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBgcG9pbnRlclVwYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciByZWxlYXNlcyBhbiBpbnB1dCBwb2ludGVyLlxuICAgKiBJdCBjb3VsZCBiZSBhIFZSIGNvbnRyb2xsZXIsIGEgdG91Y2ggc2NyZWVuIG9yIHRoZSBtb3VzZS5cbiAgICovXG4gIHBvaW50ZXJVcDogSW5wdXRFdmVudFJlc3VsdFxuXG4gIC8qKlxuICAgKiBgcG9pbnRlckRvd25gIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHByZXNzIGFuIGlucHV0IHBvaW50ZXIuXG4gICAqIEl0IGNvdWxkIGJlIGEgVlIgY29udHJvbGxlciwgYSB0b3VjaCBzY3JlZW4gb3IgdGhlIG1vdXNlLlxuICAgKi9cbiAgcG9pbnRlckRvd246IElucHV0RXZlbnRSZXN1bHRcblxuICAvKipcbiAgICogYHBvaW50ZXJFdmVudGAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcHJlc3Mgb3IgcmVsZWFzZXMgYW4gaW5wdXQgcG9pbnRlci5cbiAgICogSXQgY291bGQgYmUgYSBWUiBjb250cm9sbGVyLCBhIHRvdWNoIHNjcmVlbiBvciB0aGUgbW91c2UuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhY3Rpb25CdXR0b25FdmVudCBpbnN0ZWFkXG4gICAqL1xuICBwb2ludGVyRXZlbnQ6IEdsb2JhbElucHV0RXZlbnRSZXN1bHRcblxuICAvKipcbiAgICogYGFjdGlvbkJ1dHRvbkV2ZW50YCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBwcmVzcyBvciByZWxlYXNlcyBhbiBpbnB1dCBwb2ludGVyLlxuICAgKiBJdCBjb3VsZCBiZSBhIFZSIGNvbnRyb2xsZXIsIGEgdG91Y2ggc2NyZWVuIG9yIHRoZSBtb3VzZS5cbiAgICpcbiAgICogVGhpcyBldmVudCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGBwb2ludGVyRXZlbnRgIGJ1dCB0aGUgbG9naWMgaW4gdGhlIEVDUyBoYWQgYW4gdW5zb2x2YWJsZVxuICAgKiBjb25kaXRpb24gdGhhdCByZXF1aXJlZCB1cyB0byBjcmVhdGUgdGhpcyBuZXcgZXZlbnQgdG8gaGFuZGxlIG1vcmUgY2FzZXMgZm9yIG5ldyBidXR0b25zLlxuICAgKi9cbiAgYWN0aW9uQnV0dG9uRXZlbnQ6IEdsb2JhbElucHV0RXZlbnRSZXN1bHRcblxuICAvKipcbiAgICogYHJheWNhc3RSZXNwb25zZWAgaXMgdHJpZ2dlcmVkIGluIHJlc3BvbnNlIHRvIGEgcmF5Y2FzdCBxdWVyeVxuICAgKi9cbiAgcmF5Y2FzdFJlc3BvbnNlOiBSYXljYXN0UmVzcG9uc2VQYXlsb2FkPGFueT5cblxuICAvKipcbiAgICogYGNoYXRNZXNzYWdlYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzZW5kcyBhIG1lc3NhZ2UgdGhyb3VnaCBjaGF0IGVudGl0eS5cbiAgICovXG4gIGNoYXRNZXNzYWdlOiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIHNlbmRlcjogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNDb21tYW5kOiBib29sZWFuXG4gIH1cblxuICAvKipcbiAgICogYG9uQ2hhbmdlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhbiBlbnRpdHkgY2hhbmdlcyBpdHMgb3duIGludGVybmFsIHN0YXRlLlxuICAgKiBEaXNwYXRjaGVkIGJ5IHRoZSBgdWktKmAgZW50aXRpZXMgd2hlbiB0aGVpciB2YWx1ZSBpcyBjaGFuZ2VkLiBJdCB0cmlnZ2VycyBhIGNhbGxiYWNrLlxuICAgKiBOb3RpY2U6IE9ubHkgZW50aXRpZXMgd2l0aCBJRCB3aWxsIGJlIGxpc3RlbmluZyBmb3IgY2xpY2sgZXZlbnRzLlxuICAgKi9cbiAgb25DaGFuZ2U6IHtcbiAgICB2YWx1ZT86IGFueVxuICAgIC8qKiBJRCBvZiB0aGUgcG9pbnRlciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKi9cbiAgICBwb2ludGVySWQ/OiBudW1iZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBgb25FbnRlcmAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgaGl0cyB0aGUgXCJFbnRlclwiIGtleSBmcm9tIHRoZSBrZXlib2FyZFxuICAgKiBVc2VkIHByaW5jaXBhbGx5IGJ5IHRoZSBDaGF0IGludGVybmFsIHNjZW5lXG4gICAqL1xuICBvbkVudGVyOiB1bmtub3duXG5cbiAgLyoqXG4gICAqIGBvblBvaW50ZXJMb2NrYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIHdvcmxkIGNhbnZhcyBhbmQgdGhlXG4gICAqIHBvaW50ZXIgbG9ja3MgdG8gaXQgc28gdGhlIHBvaW50ZXIgbW92ZXMgdGhlIGNhbWVyYVxuICAgKi9cbiAgb25Qb2ludGVyTG9jazoge1xuICAgIGxvY2tlZD86IGJvb2xlYW5cbiAgfVxuXG4gIC8qKlxuICAgKiBgb25BbmltYXRpb25FbmRgIGlzIHRyaWdnZXJlZCB3aGVuIGFuIGFuaW1hdGlvbiBjbGlwIGdldHMgZmluaXNoXG4gICAqL1xuICBvbkFuaW1hdGlvbkVuZDoge1xuICAgIGNsaXBOYW1lOiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBgb25Gb2N1c2AgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gZW50aXR5IGZvY3VzIGlzIGFjdGl2ZS5cbiAgICogRGlzcGF0Y2hlZCBieSB0aGUgYHVpLWlucHV0YCBhbmQgYHVpLXBhc3N3b3JkYCBlbnRpdGllcyB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkLlxuICAgKiBJdCB0cmlnZ2VycyBhIGNhbGxiYWNrLlxuICAgKlxuICAgKiBOb3RpY2U6IE9ubHkgZW50aXRpZXMgd2l0aCBJRCB3aWxsIGJlIGxpc3RlbmluZyBmb3IgY2xpY2sgZXZlbnRzLlxuICAgKi9cbiAgb25Gb2N1czoge1xuICAgIC8qKiBJRCBvZiB0aGUgZW50aXRpeSBvZiB0aGUgZXZlbnQgKi9cbiAgICBlbnRpdHlJZDogdW5rbm93blxuICAgIC8qKiBJRCBvZiB0aGUgcG9pbnRlciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKi9cbiAgICBwb2ludGVySWQ6IG51bWJlclxuICB9XG5cbiAgLyoqXG4gICAqIGBvbkJsdXJgIGlzIHRyaWdnZXJlZCB3aGVuIGFuIGVudGl0eSBsb3NlcyBpdHMgZm9jdXMuXG4gICAqIERpc3BhdGNoZWQgYnkgdGhlIGB1aS1pbnB1dGAgYW5kIGB1aS1wYXNzd29yZGAgZW50aXRpZXMgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICogIEl0IHRyaWdnZXJzIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIE5vdGljZTogT25seSBlbnRpdGllcyB3aXRoIElEIHdpbGwgYmUgbGlzdGVuaW5nIGZvciBjbGljayBldmVudHMuXG4gICAqL1xuICBvbkJsdXI6IHtcbiAgICAvKiogSUQgb2YgdGhlIGVudGl0aXkgb2YgdGhlIGV2ZW50ICovXG4gICAgZW50aXR5SWQ6IHVua25vd25cbiAgICAvKiogSUQgb2YgdGhlIHBvaW50ZXIgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50ICovXG4gICAgcG9pbnRlcklkOiBudW1iZXJcbiAgfVxuXG4gIC8qKiBUaGUgb25DbGljayBldmVudCBpcyBvbmx5IHVzZWQgZm9yIFVJIGVsZW1lbnRzICovXG4gIG9uQ2xpY2s6IHtcbiAgICBlbnRpdHlJZDogdW5rbm93blxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBhbiBlbnRpdHkgbGVhdmVzIHRoZSBzY2VuZSBmZW5jZXMuXG4gICAqL1xuICBlbnRpdHlPdXRPZlNjZW5lOiB7XG4gICAgZW50aXR5SWQ6IHVua25vd25cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGdldHMgdHJpZ2dlcmVkIHdoZW4gYW4gZW50aXR5IGVudGVycyB0aGUgc2NlbmUgZmVuY2VzLlxuICAgKi9cbiAgZW50aXR5QmFja0luU2NlbmU6IHtcbiAgICBlbnRpdHlJZDogdW5rbm93blxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIHNjZW5lXG4gICAqL1xuICBvbkVudGVyU2NlbmU6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBsZWF2ZXMgdGhlIHNjZW5lXG4gICAqL1xuICBvbkxlYXZlU2NlbmU6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgYWZ0ZXIgcmVjZWl2aW5nIGEgY29tbXMgbWVzc2FnZS5cbiAgICovXG4gIGNvbW1zOiB7XG4gICAgc2VuZGVyOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRyaWdnZXJlZCBvbmNlIHRoZSBzY2VuZSBzaG91bGQgc3RhcnQuXG4gICAqL1xuICBzY2VuZVN0YXJ0OiB1bmtub3duXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdHJpZ2dlcmVkIG9uY2UgdGhlIGJ1aWxkZXIgc2NlbmUgaXMgbG9hZGVkLlxuICAgKi9cbiAgYnVpbGRlclNjZW5lU3RhcnQ6IHVua25vd25cblxuICAvKipcbiAgICogVGhpcyBpcyB0cmlnZ2VyZWQgb25jZSB0aGUgYnVpbGRlciBzY2VuZSBpcyB1bmxvYWRlZC5cbiAgICovXG4gIGJ1aWxkZXJTY2VuZVVubG9hZGVkOiB1bmtub3duXG5cbiAgLyoqXG4gICAqIEFmdGVyIGNoZWNraW5nIGVudGl0aWVzIG91dHNpZGUgdGhlIGZlbmNlcywgaWYgYW55IGlzIG91dHNpZGUsIHRoaXMgZXZlbnRcbiAgICogd2lsbCBiZSB0cmlnZ2VyZWQgd2l0aCBhbGwgdGhlIGVudGl0aWVzIG91dHNpZGUgdGhlIHNjZW5lLlxuICAgKi9cbiAgZW50aXRpZXNPdXRPZkJvdW5kYXJpZXM6IHtcbiAgICBlbnRpdGllczogc3RyaW5nW11cbiAgfVxuXG4gIHV1aWRFdmVudDoge1xuICAgIHV1aWQ6IHN0cmluZ1xuICAgIHBheWxvYWQ6IGFueVxuICB9XG5cbiAgb25UZXh0U3VibWl0OiB7XG4gICAgdGV4dDogc3RyaW5nXG4gIH1cblxuICBtZXRyaWNzVXBkYXRlOiB7XG4gICAgZ2l2ZW46IFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgICBsaW1pdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICB9XG5cbiAgbGltaXRzRXhjZWVkZWQ6IHtcbiAgICBnaXZlbjogUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICAgIGxpbWl0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH1cblxuICAvKiogRm9yIGdpem1vcyAqL1xuICBnaXptb0V2ZW50OiBHaXptb0RyYWdFbmRFdmVudCB8IEdpem1vU2VsZWN0ZWRFdmVudFxuXG4gIGV4dGVybmFsQWN0aW9uOiB7XG4gICAgdHlwZTogc3RyaW5nXG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gIH1cblxuICBzdGF0ZUV2ZW50OiB7XG4gICAgdHlwZTogc3RyaW5nXG4gICAgcGF5bG9hZDogYW55XG4gIH1cblxuICAvKiogVGhpcyBpcyB0cmlnZ2VyZWQgYXQgbGVhc3QgZm9yIGVhY2ggdmlkZW9TdGF0dXMgY2hhbmdlICovXG4gIHZpZGVvRXZlbnQ6IHtcbiAgICBjb21wb25lbnRJZDogc3RyaW5nXG4gICAgdmlkZW9DbGlwSWQ6IHN0cmluZ1xuICAgIC8qKiBTdGF0dXMsIGNhbiBiZSBOT05FID0gMCwgRVJST1IgPSAxLCBMT0FESU5HID0gMiwgUkVBRFkgPSAzLCBQTEFZSU5HID0gNCxCVUZGRVJJTkcgPSA1ICovXG4gICAgdmlkZW9TdGF0dXM6IG51bWJlclxuICAgIC8qKiBDdXJyZW50IG9mZnNldCBwb3NpdGlvbiBpbiBzZWNvbmRzICovXG4gICAgY3VycmVudE9mZnNldDogbnVtYmVyXG4gICAgLyoqIFZpZGVvIGxlbmd0aCBpbiBzZWNvbmRzLiBDYW4gYmUgLTEgKi9cbiAgICB0b3RhbFZpZGVvTGVuZ3RoOiBudW1iZXJcbiAgfVxuXG4gIC8qKiBUaGlzIGlzIHRyaWdnZXIgZXZlcnl0aW1lIGEgcHJvZmlsZSBpcyBjaGFuZ2VkICovXG4gIHByb2ZpbGVDaGFuZ2VkOiB7XG4gICAgZXRoQWRkcmVzczogc3RyaW5nXG4gICAgdmVyc2lvbjogbnVtYmVyXG4gIH1cblxuICAvKiogVHJpZ2dlcmVkIHdoZW4gcGVlcidzIGF2YXRhciBpcyBjb25uZWN0ZWQgYW5kIHZpc2libGUgKi9cbiAgcGxheWVyQ29ubmVjdGVkOiB7XG4gICAgdXNlcklkOiBzdHJpbmdcbiAgfVxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBwZWVyIGRpc2Nvbm5lY3QgYW5kL29yIGl0IGF2YXRhciBpcyBzZXQgaW52aXNpYmxlIGJ5IGNvbW1zICovXG4gIHBsYXllckRpc2Nvbm5lY3RlZDoge1xuICAgIHVzZXJJZDogc3RyaW5nXG4gIH1cblxuICAvKiogVHJpZ2dlcmVkIHdoZW4gY3VycmVudCByZWFsbSBvciBpc2xhbmQgY2hhbmdlcyAqL1xuICBvblJlYWxtQ2hhbmdlZDoge1xuICAgIGRvbWFpbjogc3RyaW5nXG4gICAgcm9vbTogc3RyaW5nXG4gICAgc2VydmVyTmFtZTogc3RyaW5nXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZ1xuICB9XG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIG90aGVyIHBsYXllcidzIGF2YXRhciBpcyBjbGlja2VkICovXG4gIHBsYXllckNsaWNrZWQ6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIHJheToge1xuICAgICAgb3JpZ2luOiBWZWN0b3IzVHlwZVxuICAgICAgZGlyZWN0aW9uOiBWZWN0b3IzVHlwZVxuICAgICAgZGlzdGFuY2U6IG51bWJlclxuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBwb2ludGVyIHN0YXJ0IGhvdmVyaW5nIGFuIGVudGl0aWVzJyBzaGFwZSAqL1xuICBwb2ludGVySG92ZXJFbnRlcjogdW5rbm93blxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBwb2ludGVyIHN0b3AgaG92ZXJpbmcgYW4gZW50aXRpZXMnIHNoYXBlICovXG4gIHBvaW50ZXJIb3ZlckV4aXQ6IHVua25vd25cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgY2FsbGJhY2sgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIE9ic2VydmFibGVcbiAqIGNvbnN0cnVjdG9yIHRvIHN1YnNjcmliZSB0byB0aGUgZXZlbnRzIG9mIHRoZSBEZWNlbnRyYWxhbmRJbnRlcmZhY2VcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3Vic2NyaWJlcihldmVudE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHN1YnNjcmliZUZ1bmN0aW9uKHsgZXZlbnRJZDogZXZlbnROYW1lIH0pLmNhdGNoKGNvbnNvbGUuZXJyb3IpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGVzZSBldmVudHMgYXJlIHRyaWdnZXJlZCBhZnRlciB5b3VyIGNoYXJhY3RlciBlbnRlcnMgdGhlIHNjZW5lLlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uRW50ZXJTY2VuZU9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydvbkVudGVyU2NlbmUnXT4oY3JlYXRlU3Vic2NyaWJlcignb25FbnRlclNjZW5lJykpXG4vKiogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuIFVzZSBvbkVudGVyU2NlbmVPYnNlcnZhYmxlIGluc3RlYWQuICovXG5leHBvcnQgY29uc3Qgb25FbnRlclNjZW5lID0gb25FbnRlclNjZW5lT2JzZXJ2YWJsZVxuXG4vKipcbiAqIFRoZXNlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGFmdGVyIHlvdXIgY2hhcmFjdGVyIGxlYXZlcyB0aGUgc2NlbmUuXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25MZWF2ZVNjZW5lT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ29uTGVhdmVTY2VuZSddPihjcmVhdGVTdWJzY3JpYmVyKCdvbkxlYXZlU2NlbmUnKSlcblxuLyoqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLiBVc2Ugb25MZWF2ZVNjZW5lT2JzZXJ2YWJsZSBpbnN0ZWFkLiAqL1xuZXhwb3J0IGNvbnN0IG9uTGVhdmVTY2VuZSA9IG9uTGVhdmVTY2VuZU9ic2VydmFibGVcblxuLyoqXG4gKiBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCBhZnRlciBhbGwgdGhlIHJlc291cmNlcyBvZiB0aGUgc2NlbmUgd2VyZSBsb2FkZWQgKG1vZGVscywgdGV4dHVyZXMsIGV0Yy4uLilcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblNjZW5lUmVhZHlPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1snc2NlbmVTdGFydCddPihjcmVhdGVTdWJzY3JpYmVyKCdzY2VuZVN0YXJ0JykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUGxheWVyRXhwcmVzc2lvbk9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydwbGF5ZXJFeHByZXNzaW9uJ10+KFxuICBjcmVhdGVTdWJzY3JpYmVyKCdwbGF5ZXJFeHByZXNzaW9uJylcbilcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25WaWRlb0V2ZW50ID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1sndmlkZW9FdmVudCddPihjcmVhdGVTdWJzY3JpYmVyKCd2aWRlb0V2ZW50JykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUHJvZmlsZUNoYW5nZWQgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydwcm9maWxlQ2hhbmdlZCddPihjcmVhdGVTdWJzY3JpYmVyKCdwcm9maWxlQ2hhbmdlZCcpKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblBsYXllckNvbm5lY3RlZE9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydwbGF5ZXJDb25uZWN0ZWQnXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ3BsYXllckNvbm5lY3RlZCcpXG4pXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUGxheWVyRGlzY29ubmVjdGVkT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3BsYXllckRpc2Nvbm5lY3RlZCddPihcbiAgY3JlYXRlU3Vic2NyaWJlcigncGxheWVyRGlzY29ubmVjdGVkJylcbilcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25SZWFsbUNoYW5nZWRPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1snb25SZWFsbUNoYW5nZWQnXT4oY3JlYXRlU3Vic2NyaWJlcignb25SZWFsbUNoYW5nZWQnKSlcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25QbGF5ZXJDbGlja2VkT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3BsYXllckNsaWNrZWQnXT4oY3JlYXRlU3Vic2NyaWJlcigncGxheWVyQ2xpY2tlZCcpKVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uQ29tbXNNZXNzYWdlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1snY29tbXMnXT4oY3JlYXRlU3Vic2NyaWJlcignY29tbXMnKSlcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0U3Vic2NyaWJlRnVuY3Rpb24oZm46IChldmVudDogeyBldmVudElkOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTxhbnk+KSB7XG4gIHN1YnNjcmliZUZ1bmN0aW9uID0gZm5cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBkZXByZWNhdGVkIHRoaXMgaXMgYW4gT0xEIEFQSS5cbiAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgU0RLNiBzZW5kQmF0Y2ggdG8gcG9sbCBldmVudHMgZnJvbSB0aGUgcmVuZGVyZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBvbGxFdmVudHMoc2VuZEJhdGNoOiAoYm9keTogTWFueUVudGl0eUFjdGlvbikgPT4gUHJvbWlzZTxTZW5kQmF0Y2hSZXNwb25zZT4pIHtcbiAgY29uc3QgeyBldmVudHMgfSA9IGF3YWl0IHNlbmRCYXRjaCh7IGFjdGlvbnM6IFtdIH0pXG4gIGZvciAoY29uc3QgZSBvZiBldmVudHMpIHtcbiAgICBpZiAoZS5nZW5lcmljKSB7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShlLmdlbmVyaWMuZXZlbnREYXRhKVxuICAgICAgc3dpdGNoIChlLmdlbmVyaWMuZXZlbnRJZCkge1xuICAgICAgICBjYXNlICdvbkVudGVyU2NlbmUnOiB7XG4gICAgICAgICAgb25FbnRlclNjZW5lT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoZGF0YSBhcyBJRXZlbnRzWydvbkVudGVyU2NlbmUnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ29uTGVhdmVTY2VuZSc6IHtcbiAgICAgICAgICBvbkxlYXZlU2NlbmVPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ29uTGVhdmVTY2VuZSddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2NlbmVTdGFydCc6IHtcbiAgICAgICAgICBvblNjZW5lUmVhZHlPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3NjZW5lU3RhcnQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3BsYXllckV4cHJlc3Npb24nOiB7XG4gICAgICAgICAgb25QbGF5ZXJFeHByZXNzaW9uT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoZGF0YSBhcyBJRXZlbnRzWydwbGF5ZXJFeHByZXNzaW9uJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd2aWRlb0V2ZW50Jzoge1xuICAgICAgICAgIGNvbnN0IHZpZGVvRGF0YSA9IGRhdGEgYXMgSUV2ZW50c1sndmlkZW9FdmVudCddXG4gICAgICAgICAgb25WaWRlb0V2ZW50Lm5vdGlmeU9ic2VydmVycyh2aWRlb0RhdGEpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdwcm9maWxlQ2hhbmdlZCc6IHtcbiAgICAgICAgICBvblByb2ZpbGVDaGFuZ2VkLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3Byb2ZpbGVDaGFuZ2VkJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdwbGF5ZXJDb25uZWN0ZWQnOiB7XG4gICAgICAgICAgb25QbGF5ZXJDb25uZWN0ZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3BsYXllckNvbm5lY3RlZCddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncGxheWVyRGlzY29ubmVjdGVkJzoge1xuICAgICAgICAgIG9uUGxheWVyRGlzY29ubmVjdGVkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoZGF0YSBhcyBJRXZlbnRzWydwbGF5ZXJEaXNjb25uZWN0ZWQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ29uUmVhbG1DaGFuZ2VkJzoge1xuICAgICAgICAgIG9uUmVhbG1DaGFuZ2VkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoZGF0YSBhcyBJRXZlbnRzWydvblJlYWxtQ2hhbmdlZCddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncGxheWVyQ2xpY2tlZCc6IHtcbiAgICAgICAgICBvblBsYXllckNsaWNrZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3BsYXllckNsaWNrZWQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2NvbW1zJzoge1xuICAgICAgICAgIG9uQ29tbXNNZXNzYWdlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ2NvbW1zJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
146
+ const SDK7ComponentsObservable = processObservables();
147
+ function processObservables() {
148
+ if (globalThis.__OBSERVABLES_FALLBACK_SUPPORT)
149
+ return;
150
+ const subscriptions = new Set();
151
+ function subscribe(eventName) {
152
+ if (subscriptions.has(eventName))
153
+ return;
154
+ switch (eventName) {
155
+ case 'playerClicked': {
156
+ subscribePlayerClick();
157
+ }
158
+ case 'onEnterScene':
159
+ case 'playerConnected': {
160
+ subscribeEnterScene();
161
+ }
162
+ case 'onLeaveScene':
163
+ case 'playerDisconnected': {
164
+ subscribeLeaveScene();
165
+ }
166
+ case 'onRealmChanged': {
167
+ subscribeRealmChange();
168
+ }
169
+ case 'playerExpression': {
170
+ subscribePlayerExpression();
171
+ }
172
+ case 'profileChanged': {
173
+ subscribeProfileChange();
174
+ }
175
+ }
176
+ subscriptions.add(eventName);
177
+ }
178
+ /**
179
+ * PLAYER ENTER/CONNECTED observable
180
+ */
181
+ function subscribeEnterScene() {
182
+ players.onEnterScene((player) => {
183
+ if (subscriptions.has('onEnterScene')) {
184
+ onEnterSceneObservable.notifyObservers({ userId: player.userId });
185
+ }
186
+ if (subscriptions.has('playerConnected')) {
187
+ onPlayerConnectedObservable.notifyObservers({ userId: player.userId });
188
+ }
189
+ });
190
+ }
191
+ /**
192
+ * PLAYER LEAVE/DISCONNECTED observable
193
+ */
194
+ function subscribeLeaveScene() {
195
+ players.onLeaveScene((userId) => {
196
+ if (subscriptions.has('onLeaveScene')) {
197
+ onLeaveSceneObservable.notifyObservers({ userId });
198
+ }
199
+ if (subscriptions.has('playerDisconnected')) {
200
+ onPlayerDisconnectedObservable.notifyObservers({ userId });
201
+ }
202
+ });
203
+ }
204
+ /**
205
+ * REALM CHANGE observable
206
+ */
207
+ function subscribeRealmChange() {
208
+ RealmInfo.onChange(engine.RootEntity, (value) => {
209
+ if (value) {
210
+ onRealmChangedObservable.notifyObservers({
211
+ domain: value.baseUrl,
212
+ displayName: value.realmName,
213
+ room: value.room ?? '',
214
+ serverName: value.realmName
215
+ });
216
+ }
217
+ });
218
+ }
219
+ /**
220
+ * PLAYER/AVATAR CLICKED observable
221
+ */
222
+ function subscribePlayerClick() {
223
+ const playerEntities = new Set();
224
+ engine.addSystem(() => {
225
+ for (const [entity] of engine.getEntitiesWith(PlayerIdentityData)) {
226
+ if (playerEntities.has(entity))
227
+ return;
228
+ playerEntities.add(entity);
229
+ PointerEventsResult.onChange(entity, (data) => {
230
+ if (data?.hit) {
231
+ onPlayerClickedObservable.notifyObservers({
232
+ userId: PlayerIdentityData.getOrNull(entity)?.address ?? '',
233
+ ray: {
234
+ direction: data.hit.direction,
235
+ distance: data.hit.length,
236
+ origin: data.hit.globalOrigin
237
+ }
238
+ });
239
+ }
240
+ });
241
+ }
242
+ });
243
+ }
244
+ /**
245
+ * Player expression observable
246
+ */
247
+ function subscribePlayerExpression() {
248
+ AvatarEmoteCommand.onChange(engine.PlayerEntity, (value) => {
249
+ onPlayerExpressionObservable.notifyObservers({ expressionId: value?.emoteUrn ?? '' });
250
+ });
251
+ }
252
+ /**
253
+ * PROFILE CHANGE observable
254
+ */
255
+ function subscribeProfileChange() {
256
+ AvatarBase.onChange(engine.PlayerEntity, () => {
257
+ if (!profileAddress)
258
+ return;
259
+ onProfileChanged.notifyObservers({ ethAddress: profileAddress, version: 0 });
260
+ });
261
+ AvatarEquippedData.onChange(engine.PlayerEntity, () => {
262
+ if (!profileAddress)
263
+ return;
264
+ onProfileChanged.notifyObservers({ ethAddress: profileAddress, version: 0 });
265
+ });
266
+ }
267
+ // Flag to call once the scene is initalized.
268
+ let sceneReady = false;
269
+ let profileAddress;
270
+ function observableSystem() {
271
+ if (sceneReady && profileAddress) {
272
+ return engine.removeSystem(observableSystem);
273
+ }
274
+ if (!sceneReady) {
275
+ sceneReady = true;
276
+ onSceneReadyObservable.notifyObservers({});
277
+ }
278
+ if (profileAddress)
279
+ return;
280
+ profileAddress = PlayerIdentityData.getOrNull(engine.PlayerEntity)?.address;
281
+ }
282
+ engine.addSystem(observableSystem);
283
+ return { subscribe };
284
+ }
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb2JzZXJ2YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2xELE9BQU8sRUFDTCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUVsQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLFNBQVMsRUFFVCxNQUFNLEVBQ1AsTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRixPQUFPLE9BQU8sTUFBTSxXQUFXLENBQUE7QUEwRi9COzs7O0dBSUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQXdCO0lBQ2hELE9BQU8sR0FBRyxFQUFFO1FBQ1YsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFLLFVBQWtCLENBQUMsOEJBQThCLEVBQUU7WUFDL0UsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN2RDthQUFNO1lBQ0wsd0JBQXdCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQy9DO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLFVBQVUsQ0FBMEIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtBQUMvRzs7OE1BRThNO0FBQzlNLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQTtBQUVsRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxVQUFVLENBQTBCLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7QUFFL0c7OzhNQUU4TTtBQUM5TSxNQUFNLENBQUMs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QzdDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFVBQVUsR0FBRyxJQUFJLENBQUE7WUFDakIsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQzNDO1FBQ0QsSUFBSSxjQUFjO1lBQUUsT0FBTTtRQUMxQixjQUFjLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUE7SUFDN0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUVsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuL2ludGVybmFsL09ic2VydmFibGUnXG5pbXBvcnQge1xuICBBdmF0YXJCYXNlLFxuICBBdmF0YXJFbW90ZUNvbW1hbmQsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSxcbiAgRW50aXR5LFxuICBQbGF5ZXJJZGVudGl0eURhdGEsXG4gIFBvaW50ZXJFdmVudHNSZXN1bHQsXG4gIFJlYWxtSW5mbyxcbiAgVmVjdG9yM1R5cGUsXG4gIGVuZ2luZVxufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1hbnlFbnRpdHlBY3Rpb24sIFNlbmRCYXRjaFJlc3BvbnNlLCBzdWJzY3JpYmUgfSBmcm9tICd+c3lzdGVtL0VuZ2luZUFwaSdcbmltcG9ydCBwbGF5ZXJzIGZyb20gJy4vcGxheWVycydcblxuLy8vIC0tLSBFVkVOVFMgLS0tXG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBJRXZlbnROYW1lcyA9IGtleW9mIElFdmVudHNcblxuLyoqXG4gKiBAcHVibGljXG4gKiBOb3RlOiBEb24ndCB1c2UgYG9uYCBwcmVmaXggZm9yIElFdmVudHMgdG8gYXZvaWQgcmVkdW5kYW5jeSB3aXRoIGBldmVudC5vbihcIm9uRXZlbnROYW1lXCIpYCBzeW50YXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV2ZW50cyB7XG4gIHBsYXllckV4cHJlc3Npb246IHtcbiAgICBleHByZXNzaW9uSWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIHNjZW5lXG4gICAqL1xuICBvbkVudGVyU2NlbmU6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBsZWF2ZXMgdGhlIHNjZW5lXG4gICAqL1xuICBvbkxlYXZlU2NlbmU6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgYWZ0ZXIgcmVjZWl2aW5nIGEgY29tbXMgbWVzc2FnZS5cbiAgICovXG4gIGNvbW1zOiB7XG4gICAgc2VuZGVyOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRyaWdnZXJlZCBvbmNlIHRoZSBzY2VuZSBzaG91bGQgc3RhcnQuXG4gICAqL1xuICBzY2VuZVN0YXJ0OiB1bmtub3duXG5cbiAgLyoqIFRoaXMgaXMgdHJpZ2dlcmVkIGF0IGxlYXN0IGZvciBlYWNoIHZpZGVvU3RhdHVzIGNoYW5nZSAqL1xuICB2aWRlb0V2ZW50OiB7XG4gICAgY29tcG9uZW50SWQ6IHN0cmluZ1xuICAgIHZpZGVvQ2xpcElkOiBzdHJpbmdcbiAgICAvKiogU3RhdHVzLCBjYW4gYmUgTk9ORSA9IDAsIEVSUk9SID0gMSwgTE9BRElORyA9IDIsIFJFQURZID0gMywgUExBWUlORyA9IDQsQlVGRkVSSU5HID0gNSAqL1xuICAgIHZpZGVvU3RhdHVzOiBudW1iZXJcbiAgICAvKiogQ3VycmVudCBvZmZzZXQgcG9zaXRpb24gaW4gc2Vjb25kcyAqL1xuICAgIGN1cnJlbnRPZmZzZXQ6IG51bWJlclxuICAgIC8qKiBWaWRlbyBsZW5ndGggaW4gc2Vjb25kcy4gQ2FuIGJlIC0xICovXG4gICAgdG90YWxWaWRlb0xlbmd0aDogbnVtYmVyXG4gIH1cblxuICAvKiogVGhpcyBpcyB0cmlnZ2VyIGV2ZXJ5dGltZSBhIHByb2ZpbGUgaXMgY2hhbmdlZCAqL1xuICBwcm9maWxlQ2hhbmdlZDoge1xuICAgIGV0aEFkZHJlc3M6IHN0cmluZ1xuICAgIHZlcnNpb246IG51bWJlclxuICB9XG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIHBlZXIncyBhdmF0YXIgaXMgY29ubmVjdGVkIGFuZCB2aXNpYmxlICovXG4gIHBsYXllckNvbm5lY3RlZDoge1xuICAgIHVzZXJJZDogc3RyaW5nXG4gIH1cblxuICAvKiogVHJpZ2dlcmVkIHdoZW4gcGVlciBkaXNjb25uZWN0IGFuZC9vciBpdCBhdmF0YXIgaXMgc2V0IGludmlzaWJsZSBieSBjb21tcyAqL1xuICBwbGF5ZXJEaXNjb25uZWN0ZWQ6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIGN1cnJlbnQgcmVhbG0gb3IgaXNsYW5kIGNoYW5nZXMgKi9cbiAgb25SZWFsbUNoYW5nZWQ6IHtcbiAgICBkb21haW46IHN0cmluZ1xuICAgIHJvb206IHN0cmluZ1xuICAgIHNlcnZlck5hbWU6IHN0cmluZ1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmdcbiAgfVxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBvdGhlciBwbGF5ZXIncyBhdmF0YXIgaXMgY2xpY2tlZCAqL1xuICBwbGF5ZXJDbGlja2VkOiB7XG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICByYXk6IHtcbiAgICAgIG9yaWdpbjogVmVjdG9yM1R5cGVcbiAgICAgIGRpcmVjdGlvbjogVmVjdG9yM1R5cGVcbiAgICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgY2FsbGJhY2sgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIE9ic2VydmFibGVcbiAqIGNvbnN0cnVjdG9yIHRvIHN1YnNjcmliZSB0byB0aGUgZXZlbnRzIG9mIHRoZSBEZWNlbnRyYWxhbmRJbnRlcmZhY2VcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3Vic2NyaWJlcihldmVudE5hbWU6IGtleW9mIElFdmVudHMpIHtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAoZXZlbnROYW1lID09PSAnY29tbXMnIHx8IChnbG9iYWxUaGlzIGFzIGFueSkuX19PQlNFUlZBQkxFU19GQUxMQkFDS19TVVBQT1JUKSB7XG4gICAgICBzdWJzY3JpYmUoeyBldmVudElkOiBldmVudE5hbWUgfSkuY2F0Y2goY29uc29sZS5lcnJvcilcbiAgICB9IGVsc2Uge1xuICAgICAgU0RLN0NvbXBvbmVudHNPYnNlcnZhYmxlPy5zdWJzY3JpYmUoZXZlbnROYW1lKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoZXNlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGFmdGVyIHlvdXIgY2hhcmFjdGVyIGVudGVycyB0aGUgc2NlbmUuXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25FbnRlclNjZW5lT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ29uRW50ZXJTY2VuZSddPihjcmVhdGVTdWJzY3JpYmVyKCdvbkVudGVyU2NlbmUnKSlcbi8qKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC4gVXNlIG9uRW50ZXJTY2VuZU9ic2VydmFibGUgaW5zdGVhZC4gKi9cbmV4cG9ydCBjb25zdCBvbkVudGVyU2NlbmUgPSBvbkVudGVyU2NlbmVPYnNlcnZhYmxlXG5cbi8qKlxuICogVGhlc2UgZXZlbnRzIGFyZSB0cmlnZ2VyZWQgYWZ0ZXIgeW91ciBjaGFyYWN0ZXIgbGVhdmVzIHRoZSBzY2VuZS5cbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvbkxlYXZlU2NlbmVPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1snb25MZWF2ZVNjZW5lJ10+KGNyZWF0ZVN1YnNjcmliZXIoJ29uTGVhdmVTY2VuZScpKVxuXG4vKiogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuIFVzZSBvbkxlYXZlU2NlbmVPYnNlcnZhYmxlIGluc3RlYWQuICovXG5leHBvcnQgY29uc3Qgb25MZWF2ZVNjZW5lID0gb25MZWF2ZVNjZW5lT2JzZXJ2YWJsZVxuXG4vKipcbiAqIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIGFmdGVyIGFsbCB0aGUgcmVzb3VyY2VzIG9mIHRoZSBzY2VuZSB3ZXJlIGxvYWRlZCAobW9kZWxzLCB0ZXh0dXJlcywgZXRjLi4uKVxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uU2NlbmVSZWFkeU9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydzY2VuZVN0YXJ0J10+KGNyZWF0ZVN1YnNjcmliZXIoJ3NjZW5lU3RhcnQnKSlcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25QbGF5ZXJFeHByZXNzaW9uT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3BsYXllckV4cHJlc3Npb24nXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ3BsYXllckV4cHJlc3Npb24nKVxuKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblZpZGVvRXZlbnQgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWyd2aWRlb0V2ZW50J10+KGNyZWF0ZVN1YnNjcmliZXIoJ3ZpZGVvRXZlbnQnKSlcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25Qcm9maWxlQ2hhbmdlZCA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3Byb2ZpbGVDaGFuZ2VkJ10+KGNyZWF0ZVN1YnNjcmliZXIoJ3Byb2ZpbGVDaGFuZ2VkJykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUGxheWVyQ29ubmVjdGVkT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3BsYXllckNvbm5lY3RlZCddPihcbiAgY3JlYXRlU3Vic2NyaWJlcigncGxheWVyQ29ubmVjdGVkJylcbilcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25QbGF5ZXJEaXNjb25uZWN0ZWRPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1sncGxheWVyRGlzY29ubmVjdGVkJ10+KFxuICBjcmVhdGVTdWJzY3JpYmVyKCdwbGF5ZXJEaXNjb25uZWN0ZWQnKVxuKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblJlYWxtQ2hhbmdlZE9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydvblJlYWxtQ2hhbmdlZCddPihjcmVhdGVTdWJzY3JpYmVyKCdvblJlYWxtQ2hhbmdlZCcpKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblBsYXllckNsaWNrZWRPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1sncGxheWVyQ2xpY2tlZCddPihjcmVhdGVTdWJzY3JpYmVyKCdwbGF5ZXJDbGlja2VkJykpXG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25Db21tc01lc3NhZ2UgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydjb21tcyddPihjcmVhdGVTdWJzY3JpYmVyKCdjb21tcycpKVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgdGhpcyBpcyBhbiBPTEQgQVBJLlxuICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBTREs2IHNlbmRCYXRjaCB0byBwb2xsIGV2ZW50cyBmcm9tIHRoZSByZW5kZXJlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9sbEV2ZW50cyhzZW5kQmF0Y2g6IChib2R5OiBNYW55RW50aXR5QWN0aW9uKSA9PiBQcm9taXNlPFNlbmRCYXRjaFJlc3BvbnNlPikge1xuICBjb25zdCB7IGV2ZW50cyB9ID0gYXdhaXQgc2VuZEJhdGNoKHsgYWN0aW9uczogW10gfSlcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLmdlbmVyaWMpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGUuZ2VuZXJpYy5ldmVudERhdGEpXG4gICAgICBzd2l0Y2ggKGUuZ2VuZXJpYy5ldmVudElkKSB7XG4gICAgICAgIGNhc2UgJ29uRW50ZXJTY2VuZSc6IHtcbiAgICAgICAgICBvbkVudGVyU2NlbmVPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ29uRW50ZXJTY2VuZSddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnb25MZWF2ZVNjZW5lJzoge1xuICAgICAgICAgIG9uTGVhdmVTY2VuZU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1snb25MZWF2ZVNjZW5lJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzY2VuZVN0YXJ0Jzoge1xuICAgICAgICAgIG9uU2NlbmVSZWFkeU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1snc2NlbmVTdGFydCddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncGxheWVyRXhwcmVzc2lvbic6IHtcbiAgICAgICAgICBvblBsYXllckV4cHJlc3Npb25PYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3BsYXllckV4cHJlc3Npb24nXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ZpZGVvRXZlbnQnOiB7XG4gICAgICAgICAgY29uc3QgdmlkZW9EYXRhID0gZGF0YSBhcyBJRXZlbnRzWyd2aWRlb0V2ZW50J11cbiAgICAgICAgICBvblZpZGVvRXZlbnQubm90aWZ5T2JzZXJ2ZXJzKHZpZGVvRGF0YSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3Byb2ZpbGVDaGFuZ2VkJzoge1xuICAgICAgICAgIG9uUHJvZmlsZUNoYW5nZWQubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1sncHJvZmlsZUNoYW5nZWQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3BsYXllckNvbm5lY3RlZCc6IHtcbiAgICAgICAgICBvblBsYXllckNvbm5lY3RlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1sncGxheWVyQ29ubmVjdGVkJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdwbGF5ZXJEaXNjb25uZWN0ZWQnOiB7XG4gICAgICAgICAgb25QbGF5ZXJEaXNjb25uZWN0ZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3BsYXllckRpc2Nvbm5lY3RlZCddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnb25SZWFsbUNoYW5nZWQnOiB7XG4gICAgICAgICAgb25SZWFsbUNoYW5nZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ29uUmVhbG1DaGFuZ2VkJ10pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdwbGF5ZXJDbGlja2VkJzoge1xuICAgICAgICAgIG9uUGxheWVyQ2xpY2tlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1sncGxheWVyQ2xpY2tlZCddKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnY29tbXMnOiB7XG4gICAgICAgICAgb25Db21tc01lc3NhZ2Uubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1snY29tbXMnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IFNESzdDb21wb25lbnRzT2JzZXJ2YWJsZSA9IHByb2Nlc3NPYnNlcnZhYmxlcygpXG5mdW5jdGlvbiBwcm9jZXNzT2JzZXJ2YWJsZXMoKSB7XG4gIGlmICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fT0JTRVJWQUJMRVNfRkFMTEJBQ0tfU1VQUE9SVCkgcmV0dXJuXG4gIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBuZXcgU2V0PGtleW9mIElFdmVudHM+KClcblxuICBmdW5jdGlvbiBzdWJzY3JpYmUoZXZlbnROYW1lOiBrZXlvZiBJRXZlbnRzKSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbnMuaGFzKGV2ZW50TmFtZSkpIHJldHVyblxuICAgIHN3aXRjaCAoZXZlbnROYW1lKSB7XG4gICAgICBjYXNlICdwbGF5ZXJDbGlja2VkJzoge1xuICAgICAgICBzdWJzY3JpYmVQbGF5ZXJDbGljaygpXG4gICAgICB9XG4gICAgICBjYXNlICdvbkVudGVyU2NlbmUnOlxuICAgICAgY2FzZSAncGxheWVyQ29ubmVjdGVkJzoge1xuICAgICAgICBzdWJzY3JpYmVFbnRlclNjZW5lKClcbiAgICAgIH1cbiAgICAgIGNhc2UgJ29uTGVhdmVTY2VuZSc6XG4gICAgICBjYXNlICdwbGF5ZXJEaXNjb25uZWN0ZWQnOiB7XG4gICAgICAgIHN1YnNjcmliZUxlYXZlU2NlbmUoKVxuICAgICAgfVxuICAgICAgY2FzZSAnb25SZWFsbUNoYW5nZWQnOiB7XG4gICAgICAgIHN1YnNjcmliZVJlYWxtQ2hhbmdlKClcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3BsYXllckV4cHJlc3Npb24nOiB7XG4gICAgICAgIHN1YnNjcmliZVBsYXllckV4cHJlc3Npb24oKVxuICAgICAgfVxuICAgICAgY2FzZSAncHJvZmlsZUNoYW5nZWQnOiB7XG4gICAgICAgIHN1YnNjcmliZVByb2ZpbGVDaGFuZ2UoKVxuICAgICAgfVxuICAgIH1cbiAgICBzdWJzY3JpcHRpb25zLmFkZChldmVudE5hbWUpXG4gIH1cbiAgLyoqXG4gICAqIFBMQVlFUiBFTlRFUi9DT05ORUNURUQgb2JzZXJ2YWJsZVxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlRW50ZXJTY2VuZSgpIHtcbiAgICBwbGF5ZXJzLm9uRW50ZXJTY2VuZSgocGxheWVyKSA9PiB7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9ucy5oYXMoJ29uRW50ZXJTY2VuZScpKSB7XG4gICAgICAgIG9uRW50ZXJTY2VuZU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKHsgdXNlcklkOiBwbGF5ZXIudXNlcklkIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChzdWJzY3JpcHRpb25zLmhhcygncGxheWVyQ29ubmVjdGVkJykpIHtcbiAgICAgICAgb25QbGF5ZXJDb25uZWN0ZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh7IHVzZXJJZDogcGxheWVyLnVzZXJJZCB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgLyoqXG4gICAqIFBMQVlFUiBMRUFWRS9ESVNDT05ORUNURUQgb2JzZXJ2YWJsZVxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlTGVhdmVTY2VuZSgpIHtcbiAgICBwbGF5ZXJzLm9uTGVhdmVTY2VuZSgodXNlcklkKSA9PiB7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9ucy5oYXMoJ29uTGVhdmVTY2VuZScpKSB7XG4gICAgICAgIG9uTGVhdmVTY2VuZU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKHsgdXNlcklkIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChzdWJzY3JpcHRpb25zLmhhcygncGxheWVyRGlzY29ubmVjdGVkJykpIHtcbiAgICAgICAgb25QbGF5ZXJEaXNjb25uZWN0ZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh7IHVzZXJJZCB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgLyoqXG4gICAqIFJFQUxNIENIQU5HRSBvYnNlcnZhYmxlXG4gICAqL1xuICBmdW5jdGlvbiBzdWJzY3JpYmVSZWFsbUNoYW5nZSgpIHtcbiAgICBSZWFsbUluZm8ub25DaGFuZ2UoZW5naW5lLlJvb3RFbnRpdHksICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG9uUmVhbG1DaGFuZ2VkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoe1xuICAgICAgICAgIGRvbWFpbjogdmFsdWUuYmFzZVVybCxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogdmFsdWUucmVhbG1OYW1lLFxuICAgICAgICAgIHJvb206IHZhbHVlLnJvb20gPz8gJycsXG4gICAgICAgICAgc2VydmVyTmFtZTogdmFsdWUucmVhbG1OYW1lXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuICAvKipcbiAgICogUExBWUVSL0FWQVRBUiBDTElDS0VEIG9ic2VydmFibGVcbiAgICovXG4gIGZ1bmN0aW9uIHN1YnNjcmliZVBsYXllckNsaWNrKCkge1xuICAgIGNvbnN0IHBsYXllckVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KClcbiAgICBlbmdpbmUuYWRkU3lzdGVtKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEpKSB7XG4gICAgICAgIGlmIChwbGF5ZXJFbnRpdGllcy5oYXMoZW50aXR5KSkgcmV0dXJuXG4gICAgICAgIHBsYXllckVudGl0aWVzLmFkZChlbnRpdHkpXG5cbiAgICAgICAgUG9pbnRlckV2ZW50c1Jlc3VsdC5vbkNoYW5nZShlbnRpdHksIChkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGE/LmhpdCkge1xuICAgICAgICAgICAgb25QbGF5ZXJDbGlja2VkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoe1xuICAgICAgICAgICAgICB1c2VySWQ6IFBsYXllcklkZW50aXR5RGF0YS5nZXRPck51bGwoZW50aXR5KT8uYWRkcmVzcyA/PyAnJyxcbiAgICAgICAgICAgICAgcmF5OiB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBkYXRhLmhpdC5kaXJlY3Rpb24hLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBkYXRhLmhpdC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgb3JpZ2luOiBkYXRhLmhpdC5nbG9iYWxPcmlnaW4hXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUGxheWVyIGV4cHJlc3Npb24gb2JzZXJ2YWJsZVxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlUGxheWVyRXhwcmVzc2lvbigpIHtcbiAgICBBdmF0YXJFbW90ZUNvbW1hbmQub25DaGFuZ2UoZW5naW5lLlBsYXllckVudGl0eSwgKHZhbHVlKSA9PiB7XG4gICAgICBvblBsYXllckV4cHJlc3Npb25PYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh7IGV4cHJlc3Npb25JZDogdmFsdWU/LmVtb3RlVXJuID8/ICcnIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBQUk9GSUxFIENIQU5HRSBvYnNlcnZhYmxlXG4gICAqL1xuICBmdW5jdGlvbiBzdWJzY3JpYmVQcm9maWxlQ2hhbmdlKCkge1xuICAgIEF2YXRhckJhc2Uub25DaGFuZ2UoZW5naW5lLlBsYXllckVudGl0eSwgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9maWxlQWRkcmVzcykgcmV0dXJuXG4gICAgICBvblByb2ZpbGVDaGFuZ2VkLm5vdGlmeU9ic2VydmVycyh7IGV0aEFkZHJlc3M6IHByb2ZpbGVBZGRyZXNzLCB2ZXJzaW9uOiAwIH0pXG4gICAgfSlcblxuICAgIEF2YXRhckVxdWlwcGVkRGF0YS5vbkNoYW5nZShlbmdpbmUuUGxheWVyRW50aXR5LCAoKSA9PiB7XG4gICAgICBpZiAoIXByb2ZpbGVBZGRyZXNzKSByZXR1cm5cbiAgICAgIG9uUHJvZmlsZUNoYW5nZWQubm90aWZ5T2JzZXJ2ZXJzKHsgZXRoQWRkcmVzczogcHJvZmlsZUFkZHJlc3MsIHZlcnNpb246IDAgfSlcbiAgICB9KVxuICB9XG5cbiAgLy8gRmxhZyB0byBjYWxsIG9uY2UgdGhlIHNjZW5lIGlzIGluaXRhbGl6ZWQuXG4gIGxldCBzY2VuZVJlYWR5ID0gZmFsc2VcbiAgbGV0IHByb2ZpbGVBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBmdW5jdGlvbiBvYnNlcnZhYmxlU3lzdGVtKCkge1xuICAgIGlmIChzY2VuZVJlYWR5ICYmIHByb2ZpbGVBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gZW5naW5lLnJlbW92ZVN5c3RlbShvYnNlcnZhYmxlU3lzdGVtKVxuICAgIH1cbiAgICBpZiAoIXNjZW5lUmVhZHkpIHtcbiAgICAgIHNjZW5lUmVhZHkgPSB0cnVlXG4gICAgICBvblNjZW5lUmVhZHlPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh7fSlcbiAgICB9XG4gICAgaWYgKHByb2ZpbGVBZGRyZXNzKSByZXR1cm5cbiAgICBwcm9maWxlQWRkcmVzcyA9IFBsYXllcklkZW50aXR5RGF0YS5nZXRPck51bGwoZW5naW5lLlBsYXllckVudGl0eSk/LmFkZHJlc3NcbiAgfVxuXG4gIGVuZ2luZS5hZGRTeXN0ZW0ob2JzZXJ2YWJsZVN5c3RlbSlcblxuICByZXR1cm4geyBzdWJzY3JpYmUgfVxufVxuIl19
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dcl/sdk",
3
3
  "description": "",
4
- "version": "7.4.18",
4
+ "version": "7.4.19",
5
5
  "author": "Decentraland",
6
6
  "dependencies": {
7
- "@dcl/ecs": "7.4.18",
7
+ "@dcl/ecs": "7.4.19",
8
8
  "@dcl/ecs-math": "2.0.2",
9
9
  "@dcl/explorer": "1.0.161749-20240401171209.commit-d6d28f4",
10
- "@dcl/js-runtime": "7.4.18",
11
- "@dcl/react-ecs": "7.4.18",
12
- "@dcl/sdk-commands": "7.4.18",
10
+ "@dcl/js-runtime": "7.4.19",
11
+ "@dcl/react-ecs": "7.4.19",
12
+ "@dcl/sdk-commands": "7.4.19",
13
13
  "text-encoding": "0.7.0"
14
14
  },
15
15
  "keywords": [],
@@ -35,5 +35,5 @@
35
35
  },
36
36
  "types": "./index.d.ts",
37
37
  "typings": "./index.d.ts",
38
- "commit": "3236fa68dcccba455a5f20cbf5ab431fd6e82216"
38
+ "commit": "6d2ec97a241339671c7b75c6971003d24d3fe233"
39
39
  }
package/players/index.js CHANGED
@@ -75,4 +75,4 @@ const players = definePlayerHelper(engine);
75
75
  const { getPlayer, onEnterScene, onLeaveScene } = players;
76
76
  export { getPlayer, onEnterScene, onLeaveScene };
77
77
  export default players;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBQ2hELElBQUksY0FBYyxHQUFxRCxTQUFTLENBQUE7SUFDaEYsSUFBSSxjQUFjLEdBQTJDLFNBQVMsQ0FBQTtJQUV0RSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUsIFRyYW5zZm9ybVR5cGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHtcbiAgUGxheWVySWRlbnRpdHlEYXRhIGFzIGRlZmluZVBsYXllcklkZW5pdHlEYXRhLFxuICBBdmF0YXJCYXNlIGFzIGRlZmluZUF2YXRhckJhc2UsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSBhcyBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFBCQXZhdGFyQmFzZSxcbiAgUEJBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFRyYW5zZm9ybSBhcyBkZWZpbmVUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzJ1xuXG50eXBlIEdldFBsYXllckRhdGFSZXEgPSB7XG4gIHVzZXJJZDogc3RyaW5nXG59XG50eXBlIEdldFBsYXllckRhdGFSZXMgPSB7XG4gIGVudGl0eTogRW50aXR5XG4gIG5hbWU6IHN0cmluZ1xuICBpc0d1ZXN0OiBib29sZWFuXG4gIHVzZXJJZDogc3RyaW5nXG4gIGF2YXRhcj86IFBCQXZhdGFyQmFzZVxuICB3ZWFyYWJsZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWyd3ZWFyYWJsZVVybnMnXVxuICBlbW90ZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWydlbW90ZVVybnMnXVxuICBwb3NpdGlvbjogVHJhbnNmb3JtVHlwZVsncG9zaXRpb24nXSB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGRlZmluZVRyYW5zZm9ybShlbmdpbmUpXG4gIGNvbnN0IFBsYXllcklkZW50aXR5RGF0YSA9IGRlZmluZVBsYXllcklkZW5pdHlEYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyRXF1aXBwZWREYXRhID0gZGVmaW5lQXZhdGFyRXF1aXBwZWREYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyQmFzZSA9IGRlZmluZUF2YXRhckJhc2UoZW5naW5lKVxuICBjb25zdCBwbGF5ZXJFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBzdHJpbmc+KClcbiAgbGV0IG9uRW50ZXJTY2VuZUNiOiAoKHBsYXllcjogR2V0UGxheWVyRGF0YVJlcykgPT4gdm9pZCkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgbGV0IG9uTGVhdmVTY2VuZUNiOiAoKHVzZXJJZDogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIGVuZ2luZS5hZGRTeXN0ZW0oKCkgPT4ge1xuICAgIGNvbnN0IHBsYXllcnMgPSBBcnJheS5mcm9tKGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoUGxheWVySWRlbnRpdHlEYXRhLCBBdmF0YXJCYXNlKSlcbiAgICBpZiAocGxheWVycy5sZW5ndGggPT09IHBsYXllckVudGl0aWVzLnNpemUpIHJldHVyblxuXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBpZGVudGl0eV0gb2YgcGxheWVycykge1xuICAgICAgaWYgKCFwbGF5ZXJFbnRpdGllcy5oYXMoZW50aXR5KSkge1xuICAgICAgICBwbGF5ZXJFbnRpdGllcy5zZXQoZW50aXR5LCBpZGVudGl0eS5hZGRyZXNzKVxuXG4gICAgICAgIC8vIENhbGwgb25FbnRlciBjYWxsYmFja1xuICAgICAgICBpZiAob25FbnRlclNjZW5lQ2IpIHtcbiAgICAgICAgICBvbkVudGVyU2NlbmVDYihnZXRQbGF5ZXIoeyB1c2VySWQ6IGlkZW50aXR5LmFkZHJlc3MgfSkhKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMvcmVtb3ZlIGNhbGxiYWNrc1xuICAgICAgICBBdmF0YXJCYXNlLm9uQ2hhbmdlKGVudGl0eSwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWx1ZSAmJiBvbkxlYXZlU2NlbmVDYiAmJiBwbGF5ZXJFbnRpdGllcy5nZXQoZW50aXR5KSkge1xuICAgICAgICAgICAgb25MZWF2ZVNjZW5lQ2IocGxheWVyRW50aXRpZXMuZ2V0KGVudGl0eSkhKVxuICAgICAgICAgICAgcGxheWVyRW50aXRpZXMuZGVsZXRlKGVudGl0eSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgb25FbnRlclNjZW5lKGNiOiAocGxheWVyOiBHZXRQbGF5ZXJEYXRhUmVzKSA9PiB2b2lkKSB7XG4gICAgICBvbkVudGVyU2NlbmVDYiA9IGNiXG4gICAgfSxcbiAgICBvbkxlYXZlU2NlbmUoY2I6ICh1c2VySWQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgb25MZWF2ZVNjZW5lQ2IgPSBjYlxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW5mbyBvZiB0aGUgcGxheWVyIGlmIGl0J3MgaW4gdGhlIHNjZW5lLlxuICAgICAqL1xuICAgIGdldFBsYXllcih1c2VyPzogR2V0UGxheWVyRGF0YVJlcSk6IEdldFBsYXllckRhdGFSZXMgfCBudWxsIHtcbiAgICAgIGZ1bmN0aW9uIGdldEVudGl0eSgpIHtcbiAgICAgICAgaWYgKCF1c2VyPy51c2VySWQpIHJldHVybiBlbmdpbmUuUGxheWVyRW50aXR5XG4gICAgICAgIGZvciAoY29uc3QgW2VudGl0eSwgZGF0YV0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEpKSB7XG4gICAgICAgICAgaWYgKGRhdGEuYWRkcmVzcyA9PT0gdXNlci51c2VySWQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyRW50aXR5ID0gZ2V0RW50aXR5KClcbiAgICAgIGlmICghdXNlckVudGl0eSkgcmV0dXJuIG51bGxcblxuICAgICAgY29uc3QgcGxheWVyRGF0YSA9IFBsYXllcklkZW50aXR5RGF0YS5nZXRPck51bGwodXNlckVudGl0eSlcbiAgICAgIGNvbnN0IGF2YXRhckRhdGEgPSBBdmF0YXJCYXNlLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuICAgICAgY29uc3Qgd2VhcmFibGVzRGF0YSA9IEF2YXRhckVxdWlwcGVkRGF0YS5nZXRPck51bGwodXNlckVudGl0eSlcblxuICAgICAgaWYgKCFwbGF5ZXJEYXRhICYmICFhdmF0YXJEYXRhICYmICF3ZWFyYWJsZXNEYXRhKSByZXR1cm4gbnVsbFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnRpdHk6IHVzZXJFbnRpdHksXG4gICAgICAgIG5hbWU6IGF2YXRhckRhdGE/Lm5hbWUgPz8gJycsXG4gICAgICAgIGlzR3Vlc3Q6ICEhcGxheWVyRGF0YT8uaXNHdWVzdCA/PyBmYWxzZSxcbiAgICAgICAgdXNlcklkOiBwbGF5ZXJEYXRhPy5hZGRyZXNzID8/ICcnLFxuICAgICAgICBhdmF0YXI6IGF2YXRhckRhdGEgPz8gdW5kZWZpbmVkLFxuICAgICAgICB3ZWFyYWJsZXM6IHdlYXJhYmxlc0RhdGE/LndlYXJhYmxlVXJucyA/PyBbXSxcbiAgICAgICAgZW1vdGVzOiB3ZWFyYWJsZXNEYXRhPy5lbW90ZVVybnMgPz8gW10sXG4gICAgICAgIHBvc2l0aW9uOiBUcmFuc2Zvcm0uZ2V0T3JOdWxsKHVzZXJFbnRpdHkpPy5wb3NpdGlvblxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwbGF5ZXJzID0gZGVmaW5lUGxheWVySGVscGVyKGVuZ2luZSlcbmNvbnN0IHsgZ2V0UGxheWVyLCBvbkVudGVyU2NlbmUsIG9uTGVhdmVTY2VuZSB9ID0gcGxheWVyc1xuXG5leHBvcnQgeyBnZXRQbGF5ZXIsIG9uRW50ZXJTY2VuZSwgb25MZWF2ZVNjZW5lIH1cbmV4cG9ydCBkZWZhdWx0IHBsYXllcnNcbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRWhELElBQUksY0FBYyxHQUFxRCxTQUFTLENBQUE7SUFDaEYsSUFBSSxjQUFjLEdBQTJDLFNBQVMsQ0FBQTtJQUV0RSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUsIFRyYW5zZm9ybVR5cGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHtcbiAgUGxheWVySWRlbnRpdHlEYXRhIGFzIGRlZmluZVBsYXllcklkZW5pdHlEYXRhLFxuICBBdmF0YXJCYXNlIGFzIGRlZmluZUF2YXRhckJhc2UsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSBhcyBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFBCQXZhdGFyQmFzZSxcbiAgUEJBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFRyYW5zZm9ybSBhcyBkZWZpbmVUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzJ1xuXG50eXBlIEdldFBsYXllckRhdGFSZXEgPSB7XG4gIHVzZXJJZDogc3RyaW5nXG59XG50eXBlIEdldFBsYXllckRhdGFSZXMgPSB7XG4gIGVudGl0eTogRW50aXR5XG4gIG5hbWU6IHN0cmluZ1xuICBpc0d1ZXN0OiBib29sZWFuXG4gIHVzZXJJZDogc3RyaW5nXG4gIGF2YXRhcj86IFBCQXZhdGFyQmFzZVxuICB3ZWFyYWJsZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWyd3ZWFyYWJsZVVybnMnXVxuICBlbW90ZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWydlbW90ZVVybnMnXVxuICBwb3NpdGlvbjogVHJhbnNmb3JtVHlwZVsncG9zaXRpb24nXSB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGRlZmluZVRyYW5zZm9ybShlbmdpbmUpXG4gIGNvbnN0IFBsYXllcklkZW50aXR5RGF0YSA9IGRlZmluZVBsYXllcklkZW5pdHlEYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyRXF1aXBwZWREYXRhID0gZGVmaW5lQXZhdGFyRXF1aXBwZWREYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyQmFzZSA9IGRlZmluZUF2YXRhckJhc2UoZW5naW5lKVxuICBjb25zdCBwbGF5ZXJFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBzdHJpbmc+KClcblxuICBsZXQgb25FbnRlclNjZW5lQ2I6ICgocGxheWVyOiBHZXRQbGF5ZXJEYXRhUmVzKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBsZXQgb25MZWF2ZVNjZW5lQ2I6ICgodXNlcklkOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgY29uc3QgcGxheWVycyA9IEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEsIEF2YXRhckJhc2UpKVxuICAgIGlmIChwbGF5ZXJzLmxlbmd0aCA9PT0gcGxheWVyRW50aXRpZXMuc2l6ZSkgcmV0dXJuXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGlkZW50aXR5XSBvZiBwbGF5ZXJzKSB7XG4gICAgICBpZiAoIXBsYXllckVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICAgIHBsYXllckVudGl0aWVzLnNldChlbnRpdHksIGlkZW50aXR5LmFkZHJlc3MpXG5cbiAgICAgICAgLy8gQ2FsbCBvbkVudGVyIGNhbGxiYWNrXG4gICAgICAgIGlmIChvbkVudGVyU2NlbmVDYikge1xuICAgICAgICAgIG9uRW50ZXJTY2VuZUNiKGdldFBsYXllcih7IHVzZXJJZDogaWRlbnRpdHkuYWRkcmVzcyB9KSEpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgY2hhbmdlcy9yZW1vdmUgY2FsbGJhY2tzXG4gICAgICAgIEF2YXRhckJhc2Uub25DaGFuZ2UoZW50aXR5LCAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbHVlICYmIG9uTGVhdmVTY2VuZUNiICYmIHBsYXllckVudGl0aWVzLmdldChlbnRpdHkpKSB7XG4gICAgICAgICAgICBvbkxlYXZlU2NlbmVDYihwbGF5ZXJFbnRpdGllcy5nZXQoZW50aXR5KSEpXG4gICAgICAgICAgICBwbGF5ZXJFbnRpdGllcy5kZWxldGUoZW50aXR5KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBvbkVudGVyU2NlbmUoY2I6IChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpIHtcbiAgICAgIG9uRW50ZXJTY2VuZUNiID0gY2JcbiAgICB9LFxuICAgIG9uTGVhdmVTY2VuZShjYjogKHVzZXJJZDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICBvbkxlYXZlU2NlbmVDYiA9IGNiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbmZvIG9mIHRoZSBwbGF5ZXIgaWYgaXQncyBpbiB0aGUgc2NlbmUuXG4gICAgICovXG4gICAgZ2V0UGxheWVyKHVzZXI/OiBHZXRQbGF5ZXJEYXRhUmVxKTogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwge1xuICAgICAgZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgICBpZiAoIXVzZXI/LnVzZXJJZCkgcmV0dXJuIGVuZ2luZS5QbGF5ZXJFbnRpdHlcbiAgICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBkYXRhXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcklkZW50aXR5RGF0YSkpIHtcbiAgICAgICAgICBpZiAoZGF0YS5hZGRyZXNzID09PSB1c2VyLnVzZXJJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGVudGl0eVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVzZXJFbnRpdHkgPSBnZXRFbnRpdHkoKVxuICAgICAgaWYgKCF1c2VyRW50aXR5KSByZXR1cm4gbnVsbFxuXG4gICAgICBjb25zdCBwbGF5ZXJEYXRhID0gUGxheWVySWRlbnRpdHlEYXRhLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuICAgICAgY29uc3QgYXZhdGFyRGF0YSA9IEF2YXRhckJhc2UuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG4gICAgICBjb25zdCB3ZWFyYWJsZXNEYXRhID0gQXZhdGFyRXF1aXBwZWREYXRhLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuXG4gICAgICBpZiAoIXBsYXllckRhdGEgJiYgIWF2YXRhckRhdGEgJiYgIXdlYXJhYmxlc0RhdGEpIHJldHVybiBudWxsXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudGl0eTogdXNlckVudGl0eSxcbiAgICAgICAgbmFtZTogYXZhdGFyRGF0YT8ubmFtZSA/PyAnJyxcbiAgICAgICAgaXNHdWVzdDogISFwbGF5ZXJEYXRhPy5pc0d1ZXN0ID8/IGZhbHNlLFxuICAgICAgICB1c2VySWQ6IHBsYXllckRhdGE/LmFkZHJlc3MgPz8gJycsXG4gICAgICAgIGF2YXRhcjogYXZhdGFyRGF0YSA/PyB1bmRlZmluZWQsXG4gICAgICAgIHdlYXJhYmxlczogd2VhcmFibGVzRGF0YT8ud2VhcmFibGVVcm5zID8/IFtdLFxuICAgICAgICBlbW90ZXM6IHdlYXJhYmxlc0RhdGE/LmVtb3RlVXJucyA/PyBbXSxcbiAgICAgICAgcG9zaXRpb246IFRyYW5zZm9ybS5nZXRPck51bGwodXNlckVudGl0eSk/LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHBsYXllcnMgPSBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lKVxuY29uc3QgeyBnZXRQbGF5ZXIsIG9uRW50ZXJTY2VuZSwgb25MZWF2ZVNjZW5lIH0gPSBwbGF5ZXJzXG5cbmV4cG9ydCB7IGdldFBsYXllciwgb25FbnRlclNjZW5lLCBvbkxlYXZlU2NlbmUgfVxuZXhwb3J0IGRlZmF1bHQgcGxheWVyc1xuIl19
@@ -11,7 +11,6 @@ export function createRendererTransport(engineApi: EngineApiForTransport): Trans
11
11
  const response = await engineApi.crdtSendToRenderer({
12
12
  data: new Uint8Array(message)
13
13
  })
14
-
15
14
  if (response && response.data && response.data.length) {
16
15
  if (rendererTransport.onmessage) {
17
16
  for (const byteArray of response.data) {
@@ -1,257 +1,32 @@
1
1
  import { Observable } from './internal/Observable'
2
- import { QuaternionType, Vector3Type } from '@dcl/ecs'
2
+ import {
3
+ AvatarBase,
4
+ AvatarEmoteCommand,
5
+ AvatarEquippedData,
6
+ Entity,
7
+ PlayerIdentityData,
8
+ PointerEventsResult,
9
+ RealmInfo,
10
+ Vector3Type,
11
+ engine
12
+ } from '@dcl/ecs'
3
13
  import { ManyEntityAction, SendBatchResponse, subscribe } from '~system/EngineApi'
4
-
5
- let subscribeFunction: typeof subscribe = subscribe
6
-
7
- /** @public */
8
- export type InputEventResult = {
9
- /** Origin of the ray, relative to the scene */
10
- origin: Vector3Type
11
- /** Direction vector of the ray (normalized) */
12
- direction: Vector3Type
13
- /** ID of the pointer that triggered the event */
14
- buttonId: number
15
- /** Does this pointer event hit any object? */
16
- hit?: {
17
- /** Length of the ray */
18
- length: number
19
- /** If the ray hits a mesh the intersection point will be this */
20
- hitPoint: Vector3Type
21
- /** If the mesh has a name, it will be assigned to meshName */
22
- meshName: string
23
- /** Normal of the hit */
24
- normal: Vector3Type
25
- /** Normal of the hit, in world space */
26
- worldNormal: Vector3Type
27
- /** Hit entity ID if any */
28
- entityId: unknown
29
- }
30
- }
31
-
32
- /** @public */
33
- export type GlobalInputEventResult = InputEventResult & {
34
- /**
35
- * DOWN = 0,
36
- * UP = 1
37
- */
38
- type: 0 | 1
39
- }
40
-
41
- /** @public */
42
- export type RaycastResponsePayload<T> = {
43
- queryId: string
44
- queryType: string
45
- payload: T
46
- }
47
-
48
- /** @public */
49
- export type GizmoDragEndEvent = {
50
- type: 'gizmoDragEnded'
51
- transforms: Array<{
52
- position: Vector3Type
53
- rotation: QuaternionType
54
- scale: Vector3Type
55
- entityId: unknown
56
- }>
57
- }
58
-
59
- /** @public */
60
- export type GizmoSelectedEvent = {
61
- type: 'gizmoSelected'
62
- gizmoType: 'MOVE' | 'ROTATE' | 'SCALE' | 'NONE'
63
- entities: string[]
64
- }
14
+ import players from './players'
65
15
 
66
16
  /// --- EVENTS ---
67
17
 
68
18
  /** @public */
69
19
  export type IEventNames = keyof IEvents
70
20
 
71
- /** @public */
72
- export type EngineEvent<T extends IEventNames = IEventNames, V = IEvents[T]> = {
73
- /** eventName */
74
- type: T
75
- data: Readonly<V>
76
- }
77
-
78
21
  /**
79
22
  * @public
80
23
  * Note: Don't use `on` prefix for IEvents to avoid redundancy with `event.on("onEventName")` syntax.
81
24
  */
82
25
  export interface IEvents {
83
- /**
84
- * `positionChanged` is triggered when the position of the camera changes
85
- * This event is throttled to 10 times per second.
86
- */
87
- positionChanged: {
88
- /** Camera position relative to the base parcel of the scene */
89
- position: Vector3Type
90
-
91
- /** Camera position, this is a absolute world position */
92
- cameraPosition: Vector3Type
93
-
94
- /** Eye height, in meters. */
95
- playerHeight: number
96
- }
97
-
98
- /**
99
- * `rotationChanged` is triggered when the rotation of the camera changes.
100
- * This event is throttled to 10 times per second.
101
- */
102
- rotationChanged: {
103
- /** Degree vector. Same as entities */
104
- rotation: Vector3Type
105
- /** Rotation quaternion, useful in some scenarios. */
106
- quaternion: QuaternionType
107
- }
108
-
109
- /**
110
- * `cameraModeChanged` is triggered when the user changes the camera mode
111
- */
112
- cameraModeChanged: {
113
- /**
114
- * FIRST_PERSON = 0,
115
- * THIRD_PERSON = 1,
116
- * FREE_CAMERA = 2
117
- */
118
- cameraMode: 0 | 1 | 2
119
- }
120
-
121
- /**
122
- * `idleStateChanged` is triggered when the user not moves for a defined period of time
123
- */
124
- idleStateChanged: {
125
- isIdle: boolean
126
- }
127
-
128
26
  playerExpression: {
129
27
  expressionId: string
130
28
  }
131
29
 
132
- /**
133
- * `pointerUp` is triggered when the user releases an input pointer.
134
- * It could be a VR controller, a touch screen or the mouse.
135
- */
136
- pointerUp: InputEventResult
137
-
138
- /**
139
- * `pointerDown` is triggered when the user press an input pointer.
140
- * It could be a VR controller, a touch screen or the mouse.
141
- */
142
- pointerDown: InputEventResult
143
-
144
- /**
145
- * `pointerEvent` is triggered when the user press or releases an input pointer.
146
- * It could be a VR controller, a touch screen or the mouse.
147
- *
148
- * @deprecated use actionButtonEvent instead
149
- */
150
- pointerEvent: GlobalInputEventResult
151
-
152
- /**
153
- * `actionButtonEvent` is triggered when the user press or releases an input pointer.
154
- * It could be a VR controller, a touch screen or the mouse.
155
- *
156
- * This event is exactly the same as `pointerEvent` but the logic in the ECS had an unsolvable
157
- * condition that required us to create this new event to handle more cases for new buttons.
158
- */
159
- actionButtonEvent: GlobalInputEventResult
160
-
161
- /**
162
- * `raycastResponse` is triggered in response to a raycast query
163
- */
164
- raycastResponse: RaycastResponsePayload<any>
165
-
166
- /**
167
- * `chatMessage` is triggered when the user sends a message through chat entity.
168
- */
169
- chatMessage: {
170
- id: string
171
- sender: string
172
- message: string
173
- isCommand: boolean
174
- }
175
-
176
- /**
177
- * `onChange` is triggered when an entity changes its own internal state.
178
- * Dispatched by the `ui-*` entities when their value is changed. It triggers a callback.
179
- * Notice: Only entities with ID will be listening for click events.
180
- */
181
- onChange: {
182
- value?: any
183
- /** ID of the pointer that triggered the event */
184
- pointerId?: number
185
- }
186
-
187
- /**
188
- * `onEnter` is triggered when the user hits the "Enter" key from the keyboard
189
- * Used principally by the Chat internal scene
190
- */
191
- onEnter: unknown
192
-
193
- /**
194
- * `onPointerLock` is triggered when the user clicks the world canvas and the
195
- * pointer locks to it so the pointer moves the camera
196
- */
197
- onPointerLock: {
198
- locked?: boolean
199
- }
200
-
201
- /**
202
- * `onAnimationEnd` is triggered when an animation clip gets finish
203
- */
204
- onAnimationEnd: {
205
- clipName: string
206
- }
207
-
208
- /**
209
- * `onFocus` is triggered when an entity focus is active.
210
- * Dispatched by the `ui-input` and `ui-password` entities when the value is changed.
211
- * It triggers a callback.
212
- *
213
- * Notice: Only entities with ID will be listening for click events.
214
- */
215
- onFocus: {
216
- /** ID of the entitiy of the event */
217
- entityId: unknown
218
- /** ID of the pointer that triggered the event */
219
- pointerId: number
220
- }
221
-
222
- /**
223
- * `onBlur` is triggered when an entity loses its focus.
224
- * Dispatched by the `ui-input` and `ui-password` entities when the value is changed.
225
- * It triggers a callback.
226
- *
227
- * Notice: Only entities with ID will be listening for click events.
228
- */
229
- onBlur: {
230
- /** ID of the entitiy of the event */
231
- entityId: unknown
232
- /** ID of the pointer that triggered the event */
233
- pointerId: number
234
- }
235
-
236
- /** The onClick event is only used for UI elements */
237
- onClick: {
238
- entityId: unknown
239
- }
240
-
241
- /**
242
- * This event gets triggered when an entity leaves the scene fences.
243
- */
244
- entityOutOfScene: {
245
- entityId: unknown
246
- }
247
-
248
- /**
249
- * This event gets triggered when an entity enters the scene fences.
250
- */
251
- entityBackInScene: {
252
- entityId: unknown
253
- }
254
-
255
30
  /**
256
31
  * This event gets triggered when the user enters the scene
257
32
  */
@@ -279,56 +54,6 @@ export interface IEvents {
279
54
  */
280
55
  sceneStart: unknown
281
56
 
282
- /**
283
- * This is triggered once the builder scene is loaded.
284
- */
285
- builderSceneStart: unknown
286
-
287
- /**
288
- * This is triggered once the builder scene is unloaded.
289
- */
290
- builderSceneUnloaded: unknown
291
-
292
- /**
293
- * After checking entities outside the fences, if any is outside, this event
294
- * will be triggered with all the entities outside the scene.
295
- */
296
- entitiesOutOfBoundaries: {
297
- entities: string[]
298
- }
299
-
300
- uuidEvent: {
301
- uuid: string
302
- payload: any
303
- }
304
-
305
- onTextSubmit: {
306
- text: string
307
- }
308
-
309
- metricsUpdate: {
310
- given: Record<string, number>
311
- limit: Record<string, number>
312
- }
313
-
314
- limitsExceeded: {
315
- given: Record<string, number>
316
- limit: Record<string, number>
317
- }
318
-
319
- /** For gizmos */
320
- gizmoEvent: GizmoDragEndEvent | GizmoSelectedEvent
321
-
322
- externalAction: {
323
- type: string
324
- [key: string]: any
325
- }
326
-
327
- stateEvent: {
328
- type: string
329
- payload: any
330
- }
331
-
332
57
  /** This is triggered at least for each videoStatus change */
333
58
  videoEvent: {
334
59
  componentId: string
@@ -374,12 +99,6 @@ export interface IEvents {
374
99
  distance: number
375
100
  }
376
101
  }
377
-
378
- /** Triggered when pointer start hovering an entities' shape */
379
- pointerHoverEnter: unknown
380
-
381
- /** Triggered when pointer stop hovering an entities' shape */
382
- pointerHoverExit: unknown
383
102
  }
384
103
 
385
104
  /**
@@ -387,9 +106,13 @@ export interface IEvents {
387
106
  * This function generates a callback that is passed to the Observable
388
107
  * constructor to subscribe to the events of the DecentralandInterface
389
108
  */
390
- function createSubscriber(eventName: string) {
109
+ function createSubscriber(eventName: keyof IEvents) {
391
110
  return () => {
392
- subscribeFunction({ eventId: eventName }).catch(console.error)
111
+ if (eventName === 'comms' || (globalThis as any).__OBSERVABLES_FALLBACK_SUPPORT) {
112
+ subscribe({ eventId: eventName }).catch(console.error)
113
+ } else {
114
+ SDK7ComponentsObservable?.subscribe(eventName)
115
+ }
393
116
  }
394
117
  }
395
118
 
@@ -477,14 +200,6 @@ export const onPlayerClickedObservable = new Observable<IEvents['playerClicked']
477
200
  */
478
201
  export const onCommsMessage = new Observable<IEvents['comms']>(createSubscriber('comms'))
479
202
 
480
- /**
481
- * @internal
482
- * Used for testing purpose
483
- */
484
- export function setSubscribeFunction(fn: (event: { eventId: string }) => Promise<any>) {
485
- subscribeFunction = fn
486
- }
487
-
488
203
  /**
489
204
  * @internal
490
205
  * @deprecated this is an OLD API.
@@ -545,3 +260,148 @@ export async function pollEvents(sendBatch: (body: ManyEntityAction) => Promise<
545
260
  }
546
261
  }
547
262
  }
263
+
264
+ const SDK7ComponentsObservable = processObservables()
265
+ function processObservables() {
266
+ if ((globalThis as any).__OBSERVABLES_FALLBACK_SUPPORT) return
267
+ const subscriptions = new Set<keyof IEvents>()
268
+
269
+ function subscribe(eventName: keyof IEvents) {
270
+ if (subscriptions.has(eventName)) return
271
+ switch (eventName) {
272
+ case 'playerClicked': {
273
+ subscribePlayerClick()
274
+ }
275
+ case 'onEnterScene':
276
+ case 'playerConnected': {
277
+ subscribeEnterScene()
278
+ }
279
+ case 'onLeaveScene':
280
+ case 'playerDisconnected': {
281
+ subscribeLeaveScene()
282
+ }
283
+ case 'onRealmChanged': {
284
+ subscribeRealmChange()
285
+ }
286
+ case 'playerExpression': {
287
+ subscribePlayerExpression()
288
+ }
289
+ case 'profileChanged': {
290
+ subscribeProfileChange()
291
+ }
292
+ }
293
+ subscriptions.add(eventName)
294
+ }
295
+ /**
296
+ * PLAYER ENTER/CONNECTED observable
297
+ */
298
+ function subscribeEnterScene() {
299
+ players.onEnterScene((player) => {
300
+ if (subscriptions.has('onEnterScene')) {
301
+ onEnterSceneObservable.notifyObservers({ userId: player.userId })
302
+ }
303
+
304
+ if (subscriptions.has('playerConnected')) {
305
+ onPlayerConnectedObservable.notifyObservers({ userId: player.userId })
306
+ }
307
+ })
308
+ }
309
+ /**
310
+ * PLAYER LEAVE/DISCONNECTED observable
311
+ */
312
+ function subscribeLeaveScene() {
313
+ players.onLeaveScene((userId) => {
314
+ if (subscriptions.has('onLeaveScene')) {
315
+ onLeaveSceneObservable.notifyObservers({ userId })
316
+ }
317
+
318
+ if (subscriptions.has('playerDisconnected')) {
319
+ onPlayerDisconnectedObservable.notifyObservers({ userId })
320
+ }
321
+ })
322
+ }
323
+ /**
324
+ * REALM CHANGE observable
325
+ */
326
+ function subscribeRealmChange() {
327
+ RealmInfo.onChange(engine.RootEntity, (value) => {
328
+ if (value) {
329
+ onRealmChangedObservable.notifyObservers({
330
+ domain: value.baseUrl,
331
+ displayName: value.realmName,
332
+ room: value.room ?? '',
333
+ serverName: value.realmName
334
+ })
335
+ }
336
+ })
337
+ }
338
+ /**
339
+ * PLAYER/AVATAR CLICKED observable
340
+ */
341
+ function subscribePlayerClick() {
342
+ const playerEntities = new Set<Entity>()
343
+ engine.addSystem(() => {
344
+ for (const [entity] of engine.getEntitiesWith(PlayerIdentityData)) {
345
+ if (playerEntities.has(entity)) return
346
+ playerEntities.add(entity)
347
+
348
+ PointerEventsResult.onChange(entity, (data) => {
349
+ if (data?.hit) {
350
+ onPlayerClickedObservable.notifyObservers({
351
+ userId: PlayerIdentityData.getOrNull(entity)?.address ?? '',
352
+ ray: {
353
+ direction: data.hit.direction!,
354
+ distance: data.hit.length,
355
+ origin: data.hit.globalOrigin!
356
+ }
357
+ })
358
+ }
359
+ })
360
+ }
361
+ })
362
+ }
363
+
364
+ /**
365
+ * Player expression observable
366
+ */
367
+ function subscribePlayerExpression() {
368
+ AvatarEmoteCommand.onChange(engine.PlayerEntity, (value) => {
369
+ onPlayerExpressionObservable.notifyObservers({ expressionId: value?.emoteUrn ?? '' })
370
+ })
371
+ }
372
+
373
+ /**
374
+ * PROFILE CHANGE observable
375
+ */
376
+ function subscribeProfileChange() {
377
+ AvatarBase.onChange(engine.PlayerEntity, () => {
378
+ if (!profileAddress) return
379
+ onProfileChanged.notifyObservers({ ethAddress: profileAddress, version: 0 })
380
+ })
381
+
382
+ AvatarEquippedData.onChange(engine.PlayerEntity, () => {
383
+ if (!profileAddress) return
384
+ onProfileChanged.notifyObservers({ ethAddress: profileAddress, version: 0 })
385
+ })
386
+ }
387
+
388
+ // Flag to call once the scene is initalized.
389
+ let sceneReady = false
390
+ let profileAddress: string | undefined
391
+
392
+ function observableSystem() {
393
+ if (sceneReady && profileAddress) {
394
+ return engine.removeSystem(observableSystem)
395
+ }
396
+ if (!sceneReady) {
397
+ sceneReady = true
398
+ onSceneReadyObservable.notifyObservers({})
399
+ }
400
+ if (profileAddress) return
401
+ profileAddress = PlayerIdentityData.getOrNull(engine.PlayerEntity)?.address
402
+ }
403
+
404
+ engine.addSystem(observableSystem)
405
+
406
+ return { subscribe }
407
+ }
@@ -28,6 +28,7 @@ function definePlayerHelper(engine: IEngine) {
28
28
  const AvatarEquippedData = defineAvatarEquippedData(engine)
29
29
  const AvatarBase = defineAvatarBase(engine)
30
30
  const playerEntities = new Map<Entity, string>()
31
+
31
32
  let onEnterSceneCb: ((player: GetPlayerDataRes) => void) | undefined = undefined
32
33
  let onLeaveSceneCb: ((userId: string) => void) | undefined = undefined
33
34