tool-db 1.2.1 → 1.3.1

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 (140) hide show
  1. package/README.md +42 -3
  2. package/custom-test-env.js +18 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.js +21 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/libp2p/create.d.ts +2 -0
  7. package/dist/libp2p/create.js +131 -0
  8. package/dist/libp2p/create.js.map +1 -0
  9. package/dist/libp2p/createLibP2p.d.ts +3 -0
  10. package/dist/libp2p/createLibP2p.js +130 -0
  11. package/dist/libp2p/createLibP2p.js.map +1 -0
  12. package/dist/libp2p/tooldb-protocol.d.ts +19 -0
  13. package/dist/libp2p/tooldb-protocol.js +156 -0
  14. package/dist/libp2p/tooldb-protocol.js.map +1 -0
  15. package/dist/messageHandlers/handleCrdt copy.d.ts +2 -0
  16. package/dist/messageHandlers/handleCrdt copy.js +15 -0
  17. package/dist/messageHandlers/handleCrdt copy.js.map +1 -0
  18. package/dist/messageHandlers/handleCrdt.d.ts +2 -0
  19. package/dist/messageHandlers/handleCrdt.js +15 -0
  20. package/dist/messageHandlers/handleCrdt.js.map +1 -0
  21. package/dist/messageHandlers/handleCrdtGet copy.d.ts +2 -0
  22. package/dist/messageHandlers/handleCrdtGet copy.js +22 -0
  23. package/dist/messageHandlers/handleCrdtGet copy.js.map +1 -0
  24. package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
  25. package/dist/messageHandlers/handleCrdtGet.js +22 -0
  26. package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
  27. package/dist/messageHandlers/handleCrdtPut copy.d.ts +2 -0
  28. package/dist/messageHandlers/handleCrdtPut copy.js +83 -0
  29. package/dist/messageHandlers/handleCrdtPut copy.js.map +1 -0
  30. package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
  31. package/dist/messageHandlers/handleCrdtPut.js +83 -0
  32. package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
  33. package/dist/messageHandlers/handleGet copy.d.ts +2 -0
  34. package/dist/messageHandlers/handleGet copy.js +37 -0
  35. package/dist/messageHandlers/handleGet copy.js.map +1 -0
  36. package/dist/messageHandlers/handleGet.d.ts +2 -0
  37. package/dist/messageHandlers/handleGet.js +37 -0
  38. package/dist/messageHandlers/handleGet.js.map +1 -0
  39. package/dist/messageHandlers/handleGetServers.d.ts +2 -0
  40. package/dist/messageHandlers/handleGetServers.js +23 -0
  41. package/dist/messageHandlers/handleGetServers.js.map +1 -0
  42. package/dist/messageHandlers/handleJoin copy.d.ts +2 -0
  43. package/dist/messageHandlers/handleJoin copy.js +37 -0
  44. package/dist/messageHandlers/handleJoin copy.js.map +1 -0
  45. package/dist/messageHandlers/handleJoin.d.ts +2 -0
  46. package/dist/messageHandlers/handleJoin.js +36 -0
  47. package/dist/messageHandlers/handleJoin.js.map +1 -0
  48. package/dist/messageHandlers/handlePing copy.d.ts +2 -0
  49. package/dist/messageHandlers/handlePing copy.js +13 -0
  50. package/dist/messageHandlers/handlePing copy.js.map +1 -0
  51. package/dist/messageHandlers/handlePing.d.ts +2 -0
  52. package/dist/messageHandlers/handlePing.js +20 -0
  53. package/dist/messageHandlers/handlePing.js.map +1 -0
  54. package/dist/messageHandlers/handlePong.d.ts +2 -0
  55. package/dist/messageHandlers/handlePong.js +30 -0
  56. package/dist/messageHandlers/handlePong.js.map +1 -0
  57. package/dist/messageHandlers/handlePut.d.ts +2 -0
  58. package/dist/messageHandlers/handlePut.js +61 -0
  59. package/dist/messageHandlers/handlePut.js.map +1 -0
  60. package/dist/messageHandlers/handleQuery.d.ts +2 -0
  61. package/dist/messageHandlers/handleQuery.js +18 -0
  62. package/dist/messageHandlers/handleQuery.js.map +1 -0
  63. package/dist/messageHandlers/handleServers copy.d.ts +2 -0
  64. package/dist/messageHandlers/handleServers copy.js +23 -0
  65. package/dist/messageHandlers/handleServers copy.js.map +1 -0
  66. package/dist/messageHandlers/handleServers.d.ts +2 -0
  67. package/dist/messageHandlers/handleServers.js +23 -0
  68. package/dist/messageHandlers/handleServers.js.map +1 -0
  69. package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
  70. package/dist/messageHandlers/handleSubscribe.js +62 -0
  71. package/dist/messageHandlers/handleSubscribe.js.map +1 -0
  72. package/dist/metrics/metricsConfig.d.ts +6 -0
  73. package/dist/metrics/metricsConfig.js +35 -0
  74. package/dist/metrics/metricsConfig.js.map +1 -0
  75. package/dist/toolDbClientOnMessage.d.ts +2 -2
  76. package/dist/toolDbClientOnMessage.js +60 -259
  77. package/dist/toolDbClientOnMessage.js.map +1 -1
  78. package/dist/toolDbCrdtPut.js +1 -1
  79. package/dist/toolDbCrdtPut.js.map +1 -1
  80. package/dist/toolDbGet.js +1 -1
  81. package/dist/toolDbGet.js.map +1 -1
  82. package/dist/toolDbLibP2p.d.ts +34 -0
  83. package/dist/toolDbLibP2p.js +375 -0
  84. package/dist/toolDbLibP2p.js.map +1 -0
  85. package/dist/toolDbNetwork.d.ts +33 -0
  86. package/dist/toolDbNetwork.js +277 -0
  87. package/dist/toolDbNetwork.js.map +1 -0
  88. package/dist/toolDbPut.js +1 -1
  89. package/dist/toolDbPut.js.map +1 -1
  90. package/dist/toolDbQueryKeys.js +1 -1
  91. package/dist/toolDbQueryKeys.js.map +1 -1
  92. package/dist/toolDbSignUp.js +1 -1
  93. package/dist/toolDbSignUp.js.map +1 -1
  94. package/dist/toolDbSubscribe.js +1 -1
  95. package/dist/toolDbSubscribe.js.map +1 -1
  96. package/dist/toolDbVerificationWrapper.js +1 -1
  97. package/dist/toolDbVerificationWrapper.js.map +1 -1
  98. package/dist/tooldb.d.ts +29 -11
  99. package/dist/tooldb.js +119 -41
  100. package/dist/tooldb.js.map +1 -1
  101. package/dist/types/message.d.ts +11 -2
  102. package/dist/types/message.js.map +1 -1
  103. package/dist/types/tooldb.d.ts +34 -1
  104. package/dist/types/tooldb.js +19 -0
  105. package/dist/types/tooldb.js.map +1 -1
  106. package/dist/utils/indexedb.d.ts +2 -6
  107. package/dist/utils/indexedb.js +13 -3
  108. package/dist/utils/indexedb.js.map +1 -1
  109. package/dist/utils/leveldb.d.ts +2 -6
  110. package/dist/utils/leveldb.js +12 -2
  111. package/dist/utils/leveldb.js.map +1 -1
  112. package/dist/utils/verifyPeer.d.ts +2 -0
  113. package/dist/utils/verifyPeer.js +13 -0
  114. package/dist/utils/verifyPeer.js.map +1 -0
  115. package/dist/wss.d.ts +1 -1
  116. package/dist/wss.js +5 -5
  117. package/dist/wss.js.map +1 -1
  118. package/jest.config.ts +2 -1
  119. package/package.json +3 -2
  120. package/test-alice/000003.log +0 -0
  121. package/test-alice/CURRENT +1 -0
  122. package/test-alice/LOCK +0 -0
  123. package/test-alice/LOG +1 -0
  124. package/test-alice/MANIFEST-000002 +0 -0
  125. package/test-bob/000003.log +0 -0
  126. package/test-bob/CURRENT +1 -0
  127. package/test-bob/LOCK +0 -0
  128. package/test-bob/LOG +1 -0
  129. package/test-bob/MANIFEST-000002 +0 -0
  130. package/test-node-a/000003.log +0 -0
  131. package/test-node-a/CURRENT +1 -0
  132. package/test-node-a/LOCK +0 -0
  133. package/test-node-a/LOG +1 -0
  134. package/test-node-a/MANIFEST-000002 +0 -0
  135. package/test-node-b/000003.log +0 -0
  136. package/test-node-b/CURRENT +1 -0
  137. package/test-node-b/LOCK +0 -0
  138. package/test-node-b/LOG +1 -0
  139. package/test-node-b/MANIFEST-000002 +0 -0
  140. package/toolDbLibP2p.ts +206 -0
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var __1 = require("..");
4
+ function handleCrdt(message, remotePeerId) {
5
+ var key = message.key;
6
+ this.triggerKeyListener(key, message);
7
+ // OOHH THE TYPECAST PAIN
8
+ // This works but the hacking is awful, we need a better solution for storing the crdts
9
+ var savedDoc = (0, __1.base64ToBinaryDocument)(message.doc);
10
+ this.store.put(key + ".crdt", savedDoc, function (err, data) {
11
+ //
12
+ });
13
+ }
14
+ exports.default = handleCrdt;
15
+ //# sourceMappingURL=handleCrdt%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdt copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdt copy.ts"],"names":[],"mappings":";;AAAA,wBAAiE;AAEjE,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAEpB,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,yBAAyB;IACzB,uFAAuF;IACvF,IAAM,QAAQ,GAAG,IAAA,0BAAsB,EAAC,OAAO,CAAC,GAAG,CAAQ,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,UAAO,EAAE,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;QAChD,EAAE;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAdD,6BAcC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtMessage, ToolDb } from "..";
2
+ export default function handleCrdt(this: ToolDb, message: CrdtMessage, remotePeerId: string): void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var __1 = require("..");
4
+ function handleCrdt(message, remotePeerId) {
5
+ var key = message.key;
6
+ this.triggerKeyListener(key, message);
7
+ // OOHH THE TYPECAST PAIN
8
+ // This works but the hacking is awful, we need a better solution for storing the crdts
9
+ var savedDoc = (0, __1.base64ToBinaryDocument)(message.doc);
10
+ this.store.put(key + ".crdt", savedDoc, function (err, data) {
11
+ //
12
+ });
13
+ }
14
+ exports.default = handleCrdt;
15
+ //# sourceMappingURL=handleCrdt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdt.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdt.ts"],"names":[],"mappings":";;AAAA,wBAAiE;AAEjE,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAEpB,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,yBAAyB;IACzB,uFAAuF;IACvF,IAAM,QAAQ,GAAG,IAAA,0BAAsB,EAAC,OAAO,CAAC,GAAG,CAAQ,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,UAAO,EAAE,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;QAChD,EAAE;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAdD,6BAcC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtGetMessage, ToolDb } from "..";
2
+ export default function handleCrdtGet(this: ToolDb, message: CrdtGetMessage, remotePeerId: string): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var automerge_1 = __importDefault(require("automerge"));
7
+ var __1 = require("..");
8
+ function handleCrdtGet(message, remotePeerId) {
9
+ var _this = this;
10
+ this.loadCrdtDocument(message.key).then(function (currentDoc) {
11
+ var saved = automerge_1.default.save(currentDoc || automerge_1.default.init());
12
+ _this.websockets.sendToClientId(remotePeerId, {
13
+ type: "crdt",
14
+ id: message.id,
15
+ key: message.key,
16
+ to: [],
17
+ doc: (0, __1.uint8ToBase64)(saved),
18
+ });
19
+ });
20
+ }
21
+ exports.default = handleCrdtGet;
22
+ //# sourceMappingURL=handleCrdtGet%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtGet copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtGet copy.ts"],"names":[],"mappings":";;;;;AAAA,wDAAkC;AAClC,wBAAwE;AAExE,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAeC;IAVC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;QACjD,IAAM,KAAK,GAAG,mBAAS,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE;YAC3C,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,IAAA,iBAAa,EAAC,KAAK,CAAC;SACX,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,gCAeC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtGetMessage, ToolDb } from "..";
2
+ export default function handleCrdtGet(this: ToolDb, message: CrdtGetMessage, remotePeerId: string): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var automerge_1 = __importDefault(require("automerge"));
7
+ var __1 = require("..");
8
+ function handleCrdtGet(message, remotePeerId) {
9
+ var _this = this;
10
+ this.loadCrdtDocument(message.key).then(function (currentDoc) {
11
+ var saved = automerge_1.default.save(currentDoc || automerge_1.default.init());
12
+ _this.network.sendToClientId(remotePeerId, {
13
+ type: "crdt",
14
+ id: message.id,
15
+ key: message.key,
16
+ to: [],
17
+ doc: (0, __1.uint8ToBase64)(saved),
18
+ });
19
+ });
20
+ }
21
+ exports.default = handleCrdtGet;
22
+ //# sourceMappingURL=handleCrdtGet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtGet.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtGet.ts"],"names":[],"mappings":";;;;;AAAA,wDAAkC;AAClC,wBAAwE;AAExE,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAeC;IAVC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;QACjD,IAAM,KAAK,GAAG,mBAAS,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;YACxC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,IAAA,iBAAa,EAAC,KAAK,CAAC;SACX,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,gCAeC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtPutMessage, ToolDb } from "..";
2
+ export default function handleCrdtPut(this: ToolDb, message: CrdtPutMessage, remotePeerId: string): void;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var automerge_1 = __importDefault(require("automerge"));
7
+ var __1 = require("..");
8
+ var toolDbVerificationWrapper_1 = __importDefault(require("../toolDbVerificationWrapper"));
9
+ function handleCrdtPut(message, remotePeerId) {
10
+ var _this = this;
11
+ // key = aggregated, final value
12
+ // key.crdt = automerge doc with changes
13
+ // const writeStart = new Date().getTime();
14
+ toolDbVerificationWrapper_1.default.call(this, message).then(function (value) {
15
+ // console.log("CRDT Verification wrapper result: ", value);
16
+ if (value === __1.VerifyResult.Verified) {
17
+ var key_1 = message.k;
18
+ var data = [];
19
+ try {
20
+ data = JSON.parse(message.v);
21
+ }
22
+ catch (e) {
23
+ //
24
+ }
25
+ var changes_1 = data.map(__1.base64ToBinaryChange);
26
+ _this.loadCrdtDocument(key_1).then(function (currentDoc) {
27
+ // if (currentDoc) {
28
+ // console.log(
29
+ // "loaded",
30
+ // key,
31
+ // currentDoc,
32
+ // Automerge.getHistory(currentDoc)
33
+ // );
34
+ // }
35
+ var newDoc = automerge_1.default.init();
36
+ try {
37
+ newDoc = automerge_1.default.applyChanges(currentDoc || automerge_1.default.init(), changes_1)[0];
38
+ }
39
+ catch (e) {
40
+ try {
41
+ newDoc = automerge_1.default.applyChanges(automerge_1.default.init(), changes_1)[0];
42
+ }
43
+ catch (ee) {
44
+ if (_this.options.debug) {
45
+ console.log(ee);
46
+ }
47
+ }
48
+ }
49
+ // if (newDoc) {
50
+ // console.log(
51
+ // "new document changes:",
52
+ // Automerge.getHistory(newDoc)
53
+ // );
54
+ // }
55
+ // persist
56
+ _this.documents[key_1] = newDoc;
57
+ // OOHH THE TYPECAST PAIN
58
+ // This works but the hacking is awful, we need a better solution for storing the crdts
59
+ var savedDoc = automerge_1.default.save(newDoc);
60
+ _this.store.put(key_1 + ".crdt", savedDoc, function (err, data) {
61
+ // const writeEnd = new Date().getTime();
62
+ // console.log("CRDT write: ", (writeEnd - writeStart) / 1000);
63
+ });
64
+ var crdtMessage = {
65
+ type: "crdt",
66
+ key: key_1,
67
+ id: message.id,
68
+ to: [],
69
+ doc: (0, __1.uint8ToBase64)(savedDoc),
70
+ };
71
+ _this.triggerKeyListener(key_1, crdtMessage);
72
+ // relay to other servers
73
+ // !!!
74
+ _this.websockets.sendToAll(crdtMessage, true);
75
+ });
76
+ }
77
+ else {
78
+ console.log("unverified message", value, message);
79
+ }
80
+ });
81
+ }
82
+ exports.default = handleCrdtPut;
83
+ //# sourceMappingURL=handleCrdtPut%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtPut copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtPut copy.ts"],"names":[],"mappings":";;;;;AAAA,wDAAkC;AAClC,wBAOY;AACZ,2FAAqE;AAErE,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAiFC;IA5EC,gCAAgC;IAChC,wCAAwC;IACxC,2CAA2C;IAC3C,mCAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK;QACvD,4DAA4D;QAC5D,IAAI,KAAK,KAAK,gBAAY,CAAC,QAAQ,EAAE;YACnC,IAAM,KAAG,GAAG,OAAO,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,GAAa,EAAE,CAAC;YACxB,IAAI;gBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,EAAE;aACH;YACD,IAAM,SAAO,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAoB,CAAC,CAAC;YAE/C,KAAI,CAAC,gBAAgB,CAAC,KAAG,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;gBACzC,oBAAoB;gBACpB,iBAAiB;gBACjB,gBAAgB;gBAChB,WAAW;gBACX,kBAAkB;gBAClB,uCAAuC;gBACvC,OAAO;gBACP,IAAI;gBAEJ,IAAI,MAAM,GAAG,mBAAS,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI;oBACD,MAAM,GAAI,mBAAS,CAAC,YAAY,CAC/B,UAAU,IAAI,mBAAS,CAAC,IAAI,EAAE,EAC9B,SAAO,CACR,GAHM,CAGL;iBACH;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAI;wBACD,MAAM,GAAI,mBAAS,CAAC,YAAY,CAAC,mBAAS,CAAC,IAAI,EAAE,EAAE,SAAO,CAAC,GAArD,CAAsD;qBAC9D;oBAAC,OAAO,EAAE,EAAE;wBACX,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;4BACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBACjB;qBACF;iBACF;gBAED,gBAAgB;gBAChB,iBAAiB;gBACjB,+BAA+B;gBAC/B,mCAAmC;gBACnC,OAAO;gBACP,IAAI;gBAEJ,UAAU;gBACV,KAAI,CAAC,SAAS,CAAC,KAAG,CAAC,GAAG,MAAM,CAAC;gBAE7B,yBAAyB;gBACzB,uFAAuF;gBACvF,IAAM,QAAQ,GAAG,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAQ,CAAC;gBAC/C,KAAI,CAAC,KAAK,CAAC,GAAG,CAAI,KAAG,UAAO,EAAE,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;oBAChD,yCAAyC;oBACzC,+DAA+D;gBACjE,CAAC,CAAC,CAAC;gBAEH,IAAM,WAAW,GAAgB;oBAC/B,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,KAAG;oBACR,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,EAAE,EAAE,EAAE;oBACN,GAAG,EAAE,IAAA,iBAAa,EAAC,QAAQ,CAAC;iBAC7B,CAAC;gBACF,KAAI,CAAC,kBAAkB,CAAC,KAAG,EAAE,WAAW,CAAC,CAAC;gBAE1C,yBAAyB;gBACzB,MAAM;gBACN,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAjFD,gCAiFC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtPutMessage, ToolDb } from "..";
2
+ export default function handleCrdtPut(this: ToolDb, message: CrdtPutMessage, remotePeerId: string): void;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var automerge_1 = __importDefault(require("automerge"));
7
+ var __1 = require("..");
8
+ var toolDbVerificationWrapper_1 = __importDefault(require("../toolDbVerificationWrapper"));
9
+ function handleCrdtPut(message, remotePeerId) {
10
+ var _this = this;
11
+ // key = aggregated, final value
12
+ // key.crdt = automerge doc with changes
13
+ // const writeStart = new Date().getTime();
14
+ toolDbVerificationWrapper_1.default.call(this, message).then(function (value) {
15
+ // console.log("CRDT Verification wrapper result: ", value);
16
+ if (value === __1.VerifyResult.Verified) {
17
+ var key_1 = message.k;
18
+ var data = [];
19
+ try {
20
+ data = JSON.parse(message.v);
21
+ }
22
+ catch (e) {
23
+ //
24
+ }
25
+ var changes_1 = data.map(__1.base64ToBinaryChange);
26
+ _this.loadCrdtDocument(key_1).then(function (currentDoc) {
27
+ // if (currentDoc) {
28
+ // console.log(
29
+ // "loaded",
30
+ // key,
31
+ // currentDoc,
32
+ // Automerge.getHistory(currentDoc)
33
+ // );
34
+ // }
35
+ var newDoc = automerge_1.default.init();
36
+ try {
37
+ newDoc = automerge_1.default.applyChanges(currentDoc || automerge_1.default.init(), changes_1)[0];
38
+ }
39
+ catch (e) {
40
+ try {
41
+ newDoc = automerge_1.default.applyChanges(automerge_1.default.init(), changes_1)[0];
42
+ }
43
+ catch (ee) {
44
+ if (_this.options.debug) {
45
+ console.log(ee);
46
+ }
47
+ }
48
+ }
49
+ // if (newDoc) {
50
+ // console.log(
51
+ // "new document changes:",
52
+ // Automerge.getHistory(newDoc)
53
+ // );
54
+ // }
55
+ // persist
56
+ _this.documents[key_1] = newDoc;
57
+ // OOHH THE TYPECAST PAIN
58
+ // This works but the hacking is awful, we need a better solution for storing the crdts
59
+ var savedDoc = automerge_1.default.save(newDoc);
60
+ _this.store.put(key_1 + ".crdt", savedDoc, function (err, data) {
61
+ // const writeEnd = new Date().getTime();
62
+ // console.log("CRDT write: ", (writeEnd - writeStart) / 1000);
63
+ });
64
+ var crdtMessage = {
65
+ type: "crdt",
66
+ key: key_1,
67
+ id: message.id,
68
+ to: [],
69
+ doc: (0, __1.uint8ToBase64)(savedDoc),
70
+ };
71
+ _this.triggerKeyListener(key_1, crdtMessage);
72
+ // relay to other servers
73
+ // !!!
74
+ _this.network.sendToAll(crdtMessage, true);
75
+ });
76
+ }
77
+ else {
78
+ console.log("unverified message", value, message);
79
+ }
80
+ });
81
+ }
82
+ exports.default = handleCrdtPut;
83
+ //# sourceMappingURL=handleCrdtPut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtPut.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtPut.ts"],"names":[],"mappings":";;;;;AAAA,wDAAkC;AAClC,wBAOY;AACZ,2FAAqE;AAErE,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAiFC;IA5EC,gCAAgC;IAChC,wCAAwC;IACxC,2CAA2C;IAC3C,mCAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK;QACvD,4DAA4D;QAC5D,IAAI,KAAK,KAAK,gBAAY,CAAC,QAAQ,EAAE;YACnC,IAAM,KAAG,GAAG,OAAO,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,GAAa,EAAE,CAAC;YACxB,IAAI;gBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,EAAE;aACH;YACD,IAAM,SAAO,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAoB,CAAC,CAAC;YAE/C,KAAI,CAAC,gBAAgB,CAAC,KAAG,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;gBACzC,oBAAoB;gBACpB,iBAAiB;gBACjB,gBAAgB;gBAChB,WAAW;gBACX,kBAAkB;gBAClB,uCAAuC;gBACvC,OAAO;gBACP,IAAI;gBAEJ,IAAI,MAAM,GAAG,mBAAS,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI;oBACD,MAAM,GAAI,mBAAS,CAAC,YAAY,CAC/B,UAAU,IAAI,mBAAS,CAAC,IAAI,EAAE,EAC9B,SAAO,CACR,GAHM,CAGL;iBACH;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAI;wBACD,MAAM,GAAI,mBAAS,CAAC,YAAY,CAAC,mBAAS,CAAC,IAAI,EAAE,EAAE,SAAO,CAAC,GAArD,CAAsD;qBAC9D;oBAAC,OAAO,EAAE,EAAE;wBACX,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;4BACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBACjB;qBACF;iBACF;gBAED,gBAAgB;gBAChB,iBAAiB;gBACjB,+BAA+B;gBAC/B,mCAAmC;gBACnC,OAAO;gBACP,IAAI;gBAEJ,UAAU;gBACV,KAAI,CAAC,SAAS,CAAC,KAAG,CAAC,GAAG,MAAM,CAAC;gBAE7B,yBAAyB;gBACzB,uFAAuF;gBACvF,IAAM,QAAQ,GAAG,mBAAS,CAAC,IAAI,CAAC,MAAM,CAAQ,CAAC;gBAC/C,KAAI,CAAC,KAAK,CAAC,GAAG,CAAI,KAAG,UAAO,EAAE,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;oBAChD,yCAAyC;oBACzC,+DAA+D;gBACjE,CAAC,CAAC,CAAC;gBAEH,IAAM,WAAW,GAAgB;oBAC/B,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,KAAG;oBACR,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,EAAE,EAAE,EAAE;oBACN,GAAG,EAAE,IAAA,iBAAa,EAAC,QAAQ,CAAC;iBAC7B,CAAC;gBACF,KAAI,CAAC,kBAAkB,CAAC,KAAG,EAAE,WAAW,CAAC,CAAC;gBAE1C,yBAAyB;gBACzB,MAAM;gBACN,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAjFD,gCAiFC"}
@@ -0,0 +1,2 @@
1
+ import { GetMessage, ToolDb } from "..";
2
+ export default function handleGet(this: ToolDb, message: GetMessage, remotePeerId: string): void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ function handleGet(message, remotePeerId) {
15
+ var _this = this;
16
+ this.store.get(message.key, function (err, data) {
17
+ if (data) {
18
+ try {
19
+ // Use the id of the get so the other client knows we are replying
20
+ var oldData = __assign(__assign({ type: "put" }, JSON.parse(data)), { id: message.id });
21
+ _this.websockets.sendToClientId(remotePeerId, oldData);
22
+ }
23
+ catch (e) {
24
+ // socket.send(data);
25
+ // do nothing
26
+ }
27
+ }
28
+ else {
29
+ if (_this.options.debug) {
30
+ console.log("Local key not found, relay", JSON.stringify(message));
31
+ }
32
+ _this.websockets.sendToAll(message);
33
+ }
34
+ });
35
+ }
36
+ exports.default = handleGet;
37
+ //# sourceMappingURL=handleGet%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGet copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handleGet copy.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,SAAwB,SAAS,CAE/B,OAAmB,EACnB,YAAoB;IAHtB,iBA0BC;IArBC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,IAAI;QACpC,IAAI,IAAI,EAAE;YACR,IAAI;gBACF,kEAAkE;gBAClE,IAAM,OAAO,GAAG,oBACd,IAAI,EAAE,KAAK,IACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KACnB,EAAE,EAAE,OAAO,CAAC,EAAE,GACD,CAAC;gBAChB,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;aACvD;YAAC,OAAO,CAAC,EAAE;gBACV,qBAAqB;gBACrB,aAAa;aACd;SACF;aAAM;YACL,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;aACpE;YACD,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACpC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA1BD,4BA0BC"}
@@ -0,0 +1,2 @@
1
+ import { GetMessage, ToolDb } from "..";
2
+ export default function handleGet(this: ToolDb, message: GetMessage, remotePeerId: string): void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ function handleGet(message, remotePeerId) {
15
+ var _this = this;
16
+ this.store.get(message.key, function (err, data) {
17
+ if (data) {
18
+ try {
19
+ // Use the id of the get so the other client knows we are replying
20
+ var oldData = __assign(__assign({ type: "put" }, JSON.parse(data)), { id: message.id });
21
+ _this.network.sendToClientId(remotePeerId, oldData);
22
+ }
23
+ catch (e) {
24
+ // socket.send(data);
25
+ // do nothing
26
+ }
27
+ }
28
+ else {
29
+ if (_this.options.debug) {
30
+ console.log("Local key not found, relay", JSON.stringify(message));
31
+ }
32
+ _this.network.sendToAll(message, false, true);
33
+ }
34
+ });
35
+ }
36
+ exports.default = handleGet;
37
+ //# sourceMappingURL=handleGet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGet.js","sourceRoot":"","sources":["../../src/messageHandlers/handleGet.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,SAAwB,SAAS,CAE/B,OAAmB,EACnB,YAAoB;IAHtB,iBA0BC;IArBC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,IAAI;QACpC,IAAI,IAAI,EAAE;YACR,IAAI;gBACF,kEAAkE;gBAClE,IAAM,OAAO,GAAG,oBACd,IAAI,EAAE,KAAK,IACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KACnB,EAAE,EAAE,OAAO,CAAC,EAAE,GACD,CAAC;gBAChB,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;aACpD;YAAC,OAAO,CAAC,EAAE;gBACV,qBAAqB;gBACrB,aAAa;aACd;SACF;aAAM;YACL,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;aACpE;YACD,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC9C;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA1BD,4BA0BC"}
@@ -0,0 +1,2 @@
1
+ import { ServersMessage, ToolDb } from "..";
2
+ export default function handleServers(this: ToolDb, message: ServersMessage, remotePeerId: string): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var verifyPeer_1 = __importDefault(require("../utils/verifyPeer"));
7
+ function handleServers(message, remotePeerId) {
8
+ var _this = this;
9
+ message.servers.forEach(function (peer) {
10
+ (0, verifyPeer_1.default)(peer).then(function (verified) {
11
+ // Add this peer to our list of peers
12
+ if (verified) {
13
+ var filteredPeers = _this.peers.findIndex(function (p) { return p.pubkey === peer.pubkey; });
14
+ if (filteredPeers === -1) {
15
+ // Add this peer to the list
16
+ _this.peers.push(peer);
17
+ }
18
+ }
19
+ });
20
+ });
21
+ }
22
+ exports.default = handleServers;
23
+ //# sourceMappingURL=handleGetServers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetServers.js","sourceRoot":"","sources":["../../src/messageHandlers/handleGetServers.ts"],"names":[],"mappings":";;;;;AACA,mEAA6C;AAE7C,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAmBC;IAdC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI;QAC3B,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,QAAQ;YAC7B,qCAAqC;YACrC,IAAI,QAAQ,EAAE;gBACZ,IAAM,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CACxC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAxB,CAAwB,CAChC,CAAC;gBACF,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACxB,4BAA4B;oBAC5B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAnBD,gCAmBC"}
@@ -0,0 +1,2 @@
1
+ import { JoinMessage, ToolDb } from "..";
2
+ export default function handleJoin(this: ToolDb, message: JoinMessage, remotePeerId: string): void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var verifyPeer_1 = __importDefault(require("../utils/verifyPeer"));
7
+ function handleJoin(message, remotePeerId) {
8
+ var _this = this;
9
+ (0, verifyPeer_1.default)(message.peer).then(function (verified) {
10
+ // Add this peer to our list of peers
11
+ if (verified) {
12
+ var filteredPeers = _this.peers.filter(function (p) { return p.pubkey !== message.peer.pubkey; });
13
+ if (filteredPeers.length === 0 &&
14
+ message.peer.host &&
15
+ message.peer.port) {
16
+ // Add this peer to the list
17
+ _this.peers.push(message.peer);
18
+ // Reply with our servers list
19
+ _this.network.sendToClientId(remotePeerId, {
20
+ type: "servers",
21
+ servers: _this.peers.filter(function (p) { return p.topic === message.peer.topic; }),
22
+ topic: message.peer.topic,
23
+ id: message.id,
24
+ });
25
+ // If we are a server ourselves we broadcast this message
26
+ if (_this.options.server) {
27
+ _this.network.sendToAll(message, true);
28
+ }
29
+ }
30
+ }
31
+ else {
32
+ console.warn("Blocked a remote peer from joining; ", message);
33
+ }
34
+ });
35
+ }
36
+ exports.default = handleJoin;
37
+ //# sourceMappingURL=handleJoin%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleJoin copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handleJoin copy.ts"],"names":[],"mappings":";;;;;AAUA,mEAA6C;AAE7C,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAHtB,iBAmCC;IA9BC,IAAA,oBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,QAAQ;QACrC,qCAAqC;QACrC,IAAI,QAAQ,EAAE;YACZ,IAAM,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CACrC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,EAAhC,CAAgC,CACxC,CAAC;YACF,IACE,aAAa,CAAC,MAAM,KAAK,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,CAAC,IAAI,CAAC,IAAI,EACjB;gBACA,4BAA4B;gBAC5B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,8BAA8B;gBAC9B,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;oBACxC,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,EAA9B,CAA8B,CAAC;oBACjE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;oBACzB,EAAE,EAAE,OAAO,CAAC,EAAE;iBACG,CAAC,CAAC;gBAErB,yDAAyD;gBACzD,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACvB,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACvC;aACF;SACF;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;SAC/D;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAnCD,6BAmCC"}
@@ -0,0 +1,2 @@
1
+ import { JoinMessage, ToolDb } from "..";
2
+ export default function handleJoin(this: ToolDb, message: JoinMessage, remotePeerId: string): void;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var verifyPeer_1 = __importDefault(require("../utils/verifyPeer"));
7
+ function handleJoin(message, remotePeerId) {
8
+ var _this = this;
9
+ (0, verifyPeer_1.default)(message.peer).then(function (verified) {
10
+ // Add this peer to our list of peers
11
+ if (verified) {
12
+ var filteredPeers = _this.peers.filter(function (p) { return p.pubkey !== message.peer.pubkey; });
13
+ if (filteredPeers.length === 0 &&
14
+ message.peer.host &&
15
+ message.peer.port) {
16
+ // Add this peer to the list
17
+ _this.peers.push(message.peer);
18
+ // Reply with our servers list
19
+ _this.network.sendToClientId(remotePeerId, {
20
+ type: "servers",
21
+ servers: _this.peers.filter(function (p) { return p.topic === message.peer.topic; }),
22
+ id: message.id,
23
+ });
24
+ // If we are a server ourselves we broadcast this message
25
+ if (_this.options.server) {
26
+ _this.network.sendToAll(message, true);
27
+ }
28
+ }
29
+ }
30
+ else {
31
+ console.warn("Blocked a remote peer from joining; ", message);
32
+ }
33
+ });
34
+ }
35
+ exports.default = handleJoin;
36
+ //# sourceMappingURL=handleJoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleJoin.js","sourceRoot":"","sources":["../../src/messageHandlers/handleJoin.ts"],"names":[],"mappings":";;;;;AAUA,mEAA6C;AAE7C,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAHtB,iBAkCC;IA7BC,IAAA,oBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,QAAQ;QACrC,qCAAqC;QACrC,IAAI,QAAQ,EAAE;YACZ,IAAM,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CACrC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,EAAhC,CAAgC,CACxC,CAAC;YACF,IACE,aAAa,CAAC,MAAM,KAAK,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,CAAC,IAAI,CAAC,IAAI,EACjB;gBACA,4BAA4B;gBAC5B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,8BAA8B;gBAC9B,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;oBACxC,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,EAA9B,CAA8B,CAAC;oBACjE,EAAE,EAAE,OAAO,CAAC,EAAE;iBACG,CAAC,CAAC;gBAErB,yDAAyD;gBACzD,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACvB,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACvC;aACF;SACF;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;SAC/D;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAlCD,6BAkCC"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb, ToolDbMessage } from "..";
2
+ export default function handlePing(this: ToolDb, message: ToolDbMessage, remotePeerId: string): void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function handlePing(message, remotePeerId) {
4
+ this.websockets.sendToClientId(remotePeerId, {
5
+ type: "pong",
6
+ isServer: this.options.server,
7
+ clientId: this.options.id,
8
+ to: [],
9
+ id: message.id,
10
+ });
11
+ }
12
+ exports.default = handlePing;
13
+ //# sourceMappingURL=handlePing%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePing copy.js","sourceRoot":"","sources":["../../src/messageHandlers/handlePing copy.ts"],"names":[],"mappings":";;AAEA,SAAwB,UAAU,CAEhC,OAAsB,EACtB,YAAoB;IAEpB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE;QAC3C,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;QACzB,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;KACA,CAAC,CAAC;AACpB,CAAC;AAZD,6BAYC"}
@@ -0,0 +1,2 @@
1
+ import { PingMessage, ToolDb } from "..";
2
+ export default function handlePing(this: ToolDb, message: PingMessage, remotePeerId: string): void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var __1 = require("..");
4
+ function handlePing(message, remotePeerId) {
5
+ this.network.sendToClientId(remotePeerId, {
6
+ type: "pong",
7
+ isServer: this.options.server,
8
+ clientId: this.options.id,
9
+ to: [],
10
+ id: message.id,
11
+ });
12
+ this.network.sendToClientId(remotePeerId, {
13
+ type: "servers",
14
+ servers: this.peers,
15
+ to: [],
16
+ id: (0, __1.textRandom)(10),
17
+ });
18
+ }
19
+ exports.default = handlePing;
20
+ //# sourceMappingURL=handlePing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePing.js","sourceRoot":"","sources":["../../src/messageHandlers/handlePing.ts"],"names":[],"mappings":";;AAAA,wBAMY;AAEZ,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAEpB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;QACxC,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;QACzB,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;KACA,CAAC,CAAC;IAElB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;QACxC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,IAAA,cAAU,EAAC,EAAE,CAAC;KACD,CAAC,CAAC;AACvB,CAAC;AAnBD,6BAmBC"}
@@ -0,0 +1,2 @@
1
+ import { PongMessage, ToolDb } from "..";
2
+ export default function handlePong(this: ToolDb, message: PongMessage, remotePeerId: string): void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var __1 = require("..");
4
+ function handlePong(message, remotePeerId) {
5
+ var _this = this;
6
+ this.onConnect();
7
+ if (this.options.server && this.options.privateKey) {
8
+ var timestamp_1 = new Date().getTime();
9
+ // Should be an exact match of the verifyPeer function!
10
+ var dataToSign = this.options.topic + "-" + timestamp_1 + "-" + this.options.host + ":" + this.options.port;
11
+ (0, __1.signData)(dataToSign, this.options.privateKey).then(function (signature) {
12
+ var meAsPeer = {
13
+ topic: _this.options.topic,
14
+ timestamp: timestamp_1,
15
+ host: _this.options.host,
16
+ port: _this.options.port,
17
+ pubkey: _this.options.id,
18
+ sig: signature,
19
+ };
20
+ _this.network.sendToClientId(remotePeerId, {
21
+ type: "join",
22
+ peer: meAsPeer,
23
+ to: [],
24
+ id: (0, __1.textRandom)(10),
25
+ });
26
+ });
27
+ }
28
+ }
29
+ exports.default = handlePong;
30
+ //# sourceMappingURL=handlePong.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePong.js","sourceRoot":"","sources":["../../src/messageHandlers/handlePong.ts"],"names":[],"mappings":";;AAAA,wBAA4E;AAG5E,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAHtB,iBA+BC;IA1BC,IAAI,CAAC,SAAS,EAAE,CAAC;IAEjB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QAClD,IAAM,WAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAEvC,uDAAuD;QACvD,IAAM,UAAU,GAAM,IAAI,CAAC,OAAO,CAAC,KAAK,SAAI,WAAS,SAAI,IAAI,CAAC,OAAO,CAAC,IAAI,SAAI,IAAI,CAAC,OAAO,CAAC,IAAM,CAAC;QAElG,IAAA,YAAQ,EAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,SAAS;YAC3D,IAAM,QAAQ,GAAS;gBACrB,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,SAAS,EAAE,WAAS;gBACpB,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,MAAM,EAAE,KAAI,CAAC,OAAO,CAAC,EAAE;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC;YAEF,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;gBACxC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,IAAA,cAAU,EAAC,EAAE,CAAC;aACJ,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AA/BD,6BA+BC"}
@@ -0,0 +1,2 @@
1
+ import { PutMessage, ToolDb } from "..";
2
+ export default function handlePut(this: ToolDb, message: PutMessage, remotePeerId: string): void;