@dcl/sdk 7.5.7-10289449044.commit-c15b62f → 7.5.7-10312762318.commit-2f6b9a0
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.
@@ -1,7 +1,7 @@
|
|
1
1
|
import { syncFilter } from './filter';
|
2
2
|
import { engineToCrdt } from './state';
|
3
3
|
import { BinaryMessageBus, CommsMessage } from './binary-message-bus';
|
4
|
-
import { definePlayersInScene, fetchProfile, setInitialized, stateInitialized, stateInitializedChecker
|
4
|
+
import { definePlayersInScene, fetchProfile, setInitialized, stateInitialized, stateInitializedChecker } from './utils';
|
5
5
|
import { entityUtils } from './entities';
|
6
6
|
// user that we asked for the inital crdt state
|
7
7
|
export function addSyncTransport(engine, sendBinary, getUserData) {
|
@@ -23,7 +23,7 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
|
|
23
23
|
const transport = {
|
24
24
|
filter: syncFilter(engine),
|
25
25
|
send: async (message) => {
|
26
|
-
if (
|
26
|
+
if (message.byteLength) {
|
27
27
|
// console.log(Array.from(serializeCrdtMessages('[send CRDT]: ', message, engine)))
|
28
28
|
binaryMessageBus.emit(CommsMessage.CRDT, message);
|
29
29
|
}
|
@@ -41,24 +41,23 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
|
|
41
41
|
binaryMessageBus.emit(CommsMessage.REQ_CRDT_STATE, new Uint8Array());
|
42
42
|
// If we dont have any state initialized, and recieve a state message.
|
43
43
|
binaryMessageBus.on(CommsMessage.RES_CRDT_STATE, (value) => {
|
44
|
-
// console.log(Array.from(serializeCrdtMessages('[binaryMessageBus]: ', value, engine)))
|
45
44
|
if (!stateInitialized) {
|
46
45
|
setInitialized();
|
47
46
|
transport.onmessage(value);
|
48
47
|
}
|
49
48
|
});
|
50
|
-
// If we are the oldest user and we recieve a req of a state we send it.
|
51
49
|
binaryMessageBus.on(CommsMessage.REQ_CRDT_STATE, () => {
|
52
|
-
// TODO:
|
53
|
-
//
|
54
|
-
//
|
50
|
+
// TODO: maybe remove this line ?
|
51
|
+
// If we send an outdated CRDT, the other clients will ignore it.
|
52
|
+
// But maybe, two clients enters at the same time with custom network entities
|
53
|
+
// and if the state was not initialized, those entities were never sent.
|
55
54
|
if (stateInitialized) {
|
56
55
|
binaryMessageBus.emit(CommsMessage.RES_CRDT_STATE, engineToCrdt(engine));
|
57
56
|
}
|
58
57
|
});
|
59
58
|
// Process CRDT messages here
|
60
59
|
binaryMessageBus.on(CommsMessage.CRDT, (value) => {
|
61
|
-
// console.log(Array.from(serializeCrdtMessages('[CRDT
|
60
|
+
// console.log(Array.from(serializeCrdtMessages('[receive CRDT]: ', value, engine)))
|
62
61
|
transport.onmessage(value);
|
63
62
|
});
|
64
63
|
return {
|
@@ -66,4 +65,4 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
|
|
66
65
|
myProfile
|
67
66
|
};
|
68
67
|
}
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXR3b3JrL21lc3NhZ2UtYnVzLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV4QixNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3hDLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQWUsRUFDZixVQUFtRSxFQUNuRSxXQUF3RTtJQUV4RSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QixlQUFlO0lBQ2YsTUFBTSxTQUFTLEdBQWEsRUFBYyxDQUFBO0lBQzFDLFlBQVksQ0FBQyxTQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFFckMsZUFBZTtJQUNmLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV4RCxtRUFBbUU7SUFDbkUsTUFBTSwrQkFBK0IsR0FBaUIsRUFBRSxDQUFBO0lBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3JHLFNBQVMsaUJBQWlCO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxDQUFBO1FBQ3JELCtCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDMUMsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQW1CLEVBQUUsRUFBRTtZQUNsQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLG1GQUFtRjtnQkFDbkYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7YUFDbEQ7WUFDRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDckQsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5Qix5QkFBeUI7SUFFekIsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBRWhHLHdCQUF3QjtJQUN4QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFFcEUsc0VBQXNFO0lBQ3RFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JCLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLFNBQVMsQ0FBQyxTQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDNUI7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxpQ0FBaUM7UUFDakMsaUVBQWlFO1FBQ2pFLDhFQUE4RTtRQUM5RSx3RUFBd0U7UUFDeEUsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtTQUN6RTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsNkJBQTZCO0lBQzdCLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDL0Msb0ZBQW9GO1FBQ3BGLFNBQVMsQ0FBQyxTQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPO1FBQ0wsR0FBRyxpQkFBaUI7UUFDcEIsU0FBUztLQUNWLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSwgVHJhbnNwb3J0IH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgdHlwZSB7IFNlbmRCaW5hcnlSZXF1ZXN0LCBTZW5kQmluYXJ5UmVzcG9uc2UgfSBmcm9tICd+c3lzdGVtL0NvbW11bmljYXRpb25zQ29udHJvbGxlcidcblxuaW1wb3J0IHsgc3luY0ZpbHRlciB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgZW5naW5lVG9DcmR0IH0gZnJvbSAnLi9zdGF0ZSdcbmltcG9ydCB7IEJpbmFyeU1lc3NhZ2VCdXMsIENvbW1zTWVzc2FnZSB9IGZyb20gJy4vYmluYXJ5LW1lc3NhZ2UtYnVzJ1xuaW1wb3J0IHtcbiAgZGVmaW5lUGxheWVyc0luU2NlbmUsXG4gIGZldGNoUHJvZmlsZSxcbiAgb2xkZXN0VXNlciBhcyBfb2xkZXN0VXNlcixcbiAgc2V0SW5pdGlhbGl6ZWQsXG4gIHN0YXRlSW5pdGlhbGl6ZWQsXG4gIHN0YXRlSW5pdGlhbGl6ZWRDaGVja2VyLFxuICBzeW5jVHJhbnNwb3J0SXNSZWFkeVxufSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgZW50aXR5VXRpbHMgfSBmcm9tICcuL2VudGl0aWVzJ1xuaW1wb3J0IHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG4vLyBpbXBvcnQgeyBzZXJpYWxpemVDcmR0TWVzc2FnZXMgfSBmcm9tICcuLi9pbnRlcm5hbC90cmFuc3BvcnRzL2xvZ2dlcidcblxuZXhwb3J0IHR5cGUgSVByb2ZpbGUgPSB7IG5ldHdvcmtJZDogbnVtYmVyOyB1c2VySWQ6IHN0cmluZyB9XG4vLyB1c2VyIHRoYXQgd2UgYXNrZWQgZm9yIHRoZSBpbml0YWwgY3JkdCBzdGF0ZVxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN5bmNUcmFuc3BvcnQoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc2VuZEJpbmFyeTogKG1zZzogU2VuZEJpbmFyeVJlcXVlc3QpID0+IFByb21pc2U8U2VuZEJpbmFyeVJlc3BvbnNlPixcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBQcm9maWxlIEluZm9cbiAgY29uc3QgbXlQcm9maWxlOiBJUHJvZmlsZSA9IHt9IGFzIElQcm9maWxlXG4gIGZldGNoUHJvZmlsZShteVByb2ZpbGUhLCBnZXRVc2VyRGF0YSlcblxuICAvLyBFbnRpdHkgdXRpbHNcbiAgY29uc3QgZW50aXR5RGVmaW5pdGlvbnMgPSBlbnRpdHlVdGlscyhlbmdpbmUsIG15UHJvZmlsZSlcblxuICAvLyBMaXN0IG9mIE1lc3NhZ2VCdXNzIG1lc3NzYWdlcyB0byBiZSBzZW50IG9uIGV2ZXJ5IGZyYW1lIHRvIGNvbW1zXG4gIGNvbnN0IHBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmQ6IFVpbnQ4QXJyYXlbXSA9IFtdXG4gIGNvbnN0IGJpbmFyeU1lc3NhZ2VCdXMgPSBCaW5hcnlNZXNzYWdlQnVzKChtZXNzYWdlKSA9PiBwZW5kaW5nTWVzc2FnZUJ1c01lc3NhZ2VzVG9TZW5kLnB1c2gobWVzc2FnZSkpXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2VzVG9TZW5kKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLnBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmRdXG4gICAgcGVuZGluZ01lc3NhZ2VCdXNNZXNzYWdlc1RvU2VuZC5sZW5ndGggPSAwXG4gICAgcmV0dXJuIG1lc3NhZ2VzXG4gIH1cblxuICAvLyBBZGQgU3luYyBUcmFuc3BvcnRcbiAgY29uc3QgdHJhbnNwb3J0OiBUcmFuc3BvcnQgPSB7XG4gICAgZmlsdGVyOiBzeW5jRmlsdGVyKGVuZ2luZSksXG4gICAgc2VuZDogYXN5bmMgKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coQXJyYXkuZnJvbShzZXJpYWxpemVDcmR0TWVzc2FnZXMoJ1tzZW5kIENSRFRdOiAnLCBtZXNzYWdlLCBlbmdpbmUpKSlcbiAgICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5lbWl0KENvbW1zTWVzc2FnZS5DUkRULCBtZXNzYWdlKVxuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlc1RvU2VuZCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRCaW5hcnkoeyBkYXRhOiBtZXNzYWdlcyB9KVxuICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5fX3Byb2Nlc3NNZXNzYWdlcyhyZXNwb25zZS5kYXRhKVxuICAgIH0sXG4gICAgdHlwZTogJ25ldHdvcmsnXG4gIH1cbiAgZW5naW5lLmFkZFRyYW5zcG9ydCh0cmFuc3BvcnQpXG4gIC8vIEVuZCBhZGQgc3luYyB0cmFuc3BvcnRcblxuICAvLyBBZGQgc3RhdGUgaW50aWFsaXplZCBjaGVja2VyXG4gIGVuZ2luZS5hZGRTeXN0ZW0oKCkgPT4gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lLCBteVByb2ZpbGUsIGVudGl0eURlZmluaXRpb25zLnN5bmNFbnRpdHkpKVxuXG4gIC8vIFJlcXVlc3QgaW5pdGlhbCBzdGF0ZVxuICBiaW5hcnlNZXNzYWdlQnVzLmVtaXQoQ29tbXNNZXNzYWdlLlJFUV9DUkRUX1NUQVRFLCBuZXcgVWludDhBcnJheSgpKVxuXG4gIC8vIElmIHdlIGRvbnQgaGF2ZSBhbnkgc3RhdGUgaW5pdGlhbGl6ZWQsIGFuZCByZWNpZXZlIGEgc3RhdGUgbWVzc2FnZS5cbiAgYmluYXJ5TWVzc2FnZUJ1cy5vbihDb21tc01lc3NhZ2UuUkVTX0NSRFRfU1RBVEUsICh2YWx1ZSkgPT4ge1xuICAgIGlmICghc3RhdGVJbml0aWFsaXplZCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgdHJhbnNwb3J0Lm9ubWVzc2FnZSEodmFsdWUpXG4gICAgfVxuICB9KVxuXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLlJFUV9DUkRUX1NUQVRFLCAoKSA9PiB7XG4gICAgLy8gVE9ETzogbWF5YmUgcmVtb3ZlIHRoaXMgbGluZSA/XG4gICAgLy8gSWYgd2Ugc2VuZCBhbiBvdXRkYXRlZCBDUkRULCB0aGUgb3RoZXIgY2xpZW50cyB3aWxsIGlnbm9yZSBpdC5cbiAgICAvLyBCdXQgbWF5YmUsIHR3byBjbGllbnRzIGVudGVycyBhdCB0aGUgc2FtZSB0aW1lIHdpdGggY3VzdG9tIG5ldHdvcmsgZW50aXRpZXNcbiAgICAvLyBhbmQgaWYgdGhlIHN0YXRlIHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRob3NlIGVudGl0aWVzIHdlcmUgbmV2ZXIgc2VudC5cbiAgICBpZiAoc3RhdGVJbml0aWFsaXplZCkge1xuICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5lbWl0KENvbW1zTWVzc2FnZS5SRVNfQ1JEVF9TVEFURSwgZW5naW5lVG9DcmR0KGVuZ2luZSkpXG4gICAgfVxuICB9KVxuXG4gIC8vIFByb2Nlc3MgQ1JEVCBtZXNzYWdlcyBoZXJlXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLkNSRFQsICh2YWx1ZSkgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKEFycmF5LmZyb20oc2VyaWFsaXplQ3JkdE1lc3NhZ2VzKCdbcmVjZWl2ZSBDUkRUXTogJywgdmFsdWUsIGVuZ2luZSkpKVxuICAgIHRyYW5zcG9ydC5vbm1lc3NhZ2UhKHZhbHVlKVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgLi4uZW50aXR5RGVmaW5pdGlvbnMsXG4gICAgbXlQcm9maWxlXG4gIH1cbn1cbiJdfQ==
|
package/network/utils.js
CHANGED
@@ -68,7 +68,7 @@ export function syncTransportIsReady(engine) {
|
|
68
68
|
const EngineInfo = engine.getComponent(_EngineInfo.componentId);
|
69
69
|
if (!INITIAL_CRDT_RENDERER_MESSAGES_SENT) {
|
70
70
|
const engineInfo = EngineInfo.getOrNull(engine.RootEntity);
|
71
|
-
if (engineInfo && engineInfo.tickNumber >
|
71
|
+
if (engineInfo && engineInfo.tickNumber > 1) {
|
72
72
|
INITIAL_CRDT_RENDERER_MESSAGES_SENT = true;
|
73
73
|
}
|
74
74
|
}
|
@@ -114,4 +114,4 @@ export function stateInitializedChecker(engine, _profile, _syncEntity) {
|
|
114
114
|
}
|
115
115
|
void enterScene();
|
116
116
|
}
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxJQUFJLFdBQVcsRUFJekIsT0FBTyxFQUdSLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBTW5GLHVFQUF1RTtBQUN2RSxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUN0RCxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRTtJQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0NBQ3ZCLENBQUMsQ0FBQTtBQUVKLDREQUE0RDtBQUM1RCxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7QUFFbkMsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxJQUFJLGlCQUF5QixDQUFBO0FBRXBDLE1BQU0sVUFBVSxjQUFjO0lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtBQUN6QixDQUFDO0FBRUQsOEdBQThHO0FBQzlHLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsSUFBSSxtQ0FBbUMsR0FBRyxLQUFLLENBQUE7QUFFdEQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQW1CLEVBQ25CLFdBQXdFO0lBRXhFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtZQUMxQixNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7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RUosd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFO1lBQ3BFLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLE9BQU07U0FDUDtRQUVELHlFQUF5RTtRQUN6RSw4Q0FBOEM7UUFFOUMsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSw0REFBNEQ7UUFDNUQsd0VBQXdFO1FBQ3hFLGlEQUFpRDtRQUNqRCxJQUFJO0lBQ04sQ0FBQztJQUNELEtBQUssVUFBVSxFQUFFLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVuZ2luZUluZm8gYXMgX0VuZ2luZUluZm8sXG4gIEVudGl0eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgU2NoZW1hcyxcbiAgTGFzdFdyaXRlV2luRWxlbWVudFNldENvbXBvbmVudERlZmluaXRpb24sXG4gIFBCRW5naW5lSW5mb1xufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGNvbXBvbmVudE51bWJlckZyb21OYW1lIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5cbmltcG9ydCB0eXBlIHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG5pbXBvcnQgeyBTeW5jRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcydcbmltcG9ydCB7IElQcm9maWxlIH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuXG4vLyBDb21wb25lbnQgdG8gdHJhY2sgYWxsIHRoZSBwbGF5ZXJzIGFuZCB3aGVuIHRoZXkgZW50ZXIgdG8gdGhlIHNjZW5lLlxuLy8gS25vdyB3aG8gaXMgaW4gY2hhcmdlIG9mIHNlbmRpbmcgdGhlIGluaXRpYWwgc3RhdGUgKG9sZGVzdCBvbmUpXG5leHBvcnQgY29uc3QgZGVmaW5lUGxheWVyc0luU2NlbmUgPSAoZW5naW5lOiBJRW5naW5lKSA9PlxuICBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KCdwbGF5ZXJzLXNjZW5lJywge1xuICAgIHRpbWVzdGFtcDogU2NoZW1hcy5OdW1iZXIsXG4gICAgdXNlcklkOiBTY2hlbWFzLlN0cmluZ1xuICB9KVxuXG4vLyBBbHJlYWR5IGluaXRpYWxpemVkIG15IHN0YXRlLiBJZ25vcmUgbmV3IHN0YXRlcyBtZXNzYWdlcy5cbmV4cG9ydCBsZXQgc3RhdGVJbml0aWFsaXplZCA9IGZhbHNlXG5cbi8vIE15IHBsYXllciBlbnRpdHkgdG8gY2hlY2sgaWYgSSdtIHRoZSBvbGRlc3QgcGxheWVyIGluIHRoZSBzY2VuZFxuZXhwb3J0IGxldCBwbGF5ZXJTY2VuZUVudGl0eTogRW50aXR5XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbml0aWFsaXplZCgpIHtcbiAgc3RhdGVJbml0aWFsaXplZCA9IHRydWVcbn1cblxuLy8gRmxhZyB0byBhdm9pZCBzZW5kaW5nIG92ZXIgdGhlIHdpcmUgYWxsIHRoZSBpbml0aWFsIG1lc3NhZ2VzIHRoYXQgdGhlIGVuZ2luZSBhZGQncyB0byB0aGUgcmVuZGVyZXJUcmFuc3BvcnRcbi8vIElOSVRJQUxfQ1JEVF9NRVNTQUdFUyB0aGF0IGFyZSBiZWluZyBwcm9jZXNzZWQgb24gdGhlIG9uU3RhcnQgbG9vcCwgYmVmb3JlIHRoZSBvblVwZGF0ZS5cbmV4cG9ydCBsZXQgSU5JVElBTF9DUkRUX1JFTkRFUkVSX01FU1NBR0VTX1NFTlQgPSBmYWxzZVxuXG4vLyBSZXRyaWV2ZSB1c2VySWQgdG8gc3RhcnQgc2VuZGluZyB0aGlzIGluZm8gYXMgdGhlIG5ldHdvcmtJZFxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoUHJvZmlsZShcbiAgbXlQcm9maWxlOiBJUHJvZmlsZSxcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgdm9pZCBnZXRVc2VyRGF0YSh7fSkudGhlbigoeyBkYXRhIH0pID0+IHtcbiAgICBpZiAoZGF0YT8udXNlcklkKSB7XG4gICAgICBjb25zdCB1c2VySWQgPSBkYXRhLnVzZXJJZFxuICAgICAgY29uc3QgbmV0d29ya0lkID0gY29tcG9uZW50TnVtYmVyRnJvbU5hbWUoZGF0YS51c2VySWQpXG4gICAgICBteVByb2ZpbGUubmV0d29ya0lkID0gbmV0d29ya0lkXG4gICAgICBteVByb2ZpbGUudXNlcklkID0gdXNlcklkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmV0Y2ggcHJvZmlsZSBkYXRhYClcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogQWRkJ3MgdGhlIHVzZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBoZSBqb2luZWQgdGhlIHNjZW5lLlxuICogSXQncyB1c2VkIHRvIGNoZWNrIHdobyBpcyB0aGUgb2xkZXN0IG9uZSwgdG8gc3luYyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSwgc3luY0VudGl0eTogU3luY0VudGl0eSkge1xuICBpZiAoIXByb2ZpbGU/LnVzZXJJZCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBQbGF5ZXJzSW5TY2VuZSA9IGRlZmluZVBsYXllcnNJblNjZW5lKGVuZ2luZSlcbiAgY29uc3QgZW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gIFBsYXllcnNJblNjZW5lLmNyZWF0ZShlbnRpdHksIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpLCB1c2VySWQ6IHByb2ZpbGUudXNlcklkIH0pXG4gIHN5bmNFbnRpdHkoZW50aXR5LCBbUGxheWVyc0luU2NlbmUuY29tcG9uZW50SWRdKVxuICBwbGF5ZXJTY2VuZUVudGl0eSA9IGVudGl0eVxuICByZXR1cm4gcGxheWVyU2NlbmVFbnRpdHlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBJJ20gdGhlIG9sZGVyIHVzZXIgdG8gc2VuZCB0aGUgaW5pdGlhbCBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2xkZXN0VXNlcihlbmdpbmU6IElFbmdpbmUsIHByb2ZpbGU6IElQcm9maWxlLCBzeW5jRW50aXR5OiBTeW5jRW50aXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBXaGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgc2NlbmUgYnV0IGl0J3Mgc3RpbGwgY29ubmVjdGVkLlxuICBpZiAoIVBsYXllcnNJblNjZW5lLmhhcyhwbGF5ZXJTY2VuZUVudGl0eSkpIHtcbiAgICBjcmVhdGVQbGF5ZXJUaW1lc3RhbXBEYXRhKGVuZ2luZSwgcHJvZmlsZSwgc3luY0VudGl0eSlcbiAgICByZXR1cm4gb2xkZXN0VXNlcihlbmdpbmUsIHByb2ZpbGUsIHN5bmNFbnRpdHkpXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXAgfSA9IFBsYXllcnNJblNjZW5lLmdldChwbGF5ZXJTY2VuZUVudGl0eSlcbiAgZm9yIChjb25zdCBbXywgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIGlmIChwbGF5ZXIudGltZXN0YW1wIDwgdGltZXN0YW1wKSByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIElnbm9yZSBDUkRUJ3MgaW5pdGlhbCBtZXNzYWdlcyBmcm9tIHRoZSByZW5kZXJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmNUcmFuc3BvcnRJc1JlYWR5KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChcbiAgICBfRW5naW5lSW5mby5jb21wb25lbnRJZFxuICApIGFzIExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCRW5naW5lSW5mbz5cbiAgaWYgKCFJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCkge1xuICAgIGNvbnN0IGVuZ2luZUluZm8gPSBFbmdpbmVJbmZvLmdldE9yTnVsbChlbmdpbmUuUm9vdEVudGl0eSlcbiAgICBpZiAoZW5naW5lSW5mbyAmJiBlbmdpbmVJbmZvLnRpY2tOdW1iZXIgPiAyKSB7XG4gICAgICBJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIElOSVRJQUxfQ1JEVF9SRU5ERVJFUl9NRVNTQUdFU19TRU5UXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAqIEFkZCB0aGUgcGxheWVyU2NlbmVEYXRhIGNvbXBvbmVudCBhbmQgc3luY3Jvbml6ZSBpdCB0aWxsIHdlIHJlY2VpdmUgdGhlIHN0YXRlLlxuICogVGhpcyBmbiBzaG91bGQgYmUgYWRkZWQgYXMgYSBzeXN0ZW0gc28gaXQgcnVucyBvbiBldmVyeSB0aWNrXG4gKi9cbi8vIFRPRE86IEhhZCB0byBjb21tZW50IGFsbCB0aGUgbG9naWMgYmVjYXVzZSBnZXRDb25uZWN0ZWRQbGF5ZXJzIHdhcyBub3Qgd29ya2luZyBhcyBleHBlY3RlZFxuLy8gQSBsb3Qgb2YgcmFpc2UgY29uZGl0aW9ucy4gRm9yIG5vdyB3ZSB3aWxsIGdvIHdpdGggdGhlIGFwcHJvYWNoIHRoYXQgZXZlcnkgY2xpZW50IHRoYXQgaXQncyBpbml0aWFsaXplZCB3aWxsIHNlbmQgaGlzIGNyZHQgc3RhdGUuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lOiBJRW5naW5lLCBfcHJvZmlsZTogSVByb2ZpbGUsIF9zeW5jRW50aXR5OiBTeW5jRW50aXR5KSB7XG4gIC8vIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChfRW5naW5lSW5mby5jb21wb25lbnRJZCkgYXMgdHlwZW9mIF9FbmdpbmVJbmZvXG4gIC8vIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuICBhc3luYyBmdW5jdGlvbiBlbnRlclNjZW5lKCkge1xuICAgIC8vIGlmICghcGxheWVyU2NlbmVFbnRpdHkpIHtcbiAgICAvLyAgIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lLCBwcm9maWxlLCBzeW5jRW50aXR5KVxuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIEtlZXBzIFBsYXllcnNJblNjZW5lIHVwLXRvLWRhdGUgd2l0aCB0aGUgY3VycmVudCBwbGF5ZXJzLlxuICAgICAqL1xuICAgIC8vIGNvbnN0IGNvbm5lY3RlZFBsYXllcnMgPSBhd2FpdCBnZXRDb25uZWN0ZWRQbGF5ZXJzKHt9KVxuICAgIC8vIGZvciAoY29uc3QgW2VudGl0eSwgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIC8vICAgaWYgKCFjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMuZmluZCgoJCkgPT4gJC51c2VySWQgPT09IHBsYXllci51c2VySWQpKSB7XG4gICAgLy8gICAgIFBsYXllcnNJblNjZW5lLmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIFdhaXQgZm9yIGNvbW1zIHRvIGJlIHJlYWR5ID8/IH4zMDAwbXNcbiAgICBpZiAoKEVuZ2luZUluZm8uZ2V0T3JOdWxsKGVuZ2luZS5Sb290RW50aXR5KT8udGlja051bWJlciA/PyAwKSA+IDEwMCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGRhdGEgZnJvbSBwbGF5ZXJzLCBkb250IHNlbmQgdGhlIGhlYXJ0YmVhdCBtZXNzYWdlc1xuICAgIC8vIGlmIChjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGlmICghc3RhdGVJbml0aWFsaXplZCAmJiBwbGF5ZXJTY2VuZUVudGl0eSkge1xuICAgIC8vICAgLy8gU2VuZCB0aGlzIGRhdGEgdG8gYWxsIHRoZSBwbGF5ZXJzIGNvbm5lY3RlZCAobmV3IGFuZCBvbGQpXG4gICAgLy8gICAvLyBTbyBldmVyeW9uZSBjYW4gZGVjaWRlIGlmIGl0J3MgdGhlIG9sZGVzdCBvbmUgb3Igbm8uXG4gICAgLy8gICAvLyBJdCdzIGZvciB0aGUgY2FzZSB0aGF0IG11bHRpcGxlIHVzZXJzIGVudGVycyB+IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgLy8gICBQbGF5ZXJzSW5TY2VuZS5nZXRNdXRhYmxlKHBsYXllclNjZW5lRW50aXR5KVxuICAgIC8vIH1cbiAgfVxuICB2b2lkIGVudGVyU2NlbmUoKVxufVxuIl19
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxJQUFJLFdBQVcsRUFJekIsT0FBTyxFQUdSLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBTW5GLHVFQUF1RTtBQUN2RSxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUN0RCxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRTtJQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0NBQ3ZCLENBQUMsQ0FBQTtBQUVKLDREQUE0RDtBQUM1RCxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7QUFFbkMsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxJQUFJLGlCQUF5QixDQUFBO0FBRXBDLE1BQU0sVUFBVSxjQUFjO0lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtBQUN6QixDQUFDO0FBRUQsOEdBQThHO0FBQzlHLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsSUFBSSxtQ0FBbUMsR0FBRyxLQUFLLENBQUE7QUFFdEQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQW1CLEVBQ25CLFdBQXdFO0lBRXhFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtZQUMxQixNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7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RUosd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFO1lBQ3BFLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLE9BQU07U0FDUDtRQUVELHlFQUF5RTtRQUN6RSw4Q0FBOEM7UUFFOUMsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSw0REFBNEQ7UUFDNUQsd0VBQXdFO1FBQ3hFLGlEQUFpRDtRQUNqRCxJQUFJO0lBQ04sQ0FBQztJQUNELEtBQUssVUFBVSxFQUFFLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVuZ2luZUluZm8gYXMgX0VuZ2luZUluZm8sXG4gIEVudGl0eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgU2NoZW1hcyxcbiAgTGFzdFdyaXRlV2luRWxlbWVudFNldENvbXBvbmVudERlZmluaXRpb24sXG4gIFBCRW5naW5lSW5mb1xufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGNvbXBvbmVudE51bWJlckZyb21OYW1lIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5cbmltcG9ydCB0eXBlIHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG5pbXBvcnQgeyBTeW5jRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcydcbmltcG9ydCB7IElQcm9maWxlIH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuXG4vLyBDb21wb25lbnQgdG8gdHJhY2sgYWxsIHRoZSBwbGF5ZXJzIGFuZCB3aGVuIHRoZXkgZW50ZXIgdG8gdGhlIHNjZW5lLlxuLy8gS25vdyB3aG8gaXMgaW4gY2hhcmdlIG9mIHNlbmRpbmcgdGhlIGluaXRpYWwgc3RhdGUgKG9sZGVzdCBvbmUpXG5leHBvcnQgY29uc3QgZGVmaW5lUGxheWVyc0luU2NlbmUgPSAoZW5naW5lOiBJRW5naW5lKSA9PlxuICBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KCdwbGF5ZXJzLXNjZW5lJywge1xuICAgIHRpbWVzdGFtcDogU2NoZW1hcy5OdW1iZXIsXG4gICAgdXNlcklkOiBTY2hlbWFzLlN0cmluZ1xuICB9KVxuXG4vLyBBbHJlYWR5IGluaXRpYWxpemVkIG15IHN0YXRlLiBJZ25vcmUgbmV3IHN0YXRlcyBtZXNzYWdlcy5cbmV4cG9ydCBsZXQgc3RhdGVJbml0aWFsaXplZCA9IGZhbHNlXG5cbi8vIE15IHBsYXllciBlbnRpdHkgdG8gY2hlY2sgaWYgSSdtIHRoZSBvbGRlc3QgcGxheWVyIGluIHRoZSBzY2VuZFxuZXhwb3J0IGxldCBwbGF5ZXJTY2VuZUVudGl0eTogRW50aXR5XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbml0aWFsaXplZCgpIHtcbiAgc3RhdGVJbml0aWFsaXplZCA9IHRydWVcbn1cblxuLy8gRmxhZyB0byBhdm9pZCBzZW5kaW5nIG92ZXIgdGhlIHdpcmUgYWxsIHRoZSBpbml0aWFsIG1lc3NhZ2VzIHRoYXQgdGhlIGVuZ2luZSBhZGQncyB0byB0aGUgcmVuZGVyZXJUcmFuc3BvcnRcbi8vIElOSVRJQUxfQ1JEVF9NRVNTQUdFUyB0aGF0IGFyZSBiZWluZyBwcm9jZXNzZWQgb24gdGhlIG9uU3RhcnQgbG9vcCwgYmVmb3JlIHRoZSBvblVwZGF0ZS5cbmV4cG9ydCBsZXQgSU5JVElBTF9DUkRUX1JFTkRFUkVSX01FU1NBR0VTX1NFTlQgPSBmYWxzZVxuXG4vLyBSZXRyaWV2ZSB1c2VySWQgdG8gc3RhcnQgc2VuZGluZyB0aGlzIGluZm8gYXMgdGhlIG5ldHdvcmtJZFxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoUHJvZmlsZShcbiAgbXlQcm9maWxlOiBJUHJvZmlsZSxcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgdm9pZCBnZXRVc2VyRGF0YSh7fSkudGhlbigoeyBkYXRhIH0pID0+IHtcbiAgICBpZiAoZGF0YT8udXNlcklkKSB7XG4gICAgICBjb25zdCB1c2VySWQgPSBkYXRhLnVzZXJJZFxuICAgICAgY29uc3QgbmV0d29ya0lkID0gY29tcG9uZW50TnVtYmVyRnJvbU5hbWUoZGF0YS51c2VySWQpXG4gICAgICBteVByb2ZpbGUubmV0d29ya0lkID0gbmV0d29ya0lkXG4gICAgICBteVByb2ZpbGUudXNlcklkID0gdXNlcklkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmV0Y2ggcHJvZmlsZSBkYXRhYClcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogQWRkJ3MgdGhlIHVzZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBoZSBqb2luZWQgdGhlIHNjZW5lLlxuICogSXQncyB1c2VkIHRvIGNoZWNrIHdobyBpcyB0aGUgb2xkZXN0IG9uZSwgdG8gc3luYyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSwgc3luY0VudGl0eTogU3luY0VudGl0eSkge1xuICBpZiAoIXByb2ZpbGU/LnVzZXJJZCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBQbGF5ZXJzSW5TY2VuZSA9IGRlZmluZVBsYXllcnNJblNjZW5lKGVuZ2luZSlcbiAgY29uc3QgZW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gIFBsYXllcnNJblNjZW5lLmNyZWF0ZShlbnRpdHksIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpLCB1c2VySWQ6IHByb2ZpbGUudXNlcklkIH0pXG4gIHN5bmNFbnRpdHkoZW50aXR5LCBbUGxheWVyc0luU2NlbmUuY29tcG9uZW50SWRdKVxuICBwbGF5ZXJTY2VuZUVudGl0eSA9IGVudGl0eVxuICByZXR1cm4gcGxheWVyU2NlbmVFbnRpdHlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBJJ20gdGhlIG9sZGVyIHVzZXIgdG8gc2VuZCB0aGUgaW5pdGlhbCBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2xkZXN0VXNlcihlbmdpbmU6IElFbmdpbmUsIHByb2ZpbGU6IElQcm9maWxlLCBzeW5jRW50aXR5OiBTeW5jRW50aXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBXaGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgc2NlbmUgYnV0IGl0J3Mgc3RpbGwgY29ubmVjdGVkLlxuICBpZiAoIVBsYXllcnNJblNjZW5lLmhhcyhwbGF5ZXJTY2VuZUVudGl0eSkpIHtcbiAgICBjcmVhdGVQbGF5ZXJUaW1lc3RhbXBEYXRhKGVuZ2luZSwgcHJvZmlsZSwgc3luY0VudGl0eSlcbiAgICByZXR1cm4gb2xkZXN0VXNlcihlbmdpbmUsIHByb2ZpbGUsIHN5bmNFbnRpdHkpXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXAgfSA9IFBsYXllcnNJblNjZW5lLmdldChwbGF5ZXJTY2VuZUVudGl0eSlcbiAgZm9yIChjb25zdCBbXywgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIGlmIChwbGF5ZXIudGltZXN0YW1wIDwgdGltZXN0YW1wKSByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIElnbm9yZSBDUkRUJ3MgaW5pdGlhbCBtZXNzYWdlcyBmcm9tIHRoZSByZW5kZXJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmNUcmFuc3BvcnRJc1JlYWR5KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChcbiAgICBfRW5naW5lSW5mby5jb21wb25lbnRJZFxuICApIGFzIExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCRW5naW5lSW5mbz5cbiAgaWYgKCFJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCkge1xuICAgIGNvbnN0IGVuZ2luZUluZm8gPSBFbmdpbmVJbmZvLmdldE9yTnVsbChlbmdpbmUuUm9vdEVudGl0eSlcbiAgICBpZiAoZW5naW5lSW5mbyAmJiBlbmdpbmVJbmZvLnRpY2tOdW1iZXIgPiAxKSB7XG4gICAgICBJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIElOSVRJQUxfQ1JEVF9SRU5ERVJFUl9NRVNTQUdFU19TRU5UXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAqIEFkZCB0aGUgcGxheWVyU2NlbmVEYXRhIGNvbXBvbmVudCBhbmQgc3luY3Jvbml6ZSBpdCB0aWxsIHdlIHJlY2VpdmUgdGhlIHN0YXRlLlxuICogVGhpcyBmbiBzaG91bGQgYmUgYWRkZWQgYXMgYSBzeXN0ZW0gc28gaXQgcnVucyBvbiBldmVyeSB0aWNrXG4gKi9cbi8vIFRPRE86IEhhZCB0byBjb21tZW50IGFsbCB0aGUgbG9naWMgYmVjYXVzZSBnZXRDb25uZWN0ZWRQbGF5ZXJzIHdhcyBub3Qgd29ya2luZyBhcyBleHBlY3RlZFxuLy8gQSBsb3Qgb2YgcmFpc2UgY29uZGl0aW9ucy4gRm9yIG5vdyB3ZSB3aWxsIGdvIHdpdGggdGhlIGFwcHJvYWNoIHRoYXQgZXZlcnkgY2xpZW50IHRoYXQgaXQncyBpbml0aWFsaXplZCB3aWxsIHNlbmQgaGlzIGNyZHQgc3RhdGUuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lOiBJRW5naW5lLCBfcHJvZmlsZTogSVByb2ZpbGUsIF9zeW5jRW50aXR5OiBTeW5jRW50aXR5KSB7XG4gIC8vIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChfRW5naW5lSW5mby5jb21wb25lbnRJZCkgYXMgdHlwZW9mIF9FbmdpbmVJbmZvXG4gIC8vIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuICBhc3luYyBmdW5jdGlvbiBlbnRlclNjZW5lKCkge1xuICAgIC8vIGlmICghcGxheWVyU2NlbmVFbnRpdHkpIHtcbiAgICAvLyAgIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lLCBwcm9maWxlLCBzeW5jRW50aXR5KVxuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIEtlZXBzIFBsYXllcnNJblNjZW5lIHVwLXRvLWRhdGUgd2l0aCB0aGUgY3VycmVudCBwbGF5ZXJzLlxuICAgICAqL1xuICAgIC8vIGNvbnN0IGNvbm5lY3RlZFBsYXllcnMgPSBhd2FpdCBnZXRDb25uZWN0ZWRQbGF5ZXJzKHt9KVxuICAgIC8vIGZvciAoY29uc3QgW2VudGl0eSwgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIC8vICAgaWYgKCFjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMuZmluZCgoJCkgPT4gJC51c2VySWQgPT09IHBsYXllci51c2VySWQpKSB7XG4gICAgLy8gICAgIFBsYXllcnNJblNjZW5lLmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIFdhaXQgZm9yIGNvbW1zIHRvIGJlIHJlYWR5ID8/IH4zMDAwbXNcbiAgICBpZiAoKEVuZ2luZUluZm8uZ2V0T3JOdWxsKGVuZ2luZS5Sb290RW50aXR5KT8udGlja051bWJlciA/PyAwKSA+IDEwMCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGRhdGEgZnJvbSBwbGF5ZXJzLCBkb250IHNlbmQgdGhlIGhlYXJ0YmVhdCBtZXNzYWdlc1xuICAgIC8vIGlmIChjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGlmICghc3RhdGVJbml0aWFsaXplZCAmJiBwbGF5ZXJTY2VuZUVudGl0eSkge1xuICAgIC8vICAgLy8gU2VuZCB0aGlzIGRhdGEgdG8gYWxsIHRoZSBwbGF5ZXJzIGNvbm5lY3RlZCAobmV3IGFuZCBvbGQpXG4gICAgLy8gICAvLyBTbyBldmVyeW9uZSBjYW4gZGVjaWRlIGlmIGl0J3MgdGhlIG9sZGVzdCBvbmUgb3Igbm8uXG4gICAgLy8gICAvLyBJdCdzIGZvciB0aGUgY2FzZSB0aGF0IG11bHRpcGxlIHVzZXJzIGVudGVycyB+IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgLy8gICBQbGF5ZXJzSW5TY2VuZS5nZXRNdXRhYmxlKHBsYXllclNjZW5lRW50aXR5KVxuICAgIC8vIH1cbiAgfVxuICB2b2lkIGVudGVyU2NlbmUoKVxufVxuIl19
|
package/package.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dcl/sdk",
|
3
3
|
"description": "",
|
4
|
-
"version": "7.5.7-
|
4
|
+
"version": "7.5.7-10312762318.commit-2f6b9a0",
|
5
5
|
"author": "Decentraland",
|
6
6
|
"dependencies": {
|
7
|
-
"@dcl/ecs": "7.5.7-
|
7
|
+
"@dcl/ecs": "7.5.7-10312762318.commit-2f6b9a0",
|
8
8
|
"@dcl/ecs-math": "2.0.2",
|
9
9
|
"@dcl/explorer": "1.0.164427-20240726154521.commit-bf9648c",
|
10
|
-
"@dcl/js-runtime": "7.5.7-
|
11
|
-
"@dcl/react-ecs": "7.5.7-
|
12
|
-
"@dcl/sdk-commands": "7.5.7-
|
10
|
+
"@dcl/js-runtime": "7.5.7-10312762318.commit-2f6b9a0",
|
11
|
+
"@dcl/react-ecs": "7.5.7-10312762318.commit-2f6b9a0",
|
12
|
+
"@dcl/sdk-commands": "7.5.7-10312762318.commit-2f6b9a0",
|
13
13
|
"text-encoding": "0.7.0"
|
14
14
|
},
|
15
15
|
"keywords": [],
|
@@ -35,5 +35,5 @@
|
|
35
35
|
},
|
36
36
|
"types": "./index.d.ts",
|
37
37
|
"typings": "./index.d.ts",
|
38
|
-
"commit": "
|
38
|
+
"commit": "2f6b9a042ab7db93be07ea4cfdb9fb86be1d0cb3"
|
39
39
|
}
|
@@ -15,6 +15,7 @@ import {
|
|
15
15
|
} from './utils'
|
16
16
|
import { entityUtils } from './entities'
|
17
17
|
import { GetUserDataRequest, GetUserDataResponse } from '~system/UserIdentity'
|
18
|
+
// import { serializeCrdtMessages } from '../internal/transports/logger'
|
18
19
|
|
19
20
|
export type IProfile = { networkId: number; userId: string }
|
20
21
|
// user that we asked for the inital crdt state
|
@@ -44,7 +45,7 @@ export function addSyncTransport(
|
|
44
45
|
const transport: Transport = {
|
45
46
|
filter: syncFilter(engine),
|
46
47
|
send: async (message: Uint8Array) => {
|
47
|
-
if (
|
48
|
+
if (message.byteLength) {
|
48
49
|
// console.log(Array.from(serializeCrdtMessages('[send CRDT]: ', message, engine)))
|
49
50
|
binaryMessageBus.emit(CommsMessage.CRDT, message)
|
50
51
|
}
|
@@ -65,18 +66,17 @@ export function addSyncTransport(
|
|
65
66
|
|
66
67
|
// If we dont have any state initialized, and recieve a state message.
|
67
68
|
binaryMessageBus.on(CommsMessage.RES_CRDT_STATE, (value) => {
|
68
|
-
// console.log(Array.from(serializeCrdtMessages('[binaryMessageBus]: ', value, engine)))
|
69
69
|
if (!stateInitialized) {
|
70
70
|
setInitialized()
|
71
71
|
transport.onmessage!(value)
|
72
72
|
}
|
73
73
|
})
|
74
74
|
|
75
|
-
// If we are the oldest user and we recieve a req of a state we send it.
|
76
75
|
binaryMessageBus.on(CommsMessage.REQ_CRDT_STATE, () => {
|
77
|
-
// TODO:
|
78
|
-
//
|
79
|
-
//
|
76
|
+
// TODO: maybe remove this line ?
|
77
|
+
// If we send an outdated CRDT, the other clients will ignore it.
|
78
|
+
// But maybe, two clients enters at the same time with custom network entities
|
79
|
+
// and if the state was not initialized, those entities were never sent.
|
80
80
|
if (stateInitialized) {
|
81
81
|
binaryMessageBus.emit(CommsMessage.RES_CRDT_STATE, engineToCrdt(engine))
|
82
82
|
}
|
@@ -84,8 +84,7 @@ export function addSyncTransport(
|
|
84
84
|
|
85
85
|
// Process CRDT messages here
|
86
86
|
binaryMessageBus.on(CommsMessage.CRDT, (value) => {
|
87
|
-
// console.log(Array.from(serializeCrdtMessages('[CRDT
|
88
|
-
|
87
|
+
// console.log(Array.from(serializeCrdtMessages('[receive CRDT]: ', value, engine)))
|
89
88
|
transport.onmessage!(value)
|
90
89
|
})
|
91
90
|
|
package/src/network/utils.ts
CHANGED
@@ -92,7 +92,7 @@ export function syncTransportIsReady(engine: IEngine) {
|
|
92
92
|
) as LastWriteWinElementSetComponentDefinition<PBEngineInfo>
|
93
93
|
if (!INITIAL_CRDT_RENDERER_MESSAGES_SENT) {
|
94
94
|
const engineInfo = EngineInfo.getOrNull(engine.RootEntity)
|
95
|
-
if (engineInfo && engineInfo.tickNumber >
|
95
|
+
if (engineInfo && engineInfo.tickNumber > 1) {
|
96
96
|
INITIAL_CRDT_RENDERER_MESSAGES_SENT = true
|
97
97
|
}
|
98
98
|
}
|