tool-db 1.3.0 → 1.4.2
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 +60 -7
- package/custom-test-env.js +10 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/messageHandlers/handleCrdtGet.js +17 -9
- package/dist/messageHandlers/handleCrdtGet.js.map +1 -1
- package/dist/messageHandlers/handleCrdtPut.js +3 -1
- package/dist/messageHandlers/handleCrdtPut.js.map +1 -1
- package/dist/messageHandlers/handleJoin.js.map +1 -1
- package/dist/messageHandlers/handlePong.js +5 -3
- package/dist/messageHandlers/handlePong.js.map +1 -1
- package/dist/toolDbClientOnMessage.js +5 -7
- 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/toolDbGet.js.map +1 -1
- package/dist/toolDbNetwork.d.ts +0 -1
- package/dist/toolDbNetwork.js +6 -9
- package/dist/toolDbNetwork.js.map +1 -1
- package/dist/toolDbPut.js.map +1 -1
- package/dist/toolDbQueryKeys.js.map +1 -1
- package/dist/toolDbSignIn.js +2 -2
- package/dist/toolDbSignIn.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 +460 -0
- package/dist/toolDbWebrtc.js.map +1 -0
- package/dist/tooldb.d.ts +17 -12
- package/dist/tooldb.js +97 -72
- package/dist/tooldb.js.map +1 -1
- package/dist/types/graph.d.ts +4 -0
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.js +1 -0
- package/dist/types/message.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/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.d.ts +2 -1
- package/dist/utils/verifyMessage.js +32 -7
- package/dist/utils/verifyMessage.js.map +1 -1
- package/dist/utils/verifyPeer.js +1 -1
- package/dist/utils/verifyPeer.js.map +1 -1
- package/dist/webrtc/joinWebrtcTorrent.d.ts +3 -0
- package/dist/webrtc/joinWebrtcTorrent.js +312 -0
- package/dist/webrtc/joinWebrtcTorrent.js.map +1 -0
- package/package.json +4 -2
- package/pvutils-tests-replacement.js +777 -0
- package/test-alice/000236.ldb +0 -0
- package/test-alice/000344.ldb +0 -0
- package/test-alice/000611.ldb +0 -0
- package/test-alice/000613.ldb +0 -0
- package/test-alice/000616.ldb +0 -0
- package/test-alice/000619.ldb +0 -0
- package/test-alice/000620.log +0 -0
- package/test-alice/CURRENT +1 -1
- package/test-alice/LOG +5 -1
- package/test-alice/LOG.old +5 -0
- package/test-alice/MANIFEST-000618 +0 -0
- package/test-bob/000611.ldb +0 -0
- package/test-bob/000613.ldb +0 -0
- package/test-bob/000616.ldb +0 -0
- package/test-bob/000617.log +0 -0
- package/test-bob/CURRENT +1 -1
- package/test-bob/LOG +5 -1
- package/test-bob/LOG.old +5 -0
- package/test-bob/MANIFEST-000615 +0 -0
- package/{test-alice/000003.log → test-keys-a/000039.log} +0 -0
- package/test-keys-a/CURRENT +1 -0
- package/{test-bob/000003.log → test-keys-a/LOCK} +0 -0
- package/test-keys-a/LOG +3 -0
- package/test-keys-a/LOG.old +3 -0
- package/test-keys-a/MANIFEST-000038 +0 -0
- package/{test-node-a/000003.log → test-keys-b/000039.log} +0 -0
- package/test-keys-b/CURRENT +1 -0
- package/{test-node-b/000003.log → test-keys-b/LOCK} +0 -0
- package/test-keys-b/LOG +3 -0
- package/test-keys-b/LOG.old +3 -0
- package/test-keys-b/MANIFEST-000038 +0 -0
- package/test-node-a/000615.ldb +0 -0
- package/test-node-a/000617.ldb +0 -0
- package/test-node-a/000620.ldb +0 -0
- package/test-node-a/000623.ldb +0 -0
- package/test-node-a/000624.log +0 -0
- package/test-node-a/CURRENT +1 -1
- package/test-node-a/LOG +5 -1
- package/test-node-a/LOG.old +5 -0
- package/test-node-a/MANIFEST-000622 +0 -0
- package/test-node-b/000615.ldb +0 -0
- package/test-node-b/000617.ldb +0 -0
- package/test-node-b/000620.ldb +0 -0
- package/test-node-b/000623.ldb +0 -0
- package/test-node-b/000624.log +0 -0
- package/test-node-b/CURRENT +1 -1
- package/test-node-b/LOG +5 -1
- package/test-node-b/LOG.old +5 -0
- package/test-node-b/MANIFEST-000622 +0 -0
- package/test-verify-a/000017.log +0 -0
- package/test-verify-a/CURRENT +1 -0
- package/test-verify-a/LOCK +0 -0
- package/test-verify-a/LOG +3 -0
- package/test-verify-a/LOG.old +3 -0
- package/test-verify-a/MANIFEST-000016 +0 -0
- package/dist/deduplicator.d.ts +0 -19
- package/dist/deduplicator.js +0 -60
- package/dist/deduplicator.js.map +0 -1
- package/dist/libp2p/create.d.ts +0 -2
- package/dist/libp2p/create.js +0 -131
- package/dist/libp2p/create.js.map +0 -1
- package/dist/libp2p/createLibP2p.d.ts +0 -3
- package/dist/libp2p/createLibP2p.js +0 -130
- package/dist/libp2p/createLibP2p.js.map +0 -1
- package/dist/libp2p/tooldb-protocol.d.ts +0 -19
- package/dist/libp2p/tooldb-protocol.js +0 -156
- package/dist/libp2p/tooldb-protocol.js.map +0 -1
- package/dist/messageHandlers/handleCrdt copy.d.ts +0 -2
- package/dist/messageHandlers/handleCrdt copy.js +0 -15
- package/dist/messageHandlers/handleCrdt copy.js.map +0 -1
- package/dist/messageHandlers/handleCrdtGet copy.d.ts +0 -2
- package/dist/messageHandlers/handleCrdtGet copy.js +0 -22
- package/dist/messageHandlers/handleCrdtGet copy.js.map +0 -1
- package/dist/messageHandlers/handleCrdtPut copy.d.ts +0 -2
- package/dist/messageHandlers/handleCrdtPut copy.js +0 -83
- package/dist/messageHandlers/handleCrdtPut copy.js.map +0 -1
- package/dist/messageHandlers/handleGet copy.d.ts +0 -2
- package/dist/messageHandlers/handleGet copy.js +0 -37
- package/dist/messageHandlers/handleGet copy.js.map +0 -1
- package/dist/messageHandlers/handleGetServers.d.ts +0 -2
- package/dist/messageHandlers/handleGetServers.js +0 -23
- package/dist/messageHandlers/handleGetServers.js.map +0 -1
- package/dist/messageHandlers/handleJoin copy.d.ts +0 -2
- package/dist/messageHandlers/handleJoin copy.js +0 -37
- package/dist/messageHandlers/handleJoin copy.js.map +0 -1
- package/dist/messageHandlers/handlePing copy.d.ts +0 -2
- package/dist/messageHandlers/handlePing copy.js +0 -13
- package/dist/messageHandlers/handlePing copy.js.map +0 -1
- package/dist/messageHandlers/handleServers copy.d.ts +0 -2
- package/dist/messageHandlers/handleServers copy.js +0 -23
- package/dist/messageHandlers/handleServers copy.js.map +0 -1
- package/dist/toolDbLibP2p.d.ts +0 -34
- package/dist/toolDbLibP2p.js +0 -375
- package/dist/toolDbLibP2p.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.d.ts +0 -34
- package/dist/wss.js +0 -241
- 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/test-alice/MANIFEST-000002 +0 -0
- package/test-bob/MANIFEST-000002 +0 -0
- package/test-node-a/MANIFEST-000002 +0 -0
- package/test-node-b/MANIFEST-000002 +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ToolDbMessage } from ".";
|
|
2
|
+
import { ToolDbNetworkAdapter } from "./types/tooldb";
|
|
3
|
+
import ToolDb from "./tooldb";
|
|
4
|
+
export declare type ToolDbWebSocket = WebSocket & {
|
|
5
|
+
toolDbId?: string;
|
|
6
|
+
isServer: boolean;
|
|
7
|
+
origUrl: string;
|
|
8
|
+
};
|
|
9
|
+
export default class toolDbWebrtc extends ToolDbNetworkAdapter {
|
|
10
|
+
private _tooldb;
|
|
11
|
+
private sockets;
|
|
12
|
+
private socketListeners;
|
|
13
|
+
private peerMap;
|
|
14
|
+
private connectedPeers;
|
|
15
|
+
private onDisconnect;
|
|
16
|
+
private announceInterval;
|
|
17
|
+
/**
|
|
18
|
+
* Initialize webrtc peer
|
|
19
|
+
*/
|
|
20
|
+
private initPeer;
|
|
21
|
+
private handledOffers;
|
|
22
|
+
private offerPool;
|
|
23
|
+
private trackerUrls;
|
|
24
|
+
private infoHash;
|
|
25
|
+
/**
|
|
26
|
+
* Make connection offers (sdp) to send to the tracker
|
|
27
|
+
*/
|
|
28
|
+
private makeOffers;
|
|
29
|
+
/**
|
|
30
|
+
* When we sucessfully connect to a webrtc peer
|
|
31
|
+
*/
|
|
32
|
+
private onPeerConnect;
|
|
33
|
+
/**
|
|
34
|
+
* Handle the webrtc peer connection
|
|
35
|
+
*/
|
|
36
|
+
private onConnect;
|
|
37
|
+
/**
|
|
38
|
+
* Clean the announce offers pool
|
|
39
|
+
*/
|
|
40
|
+
private cleanPool;
|
|
41
|
+
/**
|
|
42
|
+
* Makes a websocket connection to a tracker
|
|
43
|
+
*/
|
|
44
|
+
private makeSocket;
|
|
45
|
+
/**
|
|
46
|
+
* Announce ourselves to a tracker (send "announce")
|
|
47
|
+
*/
|
|
48
|
+
private announce;
|
|
49
|
+
/**
|
|
50
|
+
* Announce ourselves to all trackers
|
|
51
|
+
*/
|
|
52
|
+
private announceAll;
|
|
53
|
+
/**
|
|
54
|
+
* Handle the tracker messages
|
|
55
|
+
*/
|
|
56
|
+
private onSocketMessage;
|
|
57
|
+
/**
|
|
58
|
+
* Leave the tracker
|
|
59
|
+
*/
|
|
60
|
+
onLeave: () => Promise<void>;
|
|
61
|
+
constructor(db: ToolDb);
|
|
62
|
+
close(clientId: string): void;
|
|
63
|
+
sendToAll(msg: ToolDbMessage, crossServerOnly?: boolean, isRelay?: boolean): void;
|
|
64
|
+
sendToClientId(clientId: string, msg: ToolDbMessage): void;
|
|
65
|
+
get tooldb(): ToolDb;
|
|
66
|
+
}
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (_) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
65
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
66
|
+
if (ar || !(i in from)) {
|
|
67
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
68
|
+
ar[i] = from[i];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
72
|
+
};
|
|
73
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
74
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
75
|
+
};
|
|
76
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
78
|
+
var simple_peer_1 = __importDefault(require("simple-peer"));
|
|
79
|
+
var _1 = require(".");
|
|
80
|
+
var tooldb_1 = require("./types/tooldb");
|
|
81
|
+
var offerPoolSize = 5;
|
|
82
|
+
var announceSecs = 30;
|
|
83
|
+
var maxAnnounceSecs = 120;
|
|
84
|
+
var defaultTrackerUrls = [
|
|
85
|
+
"wss://tracker.openwebtorrent.com",
|
|
86
|
+
"wss://tracker.btorrent.xyz",
|
|
87
|
+
"wss://tracker.webtorrent.io",
|
|
88
|
+
"wss://tracker.files.fm:7073/announce",
|
|
89
|
+
"wss://spacetradersapi-chatbox.herokuapp.com:443/announce",
|
|
90
|
+
];
|
|
91
|
+
var toolDbWebrtc = /** @class */ (function (_super) {
|
|
92
|
+
__extends(toolDbWebrtc, _super);
|
|
93
|
+
function toolDbWebrtc(db) {
|
|
94
|
+
var _this = _super.call(this, db) || this;
|
|
95
|
+
_this.sockets = {};
|
|
96
|
+
_this.socketListeners = {};
|
|
97
|
+
_this.peerMap = {};
|
|
98
|
+
_this.connectedPeers = {};
|
|
99
|
+
_this.onDisconnect = function (id, err) {
|
|
100
|
+
// console.warn(id, err);
|
|
101
|
+
if (_this.connectedPeers[id])
|
|
102
|
+
delete _this.connectedPeers[id];
|
|
103
|
+
if (_this.peerMap[id])
|
|
104
|
+
delete _this.peerMap[id];
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Initialize webrtc peer
|
|
108
|
+
*/
|
|
109
|
+
_this.initPeer = function (initiator, trickle, rtcConfig // RTCConfiguration
|
|
110
|
+
) {
|
|
111
|
+
var peer = new simple_peer_1.default({
|
|
112
|
+
initiator: initiator,
|
|
113
|
+
trickle: trickle,
|
|
114
|
+
config: rtcConfig,
|
|
115
|
+
});
|
|
116
|
+
return peer;
|
|
117
|
+
};
|
|
118
|
+
_this.handledOffers = {};
|
|
119
|
+
_this.offerPool = {};
|
|
120
|
+
_this.trackerUrls = defaultTrackerUrls; // .slice(0, 2);
|
|
121
|
+
_this.infoHash = "";
|
|
122
|
+
/**
|
|
123
|
+
* Make connection offers (sdp) to send to the tracker
|
|
124
|
+
*/
|
|
125
|
+
_this.makeOffers = function () {
|
|
126
|
+
var offers = {};
|
|
127
|
+
new Array(offerPoolSize).fill(0).forEach(function () {
|
|
128
|
+
var peer = _this.initPeer(true, false, {});
|
|
129
|
+
var oid = (0, _1.textRandom)(20);
|
|
130
|
+
offers[oid] = {
|
|
131
|
+
peer: peer,
|
|
132
|
+
offerP: new Promise(function (res) { return peer.once("signal", res); }),
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
return offers;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* When we sucessfully connect to a webrtc peer
|
|
139
|
+
*/
|
|
140
|
+
_this.onPeerConnect = function (peer, id) {
|
|
141
|
+
if (_this.peerMap[id]) {
|
|
142
|
+
_this.peerMap[id].end();
|
|
143
|
+
_this.peerMap[id].destroy();
|
|
144
|
+
delete _this.peerMap[id];
|
|
145
|
+
}
|
|
146
|
+
var onData = function (data) {
|
|
147
|
+
var str = new TextDecoder().decode(data);
|
|
148
|
+
try {
|
|
149
|
+
var msg = JSON.parse(str);
|
|
150
|
+
if (msg.type !== "servers" &&
|
|
151
|
+
msg.type !== "join" &&
|
|
152
|
+
msg.type !== "pong") {
|
|
153
|
+
_this.tooldb.clientOnMessage(msg, id);
|
|
154
|
+
}
|
|
155
|
+
if (msg.type === "pong" || msg.type === "ping") {
|
|
156
|
+
_this.tooldb.onConnect();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
//
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
_this.peerMap[id] = peer;
|
|
164
|
+
peer.on("data", onData);
|
|
165
|
+
peer.on("close", function (err) { return _this.onDisconnect(id, err); });
|
|
166
|
+
peer.on("error", function (err) { return _this.onDisconnect(id, err); });
|
|
167
|
+
peer.send(JSON.stringify({
|
|
168
|
+
type: "ping",
|
|
169
|
+
}));
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Handle the webrtc peer connection
|
|
173
|
+
*/
|
|
174
|
+
_this.onConnect = function (peer, id, offer_id) {
|
|
175
|
+
_this.onPeerConnect(peer, id);
|
|
176
|
+
_this.connectedPeers[id] = true;
|
|
177
|
+
if (offer_id) {
|
|
178
|
+
_this.connectedPeers[offer_id] = true;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* Clean the announce offers pool
|
|
183
|
+
*/
|
|
184
|
+
_this.cleanPool = function () {
|
|
185
|
+
Object.entries(_this.offerPool).forEach(function (_a) {
|
|
186
|
+
var id = _a[0], peer = _a[1].peer;
|
|
187
|
+
if (!_this.handledOffers[id] && !_this.connectedPeers[id]) {
|
|
188
|
+
// console.log("closed peer " + id);
|
|
189
|
+
peer.end();
|
|
190
|
+
peer.destroy();
|
|
191
|
+
delete _this.peerMap[id];
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
_this.handledOffers = {};
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Makes a websocket connection to a tracker
|
|
198
|
+
*/
|
|
199
|
+
_this.makeSocket = function (url, info_hash) {
|
|
200
|
+
return new Promise(function (resolve) {
|
|
201
|
+
var _a;
|
|
202
|
+
if (!_this.sockets[url]) {
|
|
203
|
+
_this.socketListeners[url] = __assign(__assign({}, _this.socketListeners[url]), (_a = {}, _a[info_hash] = _this.onSocketMessage, _a));
|
|
204
|
+
try {
|
|
205
|
+
var socket_1 = new WebSocket(url);
|
|
206
|
+
// eslint-disable-next-line func-names
|
|
207
|
+
var socks_1 = _this.sockets;
|
|
208
|
+
socket_1.onopen = function () {
|
|
209
|
+
socks_1[url] = this;
|
|
210
|
+
resolve(this);
|
|
211
|
+
};
|
|
212
|
+
socket_1.onmessage = function (e) {
|
|
213
|
+
return Object.values(_this.socketListeners[url]).forEach(function (f) {
|
|
214
|
+
return f(socket_1, e);
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
// eslint-disable-next-line func-names
|
|
218
|
+
socket_1.onerror = function () {
|
|
219
|
+
resolve(null);
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
resolve(null);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
resolve(_this.sockets[url]);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Announce ourselves to a tracker (send "announce")
|
|
233
|
+
*/
|
|
234
|
+
_this.announce = function (socket, infoHash) { return __awaiter(_this, void 0, void 0, function () {
|
|
235
|
+
var _a, _b, _c, _d;
|
|
236
|
+
var _f;
|
|
237
|
+
var _this = this;
|
|
238
|
+
return __generator(this, function (_g) {
|
|
239
|
+
switch (_g.label) {
|
|
240
|
+
case 0:
|
|
241
|
+
_b = (_a = socket).send;
|
|
242
|
+
_d = (_c = JSON).stringify;
|
|
243
|
+
_f = {
|
|
244
|
+
action: "announce",
|
|
245
|
+
info_hash: infoHash,
|
|
246
|
+
numwant: offerPoolSize,
|
|
247
|
+
peer_id: encodeURIComponent(this.tooldb.options.id).slice(-20)
|
|
248
|
+
};
|
|
249
|
+
return [4 /*yield*/, Promise.all(Object.entries(this.offerPool).map(function (_a) {
|
|
250
|
+
var id = _a[0], offerP = _a[1].offerP;
|
|
251
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
252
|
+
var offer;
|
|
253
|
+
return __generator(this, function (_b) {
|
|
254
|
+
switch (_b.label) {
|
|
255
|
+
case 0: return [4 /*yield*/, offerP];
|
|
256
|
+
case 1:
|
|
257
|
+
offer = _b.sent();
|
|
258
|
+
// console.warn(`Created offer id ${id}`);
|
|
259
|
+
return [2 /*return*/, {
|
|
260
|
+
offer_id: id,
|
|
261
|
+
offer: offer,
|
|
262
|
+
}];
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
}))];
|
|
267
|
+
case 1: return [2 /*return*/, _b.apply(_a, [_d.apply(_c, [(_f.offers = _g.sent(),
|
|
268
|
+
_f)])])];
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}); };
|
|
272
|
+
/**
|
|
273
|
+
* Announce ourselves to all trackers
|
|
274
|
+
*/
|
|
275
|
+
_this.announceAll = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
276
|
+
var _this = this;
|
|
277
|
+
return __generator(this, function (_a) {
|
|
278
|
+
if (this.offerPool) {
|
|
279
|
+
this.cleanPool();
|
|
280
|
+
}
|
|
281
|
+
this.offerPool = this.makeOffers();
|
|
282
|
+
// console.log("offerPool", this.offerPool);
|
|
283
|
+
this.trackerUrls.forEach(function (url) { return __awaiter(_this, void 0, void 0, function () {
|
|
284
|
+
var socket;
|
|
285
|
+
return __generator(this, function (_a) {
|
|
286
|
+
switch (_a.label) {
|
|
287
|
+
case 0: return [4 /*yield*/, this.makeSocket(url, this.infoHash)];
|
|
288
|
+
case 1:
|
|
289
|
+
socket = _a.sent();
|
|
290
|
+
if (socket && socket.readyState === WebSocket.OPEN) {
|
|
291
|
+
// console.log("announce to " + url);
|
|
292
|
+
this.announce(socket, this.infoHash);
|
|
293
|
+
}
|
|
294
|
+
return [2 /*return*/];
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
}); });
|
|
298
|
+
return [2 /*return*/];
|
|
299
|
+
});
|
|
300
|
+
}); };
|
|
301
|
+
/**
|
|
302
|
+
* Handle the tracker messages
|
|
303
|
+
*/
|
|
304
|
+
_this.onSocketMessage = function (socket, e) { return __awaiter(_this, void 0, void 0, function () {
|
|
305
|
+
var val, failure, peer_1, offer, peer_2;
|
|
306
|
+
var _this = this;
|
|
307
|
+
return __generator(this, function (_a) {
|
|
308
|
+
try {
|
|
309
|
+
val = JSON.parse(e.data);
|
|
310
|
+
// console.log("onSocketMessage", socket.url, val);
|
|
311
|
+
}
|
|
312
|
+
catch (_e) {
|
|
313
|
+
// console.error(`${libName}: received malformed SDP JSON`);
|
|
314
|
+
return [2 /*return*/];
|
|
315
|
+
}
|
|
316
|
+
failure = val["failure reason"];
|
|
317
|
+
if (failure) {
|
|
318
|
+
console.warn(e.origin + ": torrent tracker failure (" + failure + ")");
|
|
319
|
+
return [2 /*return*/];
|
|
320
|
+
}
|
|
321
|
+
if (val.info_hash !== this.infoHash) {
|
|
322
|
+
// console.warn("Info hash mismatch");
|
|
323
|
+
return [2 /*return*/];
|
|
324
|
+
}
|
|
325
|
+
if (val.peer_id &&
|
|
326
|
+
val.peer_id === encodeURIComponent(this.tooldb.options.id).slice(-20)) {
|
|
327
|
+
// console.warn("Peer ids mismatch", val.peer_id, selfId);
|
|
328
|
+
return [2 /*return*/];
|
|
329
|
+
}
|
|
330
|
+
if (val.offer && val.offer_id) {
|
|
331
|
+
if (this.connectedPeers[val.peer_id]) {
|
|
332
|
+
return [2 /*return*/];
|
|
333
|
+
}
|
|
334
|
+
if (this.handledOffers[val.offer_id]) {
|
|
335
|
+
return [2 /*return*/];
|
|
336
|
+
}
|
|
337
|
+
this.handledOffers[val.offer_id] = true;
|
|
338
|
+
peer_1 = this.initPeer(false, false, {});
|
|
339
|
+
peer_1.once("signal", function (answer) {
|
|
340
|
+
return socket.send(JSON.stringify({
|
|
341
|
+
answer: answer,
|
|
342
|
+
action: "announce",
|
|
343
|
+
info_hash: _this.infoHash,
|
|
344
|
+
peer_id: encodeURIComponent(_this.tooldb.options.id).slice(-20),
|
|
345
|
+
to_peer_id: val.peer_id,
|
|
346
|
+
offer_id: val.offer_id,
|
|
347
|
+
}));
|
|
348
|
+
});
|
|
349
|
+
peer_1.on("connect", function () { return _this.onConnect(peer_1, val.peer_id); });
|
|
350
|
+
peer_1.on("close", function (err) { return _this.onDisconnect(val.peer_id, err); });
|
|
351
|
+
peer_1.signal(val.offer);
|
|
352
|
+
return [2 /*return*/];
|
|
353
|
+
}
|
|
354
|
+
if (val.answer) {
|
|
355
|
+
if (this.connectedPeers[val.peer_id]) {
|
|
356
|
+
return [2 /*return*/];
|
|
357
|
+
}
|
|
358
|
+
if (this.handledOffers[val.offer_id]) {
|
|
359
|
+
return [2 /*return*/];
|
|
360
|
+
}
|
|
361
|
+
offer = this.offerPool[val.offer_id];
|
|
362
|
+
if (offer) {
|
|
363
|
+
peer_2 = offer.peer;
|
|
364
|
+
if (peer_2.destroyed) {
|
|
365
|
+
return [2 /*return*/];
|
|
366
|
+
}
|
|
367
|
+
this.handledOffers[val.offer_id] = true;
|
|
368
|
+
peer_2.on("connect", function () {
|
|
369
|
+
_this.onConnect(peer_2, val.peer_id, val.offer_id);
|
|
370
|
+
});
|
|
371
|
+
peer_2.on("close", function (err) { return _this.onDisconnect(val.peer_id, err); });
|
|
372
|
+
peer_2.signal(val.answer);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return [2 /*return*/];
|
|
376
|
+
});
|
|
377
|
+
}); };
|
|
378
|
+
/**
|
|
379
|
+
* Leave the tracker
|
|
380
|
+
*/
|
|
381
|
+
_this.onLeave = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
382
|
+
var _this = this;
|
|
383
|
+
return __generator(this, function (_a) {
|
|
384
|
+
this.trackerUrls.forEach(function (url) { return delete _this.socketListeners[url][_this.infoHash]; });
|
|
385
|
+
clearInterval(this.announceInterval);
|
|
386
|
+
this.cleanPool();
|
|
387
|
+
return [2 /*return*/];
|
|
388
|
+
});
|
|
389
|
+
}); };
|
|
390
|
+
_this._tooldb = db;
|
|
391
|
+
_this.announceInterval = setInterval(_this.announceAll, announceSecs * 1000);
|
|
392
|
+
// Stop announcing after maxAnnounceSecs
|
|
393
|
+
var intervalStart = new Date().getTime();
|
|
394
|
+
var checkInterval = setInterval(function () {
|
|
395
|
+
if (!_this.tooldb.options.server &&
|
|
396
|
+
new Date().getTime() - intervalStart > maxAnnounceSecs * 1000) {
|
|
397
|
+
clearInterval(checkInterval);
|
|
398
|
+
clearInterval(_this.announceInterval);
|
|
399
|
+
}
|
|
400
|
+
}, 200);
|
|
401
|
+
_this.infoHash = (0, _1.sha1)("tooldb:" + _this.tooldb.options.topic).slice(20);
|
|
402
|
+
_this.announceAll();
|
|
403
|
+
return _this;
|
|
404
|
+
}
|
|
405
|
+
toolDbWebrtc.prototype.close = function (clientId) {
|
|
406
|
+
//
|
|
407
|
+
};
|
|
408
|
+
toolDbWebrtc.prototype.sendToAll = function (msg, crossServerOnly, isRelay) {
|
|
409
|
+
var _this = this;
|
|
410
|
+
if (crossServerOnly === void 0) { crossServerOnly = false; }
|
|
411
|
+
if (isRelay === void 0) { isRelay = false; }
|
|
412
|
+
var to = lodash_1.default.uniq(__spreadArray(__spreadArray([], msg.to, true), [
|
|
413
|
+
encodeURIComponent(this.tooldb.options.id).slice(-20),
|
|
414
|
+
], false));
|
|
415
|
+
Object.keys(this.peerMap)
|
|
416
|
+
.filter(function (id) { return !to.includes(id); })
|
|
417
|
+
.forEach(function (id) {
|
|
418
|
+
var peer = _this.peerMap[id];
|
|
419
|
+
if (peer.connected) {
|
|
420
|
+
if (_this.tooldb.options.debug) {
|
|
421
|
+
console.log("Sent out to: ", id);
|
|
422
|
+
// console.log("OUT > ", { ...msg, to });
|
|
423
|
+
}
|
|
424
|
+
peer.send(JSON.stringify(__assign(__assign({}, msg), { to: to })));
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
peer.destroy();
|
|
428
|
+
delete _this.peerMap[id];
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
toolDbWebrtc.prototype.sendToClientId = function (clientId, msg) {
|
|
433
|
+
var _this = this;
|
|
434
|
+
Object.keys(this.peerMap)
|
|
435
|
+
.filter(function (id) { return id === clientId; })
|
|
436
|
+
.forEach(function (id) {
|
|
437
|
+
var peer = _this.peerMap[id];
|
|
438
|
+
if (peer.connected) {
|
|
439
|
+
var to = lodash_1.default.uniq(__spreadArray(__spreadArray([], [msg.to || []], false), [
|
|
440
|
+
encodeURIComponent(_this.tooldb.options.id).slice(-20),
|
|
441
|
+
], false));
|
|
442
|
+
peer.send(JSON.stringify(__assign(__assign({}, msg), { to: to })));
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
peer.destroy();
|
|
446
|
+
delete _this.peerMap[id];
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
};
|
|
450
|
+
Object.defineProperty(toolDbWebrtc.prototype, "tooldb", {
|
|
451
|
+
get: function () {
|
|
452
|
+
return this._tooldb;
|
|
453
|
+
},
|
|
454
|
+
enumerable: false,
|
|
455
|
+
configurable: true
|
|
456
|
+
});
|
|
457
|
+
return toolDbWebrtc;
|
|
458
|
+
}(tooldb_1.ToolDbNetworkAdapter));
|
|
459
|
+
exports.default = toolDbWebrtc;
|
|
460
|
+
//# sourceMappingURL=toolDbWebrtc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolDbWebrtc.js","sourceRoot":"","sources":["../src/toolDbWebrtc.ts"],"names":[],"mappings":"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"}
|
package/dist/tooldb.d.ts
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { FreezeObject } from "automerge";
|
|
3
|
+
import EventEmitter from "events";
|
|
4
|
+
import { CrdtMessage, PutMessage, ToolDbMessage, VerificationData, verifyMessage } from ".";
|
|
2
5
|
import toolDbGet from "./toolDbGet";
|
|
3
6
|
import toolDbPut from "./toolDbPut";
|
|
4
|
-
import toolDbGetPubKey from "./toolDbGetPubKey";
|
|
5
7
|
import toolDbSignIn from "./toolDbSignIn";
|
|
6
|
-
import toolDbAnonSignIn from "./toolDbAnonSignIn";
|
|
7
8
|
import toolDbSignUp from "./toolDbSignUp";
|
|
8
|
-
import
|
|
9
|
+
import toolDbCrdtGet from "./toolDbCrdtGet";
|
|
10
|
+
import toolDbCrdtPut from "./toolDbCrdtPut";
|
|
11
|
+
import toolDbGetPubKey from "./toolDbGetPubKey";
|
|
12
|
+
import toolDbAnonSignIn from "./toolDbAnonSignIn";
|
|
9
13
|
import toolDbClientOnMessage from "./toolDbClientOnMessage";
|
|
10
|
-
import
|
|
14
|
+
import toolDbVerificationWrapper from "./toolDbVerificationWrapper";
|
|
11
15
|
import toolDbSubscribe from "./toolDbSubscribe";
|
|
12
|
-
import
|
|
13
|
-
import { FreezeObject } from "automerge";
|
|
16
|
+
import toolDbQueryKeys from "./toolDbQueryKeys";
|
|
14
17
|
import loadCrdtDocument from "./loadCrdtDocument";
|
|
15
18
|
import toolDbKeysSignIn from "./toolDbKeysSignIn";
|
|
16
|
-
import
|
|
19
|
+
import handleGet from "./messageHandlers/handleGet";
|
|
20
|
+
import handlePut from "./messageHandlers/handlePut";
|
|
17
21
|
import handlePing from "./messageHandlers/handlePing";
|
|
18
22
|
import handlePong from "./messageHandlers/handlePong";
|
|
19
23
|
import handleCrdt from "./messageHandlers/handleCrdt";
|
|
24
|
+
import handleQuery from "./messageHandlers/handleQuery";
|
|
20
25
|
import handleCrdtGet from "./messageHandlers/handleCrdtGet";
|
|
21
26
|
import handleCrdtPut from "./messageHandlers/handleCrdtPut";
|
|
22
|
-
import handleGet from "./messageHandlers/handleGet";
|
|
23
|
-
import handlePut from "./messageHandlers/handlePut";
|
|
24
|
-
import handleQuery from "./messageHandlers/handleQuery";
|
|
25
27
|
import handleSubscribe from "./messageHandlers/handleSubscribe";
|
|
28
|
+
import { Peer, ToolDbOptions } from "./types/tooldb";
|
|
26
29
|
export interface Listener {
|
|
27
30
|
key: string;
|
|
28
31
|
timeout: number | null;
|
|
@@ -32,12 +35,13 @@ interface Verificator<T> {
|
|
|
32
35
|
key: string;
|
|
33
36
|
fn: (msg: VerificationData<T>) => Promise<boolean>;
|
|
34
37
|
}
|
|
35
|
-
export default class ToolDb {
|
|
38
|
+
export default class ToolDb extends EventEmitter {
|
|
36
39
|
private _network;
|
|
37
40
|
private _store;
|
|
38
41
|
private _peers;
|
|
39
42
|
private _documents;
|
|
40
43
|
clientOnMessage: typeof toolDbClientOnMessage;
|
|
44
|
+
verifyMessage: typeof verifyMessage;
|
|
41
45
|
private _subscriptions;
|
|
42
46
|
get subscriptions(): string[];
|
|
43
47
|
private _processedIds;
|
|
@@ -49,6 +53,7 @@ export default class ToolDb {
|
|
|
49
53
|
getData: typeof toolDbGet;
|
|
50
54
|
putData: typeof toolDbPut;
|
|
51
55
|
putCrdt: typeof toolDbCrdtPut;
|
|
56
|
+
getCrdt: typeof toolDbCrdtGet;
|
|
52
57
|
queryKeys: typeof toolDbQueryKeys;
|
|
53
58
|
getPubKey: typeof toolDbGetPubKey;
|
|
54
59
|
signIn: typeof toolDbSignIn;
|