@dcl/sdk 7.22.5-24836126953.commit-ddc8da1 → 7.22.5
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/network/binary-message-bus.d.ts +3 -6
- package/network/binary-message-bus.js +5 -9
- package/network/entities.js +11 -3
- package/network/index.d.ts +2 -8
- package/network/index.js +3 -16
- package/network/message-bus-sync.d.ts +1 -14
- package/network/message-bus-sync.js +103 -161
- package/network/state.js +10 -5
- package/package.json +6 -6
- package/src/network/binary-message-bus.ts +4 -9
- package/src/network/entities.ts +10 -2
- package/src/network/index.ts +3 -40
- package/src/network/message-bus-sync.ts +110 -174
- package/src/network/state.ts +10 -4
- package/atom.d.ts +0 -19
- package/atom.js +0 -83
- package/future.d.ts +0 -8
- package/future.js +0 -26
- package/network/chunking.d.ts +0 -5
- package/network/chunking.js +0 -38
- package/network/events/implementation.d.ts +0 -93
- package/network/events/implementation.js +0 -221
- package/network/events/index.d.ts +0 -42
- package/network/events/index.js +0 -43
- package/network/events/protocol.d.ts +0 -27
- package/network/events/protocol.js +0 -66
- package/network/events/registry.d.ts +0 -8
- package/network/events/registry.js +0 -3
- package/network/server/index.d.ts +0 -14
- package/network/server/index.js +0 -219
- package/network/server/utils.d.ts +0 -18
- package/network/server/utils.js +0 -135
- package/server/env-var.d.ts +0 -15
- package/server/env-var.js +0 -31
- package/server/index.d.ts +0 -2
- package/server/index.js +0 -3
- package/server/storage/constants.d.ts +0 -23
- package/server/storage/constants.js +0 -2
- package/server/storage/index.d.ts +0 -22
- package/server/storage/index.js +0 -29
- package/server/storage/player.d.ts +0 -43
- package/server/storage/player.js +0 -92
- package/server/storage/scene.d.ts +0 -38
- package/server/storage/scene.js +0 -90
- package/server/storage-url.d.ts +0 -10
- package/server/storage-url.js +0 -29
- package/server/utils.d.ts +0 -35
- package/server/utils.js +0 -56
- package/src/atom.ts +0 -98
- package/src/future.ts +0 -38
- package/src/network/chunking.ts +0 -45
- package/src/network/events/implementation.ts +0 -271
- package/src/network/events/index.ts +0 -48
- package/src/network/events/protocol.ts +0 -94
- package/src/network/events/registry.ts +0 -18
- package/src/network/server/index.ts +0 -301
- package/src/network/server/utils.ts +0 -189
- package/src/server/env-var.ts +0 -36
- package/src/server/index.ts +0 -2
- package/src/server/storage/constants.ts +0 -22
- package/src/server/storage/index.ts +0 -44
- package/src/server/storage/player.ts +0 -156
- package/src/server/storage/scene.ts +0 -149
- package/src/server/storage-url.ts +0 -34
- package/src/server/utils.ts +0 -73
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
export declare enum CommsMessage {
|
|
2
|
-
CRDT =
|
|
3
|
-
REQ_CRDT_STATE =
|
|
4
|
-
RES_CRDT_STATE =
|
|
5
|
-
CRDT_SERVER = 4,
|
|
6
|
-
CRDT_AUTHORITATIVE = 5,
|
|
7
|
-
CUSTOM_EVENT = 6
|
|
2
|
+
CRDT = 1,
|
|
3
|
+
REQ_CRDT_STATE = 2,
|
|
4
|
+
RES_CRDT_STATE = 3
|
|
8
5
|
}
|
|
9
6
|
export declare function BinaryMessageBus<T extends CommsMessage>(send: (message: Uint8Array, toPeerAddress?: string[]) => void): {
|
|
10
7
|
on: <K extends T>(message: K, callback: (value: Uint8Array, sender: string) => void) => void;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { ReadWriteByteBuffer } from '@dcl/ecs/dist/serialization/ByteBuffer';
|
|
2
2
|
export var CommsMessage;
|
|
3
3
|
(function (CommsMessage) {
|
|
4
|
-
CommsMessage[CommsMessage["CRDT"] =
|
|
5
|
-
CommsMessage[CommsMessage["REQ_CRDT_STATE"] =
|
|
6
|
-
CommsMessage[CommsMessage["RES_CRDT_STATE"] =
|
|
7
|
-
CommsMessage[CommsMessage["CRDT_SERVER"] = 4] = "CRDT_SERVER";
|
|
8
|
-
CommsMessage[CommsMessage["CRDT_AUTHORITATIVE"] = 5] = "CRDT_AUTHORITATIVE";
|
|
9
|
-
CommsMessage[CommsMessage["CUSTOM_EVENT"] = 6] = "CUSTOM_EVENT";
|
|
4
|
+
CommsMessage[CommsMessage["CRDT"] = 1] = "CRDT";
|
|
5
|
+
CommsMessage[CommsMessage["REQ_CRDT_STATE"] = 2] = "REQ_CRDT_STATE";
|
|
6
|
+
CommsMessage[CommsMessage["RES_CRDT_STATE"] = 3] = "RES_CRDT_STATE";
|
|
10
7
|
})(CommsMessage || (CommsMessage = {}));
|
|
11
8
|
export function BinaryMessageBus(send) {
|
|
12
9
|
const mapping = new Map();
|
|
@@ -20,9 +17,8 @@ export function BinaryMessageBus(send) {
|
|
|
20
17
|
__processMessages: (messages) => {
|
|
21
18
|
for (const message of messages) {
|
|
22
19
|
const commsMsg = decodeCommsMessage(message);
|
|
23
|
-
if (!commsMsg)
|
|
20
|
+
if (!commsMsg)
|
|
24
21
|
continue;
|
|
25
|
-
}
|
|
26
22
|
const { sender, messageType, data } = commsMsg;
|
|
27
23
|
const fn = mapping.get(messageType);
|
|
28
24
|
if (fn)
|
|
@@ -69,4 +65,4 @@ export function encodeString(s) {
|
|
|
69
65
|
buffer.writeUtf8String(s);
|
|
70
66
|
return buffer.readBuffer();
|
|
71
67
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LW1lc3NhZ2UtYnVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldHdvcmsvYmluYXJ5LW1lc3NhZ2UtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBRTVFLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIsK0NBQVEsQ0FBQTtJQUNSLG1FQUFrQixDQUFBO0lBQ2xCLG1FQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QjtBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsSUFBNkQ7SUFFN0QsTUFBTSxPQUFPLEdBQXdELElBQUksR0FBRyxFQUFFLENBQUE7SUFDOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxDQUFjLE9BQVUsRUFBRSxRQUFxRCxFQUFFLEVBQUU7WUFDckYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELElBQUksRUFBRSxDQUFjLE9BQVUsRUFBRSxLQUFpQixFQUFFLGFBQXdCLEVBQUUsRUFBRTtZQUM3RSxJQUFJLENBQUMsaUJBQWlCLENBQUksT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQzNELENBQUM7UUFDRCxpQkFBaUIsRUFBRSxDQUFDLFFBQXNCLEVBQUUsRUFBRTtZQUM1QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDOUIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUksT0FBTyxDQUFDLENBQUE7Z0JBQy9DLElBQUksQ0FBQyxRQUFRO29CQUFFLFNBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQTtnQkFDOUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDbkMsSUFBSSxFQUFFO29CQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7YUFDekI7UUFDSCxDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQXlCLFdBQWMsRUFBRSxPQUFtQjtJQUMzRixNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25CLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsSUFBZ0I7SUFFaEIsSUFBSTtRQUNGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDL0QsTUFBTSxJQUFJLFlBQVksQ0FBQTtRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBTSxDQUFBO1FBQzlDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRWxDLE9BQU87WUFDTCxNQUFNO1lBQ04sV0FBVztZQUNYLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQTtLQUNGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQzFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBZ0I7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzlCLE9BQU8sTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFBO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQVM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUE7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWRXcml0ZUJ5dGVCdWZmZXIgfSBmcm9tICdAZGNsL2Vjcy9kaXN0L3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcblxuZXhwb3J0IGVudW0gQ29tbXNNZXNzYWdlIHtcbiAgQ1JEVCA9IDEsXG4gIFJFUV9DUkRUX1NUQVRFID0gMixcbiAgUkVTX0NSRFRfU1RBVEUgPSAzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCaW5hcnlNZXNzYWdlQnVzPFQgZXh0ZW5kcyBDb21tc01lc3NhZ2U+KFxuICBzZW5kOiAobWVzc2FnZTogVWludDhBcnJheSwgdG9QZWVyQWRkcmVzcz86IHN0cmluZ1tdKSA9PiB2b2lkXG4pIHtcbiAgY29uc3QgbWFwcGluZzogTWFwPFQsICh2YWx1ZTogVWludDhBcnJheSwgc2VuZGVyOiBzdHJpbmcpID0+IHZvaWQ+ID0gbmV3IE1hcCgpXG4gIHJldHVybiB7XG4gICAgb246IDxLIGV4dGVuZHMgVD4obWVzc2FnZTogSywgY2FsbGJhY2s6ICh2YWx1ZTogVWludDhBcnJheSwgc2VuZGVyOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgIG1hcHBpbmcuc2V0KG1lc3NhZ2UsIGNhbGxiYWNrKVxuICAgIH0sXG4gICAgZW1pdDogPEsgZXh0ZW5kcyBUPihtZXNzYWdlOiBLLCB2YWx1ZTogVWludDhBcnJheSwgdG9QZWVyQWRkcmVzcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgICBzZW5kKGNyYWZ0Q29tbXNNZXNzYWdlPFQ+KG1lc3NhZ2UsIHZhbHVlKSwgdG9QZWVyQWRkcmVzcylcbiAgICB9LFxuICAgIF9fcHJvY2Vzc01lc3NhZ2VzOiAobWVzc2FnZXM6IFVpbnQ4QXJyYXlbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XG4gICAgICAgIGNvbnN0IGNvbW1zTXNnID0gZGVjb2RlQ29tbXNNZXNzYWdlPFQ+KG1lc3NhZ2UpXG4gICAgICAgIGlmICghY29tbXNNc2cpIGNvbnRpbnVlXG4gICAgICAgIGNvbnN0IHsgc2VuZGVyLCBtZXNzYWdlVHlwZSwgZGF0YSB9ID0gY29tbXNNc2dcbiAgICAgICAgY29uc3QgZm4gPSBtYXBwaW5nLmdldChtZXNzYWdlVHlwZSlcbiAgICAgICAgaWYgKGZuKSBmbihkYXRhLCBzZW5kZXIpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmFmdENvbW1zTWVzc2FnZTxUIGV4dGVuZHMgQ29tbXNNZXNzYWdlPihtZXNzYWdlVHlwZTogVCwgcGF5bG9hZDogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBtc2cgPSBuZXcgVWludDhBcnJheShwYXlsb2FkLmJ5dGVMZW5ndGggKyAxKVxuICBtc2cuc2V0KFttZXNzYWdlVHlwZV0pXG4gIG1zZy5zZXQocGF5bG9hZCwgMSlcbiAgcmV0dXJuIG1zZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ29tbXNNZXNzYWdlPFQgZXh0ZW5kcyBDb21tc01lc3NhZ2U+KFxuICBkYXRhOiBVaW50OEFycmF5XG4pOiB7IHNlbmRlcjogc3RyaW5nOyBtZXNzYWdlVHlwZTogVDsgZGF0YTogVWludDhBcnJheSB9IHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBsZXQgb2Zmc2V0ID0gMFxuICAgIGNvbnN0IHIgPSBuZXcgVWludDhBcnJheShkYXRhKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoci5idWZmZXIpXG4gICAgY29uc3Qgc2VuZGVyTGVuZ3RoID0gdmlldy5nZXRVaW50OChvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBjb25zdCBzZW5kZXIgPSBkZWNvZGVTdHJpbmcoZGF0YS5zdWJhcnJheSgxLCBzZW5kZXJMZW5ndGggKyAxKSlcbiAgICBvZmZzZXQgKz0gc2VuZGVyTGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZVR5cGUgPSB2aWV3LmdldFVpbnQ4KG9mZnNldCkgYXMgVFxuICAgIG9mZnNldCArPSAxXG4gICAgY29uc3QgbWVzc2FnZSA9IHIuc3ViYXJyYXkob2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbmRlcixcbiAgICAgIG1lc3NhZ2VUeXBlLFxuICAgICAgZGF0YTogbWVzc2FnZVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgQ29tbXMgbWVzc2FnZScsIGUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVN0cmluZyhkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFJlYWRXcml0ZUJ5dGVCdWZmZXIoKVxuICBidWZmZXIud3JpdGVCdWZmZXIoZGF0YSwgdHJ1ZSlcbiAgcmV0dXJuIGJ1ZmZlci5yZWFkVXRmOFN0cmluZygpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTdHJpbmcoczogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBSZWFkV3JpdGVCeXRlQnVmZmVyKClcbiAgYnVmZmVyLndyaXRlVXRmOFN0cmluZyhzKVxuICByZXR1cm4gYnVmZmVyLnJlYWRCdWZmZXIoKVxufVxuIl19
|
package/network/entities.js
CHANGED
|
@@ -87,8 +87,16 @@ export function entityUtils(engine, profile) {
|
|
|
87
87
|
Transform.create(entity);
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
|
-
//
|
|
91
|
-
|
|
90
|
+
// Force a tick update of the transform so the renderer receives the NEW parent.
|
|
91
|
+
// createOrReplace bypasses the CRDT unchanged-data suppression optimization,
|
|
92
|
+
// ensuring the renderer transport can inject the network parent into the message.
|
|
93
|
+
const t = Transform.get(entity);
|
|
94
|
+
Transform.createOrReplace(entity, {
|
|
95
|
+
position: { x: t.position.x, y: t.position.y, z: t.position.z },
|
|
96
|
+
rotation: { x: t.rotation.x, y: t.rotation.y, z: t.rotation.z, w: t.rotation.w },
|
|
97
|
+
scale: { x: t.scale.x, y: t.scale.y, z: t.scale.z },
|
|
98
|
+
parent: t.parent
|
|
99
|
+
});
|
|
92
100
|
}
|
|
93
101
|
}
|
|
94
102
|
/**
|
|
@@ -110,4 +118,4 @@ export function entityUtils(engine, profile) {
|
|
|
110
118
|
getFirstChild
|
|
111
119
|
};
|
|
112
120
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJbEMsTUFBTSxVQUFVLENBQUE7QUFFakIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBSS9DLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUUxRjs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUNqRixJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUM1QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFBO1NBQ3hGO1FBRUQsaUdBQWlHO1FBQ2pHLE1BQU0sWUFBWSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFL0QsNkdBQTZHO1FBQzdHLDJGQUEyRjtRQUMz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a0NBQWtDO1FBQ2xDLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRTlDLDhGQUE4RjtRQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3pCO2FBQU07WUFDTCxnR0FBZ0c7WUFDaEcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUM3QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsWUFBWSxDQUFDLE1BQWM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUvQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1NBQ3RDO1FBRUQsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsT0FBTztRQUNMLFVBQVU7UUFDVixXQUFXO1FBQ1gsU0FBUztRQUNULFlBQVk7UUFDWixZQUFZO1FBQ1osYUFBYTtLQUNkLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW50aXR5LFxuICBJRW5naW5lLFxuICBOZXR3b3JrRW50aXR5IGFzIF9OZXR3b3JrRW50aXR5LFxuICBJTmV0b3dya0VudGl0eSxcbiAgTmV0d29ya1BhcmVudCBhcyBfTmV0d29ya1BhcmVudCxcbiAgVHJhbnNmb3JtIGFzIF9UcmFuc2Zvcm0sXG4gIFN5bmNDb21wb25lbnRzIGFzIF9TeW5jQ29tcG9uZW50cyxcbiAgSU5ldG93cmtQYXJlbnQsXG4gIFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgSVN5bmNDb21wb25lbnRzXG59IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgSVByb2ZpbGUgfSBmcm9tICcuL21lc3NhZ2UtYnVzLXN5bmMnXG5pbXBvcnQgeyBnZXREZXN5bmNlZENvbXBvbmVudHMgfSBmcm9tICcuL3N0YXRlJ1xuXG5leHBvcnQgdHlwZSBTeW5jRW50aXR5ID0gKGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikgPT4gdm9pZFxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VXRpbHMoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSkge1xuICBjb25zdCBOZXR3b3JrRW50aXR5ID0gZW5naW5lLmdldENvbXBvbmVudChfTmV0d29ya0VudGl0eS5jb21wb25lbnRJZCkgYXMgSU5ldG93cmtFbnRpdHlcbiAgY29uc3QgTmV0d29ya1BhcmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtQYXJlbnQuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrUGFyZW50XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1RyYW5zZm9ybS5jb21wb25lbnRJZCkgYXMgVHJhbnNmb3JtQ29tcG9uZW50XG4gIGNvbnN0IFN5bmNDb21wb25lbnRzID0gZW5naW5lLmdldENvbXBvbmVudChfU3luY0NvbXBvbmVudHMuY29tcG9uZW50SWQpIGFzIElTeW5jQ29tcG9uZW50c1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXR3b3JrIGVudGl0eSAoc3luYykgdGhyb3VnaCBjb21tcywgYW5kIHN5bmMgdGhlIHJlY2VpdmVkIGNvbXBvbmVudHNcbiAgICovXG4gIGZ1bmN0aW9uIHN5bmNFbnRpdHkoZW50aXR5SWQ6IEVudGl0eSwgY29tcG9uZW50SWRzOiBudW1iZXJbXSwgZW50aXR5RW51bUlkPzogbnVtYmVyKSB7XG4gICAgbGV0IGNvbXBvbmVudHNJZHNNdXRhYmxlID0gWy4uLmNvbXBvbmVudElkc11cbiAgICAvLyBQcm9maWxlIG5vdCBpbml0aWFsaXplZFxuICAgIGlmICghcHJvZmlsZT8ubmV0d29ya0lkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2ZpbGUgbm90IGluaXRpYWxpemVkLiBDYWxsIHN5bmNFbnRpdHkgaW5zaWRlIHRoZSBtYWluKCkgZnVuY3Rpb24uJylcbiAgICB9XG5cbiAgICAvLyBXZSB1c2UgdGhlIG5ldHdvcmtJZCBnZW5lcmF0ZWQgYnkgdGhlIHVzZXIgYWRkcmVzcyB0byBpZGVudGlmeSB0aGlzIGVudGl0eSB0aHJvdWdoIHRoZSBuZXR3b3JrXG4gICAgY29uc3QgbmV0d29ya1ZhbHVlID0geyBlbnRpdHlJZCwgbmV0d29ya0lkOiBwcm9maWxlLm5ldHdvcmtJZCB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBlbnRpdHlFbnVtSWQsIGl0IG1lYW5zIGlzIHRoZSBzYW1lIGVudGl0eSBmb3IgYWxsIHRoZSBjbGllbnRzIGNyZWF0ZWQgb24gdGhlIG1haW4gZnVuY2l0b24uXG4gICAgLy8gU28gdGhlIG5ldHdvcmtJZCBzaG91bGQgYmUgdGhlIHNhbWUgaW4gYWxsIHRoZSBjbGllbnRzIHRvIGF2b2lkIHJlLWNyZWF0aW5nIHRoaXMgZW50aXR5LlxuICAgIC8vIEZvciB0aGlzIGNhc2Ugd2UgdXNlIG5ldHdvcmtJZCA9IDAuXG4gICAgaWYgKGVudGl0eUVudW1JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXR3b3JrVmFsdWUubmV0d29ya0lkID0gMFxuICAgICAgbmV0d29ya1ZhbHVlLmVudGl0eUlkID0gZW50aXR5RW51bUlkIGFzIEVudGl0eVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGVudW0gaXMgYWxyZWFkeSB1c2VkXG4gICAgICBmb3IgKGNvbnN0IFtfLCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICAgIGlmIChuZXR3b3JrLm5ldHdvcmtJZCA9PT0gbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCAmJiBuZXR3b3JrLmVudGl0eUlkID09PSBuZXR3b3JrVmFsdWUuZW50aXR5SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N5bmNFbnRpdHkgZmFpbGVkIGJlY2F1c2UgdGhlIGlkIHByb3ZpZGVkIGlzIGFscmVhZHkgaW4gdXNlJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGdldERlc3luY2VkQ29tcG9uZW50cyhlbmdpbmUpKSB7XG4gICAgICBpZiAoY29tcG9uZW50c0lkc011dGFibGUuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudElkKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhg4pqg77iPICR7Y29tcG9uZW50LmNvbXBvbmVudE5hbWV9IGNhbid0IGJlIHN5bmMgdGhyb3VnaCB0aGUgbmV0d29yayFgKVxuICAgICAgICBjb21wb25lbnRzSWRzTXV0YWJsZSA9IGNvbXBvbmVudHNJZHNNdXRhYmxlLmZpbHRlcigoJCkgPT4gJCAhPT0gY29tcG9uZW50LmNvbXBvbmVudElkKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGlzIGEgZW50aXR5IGNyZWF0ZWQgaW4gcnVudGltZSAod2hhdCB3ZSBjYWxsZWQgZHluYW1pYy9ydW50aW1lIGVudGl0aWVzKS5cbiAgICBOZXR3b3JrRW50aXR5LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgbmV0d29ya1ZhbHVlKVxuICAgIFN5bmNDb21wb25lbnRzLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgeyBjb21wb25lbnRJZHM6IGNvbXBvbmVudHNJZHNNdXRhYmxlIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvZiBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKiBmb3IgKGNvbnN0IGNoaWxkcmVuIG9mIGdldENoaWxkcmVuKHBhcmVudCkpIHsgY29uc29sZS5sb2coY2hpbGRyZW4pIH1cbiAgICogb3IganVzdCA9PiBjb25zdCBjaGlsZHJlbnM6IEVudGl0eVtdID0gQXJyYXkuZnJvbShnZXRDaGlsZHJlbihwYXJlbnQpKVxuICAgKi9cbiAgZnVuY3Rpb24qIGdldENoaWxkcmVuKHBhcmVudDogRW50aXR5KTogSXRlcmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKHBhcmVudClcbiAgICBpZiAobmV0d29yaykge1xuICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBwYXJlbnRdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya1BhcmVudCkpIHtcbiAgICAgICAgaWYgKHBhcmVudC5lbnRpdHlJZCA9PT0gbmV0d29yay5lbnRpdHlJZCAmJiBwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCkge1xuICAgICAgICAgIHlpZWxkIGVudGl0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZChlbnRpdHk6IEVudGl0eSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGdldENoaWxkcmVuKGVudGl0eSkpWzBdXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyZW50IGVudGl0eSBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UGFyZW50KGNoaWxkOiBFbnRpdHkpOiBFbnRpdHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmVudCA9IE5ldHdvcmtQYXJlbnQuZ2V0T3JOdWxsKGNoaWxkKVxuICAgIGlmICghcGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICBpZiAocGFyZW50Lm5ldHdvcmtJZCA9PT0gbmV0d29yay5uZXR3b3JrSWQgJiYgcGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkKSB7XG4gICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIHRvIHN5bmMgZW50aXRpZXMuXG4gICAqIEVxdWl2YWxlbnQgdG8gVHJhbnNmb3JtLnBhcmVudCBmb3IgbG9jYWwgZW50aXRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIHBhcmVudEVudGl0eShlbnRpdHk6IEVudGl0eSwgcGFyZW50OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMuIENhbGwgc3luY0VudGl0eSBvbiB0aGUgcGFyZW50LicpXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldHdvcmsgcGFyZW50IGNvbXBvbmVudFxuICAgIE5ldHdvcmtQYXJlbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgbmV0d29yaylcblxuICAgIC8vIElmIHdlIGRvbnQgaGF2ZSBhIHRyYW5zZm9ybSBmb3IgdGhpcyBlbnRpdHksIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdG8gc2VuZCBpdCB0byB0aGUgcmVuZGVyZXJcbiAgICBpZiAoIVRyYW5zZm9ybS5nZXRPck51bGwoZW50aXR5KSkge1xuICAgICAgVHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGZvcmNlIHRvIHNlbmQgYSB0aWNrIHVwZGF0ZSBvZiB0aGUgdHJhbnNmb3JtIHNvIHdlIGNhbiBzZW5kIHRoZSBORVcgcGFyZW50IHRvIHRoZSByZW5kZXJlclxuICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBuZXR3b3JrIHBhcmVudGluZyBmcm9tIGFuIGVudGl0eVxuICAgKi9cbiAgZnVuY3Rpb24gcmVtb3ZlUGFyZW50KGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKGVudGl0eSlcblxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMnKVxuICAgIH1cblxuICAgIE5ldHdvcmtQYXJlbnQuZGVsZXRlRnJvbShlbnRpdHkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN5bmNFbnRpdHksXG4gICAgZ2V0Q2hpbGRyZW4sXG4gICAgZ2V0UGFyZW50LFxuICAgIHBhcmVudEVudGl0eSxcbiAgICByZW1vdmVQYXJlbnQsXG4gICAgZ2V0Rmlyc3RDaGlsZFxuICB9XG59XG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJbEMsTUFBTSxVQUFVLENBQUE7QUFFakIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBSS9DLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUUxRjs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUNqRixJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUM1QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFBO1NBQ3hGO1FBRUQsaUdBQWlHO1FBQ2pHLE1BQU0sWUFBWSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFL0QsNkdBQTZHO1FBQzdHLDJGQUEyRjtRQUMz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U0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRS9DLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7U0FDdEM7UUFFRCxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxPQUFPO1FBQ0wsVUFBVTtRQUNWLFdBQVc7UUFDWCxTQUFTO1FBQ1QsWUFBWTtRQUNaLFlBQVk7UUFDWixhQUFhO0tBQ2QsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdHksXG4gIElFbmdpbmUsXG4gIE5ldHdvcmtFbnRpdHkgYXMgX05ldHdvcmtFbnRpdHksXG4gIElOZXRvd3JrRW50aXR5LFxuICBOZXR3b3JrUGFyZW50IGFzIF9OZXR3b3JrUGFyZW50LFxuICBUcmFuc2Zvcm0gYXMgX1RyYW5zZm9ybSxcbiAgU3luY0NvbXBvbmVudHMgYXMgX1N5bmNDb21wb25lbnRzLFxuICBJTmV0b3dya1BhcmVudCxcbiAgVHJhbnNmb3JtQ29tcG9uZW50LFxuICBJU3luY0NvbXBvbmVudHNcbn0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBJUHJvZmlsZSB9IGZyb20gJy4vbWVzc2FnZS1idXMtc3luYydcbmltcG9ydCB7IGdldERlc3luY2VkQ29tcG9uZW50cyB9IGZyb20gJy4vc3RhdGUnXG5cbmV4cG9ydCB0eXBlIFN5bmNFbnRpdHkgPSAoZW50aXR5SWQ6IEVudGl0eSwgY29tcG9uZW50SWRzOiBudW1iZXJbXSwgZW50aXR5RW51bUlkPzogbnVtYmVyKSA9PiB2b2lkXG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlVdGlscyhlbmdpbmU6IElFbmdpbmUsIHByb2ZpbGU6IElQcm9maWxlKSB7XG4gIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuICBjb25zdCBOZXR3b3JrUGFyZW50ID0gZW5naW5lLmdldENvbXBvbmVudChfTmV0d29ya1BhcmVudC5jb21wb25lbnRJZCkgYXMgSU5ldG93cmtQYXJlbnRcbiAgY29uc3QgVHJhbnNmb3JtID0gZW5naW5lLmdldENvbXBvbmVudChfVHJhbnNmb3JtLmNvbXBvbmVudElkKSBhcyBUcmFuc2Zvcm1Db21wb25lbnRcbiAgY29uc3QgU3luY0NvbXBvbmVudHMgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9TeW5jQ29tcG9uZW50cy5jb21wb25lbnRJZCkgYXMgSVN5bmNDb21wb25lbnRzXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldHdvcmsgZW50aXR5IChzeW5jKSB0aHJvdWdoIGNvbW1zLCBhbmQgc3luYyB0aGUgcmVjZWl2ZWQgY29tcG9uZW50c1xuICAgKi9cbiAgZnVuY3Rpb24gc3luY0VudGl0eShlbnRpdHlJZDogRW50aXR5LCBjb21wb25lbnRJZHM6IG51bWJlcltdLCBlbnRpdHlFbnVtSWQ/OiBudW1iZXIpIHtcbiAgICBsZXQgY29tcG9uZW50c0lkc011dGFibGUgPSBbLi4uY29tcG9uZW50SWRzXVxuICAgIC8vIFByb2ZpbGUgbm90IGluaXRpYWxpemVkXG4gICAgaWYgKCFwcm9maWxlPy5uZXR3b3JrSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWQuIENhbGwgc3luY0VudGl0eSBpbnNpZGUgdGhlIG1haW4oKSBmdW5jdGlvbi4nKVxuICAgIH1cblxuICAgIC8vIFdlIHVzZSB0aGUgbmV0d29ya0lkIGdlbmVyYXRlZCBieSB0aGUgdXNlciBhZGRyZXNzIHRvIGlkZW50aWZ5IHRoaXMgZW50aXR5IHRocm91Z2ggdGhlIG5ldHdvcmtcbiAgICBjb25zdCBuZXR3b3JrVmFsdWUgPSB7IGVudGl0eUlkLCBuZXR3b3JrSWQ6IHByb2ZpbGUubmV0d29ya0lkIH1cblxuICAgIC8vIElmIHRoZXJlIGlzIGFuIGVudGl0eUVudW1JZCwgaXQgbWVhbnMgaXMgdGhlIHNhbWUgZW50aXR5IGZvciBhbGwgdGhlIGNsaWVudHMgY3JlYXRlZCBvbiB0aGUgbWFpbiBmdW5jaXRvbi5cbiAgICAvLyBTbyB0aGUgbmV0d29ya0lkIHNob3VsZCBiZSB0aGUgc2FtZSBpbiBhbGwgdGhlIGNsaWVudHMgdG8gYXZvaWQgcmUtY3JlYXRpbmcgdGhpcyBlbnRpdHkuXG4gICAgLy8gRm9yIHRoaXMgY2FzZSB3ZSB1c2UgbmV0d29ya0lkID0gMC5cbiAgICBpZiAoZW50aXR5RW51bUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldHdvcmtWYWx1ZS5uZXR3b3JrSWQgPSAwXG4gICAgICBuZXR3b3JrVmFsdWUuZW50aXR5SWQgPSBlbnRpdHlFbnVtSWQgYXMgRW50aXR5XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgZW51bSBpcyBhbHJlYWR5IHVzZWRcbiAgICAgIGZvciAoY29uc3QgW18sIG5ldHdvcmtdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya0VudGl0eSkpIHtcbiAgICAgICAgaWYgKG5ldHdvcmsubmV0d29ya0lkID09PSBuZXR3b3JrVmFsdWUubmV0d29ya0lkICYmIG5ldHdvcmsuZW50aXR5SWQgPT09IG5ldHdvcmtWYWx1ZS5lbnRpdHlJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc3luY0VudGl0eSBmYWlsZWQgYmVjYXVzZSB0aGUgaWQgcHJvdmlkZWQgaXMgYWxyZWFkeSBpbiB1c2UnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgZ2V0RGVzeW5jZWRDb21wb25lbnRzKGVuZ2luZSkpIHtcbiAgICAgIGlmIChjb21wb25lbnRzSWRzTXV0YWJsZS5pbmNsdWRlcyhjb21wb25lbnQuY29tcG9uZW50SWQpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDimqDvuI8gJHtjb21wb25lbnQuY29tcG9uZW50TmFtZX0gY2FuJ3QgYmUgc3luYyB0aHJvdWdoIHRoZSBuZXR3b3JrIWApXG4gICAgICAgIGNvbXBvbmVudHNJZHNNdXRhYmxlID0gY29tcG9uZW50c0lkc011dGFibGUuZmlsdGVyKCgkKSA9PiAkICE9PSBjb21wb25lbnQuY29tcG9uZW50SWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgaXMgbm90IGRlZmluZWQsIHRoZW4gaXMgYSBlbnRpdHkgY3JlYXRlZCBpbiBydW50aW1lICh3aGF0IHdlIGNhbGxlZCBkeW5hbWljL3J1bnRpbWUgZW50aXRpZXMpLlxuICAgIE5ldHdvcmtFbnRpdHkuY3JlYXRlT3JSZXBsYWNlKGVudGl0eUlkLCBuZXR3b3JrVmFsdWUpXG4gICAgU3luY0NvbXBvbmVudHMuY3JlYXRlT3JSZXBsYWNlKGVudGl0eUlkLCB7IGNvbXBvbmVudElkczogY29tcG9uZW50c0lkc011dGFibGUgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGl0ZXJhYmxlIG9mIGFsbCB0aGUgY2hpbGRyZW5zIG9mIHRoZSBnaXZlbiBlbnRpdHkuXG4gICAqIGZvciAoY29uc3QgY2hpbGRyZW4gb2YgZ2V0Q2hpbGRyZW4ocGFyZW50KSkgeyBjb25zb2xlLmxvZyhjaGlsZHJlbikgfVxuICAgKiBvciBqdXN0ID0+IGNvbnN0IGNoaWxkcmVuczogRW50aXR5W10gPSBBcnJheS5mcm9tKGdldENoaWxkcmVuKHBhcmVudCkpXG4gICAqL1xuICBmdW5jdGlvbiogZ2V0Q2hpbGRyZW4ocGFyZW50OiBFbnRpdHkpOiBJdGVyYWJsZTxFbnRpdHk+IHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmIChuZXR3b3JrKSB7XG4gICAgICBmb3IgKGNvbnN0IFtlbnRpdHksIHBhcmVudF0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChOZXR3b3JrUGFyZW50KSkge1xuICAgICAgICBpZiAocGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkICYmIHBhcmVudC5uZXR3b3JrSWQgPT09IG5ldHdvcmsubmV0d29ya0lkKSB7XG4gICAgICAgICAgeWllbGQgZW50aXR5XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRGaXJzdENoaWxkKGVudGl0eTogRW50aXR5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ2V0Q2hpbGRyZW4oZW50aXR5KSlbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXJlbnQgZW50aXR5IG9mIHRoZSBnaXZlbiBlbnRpdHkuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRQYXJlbnQoY2hpbGQ6IEVudGl0eSk6IEVudGl0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGFyZW50ID0gTmV0d29ya1BhcmVudC5nZXRPck51bGwoY2hpbGQpXG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiB1bmRlZmluZWRcbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIG5ldHdvcmtdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya0VudGl0eSkpIHtcbiAgICAgIGlmIChwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCAmJiBwYXJlbnQuZW50aXR5SWQgPT09IG5ldHdvcmsuZW50aXR5SWQpIHtcbiAgICAgICAgcmV0dXJuIGVudGl0eVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgbmV0d29yayBwYXJlbnRpbmcgdG8gc3luYyBlbnRpdGllcy5cbiAgICogRXF1aXZhbGVudCB0byBUcmFuc2Zvcm0ucGFyZW50IGZvciBsb2NhbCBlbnRpdGllc1xuICAgKi9cbiAgZnVuY3Rpb24gcGFyZW50RW50aXR5KGVudGl0eTogRW50aXR5LCBwYXJlbnQ6IEVudGl0eSkge1xuICAgIGNvbnN0IG5ldHdvcmsgPSBOZXR3b3JrRW50aXR5LmdldE9yTnVsbChwYXJlbnQpXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBpcyBub3Qgc3luYy4gQ2FsbCBzeW5jRW50aXR5IG9uIHRoZSBwYXJlbnQuJylcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgbmV0d29yayBwYXJlbnQgY29tcG9uZW50XG4gICAgTmV0d29ya1BhcmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCBuZXR3b3JrKVxuXG4gICAgLy8gSWYgd2UgZG9udCBoYXZlIGEgdHJhbnNmb3JtIGZvciB0aGlzIGVudGl0eSwgY3JlYXRlIGFuIGVtcHR5IG9uZSB0byBzZW5kIGl0IHRvIHRoZSByZW5kZXJlclxuICAgIGlmICghVHJhbnNmb3JtLmdldE9yTnVsbChlbnRpdHkpKSB7XG4gICAgICBUcmFuc2Zvcm0uY3JlYXRlKGVudGl0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yY2UgYSB0aWNrIHVwZGF0ZSBvZiB0aGUgdHJhbnNmb3JtIHNvIHRoZSByZW5kZXJlciByZWNlaXZlcyB0aGUgTkVXIHBhcmVudC5cbiAgICAgIC8vIGNyZWF0ZU9yUmVwbGFjZSBieXBhc3NlcyB0aGUgQ1JEVCB1bmNoYW5nZWQtZGF0YSBzdXBwcmVzc2lvbiBvcHRpbWl6YXRpb24sXG4gICAgICAvLyBlbnN1cmluZyB0aGUgcmVuZGVyZXIgdHJhbnNwb3J0IGNhbiBpbmplY3QgdGhlIG5ldHdvcmsgcGFyZW50IGludG8gdGhlIG1lc3NhZ2UuXG4gICAgICBjb25zdCB0ID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgICBUcmFuc2Zvcm0uY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgICBwb3NpdGlvbjogeyB4OiB0LnBvc2l0aW9uLngsIHk6IHQucG9zaXRpb24ueSwgejogdC5wb3NpdGlvbi56IH0sXG4gICAgICAgIHJvdGF0aW9uOiB7IHg6IHQucm90YXRpb24ueCwgeTogdC5yb3RhdGlvbi55LCB6OiB0LnJvdGF0aW9uLnosIHc6IHQucm90YXRpb24udyB9LFxuICAgICAgICBzY2FsZTogeyB4OiB0LnNjYWxlLngsIHk6IHQuc2NhbGUueSwgejogdC5zY2FsZS56IH0sXG4gICAgICAgIHBhcmVudDogdC5wYXJlbnRcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIGZyb20gYW4gZW50aXR5XG4gICAqL1xuICBmdW5jdGlvbiByZW1vdmVQYXJlbnQoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBpcyBub3Qgc3luYycpXG4gICAgfVxuXG4gICAgTmV0d29ya1BhcmVudC5kZWxldGVGcm9tKGVudGl0eSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3luY0VudGl0eSxcbiAgICBnZXRDaGlsZHJlbixcbiAgICBnZXRQYXJlbnQsXG4gICAgcGFyZW50RW50aXR5LFxuICAgIHJlbW92ZVBhcmVudCxcbiAgICBnZXRGaXJzdENoaWxkXG4gIH1cbn1cbiJdfQ==
|
package/network/index.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
on: <K extends import("./binary-message-bus").CommsMessage>(message: K, callback: (value: Uint8Array, sender: string) => void) => void;
|
|
4
|
-
emit: <K_1 extends import("./binary-message-bus").CommsMessage>(message: K_1, value: Uint8Array, toPeerAddress?: string[] | undefined) => void;
|
|
5
|
-
__processMessages: (messages: Uint8Array[]) => void;
|
|
6
|
-
}, eventBus: import("./events/implementation").Room<import("./events").EventSchemaRegistry>;
|
|
7
|
-
export { registerMessages, getRoom } from './events';
|
|
8
|
-
export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, isStateSyncronized, binaryMessageBus, eventBus };
|
|
1
|
+
declare const getChildren: (parent: import("@dcl/ecs").Entity) => Iterable<import("@dcl/ecs").Entity>, syncEntity: (entityId: import("@dcl/ecs").Entity, componentIds: number[], entityEnumId?: number | undefined) => void, parentEntity: (entity: import("@dcl/ecs").Entity, parent: import("@dcl/ecs").Entity) => void, getParent: (child: import("@dcl/ecs").Entity) => import("@dcl/ecs").Entity | undefined, myProfile: import("./message-bus-sync").IProfile, removeParent: (entity: import("@dcl/ecs").Entity) => void, getFirstChild: (entity: import("@dcl/ecs").Entity) => import("@dcl/ecs").Entity, isStateSyncronized: () => boolean;
|
|
2
|
+
export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, isStateSyncronized };
|
package/network/index.js
CHANGED
|
@@ -2,20 +2,7 @@ import { sendBinary } from '~system/CommunicationsController';
|
|
|
2
2
|
import { engine } from '@dcl/ecs';
|
|
3
3
|
import { addSyncTransport } from './message-bus-sync';
|
|
4
4
|
import { getUserData } from '~system/UserIdentity';
|
|
5
|
-
import { isServer as isServerApi } from '~system/EngineApi';
|
|
6
|
-
import { Atom } from '../atom';
|
|
7
|
-
// Create isServer atom for consistent state
|
|
8
|
-
const isServerAtom = Atom(false);
|
|
9
|
-
void isServerApi({}).then((response) => {
|
|
10
|
-
isServerAtom.swap(!!response.isServer);
|
|
11
|
-
});
|
|
12
|
-
// Helper function to check if running on server
|
|
13
|
-
export function isServer() {
|
|
14
|
-
return isServerAtom.getOrNull() ?? false;
|
|
15
|
-
}
|
|
16
5
|
// initialize sync transport for sdk engine
|
|
17
|
-
const { getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, getFirstChild, isStateSyncronized
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, isStateSyncronized, binaryMessageBus, eventBus };
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRTlCLDRDQUE0QztBQUM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQVUsS0FBSyxDQUFDLENBQUE7QUFDekMsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7SUFDckMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ3hDLENBQUMsQ0FBQyxDQUFBO0FBRUYsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxRQUFRO0lBQ3RCLE9BQU8sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQTtBQUMxQyxDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sRUFDSixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1QsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFFN0Usc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFcEQsT0FBTyxFQUNMLGFBQWEsRUFDYixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDVCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2VuZEJpbmFyeSB9IGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuaW1wb3J0IHsgZW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBhZGRTeW5jVHJhbnNwb3J0IH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuaW1wb3J0IHsgZ2V0VXNlckRhdGEgfSBmcm9tICd+c3lzdGVtL1VzZXJJZGVudGl0eSdcbmltcG9ydCB7IGlzU2VydmVyIGFzIGlzU2VydmVyQXBpIH0gZnJvbSAnfnN5c3RlbS9FbmdpbmVBcGknXG5pbXBvcnQgeyBBdG9tIH0gZnJvbSAnLi4vYXRvbSdcblxuLy8gQ3JlYXRlIGlzU2VydmVyIGF0b20gZm9yIGNvbnNpc3RlbnQgc3RhdGVcbmNvbnN0IGlzU2VydmVyQXRvbSA9IEF0b208Ym9vbGVhbj4oZmFsc2UpXG52b2lkIGlzU2VydmVyQXBpKHt9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICBpc1NlcnZlckF0b20uc3dhcCghIXJlc3BvbnNlLmlzU2VydmVyKVxufSlcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHJ1bm5pbmcgb24gc2VydmVyXG5leHBvcnQgZnVuY3Rpb24gaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcnZlckF0b20uZ2V0T3JOdWxsKCkgPz8gZmFsc2Vcbn1cblxuLy8gaW5pdGlhbGl6ZSBzeW5jIHRyYW5zcG9ydCBmb3Igc2RrIGVuZ2luZVxuY29uc3Qge1xuICBnZXRDaGlsZHJlbixcbiAgc3luY0VudGl0eSxcbiAgcGFyZW50RW50aXR5LFxuICBnZXRQYXJlbnQsXG4gIG15UHJvZmlsZSxcbiAgcmVtb3ZlUGFyZW50LFxuICBnZXRGaXJzdENoaWxkLFxuICBpc1N0YXRlU3luY3Jvbml6ZWQsXG4gIGJpbmFyeU1lc3NhZ2VCdXMsXG4gIGV2ZW50QnVzXG59ID0gYWRkU3luY1RyYW5zcG9ydChlbmdpbmUsIHNlbmRCaW5hcnksIGdldFVzZXJEYXRhLCBpc1NlcnZlckFwaSwgJ25ldHdvcmsnKVxuXG4vLyBSZS1leHBvcnQgdGhlIHJvb20gbWVzc2FnaW5nIHN5c3RlbVxuZXhwb3J0IHsgcmVnaXN0ZXJNZXNzYWdlcywgZ2V0Um9vbSB9IGZyb20gJy4vZXZlbnRzJ1xuXG5leHBvcnQge1xuICBnZXRGaXJzdENoaWxkLFxuICBnZXRDaGlsZHJlbixcbiAgc3luY0VudGl0eSxcbiAgcGFyZW50RW50aXR5LFxuICBnZXRQYXJlbnQsXG4gIG15UHJvZmlsZSxcbiAgcmVtb3ZlUGFyZW50LFxuICBpc1N0YXRlU3luY3Jvbml6ZWQsXG4gIGJpbmFyeU1lc3NhZ2VCdXMsXG4gIGV2ZW50QnVzXG59XG4iXX0=
|
|
6
|
+
const { getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, getFirstChild, isStateSyncronized } = addSyncTransport(engine, sendBinary, getUserData);
|
|
7
|
+
export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, isStateSyncronized };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsR0FDcEgsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZW5kQmluYXJ5IH0gZnJvbSAnfnN5c3RlbS9Db21tdW5pY2F0aW9uc0NvbnRyb2xsZXInXG5pbXBvcnQgeyBlbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGFkZFN5bmNUcmFuc3BvcnQgfSBmcm9tICcuL21lc3NhZ2UtYnVzLXN5bmMnXG5pbXBvcnQgeyBnZXRVc2VyRGF0YSB9IGZyb20gJ35zeXN0ZW0vVXNlcklkZW50aXR5J1xuXG4vLyBpbml0aWFsaXplIHN5bmMgdHJhbnNwb3J0IGZvciBzZGsgZW5naW5lXG5jb25zdCB7IGdldENoaWxkcmVuLCBzeW5jRW50aXR5LCBwYXJlbnRFbnRpdHksIGdldFBhcmVudCwgbXlQcm9maWxlLCByZW1vdmVQYXJlbnQsIGdldEZpcnN0Q2hpbGQsIGlzU3RhdGVTeW5jcm9uaXplZCB9ID1cbiAgYWRkU3luY1RyYW5zcG9ydChlbmdpbmUsIHNlbmRCaW5hcnksIGdldFVzZXJEYXRhKVxuXG5leHBvcnQgeyBnZXRGaXJzdENoaWxkLCBnZXRDaGlsZHJlbiwgc3luY0VudGl0eSwgcGFyZW50RW50aXR5LCBnZXRQYXJlbnQsIG15UHJvZmlsZSwgcmVtb3ZlUGFyZW50LCBpc1N0YXRlU3luY3Jvbml6ZWQgfVxuIl19
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
/// <reference types="@dcl/js-runtime" />
|
|
2
2
|
import { IEngine } from '@dcl/ecs';
|
|
3
3
|
import { type SendBinaryRequest, type SendBinaryResponse } from '~system/CommunicationsController';
|
|
4
|
-
import { CommsMessage } from './binary-message-bus';
|
|
5
4
|
import { GetUserDataRequest, GetUserDataResponse } from '~system/UserIdentity';
|
|
6
|
-
import { IsServerRequest, IsServerResponse } from '~system/EngineApi';
|
|
7
|
-
import { Atom } from '../atom';
|
|
8
|
-
import { Room } from './events/implementation';
|
|
9
5
|
export type IProfile = {
|
|
10
6
|
networkId: number;
|
|
11
7
|
userId: string;
|
|
12
8
|
};
|
|
13
|
-
export declare
|
|
14
|
-
export declare const DEBUG_NETWORK_MESSAGES: () => any;
|
|
15
|
-
export declare function addSyncTransport(engine: IEngine, sendBinary: (msg: SendBinaryRequest) => Promise<SendBinaryResponse>, getUserData: (value: GetUserDataRequest) => Promise<GetUserDataResponse>, isServerFn: (request: IsServerRequest) => Promise<IsServerResponse>, name: string): {
|
|
9
|
+
export declare function addSyncTransport(engine: IEngine, sendBinary: (msg: SendBinaryRequest) => Promise<SendBinaryResponse>, getUserData: (value: GetUserDataRequest) => Promise<GetUserDataResponse>): {
|
|
16
10
|
myProfile: IProfile;
|
|
17
11
|
isStateSyncronized: () => boolean;
|
|
18
|
-
binaryMessageBus: {
|
|
19
|
-
on: <K extends CommsMessage>(message: K, callback: (value: Uint8Array, sender: string) => void) => void;
|
|
20
|
-
emit: <K_1 extends CommsMessage>(message: K_1, value: Uint8Array, toPeerAddress?: string[] | undefined) => void;
|
|
21
|
-
__processMessages: (messages: Uint8Array[]) => void;
|
|
22
|
-
};
|
|
23
|
-
eventBus: Room<import("./events").EventSchemaRegistry>;
|
|
24
|
-
isRoomReadyAtom: Atom<boolean>;
|
|
25
12
|
syncEntity: (entityId: import("@dcl/ecs").Entity, componentIds: number[], entityEnumId?: number | undefined) => void;
|
|
26
13
|
getChildren: (parent: import("@dcl/ecs").Entity) => Iterable<import("@dcl/ecs").Entity>;
|
|
27
14
|
getParent: (child: import("@dcl/ecs").Entity) => import("@dcl/ecs").Entity | undefined;
|