@dcl/sdk 7.20.2-22169778016.commit-030cbfe → 7.20.2-22231111352.commit-d2f6f0a

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 (63) hide show
  1. package/network/binary-message-bus.d.ts +3 -6
  2. package/network/binary-message-bus.js +5 -9
  3. package/network/index.d.ts +2 -8
  4. package/network/index.js +3 -16
  5. package/network/message-bus-sync.d.ts +1 -14
  6. package/network/message-bus-sync.js +103 -166
  7. package/network/state.js +5 -3
  8. package/package.json +6 -6
  9. package/src/network/binary-message-bus.ts +4 -9
  10. package/src/network/index.ts +3 -40
  11. package/src/network/message-bus-sync.ts +110 -180
  12. package/src/network/state.ts +4 -3
  13. package/atom.d.ts +0 -19
  14. package/atom.js +0 -83
  15. package/future.d.ts +0 -8
  16. package/future.js +0 -26
  17. package/network/chunking.d.ts +0 -5
  18. package/network/chunking.js +0 -38
  19. package/network/events/implementation.d.ts +0 -93
  20. package/network/events/implementation.js +0 -230
  21. package/network/events/index.d.ts +0 -42
  22. package/network/events/index.js +0 -43
  23. package/network/events/protocol.d.ts +0 -27
  24. package/network/events/protocol.js +0 -66
  25. package/network/events/registry.d.ts +0 -8
  26. package/network/events/registry.js +0 -3
  27. package/network/server/index.d.ts +0 -14
  28. package/network/server/index.js +0 -219
  29. package/network/server/utils.d.ts +0 -18
  30. package/network/server/utils.js +0 -135
  31. package/server/env-var.d.ts +0 -15
  32. package/server/env-var.js +0 -31
  33. package/server/index.d.ts +0 -2
  34. package/server/index.js +0 -3
  35. package/server/storage/constants.d.ts +0 -23
  36. package/server/storage/constants.js +0 -2
  37. package/server/storage/index.d.ts +0 -22
  38. package/server/storage/index.js +0 -29
  39. package/server/storage/player.d.ts +0 -43
  40. package/server/storage/player.js +0 -92
  41. package/server/storage/scene.d.ts +0 -38
  42. package/server/storage/scene.js +0 -90
  43. package/server/storage-url.d.ts +0 -10
  44. package/server/storage-url.js +0 -29
  45. package/server/utils.d.ts +0 -35
  46. package/server/utils.js +0 -56
  47. package/src/atom.ts +0 -98
  48. package/src/future.ts +0 -38
  49. package/src/network/chunking.ts +0 -45
  50. package/src/network/events/implementation.ts +0 -286
  51. package/src/network/events/index.ts +0 -48
  52. package/src/network/events/protocol.ts +0 -94
  53. package/src/network/events/registry.ts +0 -18
  54. package/src/network/server/index.ts +0 -301
  55. package/src/network/server/utils.ts +0 -189
  56. package/src/server/env-var.ts +0 -36
  57. package/src/server/index.ts +0 -2
  58. package/src/server/storage/constants.ts +0 -22
  59. package/src/server/storage/index.ts +0 -44
  60. package/src/server/storage/player.ts +0 -156
  61. package/src/server/storage/scene.ts +0 -149
  62. package/src/server/storage-url.ts +0 -34
  63. package/src/server/utils.ts +0 -73
package/atom.js DELETED
@@ -1,83 +0,0 @@
1
- import future from './future';
2
- // atom value wrapper like in clojure
3
- // Simple Observable implementation to replace Babylon.js dependency
4
- class SimpleObservable {
5
- constructor() {
6
- this.observers = [];
7
- this.onceObservers = [];
8
- }
9
- add(callback) {
10
- this.observers.push(callback);
11
- return callback;
12
- }
13
- addOnce(callback) {
14
- this.onceObservers.push(callback);
15
- }
16
- remove(callback) {
17
- const index = this.observers.indexOf(callback);
18
- if (index > -1) {
19
- this.observers.splice(index, 1);
20
- }
21
- }
22
- notifyObservers(value) {
23
- this.observers.forEach((observer) => observer(value));
24
- if (this.onceObservers.length > 0) {
25
- this.onceObservers.forEach((observer) => observer(value));
26
- this.onceObservers.length = 0;
27
- }
28
- }
29
- }
30
- const EMPTY = Symbol('empty');
31
- export function Atom(initialValue = EMPTY) {
32
- const observable = new SimpleObservable();
33
- let value = initialValue;
34
- const valueFutures = [];
35
- observable.addOnce((value) => {
36
- valueFutures.forEach(($) => $.resolve(value));
37
- valueFutures.length = 0;
38
- });
39
- return {
40
- async pipe(fn) {
41
- observable.add(async (t) => {
42
- try {
43
- await fn(t);
44
- }
45
- catch (err) {
46
- console.error(err);
47
- }
48
- });
49
- if (value !== EMPTY) {
50
- try {
51
- await fn(value);
52
- }
53
- catch (err) {
54
- console.error(err);
55
- }
56
- }
57
- },
58
- deref() {
59
- if (value === EMPTY) {
60
- const ret = future();
61
- valueFutures.push(ret);
62
- return ret;
63
- }
64
- return Promise.resolve(value);
65
- },
66
- getOrNull() {
67
- if (value === EMPTY) {
68
- return null;
69
- }
70
- return value;
71
- },
72
- observable,
73
- swap(newValue) {
74
- const oldValue = value;
75
- if (newValue !== value) {
76
- value = newValue;
77
- observable.notifyObservers(value);
78
- }
79
- return oldValue === EMPTY ? undefined : oldValue;
80
- }
81
- };
82
- }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9hdG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBbUIsTUFBTSxVQUFVLENBQUE7QUFFMUMscUNBQXFDO0FBRXJDLG9FQUFvRTtBQUNwRSxNQUFNLGdCQUFnQjtJQUF0QjtRQUNVLGNBQVMsR0FBMkIsRUFBRSxDQUFBO1FBQ3RDLGtCQUFhLEdBQTJCLEVBQUUsQ0FBQTtJQTBCcEQsQ0FBQztJQXhCQyxHQUFHLENBQUMsUUFBNEI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDN0IsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUE0QjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQTRCO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzlDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFRO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVyRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1NBQzlCO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBVzdCLE1BQU0sVUFBVSxJQUFJLENBQUksZUFBMEIsS0FBSztJQUNyRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixFQUFLLENBQUE7SUFDNUMsSUFBSSxLQUFLLEdBQWMsWUFBWSxDQUFBO0lBQ25DLE1BQU0sWUFBWSxHQUFpQixFQUFFLENBQUE7SUFFckMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUM3QyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU87UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDWCxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekIsSUFBSTtvQkFDRixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtpQkFDWjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUNuQjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO2dCQUNuQixJQUFJO29CQUNGLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO2lCQUNoQjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUNuQjthQUNGO1FBQ0gsQ0FBQztRQUNELEtBQUs7WUFDSCxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBSyxDQUFBO2dCQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN0QixPQUFPLEdBQUcsQ0FBQTthQUNYO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFDRCxTQUFTO1lBQ1AsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQTthQUNaO1lBQ0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQ0QsVUFBVTtRQUNWLElBQUksQ0FBQyxRQUFRO1lBQ1gsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFBO1lBQ3RCLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRTtnQkFDdEIsS0FBSyxHQUFHLFFBQVEsQ0FBQTtnQkFDaEIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUNsQztZQUNELE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFDbEQsQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZ1dHVyZSwgeyBJRnV0dXJlIH0gZnJvbSAnLi9mdXR1cmUnXG5cbi8vIGF0b20gdmFsdWUgd3JhcHBlciBsaWtlIGluIGNsb2p1cmVcblxuLy8gU2ltcGxlIE9ic2VydmFibGUgaW1wbGVtZW50YXRpb24gdG8gcmVwbGFjZSBCYWJ5bG9uLmpzIGRlcGVuZGVuY3lcbmNsYXNzIFNpbXBsZU9ic2VydmFibGU8VD4ge1xuICBwcml2YXRlIG9ic2VydmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXSA9IFtdXG4gIHByaXZhdGUgb25jZU9ic2VydmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXSA9IFtdXG5cbiAgYWRkKGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiAodmFsdWU6IFQpID0+IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2goY2FsbGJhY2spXG4gICAgcmV0dXJuIGNhbGxiYWNrXG4gIH1cblxuICBhZGRPbmNlKGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uY2VPYnNlcnZlcnMucHVzaChjYWxsYmFjaylcbiAgfVxuXG4gIHJlbW92ZShjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9ic2VydmVycy5pbmRleE9mKGNhbGxiYWNrKVxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm9ic2VydmVycy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG5cbiAgbm90aWZ5T2JzZXJ2ZXJzKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlcnMuZm9yRWFjaCgob2JzZXJ2ZXIpID0+IG9ic2VydmVyKHZhbHVlKSlcblxuICAgIGlmICh0aGlzLm9uY2VPYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbmNlT2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlcih2YWx1ZSkpXG4gICAgICB0aGlzLm9uY2VPYnNlcnZlcnMubGVuZ3RoID0gMFxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBFTVBUWSA9IFN5bWJvbCgnZW1wdHknKVxudHlwZSBFTVBUWSA9IHR5cGVvZiBFTVBUWVxuXG5leHBvcnQgdHlwZSBBdG9tPFQ+ID0ge1xuICBkZXJlZigpOiBQcm9taXNlPFQ+XG4gIGdldE9yTnVsbCgpOiBUIHwgbnVsbFxuICBvYnNlcnZhYmxlOiBTaW1wbGVPYnNlcnZhYmxlPFQ+XG4gIHN3YXAodmFsdWU6IFQpOiBUIHwgdm9pZFxuICBwaXBlKGZuOiAodmFsdWU6IFQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXRvbTxUPihpbml0aWFsVmFsdWU6IFQgfCBFTVBUWSA9IEVNUFRZKTogQXRvbTxUPiB7XG4gIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgU2ltcGxlT2JzZXJ2YWJsZTxUPigpXG4gIGxldCB2YWx1ZTogVCB8IEVNUFRZID0gaW5pdGlhbFZhbHVlXG4gIGNvbnN0IHZhbHVlRnV0dXJlczogSUZ1dHVyZTxUPltdID0gW11cblxuICBvYnNlcnZhYmxlLmFkZE9uY2UoKHZhbHVlKSA9PiB7XG4gICAgdmFsdWVGdXR1cmVzLmZvckVhY2goKCQpID0+ICQucmVzb2x2ZSh2YWx1ZSkpXG4gICAgdmFsdWVGdXR1cmVzLmxlbmd0aCA9IDBcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIHBpcGUoZm4pIHtcbiAgICAgIG9ic2VydmFibGUuYWRkKGFzeW5jICh0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZm4odClcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAodmFsdWUgIT09IEVNUFRZKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZm4odmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkZXJlZigpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gRU1QVFkpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gZnV0dXJlPFQ+KClcbiAgICAgICAgdmFsdWVGdXR1cmVzLnB1c2gocmV0KVxuICAgICAgICByZXR1cm4gcmV0XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKVxuICAgIH0sXG4gICAgZ2V0T3JOdWxsKCkge1xuICAgICAgaWYgKHZhbHVlID09PSBFTVBUWSkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBvYnNlcnZhYmxlLFxuICAgIHN3YXAobmV3VmFsdWUpIHtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gdmFsdWVcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZVxuICAgICAgICBvYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh2YWx1ZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBvbGRWYWx1ZSA9PT0gRU1QVFkgPyB1bmRlZmluZWQgOiBvbGRWYWx1ZVxuICAgIH1cbiAgfVxufVxuIl19
package/future.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export type IFuture<T> = Promise<T> & {
2
- resolve: (x: T) => void;
3
- reject: (x: Error) => void;
4
- finally: (fn: () => void) => void;
5
- isPending: boolean;
6
- };
7
- export declare function future<T = any>(): IFuture<T>;
8
- export default future;
package/future.js DELETED
@@ -1,26 +0,0 @@
1
- export function future() {
2
- let resolver;
3
- let rejecter;
4
- const promise = new Promise((ok, err) => {
5
- resolver = (x) => {
6
- ok(x);
7
- promise.isPending = false;
8
- };
9
- rejecter = (x) => {
10
- err(x);
11
- promise.isPending = false;
12
- };
13
- }).catch((e) => Promise.reject(e));
14
- promise.resolve = resolver;
15
- promise.reject = rejecter;
16
- if (!('finally' in promise)) {
17
- promise.finally = (fn) => {
18
- promise.then(fn);
19
- promise.catch(fn);
20
- };
21
- }
22
- promise.isPending = true;
23
- return promise;
24
- }
25
- export default future;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2Z1dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLFVBQVUsTUFBTTtJQUNwQixJQUFJLFFBQXdCLENBQUE7SUFDNUIsSUFBSSxRQUE0QixDQUFBO0lBRWhDLE1BQU0sT0FBTyxHQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzNDLFFBQVEsR0FBRyxDQUFDLENBQUksRUFBRSxFQUFFO1lBQ2xCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNMLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO1FBQzNCLENBQUMsQ0FBQTtRQUNELFFBQVEsR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNOLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO1FBQzNCLENBQUMsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRWxDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsUUFBUyxDQUFBO0lBQzNCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUyxDQUFBO0lBRTFCLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsRUFBRTtRQUMzQixPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQUU7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ25CLENBQUMsQ0FBQTtLQUNGO0lBRUQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7SUFFeEIsT0FBTyxPQUFxQixDQUFBO0FBQzlCLENBQUM7QUFFRCxlQUFlLE1BQU0sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIElGdXR1cmU8VD4gPSBQcm9taXNlPFQ+ICYge1xuICByZXNvbHZlOiAoeDogVCkgPT4gdm9pZFxuICByZWplY3Q6ICh4OiBFcnJvcikgPT4gdm9pZFxuICBmaW5hbGx5OiAoZm46ICgpID0+IHZvaWQpID0+IHZvaWRcbiAgaXNQZW5kaW5nOiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXR1cmU8VCA9IGFueT4oKTogSUZ1dHVyZTxUPiB7XG4gIGxldCByZXNvbHZlcjogKHg6IFQpID0+IHZvaWRcbiAgbGV0IHJlamVjdGVyOiAoeDogRXJyb3IpID0+IHZvaWRcblxuICBjb25zdCBwcm9taXNlOiBhbnkgPSBuZXcgUHJvbWlzZSgob2ssIGVycikgPT4ge1xuICAgIHJlc29sdmVyID0gKHg6IFQpID0+IHtcbiAgICAgIG9rKHgpXG4gICAgICBwcm9taXNlLmlzUGVuZGluZyA9IGZhbHNlXG4gICAgfVxuICAgIHJlamVjdGVyID0gKHg6IEVycm9yKSA9PiB7XG4gICAgICBlcnIoeClcbiAgICAgIHByb21pc2UuaXNQZW5kaW5nID0gZmFsc2VcbiAgICB9XG4gIH0pLmNhdGNoKChlKSA9PiBQcm9taXNlLnJlamVjdChlKSlcblxuICBwcm9taXNlLnJlc29sdmUgPSByZXNvbHZlciFcbiAgcHJvbWlzZS5yZWplY3QgPSByZWplY3RlciFcblxuICBpZiAoISgnZmluYWxseScgaW4gcHJvbWlzZSkpIHtcbiAgICBwcm9taXNlLmZpbmFsbHkgPSAoZm46IGFueSkgPT4ge1xuICAgICAgcHJvbWlzZS50aGVuKGZuKVxuICAgICAgcHJvbWlzZS5jYXRjaChmbilcbiAgICB9XG4gIH1cblxuICBwcm9taXNlLmlzUGVuZGluZyA9IHRydWVcblxuICByZXR1cm4gcHJvbWlzZSBhcyBJRnV0dXJlPFQ+XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1dHVyZVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Chunks CRDT messages from a Uint8Array buffer, respecting message boundaries
3
- * Uses the comprehensive readMessages function that handles all message types
4
- */
5
- export declare function chunkCrdtMessages(data: Uint8Array, maxSizeKB?: number): Uint8Array[];
@@ -1,38 +0,0 @@
1
- import { ReadWriteByteBuffer } from '@dcl/ecs/dist/serialization/ByteBuffer';
2
- import { readMessages } from './server/utils';
3
- /**
4
- * Chunks CRDT messages from a Uint8Array buffer, respecting message boundaries
5
- * Uses the comprehensive readMessages function that handles all message types
6
- */
7
- export function chunkCrdtMessages(data, maxSizeKB = 12) {
8
- if (data.length === 0) {
9
- return [];
10
- }
11
- const networkBuffer = new ReadWriteByteBuffer();
12
- const chunks = [];
13
- for (const message of readMessages(data)) {
14
- // Check if adding this message would exceed the size limit
15
- const currentBufferSize = networkBuffer.toBinary().byteLength;
16
- const messageSize = message.messageBuffer.byteLength;
17
- if ((currentBufferSize + messageSize) / 1024 > maxSizeKB) {
18
- // If the current buffer has content, save it as a chunk
19
- if (currentBufferSize > 0) {
20
- chunks.push(networkBuffer.toCopiedBinary());
21
- networkBuffer.resetBuffer();
22
- }
23
- // If the message itself is larger than the limit, skip it
24
- if (messageSize / 1024 > maxSizeKB) {
25
- console.error(`Message too large (${messageSize} bytes), skipping CRDT message`);
26
- continue;
27
- }
28
- }
29
- // Add message to current buffer
30
- networkBuffer.writeBuffer(message.messageBuffer, false);
31
- }
32
- // Add any remaining data as the final chunk
33
- if (networkBuffer.currentWriteOffset() > 0) {
34
- chunks.push(networkBuffer.toBinary());
35
- }
36
- return chunks;
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9jaHVua2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFN0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQWdCLEVBQUUsWUFBb0IsRUFBRTtJQUN4RSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUE7SUFDL0MsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQTtJQUUvQixLQUFLLE1BQU0sT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN4QywyREFBMkQ7UUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFBO1FBQzdELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFBO1FBRXBELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FBUyxFQUFFO1lBQ3hELHdEQUF3RDtZQUN4RCxJQUFJLGlCQUFpQixHQUFHLENBQUMsRUFBRTtnQkFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtnQkFDM0MsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFBO2FBQzVCO1lBRUQsMERBQTBEO1lBQzFELElBQUksV0FBVyxHQUFHLElBQUksR0FBRyxTQUFTLEVBQUU7Z0JBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLFdBQVcsZ0NBQWdDLENBQUMsQ0FBQTtnQkFDaEYsU0FBUTthQUNUO1NBQ0Y7UUFFRCxnQ0FBZ0M7UUFDaEMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQ3hEO0lBRUQsNENBQTRDO0lBQzVDLElBQUksYUFBYSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7S0FDdEM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFkV3JpdGVCeXRlQnVmZmVyIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyByZWFkTWVzc2FnZXMgfSBmcm9tICcuL3NlcnZlci91dGlscydcblxuLyoqXG4gKiBDaHVua3MgQ1JEVCBtZXNzYWdlcyBmcm9tIGEgVWludDhBcnJheSBidWZmZXIsIHJlc3BlY3RpbmcgbWVzc2FnZSBib3VuZGFyaWVzXG4gKiBVc2VzIHRoZSBjb21wcmVoZW5zaXZlIHJlYWRNZXNzYWdlcyBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgYWxsIG1lc3NhZ2UgdHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNodW5rQ3JkdE1lc3NhZ2VzKGRhdGE6IFVpbnQ4QXJyYXksIG1heFNpemVLQjogbnVtYmVyID0gMTIpOiBVaW50OEFycmF5W10ge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGNvbnN0IG5ldHdvcmtCdWZmZXIgPSBuZXcgUmVhZFdyaXRlQnl0ZUJ1ZmZlcigpXG4gIGNvbnN0IGNodW5rczogVWludDhBcnJheVtdID0gW11cblxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVhZE1lc3NhZ2VzKGRhdGEpKSB7XG4gICAgLy8gQ2hlY2sgaWYgYWRkaW5nIHRoaXMgbWVzc2FnZSB3b3VsZCBleGNlZWQgdGhlIHNpemUgbGltaXRcbiAgICBjb25zdCBjdXJyZW50QnVmZmVyU2l6ZSA9IG5ldHdvcmtCdWZmZXIudG9CaW5hcnkoKS5ieXRlTGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZVNpemUgPSBtZXNzYWdlLm1lc3NhZ2VCdWZmZXIuYnl0ZUxlbmd0aFxuXG4gICAgaWYgKChjdXJyZW50QnVmZmVyU2l6ZSArIG1lc3NhZ2VTaXplKSAvIDEwMjQgPiBtYXhTaXplS0IpIHtcbiAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ1ZmZlciBoYXMgY29udGVudCwgc2F2ZSBpdCBhcyBhIGNodW5rXG4gICAgICBpZiAoY3VycmVudEJ1ZmZlclNpemUgPiAwKSB7XG4gICAgICAgIGNodW5rcy5wdXNoKG5ldHdvcmtCdWZmZXIudG9Db3BpZWRCaW5hcnkoKSlcbiAgICAgICAgbmV0d29ya0J1ZmZlci5yZXNldEJ1ZmZlcigpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGl0c2VsZiBpcyBsYXJnZXIgdGhhbiB0aGUgbGltaXQsIHNraXAgaXRcbiAgICAgIGlmIChtZXNzYWdlU2l6ZSAvIDEwMjQgPiBtYXhTaXplS0IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgTWVzc2FnZSB0b28gbGFyZ2UgKCR7bWVzc2FnZVNpemV9IGJ5dGVzKSwgc2tpcHBpbmcgQ1JEVCBtZXNzYWdlYClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgbWVzc2FnZSB0byBjdXJyZW50IGJ1ZmZlclxuICAgIG5ldHdvcmtCdWZmZXIud3JpdGVCdWZmZXIobWVzc2FnZS5tZXNzYWdlQnVmZmVyLCBmYWxzZSlcbiAgfVxuXG4gIC8vIEFkZCBhbnkgcmVtYWluaW5nIGRhdGEgYXMgdGhlIGZpbmFsIGNodW5rXG4gIGlmIChuZXR3b3JrQnVmZmVyLmN1cnJlbnRXcml0ZU9mZnNldCgpID4gMCkge1xuICAgIGNodW5rcy5wdXNoKG5ldHdvcmtCdWZmZXIudG9CaW5hcnkoKSlcbiAgfVxuXG4gIHJldHVybiBjaHVua3Ncbn1cbiJdfQ==
@@ -1,93 +0,0 @@
1
- import { IEngine } from '@dcl/ecs';
2
- import { EventTypes, EventSchemaRegistry } from './registry';
3
- import { Atom } from '../../atom';
4
- export type EventContext = {
5
- from: string;
6
- };
7
- export type EventCallback<T> = (data: T, context?: EventContext) => void;
8
- export type SendOptions = {
9
- to?: string[];
10
- };
11
- export declare class Room<T extends EventSchemaRegistry = EventSchemaRegistry> {
12
- private listeners;
13
- private binaryMessageBus;
14
- private isServerFuture;
15
- private isRoomReadyAtom;
16
- private messageQueue;
17
- private isProcessingQueue;
18
- constructor(_engine: IEngine, binaryMessageBus: any, isServerFn: Atom<boolean>, isRoomReadyAtom: Atom<boolean>);
19
- /**
20
- * Flush queued messages when room becomes ready
21
- */
22
- private flushMessageQueue;
23
- /**
24
- * Send an event
25
- * @param eventType - The type of event from the registry
26
- * @param data - The event data matching the schema
27
- * @param options - Optional send options (server only)
28
- *
29
- * Messages are automatically queued if the room is not ready and sent once connected.
30
- */
31
- send<K extends keyof T>(eventType: K, data: EventTypes<T>[K], options?: SendOptions): Promise<void>;
32
- /**
33
- * Listen for an event
34
- * @param eventType - The type of event to listen for
35
- * @param callback - Callback to handle the event
36
- * @returns Unsubscribe function
37
- */
38
- onMessage<K extends keyof T>(eventType: K, callback: EventCallback<EventTypes<T>[K]>): () => void;
39
- /**
40
- * Remove all listeners for a specific event type
41
- * @param eventType - The type of event to clear listeners for
42
- */
43
- clear<K extends keyof T>(eventType?: K): void;
44
- /**
45
- * Get the number of listeners for an event type
46
- * @param eventType - The type of event to check
47
- * @returns Number of registered listeners
48
- */
49
- listenerCount<K extends keyof T>(eventType: K): number;
50
- /**
51
- * Check if the room is ready to send messages
52
- * @returns true if messages will be sent immediately, false if they will be queued
53
- */
54
- isReady(): boolean;
55
- /**
56
- * Subscribe to room readiness changes
57
- * @param callback - Called when room becomes ready or disconnected
58
- * @returns Unsubscribe function
59
- *
60
- * @example
61
- * ```ts
62
- * const unsubscribe = room.onReady((isReady) => {
63
- * if (isReady) {
64
- * console.log('Room connected!')
65
- * } else {
66
- * console.log('Room disconnected')
67
- * }
68
- * })
69
- *
70
- * // Later: unsubscribe()
71
- * ```
72
- */
73
- onReady(callback: (isReady: boolean) => void): () => void;
74
- }
75
- /**
76
- * Register message schemas for use with the room
77
- * Call this before main() to define your custom messages
78
- * @param messages - Object containing your message schemas
79
- * @returns Typed room instance for your registered messages
80
- */
81
- export declare function registerMessages<T extends EventSchemaRegistry>(messages: T): Room<T>;
82
- /**
83
- * Get a typed version of the global room
84
- * Use this when you want the room with your specific message types
85
- *
86
- * @example
87
- * ```typescript
88
- * const MyMessages = { ... }
89
- * registerMessages(MyMessages) // Register first
90
- * const room = getRoom<typeof MyMessages>() // Then get typed version
91
- * ```
92
- */
93
- export declare function getRoom<T extends EventSchemaRegistry>(): Room<T>;
@@ -1,230 +0,0 @@
1
- import { CommsMessage } from '../binary-message-bus';
2
- import { AUTH_SERVER_PEER_ID } from '../message-bus-sync';
3
- import { encodeEvent, decodeEvent } from './protocol';
4
- import { future } from '../../future';
5
- export class Room {
6
- constructor(_engine, binaryMessageBus, isServerFn, isRoomReadyAtom) {
7
- this.listeners = new Map();
8
- this.isServerFuture = future();
9
- this.messageQueue = [];
10
- this.isProcessingQueue = false;
11
- void isServerFn.deref().then(($) => this.isServerFuture.resolve($));
12
- this.binaryMessageBus = binaryMessageBus;
13
- this.isRoomReadyAtom = isRoomReadyAtom;
14
- // Subscribe to room readiness changes to flush queue
15
- this.isRoomReadyAtom.observable.add((isReady) => {
16
- if (isReady && this.messageQueue.length > 0) {
17
- void this.flushMessageQueue();
18
- }
19
- });
20
- // Listen for CUSTOM_EVENT messages
21
- binaryMessageBus.on(CommsMessage.CUSTOM_EVENT, (data, sender) => {
22
- try {
23
- const { eventType, payload } = decodeEvent(data, globalEventRegistry);
24
- const callbacks = this.listeners.get(eventType);
25
- if (callbacks) {
26
- callbacks.forEach(async (cb) => {
27
- if (await this.isServerFuture) {
28
- // Server handlers receive sender context
29
- cb(payload, { from: sender });
30
- }
31
- else if (sender === AUTH_SERVER_PEER_ID) {
32
- // Client only processes events from authoritative server
33
- cb(payload);
34
- }
35
- });
36
- }
37
- }
38
- catch (error) {
39
- console.error('[EventBus] Failed to decode event:', error);
40
- }
41
- });
42
- }
43
- /**
44
- * Flush queued messages when room becomes ready
45
- */
46
- async flushMessageQueue() {
47
- if (this.isProcessingQueue || this.messageQueue.length === 0)
48
- return;
49
- this.isProcessingQueue = true;
50
- // Copy and clear the queue to avoid mutation during iteration
51
- const messages = [...this.messageQueue];
52
- this.messageQueue.length = 0;
53
- // Re-send all queued messages
54
- for (const message of messages) {
55
- await this.send(message.eventType, message.data, message.options);
56
- }
57
- this.isProcessingQueue = false;
58
- }
59
- /**
60
- * Send an event
61
- * @param eventType - The type of event from the registry
62
- * @param data - The event data matching the schema
63
- * @param options - Optional send options (server only)
64
- *
65
- * Messages are automatically queued if the room is not ready and sent once connected.
66
- */
67
- async send(eventType, data, options) {
68
- try {
69
- const isRoomReady = this.isRoomReadyAtom.getOrNull() ?? false;
70
- // If room is not ready, queue the message with original params
71
- if (!isRoomReady) {
72
- this.messageQueue.push({
73
- eventType,
74
- data,
75
- options
76
- });
77
- return;
78
- }
79
- // Room is ready, send immediately
80
- const buffer = encodeEvent(eventType, data, globalEventRegistry);
81
- if (await this.isServerFuture) {
82
- // Server can send to specific clients or broadcast
83
- this.binaryMessageBus.emit(CommsMessage.CUSTOM_EVENT, buffer, options?.to);
84
- }
85
- else {
86
- // Client always sends to authoritative server
87
- this.binaryMessageBus.emit(CommsMessage.CUSTOM_EVENT, buffer);
88
- }
89
- }
90
- catch (error) {
91
- console.error(`[EventBus] Failed to send event '${String(eventType)}':`, error);
92
- }
93
- }
94
- /**
95
- * Listen for an event
96
- * @param eventType - The type of event to listen for
97
- * @param callback - Callback to handle the event
98
- * @returns Unsubscribe function
99
- */
100
- onMessage(eventType, callback) {
101
- if (!this.listeners.has(eventType)) {
102
- this.listeners.set(eventType, new Set());
103
- }
104
- const callbacks = this.listeners.get(eventType);
105
- callbacks.add(callback);
106
- // Return unsubscribe function
107
- return () => {
108
- callbacks.delete(callback);
109
- if (callbacks.size === 0) {
110
- this.listeners.delete(eventType);
111
- }
112
- };
113
- }
114
- /**
115
- * Remove all listeners for a specific event type
116
- * @param eventType - The type of event to clear listeners for
117
- */
118
- clear(eventType) {
119
- if (eventType) {
120
- this.listeners.delete(eventType);
121
- }
122
- else {
123
- this.listeners.clear();
124
- }
125
- }
126
- /**
127
- * Get the number of listeners for an event type
128
- * @param eventType - The type of event to check
129
- * @returns Number of registered listeners
130
- */
131
- listenerCount(eventType) {
132
- return this.listeners.get(eventType)?.size ?? 0;
133
- }
134
- /**
135
- * Check if the room is ready to send messages
136
- * @returns true if messages will be sent immediately, false if they will be queued
137
- */
138
- isReady() {
139
- return this.isRoomReadyAtom.getOrNull() ?? false;
140
- }
141
- /**
142
- * Subscribe to room readiness changes
143
- * @param callback - Called when room becomes ready or disconnected
144
- * @returns Unsubscribe function
145
- *
146
- * @example
147
- * ```ts
148
- * const unsubscribe = room.onReady((isReady) => {
149
- * if (isReady) {
150
- * console.log('Room connected!')
151
- * } else {
152
- * console.log('Room disconnected')
153
- * }
154
- * })
155
- *
156
- * // Later: unsubscribe()
157
- * ```
158
- */
159
- onReady(callback) {
160
- const observer = this.isRoomReadyAtom.observable.add((isReady) => {
161
- callback(isReady);
162
- });
163
- return () => {
164
- if (observer) {
165
- this.isRoomReadyAtom.observable.remove(observer);
166
- }
167
- };
168
- }
169
- }
170
- // Global registry for user-defined events
171
- const globalEventRegistry = {};
172
- /**
173
- * Get the global event registry (internal use)
174
- * @internal
175
- */
176
- export function getEventRegistry() {
177
- return globalEventRegistry;
178
- }
179
- // Global room instance (created by addSyncTransport)
180
- let globalRoom = null;
181
- /**
182
- * Set the global room instance (internal use)
183
- * @internal
184
- */
185
- export function setGlobalRoom(roomInstance) {
186
- globalRoom = roomInstance;
187
- }
188
- /**
189
- * Register message schemas for use with the room
190
- * Call this before main() to define your custom messages
191
- * @param messages - Object containing your message schemas
192
- * @returns Typed room instance for your registered messages
193
- */
194
- export function registerMessages(messages) {
195
- Object.assign(globalEventRegistry, messages);
196
- if (!globalRoom) {
197
- throw new Error('Room not initialized. Make sure the SDK network transport is initialized.');
198
- }
199
- // Update the room registry
200
- ;
201
- globalRoom.registry = globalEventRegistry;
202
- return globalRoom;
203
- }
204
- /**
205
- * Get a typed version of the global room
206
- * Use this when you want the room with your specific message types
207
- *
208
- * @example
209
- * ```typescript
210
- * const MyMessages = { ... }
211
- * registerMessages(MyMessages) // Register first
212
- * const room = getRoom<typeof MyMessages>() // Then get typed version
213
- * ```
214
- */
215
- export function getRoom() {
216
- if (!globalRoom) {
217
- throw new Error('Room not initialized. Make sure the SDK network transport is initialized.');
218
- }
219
- return globalRoom;
220
- }
221
- /**
222
- * Create a typed room with custom message schemas (internal use)
223
- * @param registry - Your custom message schema registry
224
- * @returns Room instance with your custom types
225
- * @internal
226
- */
227
- export function createRoom(engine, binaryMessageBus, isServerFn, isRoomReadyAtom) {
228
- return new Room(engine, binaryMessageBus, isServerFn, isRoomReadyAtom);
229
- }
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbGVtZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9ldmVudHMvaW1wbGVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJELE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxjQUFjLENBQUE7QUEyQjlDLE1BQU0sT0FBTyxJQUFJO0lBUWYsWUFBWSxPQUFnQixFQUFFLGdCQUFxQixFQUFFLFVBQXlCLEVBQUUsZUFBOEI7UUFQdEcsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFBO1FBRXZELG1CQUFjLEdBQXFCLE1BQU0sRUFBRSxDQUFBO1FBRTNDLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQTtRQUNyQyxzQkFBaUIsR0FBRyxLQUFLLENBQUE7UUFHL0IsS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRW5FLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQTtRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQTtRQUV0QyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO2FBQzlCO1FBQ0gs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TSxVQUFVLE9BQU87SUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQTtLQUM3RjtJQUNELE9BQU8sVUFBZ0MsQ0FBQTtBQUN6QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFlLEVBQ2YsZ0JBQXFCLEVBQ3JCLFVBQXlCLEVBQ3pCLGVBQThCO0lBRTlCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQTtBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgQ29tbXNNZXNzYWdlIH0gZnJvbSAnLi4vYmluYXJ5LW1lc3NhZ2UtYnVzJ1xuaW1wb3J0IHsgQVVUSF9TRVJWRVJfUEVFUl9JRCB9IGZyb20gJy4uL21lc3NhZ2UtYnVzLXN5bmMnXG5pbXBvcnQgeyBFdmVudFR5cGVzLCBFdmVudFNjaGVtYVJlZ2lzdHJ5IH0gZnJvbSAnLi9yZWdpc3RyeSdcbmltcG9ydCB7IGVuY29kZUV2ZW50LCBkZWNvZGVFdmVudCB9IGZyb20gJy4vcHJvdG9jb2wnXG5pbXBvcnQgeyBBdG9tIH0gZnJvbSAnLi4vLi4vYXRvbSdcbmltcG9ydCB7IGZ1dHVyZSwgSUZ1dHVyZSB9IGZyb20gJy4uLy4uL2Z1dHVyZSdcblxuLy8gQ29udGV4dCBwcm92aWRlZCB0byBzZXJ2ZXItc2lkZSBldmVudCBoYW5kbGVyc1xuZXhwb3J0IHR5cGUgRXZlbnRDb250ZXh0ID0ge1xuICBmcm9tOiBzdHJpbmdcbn1cblxuLy8gRXZlbnQgY2FsbGJhY2sgdHlwZSAtIHNlcnZlciBnZXRzIGNvbnRleHQsIGNsaWVudCBkb2Vzbid0XG5leHBvcnQgdHlwZSBFdmVudENhbGxiYWNrPFQ+ID0gKGRhdGE6IFQsIGNvbnRleHQ/OiBFdmVudENvbnRleHQpID0+IHZvaWRcblxuLy8gT3B0aW9ucyBmb3Igc2VuZGluZyBldmVudHNcbmV4cG9ydCB0eXBlIFNlbmRPcHRpb25zID0ge1xuICB0bz86IHN0cmluZ1tdIC8vIFRhcmdldCBzcGVjaWZpYyBwZWVycyAoc2VydmVyIG9ubHkpXG59XG5cbi8qKlxuICogUm9vbSBwcm92aWRlcyB0eXBlLXNhZmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlclxuICogVXNlcyBiaW5hcnkgc2VyaWFsaXphdGlvbiB3aXRoIFNjaGVtYSBkZWZpbml0aW9ucyBmb3IgZWZmaWNpZW5jeVxuICovXG50eXBlIFF1ZXVlZE1lc3NhZ2U8VCBleHRlbmRzIEV2ZW50U2NoZW1hUmVnaXN0cnkgPSBFdmVudFNjaGVtYVJlZ2lzdHJ5PiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IHtcbiAgICBldmVudFR5cGU6IEtcbiAgICBkYXRhOiBFdmVudFR5cGVzPFQ+W0tdXG4gICAgb3B0aW9ucz86IFNlbmRPcHRpb25zXG4gIH1cbn1ba2V5b2YgVF1cblxuZXhwb3J0IGNsYXNzIFJvb208VCBleHRlbmRzIEV2ZW50U2NoZW1hUmVnaXN0cnkgPSBFdmVudFNjaGVtYVJlZ2lzdHJ5PiB7XG4gIHByaXZhdGUgbGlzdGVuZXJzID0gbmV3IE1hcDxrZXlvZiBULCBTZXQ8RXZlbnRDYWxsYmFjazxhbnk+Pj4oKVxuICBwcml2YXRlIGJpbmFyeU1lc3NhZ2VCdXM6IGFueVxuICBwcml2YXRlIGlzU2VydmVyRnV0dXJlOiBJRnV0dXJlPGJvb2xlYW4+ID0gZnV0dXJlKClcbiAgcHJpdmF0ZSBpc1Jvb21SZWFkeUF0b206IEF0b208Ym9vbGVhbj5cbiAgcHJpdmF0ZSBtZXNzYWdlUXVldWU6IFF1ZXVlZE1lc3NhZ2U8VD5bXSA9IFtdXG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nUXVldWUgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKF9lbmdpbmU6IElFbmdpbmUsIGJpbmFyeU1lc3NhZ2VCdXM6IGFueSwgaXNTZXJ2ZXJGbjogQXRvbTxib29sZWFuPiwgaXNSb29tUmVhZHlBdG9tOiBBdG9tPGJvb2xlYW4+KSB7XG4gICAgdm9pZCBpc1NlcnZlckZuLmRlcmVmKCkudGhlbigoJCkgPT4gdGhpcy5pc1NlcnZlckZ1dHVyZS5yZXNvbHZlKCQpKVxuXG4gICAgdGhpcy5iaW5hcnlNZXNzYWdlQnVzID0gYmluYXJ5TWVzc2FnZUJ1c1xuICAgIHRoaXMuaXNSb29tUmVhZHlBdG9tID0gaXNSb29tUmVhZHlBdG9tXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gcm9vbSByZWFkaW5lc3MgY2hhbmdlcyB0byBmbHVzaCBxdWV1ZVxuICAgIHRoaXMuaXNSb29tUmVhZHlBdG9tLm9ic2VydmFibGUuYWRkKChpc1JlYWR5KSA9PiB7XG4gICAgICBpZiAoaXNSZWFkeSAmJiB0aGlzLm1lc3NhZ2VRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZvaWQgdGhpcy5mbHVzaE1lc3NhZ2VRdWV1ZSgpXG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBMaXN0ZW4gZm9yIENVU1RPTV9FVkVOVCBtZXNzYWdlc1xuICAgIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLkNVU1RPTV9FVkVOVCwgKGRhdGE6IFVpbnQ4QXJyYXksIHNlbmRlcjogc3RyaW5nKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGV2ZW50VHlwZSwgcGF5bG9hZCB9ID0gZGVjb2RlRXZlbnQoZGF0YSwgZ2xvYmFsRXZlbnRSZWdpc3RyeSlcbiAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSlcblxuICAgICAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgICAgY2FsbGJhY2tzLmZvckVhY2goYXN5bmMgKGNiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgdGhpcy5pc1NlcnZlckZ1dHVyZSkge1xuICAgICAgICAgICAgICAvLyBTZXJ2ZXIgaGFuZGxlcnMgcmVjZWl2ZSBzZW5kZXIgY29udGV4dFxuICAgICAgICAgICAgICBjYihwYXlsb2FkLCB7IGZyb206IHNlbmRlciB9KVxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZW5kZXIgPT09IEFVVEhfU0VSVkVSX1BFRVJfSUQpIHtcbiAgICAgICAgICAgICAgLy8gQ2xpZW50IG9ubHkgcHJvY2Vzc2VzIGV2ZW50cyBmcm9tIGF1dGhvcml0YXRpdmUgc2VydmVyXG4gICAgICAgICAgICAgIGNiKHBheWxvYWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0V2ZW50QnVzXSBGYWlsZWQgdG8gZGVjb2RlIGV2ZW50OicsIGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcXVldWVkIG1lc3NhZ2VzIHdoZW4gcm9vbSBiZWNvbWVzIHJlYWR5XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoTWVzc2FnZVF1ZXVlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ1F1ZXVlIHx8IHRoaXMubWVzc2FnZVF1ZXVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICB0aGlzLmlzUHJvY2Vzc2luZ1F1ZXVlID0gdHJ1ZVxuXG4gICAgLy8gQ29weSBhbmQgY2xlYXIgdGhlIHF1ZXVlIHRvIGF2b2lkIG11dGF0aW9uIGR1cmluZyBpdGVyYXRpb25cbiAgICBjb25zdCBtZXNzYWdlcyA9IFsuLi50aGlzLm1lc3NhZ2VRdWV1ZV1cbiAgICB0aGlzLm1lc3NhZ2VRdWV1ZS5sZW5ndGggPSAwXG5cbiAgICAvLyBSZS1zZW5kIGFsbCBxdWV1ZWQgbWVzc2FnZXNcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2VuZChtZXNzYWdlLmV2ZW50VHlwZSwgbWVzc2FnZS5kYXRhLCBtZXNzYWdlLm9wdGlvbnMpXG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhbiBldmVudFxuICAgKiBAcGFyYW0gZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgZnJvbSB0aGUgcmVnaXN0cnlcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZXZlbnQgZGF0YSBtYXRjaGluZyB0aGUgc2NoZW1hXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgc2VuZCBvcHRpb25zIChzZXJ2ZXIgb25seSlcbiAgICpcbiAgICogTWVzc2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgcXVldWVkIGlmIHRoZSByb29tIGlzIG5vdCByZWFkeSBhbmQgc2VudCBvbmNlIGNvbm5lY3RlZC5cbiAgICovXG4gIGFzeW5jIHNlbmQ8SyBleHRlbmRzIGtleW9mIFQ+KGV2ZW50VHlwZTogSywgZGF0YTogRXZlbnRUeXBlczxUPltLXSwgb3B0aW9ucz86IFNlbmRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGlzUm9vbVJlYWR5ID0gdGhpcy5pc1Jvb21SZWFkeUF0b20uZ2V0T3JOdWxsKCkgPz8gZmFsc2VcblxuICAgICAgLy8gSWYgcm9vbSBpcyBub3QgcmVhZHksIHF1ZXVlIHRoZSBtZXNzYWdlIHdpdGggb3JpZ2luYWwgcGFyYW1zXG4gICAgICBpZiAoIWlzUm9vbVJlYWR5KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLnB1c2goe1xuICAgICAgICAgIGV2ZW50VHlwZSxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFJvb20gaXMgcmVhZHksIHNlbmQgaW1tZWRpYXRlbHlcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGVuY29kZUV2ZW50KGV2ZW50VHlwZSBhcyBzdHJpbmcsIGRhdGEsIGdsb2JhbEV2ZW50UmVnaXN0cnkpXG5cbiAgICAgIGlmIChhd2FpdCB0aGlzLmlzU2VydmVyRnV0dXJlKSB7XG4gICAgICAgIC8vIFNlcnZlciBjYW4gc2VuZCB0byBzcGVjaWZpYyBjbGllbnRzIG9yIGJyb2FkY2FzdFxuICAgICAgICB0aGlzLmJpbmFyeU1lc3NhZ2VCdXMuZW1pdChDb21tc01lc3NhZ2UuQ1VTVE9NX0VWRU5ULCBidWZmZXIsIG9wdGlvbnM/LnRvKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2xpZW50IGFsd2F5cyBzZW5kcyB0byBhdXRob3JpdGF0aXZlIHNlcnZlclxuICAgICAgICB0aGlzLmJpbmFyeU1lc3NhZ2VCdXMuZW1pdChDb21tc01lc3NhZ2UuQ1VTVE9NX0VWRU5ULCBidWZmZXIpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtFdmVudEJ1c10gRmFpbGVkIHRvIHNlbmQgZXZlbnQgJyR7U3RyaW5nKGV2ZW50VHlwZSl9JzpgLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBhbiBldmVudFxuICAgKiBAcGFyYW0gZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIGZvclxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byBoYW5kbGUgdGhlIGV2ZW50XG4gICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uXG4gICAqL1xuICBvbk1lc3NhZ2U8SyBleHRlbmRzIGtleW9mIFQ+KGV2ZW50VHlwZTogSywgY2FsbGJhY2s6IEV2ZW50Q2FsbGJhY2s8RXZlbnRUeXBlczxUPltLXT4pOiAoKSA9PiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzLmhhcyhldmVudFR5cGUpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBuZXcgU2V0KCkpXG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSkhXG4gICAgY2FsbGJhY2tzLmFkZChjYWxsYmFjaylcblxuICAgIC8vIFJldHVybiB1bnN1YnNjcmliZSBmdW5jdGlvblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYWxsYmFja3MuZGVsZXRlKGNhbGxiYWNrKVxuICAgICAgaWYgKGNhbGxiYWNrcy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmRlbGV0ZShldmVudFR5cGUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzIGZvciBhIHNwZWNpZmljIGV2ZW50IHR5cGVcbiAgICogQHBhcmFtIGV2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIGV2ZW50IHRvIGNsZWFyIGxpc3RlbmVycyBmb3JcbiAgICovXG4gIGNsZWFyPEsgZXh0ZW5kcyBrZXlvZiBUPihldmVudFR5cGU/OiBLKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50VHlwZSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuZGVsZXRlKGV2ZW50VHlwZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2xlYXIoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBsaXN0ZW5lcnMgZm9yIGFuIGV2ZW50IHR5cGVcbiAgICogQHBhcmFtIGV2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIGV2ZW50IHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiByZWdpc3RlcmVkIGxpc3RlbmVyc1xuICAgKi9cbiAgbGlzdGVuZXJDb3VudDxLIGV4dGVuZHMga2V5b2YgVD4oZXZlbnRUeXBlOiBLKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk/LnNpemUgPz8gMFxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSByb29tIGlzIHJlYWR5IHRvIHNlbmQgbWVzc2FnZXNcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBtZXNzYWdlcyB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHksIGZhbHNlIGlmIHRoZXkgd2lsbCBiZSBxdWV1ZWRcbiAgICovXG4gIGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb29tUmVhZHlBdG9tLmdldE9yTnVsbCgpID8/IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHJvb20gcmVhZGluZXNzIGNoYW5nZXNcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGVkIHdoZW4gcm9vbSBiZWNvbWVzIHJlYWR5IG9yIGRpc2Nvbm5lY3RlZFxuICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zdCB1bnN1YnNjcmliZSA9IHJvb20ub25SZWFkeSgoaXNSZWFkeSkgPT4ge1xuICAgKiAgIGlmIChpc1JlYWR5KSB7XG4gICAqICAgICBjb25zb2xlLmxvZygnUm9vbSBjb25uZWN0ZWQhJylcbiAgICogICB9IGVsc2Uge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1Jvb20gZGlzY29ubmVjdGVkJylcbiAgICogICB9XG4gICAqIH0pXG4gICAqXG4gICAqIC8vIExhdGVyOiB1bnN1YnNjcmliZSgpXG4gICAqIGBgYFxuICAgKi9cbiAgb25SZWFkeShjYWxsYmFjazogKGlzUmVhZHk6IGJvb2xlYW4pID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuaXNSb29tUmVhZHlBdG9tLm9ic2VydmFibGUuYWRkKChpc1JlYWR5KSA9PiB7XG4gICAgICBjYWxsYmFjayhpc1JlYWR5KVxuICAgIH0pXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuaXNSb29tUmVhZHlBdG9tLm9ic2VydmFibGUucmVtb3ZlKG9ic2VydmVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBHbG9iYWwgcmVnaXN0cnkgZm9yIHVzZXItZGVmaW5lZCBldmVudHNcbmNvbnN0IGdsb2JhbEV2ZW50UmVnaXN0cnk6IEV2ZW50U2NoZW1hUmVnaXN0cnkgPSB7fVxuXG4vKipcbiAqIEdldCB0aGUgZ2xvYmFsIGV2ZW50IHJlZ2lzdHJ5IChpbnRlcm5hbCB1c2UpXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50UmVnaXN0cnkoKTogRXZlbnRTY2hlbWFSZWdpc3RyeSB7XG4gIHJldHVybiBnbG9iYWxFdmVudFJlZ2lzdHJ5XG59XG5cbi8vIEdsb2JhbCByb29tIGluc3RhbmNlIChjcmVhdGVkIGJ5IGFkZFN5bmNUcmFuc3BvcnQpXG5sZXQgZ2xvYmFsUm9vbTogUm9vbSB8IG51bGwgPSBudWxsXG5cbi8qKlxuICogU2V0IHRoZSBnbG9iYWwgcm9vbSBpbnN0YW5jZSAoaW50ZXJuYWwgdXNlKVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRHbG9iYWxSb29tKHJvb21JbnN0YW5jZTogUm9vbSk6IHZvaWQge1xuICBnbG9iYWxSb29tID0gcm9vbUluc3RhbmNlXG59XG5cbi8qKlxuICogUmVnaXN0ZXIgbWVzc2FnZSBzY2hlbWFzIGZvciB1c2Ugd2l0aCB0aGUgcm9vbVxuICogQ2FsbCB0aGlzIGJlZm9yZSBtYWluKCkgdG8gZGVmaW5lIHlvdXIgY3VzdG9tIG1lc3NhZ2VzXG4gKiBAcGFyYW0gbWVzc2FnZXMgLSBPYmplY3QgY29udGFpbmluZyB5b3VyIG1lc3NhZ2Ugc2NoZW1hc1xuICogQHJldHVybnMgVHlwZWQgcm9vbSBpbnN0YW5jZSBmb3IgeW91ciByZWdpc3RlcmVkIG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1lc3NhZ2VzPFQgZXh0ZW5kcyBFdmVudFNjaGVtYVJlZ2lzdHJ5PihtZXNzYWdlczogVCk6IFJvb208VD4ge1xuICBPYmplY3QuYXNzaWduKGdsb2JhbEV2ZW50UmVnaXN0cnksIG1lc3NhZ2VzKVxuICBpZiAoIWdsb2JhbFJvb20pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jvb20gbm90IGluaXRpYWxpemVkLiBNYWtlIHN1cmUgdGhlIFNESyBuZXR3b3JrIHRyYW5zcG9ydCBpcyBpbml0aWFsaXplZC4nKVxuICB9XG4gIC8vIFVwZGF0ZSB0aGUgcm9vbSByZWdpc3RyeVxuICA7KGdsb2JhbFJvb20gYXMgYW55KS5yZWdpc3RyeSA9IGdsb2JhbEV2ZW50UmVnaXN0cnlcbiAgcmV0dXJuIGdsb2JhbFJvb20gYXMgdW5rbm93biBhcyBSb29tPFQ+XG59XG5cbi8qKlxuICogR2V0IGEgdHlwZWQgdmVyc2lvbiBvZiB0aGUgZ2xvYmFsIHJvb21cbiAqIFVzZSB0aGlzIHdoZW4geW91IHdhbnQgdGhlIHJvb20gd2l0aCB5b3VyIHNwZWNpZmljIG1lc3NhZ2UgdHlwZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgTXlNZXNzYWdlcyA9IHsgLi4uIH1cbiAqIHJlZ2lzdGVyTWVzc2FnZXMoTXlNZXNzYWdlcykgLy8gUmVnaXN0ZXIgZmlyc3RcbiAqIGNvbnN0IHJvb20gPSBnZXRSb29tPHR5cGVvZiBNeU1lc3NhZ2VzPigpIC8vIFRoZW4gZ2V0IHR5cGVkIHZlcnNpb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vbTxUIGV4dGVuZHMgRXZlbnRTY2hlbWFSZWdpc3RyeT4oKTogUm9vbTxUPiB7XG4gIGlmICghZ2xvYmFsUm9vbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUm9vbSBub3QgaW5pdGlhbGl6ZWQuIE1ha2Ugc3VyZSB0aGUgU0RLIG5ldHdvcmsgdHJhbnNwb3J0IGlzIGluaXRpYWxpemVkLicpXG4gIH1cbiAgcmV0dXJuIGdsb2JhbFJvb20gYXMgdW5rbm93biBhcyBSb29tPFQ+XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdHlwZWQgcm9vbSB3aXRoIGN1c3RvbSBtZXNzYWdlIHNjaGVtYXMgKGludGVybmFsIHVzZSlcbiAqIEBwYXJhbSByZWdpc3RyeSAtIFlvdXIgY3VzdG9tIG1lc3NhZ2Ugc2NoZW1hIHJlZ2lzdHJ5XG4gKiBAcmV0dXJucyBSb29tIGluc3RhbmNlIHdpdGggeW91ciBjdXN0b20gdHlwZXNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm9vbTxUIGV4dGVuZHMgRXZlbnRTY2hlbWFSZWdpc3RyeT4oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgYmluYXJ5TWVzc2FnZUJ1czogYW55LFxuICBpc1NlcnZlckZuOiBBdG9tPGJvb2xlYW4+LFxuICBpc1Jvb21SZWFkeUF0b206IEF0b208Ym9vbGVhbj5cbik6IFJvb208VD4ge1xuICByZXR1cm4gbmV3IFJvb20oZW5naW5lLCBiaW5hcnlNZXNzYWdlQnVzLCBpc1NlcnZlckZuLCBpc1Jvb21SZWFkeUF0b20pXG59XG4iXX0=
@@ -1,42 +0,0 @@
1
- /**
2
- * Room - Multiplayer messaging for SDK7
3
- *
4
- * Simple room-based communication system for multiplayer scenes.
5
- *
6
- * @example Basic usage:
7
- * ```typescript
8
- * import { registerMessages, getRoom, isServer } from '@dcl/sdk/network/events'
9
- *
10
- * const MyMessages = {
11
- * playerJump: Schemas.Map({ playerId: Schemas.String, position: Schemas.Vector3 }),
12
- * gameUpdate: Schemas.Map({ message: Schemas.String })
13
- * }
14
- *
15
- * // Option 1: Register and get typed room
16
- * const room = registerMessages(MyMessages)
17
- *
18
- * // Option 2: Register first, then get typed room
19
- * // registerMessages(MyMessages)
20
- * // const room = getRoom<typeof MyMessages>()
21
- *
22
- * export function main() {
23
- * if (isServer()) {
24
- * room.onMessage('playerJump', (data, context) => {
25
- * console.log(`Player ${context?.from} jumped`)
26
- * room.send('gameUpdate', { message: 'Player jumped!' })
27
- * })
28
- * } else {
29
- * room.send('playerJump', { playerId: 'me', position: { x: 1, y: 2, z: 3 } })
30
- * room.onMessage('gameUpdate', (data) => {
31
- * console.log('Server says:', data.message)
32
- * })
33
- * }
34
- * }
35
- * ```
36
- *
37
- * @packageDocumentation
38
- */
39
- import { registerMessages, getRoom, EventContext } from './implementation';
40
- import { EventSchemaRegistry } from './registry';
41
- export { registerMessages, getRoom };
42
- export type { EventContext, EventSchemaRegistry };
@@ -1,43 +0,0 @@
1
- /**
2
- * Room - Multiplayer messaging for SDK7
3
- *
4
- * Simple room-based communication system for multiplayer scenes.
5
- *
6
- * @example Basic usage:
7
- * ```typescript
8
- * import { registerMessages, getRoom, isServer } from '@dcl/sdk/network/events'
9
- *
10
- * const MyMessages = {
11
- * playerJump: Schemas.Map({ playerId: Schemas.String, position: Schemas.Vector3 }),
12
- * gameUpdate: Schemas.Map({ message: Schemas.String })
13
- * }
14
- *
15
- * // Option 1: Register and get typed room
16
- * const room = registerMessages(MyMessages)
17
- *
18
- * // Option 2: Register first, then get typed room
19
- * // registerMessages(MyMessages)
20
- * // const room = getRoom<typeof MyMessages>()
21
- *
22
- * export function main() {
23
- * if (isServer()) {
24
- * room.onMessage('playerJump', (data, context) => {
25
- * console.log(`Player ${context?.from} jumped`)
26
- * room.send('gameUpdate', { message: 'Player jumped!' })
27
- * })
28
- * } else {
29
- * room.send('playerJump', { playerId: 'me', position: { x: 1, y: 2, z: 3 } })
30
- * room.onMessage('gameUpdate', (data) => {
31
- * console.log('Server says:', data.message)
32
- * })
33
- * }
34
- * }
35
- * ```
36
- *
37
- * @packageDocumentation
38
- */
39
- // Import public API and types
40
- import { registerMessages, getRoom } from './implementation';
41
- // Re-export public API - only what users need
42
- export { registerMessages, getRoom };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9ldmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFFSCw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQTtBQUcxRSw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSb29tIC0gTXVsdGlwbGF5ZXIgbWVzc2FnaW5nIGZvciBTREs3XG4gKlxuICogU2ltcGxlIHJvb20tYmFzZWQgY29tbXVuaWNhdGlvbiBzeXN0ZW0gZm9yIG11bHRpcGxheWVyIHNjZW5lcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHJlZ2lzdGVyTWVzc2FnZXMsIGdldFJvb20sIGlzU2VydmVyIH0gZnJvbSAnQGRjbC9zZGsvbmV0d29yay9ldmVudHMnXG4gKlxuICogY29uc3QgTXlNZXNzYWdlcyA9IHtcbiAqICAgcGxheWVySnVtcDogU2NoZW1hcy5NYXAoeyBwbGF5ZXJJZDogU2NoZW1hcy5TdHJpbmcsIHBvc2l0aW9uOiBTY2hlbWFzLlZlY3RvcjMgfSksXG4gKiAgIGdhbWVVcGRhdGU6IFNjaGVtYXMuTWFwKHsgbWVzc2FnZTogU2NoZW1hcy5TdHJpbmcgfSlcbiAqIH1cbiAqXG4gKiAvLyBPcHRpb24gMTogUmVnaXN0ZXIgYW5kIGdldCB0eXBlZCByb29tXG4gKiBjb25zdCByb29tID0gcmVnaXN0ZXJNZXNzYWdlcyhNeU1lc3NhZ2VzKVxuICpcbiAqIC8vIE9wdGlvbiAyOiBSZWdpc3RlciBmaXJzdCwgdGhlbiBnZXQgdHlwZWQgcm9vbVxuICogLy8gcmVnaXN0ZXJNZXNzYWdlcyhNeU1lc3NhZ2VzKVxuICogLy8gY29uc3Qgcm9vbSA9IGdldFJvb208dHlwZW9mIE15TWVzc2FnZXM+KClcbiAqXG4gKiBleHBvcnQgZnVuY3Rpb24gbWFpbigpIHtcbiAqICAgaWYgKGlzU2VydmVyKCkpIHtcbiAqICAgICByb29tLm9uTWVzc2FnZSgncGxheWVySnVtcCcsIChkYXRhLCBjb250ZXh0KSA9PiB7XG4gKiAgICAgICBjb25zb2xlLmxvZyhgUGxheWVyICR7Y29udGV4dD8uZnJvbX0ganVtcGVkYClcbiAqICAgICAgIHJvb20uc2VuZCgnZ2FtZVVwZGF0ZScsIHsgbWVzc2FnZTogJ1BsYXllciBqdW1wZWQhJyB9KVxuICogICAgIH0pXG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgcm9vbS5zZW5kKCdwbGF5ZXJKdW1wJywgeyBwbGF5ZXJJZDogJ21lJywgcG9zaXRpb246IHsgeDogMSwgeTogMiwgejogMyB9IH0pXG4gKiAgICAgcm9vbS5vbk1lc3NhZ2UoJ2dhbWVVcGRhdGUnLCAoZGF0YSkgPT4ge1xuICogICAgICAgY29uc29sZS5sb2coJ1NlcnZlciBzYXlzOicsIGRhdGEubWVzc2FnZSlcbiAqICAgICB9KVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG4vLyBJbXBvcnQgcHVibGljIEFQSSBhbmQgdHlwZXNcbmltcG9ydCB7IHJlZ2lzdGVyTWVzc2FnZXMsIGdldFJvb20sIEV2ZW50Q29udGV4dCB9IGZyb20gJy4vaW1wbGVtZW50YXRpb24nXG5pbXBvcnQgeyBFdmVudFNjaGVtYVJlZ2lzdHJ5IH0gZnJvbSAnLi9yZWdpc3RyeSdcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUEkgLSBvbmx5IHdoYXQgdXNlcnMgbmVlZFxuZXhwb3J0IHsgcmVnaXN0ZXJNZXNzYWdlcywgZ2V0Um9vbSB9XG5cbi8vIFJlLWV4cG9ydCB0eXBlcyB0aGF0IHVzZXJzIG5lZWRcbmV4cG9ydCB0eXBlIHsgRXZlbnRDb250ZXh0LCBFdmVudFNjaGVtYVJlZ2lzdHJ5IH1cbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { EventSchemas, EventTypes, EventSchemaRegistry } from './registry';
2
- /**
3
- * Encode an event into a binary buffer
4
- * @param eventType - The type of event from the registry
5
- * @param data - The event data matching the schema
6
- * @param registry - Optional custom registry (defaults to EventSchemas)
7
- * @returns Binary buffer containing the encoded event
8
- */
9
- export declare function encodeEvent<T extends EventSchemaRegistry = typeof EventSchemas, K extends keyof T = keyof T>(eventType: K, data: EventTypes<T>[K], registry?: T): Uint8Array;
10
- /**
11
- * Decode a binary buffer into an event
12
- * @param data - Binary buffer containing the encoded event
13
- * @param registry - Optional custom registry (defaults to EventSchemas)
14
- * @returns Decoded event with type, payload, and timestamp
15
- */
16
- export declare function decodeEvent<T extends EventSchemaRegistry = typeof EventSchemas>(data: Uint8Array, registry?: T): {
17
- eventType: keyof T;
18
- payload: EventTypes<T>[keyof T];
19
- timestamp: number;
20
- };
21
- /**
22
- * Validate if an event type exists in the registry
23
- * @param eventType - The event type to check
24
- * @param registry - Optional custom registry (defaults to EventSchemas)
25
- * @returns True if the event type exists
26
- */
27
- export declare function isValidEventType<T extends EventSchemaRegistry = typeof EventSchemas>(eventType: string, registry?: T): eventType is Extract<keyof T, string>;