@dcl/sdk 7.0.0-3548419522.commit-ddcf4b7 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ecs.d.ts +1 -0
- package/ecs.js +2 -0
- package/index.d.ts +1 -0
- package/index.js +11 -0
- package/internal/Observable.d.ts +36 -0
- package/internal/Observable.js +190 -0
- package/internal/transports/networkTransport.d.ts +2 -0
- package/internal/transports/networkTransport.js +16 -0
- package/internal/transports/rendererTransport.d.ts +7 -0
- package/internal/transports/rendererTransport.js +39 -0
- package/math.d.ts +3 -0
- package/math.js +4 -0
- package/messageBus.d.ts +10 -0
- package/messageBus.js +43 -0
- package/observables.d.ts +225 -0
- package/observables.js +75 -0
- package/package.json +12 -18
- package/react-ecs.d.ts +3 -0
- package/react-ecs.js +4 -0
- package/src/ecs.ts +1 -0
- package/src/index.ts +18 -0
- package/src/internal/Observable.ts +425 -0
- package/src/internal/transports/networkTransport.ts +24 -0
- package/src/internal/transports/rendererTransport.ts +60 -0
- package/src/math.ts +3 -0
- package/src/messageBus.ts +62 -0
- package/src/observables.ts +579 -0
- package/src/react-ecs.ts +3 -0
- package/tsconfig.json +11 -0
- package/types/tsconfig.ecs7.json +3 -8
- package/dist/ecs7/index.d.ts +0 -4679
- package/dist/ecs7/index.js +0 -15202
- package/dist/ecs7/index.min.js +0 -1
- package/dist/ecs7/index.min.js.map +0 -1
- package/dist/ecs7/proto-definitions/README.md +0 -32
- package/dist/ecs7/proto-definitions/Transform.md +0 -25
- package/dist/ecs7/proto-definitions/animator.proto +0 -19
- package/dist/ecs7/proto-definitions/audio_source.proto +0 -13
- package/dist/ecs7/proto-definitions/audio_stream.proto +0 -11
- package/dist/ecs7/proto-definitions/avatar_attach.proto +0 -19
- package/dist/ecs7/proto-definitions/avatar_modifier_area.proto +0 -19
- package/dist/ecs7/proto-definitions/avatar_shape.proto +0 -32
- package/dist/ecs7/proto-definitions/billboard.proto +0 -17
- package/dist/ecs7/proto-definitions/camera_mode.proto +0 -10
- package/dist/ecs7/proto-definitions/camera_mode_area.proto +0 -14
- package/dist/ecs7/proto-definitions/common/camera_type.proto +0 -8
- package/dist/ecs7/proto-definitions/common/id.md +0 -2
- package/dist/ecs7/proto-definitions/common/id.proto +0 -8
- package/dist/ecs7/proto-definitions/common/input_action.proto +0 -20
- package/dist/ecs7/proto-definitions/common/texts.proto +0 -20
- package/dist/ecs7/proto-definitions/gltf_container.proto +0 -13
- package/dist/ecs7/proto-definitions/material.proto +0 -56
- package/dist/ecs7/proto-definitions/mesh_collider.proto +0 -35
- package/dist/ecs7/proto-definitions/mesh_renderer.proto +0 -30
- package/dist/ecs7/proto-definitions/nft_shape.proto +0 -40
- package/dist/ecs7/proto-definitions/pointer_events_result.proto +0 -25
- package/dist/ecs7/proto-definitions/pointer_hover_feedback.proto +0 -31
- package/dist/ecs7/proto-definitions/pointer_lock.proto +0 -9
- package/dist/ecs7/proto-definitions/raycast.proto +0 -20
- package/dist/ecs7/proto-definitions/raycast_result.proto +0 -25
- package/dist/ecs7/proto-definitions/text_shape.proto +0 -33
- package/dist/ecs7/proto-definitions/ui_background.proto +0 -11
- package/dist/ecs7/proto-definitions/ui_text.proto +0 -17
- package/dist/ecs7/proto-definitions/ui_transform.proto +0 -141
- package/dist/ecs7/proto-definitions/visibility_component.proto +0 -9
- package/dist/playground/snippets/billboard.ts +0 -108
- package/dist/playground/snippets/cube-spawner.ts +0 -39
- package/dist/playground/snippets/info.json +0 -1
- package/dist/playground/snippets/material.ts +0 -48
- package/dist/playground/snippets/mesh.ts +0 -68
- package/dist/playground/snippets/pointer-events.ts +0 -50
- package/dist/playground/snippets/raycast-hit-many.ts +0 -63
- package/dist/playground/snippets/raycast-hit.ts +0 -62
- package/dist/playground/snippets/ui.tsx +0 -134
- package/types/ecs7/index.d.ts +0 -4679
package/observables.d.ts
ADDED
@@ -0,0 +1,225 @@
|
|
1
|
+
import { Observable } from './internal/Observable';
|
2
|
+
import { QuaternionType, Vector3Type } from '@dcl/ecs';
|
3
|
+
export declare type InputEventResult = {
|
4
|
+
origin: Vector3Type;
|
5
|
+
direction: Vector3Type;
|
6
|
+
buttonId: number;
|
7
|
+
hit?: {
|
8
|
+
length: number;
|
9
|
+
hitPoint: Vector3Type;
|
10
|
+
meshName: string;
|
11
|
+
normal: Vector3Type;
|
12
|
+
worldNormal: Vector3Type;
|
13
|
+
entityId: unknown;
|
14
|
+
};
|
15
|
+
};
|
16
|
+
export declare type GlobalInputEventResult = InputEventResult & {
|
17
|
+
type: 0 | 1;
|
18
|
+
};
|
19
|
+
export declare type RaycastResponsePayload<T> = {
|
20
|
+
queryId: string;
|
21
|
+
queryType: string;
|
22
|
+
payload: T;
|
23
|
+
};
|
24
|
+
export declare type GizmoDragEndEvent = {
|
25
|
+
type: 'gizmoDragEnded';
|
26
|
+
transforms: Array<{
|
27
|
+
position: Vector3Type;
|
28
|
+
rotation: QuaternionType;
|
29
|
+
scale: Vector3Type;
|
30
|
+
entityId: unknown;
|
31
|
+
}>;
|
32
|
+
};
|
33
|
+
export declare type GizmoSelectedEvent = {
|
34
|
+
type: 'gizmoSelected';
|
35
|
+
gizmoType: 'MOVE' | 'ROTATE' | 'SCALE' | 'NONE';
|
36
|
+
entities: string[];
|
37
|
+
};
|
38
|
+
export declare type IEventNames = keyof IEvents;
|
39
|
+
export declare type EngineEvent<T extends IEventNames = IEventNames, V = IEvents[T]> = {
|
40
|
+
type: T;
|
41
|
+
data: Readonly<V>;
|
42
|
+
};
|
43
|
+
export interface IEvents {
|
44
|
+
positionChanged: {
|
45
|
+
position: Vector3Type;
|
46
|
+
cameraPosition: Vector3Type;
|
47
|
+
playerHeight: number;
|
48
|
+
};
|
49
|
+
rotationChanged: {
|
50
|
+
rotation: Vector3Type;
|
51
|
+
quaternion: QuaternionType;
|
52
|
+
};
|
53
|
+
cameraModeChanged: {
|
54
|
+
cameraMode: 0 | 1 | 2;
|
55
|
+
};
|
56
|
+
idleStateChanged: {
|
57
|
+
isIdle: boolean;
|
58
|
+
};
|
59
|
+
playerExpression: {
|
60
|
+
expressionId: string;
|
61
|
+
};
|
62
|
+
pointerUp: InputEventResult;
|
63
|
+
pointerDown: InputEventResult;
|
64
|
+
pointerEvent: GlobalInputEventResult;
|
65
|
+
actionButtonEvent: GlobalInputEventResult;
|
66
|
+
raycastResponse: RaycastResponsePayload<any>;
|
67
|
+
chatMessage: {
|
68
|
+
id: string;
|
69
|
+
sender: string;
|
70
|
+
message: string;
|
71
|
+
isCommand: boolean;
|
72
|
+
};
|
73
|
+
onChange: {
|
74
|
+
value?: any;
|
75
|
+
pointerId?: number;
|
76
|
+
};
|
77
|
+
onEnter: unknown;
|
78
|
+
onPointerLock: {
|
79
|
+
locked?: boolean;
|
80
|
+
};
|
81
|
+
onAnimationEnd: {
|
82
|
+
clipName: string;
|
83
|
+
};
|
84
|
+
onFocus: {
|
85
|
+
entityId: unknown;
|
86
|
+
pointerId: number;
|
87
|
+
};
|
88
|
+
onBlur: {
|
89
|
+
entityId: unknown;
|
90
|
+
pointerId: number;
|
91
|
+
};
|
92
|
+
onClick: {
|
93
|
+
entityId: unknown;
|
94
|
+
};
|
95
|
+
entityOutOfScene: {
|
96
|
+
entityId: unknown;
|
97
|
+
};
|
98
|
+
entityBackInScene: {
|
99
|
+
entityId: unknown;
|
100
|
+
};
|
101
|
+
onEnterScene: {
|
102
|
+
userId: string;
|
103
|
+
};
|
104
|
+
onLeaveScene: {
|
105
|
+
userId: string;
|
106
|
+
};
|
107
|
+
comms: {
|
108
|
+
sender: string;
|
109
|
+
message: string;
|
110
|
+
};
|
111
|
+
sceneStart: unknown;
|
112
|
+
builderSceneStart: unknown;
|
113
|
+
builderSceneUnloaded: unknown;
|
114
|
+
entitiesOutOfBoundaries: {
|
115
|
+
entities: string[];
|
116
|
+
};
|
117
|
+
uuidEvent: {
|
118
|
+
uuid: string;
|
119
|
+
payload: any;
|
120
|
+
};
|
121
|
+
onTextSubmit: {
|
122
|
+
text: string;
|
123
|
+
};
|
124
|
+
metricsUpdate: {
|
125
|
+
given: Record<string, number>;
|
126
|
+
limit: Record<string, number>;
|
127
|
+
};
|
128
|
+
limitsExceeded: {
|
129
|
+
given: Record<string, number>;
|
130
|
+
limit: Record<string, number>;
|
131
|
+
};
|
132
|
+
gizmoEvent: GizmoDragEndEvent | GizmoSelectedEvent;
|
133
|
+
externalAction: {
|
134
|
+
type: string;
|
135
|
+
[key: string]: any;
|
136
|
+
};
|
137
|
+
stateEvent: {
|
138
|
+
type: string;
|
139
|
+
payload: any;
|
140
|
+
};
|
141
|
+
videoEvent: {
|
142
|
+
componentId: string;
|
143
|
+
videoClipId: string;
|
144
|
+
videoStatus: number;
|
145
|
+
currentOffset: number;
|
146
|
+
totalVideoLength: number;
|
147
|
+
};
|
148
|
+
profileChanged: {
|
149
|
+
ethAddress: string;
|
150
|
+
version: number;
|
151
|
+
};
|
152
|
+
playerConnected: {
|
153
|
+
userId: string;
|
154
|
+
};
|
155
|
+
playerDisconnected: {
|
156
|
+
userId: string;
|
157
|
+
};
|
158
|
+
onRealmChanged: {
|
159
|
+
domain: string;
|
160
|
+
room: string;
|
161
|
+
serverName: string;
|
162
|
+
displayName: string;
|
163
|
+
};
|
164
|
+
playerClicked: {
|
165
|
+
userId: string;
|
166
|
+
ray: {
|
167
|
+
origin: Vector3Type;
|
168
|
+
direction: Vector3Type;
|
169
|
+
distance: number;
|
170
|
+
};
|
171
|
+
};
|
172
|
+
pointerHoverEnter: unknown;
|
173
|
+
pointerHoverExit: unknown;
|
174
|
+
}
|
175
|
+
export declare const onEnterSceneObservable: Observable<{
|
176
|
+
userId: string;
|
177
|
+
}>;
|
178
|
+
export declare const onEnterScene: Observable<{
|
179
|
+
userId: string;
|
180
|
+
}>;
|
181
|
+
export declare const onLeaveSceneObservable: Observable<{
|
182
|
+
userId: string;
|
183
|
+
}>;
|
184
|
+
export declare const onLeaveScene: Observable<{
|
185
|
+
userId: string;
|
186
|
+
}>;
|
187
|
+
export declare const onSceneReadyObservable: Observable<unknown>;
|
188
|
+
export declare const onPlayerExpressionObservable: Observable<{
|
189
|
+
expressionId: string;
|
190
|
+
}>;
|
191
|
+
export declare const onVideoEvent: Observable<{
|
192
|
+
componentId: string;
|
193
|
+
videoClipId: string;
|
194
|
+
videoStatus: number;
|
195
|
+
currentOffset: number;
|
196
|
+
totalVideoLength: number;
|
197
|
+
}>;
|
198
|
+
export declare const onProfileChanged: Observable<{
|
199
|
+
ethAddress: string;
|
200
|
+
version: number;
|
201
|
+
}>;
|
202
|
+
export declare const onPlayerConnectedObservable: Observable<{
|
203
|
+
userId: string;
|
204
|
+
}>;
|
205
|
+
export declare const onPlayerDisconnectedObservable: Observable<{
|
206
|
+
userId: string;
|
207
|
+
}>;
|
208
|
+
export declare const onRealmChangedObservable: Observable<{
|
209
|
+
domain: string;
|
210
|
+
room: string;
|
211
|
+
serverName: string;
|
212
|
+
displayName: string;
|
213
|
+
}>;
|
214
|
+
export declare const onPlayerClickedObservable: Observable<{
|
215
|
+
userId: string;
|
216
|
+
ray: {
|
217
|
+
origin: Vector3Type;
|
218
|
+
direction: Vector3Type;
|
219
|
+
distance: number;
|
220
|
+
};
|
221
|
+
}>;
|
222
|
+
export declare const onCommsMessage: Observable<{
|
223
|
+
sender: string;
|
224
|
+
message: string;
|
225
|
+
}>;
|
package/observables.js
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
import { Observable } from './internal/Observable';
|
2
|
+
let subscribeFunction = async () => { };
|
3
|
+
function createSubscriber(eventName) {
|
4
|
+
return () => {
|
5
|
+
subscribeFunction({ eventId: eventName }).catch(console.error);
|
6
|
+
};
|
7
|
+
}
|
8
|
+
export const onEnterSceneObservable = new Observable(createSubscriber('onEnterScene'));
|
9
|
+
export const onEnterScene = onEnterSceneObservable;
|
10
|
+
export const onLeaveSceneObservable = new Observable(createSubscriber('onLeaveScene'));
|
11
|
+
export const onLeaveScene = onLeaveSceneObservable;
|
12
|
+
export const onSceneReadyObservable = new Observable(createSubscriber('sceneStart'));
|
13
|
+
export const onPlayerExpressionObservable = new Observable(createSubscriber('playerExpression'));
|
14
|
+
export const onVideoEvent = new Observable(createSubscriber('videoEvent'));
|
15
|
+
export const onProfileChanged = new Observable(createSubscriber('profileChanged'));
|
16
|
+
export const onPlayerConnectedObservable = new Observable(createSubscriber('playerConnected'));
|
17
|
+
export const onPlayerDisconnectedObservable = new Observable(createSubscriber('playerDisconnected'));
|
18
|
+
export const onRealmChangedObservable = new Observable(createSubscriber('onRealmChanged'));
|
19
|
+
export const onPlayerClickedObservable = new Observable(createSubscriber('playerClicked'));
|
20
|
+
export const onCommsMessage = new Observable(createSubscriber('comms'));
|
21
|
+
export function setSubscribeFunction(fn) {
|
22
|
+
subscribeFunction = fn;
|
23
|
+
}
|
24
|
+
export async function pollEvents(sendBatch) {
|
25
|
+
const { events } = await sendBatch({ actions: [] });
|
26
|
+
for (const e of events) {
|
27
|
+
if (e.generic) {
|
28
|
+
const data = JSON.parse(e.generic.eventData);
|
29
|
+
switch (e.generic.eventId) {
|
30
|
+
case 'onEnterScene': {
|
31
|
+
onEnterSceneObservable.notifyObservers(data);
|
32
|
+
break;
|
33
|
+
}
|
34
|
+
case 'onLeaveScene': {
|
35
|
+
onLeaveSceneObservable.notifyObservers(data);
|
36
|
+
break;
|
37
|
+
}
|
38
|
+
case 'sceneStart': {
|
39
|
+
onSceneReadyObservable.notifyObservers(data);
|
40
|
+
break;
|
41
|
+
}
|
42
|
+
case 'playerExpression': {
|
43
|
+
onPlayerExpressionObservable.notifyObservers(data);
|
44
|
+
break;
|
45
|
+
}
|
46
|
+
case 'videoEvent': {
|
47
|
+
const videoData = data;
|
48
|
+
onVideoEvent.notifyObservers(videoData);
|
49
|
+
break;
|
50
|
+
}
|
51
|
+
case 'profileChanged': {
|
52
|
+
onProfileChanged.notifyObservers(data);
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
case 'playerConnected': {
|
56
|
+
onPlayerConnectedObservable.notifyObservers(data);
|
57
|
+
break;
|
58
|
+
}
|
59
|
+
case 'playerDisconnected': {
|
60
|
+
onPlayerDisconnectedObservable.notifyObservers(data);
|
61
|
+
break;
|
62
|
+
}
|
63
|
+
case 'onRealmChanged': {
|
64
|
+
onRealmChangedObservable.notifyObservers(data);
|
65
|
+
break;
|
66
|
+
}
|
67
|
+
case 'playerClicked': {
|
68
|
+
onPlayerClickedObservable.notifyObservers(data);
|
69
|
+
break;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb2JzZXJ2YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBSWxELElBQUksaUJBQWlCLEdBRUEsS0FBSyxJQUFJLEVBQUUsR0FBRSxDQUFDLENBQUE7QUFpWW5DLFNBQVMsZ0JBQWdCLENBQUMsU0FBaUI7SUFDekMsT0FBTyxHQUFHLEVBQUU7UUFDVixpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQU9ELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksVUFBVSxDQUNsRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FDakMsQ0FBQTtBQUtELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQTtBQU9sRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLFVBQVUsQ0FDbEQsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQ2pDLENBQUE7QUFLRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUE7QUFPbEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxVQUFVLENBQ2xELGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFBO0FBTUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxVQUFVLENBRXhELGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQTtBQU12QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQ3hDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFBO0FBTUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxVQUFV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ZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuL2ludGVybmFsL09ic2VydmFibGUnXG5pbXBvcnQgeyBRdWF0ZXJuaW9uVHlwZSwgVmVjdG9yM1R5cGUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1hbnlFbnRpdHlBY3Rpb24sIFNlbmRCYXRjaFJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9FbmdpbmVBcGknXG5cbmxldCBzdWJzY3JpYmVGdW5jdGlvbjogKGV2ZW50OiB7XG4gIGV2ZW50SWQ6IHN0cmluZ1xufSkgPT4gUHJvbWlzZTxhbnk+ID0gYXN5bmMgKCkgPT4ge31cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIElucHV0RXZlbnRSZXN1bHQgPSB7XG4gIC8qKiBPcmlnaW4gb2YgdGhlIHJheSwgcmVsYXRpdmUgdG8gdGhlIHNjZW5lICovXG4gIG9yaWdpbjogVmVjdG9yM1R5cGVcbiAgLyoqIERpcmVjdGlvbiB2ZWN0b3Igb2YgdGhlIHJheSAobm9ybWFsaXplZCkgKi9cbiAgZGlyZWN0aW9uOiBWZWN0b3IzVHlwZVxuICAvKiogSUQgb2YgdGhlIHBvaW50ZXIgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50ICovXG4gIGJ1dHRvbklkOiBudW1iZXJcbiAgLyoqIERvZXMgdGhpcyBwb2ludGVyIGV2ZW50IGhpdCBhbnkgb2JqZWN0PyAqL1xuICBoaXQ/OiB7XG4gICAgLyoqIExlbmd0aCBvZiB0aGUgcmF5ICovXG4gICAgbGVuZ3RoOiBudW1iZXJcbiAgICAvKiogSWYgdGhlIHJheSBoaXRzIGEgbWVzaCB0aGUgaW50ZXJzZWN0aW9uIHBvaW50IHdpbGwgYmUgdGhpcyAqL1xuICAgIGhpdFBvaW50OiBWZWN0b3IzVHlwZVxuICAgIC8qKiBJZiB0aGUgbWVzaCBoYXMgYSBuYW1lLCBpdCB3aWxsIGJlIGFzc2lnbmVkIHRvIG1lc2hOYW1lICovXG4gICAgbWVzaE5hbWU6IHN0cmluZ1xuICAgIC8qKiBOb3JtYWwgb2YgdGhlIGhpdCAqL1xuICAgIG5vcm1hbDogVmVjdG9yM1R5cGVcbiAgICAvKiogTm9ybWFsIG9mIHRoZSBoaXQsIGluIHdvcmxkIHNwYWNlICovXG4gICAgd29ybGROb3JtYWw6IFZlY3RvcjNUeXBlXG4gICAgLyoqIEhpdCBlbnRpdHkgSUQgaWYgYW55ICovXG4gICAgZW50aXR5SWQ6IHVua25vd25cbiAgfVxufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgR2xvYmFsSW5wdXRFdmVudFJlc3VsdCA9IElucHV0RXZlbnRSZXN1bHQgJiB7XG4gIC8qKlxuICAgKiBET1dOID0gMCxcbiAgICogVVAgPSAxXG4gICAqL1xuICB0eXBlOiAwIHwgMVxufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgUmF5Y2FzdFJlc3BvbnNlUGF5bG9hZDxUPiA9IHtcbiAgcXVlcnlJZDogc3RyaW5nXG4gIHF1ZXJ5VHlwZTogc3RyaW5nXG4gIHBheWxvYWQ6IFRcbn1cblxuLyoqIEBwdWJsaWMgKi9cbmV4cG9ydCB0eXBlIEdpem1vRHJhZ0VuZEV2ZW50ID0ge1xuICB0eXBlOiAnZ2l6bW9EcmFnRW5kZWQnXG4gIHRyYW5zZm9ybXM6IEFycmF5PHtcbiAgICBwb3NpdGlvbjogVmVjdG9yM1R5cGVcbiAgICByb3RhdGlvbjogUXVhdGVybmlvblR5cGVcbiAgICBzY2FsZTogVmVjdG9yM1R5cGVcbiAgICBlbnRpdHlJZDogdW5rbm93blxuICB9PlxufVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgR2l6bW9TZWxlY3RlZEV2ZW50ID0ge1xuICB0eXBlOiAnZ2l6bW9TZWxlY3RlZCdcbiAgZ2l6bW9UeXBlOiAnTU9WRScgfCAnUk9UQVRFJyB8ICdTQ0FMRScgfCAnTk9ORSdcbiAgZW50aXRpZXM6IHN0cmluZ1tdXG59XG5cbi8vLyAtLS0gRVZFTlRTIC0tLVxuXG4vKiogQHB1YmxpYyAqL1xuZXhwb3J0IHR5cGUgSUV2ZW50TmFtZXMgPSBrZXlvZiBJRXZlbnRzXG5cbi8qKiBAcHVibGljICovXG5leHBvcnQgdHlwZSBFbmdpbmVFdmVudDxUIGV4dGVuZHMgSUV2ZW50TmFtZXMgPSBJRXZlbnROYW1lcywgViA9IElFdmVudHNbVF0+ID0ge1xuICAvKiogZXZlbnROYW1lICovXG4gIHR5cGU6IFRcbiAgZGF0YTogUmVhZG9ubHk8Vj5cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKiBOb3RlOiBEb24ndCB1c2UgYG9uYCBwcmVmaXggZm9yIElFdmVudHMgdG8gYXZvaWQgcmVkdW5kYW5jeSB3aXRoIGBldmVudC5vbihcIm9uRXZlbnROYW1lXCIpYCBzeW50YXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV2ZW50cyB7XG4gIC8qKlxuICAgKiBgcG9zaXRpb25DaGFuZ2VkYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNhbWVyYSBjaGFuZ2VzXG4gICAqIFRoaXMgZXZlbnQgaXMgdGhyb3R0bGVkIHRvIDEwIHRpbWVzIHBlciBzZWNvbmQuXG4gICAqL1xuICBwb3NpdGlvbkNoYW5nZWQ6IHtcbiAgICAvKiogQ2FtZXJhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBiYXNlIHBhcmNlbCBvZiB0aGUgc2NlbmUgKi9cbiAgICBwb3NpdGlvbjogVmVjdG9yM1R5cGVcblxuICAgIC8qKiBDYW1lcmEgcG9zaXRpb24sIHRoaXMgaXMgYSBhYnNvbHV0ZSB3b3JsZCBwb3NpdGlvbiAqL1xuICAgIGNhbWVyYVBvc2l0aW9uOiBWZWN0b3IzVHlwZVxuXG4gICAgLyoqIEV5ZSBoZWlnaHQsIGluIG1ldGVycy4gKi9cbiAgICBwbGF5ZXJIZWlnaHQ6IG51bWJlclxuICB9XG5cbiAgLyoqXG4gICAqIGByb3RhdGlvbkNoYW5nZWRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSByb3RhdGlvbiBvZiB0aGUgY2FtZXJhIGNoYW5nZXMuXG4gICAqIFRoaXMgZXZlbnQgaXMgdGhyb3R0bGVkIHRvIDEwIHRpbWVzIHBlciBzZWNvbmQuXG4gICAqL1xuICByb3RhdGlvbkNoYW5nZWQ6IHtcbiAgICAvKiogRGVncmVlIHZlY3Rvci4gU2FtZSBhcyBlbnRpdGllcyAqL1xuICAgIHJvdGF0aW9uOiBWZWN0b3IzVHlwZVxuICAgIC8qKiBSb3RhdGlvbiBxdWF0ZXJuaW9uLCB1c2VmdWwgaW4gc29tZSBzY2VuYXJpb3MuICovXG4gICAgcXVhdGVybmlvbjogUXVhdGVybmlvblR5cGVcbiAgfVxuXG4gIC8qKlxuICAgKiBgY2FtZXJhTW9kZUNoYW5nZWRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGNhbWVyYSBtb2RlXG4gICAqL1xuICBjYW1lcmFNb2RlQ2hhbmdlZDoge1xuICAgIC8qKlxuICAgICAqIEZJUlNUX1BFUlNPTiA9IDAsXG4gICAgICogVEhJUkRfUEVSU09OID0gMSxcbiAgICAgKiBGUkVFX0NBTUVSQSA9IDJcbiAgICAgKi9cbiAgICBjYW1lcmFNb2RlOiAwIHwgMSB8IDJcbiAgfVxuXG4gIC8qKlxuICAgKiBgaWRsZVN0YXRlQ2hhbmdlZGAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgbm90IG1vdmVzIGZvciBhIGRlZmluZWQgcGVyaW9kIG9mIHRpbWVcbiAgICovXG4gIGlkbGVTdGF0ZUNoYW5nZWQ6IHtcbiAgICBpc0lkbGU6IGJvb2xlYW5cbiAgfVxuXG4gIHBsYXllckV4cHJlc3Npb246IHtcbiAgICBleHByZXNzaW9uSWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIGBwb2ludGVyVXBgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHJlbGVhc2VzIGFuIGlucHV0IHBvaW50ZXIuXG4gICAqIEl0IGNvdWxkIGJlIGEgVlIgY29udHJvbGxlciwgYSB0b3VjaCBzY3JlZW4gb3IgdGhlIG1vdXNlLlxuICAgKi9cbiAgcG9pbnRlclVwOiBJbnB1dEV2ZW50UmVzdWx0XG5cbiAgLyoqXG4gICAqIGBwb2ludGVyRG93bmAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcHJlc3MgYW4gaW5wdXQgcG9pbnRlci5cbiAgICogSXQgY291bGQgYmUgYSBWUiBjb250cm9sbGVyLCBhIHRvdWNoIHNjcmVlbiBvciB0aGUgbW91c2UuXG4gICAqL1xuICBwb2ludGVyRG93bjogSW5wdXRFdmVudFJlc3VsdFxuXG4gIC8qKlxuICAgKiBgcG9pbnRlckV2ZW50YCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBwcmVzcyBvciByZWxlYXNlcyBhbiBpbnB1dCBwb2ludGVyLlxuICAgKiBJdCBjb3VsZCBiZSBhIFZSIGNvbnRyb2xsZXIsIGEgdG91Y2ggc2NyZWVuIG9yIHRoZSBtb3VzZS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGFjdGlvbkJ1dHRvbkV2ZW50IGluc3RlYWRcbiAgICovXG4gIHBvaW50ZXJFdmVudDogR2xvYmFsSW5wdXRFdmVudFJlc3VsdFxuXG4gIC8qKlxuICAgKiBgYWN0aW9uQnV0dG9uRXZlbnRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHByZXNzIG9yIHJlbGVhc2VzIGFuIGlucHV0IHBvaW50ZXIuXG4gICAqIEl0IGNvdWxkIGJlIGEgVlIgY29udHJvbGxlciwgYSB0b3VjaCBzY3JlZW4gb3IgdGhlIG1vdXNlLlxuICAgKlxuICAgKiBUaGlzIGV2ZW50IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgYHBvaW50ZXJFdmVudGAgYnV0IHRoZSBsb2dpYyBpbiB0aGUgRUNTIGhhZCBhbiB1bnNvbHZhYmxlXG4gICAqIGNvbmRpdGlvbiB0aGF0IHJlcXVpcmVkIHVzIHRvIGNyZWF0ZSB0aGlzIG5ldyBldmVudCB0byBoYW5kbGUgbW9yZSBjYXNlcyBmb3IgbmV3IGJ1dHRvbnMuXG4gICAqL1xuICBhY3Rpb25CdXR0b25FdmVudDogR2xvYmFsSW5wdXRFdmVudFJlc3VsdFxuXG4gIC8qKlxuICAgKiBgcmF5Y2FzdFJlc3BvbnNlYCBpcyB0cmlnZ2VyZWQgaW4gcmVzcG9uc2UgdG8gYSByYXljYXN0IHF1ZXJ5XG4gICAqL1xuICByYXljYXN0UmVzcG9uc2U6IFJheWNhc3RSZXNwb25zZVBheWxvYWQ8YW55PlxuXG4gIC8qKlxuICAgKiBgY2hhdE1lc3NhZ2VgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbmRzIGEgbWVzc2FnZSB0aHJvdWdoIGNoYXQgZW50aXR5LlxuICAgKi9cbiAgY2hhdE1lc3NhZ2U6IHtcbiAgICBpZDogc3RyaW5nXG4gICAgc2VuZGVyOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBpc0NvbW1hbmQ6IGJvb2xlYW5cbiAgfVxuXG4gIC8qKlxuICAgKiBgb25DaGFuZ2VgIGlzIHRyaWdnZXJlZCB3aGVuIGFuIGVudGl0eSBjaGFuZ2VzIGl0cyBvd24gaW50ZXJuYWwgc3RhdGUuXG4gICAqIERpc3BhdGNoZWQgYnkgdGhlIGB1aS0qYCBlbnRpdGllcyB3aGVuIHRoZWlyIHZhbHVlIGlzIGNoYW5nZWQuIEl0IHRyaWdnZXJzIGEgY2FsbGJhY2suXG4gICAqIE5vdGljZTogT25seSBlbnRpdGllcyB3aXRoIElEIHdpbGwgYmUgbGlzdGVuaW5nIGZvciBjbGljayBldmVudHMuXG4gICAqL1xuICBvbkNoYW5nZToge1xuICAgIHZhbHVlPzogYW55XG4gICAgLyoqIElEIG9mIHRoZSBwb2ludGVyIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICAgIHBvaW50ZXJJZD86IG51bWJlclxuICB9XG5cbiAgLyoqXG4gICAqIGBvbkVudGVyYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBoaXRzIHRoZSBcIkVudGVyXCIga2V5IGZyb20gdGhlIGtleWJvYXJkXG4gICAqIFVzZWQgcHJpbmNpcGFsbHkgYnkgdGhlIENoYXQgaW50ZXJuYWwgc2NlbmVcbiAgICovXG4gIG9uRW50ZXI6IHVua25vd25cblxuICAvKipcbiAgICogYG9uUG9pbnRlckxvY2tgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgd29ybGQgY2FudmFzIGFuZCB0aGVcbiAgICogcG9pbnRlciBsb2NrcyB0byBpdCBzbyB0aGUgcG9pbnRlciBtb3ZlcyB0aGUgY2FtZXJhXG4gICAqL1xuICBvblBvaW50ZXJMb2NrOiB7XG4gICAgbG9ja2VkPzogYm9vbGVhblxuICB9XG5cbiAgLyoqXG4gICAqIGBvbkFuaW1hdGlvbkVuZGAgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gYW5pbWF0aW9uIGNsaXAgZ2V0cyBmaW5pc2hcbiAgICovXG4gIG9uQW5pbWF0aW9uRW5kOiB7XG4gICAgY2xpcE5hbWU6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIGBvbkZvY3VzYCBpcyB0cmlnZ2VyZWQgd2hlbiBhbiBlbnRpdHkgZm9jdXMgaXMgYWN0aXZlLlxuICAgKiBEaXNwYXRjaGVkIGJ5IHRoZSBgdWktaW5wdXRgIGFuZCBgdWktcGFzc3dvcmRgIGVudGl0aWVzIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQuXG4gICAqIEl0IHRyaWdnZXJzIGEgY2FsbGJhY2suXG4gICAqXG4gICAqIE5vdGljZTogT25seSBlbnRpdGllcyB3aXRoIElEIHdpbGwgYmUgbGlzdGVuaW5nIGZvciBjbGljayBldmVudHMuXG4gICAqL1xuICBvbkZvY3VzOiB7XG4gICAgLyoqIElEIG9mIHRoZSBlbnRpdGl5IG9mIHRoZSBldmVudCAqL1xuICAgIGVudGl0eUlkOiB1bmtub3duXG4gICAgLyoqIElEIG9mIHRoZSBwb2ludGVyIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gIH1cblxuICAvKipcbiAgICogYG9uQmx1cmAgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gZW50aXR5IGxvc2VzIGl0cyBmb2N1cy5cbiAgICogRGlzcGF0Y2hlZCBieSB0aGUgYHVpLWlucHV0YCBhbmQgYHVpLXBhc3N3b3JkYCBlbnRpdGllcyB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkLlxuICAgKiAgSXQgdHJpZ2dlcnMgYSBjYWxsYmFjay5cbiAgICpcbiAgICogTm90aWNlOiBPbmx5IGVudGl0aWVzIHdpdGggSUQgd2lsbCBiZSBsaXN0ZW5pbmcgZm9yIGNsaWNrIGV2ZW50cy5cbiAgICovXG4gIG9uQmx1cjoge1xuICAgIC8qKiBJRCBvZiB0aGUgZW50aXRpeSBvZiB0aGUgZXZlbnQgKi9cbiAgICBlbnRpdHlJZDogdW5rbm93blxuICAgIC8qKiBJRCBvZiB0aGUgcG9pbnRlciB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKi9cbiAgICBwb2ludGVySWQ6IG51bWJlclxuICB9XG5cbiAgLyoqIFRoZSBvbkNsaWNrIGV2ZW50IGlzIG9ubHkgdXNlZCBmb3IgVUkgZWxlbWVudHMgKi9cbiAgb25DbGljazoge1xuICAgIGVudGl0eUlkOiB1bmtub3duXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBldmVudCBnZXRzIHRyaWdnZXJlZCB3aGVuIGFuIGVudGl0eSBsZWF2ZXMgdGhlIHNjZW5lIGZlbmNlcy5cbiAgICovXG4gIGVudGl0eU91dE9mU2NlbmU6IHtcbiAgICBlbnRpdHlJZDogdW5rbm93blxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBhbiBlbnRpdHkgZW50ZXJzIHRoZSBzY2VuZSBmZW5jZXMuXG4gICAqL1xuICBlbnRpdHlCYWNrSW5TY2VuZToge1xuICAgIGVudGl0eUlkOiB1bmtub3duXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBldmVudCBnZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGVudGVycyB0aGUgc2NlbmVcbiAgICovXG4gIG9uRW50ZXJTY2VuZToge1xuICAgIHVzZXJJZDogc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBldmVudCBnZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgc2NlbmVcbiAgICovXG4gIG9uTGVhdmVTY2VuZToge1xuICAgIHVzZXJJZDogc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBldmVudCBnZXRzIHRyaWdnZXJlZCBhZnRlciByZWNlaXZpbmcgYSBjb21tcyBtZXNzYWdlLlxuICAgKi9cbiAgY29tbXM6IHtcbiAgICBzZW5kZXI6IHN0cmluZ1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdHJpZ2dlcmVkIG9uY2UgdGhlIHNjZW5lIHNob3VsZCBzdGFydC5cbiAgICovXG4gIHNjZW5lU3RhcnQ6IHVua25vd25cblxuICAvKipcbiAgICogVGhpcyBpcyB0cmlnZ2VyZWQgb25jZSB0aGUgYnVpbGRlciBzY2VuZSBpcyBsb2FkZWQuXG4gICAqL1xuICBidWlsZGVyU2NlbmVTdGFydDogdW5rbm93blxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRyaWdnZXJlZCBvbmNlIHRoZSBidWlsZGVyIHNjZW5lIGlzIHVubG9hZGVkLlxuICAgKi9cbiAgYnVpbGRlclNjZW5lVW5sb2FkZWQ6IHVua25vd25cblxuICAvKipcbiAgICogQWZ0ZXIgY2hlY2tpbmcgZW50aXRpZXMgb3V0c2lkZSB0aGUgZmVuY2VzLCBpZiBhbnkgaXMgb3V0c2lkZSwgdGhpcyBldmVudFxuICAgKiB3aWxsIGJlIHRyaWdnZXJlZCB3aXRoIGFsbCB0aGUgZW50aXRpZXMgb3V0c2lkZSB0aGUgc2NlbmUuXG4gICAqL1xuICBlbnRpdGllc091dE9mQm91bmRhcmllczoge1xuICAgIGVudGl0aWVzOiBzdHJpbmdbXVxuICB9XG5cbiAgdXVpZEV2ZW50OiB7XG4gICAgdXVpZDogc3RyaW5nXG4gICAgcGF5bG9hZDogYW55XG4gIH1cblxuICBvblRleHRTdWJtaXQ6IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgfVxuXG4gIG1ldHJpY3NVcGRhdGU6IHtcbiAgICBnaXZlbjogUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICAgIGxpbWl0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH1cblxuICBsaW1pdHNFeGNlZWRlZDoge1xuICAgIGdpdmVuOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gICAgbGltaXQ6IFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgfVxuXG4gIC8qKiBGb3IgZ2l6bW9zICovXG4gIGdpem1vRXZlbnQ6IEdpem1vRHJhZ0VuZEV2ZW50IHwgR2l6bW9TZWxlY3RlZEV2ZW50XG5cbiAgZXh0ZXJuYWxBY3Rpb246IHtcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgfVxuXG4gIHN0YXRlRXZlbnQ6IHtcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBwYXlsb2FkOiBhbnlcbiAgfVxuXG4gIC8qKiBUaGlzIGlzIHRyaWdnZXJlZCBhdCBsZWFzdCBmb3IgZWFjaCB2aWRlb1N0YXR1cyBjaGFuZ2UgKi9cbiAgdmlkZW9FdmVudDoge1xuICAgIGNvbXBvbmVudElkOiBzdHJpbmdcbiAgICB2aWRlb0NsaXBJZDogc3RyaW5nXG4gICAgLyoqIFN0YXR1cywgY2FuIGJlIE5PTkUgPSAwLCBFUlJPUiA9IDEsIExPQURJTkcgPSAyLCBSRUFEWSA9IDMsIFBMQVlJTkcgPSA0LEJVRkZFUklORyA9IDUgKi9cbiAgICB2aWRlb1N0YXR1czogbnVtYmVyXG4gICAgLyoqIEN1cnJlbnQgb2Zmc2V0IHBvc2l0aW9uIGluIHNlY29uZHMgKi9cbiAgICBjdXJyZW50T2Zmc2V0OiBudW1iZXJcbiAgICAvKiogVmlkZW8gbGVuZ3RoIGluIHNlY29uZHMuIENhbiBiZSAtMSAqL1xuICAgIHRvdGFsVmlkZW9MZW5ndGg6IG51bWJlclxuICB9XG5cbiAgLyoqIFRoaXMgaXMgdHJpZ2dlciBldmVyeXRpbWUgYSBwcm9maWxlIGlzIGNoYW5nZWQgKi9cbiAgcHJvZmlsZUNoYW5nZWQ6IHtcbiAgICBldGhBZGRyZXNzOiBzdHJpbmdcbiAgICB2ZXJzaW9uOiBudW1iZXJcbiAgfVxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBwZWVyJ3MgYXZhdGFyIGlzIGNvbm5lY3RlZCBhbmQgdmlzaWJsZSAqL1xuICBwbGF5ZXJDb25uZWN0ZWQ6IHtcbiAgICB1c2VySWQ6IHN0cmluZ1xuICB9XG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIHBlZXIgZGlzY29ubmVjdCBhbmQvb3IgaXQgYXZhdGFyIGlzIHNldCBpbnZpc2libGUgYnkgY29tbXMgKi9cbiAgcGxheWVyRGlzY29ubmVjdGVkOiB7XG4gICAgdXNlcklkOiBzdHJpbmdcbiAgfVxuXG4gIC8qKiBUcmlnZ2VyZWQgd2hlbiBjdXJyZW50IHJlYWxtIG9yIGlzbGFuZCBjaGFuZ2VzICovXG4gIG9uUmVhbG1DaGFuZ2VkOiB7XG4gICAgZG9tYWluOiBzdHJpbmdcbiAgICByb29tOiBzdHJpbmdcbiAgICBzZXJ2ZXJOYW1lOiBzdHJpbmdcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nXG4gIH1cblxuICAvKiogVHJpZ2dlcmVkIHdoZW4gb3RoZXIgcGxheWVyJ3MgYXZhdGFyIGlzIGNsaWNrZWQgKi9cbiAgcGxheWVyQ2xpY2tlZDoge1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgcmF5OiB7XG4gICAgICBvcmlnaW46IFZlY3RvcjNUeXBlXG4gICAgICBkaXJlY3Rpb246IFZlY3RvcjNUeXBlXG4gICAgICBkaXN0YW5jZTogbnVtYmVyXG4gICAgfVxuICB9XG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIHBvaW50ZXIgc3RhcnQgaG92ZXJpbmcgYW4gZW50aXRpZXMnIHNoYXBlICovXG4gIHBvaW50ZXJIb3ZlckVudGVyOiB1bmtub3duXG5cbiAgLyoqIFRyaWdnZXJlZCB3aGVuIHBvaW50ZXIgc3RvcCBob3ZlcmluZyBhbiBlbnRpdGllcycgc2hhcGUgKi9cbiAgcG9pbnRlckhvdmVyRXhpdDogdW5rbm93blxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgYSBjYWxsYmFjayB0aGF0IGlzIHBhc3NlZCB0byB0aGUgT2JzZXJ2YWJsZVxuICogY29uc3RydWN0b3IgdG8gc3Vic2NyaWJlIHRvIHRoZSBldmVudHMgb2YgdGhlIERlY2VudHJhbGFuZEludGVyZmFjZVxuICovXG5mdW5jdGlvbiBjcmVhdGVTdWJzY3JpYmVyKGV2ZW50TmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgc3Vic2NyaWJlRnVuY3Rpb24oeyBldmVudElkOiBldmVudE5hbWUgfSkuY2F0Y2goY29uc29sZS5lcnJvcilcbiAgfVxufVxuXG4vKipcbiAqIFRoZXNlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGFmdGVyIHlvdXIgY2hhcmFjdGVyIGVudGVycyB0aGUgc2NlbmUuXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25FbnRlclNjZW5lT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ29uRW50ZXJTY2VuZSddPihcbiAgY3JlYXRlU3Vic2NyaWJlcignb25FbnRlclNjZW5lJylcbilcblxuLyoqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLiBVc2Ugb25FbnRlclNjZW5lT2JzZXJ2YWJsZSBpbnN0ZWFkLiAqL1xuZXhwb3J0IGNvbnN0IG9uRW50ZXJTY2VuZSA9IG9uRW50ZXJTY2VuZU9ic2VydmFibGVcblxuLyoqXG4gKiBUaGVzZSBldmVudHMgYXJlIHRyaWdnZXJlZCBhZnRlciB5b3VyIGNoYXJhY3RlciBsZWF2ZXMgdGhlIHNjZW5lLlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uTGVhdmVTY2VuZU9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxJRXZlbnRzWydvbkxlYXZlU2NlbmUnXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ29uTGVhdmVTY2VuZScpXG4pXG5cbi8qKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC4gVXNlIG9uTGVhdmVTY2VuZU9ic2VydmFibGUgaW5zdGVhZC4gKi9cbmV4cG9ydCBjb25zdCBvbkxlYXZlU2NlbmUgPSBvbkxlYXZlU2NlbmVPYnNlcnZhYmxlXG5cbi8qKlxuICogVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgYWxsIHRoZSByZXNvdXJjZXMgb2YgdGhlIHNjZW5lIHdlcmUgbG9hZGVkIChtb2RlbHMsIHRleHR1cmVzLCBldGMuLi4pXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25TY2VuZVJlYWR5T2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3NjZW5lU3RhcnQnXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ3NjZW5lU3RhcnQnKVxuKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblBsYXllckV4cHJlc3Npb25PYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8XG4gIElFdmVudHNbJ3BsYXllckV4cHJlc3Npb24nXVxuPihjcmVhdGVTdWJzY3JpYmVyKCdwbGF5ZXJFeHByZXNzaW9uJykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uVmlkZW9FdmVudCA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ3ZpZGVvRXZlbnQnXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ3ZpZGVvRXZlbnQnKVxuKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblByb2ZpbGVDaGFuZ2VkID0gbmV3IE9ic2VydmFibGU8SUV2ZW50c1sncHJvZmlsZUNoYW5nZWQnXT4oXG4gIGNyZWF0ZVN1YnNjcmliZXIoJ3Byb2ZpbGVDaGFuZ2VkJylcbilcblxuLyoqXG4gKiBAcHVibGljXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIGFuIGluaGVyaXRhbmNlIG9mIEVDUzYsIGl0J3MgaGVyZSB0ZW1wb3JhcnkgZm9yIHRoZSBmZWF0dXJlIHBhcml0eSwgcGxlYXNlIHJlYWQgdGhlIG5ld3MgYW5kIGRvY3MgdG8ga25vdyBob3cgaGFuZGxlIHdoZW4gaXQncyByZW1vdmVkLlxuICovXG5leHBvcnQgY29uc3Qgb25QbGF5ZXJDb25uZWN0ZWRPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8XG4gIElFdmVudHNbJ3BsYXllckNvbm5lY3RlZCddXG4+KGNyZWF0ZVN1YnNjcmliZXIoJ3BsYXllckNvbm5lY3RlZCcpKVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvblBsYXllckRpc2Nvbm5lY3RlZE9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxcbiAgSUV2ZW50c1sncGxheWVyRGlzY29ubmVjdGVkJ11cbj4oY3JlYXRlU3Vic2NyaWJlcigncGxheWVyRGlzY29ubmVjdGVkJykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUmVhbG1DaGFuZ2VkT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFxuICBJRXZlbnRzWydvblJlYWxtQ2hhbmdlZCddXG4+KGNyZWF0ZVN1YnNjcmliZXIoJ29uUmVhbG1DaGFuZ2VkJykpXG5cbi8qKlxuICogQHB1YmxpY1xuICogQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhbiBpbmhlcml0YW5jZSBvZiBFQ1M2LCBpdCdzIGhlcmUgdGVtcG9yYXJ5IGZvciB0aGUgZmVhdHVyZSBwYXJpdHksIHBsZWFzZSByZWFkIHRoZSBuZXdzIGFuZCBkb2NzIHRvIGtub3cgaG93IGhhbmRsZSB3aGVuIGl0J3MgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG9uUGxheWVyQ2xpY2tlZE9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxcbiAgSUV2ZW50c1sncGxheWVyQ2xpY2tlZCddXG4+KGNyZWF0ZVN1YnNjcmliZXIoJ3BsYXllckNsaWNrZWQnKSlcblxuLyoqXG4gKiBAaW50ZXJ0ZXJuYWxcbiAqIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYW4gaW5oZXJpdGFuY2Ugb2YgRUNTNiwgaXQncyBoZXJlIHRlbXBvcmFyeSBmb3IgdGhlIGZlYXR1cmUgcGFyaXR5LCBwbGVhc2UgcmVhZCB0aGUgbmV3cyBhbmQgZG9jcyB0byBrbm93IGhvdyBoYW5kbGUgd2hlbiBpdCdzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBvbkNvbW1zTWVzc2FnZSA9IG5ldyBPYnNlcnZhYmxlPElFdmVudHNbJ2NvbW1zJ10+KFxuICBjcmVhdGVTdWJzY3JpYmVyKCdjb21tcycpXG4pXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRTdWJzY3JpYmVGdW5jdGlvbihcbiAgZm46IChldmVudDogeyBldmVudElkOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTxhbnk+XG4pIHtcbiAgc3Vic2NyaWJlRnVuY3Rpb24gPSBmblxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgdGhpcyBpcyBhbiBPTEQgQVBJLlxuICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBTREs2IHNlbmRCYXRjaCB0byBwb2xsIGV2ZW50cyBmcm9tIHRoZSByZW5kZXJlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9sbEV2ZW50cyhcbiAgc2VuZEJhdGNoOiAoYm9keTogTWFueUVudGl0eUFjdGlvbikgPT4gUHJvbWlzZTxTZW5kQmF0Y2hSZXNwb25zZT5cbikge1xuICBjb25zdCB7IGV2ZW50cyB9ID0gYXdhaXQgc2VuZEJhdGNoKHsgYWN0aW9uczogW10gfSlcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLmdlbmVyaWMpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGUuZ2VuZXJpYy5ldmVudERhdGEpXG4gICAgICBzd2l0Y2ggKGUuZ2VuZXJpYy5ldmVudElkKSB7XG4gICAgICAgIGNhc2UgJ29uRW50ZXJTY2VuZSc6IHtcbiAgICAgICAgICBvbkVudGVyU2NlbmVPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhcbiAgICAgICAgICAgIGRhdGEgYXMgSUV2ZW50c1snb25FbnRlclNjZW5lJ11cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdvbkxlYXZlU2NlbmUnOiB7XG4gICAgICAgICAgb25MZWF2ZVNjZW5lT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoXG4gICAgICAgICAgICBkYXRhIGFzIElFdmVudHNbJ29uTGVhdmVTY2VuZSddXG4gICAgICAgICAgKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2NlbmVTdGFydCc6IHtcbiAgICAgICAgICBvblNjZW5lUmVhZHlPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhkYXRhIGFzIElFdmVudHNbJ3NjZW5lU3RhcnQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3BsYXllckV4cHJlc3Npb24nOiB7XG4gICAgICAgICAgb25QbGF5ZXJFeHByZXNzaW9uT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoXG4gICAgICAgICAgICBkYXRhIGFzIElFdmVudHNbJ3BsYXllckV4cHJlc3Npb24nXVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ZpZGVvRXZlbnQnOiB7XG4gICAgICAgICAgY29uc3QgdmlkZW9EYXRhID0gZGF0YSBhcyBJRXZlbnRzWyd2aWRlb0V2ZW50J11cbiAgICAgICAgICBvblZpZGVvRXZlbnQubm90aWZ5T2JzZXJ2ZXJzKHZpZGVvRGF0YSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3Byb2ZpbGVDaGFuZ2VkJzoge1xuICAgICAgICAgIG9uUHJvZmlsZUNoYW5nZWQubm90aWZ5T2JzZXJ2ZXJzKGRhdGEgYXMgSUV2ZW50c1sncHJvZmlsZUNoYW5nZWQnXSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3BsYXllckNvbm5lY3RlZCc6IHtcbiAgICAgICAgICBvblBsYXllckNvbm5lY3RlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKFxuICAgICAgICAgICAgZGF0YSBhcyBJRXZlbnRzWydwbGF5ZXJDb25uZWN0ZWQnXVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3BsYXllckRpc2Nvbm5lY3RlZCc6IHtcbiAgICAgICAgICBvblBsYXllckRpc2Nvbm5lY3RlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKFxuICAgICAgICAgICAgZGF0YSBhcyBJRXZlbnRzWydwbGF5ZXJEaXNjb25uZWN0ZWQnXVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ29uUmVhbG1DaGFuZ2VkJzoge1xuICAgICAgICAgIG9uUmVhbG1DaGFuZ2VkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoXG4gICAgICAgICAgICBkYXRhIGFzIElFdmVudHNbJ29uUmVhbG1DaGFuZ2VkJ11cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdwbGF5ZXJDbGlja2VkJzoge1xuICAgICAgICAgIG9uUGxheWVyQ2xpY2tlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKFxuICAgICAgICAgICAgZGF0YSBhcyBJRXZlbnRzWydwbGF5ZXJDbGlja2VkJ11cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
package/package.json
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dcl/sdk",
|
3
|
-
"version": "7.0.0
|
3
|
+
"version": "7.0.0",
|
4
4
|
"description": "",
|
5
|
-
"main": "
|
6
|
-
"typings": "
|
5
|
+
"main": "./index.js",
|
6
|
+
"typings": "./index.d.ts",
|
7
|
+
"types": "./index.d.ts",
|
7
8
|
"scripts": {
|
8
9
|
"build": "tsc -p tsconfig.json",
|
9
10
|
"start": "npm run build && tsc -p tsconfig.json --watch"
|
@@ -14,22 +15,15 @@
|
|
14
15
|
},
|
15
16
|
"author": "Decentraland",
|
16
17
|
"license": "Apache-2.0",
|
17
|
-
"files": [
|
18
|
-
"dist",
|
19
|
-
"types",
|
20
|
-
"docs",
|
21
|
-
"LICENSE",
|
22
|
-
"docs-yaml",
|
23
|
-
"artifacts"
|
24
|
-
],
|
25
18
|
"dependencies": {
|
26
|
-
"@dcl/
|
27
|
-
"@dcl/
|
28
|
-
"@dcl/
|
29
|
-
"@dcl/
|
30
|
-
"@dcl/
|
31
|
-
"@dcl/
|
19
|
+
"@dcl/dcl-rollup": "7.0.0",
|
20
|
+
"@dcl/ecs": "file:../ecs",
|
21
|
+
"@dcl/ecs-math": "^2.0.1-20221108141807.commit-a1344cb",
|
22
|
+
"@dcl/js-runtime": "7.0.0",
|
23
|
+
"@dcl/kernel": "^2.0.0-3565941736.commit-96b03fd",
|
24
|
+
"@dcl/react-ecs": "file:../react-ecs",
|
25
|
+
"@dcl/unity-renderer": "^1.0.64444-20221125155434.commit-fcef3c4"
|
32
26
|
},
|
33
27
|
"minCliVersion": "3.12.3",
|
34
|
-
"commit": "
|
28
|
+
"commit": "5420eac2bc4215f214136d8b1331864a19118824"
|
35
29
|
}
|
package/react-ecs.d.ts
ADDED
package/react-ecs.js
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
import ReactEcs from '@dcl/react-ecs';
|
2
|
+
export * from '@dcl/react-ecs';
|
3
|
+
export default ReactEcs;
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL3JlYWN0LWVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyQyxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGVBQWUsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzIGZyb20gJ0BkY2wvcmVhY3QtZWNzJ1xuZXhwb3J0ICogZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5leHBvcnQgZGVmYXVsdCBSZWFjdEVjc1xuIl19
|
package/src/ecs.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from '@dcl/ecs'
|
package/src/index.ts
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
/** @alpha THIS FILE INITIALIZES THE DECENTRALAND RUNTIME. WILL CHANGE SOON */
|
2
|
+
|
3
|
+
import { engine } from '@dcl/ecs'
|
4
|
+
import { pollEvents, setSubscribeFunction } from './observables'
|
5
|
+
import { subscribe, sendBatch, crdtSendToRenderer } from '~system/EngineApi'
|
6
|
+
import { createRendererTransport } from './internal/transports/rendererTransport'
|
7
|
+
|
8
|
+
// Attach CRDT transport
|
9
|
+
engine.addTransport(createRendererTransport({ crdtSendToRenderer }))
|
10
|
+
|
11
|
+
// attach engineApi.subscribe function for events. This is only a transition
|
12
|
+
// patch until events are completely migrated to CRDT messages
|
13
|
+
setSubscribeFunction(subscribe)
|
14
|
+
|
15
|
+
export async function onUpdate(deltaTime: number) {
|
16
|
+
engine.update(deltaTime)
|
17
|
+
await pollEvents(sendBatch)
|
18
|
+
}
|