@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.
Files changed (75) hide show
  1. package/ecs.d.ts +1 -0
  2. package/ecs.js +2 -0
  3. package/index.d.ts +1 -0
  4. package/index.js +11 -0
  5. package/internal/Observable.d.ts +36 -0
  6. package/internal/Observable.js +190 -0
  7. package/internal/transports/networkTransport.d.ts +2 -0
  8. package/internal/transports/networkTransport.js +16 -0
  9. package/internal/transports/rendererTransport.d.ts +7 -0
  10. package/internal/transports/rendererTransport.js +39 -0
  11. package/math.d.ts +3 -0
  12. package/math.js +4 -0
  13. package/messageBus.d.ts +10 -0
  14. package/messageBus.js +43 -0
  15. package/observables.d.ts +225 -0
  16. package/observables.js +75 -0
  17. package/package.json +12 -18
  18. package/react-ecs.d.ts +3 -0
  19. package/react-ecs.js +4 -0
  20. package/src/ecs.ts +1 -0
  21. package/src/index.ts +18 -0
  22. package/src/internal/Observable.ts +425 -0
  23. package/src/internal/transports/networkTransport.ts +24 -0
  24. package/src/internal/transports/rendererTransport.ts +60 -0
  25. package/src/math.ts +3 -0
  26. package/src/messageBus.ts +62 -0
  27. package/src/observables.ts +579 -0
  28. package/src/react-ecs.ts +3 -0
  29. package/tsconfig.json +11 -0
  30. package/types/tsconfig.ecs7.json +3 -8
  31. package/dist/ecs7/index.d.ts +0 -4679
  32. package/dist/ecs7/index.js +0 -15202
  33. package/dist/ecs7/index.min.js +0 -1
  34. package/dist/ecs7/index.min.js.map +0 -1
  35. package/dist/ecs7/proto-definitions/README.md +0 -32
  36. package/dist/ecs7/proto-definitions/Transform.md +0 -25
  37. package/dist/ecs7/proto-definitions/animator.proto +0 -19
  38. package/dist/ecs7/proto-definitions/audio_source.proto +0 -13
  39. package/dist/ecs7/proto-definitions/audio_stream.proto +0 -11
  40. package/dist/ecs7/proto-definitions/avatar_attach.proto +0 -19
  41. package/dist/ecs7/proto-definitions/avatar_modifier_area.proto +0 -19
  42. package/dist/ecs7/proto-definitions/avatar_shape.proto +0 -32
  43. package/dist/ecs7/proto-definitions/billboard.proto +0 -17
  44. package/dist/ecs7/proto-definitions/camera_mode.proto +0 -10
  45. package/dist/ecs7/proto-definitions/camera_mode_area.proto +0 -14
  46. package/dist/ecs7/proto-definitions/common/camera_type.proto +0 -8
  47. package/dist/ecs7/proto-definitions/common/id.md +0 -2
  48. package/dist/ecs7/proto-definitions/common/id.proto +0 -8
  49. package/dist/ecs7/proto-definitions/common/input_action.proto +0 -20
  50. package/dist/ecs7/proto-definitions/common/texts.proto +0 -20
  51. package/dist/ecs7/proto-definitions/gltf_container.proto +0 -13
  52. package/dist/ecs7/proto-definitions/material.proto +0 -56
  53. package/dist/ecs7/proto-definitions/mesh_collider.proto +0 -35
  54. package/dist/ecs7/proto-definitions/mesh_renderer.proto +0 -30
  55. package/dist/ecs7/proto-definitions/nft_shape.proto +0 -40
  56. package/dist/ecs7/proto-definitions/pointer_events_result.proto +0 -25
  57. package/dist/ecs7/proto-definitions/pointer_hover_feedback.proto +0 -31
  58. package/dist/ecs7/proto-definitions/pointer_lock.proto +0 -9
  59. package/dist/ecs7/proto-definitions/raycast.proto +0 -20
  60. package/dist/ecs7/proto-definitions/raycast_result.proto +0 -25
  61. package/dist/ecs7/proto-definitions/text_shape.proto +0 -33
  62. package/dist/ecs7/proto-definitions/ui_background.proto +0 -11
  63. package/dist/ecs7/proto-definitions/ui_text.proto +0 -17
  64. package/dist/ecs7/proto-definitions/ui_transform.proto +0 -141
  65. package/dist/ecs7/proto-definitions/visibility_component.proto +0 -9
  66. package/dist/playground/snippets/billboard.ts +0 -108
  67. package/dist/playground/snippets/cube-spawner.ts +0 -39
  68. package/dist/playground/snippets/info.json +0 -1
  69. package/dist/playground/snippets/material.ts +0 -48
  70. package/dist/playground/snippets/mesh.ts +0 -68
  71. package/dist/playground/snippets/pointer-events.ts +0 -50
  72. package/dist/playground/snippets/raycast-hit-many.ts +0 -63
  73. package/dist/playground/snippets/raycast-hit.ts +0 -62
  74. package/dist/playground/snippets/ui.tsx +0 -134
  75. package/types/ecs7/index.d.ts +0 -4679
@@ -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-3548419522.commit-ddcf4b7",
3
+ "version": "7.0.0",
4
4
  "description": "",
5
- "main": "dist/src/index.js",
6
- "typings": "dist/index.d.ts",
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/amd": "7.0.0-3548419522.commit-ddcf4b7",
27
- "@dcl/build-ecs": "7.0.0-3548419522.commit-ddcf4b7",
28
- "@dcl/js-runtime": "7.0.0-3548419522.commit-ddcf4b7",
29
- "@dcl/kernel": "^1.0.0-3339209749.commit-fa9e5d7",
30
- "@dcl/posix": "^1.0.4",
31
- "@dcl/unity-renderer": "^1.0.59980-20221027151836.commit-cc26142"
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": "ddcf4b77178942be973faca9ef4e58267727c4d8"
28
+ "commit": "5420eac2bc4215f214136d8b1331864a19118824"
35
29
  }
package/react-ecs.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import ReactEcs from '@dcl/react-ecs';
2
+ export * from '@dcl/react-ecs';
3
+ export default ReactEcs;
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
+ }