@dcl/sdk 7.3.31-7169243942.commit-5f044c6 → 7.3.32-7170667436.commit-11a2181

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 (46) hide show
  1. package/internal/transports/logger.js +7 -4
  2. package/internal/transports/rendererTransport.js +3 -2
  3. package/message-bus.js +8 -6
  4. package/network/binary-message-bus.d.ts +18 -0
  5. package/network/binary-message-bus.js +68 -0
  6. package/network/entities.d.ts +11 -0
  7. package/network/entities.js +77 -0
  8. package/network/filter.d.ts +2 -0
  9. package/network/filter.js +37 -0
  10. package/network/index.d.ts +2 -0
  11. package/network/index.js +7 -0
  12. package/network/message-bus-sync.d.ts +17 -0
  13. package/network/message-bus-sync.js +52 -0
  14. package/network/state.js +39 -0
  15. package/network/utils.d.ts +18 -0
  16. package/network/utils.js +69 -0
  17. package/package.json +6 -6
  18. package/src/internal/transports/logger.ts +9 -4
  19. package/src/internal/transports/rendererTransport.ts +2 -1
  20. package/src/message-bus.ts +7 -9
  21. package/src/network/README.md +122 -0
  22. package/src/network/binary-message-bus.ts +72 -0
  23. package/src/network/entities.ts +132 -0
  24. package/src/network/filter.ts +64 -0
  25. package/src/network/index.ts +13 -0
  26. package/src/network/message-bus-sync.ts +97 -0
  27. package/src/network/state.ts +65 -0
  28. package/src/network/utils.ts +145 -0
  29. package/network-transport/client.d.ts +0 -5
  30. package/network-transport/client.js +0 -68
  31. package/network-transport/index.d.ts +0 -10
  32. package/network-transport/index.js +0 -29
  33. package/network-transport/server.d.ts +0 -2
  34. package/network-transport/server.js +0 -62
  35. package/network-transport/state.js +0 -11
  36. package/network-transport/types.d.ts +0 -36
  37. package/network-transport/types.js +0 -7
  38. package/network-transport/utils.d.ts +0 -8
  39. package/network-transport/utils.js +0 -46
  40. package/src/network-transport/client.ts +0 -77
  41. package/src/network-transport/index.ts +0 -45
  42. package/src/network-transport/server.ts +0 -66
  43. package/src/network-transport/state.ts +0 -13
  44. package/src/network-transport/types.ts +0 -41
  45. package/src/network-transport/utils.ts +0 -67
  46. /package/{network-transport → network}/state.d.ts +0 -0
@@ -5,12 +5,14 @@ export function* serializeCrdtMessages(prefix, data, engine) {
5
5
  const buffer = new ReadWriteByteBuffer(data);
6
6
  let message;
7
7
  while ((message = readMessage(buffer))) {
8
- const ent = `0x${message.entityId.toString(16)}`;
8
+ const ent = message.entityId;
9
9
  const preface = `${prefix}: ${CrdtMessageType[message.type]} e=${ent}`;
10
- if (message.type === CrdtMessageType.DELETE_ENTITY) {
10
+ if (message.type === CrdtMessageType.DELETE_ENTITY || message.type === CrdtMessageType.DELETE_ENTITY_NETWORK) {
11
11
  yield `${preface}`;
12
12
  }
13
13
  if (message.type === CrdtMessageType.PUT_COMPONENT ||
14
+ message.type === CrdtMessageType.PUT_COMPONENT_NETWORK ||
15
+ message.type === CrdtMessageType.DELETE_COMPONENT_NETWORK ||
14
16
  message.type === CrdtMessageType.DELETE_COMPONENT ||
15
17
  message.type === CrdtMessageType.APPEND_VALUE) {
16
18
  const { componentId, timestamp } = message;
@@ -23,7 +25,8 @@ export function* serializeCrdtMessages(prefix, data, engine) {
23
25
  yield `${preface} c=${componentId} t=${timestamp} data=?`;
24
26
  }
25
27
  }
26
- else if (message.type === CrdtMessageType.DELETE_ENTITY) {
28
+ else if (message.type === CrdtMessageType.DELETE_ENTITY ||
29
+ message.type === CrdtMessageType.DELETE_ENTITY_NETWORK) {
27
30
  yield preface;
28
31
  }
29
32
  else {
@@ -31,4 +34,4 @@ export function* serializeCrdtMessages(prefix, data, engine) {
31
34
  }
32
35
  }
33
36
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVybmFsL3RyYW5zcG9ydHMvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUV0RSxNQUFNLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxJQUFnQixFQUFFLE1BQWU7SUFDdEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU1QyxJQUFJLE9BQTJCLENBQUE7SUFFL0IsT0FBTyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUE7UUFDaEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLEtBQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUN0RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUNsRCxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUE7U0FDbkI7UUFFRCxJQUNFLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWE7WUFDOUMsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsZ0JBQWdCO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLFlBQVksRUFDN0M7WUFDQSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQTtZQUMxQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFFekQsSUFBSTtnQkFDRixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUMxQyxNQUFNLEdBQUcsT0FBTyxNQUFNLENBQUMsQ0FBQyxhQUFhLE1BQU0sU0FBUyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQ3pFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDdEUsRUFBRSxDQUFBO2FBQ0o7WUFBQyxNQUFNO2dCQUNOLE1BQU0sR0FBRyxPQUFPLE1BQU0sV0FBVyxNQUFNLFNBQVMsU0FBUyxDQUFBO2FBQzFEO1NBQ0Y7YUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUN6RCxNQUFNLE9BQU8sQ0FBQTtTQUNkO2FBQU07WUFDTCxNQUFNLEdBQUcsT0FBTywwQkFBMEIsQ0FBQTtTQUMzQztLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUsIENyZHRNZXNzYWdlLCBDcmR0TWVzc2FnZVR5cGUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IFJlYWRXcml0ZUJ5dGVCdWZmZXIgfSBmcm9tICdAZGNsL2Vjcy9kaXN0L3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IHJlYWRNZXNzYWdlIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9zZXJpYWxpemF0aW9uL2NyZHQvbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uKiBzZXJpYWxpemVDcmR0TWVzc2FnZXMocHJlZml4OiBzdHJpbmcsIGRhdGE6IFVpbnQ4QXJyYXksIGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBidWZmZXIgPSBuZXcgUmVhZFdyaXRlQnl0ZUJ1ZmZlcihkYXRhKVxuXG4gIGxldCBtZXNzYWdlOiBDcmR0TWVzc2FnZSB8IG51bGxcblxuICB3aGlsZSAoKG1lc3NhZ2UgPSByZWFkTWVzc2FnZShidWZmZXIpKSkge1xuICAgIGNvbnN0IGVudCA9IGAweCR7bWVzc2FnZS5lbnRpdHlJZC50b1N0cmluZygxNil9YFxuICAgIGNvbnN0IHByZWZhY2UgPSBgJHtwcmVmaXh9OiAke0NyZHRNZXNzYWdlVHlwZVttZXNzYWdlLnR5cGVdfSBlPSR7ZW50fWBcbiAgICBpZiAobWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0VOVElUWSkge1xuICAgICAgeWllbGQgYCR7cHJlZmFjZX1gXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuUFVUX0NPTVBPTkVOVCB8fFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0NPTVBPTkVOVCB8fFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuQVBQRU5EX1ZBTFVFXG4gICAgKSB7XG4gICAgICBjb25zdCB7IGNvbXBvbmVudElkLCB0aW1lc3RhbXAgfSA9IG1lc3NhZ2VcbiAgICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gbWVzc2FnZSA/IG1lc3NhZ2UuZGF0YSA6IHVuZGVmaW5lZFxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjID0gZW5naW5lLmdldENvbXBvbmVudChjb21wb25lbnRJZClcbiAgICAgICAgeWllbGQgYCR7cHJlZmFjZX0gYz0ke2MuY29tcG9uZW50TmFtZX0gdD0ke3RpbWVzdGFtcH0gZGF0YT0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIChkYXRhICYmIGMuc2NoZW1hLmRlc2VyaWFsaXplKG5ldyBSZWFkV3JpdGVCeXRlQnVmZmVyKGRhdGEpKSkgfHwgbnVsbFxuICAgICAgICApfWBcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB5aWVsZCBgJHtwcmVmYWNlfSBjPSR7Y29tcG9uZW50SWR9IHQ9JHt0aW1lc3RhbXB9IGRhdGE9P2BcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gQ3JkdE1lc3NhZ2VUeXBlLkRFTEVURV9FTlRJVFkpIHtcbiAgICAgIHlpZWxkIHByZWZhY2VcbiAgICB9IGVsc2Uge1xuICAgICAgeWllbGQgYCR7cHJlZmFjZX0gVW5rbm93biBDcmR0TWVzc2FnZVR5cGVgXG4gICAgfVxuICB9XG59XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVybmFsL3RyYW5zcG9ydHMvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsZUFBZSxFQUE4QixNQUFNLFVBQVUsQ0FBQTtBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUE7QUFFdEUsTUFBTSxTQUFTLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsSUFBZ0IsRUFBRSxNQUFlO0lBQ3RGLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFNUMsSUFBSSxPQUEyQixDQUFBO0lBRS9CLE9BQU8sQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7UUFDdEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtRQUM1QixNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sS0FBSyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ3RFLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLHFCQUFxQixFQUFFO1lBQzVHLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQTtTQUNuQjtRQUVELElBQ0UsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsYUFBYTtZQUM5QyxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxxQkFBcUI7WUFDdEQsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsd0JBQXdCO1lBQ3pELE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGdCQUFnQjtZQUNqRCxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxZQUFZLEVBQzdDO1lBQ0EsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUE7WUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1lBRXpELElBQUk7Z0JBQ0YsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDMUMsTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDLENBQUMsYUFBYSxNQUFNLFNBQVMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUN6RSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQ3RFLEVBQUUsQ0FBQTthQUNKO1lBQUMsTUFBTTtnQkFDTixNQUFNLEdBQUcsT0FBTyxNQUFNLFdBQVcsTUFBTSxTQUFTLFNBQVMsQ0FBQTthQUMxRDtTQUNGO2FBQU0sSUFDTCxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxhQUFhO1lBQzlDLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLHFCQUFxQixFQUN0RDtZQUNBLE1BQU0sT0FBTyxDQUFBO1NBQ2Q7YUFBTTtZQUNMLE1BQU0sR0FBRyxPQUFPLDBCQUEwQixDQUFBO1NBQzNDO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSwgQ3JkdE1lc3NhZ2UsIENyZHRNZXNzYWdlVHlwZSwgQ1JEVF9NRVNTQUdFX0hFQURFUl9MRU5HVEggfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IFJlYWRXcml0ZUJ5dGVCdWZmZXIgfSBmcm9tICdAZGNsL2Vjcy9kaXN0L3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IHJlYWRNZXNzYWdlIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9zZXJpYWxpemF0aW9uL2NyZHQvbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uKiBzZXJpYWxpemVDcmR0TWVzc2FnZXMocHJlZml4OiBzdHJpbmcsIGRhdGE6IFVpbnQ4QXJyYXksIGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBidWZmZXIgPSBuZXcgUmVhZFdyaXRlQnl0ZUJ1ZmZlcihkYXRhKVxuXG4gIGxldCBtZXNzYWdlOiBDcmR0TWVzc2FnZSB8IG51bGxcblxuICB3aGlsZSAoKG1lc3NhZ2UgPSByZWFkTWVzc2FnZShidWZmZXIpKSkge1xuICAgIGNvbnN0IGVudCA9IG1lc3NhZ2UuZW50aXR5SWRcbiAgICBjb25zdCBwcmVmYWNlID0gYCR7cHJlZml4fTogJHtDcmR0TWVzc2FnZVR5cGVbbWVzc2FnZS50eXBlXX0gZT0ke2VudH1gXG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gQ3JkdE1lc3NhZ2VUeXBlLkRFTEVURV9FTlRJVFkgfHwgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0VOVElUWV9ORVRXT1JLKSB7XG4gICAgICB5aWVsZCBgJHtwcmVmYWNlfWBcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBtZXNzYWdlLnR5cGUgPT09IENyZHRNZXNzYWdlVHlwZS5QVVRfQ09NUE9ORU5UIHx8XG4gICAgICBtZXNzYWdlLnR5cGUgPT09IENyZHRNZXNzYWdlVHlwZS5QVVRfQ09NUE9ORU5UX05FVFdPUksgfHxcbiAgICAgIG1lc3NhZ2UudHlwZSA9PT0gQ3JkdE1lc3NhZ2VUeXBlLkRFTEVURV9DT01QT05FTlRfTkVUV09SSyB8fFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0NPTVBPTkVOVCB8fFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuQVBQRU5EX1ZBTFVFXG4gICAgKSB7XG4gICAgICBjb25zdCB7IGNvbXBvbmVudElkLCB0aW1lc3RhbXAgfSA9IG1lc3NhZ2VcbiAgICAgIGNvbnN0IGRhdGEgPSAnZGF0YScgaW4gbWVzc2FnZSA/IG1lc3NhZ2UuZGF0YSA6IHVuZGVmaW5lZFxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjID0gZW5naW5lLmdldENvbXBvbmVudChjb21wb25lbnRJZClcbiAgICAgICAgeWllbGQgYCR7cHJlZmFjZX0gYz0ke2MuY29tcG9uZW50TmFtZX0gdD0ke3RpbWVzdGFtcH0gZGF0YT0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIChkYXRhICYmIGMuc2NoZW1hLmRlc2VyaWFsaXplKG5ldyBSZWFkV3JpdGVCeXRlQnVmZmVyKGRhdGEpKSkgfHwgbnVsbFxuICAgICAgICApfWBcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB5aWVsZCBgJHtwcmVmYWNlfSBjPSR7Y29tcG9uZW50SWR9IHQ9JHt0aW1lc3RhbXB9IGRhdGE9P2BcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0VOVElUWSB8fFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0VOVElUWV9ORVRXT1JLXG4gICAgKSB7XG4gICAgICB5aWVsZCBwcmVmYWNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHlpZWxkIGAke3ByZWZhY2V9IFVua25vd24gQ3JkdE1lc3NhZ2VUeXBlYFxuICAgIH1cbiAgfVxufVxuIl19
@@ -27,8 +27,9 @@ export function createRendererTransport(engineApi) {
27
27
  return false;
28
28
  }
29
29
  return !!message;
30
- }
30
+ },
31
+ type: 'renderer'
31
32
  };
32
33
  return rendererTransport;
33
34
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJUcmFuc3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQU9oRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsU0FBZ0M7SUFDdEUsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFtQjtRQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsRCxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQUMsQ0FBQTtRQUVGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtvQkFDckMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBYztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDaEIsSUFBSTtnQkFDRixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUM5QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUdkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BCLFFBQVEsQ0FBQTthQUNUO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUF5QjtZQUU5QixJQUVHLE9BQWUsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEVBQ25EO2dCQUNBLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbEIsQ0FBQztLQUNGLENBQUE7SUFFRCxPQUFPLGlCQUFpQixDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc3BvcnQsIFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1BWF9TVEFUSUNfQ09NUE9ORU5UIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5pbXBvcnQgdHlwZSB7IENyZHRTZW5kVG9SZW5kZXJlclJlcXVlc3QsIENyZHRTZW5kVG9SZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vRW5naW5lQXBpJ1xuXG5leHBvcnQgdHlwZSBFbmdpbmVBcGlGb3JUcmFuc3BvcnQgPSB7XG4gIGNyZHRTZW5kVG9SZW5kZXJlcihib2R5OiBDcmR0U2VuZFRvUmVuZGVyZXJSZXF1ZXN0KTogUHJvbWlzZTxDcmR0U2VuZFRvUmVzcG9uc2U+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydChlbmdpbmVBcGk6IEVuZ2luZUFwaUZvclRyYW5zcG9ydCk6IFRyYW5zcG9ydCB7XG4gIGFzeW5jIGZ1bmN0aW9uIHNlbmRUb1JlbmRlcmVyKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZ2luZUFwaS5jcmR0U2VuZFRvUmVuZGVyZXIoe1xuICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSlcbiAgICB9KVxuXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgIGlmIChyZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBieXRlQXJyYXkgb2YgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIHJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZShieXRlQXJyYXkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZW5kZXJlclRyYW5zcG9ydDogVHJhbnNwb3J0ID0ge1xuICAgIGFzeW5jIHNlbmQobWVzc2FnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2VuZFRvUmVuZGVyZXIobWVzc2FnZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGNvbnNvbGUuZXJyb3Igb2YgdGhlIHNjZW5lXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGRlYnVnZ2VyXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWx0ZXIobWVzc2FnZTogVHJhbnNwb3J0TWVzc2FnZSkge1xuICAgICAgLy8gT25seSBzZW5kIHJlbmRlcmVyIGNvbXBvbmVudHMgKFByb3RvIEdlbmVyYXRlZClcbiAgICAgIGlmIChcbiAgICAgICAgLy8gZmlsdGVyIG91dCBtZXNzYWdlcyBmb3Igbm9uLWNvcmUgY29tcG9uZW50c1xuICAgICAgICAobWVzc2FnZSBhcyBhbnkpLmNvbXBvbmVudElkID4gTUFYX1NUQVRJQ19DT01QT05FTlRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbWVzc2FnZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlclRyYW5zcG9ydFxufVxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJUcmFuc3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQU9oRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsU0FBZ0M7SUFDdEUsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFtQjtRQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNsRCxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQUMsQ0FBQTtRQUVGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtvQkFDckMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBYztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDaEIsSUFBSTtnQkFDRixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUM5QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUdkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BCLFFBQVEsQ0FBQTthQUNUO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUF5QjtZQUU5QixJQUVHLE9BQWUsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEVBQ25EO2dCQUNBLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbEIsQ0FBQztRQUNELElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUE7SUFFRCxPQUFPLGlCQUFpQixDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc3BvcnQsIFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IE1BWF9TVEFUSUNfQ09NUE9ORU5UIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5pbXBvcnQgdHlwZSB7IENyZHRTZW5kVG9SZW5kZXJlclJlcXVlc3QsIENyZHRTZW5kVG9SZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vRW5naW5lQXBpJ1xuXG5leHBvcnQgdHlwZSBFbmdpbmVBcGlGb3JUcmFuc3BvcnQgPSB7XG4gIGNyZHRTZW5kVG9SZW5kZXJlcihib2R5OiBDcmR0U2VuZFRvUmVuZGVyZXJSZXF1ZXN0KTogUHJvbWlzZTxDcmR0U2VuZFRvUmVzcG9uc2U+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydChlbmdpbmVBcGk6IEVuZ2luZUFwaUZvclRyYW5zcG9ydCk6IFRyYW5zcG9ydCB7XG4gIGFzeW5jIGZ1bmN0aW9uIHNlbmRUb1JlbmRlcmVyKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGVuZ2luZUFwaS5jcmR0U2VuZFRvUmVuZGVyZXIoe1xuICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSlcbiAgICB9KVxuXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgIGlmIChyZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBieXRlQXJyYXkgb2YgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIHJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZShieXRlQXJyYXkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZW5kZXJlclRyYW5zcG9ydDogVHJhbnNwb3J0ID0ge1xuICAgIGFzeW5jIHNlbmQobWVzc2FnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2VuZFRvUmVuZGVyZXIobWVzc2FnZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGNvbnNvbGUuZXJyb3Igb2YgdGhlIHNjZW5lXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGRlYnVnZ2VyXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWx0ZXIobWVzc2FnZTogVHJhbnNwb3J0TWVzc2FnZSkge1xuICAgICAgLy8gT25seSBzZW5kIHJlbmRlcmVyIGNvbXBvbmVudHMgKFByb3RvIEdlbmVyYXRlZClcbiAgICAgIGlmIChcbiAgICAgICAgLy8gZmlsdGVyIG91dCBtZXNzYWdlcyBmb3Igbm9uLWNvcmUgY29tcG9uZW50c1xuICAgICAgICAobWVzc2FnZSBhcyBhbnkpLmNvbXBvbmVudElkID4gTUFYX1NUQVRJQ19DT01QT05FTlRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbWVzc2FnZVxuICAgIH0sXG4gICAgdHlwZTogJ3JlbmRlcmVyJ1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlcmVyVHJhbnNwb3J0XG59XG4iXX0=
package/message-bus.js CHANGED
@@ -7,10 +7,13 @@ export class MessageBus {
7
7
  }
8
8
  on(message, callback) {
9
9
  return onCommsMessage.add((e) => {
10
- const m = JSON.parse(e.message);
11
- if (m.message === message) {
12
- callback(m.payload, e.sender);
10
+ try {
11
+ const m = JSON.parse(e.message);
12
+ if (m.message === message) {
13
+ callback(m.payload, e.sender);
14
+ }
13
15
  }
16
+ catch (_) { }
14
17
  });
15
18
  }
16
19
  sendRaw(message) {
@@ -23,12 +26,11 @@ export class MessageBus {
23
26
  onCommsMessage.notifyObservers({ message: messageToSend, sender: 'self' });
24
27
  }
25
28
  flush() {
26
- if (this.messageQueue.length === 0)
29
+ if (!this.messageQueue.length)
27
30
  return;
28
31
  if (this.flushing)
29
32
  return;
30
33
  const message = this.messageQueue.shift();
31
- this.flushing = true;
32
34
  communicationsController.send({ message }).then((_) => {
33
35
  this.flushing = false;
34
36
  this.flush();
@@ -37,4 +39,4 @@ export class MessageBus {
37
39
  });
38
40
  }
39
41
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvbWVzc2FnZS1idXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFXLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2RCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sa0NBQWtDLENBQUE7QUFNNUUsTUFBTSxPQUFPLFVBQVU7SUFJckI7UUFIUSxpQkFBWSxHQUFhLEVBQUUsQ0FBQTtRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFBO0lBRVQsQ0FBQztJQUVoQixFQUFFLENBQUMsT0FBZSxFQUFFLFFBQThDO1FBQ2hFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRS9CLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUM5QjtRQUNILENBQUMsQ0FBRSxDQUFBO0lBQ0wsQ0FBQztJQUdELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRS9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLE9BQXlCO1FBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzNCLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTTtRQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUV6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRyxDQUFBO1FBRTFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1FBRXBCLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM3QyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7WUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2QsQ0FBQyxFQUNELENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN2QixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSAnLi9pbnRlcm5hbC9PYnNlcnZhYmxlJ1xuaW1wb3J0IHsgSUV2ZW50cywgb25Db21tc01lc3NhZ2UgfSBmcm9tICcuL29ic2VydmFibGVzJ1xuaW1wb3J0ICogYXMgY29tbXVuaWNhdGlvbnNDb250cm9sbGVyIGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuXG4vKipcbiAqIEBhbHBoYVxuICogQGRlcHJlY2F0ZWQgdGhpcyB3aWxsIG9ubHkgZXhpc3QgZm9yIGEgZmV3IHJlbGVhc2VzIGluIEVDUzdcbiAqL1xuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdXMge1xuICBwcml2YXRlIG1lc3NhZ2VRdWV1ZTogc3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGZsdXNoaW5nID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgb24obWVzc2FnZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiBhbnksIHNlbmRlcjogc3RyaW5nKSA9PiB2b2lkKTogT2JzZXJ2ZXI8SUV2ZW50c1snY29tbXMnXT4ge1xuICAgIHJldHVybiBvbkNvbW1zTWVzc2FnZS5hZGQoKGUpID0+IHtcbiAgICAgIGNvbnN0IG0gPSBKU09OLnBhcnNlKGUubWVzc2FnZSlcblxuICAgICAgaWYgKG0ubWVzc2FnZSA9PT0gbWVzc2FnZSkge1xuICAgICAgICBjYWxsYmFjayhtLnBheWxvYWQsIGUuc2VuZGVyKVxuICAgICAgfVxuICAgIH0pIVxuICB9XG5cbiAgLy8gQGludGVybmFsXG4gIHNlbmRSYXcobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tZXNzYWdlUXVldWUucHVzaChtZXNzYWdlKVxuXG4gICAgdGhpcy5mbHVzaCgpXG4gIH1cblxuICBlbWl0KG1lc3NhZ2U6IHN0cmluZywgcGF5bG9hZDogUmVjb3JkPGFueSwgYW55Pikge1xuICAgIGNvbnN0IG1lc3NhZ2VUb1NlbmQgPSBKU09OLnN0cmluZ2lmeSh7IG1lc3NhZ2UsIHBheWxvYWQgfSlcbiAgICB0aGlzLnNlbmRSYXcobWVzc2FnZVRvU2VuZClcbiAgICBvbkNvbW1zTWVzc2FnZS5ub3RpZnlPYnNlcnZlcnMoeyBtZXNzYWdlOiBtZXNzYWdlVG9TZW5kLCBzZW5kZXI6ICdzZWxmJyB9KVxuICB9XG5cbiAgcHJpdmF0ZSBmbHVzaCgpIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlUXVldWUubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBpZiAodGhpcy5mbHVzaGluZykgcmV0dXJuXG5cbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlUXVldWUuc2hpZnQoKSFcblxuICAgIHRoaXMuZmx1c2hpbmcgPSB0cnVlXG5cbiAgICBjb21tdW5pY2F0aW9uc0NvbnRyb2xsZXIuc2VuZCh7IG1lc3NhZ2UgfSkudGhlbihcbiAgICAgIChfKSA9PiB7XG4gICAgICAgIHRoaXMuZmx1c2hpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLmZsdXNoKClcbiAgICAgIH0sXG4gICAgICAoXykgPT4ge1xuICAgICAgICB0aGlzLmZsdXNoaW5nID0gZmFsc2VcbiAgICAgIH1cbiAgICApXG4gIH1cbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvbWVzc2FnZS1idXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFXLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2RCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sa0NBQWtDLENBQUE7QUFNNUUsTUFBTSxPQUFPLFVBQVU7SUFJckI7UUFIUSxpQkFBWSxHQUFhLEVBQUUsQ0FBQTtRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFBO0lBRVQsQ0FBQztJQUVoQixFQUFFLENBQUMsT0FBZSxFQUFFLFFBQThDO1FBQ2hFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlCLElBQUk7Z0JBQ0YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBRS9CLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7b0JBQ3pCLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtpQkFDOUI7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUU7UUFDaEIsQ0FBQyxDQUFFLENBQUE7SUFDTCxDQUFDO0lBR0QsT0FBTyxDQUFDLE9BQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBeUI7UUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDM0IsY0FBYyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsT0FBTTtRQUNyQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUV6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRyxDQUFBO1FBQzFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM3QyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7WUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2QsQ0FBQyxFQUNELENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN2QixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSAnLi9pbnRlcm5hbC9PYnNlcnZhYmxlJ1xuaW1wb3J0IHsgSUV2ZW50cywgb25Db21tc01lc3NhZ2UgfSBmcm9tICcuL29ic2VydmFibGVzJ1xuaW1wb3J0ICogYXMgY29tbXVuaWNhdGlvbnNDb250cm9sbGVyIGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuXG4vKipcbiAqIEBhbHBoYVxuICogQGRlcHJlY2F0ZWQgdGhpcyB3aWxsIG9ubHkgZXhpc3QgZm9yIGEgZmV3IHJlbGVhc2VzIGluIEVDUzdcbiAqL1xuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdXMge1xuICBwcml2YXRlIG1lc3NhZ2VRdWV1ZTogc3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGZsdXNoaW5nID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgb24obWVzc2FnZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiBhbnksIHNlbmRlcjogc3RyaW5nKSA9PiB2b2lkKTogT2JzZXJ2ZXI8SUV2ZW50c1snY29tbXMnXT4ge1xuICAgIHJldHVybiBvbkNvbW1zTWVzc2FnZS5hZGQoKGUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG0gPSBKU09OLnBhcnNlKGUubWVzc2FnZSlcblxuICAgICAgICBpZiAobS5tZXNzYWdlID09PSBtZXNzYWdlKSB7XG4gICAgICAgICAgY2FsbGJhY2sobS5wYXlsb2FkLCBlLnNlbmRlcilcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoXykge31cbiAgICB9KSFcbiAgfVxuXG4gIC8vIEBpbnRlcm5hbFxuICBzZW5kUmF3KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMubWVzc2FnZVF1ZXVlLnB1c2gobWVzc2FnZSlcblxuICAgIHRoaXMuZmx1c2goKVxuICB9XG4gIGVtaXQobWVzc2FnZTogc3RyaW5nLCBwYXlsb2FkOiBSZWNvcmQ8YW55LCBhbnk+KSB7XG4gICAgY29uc3QgbWVzc2FnZVRvU2VuZCA9IEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZSwgcGF5bG9hZCB9KVxuICAgIHRoaXMuc2VuZFJhdyhtZXNzYWdlVG9TZW5kKVxuICAgIG9uQ29tbXNNZXNzYWdlLm5vdGlmeU9ic2VydmVycyh7IG1lc3NhZ2U6IG1lc3NhZ2VUb1NlbmQsIHNlbmRlcjogJ3NlbGYnIH0pXG4gIH1cblxuICBwcml2YXRlIGZsdXNoKCkge1xuICAgIGlmICghdGhpcy5tZXNzYWdlUXVldWUubGVuZ3RoKSByZXR1cm5cbiAgICBpZiAodGhpcy5mbHVzaGluZykgcmV0dXJuXG5cbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlUXVldWUuc2hpZnQoKSFcbiAgICBjb21tdW5pY2F0aW9uc0NvbnRyb2xsZXIuc2VuZCh7IG1lc3NhZ2UgfSkudGhlbihcbiAgICAgIChfKSA9PiB7XG4gICAgICAgIHRoaXMuZmx1c2hpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLmZsdXNoKClcbiAgICAgIH0sXG4gICAgICAoXykgPT4ge1xuICAgICAgICB0aGlzLmZsdXNoaW5nID0gZmFsc2VcbiAgICAgIH1cbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ export declare enum CommsMessage {
2
+ CRDT = 1,
3
+ REQ_CRDT_STATE = 2,
4
+ RES_CRDT_STATE = 3
5
+ }
6
+ export declare function BinaryMessageBus<T extends CommsMessage>(send: (message: Uint8Array) => void): {
7
+ on: <K extends T>(message: K, callback: (value: Uint8Array, sender: string) => void) => void;
8
+ emit: <K_1 extends T>(message: K_1, value: Uint8Array) => void;
9
+ __processMessages: (messages: Uint8Array[]) => void;
10
+ };
11
+ export declare function craftCommsMessage<T extends CommsMessage>(messageType: T, payload: Uint8Array): Uint8Array;
12
+ export declare function decodeCommsMessage<T extends CommsMessage>(data: Uint8Array): {
13
+ sender: string;
14
+ messageType: T;
15
+ data: Uint8Array;
16
+ } | undefined;
17
+ export declare function decodeString(data: Uint8Array): string;
18
+ export declare function encodeString(s: string): Uint8Array;
@@ -0,0 +1,68 @@
1
+ import { ReadWriteByteBuffer } from '@dcl/ecs/dist/serialization/ByteBuffer';
2
+ export var CommsMessage;
3
+ (function (CommsMessage) {
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";
7
+ })(CommsMessage || (CommsMessage = {}));
8
+ export function BinaryMessageBus(send) {
9
+ const mapping = new Map();
10
+ return {
11
+ on: (message, callback) => {
12
+ mapping.set(message, callback);
13
+ },
14
+ emit: (message, value) => {
15
+ send(craftCommsMessage(message, value));
16
+ },
17
+ __processMessages: (messages) => {
18
+ for (const message of messages) {
19
+ const commsMsg = decodeCommsMessage(message);
20
+ if (!commsMsg)
21
+ continue;
22
+ const { sender, messageType, data } = commsMsg;
23
+ const fn = mapping.get(messageType);
24
+ if (fn)
25
+ fn(data, sender);
26
+ }
27
+ }
28
+ };
29
+ }
30
+ export function craftCommsMessage(messageType, payload) {
31
+ const msg = new Uint8Array(payload.byteLength + 1);
32
+ msg.set([messageType]);
33
+ msg.set(payload, 1);
34
+ return msg;
35
+ }
36
+ export function decodeCommsMessage(data) {
37
+ try {
38
+ let offset = 0;
39
+ const r = new Uint8Array(data);
40
+ const view = new DataView(r.buffer);
41
+ const senderLength = view.getUint8(offset);
42
+ offset += 1;
43
+ const sender = decodeString(data.subarray(1, senderLength + 1));
44
+ offset += senderLength;
45
+ const messageType = view.getUint8(offset);
46
+ offset += 1;
47
+ const message = r.subarray(offset);
48
+ return {
49
+ sender,
50
+ messageType,
51
+ data: message
52
+ };
53
+ }
54
+ catch (e) {
55
+ console.error('Invalid Comms message', e);
56
+ }
57
+ }
58
+ export function decodeString(data) {
59
+ const buffer = new ReadWriteByteBuffer();
60
+ buffer.writeBuffer(data, true);
61
+ return buffer.readUtf8String();
62
+ }
63
+ export function encodeString(s) {
64
+ const buffer = new ReadWriteByteBuffer();
65
+ buffer.writeUtf8String(s);
66
+ return buffer.readBuffer();
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LW1lc3NhZ2UtYnVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldHdvcmsvYmluYXJ5LW1lc3NhZ2UtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBRTVFLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIsK0NBQVEsQ0FBQTtJQUNSLG1FQUFrQixDQUFBO0lBQ2xCLG1FQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QjtBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBeUIsSUFBbUM7SUFDMUYsTUFBTSxPQUFPLEdBQXdELElBQUksR0FBRyxFQUFFLENBQUE7SUFDOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxDQUFjLE9BQVUsRUFBRSxRQUFxRCxFQUFFLEVBQUU7WUFDckYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELElBQUksRUFBRSxDQUFjLE9BQVUsRUFBRSxLQUFpQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFJLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFDRCxpQkFBaUIsRUFBRSxDQUFDLFFBQXNCLEVBQUUsRUFBRTtZQUM1QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDOUIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUksT0FBTyxDQUFDLENBQUE7Z0JBQy9DLElBQUksQ0FBQyxRQUFRO29CQUFFLFNBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQTtnQkFDOUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDbkMsSUFBSSxFQUFFO29CQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7YUFDekI7UUFDSCxDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQXlCLFdBQWMsRUFBRSxPQUFtQjtJQUMzRixNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25CLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsSUFBZ0I7SUFFaEIsSUFBSTtRQUNGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDL0QsTUFBTSxJQUFJLFlBQVksQ0FBQTtRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBTSxDQUFBO1FBQzlDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRWxDLE9BQU87WUFDTCxNQUFNO1lBQ04sV0FBVztZQUNYLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQTtLQUNGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQzFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBZ0I7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzlCLE9BQU8sTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFBO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQVM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUE7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWRXcml0ZUJ5dGVCdWZmZXIgfSBmcm9tICdAZGNsL2Vjcy9kaXN0L3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcblxuZXhwb3J0IGVudW0gQ29tbXNNZXNzYWdlIHtcbiAgQ1JEVCA9IDEsXG4gIFJFUV9DUkRUX1NUQVRFID0gMixcbiAgUkVTX0NSRFRfU1RBVEUgPSAzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCaW5hcnlNZXNzYWdlQnVzPFQgZXh0ZW5kcyBDb21tc01lc3NhZ2U+KHNlbmQ6IChtZXNzYWdlOiBVaW50OEFycmF5KSA9PiB2b2lkKSB7XG4gIGNvbnN0IG1hcHBpbmc6IE1hcDxULCAodmFsdWU6IFVpbnQ4QXJyYXksIHNlbmRlcjogc3RyaW5nKSA9PiB2b2lkPiA9IG5ldyBNYXAoKVxuICByZXR1cm4ge1xuICAgIG9uOiA8SyBleHRlbmRzIFQ+KG1lc3NhZ2U6IEssIGNhbGxiYWNrOiAodmFsdWU6IFVpbnQ4QXJyYXksIHNlbmRlcjogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gICAgICBtYXBwaW5nLnNldChtZXNzYWdlLCBjYWxsYmFjaylcbiAgICB9LFxuICAgIGVtaXQ6IDxLIGV4dGVuZHMgVD4obWVzc2FnZTogSywgdmFsdWU6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIHNlbmQoY3JhZnRDb21tc01lc3NhZ2U8VD4obWVzc2FnZSwgdmFsdWUpKVxuICAgIH0sXG4gICAgX19wcm9jZXNzTWVzc2FnZXM6IChtZXNzYWdlczogVWludDhBcnJheVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICAgICAgY29uc3QgY29tbXNNc2cgPSBkZWNvZGVDb21tc01lc3NhZ2U8VD4obWVzc2FnZSlcbiAgICAgICAgaWYgKCFjb21tc01zZykgY29udGludWVcbiAgICAgICAgY29uc3QgeyBzZW5kZXIsIG1lc3NhZ2VUeXBlLCBkYXRhIH0gPSBjb21tc01zZ1xuICAgICAgICBjb25zdCBmbiA9IG1hcHBpbmcuZ2V0KG1lc3NhZ2VUeXBlKVxuICAgICAgICBpZiAoZm4pIGZuKGRhdGEsIHNlbmRlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyYWZ0Q29tbXNNZXNzYWdlPFQgZXh0ZW5kcyBDb21tc01lc3NhZ2U+KG1lc3NhZ2VUeXBlOiBULCBwYXlsb2FkOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IG1zZyA9IG5ldyBVaW50OEFycmF5KHBheWxvYWQuYnl0ZUxlbmd0aCArIDEpXG4gIG1zZy5zZXQoW21lc3NhZ2VUeXBlXSlcbiAgbXNnLnNldChwYXlsb2FkLCAxKVxuICByZXR1cm4gbXNnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDb21tc01lc3NhZ2U8VCBleHRlbmRzIENvbW1zTWVzc2FnZT4oXG4gIGRhdGE6IFVpbnQ4QXJyYXlcbik6IHsgc2VuZGVyOiBzdHJpbmc7IG1lc3NhZ2VUeXBlOiBUOyBkYXRhOiBVaW50OEFycmF5IH0gfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGxldCBvZmZzZXQgPSAwXG4gICAgY29uc3QgciA9IG5ldyBVaW50OEFycmF5KGRhdGEpXG4gICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhyLmJ1ZmZlcilcbiAgICBjb25zdCBzZW5kZXJMZW5ndGggPSB2aWV3LmdldFVpbnQ4KG9mZnNldClcbiAgICBvZmZzZXQgKz0gMVxuICAgIGNvbnN0IHNlbmRlciA9IGRlY29kZVN0cmluZyhkYXRhLnN1YmFycmF5KDEsIHNlbmRlckxlbmd0aCArIDEpKVxuICAgIG9mZnNldCArPSBzZW5kZXJMZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlVHlwZSA9IHZpZXcuZ2V0VWludDgob2Zmc2V0KSBhcyBUXG4gICAgb2Zmc2V0ICs9IDFcbiAgICBjb25zdCBtZXNzYWdlID0gci5zdWJhcnJheShvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyLFxuICAgICAgbWVzc2FnZVR5cGUsXG4gICAgICBkYXRhOiBtZXNzYWdlXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignSW52YWxpZCBDb21tcyBtZXNzYWdlJywgZSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGRhdGE6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICBjb25zdCBidWZmZXIgPSBuZXcgUmVhZFdyaXRlQnl0ZUJ1ZmZlcigpXG4gIGJ1ZmZlci53cml0ZUJ1ZmZlcihkYXRhLCB0cnVlKVxuICByZXR1cm4gYnVmZmVyLnJlYWRVdGY4U3RyaW5nKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVN0cmluZyhzOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFJlYWRXcml0ZUJ5dGVCdWZmZXIoKVxuICBidWZmZXIud3JpdGVVdGY4U3RyaW5nKHMpXG4gIHJldHVybiBidWZmZXIucmVhZEJ1ZmZlcigpXG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { Entity, IEngine } from '@dcl/ecs';
2
+ import { IProfile } from './message-bus-sync';
3
+ export type SyncEntity = (entityId: Entity, componentIds: number[], entityEnumId?: number) => void;
4
+ export declare function entityUtils(engine: IEngine, profile: IProfile): {
5
+ syncEntity: (entityId: Entity, componentIds: number[], entityEnumId?: number) => void;
6
+ getChildren: (parent: Entity) => Iterable<Entity>;
7
+ getParent: (child: Entity) => Entity | undefined;
8
+ parentEntity: (entity: Entity, parent: Entity) => void;
9
+ removeParent: (entity: Entity) => void;
10
+ getFirstChild: (entity: Entity) => Entity;
11
+ };
@@ -0,0 +1,77 @@
1
+ import { NetworkEntity as _NetworkEntity, NetworkParent as _NetworkParent, Transform as _Transform, SyncComponents as _SyncComponents } from '@dcl/ecs';
2
+ export function entityUtils(engine, profile) {
3
+ const NetworkEntity = engine.getComponent(_NetworkEntity.componentId);
4
+ const NetworkParent = engine.getComponent(_NetworkParent.componentId);
5
+ const Transform = engine.getComponent(_Transform.componentId);
6
+ const SyncComponents = engine.getComponent(_SyncComponents.componentId);
7
+ function syncEntity(entityId, componentIds, entityEnumId) {
8
+ if (!profile?.networkId) {
9
+ throw new Error('Profile not initialized. Called syncEntity inside the main() function.');
10
+ }
11
+ const networkValue = { entityId, networkId: profile.networkId };
12
+ if (entityEnumId !== undefined) {
13
+ networkValue.networkId = 0;
14
+ networkValue.entityId = entityEnumId;
15
+ for (const [_, network] of engine.getEntitiesWith(NetworkEntity)) {
16
+ if (network.networkId === networkValue.networkId && network.entityId === networkValue.entityId) {
17
+ throw new Error('syncEntity failed because the id provided is already in use');
18
+ }
19
+ }
20
+ }
21
+ NetworkEntity.createOrReplace(entityId, networkValue);
22
+ SyncComponents.createOrReplace(entityId, { componentIds });
23
+ }
24
+ function* getChildren(parent) {
25
+ const network = NetworkEntity.getOrNull(parent);
26
+ if (network) {
27
+ for (const [entity, parent] of engine.getEntitiesWith(NetworkParent)) {
28
+ if (parent.entityId === network.entityId && parent.networkId === network.networkId) {
29
+ yield entity;
30
+ }
31
+ }
32
+ }
33
+ }
34
+ function getFirstChild(entity) {
35
+ return Array.from(getChildren(entity))[0];
36
+ }
37
+ function getParent(child) {
38
+ const parent = NetworkParent.getOrNull(child);
39
+ if (!parent)
40
+ return undefined;
41
+ for (const [entity, network] of engine.getEntitiesWith(NetworkEntity)) {
42
+ if (parent.networkId === network.networkId && parent.entityId === network.entityId) {
43
+ return entity;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ function parentEntity(entity, parent) {
49
+ const network = NetworkEntity.getOrNull(parent);
50
+ if (!network) {
51
+ throw new Error('Entity is not sync. Call syncEntity on the parent.');
52
+ }
53
+ NetworkParent.createOrReplace(entity, network);
54
+ if (!Transform.getOrNull(entity)) {
55
+ Transform.create(entity);
56
+ }
57
+ else {
58
+ Transform.getMutable(entity);
59
+ }
60
+ }
61
+ function removeParent(entity) {
62
+ const network = NetworkEntity.getOrNull(entity);
63
+ if (!network) {
64
+ throw new Error('Entity is not sync');
65
+ }
66
+ NetworkParent.deleteFrom(entity);
67
+ }
68
+ return {
69
+ syncEntity,
70
+ getChildren,
71
+ getParent,
72
+ parentEntity,
73
+ removeParent,
74
+ getFirstChild
75
+ };
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJbEMsTUFBTSxVQUFVLENBQUE7QUFLakIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFlLEVBQUUsT0FBaUI7SUFDNUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFtQixDQUFBO0lBQ3ZGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQXVCLENBQUE7SUFDbkYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFvQixDQUFBO0lBSzFGLFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUVqRixJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUE7U0FDMUY7UUFHRCxNQUFNLFlBQVksR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBSy9ELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM5QixZQUFZLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtZQUMxQixZQUFZLENBQUMsUUFBUSxHQUFHLFlBQXNCLENBQUE7WUFHOUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLFFBQVEsRUFBRTtvQkFDOUYsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFBO2lCQUMvRTthQUNGO1NBQ0Y7UUFHRCxhQUFhLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNyRCxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQU9ELFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDL0MsSUFBSSxPQUFPLEVBQUU7WUFDWCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDcEUsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUNsRixNQUFNLE1BQU0sQ0FBQTtpQkFDYjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsTUFBYztRQUNuQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUtELFNBQVMsU0FBUyxDQUFDLEtBQWE7UUFDOUIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFBO1FBQzdCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3JFLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDbEYsT0FBTyxNQUFNLENBQUE7YUFDZDtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQU1ELFNBQVMsWUFBWSxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ2xELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtTQUN0RTtRQUdELGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRzlDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDekI7YUFBTTtZQUVMLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDN0I7SUFDSCxDQUFDO0lBS0QsU0FBUyxZQUFZLENBQUMsTUFBYztRQUNsQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRS9DLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7U0FDdEM7UUFFRCxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxPQUFPO1FBQ0wsVUFBVTtRQUNWLFdBQVc7UUFDWCxTQUFTO1FBQ1QsWUFBWTtRQUNaLFlBQVk7UUFDWixhQUFhO0tBQ2QsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdHksXG4gIElFbmdpbmUsXG4gIE5ldHdvcmtFbnRpdHkgYXMgX05ldHdvcmtFbnRpdHksXG4gIElOZXRvd3JrRW50aXR5LFxuICBOZXR3b3JrUGFyZW50IGFzIF9OZXR3b3JrUGFyZW50LFxuICBUcmFuc2Zvcm0gYXMgX1RyYW5zZm9ybSxcbiAgU3luY0NvbXBvbmVudHMgYXMgX1N5bmNDb21wb25lbnRzLFxuICBJTmV0b3dya1BhcmVudCxcbiAgVHJhbnNmb3JtQ29tcG9uZW50LFxuICBJU3luY0NvbXBvbmVudHNcbn0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBJUHJvZmlsZSB9IGZyb20gJy4vbWVzc2FnZS1idXMtc3luYydcblxuZXhwb3J0IHR5cGUgU3luY0VudGl0eSA9IChlbnRpdHlJZDogRW50aXR5LCBjb21wb25lbnRJZHM6IG51bWJlcltdLCBlbnRpdHlFbnVtSWQ/OiBudW1iZXIpID0+IHZvaWRcblxuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVV0aWxzKGVuZ2luZTogSUVuZ2luZSwgcHJvZmlsZTogSVByb2ZpbGUpIHtcbiAgY29uc3QgTmV0d29ya0VudGl0eSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtFbnRpdHkuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrRW50aXR5XG4gIGNvbnN0IE5ldHdvcmtQYXJlbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrUGFyZW50LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya1BhcmVudFxuICBjb25zdCBUcmFuc2Zvcm0gPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9UcmFuc2Zvcm0uY29tcG9uZW50SWQpIGFzIFRyYW5zZm9ybUNvbXBvbmVudFxuICBjb25zdCBTeW5jQ29tcG9uZW50cyA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1N5bmNDb21wb25lbnRzLmNvbXBvbmVudElkKSBhcyBJU3luY0NvbXBvbmVudHNcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV0d29yayBlbnRpdHkgKHN5bmMpIHRocm91Z2ggY29tbXMsIGFuZCBzeW5jIHRoZSByZWNlaXZlZCBjb21wb25lbnRzXG4gICAqL1xuICBmdW5jdGlvbiBzeW5jRW50aXR5KGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikge1xuICAgIC8vIFByb2ZpbGUgbm90IGluaXRpYWxpemVkXG4gICAgaWYgKCFwcm9maWxlPy5uZXR3b3JrSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWQuIENhbGxlZCBzeW5jRW50aXR5IGluc2lkZSB0aGUgbWFpbigpIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgLy8gV2UgdXNlIHRoZSBuZXR3b3JrSWQgZ2VuZXJhdGVkIGJ5IHRoZSB1c2VyIGFkZHJlc3MgdG8gaWRlbnRpZnkgdGhpcyBlbnRpdHkgdGhyb3VnaCB0aGUgbmV0d29ya1xuICAgIGNvbnN0IG5ldHdvcmtWYWx1ZSA9IHsgZW50aXR5SWQsIG5ldHdvcmtJZDogcHJvZmlsZS5uZXR3b3JrSWQgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgYW4gZW50aXR5RW51bUlkLCBpdCBtZWFucyBpcyB0aGUgc2FtZSBlbnRpdHkgZm9yIGFsbCB0aGUgY2xpZW50cyBjcmVhdGVkIG9uIHRoZSBtYWluIGZ1bmNpdG9uLlxuICAgIC8vIFNvIHRoZSBuZXR3b3JrSWQgc2hvdWxkIGJlIHRoZSBzYW1lIGluIGFsbCB0aGUgY2xpZW50cyB0byBhdm9pZCByZS1jcmVhdGluZyB0aGlzIGVudGl0eS5cbiAgICAvLyBGb3IgdGhpcyBjYXNlIHdlIHVzZSBuZXR3b3JrSWQgPSAwLlxuICAgIGlmIChlbnRpdHlFbnVtSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCA9IDBcbiAgICAgIG5ldHdvcmtWYWx1ZS5lbnRpdHlJZCA9IGVudGl0eUVudW1JZCBhcyBFbnRpdHlcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBlbnVtIGlzIGFscmVhZHkgdXNlZFxuICAgICAgZm9yIChjb25zdCBbXywgbmV0d29ya10gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChOZXR3b3JrRW50aXR5KSkge1xuICAgICAgICBpZiAobmV0d29yay5uZXR3b3JrSWQgPT09IG5ldHdvcmtWYWx1ZS5uZXR3b3JrSWQgJiYgbmV0d29yay5lbnRpdHlJZCA9PT0gbmV0d29ya1ZhbHVlLmVudGl0eUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzeW5jRW50aXR5IGZhaWxlZCBiZWNhdXNlIHRoZSBpZCBwcm92aWRlZCBpcyBhbHJlYWR5IGluIHVzZScpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBpcyBub3QgZGVmaW5lZCwgdGhlbiBpcyBhIGVudGl0eSBjcmVhdGVkIGluIHJ1bnRpbWUgKHdoYXQgd2UgY2FsbGVkIGR5bmFtaWMvcnVudGltZSBlbnRpdGllcykuXG4gICAgTmV0d29ya0VudGl0eS5jcmVhdGVPclJlcGxhY2UoZW50aXR5SWQsIG5ldHdvcmtWYWx1ZSlcbiAgICBTeW5jQ29tcG9uZW50cy5jcmVhdGVPclJlcGxhY2UoZW50aXR5SWQsIHsgY29tcG9uZW50SWRzIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvZiBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKiBmb3IgKGNvbnN0IGNoaWxkcmVuIG9mIGdldENoaWxkcmVuKHBhcmVudCkpIHsgY29uc29sZS5sb2coY2hpbGRyZW4pIH1cbiAgICogb3IganVzdCA9PiBjb25zdCBjaGlsZHJlbnM6IEVudGl0eVtdID0gQXJyYXkuZnJvbShnZXRDaGlsZHJlbihwYXJlbnQpKVxuICAgKi9cbiAgZnVuY3Rpb24qIGdldENoaWxkcmVuKHBhcmVudDogRW50aXR5KTogSXRlcmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKHBhcmVudClcbiAgICBpZiAobmV0d29yaykge1xuICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBwYXJlbnRdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya1BhcmVudCkpIHtcbiAgICAgICAgaWYgKHBhcmVudC5lbnRpdHlJZCA9PT0gbmV0d29yay5lbnRpdHlJZCAmJiBwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCkge1xuICAgICAgICAgIHlpZWxkIGVudGl0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZChlbnRpdHk6IEVudGl0eSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGdldENoaWxkcmVuKGVudGl0eSkpWzBdXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyZW50IGVudGl0eSBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UGFyZW50KGNoaWxkOiBFbnRpdHkpOiBFbnRpdHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmVudCA9IE5ldHdvcmtQYXJlbnQuZ2V0T3JOdWxsKGNoaWxkKVxuICAgIGlmICghcGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICBpZiAocGFyZW50Lm5ldHdvcmtJZCA9PT0gbmV0d29yay5uZXR3b3JrSWQgJiYgcGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkKSB7XG4gICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIHRvIHN5bmMgZW50aXRpZXMuXG4gICAqIEVxdWl2YWxlbnQgdG8gVHJhbnNmb3JtLnBhcmVudCBmb3IgbG9jYWwgZW50aXRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIHBhcmVudEVudGl0eShlbnRpdHk6IEVudGl0eSwgcGFyZW50OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMuIENhbGwgc3luY0VudGl0eSBvbiB0aGUgcGFyZW50LicpXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldHdvcmsgcGFyZW50IGNvbXBvbmVudFxuICAgIE5ldHdvcmtQYXJlbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgbmV0d29yaylcblxuICAgIC8vIElmIHdlIGRvbnQgaGF2ZSBhIHRyYW5zZm9ybSBmb3IgdGhpcyBlbnRpdHksIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdG8gc2VuZCBpdCB0byB0aGUgcmVuZGVyZXJcbiAgICBpZiAoIVRyYW5zZm9ybS5nZXRPck51bGwoZW50aXR5KSkge1xuICAgICAgVHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGZvcmNlIHRvIHNlbmQgYSB0aWNrIHVwZGF0ZSBvZiB0aGUgdHJhbnNmb3JtIHNvIHdlIGNhbiBzZW5kIHRoZSBORVcgcGFyZW50IHRvIHRoZSByZW5kZXJlclxuICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBuZXR3b3JrIHBhcmVudGluZyBmcm9tIGFuIGVudGl0eVxuICAgKi9cbiAgZnVuY3Rpb24gcmVtb3ZlUGFyZW50KGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKGVudGl0eSlcblxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMnKVxuICAgIH1cblxuICAgIE5ldHdvcmtQYXJlbnQuZGVsZXRlRnJvbShlbnRpdHkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN5bmNFbnRpdHksXG4gICAgZ2V0Q2hpbGRyZW4sXG4gICAgZ2V0UGFyZW50LFxuICAgIHBhcmVudEVudGl0eSxcbiAgICByZW1vdmVQYXJlbnQsXG4gICAgZ2V0Rmlyc3RDaGlsZFxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import { TransportMessage, IEngine } from '@dcl/ecs';
2
+ export declare function syncFilter(engine: IEngine): (message: Omit<TransportMessage, 'messageBuffer'>) => boolean;
@@ -0,0 +1,37 @@
1
+ import { PointerEventsResult, GltfContainerLoadingState, EntityUtils, RESERVED_STATIC_ENTITIES, CrdtMessageType, SyncComponents as _SyncComponents, NetworkEntity as _NetworkEntity, NetworkParent as _NetworkParent } from '@dcl/ecs';
2
+ export function syncFilter(engine) {
3
+ const NetworkEntity = engine.getComponent(_NetworkEntity.componentId);
4
+ const SyncComponents = engine.getComponent(_SyncComponents.componentId);
5
+ return function (message) {
6
+ const componentId = message.componentId;
7
+ if ([PointerEventsResult.componentId, GltfContainerLoadingState.componentId].includes(componentId)) {
8
+ return false;
9
+ }
10
+ const [entityId] = EntityUtils.fromEntityId(message.entityId);
11
+ if (entityId < RESERVED_STATIC_ENTITIES) {
12
+ return false;
13
+ }
14
+ const network = NetworkEntity.getOrNull(message.entityId);
15
+ if (message.type === CrdtMessageType.DELETE_ENTITY_NETWORK ||
16
+ (network && message.type === CrdtMessageType.DELETE_ENTITY)) {
17
+ return true;
18
+ }
19
+ const sync = SyncComponents.getOrNull(message.entityId);
20
+ if (!sync)
21
+ return false;
22
+ if (message.timestamp <= 1) {
23
+ return true;
24
+ }
25
+ if (componentId === NetworkEntity.componentId) {
26
+ return false;
27
+ }
28
+ if (componentId === _NetworkParent.componentId || componentId === SyncComponents.componentId) {
29
+ return true;
30
+ }
31
+ if (componentId && sync.componentIds.includes(componentId)) {
32
+ return true;
33
+ }
34
+ return false;
35
+ };
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldHdvcmsvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGNBQWMsSUFBSSxlQUFlLEVBQ2pDLGFBQWEsSUFBSSxjQUFjLEVBQy9CLGFBQWEsSUFBSSxjQUFjLEVBRWhDLE1BQU0sVUFBVSxDQUFBO0FBRWpCLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBZTtJQUN4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQTBCLENBQUE7SUFDOUYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUEyQixDQUFBO0lBRWpHLE9BQU8sVUFBVSxPQUFnRDtRQUMvRCxNQUFNLFdBQVcsR0FBSSxPQUFlLENBQUMsV0FBVyxDQUFBO1FBRWhELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xHLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFHN0QsSUFBSSxRQUFRLEdBQUcsd0JBQXdCLEVBQUU7WUFDdkMsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUVELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXpELElBQ0UsT0FBTyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMscUJBQXFCO1lBQ3RELENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUMzRDtZQUNBLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFBO1FBR3ZCLElBQUssT0FBZSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksV0FBVyxLQUFLLGFBQWEsQ0FBQyxXQUFXLEVBQUU7WUFDN0MsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUdELElBQUksV0FBVyxLQUFLLGNBQWMsQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLGNBQWMsQ0FBQyxXQUFXLEVBQUU7WUFDNUYsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc3BvcnRNZXNzYWdlLFxuICBQb2ludGVyRXZlbnRzUmVzdWx0LFxuICBHbHRmQ29udGFpbmVyTG9hZGluZ1N0YXRlLFxuICBFbnRpdHlVdGlscyxcbiAgUkVTRVJWRURfU1RBVElDX0VOVElUSUVTLFxuICBDcmR0TWVzc2FnZVR5cGUsXG4gIFN5bmNDb21wb25lbnRzIGFzIF9TeW5jQ29tcG9uZW50cyxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgTmV0d29ya1BhcmVudCBhcyBfTmV0d29ya1BhcmVudCxcbiAgSUVuZ2luZVxufSBmcm9tICdAZGNsL2VjcydcblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNGaWx0ZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyB0eXBlb2YgX05ldHdvcmtFbnRpdHlcbiAgY29uc3QgU3luY0NvbXBvbmVudHMgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9TeW5jQ29tcG9uZW50cy5jb21wb25lbnRJZCkgYXMgdHlwZW9mIF9TeW5jQ29tcG9uZW50c1xuXG4gIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZTogT21pdDxUcmFuc3BvcnRNZXNzYWdlLCAnbWVzc2FnZUJ1ZmZlcic+KSB7XG4gICAgY29uc3QgY29tcG9uZW50SWQgPSAobWVzc2FnZSBhcyBhbnkpLmNvbXBvbmVudElkXG5cbiAgICBpZiAoW1BvaW50ZXJFdmVudHNSZXN1bHQuY29tcG9uZW50SWQsIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUuY29tcG9uZW50SWRdLmluY2x1ZGVzKGNvbXBvbmVudElkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgW2VudGl0eUlkXSA9IEVudGl0eVV0aWxzLmZyb21FbnRpdHlJZChtZXNzYWdlLmVudGl0eUlkKVxuXG4gICAgLy8gZmlsdGVyIG1lc3NhZ2VzIGZyb20gcmVzZXJ2ZWQgZW50aXRpZXMuXG4gICAgaWYgKGVudGl0eUlkIDwgUkVTRVJWRURfU1RBVElDX0VOVElUSUVTKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwobWVzc2FnZS5lbnRpdHlJZClcbiAgICAvLyBEZWxldGUgTmV0d29yayBFbnRpdHkgQWx3YXlzXG4gICAgaWYgKFxuICAgICAgbWVzc2FnZS50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuREVMRVRFX0VOVElUWV9ORVRXT1JLIHx8XG4gICAgICAobmV0d29yayAmJiBtZXNzYWdlLnR5cGUgPT09IENyZHRNZXNzYWdlVHlwZS5ERUxFVEVfRU5USVRZKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBzeW5jID0gU3luY0NvbXBvbmVudHMuZ2V0T3JOdWxsKG1lc3NhZ2UuZW50aXR5SWQpXG4gICAgaWYgKCFzeW5jKSByZXR1cm4gZmFsc2VcblxuICAgIC8vIEZpcnN0IGNvbXBvbmVudFxuICAgIGlmICgobWVzc2FnZSBhcyBhbnkpLnRpbWVzdGFtcCA8PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChjb21wb25lbnRJZCA9PT0gTmV0d29ya0VudGl0eS5jb21wb25lbnRJZCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgcGFyZW50IG9yIHN5bmNDb21wb25lbnRzIHdlIHNob3VsZCBhbHdheXMgc3luY1xuICAgIGlmIChjb21wb25lbnRJZCA9PT0gX05ldHdvcmtQYXJlbnQuY29tcG9uZW50SWQgfHwgY29tcG9uZW50SWQgPT09IFN5bmNDb21wb25lbnRzLmNvbXBvbmVudElkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChjb21wb25lbnRJZCAmJiBzeW5jLmNvbXBvbmVudElkcy5pbmNsdWRlcyhjb21wb25lbnRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
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;
2
+ export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent };
@@ -0,0 +1,7 @@
1
+ import { sendBinary } from '~system/CommunicationsController';
2
+ import { engine } from '@dcl/ecs';
3
+ import { addSyncTransport } from './message-bus-sync';
4
+ import { getUserData } from '~system/UserIdentity';
5
+ const { getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent, getFirstChild } = addSyncTransport(engine, sendBinary, getUserData);
6
+ export { getFirstChild, getChildren, syncEntity, parentEntity, getParent, myProfile, removeParent };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHbEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLGdCQUFnQixDQUNuSCxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsQ0FDWixDQUFBO0FBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2VuZEJpbmFyeSB9IGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuaW1wb3J0IHsgZW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBhZGRTeW5jVHJhbnNwb3J0IH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuaW1wb3J0IHsgZ2V0VXNlckRhdGEgfSBmcm9tICd+c3lzdGVtL1VzZXJJZGVudGl0eSdcblxuLy8gaW5pdGlhbGl6ZSBzeW5jIHRyYW5zcG9ydCBmb3Igc2RrIGVuZ2luZVxuY29uc3QgeyBnZXRDaGlsZHJlbiwgc3luY0VudGl0eSwgcGFyZW50RW50aXR5LCBnZXRQYXJlbnQsIG15UHJvZmlsZSwgcmVtb3ZlUGFyZW50LCBnZXRGaXJzdENoaWxkIH0gPSBhZGRTeW5jVHJhbnNwb3J0KFxuICBlbmdpbmUsXG4gIHNlbmRCaW5hcnksXG4gIGdldFVzZXJEYXRhXG4pXG5cbmV4cG9ydCB7IGdldEZpcnN0Q2hpbGQsIGdldENoaWxkcmVuLCBzeW5jRW50aXR5LCBwYXJlbnRFbnRpdHksIGdldFBhcmVudCwgbXlQcm9maWxlLCByZW1vdmVQYXJlbnQgfVxuIl19
@@ -0,0 +1,17 @@
1
+ /// <reference types="@dcl/js-runtime" />
2
+ import { IEngine } from '@dcl/ecs';
3
+ import type { SendBinaryRequest, SendBinaryResponse } from '~system/CommunicationsController';
4
+ import { GetUserDataRequest, GetUserDataResponse } from '~system/UserIdentity';
5
+ export type IProfile = {
6
+ networkId: number;
7
+ userId: string;
8
+ };
9
+ export declare function addSyncTransport(engine: IEngine, sendBinary: (msg: SendBinaryRequest) => Promise<SendBinaryResponse>, getUserData: (value: GetUserDataRequest) => Promise<GetUserDataResponse>): {
10
+ myProfile: IProfile;
11
+ syncEntity: (entityId: import("@dcl/ecs").Entity, componentIds: number[], entityEnumId?: number | undefined) => void;
12
+ getChildren: (parent: import("@dcl/ecs").Entity) => Iterable<import("@dcl/ecs").Entity>;
13
+ getParent: (child: import("@dcl/ecs").Entity) => import("@dcl/ecs").Entity | undefined;
14
+ parentEntity: (entity: import("@dcl/ecs").Entity, parent: import("@dcl/ecs").Entity) => void;
15
+ removeParent: (entity: import("@dcl/ecs").Entity) => void;
16
+ getFirstChild: (entity: import("@dcl/ecs").Entity) => import("@dcl/ecs").Entity;
17
+ };
@@ -0,0 +1,52 @@
1
+ import { syncFilter } from './filter';
2
+ import { engineToCrdt } from './state';
3
+ import { BinaryMessageBus, CommsMessage } from './binary-message-bus';
4
+ import { definePlayersInScene, fetchProfile, setInitialized, stateInitialized, stateInitializedChecker, syncTransportIsReady } from './utils';
5
+ import { entityUtils } from './entities';
6
+ export function addSyncTransport(engine, sendBinary, getUserData) {
7
+ definePlayersInScene(engine);
8
+ const myProfile = {};
9
+ fetchProfile(myProfile, getUserData);
10
+ const entityDefinitions = entityUtils(engine, myProfile);
11
+ const pendingMessageBusMessagesToSend = [];
12
+ const binaryMessageBus = BinaryMessageBus((message) => pendingMessageBusMessagesToSend.push(message));
13
+ function getMessagesToSend() {
14
+ const messages = [...pendingMessageBusMessagesToSend];
15
+ pendingMessageBusMessagesToSend.length = 0;
16
+ return messages;
17
+ }
18
+ const transport = {
19
+ filter: syncFilter(engine),
20
+ send: async (message) => {
21
+ if (syncTransportIsReady(engine) && message.byteLength) {
22
+ binaryMessageBus.emit(CommsMessage.CRDT, message);
23
+ }
24
+ const messages = getMessagesToSend();
25
+ const response = await sendBinary({ data: messages });
26
+ binaryMessageBus.__processMessages(response.data);
27
+ },
28
+ type: 'network'
29
+ };
30
+ engine.addTransport(transport);
31
+ engine.addSystem(() => stateInitializedChecker(engine, myProfile, entityDefinitions.syncEntity));
32
+ binaryMessageBus.emit(CommsMessage.REQ_CRDT_STATE, new Uint8Array());
33
+ binaryMessageBus.on(CommsMessage.RES_CRDT_STATE, (value) => {
34
+ if (!stateInitialized) {
35
+ setInitialized();
36
+ transport.onmessage(value);
37
+ }
38
+ });
39
+ binaryMessageBus.on(CommsMessage.REQ_CRDT_STATE, () => {
40
+ if (stateInitialized) {
41
+ binaryMessageBus.emit(CommsMessage.RES_CRDT_STATE, engineToCrdt(engine));
42
+ }
43
+ });
44
+ binaryMessageBus.on(CommsMessage.CRDT, (value) => {
45
+ transport.onmessage(value);
46
+ });
47
+ return {
48
+ ...entityDefinitions,
49
+ myProfile
50
+ };
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXR3b3JrL21lc3NhZ2UtYnVzLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDckIsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUt4QyxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQWUsRUFDZixVQUFtRSxFQUNuRSxXQUF3RTtJQUV4RSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUU1QixNQUFNLFNBQVMsR0FBYSxFQUFjLENBQUE7SUFDMUMsWUFBWSxDQUFDLFNBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUdyQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFHeEQsTUFBTSwrQkFBK0IsR0FBaUIsRUFBRSxDQUFBO0lBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3JHLFNBQVMsaUJBQWlCO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxDQUFBO1FBQ3JELCtCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDMUMsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUdELE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBbUIsRUFBRSxFQUFFO1lBQ2xDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFFdEQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7YUFDbEQ7WUFDRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDckQsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUk5QixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUdoRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFHcEUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUV6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDckIsY0FBYyxFQUFFLENBQUE7WUFDaEIsU0FBUyxDQUFDLFNBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUM1QjtJQUNILENBQUMsQ0FBQyxDQUFBO0lBR0YsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1FBSXBELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7U0FDekU7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUdGLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFHL0MsU0FBUyxDQUFDLFNBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU87UUFDTCxHQUFHLGlCQUFpQjtRQUNwQixTQUFTO0tBQ1YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lLCBUcmFuc3BvcnQgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB0eXBlIHsgU2VuZEJpbmFyeVJlcXVlc3QsIFNlbmRCaW5hcnlSZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuXG5pbXBvcnQgeyBzeW5jRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInXG5pbXBvcnQgeyBlbmdpbmVUb0NyZHQgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgc2VyaWFsaXplQ3JkdE1lc3NhZ2VzIH0gZnJvbSAnLi4vaW50ZXJuYWwvdHJhbnNwb3J0cy9sb2dnZXInXG5pbXBvcnQgeyBCaW5hcnlNZXNzYWdlQnVzLCBDb21tc01lc3NhZ2UgfSBmcm9tICcuL2JpbmFyeS1tZXNzYWdlLWJ1cydcbmltcG9ydCB7XG4gIGRlZmluZVBsYXllcnNJblNjZW5lLFxuICBmZXRjaFByb2ZpbGUsXG4gIG9sZGVzdFVzZXIgYXMgX29sZGVzdFVzZXIsXG4gIHNldEluaXRpYWxpemVkLFxuICBzdGF0ZUluaXRpYWxpemVkLFxuICBzdGF0ZUluaXRpYWxpemVkQ2hlY2tlcixcbiAgc3luY1RyYW5zcG9ydElzUmVhZHlcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IGVudGl0eVV0aWxzIH0gZnJvbSAnLi9lbnRpdGllcydcbmltcG9ydCB7IEdldFVzZXJEYXRhUmVxdWVzdCwgR2V0VXNlckRhdGFSZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vVXNlcklkZW50aXR5J1xuXG5leHBvcnQgdHlwZSBJUHJvZmlsZSA9IHsgbmV0d29ya0lkOiBudW1iZXI7IHVzZXJJZDogc3RyaW5nIH1cbi8vIHVzZXIgdGhhdCB3ZSBhc2tlZCBmb3IgdGhlIGluaXRhbCBjcmR0IHN0YXRlXG5leHBvcnQgZnVuY3Rpb24gYWRkU3luY1RyYW5zcG9ydChcbiAgZW5naW5lOiBJRW5naW5lLFxuICBzZW5kQmluYXJ5OiAobXNnOiBTZW5kQmluYXJ5UmVxdWVzdCkgPT4gUHJvbWlzZTxTZW5kQmluYXJ5UmVzcG9uc2U+LFxuICBnZXRVc2VyRGF0YTogKHZhbHVlOiBHZXRVc2VyRGF0YVJlcXVlc3QpID0+IFByb21pc2U8R2V0VXNlckRhdGFSZXNwb25zZT5cbikge1xuICBkZWZpbmVQbGF5ZXJzSW5TY2VuZShlbmdpbmUpXG4gIC8vIFByb2ZpbGUgSW5mb1xuICBjb25zdCBteVByb2ZpbGU6IElQcm9maWxlID0ge30gYXMgSVByb2ZpbGVcbiAgZmV0Y2hQcm9maWxlKG15UHJvZmlsZSEsIGdldFVzZXJEYXRhKVxuXG4gIC8vIEVudGl0eSB1dGlsc1xuICBjb25zdCBlbnRpdHlEZWZpbml0aW9ucyA9IGVudGl0eVV0aWxzKGVuZ2luZSwgbXlQcm9maWxlKVxuXG4gIC8vIExpc3Qgb2YgTWVzc2FnZUJ1c3MgbWVzc3NhZ2VzIHRvIGJlIHNlbnQgb24gZXZlcnkgZnJhbWUgdG8gY29tbXNcbiAgY29uc3QgcGVuZGluZ01lc3NhZ2VCdXNNZXNzYWdlc1RvU2VuZDogVWludDhBcnJheVtdID0gW11cbiAgY29uc3QgYmluYXJ5TWVzc2FnZUJ1cyA9IEJpbmFyeU1lc3NhZ2VCdXMoKG1lc3NhZ2UpID0+IHBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmQucHVzaChtZXNzYWdlKSlcbiAgZnVuY3Rpb24gZ2V0TWVzc2FnZXNUb1NlbmQoKSB7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBbLi4ucGVuZGluZ01lc3NhZ2VCdXNNZXNzYWdlc1RvU2VuZF1cbiAgICBwZW5kaW5nTWVzc2FnZUJ1c01lc3NhZ2VzVG9TZW5kLmxlbmd0aCA9IDBcbiAgICByZXR1cm4gbWVzc2FnZXNcbiAgfVxuXG4gIC8vIEFkZCBTeW5jIFRyYW5zcG9ydFxuICBjb25zdCB0cmFuc3BvcnQ6IFRyYW5zcG9ydCA9IHtcbiAgICBmaWx0ZXI6IHN5bmNGaWx0ZXIoZW5naW5lKSxcbiAgICBzZW5kOiBhc3luYyAobWVzc2FnZTogVWludDhBcnJheSkgPT4ge1xuICAgICAgaWYgKHN5bmNUcmFuc3BvcnRJc1JlYWR5KGVuZ2luZSkgJiYgbWVzc2FnZS5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKEFycmF5LmZyb20oc2VyaWFsaXplQ3JkdE1lc3NhZ2VzKCdbc2VuZCBDUkRUXTogJywgbWVzc2FnZSwgZW5naW5lKSkpXG4gICAgICAgIGJpbmFyeU1lc3NhZ2VCdXMuZW1pdChDb21tc01lc3NhZ2UuQ1JEVCwgbWVzc2FnZSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gZ2V0TWVzc2FnZXNUb1NlbmQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZW5kQmluYXJ5KHsgZGF0YTogbWVzc2FnZXMgfSlcbiAgICAgIGJpbmFyeU1lc3NhZ2VCdXMuX19wcm9jZXNzTWVzc2FnZXMocmVzcG9uc2UuZGF0YSlcbiAgICB9LFxuICAgIHR5cGU6ICduZXR3b3JrJ1xuICB9XG4gIGVuZ2luZS5hZGRUcmFuc3BvcnQodHJhbnNwb3J0KVxuICAvLyBFbmQgYWRkIHN5bmMgdHJhbnNwb3J0XG5cbiAgLy8gQWRkIHN0YXRlIGludGlhbGl6ZWQgY2hlY2tlclxuICBlbmdpbmUuYWRkU3lzdGVtKCgpID0+IHN0YXRlSW5pdGlhbGl6ZWRDaGVja2VyKGVuZ2luZSwgbXlQcm9maWxlLCBlbnRpdHlEZWZpbml0aW9ucy5zeW5jRW50aXR5KSlcblxuICAvLyBSZXF1ZXN0IGluaXRpYWwgc3RhdGVcbiAgYmluYXJ5TWVzc2FnZUJ1cy5lbWl0KENvbW1zTWVzc2FnZS5SRVFfQ1JEVF9TVEFURSwgbmV3IFVpbnQ4QXJyYXkoKSlcblxuICAvLyBJZiB3ZSBkb250IGhhdmUgYW55IHN0YXRlIGluaXRpYWxpemVkLCBhbmQgcmVjaWV2ZSBhIHN0YXRlIG1lc3NhZ2UuXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLlJFU19DUkRUX1NUQVRFLCAodmFsdWUpID0+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhBcnJheS5mcm9tKHNlcmlhbGl6ZUNyZHRNZXNzYWdlcygnW2JpbmFyeU1lc3NhZ2VCdXNdOiAnLCB2YWx1ZSwgZW5naW5lKSkpXG4gICAgaWYgKCFzdGF0ZUluaXRpYWxpemVkKSB7XG4gICAgICBzZXRJbml0aWFsaXplZCgpXG4gICAgICB0cmFuc3BvcnQub25tZXNzYWdlISh2YWx1ZSlcbiAgICB9XG4gIH0pXG5cbiAgLy8gSWYgd2UgYXJlIHRoZSBvbGRlc3QgdXNlciBhbmQgd2UgcmVjaWV2ZSBhIHJlcSBvZiBhIHN0YXRlIHdlIHNlbmQgaXQuXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLlJFUV9DUkRUX1NUQVRFLCAoKSA9PiB7XG4gICAgLy8gVE9ETzogb2xkZXN0IG5vdCB3b3JraW5nIGJlY2F1c2UgY29ubmVjdGVkUGxheWVycyByZXR1cm5zIHBsYXllcnMgdGhhdCBhcmUgbm90IGluIHRoZSBzY2VuZS5cbiAgICAvLyBOb3Qgd29ya2luZyA6c2FkY2F0OlxuICAgIC8vIGNvbnN0IG9sZGVzdCA9IG9sZGVzdFVzZXIoZW5naW5lLCBteVByb2ZpbGUsIGVudGl0eURlZmluaXRpb25zLnN5bmNFbnRpdHkpXG4gICAgaWYgKHN0YXRlSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGJpbmFyeU1lc3NhZ2VCdXMuZW1pdChDb21tc01lc3NhZ2UuUkVTX0NSRFRfU1RBVEUsIGVuZ2luZVRvQ3JkdChlbmdpbmUpKVxuICAgIH1cbiAgfSlcblxuICAvLyBQcm9jZXNzIENSRFQgbWVzc2FnZXMgaGVyZVxuICBiaW5hcnlNZXNzYWdlQnVzLm9uKENvbW1zTWVzc2FnZS5DUkRULCAodmFsdWUpID0+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhBcnJheS5mcm9tKHNlcmlhbGl6ZUNyZHRNZXNzYWdlcygnW0NSRFQgb25dOiAnLCB2YWx1ZSwgZW5naW5lKSkpXG5cbiAgICB0cmFuc3BvcnQub25tZXNzYWdlISh2YWx1ZSlcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIC4uLmVudGl0eURlZmluaXRpb25zLFxuICAgIG15UHJvZmlsZVxuICB9XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { ReadWriteByteBuffer } from '@dcl/ecs/dist/serialization/ByteBuffer';
2
+ import { CrdtMessageProtocol, CrdtMessageType, PutComponentOperation, PutNetworkComponentOperation, SyncComponents as _SyncComponents, NetworkEntity as _NetworkEntity } from '@dcl/ecs';
3
+ export function engineToCrdt(engine) {
4
+ const crdtBuffer = new ReadWriteByteBuffer();
5
+ const networkBuffer = new ReadWriteByteBuffer();
6
+ const SyncComponents = engine.getComponent(_SyncComponents.componentId);
7
+ const NetworkEntity = engine.getComponent(_NetworkEntity.componentId);
8
+ for (const itComponentDefinition of engine.componentsIter()) {
9
+ itComponentDefinition.dumpCrdtStateToBuffer(crdtBuffer, (entity) => {
10
+ const isNetworkEntity = NetworkEntity.has(entity);
11
+ if (!isNetworkEntity) {
12
+ return false;
13
+ }
14
+ const isDynamicEntity = NetworkEntity.get(entity).networkId;
15
+ if (isDynamicEntity) {
16
+ return true;
17
+ }
18
+ return SyncComponents.get(entity).componentIds.includes(itComponentDefinition.componentId);
19
+ });
20
+ }
21
+ let header;
22
+ while ((header = CrdtMessageProtocol.getHeader(crdtBuffer))) {
23
+ if (header.type === CrdtMessageType.PUT_COMPONENT) {
24
+ const message = PutComponentOperation.read(crdtBuffer);
25
+ const networkEntity = NetworkEntity.getOrNull(message.entityId);
26
+ if (networkEntity) {
27
+ PutNetworkComponentOperation.write(networkEntity.entityId, message.timestamp, message.componentId, networkEntity.networkId, message.data, networkBuffer);
28
+ }
29
+ else {
30
+ PutComponentOperation.write(message.entityId, message.timestamp, message.componentId, message.data, networkBuffer);
31
+ }
32
+ }
33
+ else {
34
+ crdtBuffer.incrementReadOffset(header.length);
35
+ }
36
+ }
37
+ return networkBuffer.toBinary();
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLGVBQWUsRUFFZixxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLGNBQWMsSUFBSSxlQUFlLEVBQ2pDLGFBQWEsSUFBSSxjQUFjLEVBR2hDLE1BQU0sVUFBVSxDQUFBO0FBRWpCLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUE7SUFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUMxRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFFdkYsS0FBSyxNQUFNLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRTtRQUMzRCxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqRSxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BCLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFDRCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQTtZQUMzRCxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUE7YUFDWjtZQUVELE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzVGLENBQUMsQ0FBQyxDQUFBO0tBQ0g7SUFFRCxJQUFJLE1BQWdDLENBQUE7SUFDcEMsT0FBTyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtRQUMzRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUNqRCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUE7WUFDdkQsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0QsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLDRCQUE0QixDQUFDLEtBQUssQ0FDaEMsYUFBYSxDQUFDLFFBQVEsRUFDdEIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsYUFBYSxDQUFDLFNBQVMsRUFDdkIsT0FBTyxDQUFDLElBQUksRUFDWixhQUFhLENBQ2QsQ0FBQTthQUNGO2lCQUFNO2dCQUNMLHFCQUFxQixDQUFDLEtBQUssQ0FDekIsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLElBQUksRUFDWixhQUFhLENBQ2QsQ0FBQTthQUNGO1NBQ0Y7YUFBTTtZQUNMLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDOUM7S0FDRjtJQUVELE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFkV3JpdGVCeXRlQnVmZmVyIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQge1xuICBDcmR0TWVzc2FnZUhlYWRlcixcbiAgQ3JkdE1lc3NhZ2VQcm90b2NvbCxcbiAgQ3JkdE1lc3NhZ2VUeXBlLFxuICBJRW5naW5lLFxuICBQdXRDb21wb25lbnRPcGVyYXRpb24sXG4gIFB1dE5ldHdvcmtDb21wb25lbnRPcGVyYXRpb24sXG4gIFN5bmNDb21wb25lbnRzIGFzIF9TeW5jQ29tcG9uZW50cyxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgSVN5bmNDb21wb25lbnRzLFxuICBJTmV0b3dya0VudGl0eVxufSBmcm9tICdAZGNsL2VjcydcblxuZXhwb3J0IGZ1bmN0aW9uIGVuZ2luZVRvQ3JkdChlbmdpbmU6IElFbmdpbmUpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgY3JkdEJ1ZmZlciA9IG5ldyBSZWFkV3JpdGVCeXRlQnVmZmVyKClcbiAgY29uc3QgbmV0d29ya0J1ZmZlciA9IG5ldyBSZWFkV3JpdGVCeXRlQnVmZmVyKClcbiAgY29uc3QgU3luY0NvbXBvbmVudHMgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9TeW5jQ29tcG9uZW50cy5jb21wb25lbnRJZCkgYXMgSVN5bmNDb21wb25lbnRzXG4gIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuXG4gIGZvciAoY29uc3QgaXRDb21wb25lbnREZWZpbml0aW9uIG9mIGVuZ2luZS5jb21wb25lbnRzSXRlcigpKSB7XG4gICAgaXRDb21wb25lbnREZWZpbml0aW9uLmR1bXBDcmR0U3RhdGVUb0J1ZmZlcihjcmR0QnVmZmVyLCAoZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBpc05ldHdvcmtFbnRpdHkgPSBOZXR3b3JrRW50aXR5LmhhcyhlbnRpdHkpXG4gICAgICBpZiAoIWlzTmV0d29ya0VudGl0eSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzRHluYW1pY0VudGl0eSA9IE5ldHdvcmtFbnRpdHkuZ2V0KGVudGl0eSkubmV0d29ya0lkXG4gICAgICBpZiAoaXNEeW5hbWljRW50aXR5KSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICAvLyBGb3IgdGhlIHN0YXRpYyBlbnRpdGllcyB3ZSBvbmx5IHNlbmQgdGhlIHVwZGF0ZXMgb2YgdGhlIFN5bmNDb21wb25lbnRzXG4gICAgICByZXR1cm4gU3luY0NvbXBvbmVudHMuZ2V0KGVudGl0eSkuY29tcG9uZW50SWRzLmluY2x1ZGVzKGl0Q29tcG9uZW50RGVmaW5pdGlvbi5jb21wb25lbnRJZClcbiAgICB9KVxuICB9XG5cbiAgbGV0IGhlYWRlcjogQ3JkdE1lc3NhZ2VIZWFkZXIgfCBudWxsXG4gIHdoaWxlICgoaGVhZGVyID0gQ3JkdE1lc3NhZ2VQcm90b2NvbC5nZXRIZWFkZXIoY3JkdEJ1ZmZlcikpKSB7XG4gICAgaWYgKGhlYWRlci50eXBlID09PSBDcmR0TWVzc2FnZVR5cGUuUFVUX0NPTVBPTkVOVCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IFB1dENvbXBvbmVudE9wZXJhdGlvbi5yZWFkKGNyZHRCdWZmZXIpIVxuICAgICAgY29uc3QgbmV0d29ya0VudGl0eSA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKG1lc3NhZ2UuZW50aXR5SWQpXG4gICAgICBpZiAobmV0d29ya0VudGl0eSkge1xuICAgICAgICBQdXROZXR3b3JrQ29tcG9uZW50T3BlcmF0aW9uLndyaXRlKFxuICAgICAgICAgIG5ldHdvcmtFbnRpdHkuZW50aXR5SWQsXG4gICAgICAgICAgbWVzc2FnZS50aW1lc3RhbXAsXG4gICAgICAgICAgbWVzc2FnZS5jb21wb25lbnRJZCxcbiAgICAgICAgICBuZXR3b3JrRW50aXR5Lm5ldHdvcmtJZCxcbiAgICAgICAgICBtZXNzYWdlLmRhdGEsXG4gICAgICAgICAgbmV0d29ya0J1ZmZlclxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBQdXRDb21wb25lbnRPcGVyYXRpb24ud3JpdGUoXG4gICAgICAgICAgbWVzc2FnZS5lbnRpdHlJZCxcbiAgICAgICAgICBtZXNzYWdlLnRpbWVzdGFtcCxcbiAgICAgICAgICBtZXNzYWdlLmNvbXBvbmVudElkLFxuICAgICAgICAgIG1lc3NhZ2UuZGF0YSxcbiAgICAgICAgICBuZXR3b3JrQnVmZmVyXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY3JkdEJ1ZmZlci5pbmNyZW1lbnRSZWFkT2Zmc2V0KGhlYWRlci5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldHdvcmtCdWZmZXIudG9CaW5hcnkoKVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ /// <reference types="@dcl/js-runtime" />
2
+ import { Entity, IEngine } from '@dcl/ecs';
3
+ import type { GetUserDataRequest, GetUserDataResponse } from '~system/UserIdentity';
4
+ import { SyncEntity } from './entities';
5
+ import { IProfile } from './message-bus-sync';
6
+ export declare const definePlayersInScene: (engine: IEngine) => import("@dcl/ecs").MapComponentDefinition<import("@dcl/ecs").MapResult<{
7
+ timestamp: import("@dcl/ecs").ISchema<number>;
8
+ userId: import("@dcl/ecs").ISchema<string>;
9
+ }>>;
10
+ export declare let stateInitialized: boolean;
11
+ export declare let playerSceneEntity: Entity;
12
+ export declare function setInitialized(): void;
13
+ export declare let INITIAL_CRDT_RENDERER_MESSAGES_SENT: boolean;
14
+ export declare function fetchProfile(myProfile: IProfile, getUserData: (value: GetUserDataRequest) => Promise<GetUserDataResponse>): void;
15
+ export declare function createPlayerTimestampData(engine: IEngine, profile: IProfile, syncEntity: SyncEntity): Entity | undefined;
16
+ export declare function oldestUser(engine: IEngine, profile: IProfile, syncEntity: SyncEntity): boolean;
17
+ export declare function syncTransportIsReady(engine: IEngine): boolean;
18
+ export declare function stateInitializedChecker(engine: IEngine, _profile: IProfile, _syncEntity: SyncEntity): void;