tool-db 1.2.3 → 1.4.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.
- package/.github/workflows/main.yml +1 -1
- package/README.md +53 -6
- package/custom-test-env.js +28 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/messageHandlers/handleCrdt.d.ts +2 -0
- package/dist/messageHandlers/handleCrdt.js +15 -0
- package/dist/messageHandlers/handleCrdt.js.map +1 -0
- package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtGet.js +30 -0
- package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
- package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtPut.js +85 -0
- package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
- package/dist/messageHandlers/handleGet.d.ts +2 -0
- package/dist/messageHandlers/handleGet.js +37 -0
- package/dist/messageHandlers/handleGet.js.map +1 -0
- package/dist/messageHandlers/handleJoin.d.ts +2 -0
- package/dist/messageHandlers/handleJoin.js +36 -0
- package/dist/messageHandlers/handleJoin.js.map +1 -0
- package/dist/messageHandlers/handlePing.d.ts +2 -0
- package/dist/messageHandlers/handlePing.js +20 -0
- package/dist/messageHandlers/handlePing.js.map +1 -0
- package/dist/messageHandlers/handlePong.d.ts +2 -0
- package/dist/messageHandlers/handlePong.js +32 -0
- package/dist/messageHandlers/handlePong.js.map +1 -0
- package/dist/messageHandlers/handlePut.d.ts +2 -0
- package/dist/messageHandlers/handlePut.js +61 -0
- package/dist/messageHandlers/handlePut.js.map +1 -0
- package/dist/messageHandlers/handleQuery.d.ts +2 -0
- package/dist/messageHandlers/handleQuery.js +18 -0
- package/dist/messageHandlers/handleQuery.js.map +1 -0
- package/dist/messageHandlers/handleServers.d.ts +2 -0
- package/dist/messageHandlers/handleServers.js +23 -0
- package/dist/messageHandlers/handleServers.js.map +1 -0
- package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
- package/dist/messageHandlers/handleSubscribe.js +62 -0
- package/dist/messageHandlers/handleSubscribe.js.map +1 -0
- package/dist/toolDbClientOnMessage.d.ts +2 -2
- package/dist/toolDbClientOnMessage.js +57 -264
- package/dist/toolDbClientOnMessage.js.map +1 -1
- package/dist/toolDbCrdtGet.d.ts +9 -0
- package/dist/toolDbCrdtGet.js +61 -0
- package/dist/toolDbCrdtGet.js.map +1 -0
- package/dist/toolDbCrdtPut.js +1 -1
- package/dist/toolDbCrdtPut.js.map +1 -1
- package/dist/toolDbGet.js +1 -1
- package/dist/toolDbGet.js.map +1 -1
- package/dist/{wss.d.ts → toolDbNetwork.d.ts} +5 -7
- package/dist/{wss.js → toolDbNetwork.js} +106 -73
- package/dist/toolDbNetwork.js.map +1 -0
- package/dist/toolDbPut.js +1 -1
- package/dist/toolDbPut.js.map +1 -1
- package/dist/toolDbQueryKeys.js +1 -1
- package/dist/toolDbQueryKeys.js.map +1 -1
- package/dist/toolDbSignIn.js +2 -2
- package/dist/toolDbSignIn.js.map +1 -1
- package/dist/toolDbSignUp.js +1 -1
- package/dist/toolDbSignUp.js.map +1 -1
- package/dist/toolDbSubscribe.js +1 -1
- package/dist/toolDbSubscribe.js.map +1 -1
- package/dist/toolDbVerificationWrapper.js +1 -1
- package/dist/toolDbVerificationWrapper.js.map +1 -1
- package/dist/toolDbWebrtc.d.ts +66 -0
- package/dist/toolDbWebrtc.js +453 -0
- package/dist/toolDbWebrtc.js.map +1 -0
- package/dist/tooldb.d.ts +38 -18
- package/dist/tooldb.js +127 -47
- package/dist/tooldb.js.map +1 -1
- package/dist/types/graph.d.ts +4 -0
- package/dist/types/message.d.ts +11 -2
- package/dist/types/message.js.map +1 -1
- package/dist/types/tooldb.d.ts +34 -1
- package/dist/types/tooldb.js +19 -0
- package/dist/types/tooldb.js.map +1 -1
- package/dist/utils/catchReturn.js +1 -1
- package/dist/utils/catchReturn.js.map +1 -1
- package/dist/utils/crypto/loadSignKeys.d.ts +2 -0
- package/dist/utils/crypto/loadSignKeys.js +78 -0
- package/dist/utils/crypto/loadSignKeys.js.map +1 -0
- package/dist/utils/crypto/saveSignKeys.d.ts +2 -0
- package/dist/utils/crypto/saveSignKeys.js +67 -0
- package/dist/utils/crypto/saveSignKeys.js.map +1 -0
- package/dist/utils/crypto/verifyData.d.ts +1 -1
- package/dist/utils/crypto/verifyData.js +3 -2
- package/dist/utils/crypto/verifyData.js.map +1 -1
- package/dist/utils/getPeerSignature.d.ts +1 -0
- package/dist/utils/getPeerSignature.js +9 -0
- package/dist/utils/getPeerSignature.js.map +1 -0
- package/dist/utils/indexedb.d.ts +2 -6
- package/dist/utils/indexedb.js +13 -3
- package/dist/utils/indexedb.js.map +1 -1
- package/dist/utils/leveldb.d.ts +2 -6
- package/dist/utils/leveldb.js +12 -2
- package/dist/utils/leveldb.js.map +1 -1
- package/dist/utils/randomAnimal.js.map +1 -1
- package/dist/utils/signData.d.ts +1 -1
- package/dist/utils/signData.js +3 -2
- package/dist/utils/signData.js.map +1 -1
- package/dist/utils/verifyMessage.js +4 -4
- package/dist/utils/verifyMessage.js.map +1 -1
- package/dist/utils/verifyPeer.d.ts +2 -0
- package/dist/utils/verifyPeer.js +13 -0
- package/dist/utils/verifyPeer.js.map +1 -0
- package/dist/webrtc/joinWebrtcTorrent.d.ts +3 -0
- package/dist/webrtc/joinWebrtcTorrent.js +312 -0
- package/dist/webrtc/joinWebrtcTorrent.js.map +1 -0
- package/jest.config.ts +2 -1
- package/package.json +6 -3
- package/pvutils-tests-replacement.js +777 -0
- package/test-alice/000236.ldb +0 -0
- package/test-alice/000344.ldb +0 -0
- package/test-alice/000520.ldb +0 -0
- package/test-alice/000522.ldb +0 -0
- package/test-alice/000525.ldb +0 -0
- package/test-alice/000528.ldb +0 -0
- package/test-alice/000529.log +0 -0
- package/test-alice/CURRENT +1 -0
- package/test-alice/LOCK +0 -0
- package/test-alice/LOG +5 -0
- package/test-alice/LOG.old +5 -0
- package/test-alice/MANIFEST-000527 +0 -0
- package/test-bob/000520.ldb +0 -0
- package/test-bob/000522.ldb +0 -0
- package/test-bob/000525.ldb +0 -0
- package/test-bob/000526.log +0 -0
- package/test-bob/CURRENT +1 -0
- package/test-bob/LOCK +0 -0
- package/test-bob/LOG +5 -0
- package/test-bob/LOG.old +5 -0
- package/test-bob/MANIFEST-000524 +0 -0
- package/test-node-a/000524.ldb +0 -0
- package/test-node-a/000526.ldb +0 -0
- package/test-node-a/000529.ldb +0 -0
- package/test-node-a/000532.ldb +0 -0
- package/test-node-a/000533.log +0 -0
- package/test-node-a/CURRENT +1 -0
- package/test-node-a/LOCK +0 -0
- package/test-node-a/LOG +5 -0
- package/test-node-a/LOG.old +5 -0
- package/test-node-a/MANIFEST-000531 +0 -0
- package/test-node-b/000524.ldb +0 -0
- package/test-node-b/000526.ldb +0 -0
- package/test-node-b/000529.ldb +0 -0
- package/test-node-b/000532.ldb +0 -0
- package/test-node-b/000533.log +0 -0
- package/test-node-b/CURRENT +1 -0
- package/test-node-b/LOCK +0 -0
- package/test-node-b/LOG +5 -0
- package/test-node-b/LOG.old +5 -0
- package/test-node-b/MANIFEST-000531 +0 -0
- package/toolDbLibP2p.ts +206 -0
- package/dist/deduplicator.d.ts +0 -19
- package/dist/deduplicator.js +0 -60
- package/dist/deduplicator.js.map +0 -1
- package/dist/utils/getIpFromUrl.d.ts +0 -1
- package/dist/utils/getIpFromUrl.js +0 -7
- package/dist/utils/getIpFromUrl.js.map +0 -1
- package/dist/wss.js.map +0 -1
- package/dist/zkp.d.ts +0 -1
- package/dist/zkp.js +0 -29
- package/dist/zkp.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Tool Db
|
|
2
2
|
|
|
3
|
-
## WIP
|
|
4
|
-
|
|
5
3
|
ToolDb is a peer-to-peer model for a decentralized database, inspired by Gun (Mark Nadal): https://gun.eco/
|
|
6
4
|
|
|
7
5
|
Unlike Gun we dont rely on CRDTs as a requirement, but rather make them optional using [automerge](https://github.com/automerge/automerge). In my experience, crdts are great, but having to rely on them for every bit of data was making everything much more complex and unreliable.
|
|
@@ -11,8 +9,18 @@ This setup IS NOT a requirement! It is just what I think is the best and most re
|
|
|
11
9
|
|
|
12
10
|
Since anyone can join a federated server swarm to help growing the network we use cryptography (basic public and private key authenthication and signature validation) to ensure all messages are coming from the real authors of the data that they intend to modify; this way by joining a swarm all peers in it can help validate without even having full data; even a new server peer can help, because all information is stored on each message and we dont rely on any centralized database to fetch users data.
|
|
13
11
|
|
|
14
|
-
Please check the [chain-swarm](https://github.com/
|
|
15
|
-
We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT solution you want!
|
|
12
|
+
Please check the [chain-swarm](https://github.com/Manwe-777/chain-swarm) repository to see how a federated server swarm would look like, Tool Db only handles the connection and messaging between peers, but it does not have any logic for peer discovery.
|
|
13
|
+
We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT solution you want! even WebRTC between browsers could work.
|
|
14
|
+
|
|
15
|
+
# Future work
|
|
16
|
+
|
|
17
|
+
While the database is currently functioning as expected, there are many things that could be added or improved to make it even better!
|
|
18
|
+
|
|
19
|
+
[ ] Use a common web3 format for users identity, or a more standarized key pair.
|
|
20
|
+
[ ] Allow messages encryption, add methods for Elliptic Curves, shared keys, etc.
|
|
21
|
+
[ ] Allow adding Noise/encryption to connections (probably based on the ECC)
|
|
22
|
+
[ ]
|
|
23
|
+
|
|
16
24
|
|
|
17
25
|
## Base usage
|
|
18
26
|
Connect to the selected toolDb peers;
|
|
@@ -21,26 +29,65 @@ const client = new ToolDb(options);
|
|
|
21
29
|
```
|
|
22
30
|
|
|
23
31
|
These are the options you can pass to the constructor:
|
|
32
|
+
|
|
24
33
|
```
|
|
25
34
|
{
|
|
26
35
|
// Database name to use
|
|
27
36
|
db: string;
|
|
37
|
+
|
|
28
38
|
// Show debug console logs
|
|
29
39
|
debug: boolean;
|
|
30
|
-
|
|
31
|
-
peers:
|
|
40
|
+
|
|
41
|
+
// Array of peers to connect to, each one in the form of { host: "127.0.0.1", port: 9000 }
|
|
42
|
+
peers: { host: "127.0.0.1", port: 9000 }[];
|
|
43
|
+
|
|
32
44
|
// Max number of tries when a connection fails
|
|
33
45
|
maxRetries: number;
|
|
46
|
+
|
|
47
|
+
// How long to wait (max) for a debounced key listener recv
|
|
48
|
+
triggerDebouce: number;
|
|
49
|
+
|
|
34
50
|
// How long to wait between retries
|
|
35
51
|
wait: number;
|
|
52
|
+
|
|
36
53
|
// If you want to force a Proof of Work on all messages, set how much (zero is no POW)
|
|
37
54
|
pow: number;
|
|
55
|
+
|
|
38
56
|
// Weter we are a server or not
|
|
39
57
|
server: boolean;
|
|
58
|
+
|
|
59
|
+
// Our hostname (server only)
|
|
60
|
+
host: string
|
|
61
|
+
|
|
40
62
|
// Port to listen incoming connections (server only)
|
|
41
63
|
port: number;
|
|
64
|
+
|
|
65
|
+
// A server instance like Express (server only)
|
|
66
|
+
httpServer: HTTPServer | HTTPSServer | undefined;
|
|
67
|
+
|
|
68
|
+
// Our storage namespace (default is "tooldb")
|
|
69
|
+
storageName: string;
|
|
70
|
+
|
|
71
|
+
// A custom network adapter class
|
|
72
|
+
networkAdapter: typeof ToolDbNetworkAdapter;
|
|
73
|
+
|
|
74
|
+
// A custom storage adapter function
|
|
75
|
+
storageAdapter: ToolDbStorageAdapter;
|
|
76
|
+
|
|
77
|
+
// Our client ID (defaults to a random ID)
|
|
78
|
+
id: string;
|
|
79
|
+
|
|
80
|
+
// The namespace/topic of our app
|
|
81
|
+
topic: string;
|
|
82
|
+
|
|
83
|
+
// Public and private (ECDSA) keys of our client. In the default network adapter these are used to sign
|
|
84
|
+
// our messages as we join and leave the network, and public key should match the client ID.
|
|
85
|
+
publicKey: CryptoKey | undefined;
|
|
86
|
+
privateKey: CryptoKey | undefined;
|
|
42
87
|
}
|
|
43
88
|
```
|
|
89
|
+
Notice you can use your own network and storage modules if you would like to implement custom solutions for peers discovery, connections, storage, etc, the default adapters will work both on nodejs and the browser.
|
|
90
|
+
|
|
44
91
|
|
|
45
92
|
You can create a user, sign in or create a random set of keys for anonymous usage;
|
|
46
93
|
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const Environment = require("jest-environment-jsdom");
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A custom environment to set the TextEncoder.
|
|
6
|
+
*/
|
|
7
|
+
module.exports = class CustomTestEnvironment extends Environment {
|
|
8
|
+
async setup() {
|
|
9
|
+
try {
|
|
10
|
+
fs.copyFileSync(
|
|
11
|
+
"pvutils-tests-replacement.js",
|
|
12
|
+
"node_modules/pvutils/build/utils.js"
|
|
13
|
+
);
|
|
14
|
+
} catch (e) {
|
|
15
|
+
//
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
await super.setup();
|
|
19
|
+
if (typeof this.global.TextEncoder === "undefined") {
|
|
20
|
+
const { TextEncoder } = require("util");
|
|
21
|
+
this.global.TextEncoder = TextEncoder;
|
|
22
|
+
}
|
|
23
|
+
if (typeof this.global.TextDecoder === "undefined") {
|
|
24
|
+
const { TextDecoder } = require("util");
|
|
25
|
+
this.global.TextDecoder = TextDecoder;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -18,7 +18,6 @@ export { default as textRandom } from "./utils/textRandom";
|
|
|
18
18
|
export { default as toBase64 } from "./utils/toBase64";
|
|
19
19
|
export { default as uint8ToBase64 } from "./utils/uint8ToBase64";
|
|
20
20
|
export { default as verifyMessage } from "./utils/verifyMessage";
|
|
21
|
-
export { default as getIpFromUrl } from "./utils/getIpFromUrl";
|
|
22
21
|
export { default as decodeKeyString } from "./utils/crypto/decodeKeyString";
|
|
23
22
|
export { default as decryptData } from "./utils/crypto/decryptData";
|
|
24
23
|
export { default as decryptWithPass } from "./utils/crypto/decryptWithPass";
|
|
@@ -34,4 +33,15 @@ export { default as importKey } from "./utils/crypto/importKey";
|
|
|
34
33
|
export { default as loadKeysComb } from "./utils/crypto/loadKeysComb";
|
|
35
34
|
export { default as saveKeysComb } from "./utils/crypto/saveKeysComb";
|
|
36
35
|
export { default as verifyData } from "./utils/crypto/verifyData";
|
|
36
|
+
export { default as toolDbNetwork } from "./toolDbNetwork";
|
|
37
|
+
export { default as toolDbWebrtc } from "./toolDbWebrtc";
|
|
38
|
+
export { default as handleCrdt } from "./messageHandlers/handleCrdt";
|
|
39
|
+
export { default as handleCrdtGet } from "./messageHandlers/handleCrdtGet";
|
|
40
|
+
export { default as handleCrdtPut } from "./messageHandlers/handleCrdtPut";
|
|
41
|
+
export { default as handleGet } from "./messageHandlers/handleGet";
|
|
42
|
+
export { default as handlePing } from "./messageHandlers/handlePing";
|
|
43
|
+
export { default as handlePong } from "./messageHandlers/handlePong";
|
|
44
|
+
export { default as handlePut } from "./messageHandlers/handlePut";
|
|
45
|
+
export { default as handleQuery } from "./messageHandlers/handleQuery";
|
|
46
|
+
export { default as handleSubscribe } from "./messageHandlers/handleSubscribe";
|
|
37
47
|
export { default as ToolDb } from "./tooldb";
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.ToolDb = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.
|
|
16
|
+
exports.ToolDb = exports.handleSubscribe = exports.handleQuery = exports.handlePut = exports.handlePong = exports.handlePing = exports.handleGet = exports.handleCrdtPut = exports.handleCrdtGet = exports.handleCrdt = exports.toolDbWebrtc = exports.toolDbNetwork = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.verifyMessage = exports.uint8ToBase64 = exports.toBase64 = exports.textRandom = exports.stringToArrayBuffer = exports.randomAnimal = exports.generateIv = exports.fromBase64 = exports.base64ToUint8 = exports.base64ToBinaryDocument = exports.base64ToBinaryChange = exports.base64ToArrayBuffer = exports.arrayBufferToString = exports.arrayBufferToBase64 = exports.signData = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
|
|
17
17
|
/* eslint-disable no-undef */
|
|
18
18
|
/* eslint-disable global-require */
|
|
19
19
|
__exportStar(require("./types/graph"), exports);
|
|
@@ -68,8 +68,6 @@ var uint8ToBase64_1 = require("./utils/uint8ToBase64");
|
|
|
68
68
|
Object.defineProperty(exports, "uint8ToBase64", { enumerable: true, get: function () { return __importDefault(uint8ToBase64_1).default; } });
|
|
69
69
|
var verifyMessage_1 = require("./utils/verifyMessage");
|
|
70
70
|
Object.defineProperty(exports, "verifyMessage", { enumerable: true, get: function () { return __importDefault(verifyMessage_1).default; } });
|
|
71
|
-
var getIpFromUrl_1 = require("./utils/getIpFromUrl");
|
|
72
|
-
Object.defineProperty(exports, "getIpFromUrl", { enumerable: true, get: function () { return __importDefault(getIpFromUrl_1).default; } });
|
|
73
71
|
var decodeKeyString_1 = require("./utils/crypto/decodeKeyString");
|
|
74
72
|
Object.defineProperty(exports, "decodeKeyString", { enumerable: true, get: function () { return __importDefault(decodeKeyString_1).default; } });
|
|
75
73
|
var decryptData_1 = require("./utils/crypto/decryptData");
|
|
@@ -100,6 +98,28 @@ var saveKeysComb_1 = require("./utils/crypto/saveKeysComb");
|
|
|
100
98
|
Object.defineProperty(exports, "saveKeysComb", { enumerable: true, get: function () { return __importDefault(saveKeysComb_1).default; } });
|
|
101
99
|
var verifyData_1 = require("./utils/crypto/verifyData");
|
|
102
100
|
Object.defineProperty(exports, "verifyData", { enumerable: true, get: function () { return __importDefault(verifyData_1).default; } });
|
|
101
|
+
var toolDbNetwork_1 = require("./toolDbNetwork");
|
|
102
|
+
Object.defineProperty(exports, "toolDbNetwork", { enumerable: true, get: function () { return __importDefault(toolDbNetwork_1).default; } });
|
|
103
|
+
var toolDbWebrtc_1 = require("./toolDbWebrtc");
|
|
104
|
+
Object.defineProperty(exports, "toolDbWebrtc", { enumerable: true, get: function () { return __importDefault(toolDbWebrtc_1).default; } });
|
|
105
|
+
var handleCrdt_1 = require("./messageHandlers/handleCrdt");
|
|
106
|
+
Object.defineProperty(exports, "handleCrdt", { enumerable: true, get: function () { return __importDefault(handleCrdt_1).default; } });
|
|
107
|
+
var handleCrdtGet_1 = require("./messageHandlers/handleCrdtGet");
|
|
108
|
+
Object.defineProperty(exports, "handleCrdtGet", { enumerable: true, get: function () { return __importDefault(handleCrdtGet_1).default; } });
|
|
109
|
+
var handleCrdtPut_1 = require("./messageHandlers/handleCrdtPut");
|
|
110
|
+
Object.defineProperty(exports, "handleCrdtPut", { enumerable: true, get: function () { return __importDefault(handleCrdtPut_1).default; } });
|
|
111
|
+
var handleGet_1 = require("./messageHandlers/handleGet");
|
|
112
|
+
Object.defineProperty(exports, "handleGet", { enumerable: true, get: function () { return __importDefault(handleGet_1).default; } });
|
|
113
|
+
var handlePing_1 = require("./messageHandlers/handlePing");
|
|
114
|
+
Object.defineProperty(exports, "handlePing", { enumerable: true, get: function () { return __importDefault(handlePing_1).default; } });
|
|
115
|
+
var handlePong_1 = require("./messageHandlers/handlePong");
|
|
116
|
+
Object.defineProperty(exports, "handlePong", { enumerable: true, get: function () { return __importDefault(handlePong_1).default; } });
|
|
117
|
+
var handlePut_1 = require("./messageHandlers/handlePut");
|
|
118
|
+
Object.defineProperty(exports, "handlePut", { enumerable: true, get: function () { return __importDefault(handlePut_1).default; } });
|
|
119
|
+
var handleQuery_1 = require("./messageHandlers/handleQuery");
|
|
120
|
+
Object.defineProperty(exports, "handleQuery", { enumerable: true, get: function () { return __importDefault(handleQuery_1).default; } });
|
|
121
|
+
var handleSubscribe_1 = require("./messageHandlers/handleSubscribe");
|
|
122
|
+
Object.defineProperty(exports, "handleSubscribe", { enumerable: true, get: function () { return __importDefault(handleSubscribe_1).default; } });
|
|
103
123
|
var tooldb_1 = require("./tooldb");
|
|
104
124
|
Object.defineProperty(exports, "ToolDb", { enumerable: true, get: function () { return __importDefault(tooldb_1).default; } });
|
|
105
125
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,mCAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,GAAG;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;CACH;AAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,UAAU;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC;CACH;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;CAC7C;AAED,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAC/B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AACxB,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,qEAA+E;AAAtE,6IAAA,OAAO,OAAwB;AACxC,yEAAmF;AAA1E,iJAAA,OAAO,OAA0B;AAC1C,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,30 @@
|
|
|
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, false).then(function (currentDoc) {
|
|
11
|
+
if (currentDoc) {
|
|
12
|
+
var saved = automerge_1.default.save(currentDoc || automerge_1.default.init());
|
|
13
|
+
_this.network.sendToClientId(remotePeerId, {
|
|
14
|
+
type: "crdt",
|
|
15
|
+
id: message.id,
|
|
16
|
+
key: message.key,
|
|
17
|
+
to: [],
|
|
18
|
+
doc: (0, __1.uint8ToBase64)(saved),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (_this.options.debug) {
|
|
23
|
+
console.log("Local key not found, relay", JSON.stringify(message));
|
|
24
|
+
}
|
|
25
|
+
_this.network.sendToAll(message, false, true);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
exports.default = handleCrdtGet;
|
|
30
|
+
//# 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,iBAsBC;IAjBC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;QACxD,IAAI,UAAU,EAAE;YACd,IAAM,KAAK,GAAG,mBAAS,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE;gBACxC,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,EAAE,EAAE,EAAE;gBACN,GAAG,EAAE,IAAA,iBAAa,EAAC,KAAK,CAAC;aACX,CAAC,CAAC;SACnB;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;AAtBD,gCAsBC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
// "final: ",
|
|
54
|
+
// newDoc
|
|
55
|
+
// );
|
|
56
|
+
// }
|
|
57
|
+
// persist
|
|
58
|
+
_this.documents[key_1] = newDoc;
|
|
59
|
+
// OOHH THE TYPECAST PAIN
|
|
60
|
+
// This works but the hacking is awful, we need a better solution for storing the crdts
|
|
61
|
+
var savedDoc = automerge_1.default.save(newDoc);
|
|
62
|
+
_this.store.put(key_1 + ".crdt", savedDoc, function (err, data) {
|
|
63
|
+
// const writeEnd = new Date().getTime();
|
|
64
|
+
// console.log("CRDT write: ", (writeEnd - writeStart) / 1000);
|
|
65
|
+
});
|
|
66
|
+
var crdtMessage = {
|
|
67
|
+
type: "crdt",
|
|
68
|
+
key: key_1,
|
|
69
|
+
id: message.id,
|
|
70
|
+
to: [],
|
|
71
|
+
doc: (0, __1.uint8ToBase64)(savedDoc),
|
|
72
|
+
};
|
|
73
|
+
_this.triggerKeyListener(key_1, crdtMessage);
|
|
74
|
+
// relay to other servers
|
|
75
|
+
// !!!
|
|
76
|
+
_this.network.sendToAll(crdtMessage, true);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log("unverified message", value, message);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
exports.default = handleCrdtPut;
|
|
85
|
+
//# 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,iBAmFC;IA9EC,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,oCAAoC;gBACpC,iBAAiB;gBACjB,aAAa;gBACb,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;AAnFD,gCAmFC"}
|
|
@@ -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,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":";;;;;AACA,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,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,32 @@
|
|
|
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 __1 = require("..");
|
|
7
|
+
var getPeerSignature_1 = __importDefault(require("../utils/getPeerSignature"));
|
|
8
|
+
function handlePong(message, remotePeerId) {
|
|
9
|
+
var _this = this;
|
|
10
|
+
this.onConnect();
|
|
11
|
+
if (this.options.server && this.options.privateKey) {
|
|
12
|
+
var timestamp_1 = new Date().getTime();
|
|
13
|
+
(0, getPeerSignature_1.default)(this.options.privateKey, this.options.topic, timestamp_1, this.options.host, this.options.port).then(function (signature) {
|
|
14
|
+
var meAsPeer = {
|
|
15
|
+
topic: _this.options.topic,
|
|
16
|
+
timestamp: timestamp_1,
|
|
17
|
+
host: _this.options.host,
|
|
18
|
+
port: _this.options.port,
|
|
19
|
+
pubkey: _this.options.id,
|
|
20
|
+
sig: signature,
|
|
21
|
+
};
|
|
22
|
+
_this.network.sendToClientId(remotePeerId, {
|
|
23
|
+
type: "join",
|
|
24
|
+
peer: meAsPeer,
|
|
25
|
+
to: [],
|
|
26
|
+
id: (0, __1.textRandom)(10),
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = handlePong;
|
|
32
|
+
//# sourceMappingURL=handlePong.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlePong.js","sourceRoot":"","sources":["../../src/messageHandlers/handlePong.ts"],"names":[],"mappings":";;;;;AAAA,wBAQY;AAEZ,+EAAyD;AAEzD,SAAwB,UAAU,CAEhC,OAAoB,EACpB,YAAoB;IAHtB,iBAkCC;IA7BC,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,IAAA,0BAAgB,EACd,IAAI,CAAC,OAAO,CAAC,UAAU,EACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,WAAS,EACT,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAClB,CAAC,IAAI,CAAC,UAAC,SAAS;YACf,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;AAlCD,6BAkCC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var __1 = require("..");
|
|
18
|
+
var toolDbVerificationWrapper_1 = __importDefault(require("../toolDbVerificationWrapper"));
|
|
19
|
+
function handlePut(message, remotePeerId) {
|
|
20
|
+
var _this = this;
|
|
21
|
+
toolDbVerificationWrapper_1.default.call(this, message).then(function (value) {
|
|
22
|
+
// console.log("Verification wrapper result: ", value, message.k);
|
|
23
|
+
if (value === __1.VerifyResult.Verified) {
|
|
24
|
+
// relay to other servers !!!
|
|
25
|
+
_this.network.sendToAll(message, true);
|
|
26
|
+
_this.store.get(message.k, function (err, oldData) {
|
|
27
|
+
if (oldData) {
|
|
28
|
+
var parsedOldData = __assign({ type: "put" }, JSON.parse(oldData));
|
|
29
|
+
if (parsedOldData.t < message.t) {
|
|
30
|
+
var key = message.k;
|
|
31
|
+
_this.triggerKeyListener(key, message);
|
|
32
|
+
_this.store.put(message.k, JSON.stringify(message), function (err, data) {
|
|
33
|
+
//
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
var key = message.k;
|
|
38
|
+
_this.triggerKeyListener(key, parsedOldData);
|
|
39
|
+
}
|
|
40
|
+
// } else if (this.options.debug) {
|
|
41
|
+
// console.log(
|
|
42
|
+
// `${message.k} has old data, but its newer. old ${parsedOldData.t} < new ${message.t}`
|
|
43
|
+
// );
|
|
44
|
+
// }
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
var key = message.k;
|
|
48
|
+
_this.triggerKeyListener(key, message);
|
|
49
|
+
_this.store.put(message.k, JSON.stringify(message), function (err, data) {
|
|
50
|
+
//
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.warn("unverified message: ", value, message);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.default = handlePut;
|
|
61
|
+
//# sourceMappingURL=handlePut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlePut.js","sourceRoot":"","sources":["../../src/messageHandlers/handlePut.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wBAAsD;AACtD,2FAAqE;AAErE,SAAwB,SAAS,CAE/B,OAAmB,EACnB,YAAoB;IAHtB,iBA4CC;IAvCC,mCAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK;QACvD,kEAAkE;QAClE,IAAI,KAAK,KAAK,gBAAY,CAAC,QAAQ,EAAE;YACnC,6BAA6B;YAC7B,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAEtC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,UAAC,GAAG,EAAE,OAAgB;gBAC9C,IAAI,OAAO,EAAE;oBACX,IAAM,aAAa,cACjB,IAAI,EAAE,KAAK,IACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CACvB,CAAC;oBACF,IAAI,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;wBAC/B,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;wBACtB,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;wBACtC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAC,GAAG,EAAE,IAAI;4BAC3D,EAAE;wBACJ,CAAC,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;wBACtB,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;qBAC7C;oBACD,mCAAmC;oBACnC,iBAAiB;oBACjB,4FAA4F;oBAC5F,OAAO;oBACP,IAAI;iBACL;qBAAM;oBACL,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;oBACtB,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACtC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAC,GAAG,EAAE,IAAI;wBAC3D,EAAE;oBACJ,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACtD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA5CD,4BA4CC"}
|