tool-db 2.0.1 → 2.0.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/README.md +10 -33
- package/bundle.js +48143 -63087
- package/dist/crdt/baseCrdt.d.ts +9 -0
- package/dist/crdt/baseCrdt.js +27 -0
- package/dist/crdt/baseCrdt.js.map +1 -0
- package/dist/crdt/counterCrdt.d.ts +30 -0
- package/dist/crdt/counterCrdt.js +124 -0
- package/dist/crdt/counterCrdt.js.map +1 -0
- package/dist/crdt/listCrdt.d.ts +42 -0
- package/dist/crdt/listCrdt.js +177 -0
- package/dist/crdt/listCrdt.js.map +1 -0
- package/dist/crdt/mapCrdt.d.ts +32 -0
- package/dist/crdt/mapCrdt.js +136 -0
- package/dist/crdt/mapCrdt.js.map +1 -0
- package/dist/index.d.ts +2 -12
- package/dist/index.js +5 -35
- package/dist/index.js.map +1 -1
- package/dist/messageHandlers/handleCrdtGet.js +21 -14
- package/dist/messageHandlers/handleCrdtGet.js.map +1 -1
- package/dist/messageHandlers/handleCrdtPut.js +50 -71
- package/dist/messageHandlers/handleCrdtPut.js.map +1 -1
- package/dist/messageHandlers/handleSubscribe.js +1 -21
- package/dist/messageHandlers/handleSubscribe.js.map +1 -1
- package/dist/toolDbClientOnMessage.js +0 -3
- package/dist/toolDbClientOnMessage.js.map +1 -1
- package/dist/toolDbCrdtGet.d.ts +4 -2
- package/dist/toolDbCrdtGet.js +26 -19
- package/dist/toolDbCrdtGet.js.map +1 -1
- package/dist/toolDbCrdtPut.d.ts +3 -3
- package/dist/toolDbCrdtPut.js +11 -11
- package/dist/toolDbCrdtPut.js.map +1 -1
- package/dist/toolDbGet.d.ts +1 -1
- package/dist/toolDbGet.js +3 -3
- package/dist/toolDbGet.js.map +1 -1
- package/dist/toolDbPut.d.ts +1 -1
- package/dist/toolDbPut.js +8 -6
- package/dist/toolDbPut.js.map +1 -1
- package/dist/toolDbQueryKeys.js +2 -2
- package/dist/toolDbQueryKeys.js.map +1 -1
- package/dist/toolDbSubscribe.d.ts +1 -1
- package/dist/toolDbSubscribe.js +3 -22
- package/dist/toolDbSubscribe.js.map +1 -1
- package/dist/tooldb.d.ts +6 -12
- package/dist/tooldb.js +3 -15
- package/dist/tooldb.js.map +1 -1
- package/dist/types/message.d.ts +5 -18
- package/dist/types/message.js +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/encoding/uint8ArrayToHex.d.ts +1 -2
- package/dist/utils/encoding/uint8ArrayToHex.js.map +1 -1
- package/dist/utils/encoding/uint8ToBase64.d.ts +1 -2
- package/dist/utils/encoding/uint8ToBase64.js.map +1 -1
- package/dist/utils/sha1.d.ts +1 -1
- package/dist/utils/sha1.js +2 -3
- package/dist/utils/sha1.js.map +1 -1
- package/dist/utils/sha256.d.ts +1 -1
- package/dist/utils/sha256.js +2 -3
- package/dist/utils/sha256.js.map +1 -1
- package/dist/utils/verifyMessage.d.ts +1 -1
- package/dist/utils/verifyMessage.js +6 -6
- package/dist/utils/verifyMessage.js.map +1 -1
- package/package.json +1 -2
- package/test-alice/000269.ldb +0 -0
- package/test-alice/000271.ldb +0 -0
- package/test-alice/000274.ldb +0 -0
- package/test-alice/000277.ldb +0 -0
- package/test-alice/000278.log +0 -0
- package/test-alice/CURRENT +1 -1
- package/test-alice/LOG +5 -5
- package/test-alice/LOG.old +5 -5
- package/test-alice/MANIFEST-000276 +0 -0
- package/test-alice-speed/000185.ldb +0 -0
- package/test-alice-speed/000187.ldb +0 -0
- package/test-alice-speed/000188.log +0 -0
- package/test-alice-speed/CURRENT +1 -1
- package/test-alice-speed/LOG +5 -1
- package/test-alice-speed/LOG.old +14 -0
- package/test-alice-speed/MANIFEST-000186 +0 -0
- package/test-bob/000269.ldb +0 -0
- package/test-bob/000271.ldb +0 -0
- package/test-bob/000274.ldb +0 -0
- package/test-bob/000277.ldb +0 -0
- package/test-bob/000278.log +0 -0
- package/test-bob/CURRENT +1 -1
- package/test-bob/LOG +5 -5
- package/test-bob/LOG.old +5 -5
- package/test-bob/MANIFEST-000276 +0 -0
- package/test-node-a/000269.ldb +0 -0
- package/test-node-a/000271.ldb +0 -0
- package/test-node-a/000274.ldb +0 -0
- package/test-node-a/000277.ldb +0 -0
- package/test-node-a/000278.log +0 -0
- package/test-node-a/CURRENT +1 -1
- package/test-node-a/LOG +5 -5
- package/test-node-a/LOG.old +5 -5
- package/test-node-a/MANIFEST-000276 +0 -0
- package/test-node-b/000269.ldb +0 -0
- package/test-node-b/000271.ldb +0 -0
- package/test-node-b/000274.ldb +0 -0
- package/test-node-b/000277.ldb +0 -0
- package/test-node-b/000278.log +0 -0
- package/test-node-b/CURRENT +1 -1
- package/test-node-b/LOG +5 -5
- package/test-node-b/LOG.old +5 -5
- package/test-node-b/MANIFEST-000276 +0 -0
- package/test-verify-a/{000068.log → 000182.log} +0 -0
- package/test-verify-a/CURRENT +1 -1
- package/test-verify-a/LOG +3 -3
- package/test-verify-a/LOG.old +3 -3
- package/test-verify-a/{MANIFEST-000067 → MANIFEST-000181} +0 -0
- package/test-alice/000087.ldb +0 -0
- package/test-alice/000089.ldb +0 -0
- package/test-alice/000092.ldb +0 -0
- package/test-alice/000093.log +0 -0
- package/test-alice/MANIFEST-000091 +0 -0
- package/test-alice-speed/000003.log +0 -0
- package/test-alice-speed/MANIFEST-000002 +0 -0
- package/test-bob/000087.ldb +0 -0
- package/test-bob/000089.ldb +0 -0
- package/test-bob/000092.ldb +0 -0
- package/test-bob/000093.log +0 -0
- package/test-bob/MANIFEST-000091 +0 -0
- package/test-node-a/000087.ldb +0 -0
- package/test-node-a/000089.ldb +0 -0
- package/test-node-a/000092.ldb +0 -0
- package/test-node-a/000093.log +0 -0
- package/test-node-a/MANIFEST-000091 +0 -0
- package/test-node-b/000087.ldb +0 -0
- package/test-node-b/000089.ldb +0 -0
- package/test-node-b/000092.ldb +0 -0
- package/test-node-b/000093.log +0 -0
- package/test-node-b/MANIFEST-000091 +0 -0
package/dist/index.js
CHANGED
|
@@ -15,20 +15,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
15
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.ToolDb = exports.handleSubscribe = exports.handleQuery = exports.handlePut = exports.handlePong = exports.handlePing = exports.handleGet = exports.handleCrdtPut = exports.handleCrdtGet = exports.
|
|
18
|
+
exports.ToolDb = exports.handleSubscribe = exports.handleQuery = exports.handlePut = exports.handlePong = exports.handlePing = exports.handleGet = exports.handleCrdtPut = exports.handleCrdtGet = exports.toolDbWebrtc = exports.toolDbNetwork = exports.generateKeyFromPassword = exports.encryptWithPass = exports.decryptWithPass = exports.MapCrdt = exports.BaseCrdt = exports.hexToUint8 = exports.hexToString = exports.hexToArrayBuffer = exports.arrayBufferToHex = exports.arrayBufferToString = exports.verifyPeer = exports.verifyMessage = exports.stringToArrayBuffer = exports.textRandom = exports.randomAnimal = exports.generateIv = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
|
|
19
19
|
__exportStar(require("./types/tooldb"), exports);
|
|
20
20
|
__exportStar(require("./types/message"), exports);
|
|
21
21
|
global.Buffer = global.Buffer || require("buffer").Buffer;
|
|
22
|
-
if (typeof btoa === "undefined") {
|
|
23
|
-
global.btoa = function (str) {
|
|
24
|
-
return Buffer.from(str, "binary").toString("base64");
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
if (typeof atob === "undefined") {
|
|
28
|
-
global.atob = function (b64Encoded) {
|
|
29
|
-
return Buffer.from(b64Encoded, "base64").toString("binary");
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
22
|
if (typeof window === "undefined") {
|
|
33
23
|
global.crypto = require("crypto").webcrypto;
|
|
34
24
|
}
|
|
@@ -50,38 +40,20 @@ var verifyMessage_1 = require("./utils/verifyMessage");
|
|
|
50
40
|
Object.defineProperty(exports, "verifyMessage", { enumerable: true, get: function () { return __importDefault(verifyMessage_1).default; } });
|
|
51
41
|
var verifyPeer_1 = require("./utils/verifyPeer");
|
|
52
42
|
Object.defineProperty(exports, "verifyPeer", { enumerable: true, get: function () { return __importDefault(verifyPeer_1).default; } });
|
|
53
|
-
var arrayBufferToBase64_1 = require("./utils/encoding/arrayBufferToBase64");
|
|
54
|
-
Object.defineProperty(exports, "arrayBufferToBase64", { enumerable: true, get: function () { return __importDefault(arrayBufferToBase64_1).default; } });
|
|
55
43
|
var arrayBufferToString_1 = require("./utils/encoding/arrayBufferToString");
|
|
56
44
|
Object.defineProperty(exports, "arrayBufferToString", { enumerable: true, get: function () { return __importDefault(arrayBufferToString_1).default; } });
|
|
57
45
|
var arrayBufferToHex_1 = require("./utils/encoding/arrayBufferToHex");
|
|
58
46
|
Object.defineProperty(exports, "arrayBufferToHex", { enumerable: true, get: function () { return __importDefault(arrayBufferToHex_1).default; } });
|
|
59
|
-
var base64ToArrayBuffer_1 = require("./utils/encoding/base64ToArrayBuffer");
|
|
60
|
-
Object.defineProperty(exports, "base64ToArrayBuffer", { enumerable: true, get: function () { return __importDefault(base64ToArrayBuffer_1).default; } });
|
|
61
|
-
var base64ToBinaryChange_1 = require("./utils/encoding/base64ToBinaryChange");
|
|
62
|
-
Object.defineProperty(exports, "base64ToBinaryChange", { enumerable: true, get: function () { return __importDefault(base64ToBinaryChange_1).default; } });
|
|
63
|
-
var base64ToBinaryDocument_1 = require("./utils/encoding/base64ToBinaryDocument");
|
|
64
|
-
Object.defineProperty(exports, "base64ToBinaryDocument", { enumerable: true, get: function () { return __importDefault(base64ToBinaryDocument_1).default; } });
|
|
65
|
-
var base64ToUint8_1 = require("./utils/encoding/base64ToUint8");
|
|
66
|
-
Object.defineProperty(exports, "base64ToUint8", { enumerable: true, get: function () { return __importDefault(base64ToUint8_1).default; } });
|
|
67
|
-
var base64ToHex_1 = require("./utils/encoding/base64ToHex");
|
|
68
|
-
Object.defineProperty(exports, "base64ToHex", { enumerable: true, get: function () { return __importDefault(base64ToHex_1).default; } });
|
|
69
47
|
var hexToArrayBuffer_1 = require("./utils/encoding/hexToArrayBuffer");
|
|
70
48
|
Object.defineProperty(exports, "hexToArrayBuffer", { enumerable: true, get: function () { return __importDefault(hexToArrayBuffer_1).default; } });
|
|
71
|
-
var hexToBase64_1 = require("./utils/encoding/hexToBase64");
|
|
72
|
-
Object.defineProperty(exports, "hexToBase64", { enumerable: true, get: function () { return __importDefault(hexToBase64_1).default; } });
|
|
73
49
|
var hexToString_1 = require("./utils/encoding/hexToString");
|
|
74
50
|
Object.defineProperty(exports, "hexToString", { enumerable: true, get: function () { return __importDefault(hexToString_1).default; } });
|
|
75
51
|
var hexToUint8_1 = require("./utils/encoding/hexToUint8");
|
|
76
52
|
Object.defineProperty(exports, "hexToUint8", { enumerable: true, get: function () { return __importDefault(hexToUint8_1).default; } });
|
|
77
|
-
var
|
|
78
|
-
Object.defineProperty(exports, "
|
|
79
|
-
var
|
|
80
|
-
Object.defineProperty(exports, "
|
|
81
|
-
var uint8ArrayToHex_1 = require("./utils/encoding/uint8ArrayToHex");
|
|
82
|
-
Object.defineProperty(exports, "uint8ArrayToHex", { enumerable: true, get: function () { return __importDefault(uint8ArrayToHex_1).default; } });
|
|
83
|
-
var toBase64_1 = require("./utils/encoding/toBase64");
|
|
84
|
-
Object.defineProperty(exports, "toBase64", { enumerable: true, get: function () { return __importDefault(toBase64_1).default; } });
|
|
53
|
+
var baseCrdt_1 = require("./crdt/baseCrdt");
|
|
54
|
+
Object.defineProperty(exports, "BaseCrdt", { enumerable: true, get: function () { return __importDefault(baseCrdt_1).default; } });
|
|
55
|
+
var mapCrdt_1 = require("./crdt/mapCrdt");
|
|
56
|
+
Object.defineProperty(exports, "MapCrdt", { enumerable: true, get: function () { return __importDefault(mapCrdt_1).default; } });
|
|
85
57
|
var decryptWithPass_1 = require("./utils/crypto/decryptWithPass");
|
|
86
58
|
Object.defineProperty(exports, "decryptWithPass", { enumerable: true, get: function () { return __importDefault(decryptWithPass_1).default; } });
|
|
87
59
|
var encryptWithPass_1 = require("./utils/crypto/encryptWithPass");
|
|
@@ -92,8 +64,6 @@ var toolDbNetwork_1 = require("./toolDbNetwork");
|
|
|
92
64
|
Object.defineProperty(exports, "toolDbNetwork", { enumerable: true, get: function () { return __importDefault(toolDbNetwork_1).default; } });
|
|
93
65
|
var toolDbWebrtc_1 = require("./toolDbWebrtc");
|
|
94
66
|
Object.defineProperty(exports, "toolDbWebrtc", { enumerable: true, get: function () { return __importDefault(toolDbWebrtc_1).default; } });
|
|
95
|
-
var handleCrdt_1 = require("./messageHandlers/handleCrdt");
|
|
96
|
-
Object.defineProperty(exports, "handleCrdt", { enumerable: true, get: function () { return __importDefault(handleCrdt_1).default; } });
|
|
97
67
|
var handleCrdtGet_1 = require("./messageHandlers/handleCrdtGet");
|
|
98
68
|
Object.defineProperty(exports, "handleCrdtGet", { enumerable: true, get: function () { return __importDefault(handleCrdtGet_1).default; } });
|
|
99
69
|
var handleCrdtPut_1 = require("./messageHandlers/handleCrdtPut");
|
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;;;;;;;;;;;;;;;;AAEnC,iDAA+B;AAC/B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,mCAAmC;;;;;;;;;;;;;;;;AAEnC,iDAA+B;AAC/B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,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;AAE1B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,4EAAsF;AAA7E,2IAAA,OAAO,OAAuB;AACvC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAE9B,4EAAsF;AAA7E,2IAAA,OAAO,OAAuB;AACvC,sEAAgF;AAAvE,qIAAA,OAAO,OAAoB;AACpC,sEAAgF;AAAvE,qIAAA,OAAO,OAAoB;AACpC,4DAAsE;AAA7D,2HAAA,OAAO,OAAe;AAC/B,0DAAoE;AAA3D,yHAAA,OAAO,OAAc;AAE9B,4CAAsD;AAA7C,qHAAA,OAAO,OAAY;AAC5B,0CAAoD;AAA3C,mHAAA,OAAO,OAAW;AAE3B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,kFAA4F;AAAnF,mJAAA,OAAO,OAA2B;AAE3C,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAEhC,iEAA2E;AAAlE,+HAAA,OAAO,OAAiB;AACjC,iEAA2E;AAAlE,+HAAA,OAAO,OAAiB;AACjC,yDAAmE;AAA1D,uHAAA,OAAO,OAAa;AAC7B,2DAAqE;AAA5D,yHAAA,OAAO,OAAc;AAC9B,2DAAqE;AAA5D,yHAAA,OAAO,OAAc;AAC9B,yDAAmE;AAA1D,uHAAA,OAAO,OAAa;AAC7B,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,qEAA+E;AAAtE,mIAAA,OAAO,OAAmB;AAEnC,mCAA6C;AAApC,iHAAA,OAAO,OAAU"}
|
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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);
|
|
4
12
|
};
|
|
5
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var automerge_1 = __importDefault(require("automerge"));
|
|
7
|
-
var uint8ArrayToHex_1 = __importDefault(require("../utils/encoding/uint8ArrayToHex"));
|
|
8
14
|
function handleCrdtGet(message, remotePeerId) {
|
|
9
15
|
var _this = this;
|
|
10
|
-
this.
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
type: "
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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: "putCrdt" }, JSON.parse(data)), { to: [], id: message.id });
|
|
21
|
+
_this.network.sendToClientId(remotePeerId, oldData);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
// socket.send(data);
|
|
25
|
+
// do nothing
|
|
26
|
+
}
|
|
20
27
|
}
|
|
21
28
|
else {
|
|
22
29
|
if (_this.options.debug) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleCrdtGet.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtGet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handleCrdtGet.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtGet.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBA2BC;IAtBC,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,SAAS,IACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KACnB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,OAAO,CAAC,EAAE,GACG,CAAC;gBACpB,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;AA3BD,gCA2BC"}
|
|
@@ -1,91 +1,70 @@
|
|
|
1
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
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
5
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var automerge_1 = __importDefault(require("automerge"));
|
|
7
17
|
var message_1 = require("../types/message");
|
|
8
18
|
var toolDbVerificationWrapper_1 = __importDefault(require("../toolDbVerificationWrapper"));
|
|
9
|
-
var
|
|
10
|
-
var uint8ArrayToHex_1 = __importDefault(require("../utils/encoding/uint8ArrayToHex"));
|
|
11
|
-
var base64ToBinaryChange_1 = __importDefault(require("../utils/encoding/base64ToBinaryChange"));
|
|
19
|
+
var mapCrdt_1 = __importDefault(require("../crdt/mapCrdt"));
|
|
12
20
|
function handleCrdtPut(message, remotePeerId) {
|
|
13
21
|
var _this = this;
|
|
14
|
-
// key = aggregated, final value
|
|
15
|
-
// key.crdt = automerge doc with changes
|
|
16
|
-
var writeStart = new Date().getTime();
|
|
17
22
|
toolDbVerificationWrapper_1.default.call(this, message).then(function (value) {
|
|
18
|
-
// console.log("
|
|
19
|
-
// console.log("CRDT Verification wrapper result: ", value);
|
|
23
|
+
// console.log("Verification wrapper result: ", value, message.k);
|
|
20
24
|
if (value === message_1.VerifyResult.Verified) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// currentDoc,
|
|
36
|
-
// Automerge.getHistory(currentDoc)
|
|
37
|
-
// );
|
|
38
|
-
// }
|
|
39
|
-
var newDoc = automerge_1.default.init();
|
|
40
|
-
try {
|
|
41
|
-
newDoc = automerge_1.default.applyChanges(currentDoc || automerge_1.default.init(), changes_1)[0];
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
try {
|
|
45
|
-
newDoc = automerge_1.default.applyChanges(automerge_1.default.init(), changes_1)[0];
|
|
25
|
+
_this.emit("verified", message);
|
|
26
|
+
// relay to other servers !!!
|
|
27
|
+
_this.network.sendToAll(message, true);
|
|
28
|
+
_this.store.get(message.k, function (err, oldData) {
|
|
29
|
+
if (oldData) {
|
|
30
|
+
var parsedOldData = __assign({ type: "crdtPut" }, JSON.parse(oldData));
|
|
31
|
+
var newMessage = message;
|
|
32
|
+
// Merge old document with new data incoming and save it
|
|
33
|
+
// Add handles for all kinds of CRDT we add
|
|
34
|
+
if (parsedOldData.crdt === "MAP") {
|
|
35
|
+
var oldDoc = new mapCrdt_1.default(_this.getAddress() || "", parsedOldData.v);
|
|
36
|
+
oldDoc.mergeChanges(message.v);
|
|
37
|
+
var changesMerged = oldDoc.getChanges();
|
|
38
|
+
newMessage = __assign(__assign({}, message), { v: changesMerged });
|
|
46
39
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
if (parsedOldData.t < message.t) {
|
|
41
|
+
var key = newMessage.k;
|
|
42
|
+
_this.triggerKeyListener(key, newMessage);
|
|
43
|
+
_this.store.put(newMessage.k, JSON.stringify(newMessage), function (err, data) {
|
|
44
|
+
//
|
|
45
|
+
});
|
|
51
46
|
}
|
|
47
|
+
else {
|
|
48
|
+
var key = message.k;
|
|
49
|
+
_this.triggerKeyListener(key, parsedOldData);
|
|
50
|
+
}
|
|
51
|
+
// } else if (this.options.debug) {
|
|
52
|
+
// console.log(
|
|
53
|
+
// `${message.k} has old data, but its newer. old ${parsedOldData.t} < new ${message.t}`
|
|
54
|
+
// );
|
|
55
|
+
// }
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
var key = message.k;
|
|
59
|
+
_this.triggerKeyListener(key, message);
|
|
60
|
+
_this.store.put(message.k, JSON.stringify(message), function (err, data) {
|
|
61
|
+
//
|
|
62
|
+
});
|
|
52
63
|
}
|
|
53
|
-
// if (newDoc) {
|
|
54
|
-
// console.log(
|
|
55
|
-
// "new document changes:",
|
|
56
|
-
// Automerge.getHistory(newDoc),
|
|
57
|
-
// "final: ",
|
|
58
|
-
// newDoc
|
|
59
|
-
// );
|
|
60
|
-
// }
|
|
61
|
-
// persist
|
|
62
|
-
_this.documents[key_1] = newDoc;
|
|
63
|
-
// OOHH THE TYPECAST PAIN
|
|
64
|
-
// Convert the crdt document to hex before saving
|
|
65
|
-
var savedDoc = (0, uint8ArrayToHex_1.default)(automerge_1.default.save(newDoc));
|
|
66
|
-
_this.store.put(key_1 + ".crdt", savedDoc, function (err, data) {
|
|
67
|
-
// const writeEnd = new Date().getTime();
|
|
68
|
-
// console.log(
|
|
69
|
-
// "CRDT write: ",
|
|
70
|
-
// `${key}.crdt`,
|
|
71
|
-
// (writeEnd - writeStart) / 1000
|
|
72
|
-
// );
|
|
73
|
-
});
|
|
74
|
-
var crdtMessage = {
|
|
75
|
-
type: "crdt",
|
|
76
|
-
key: key_1,
|
|
77
|
-
id: message.id,
|
|
78
|
-
to: [],
|
|
79
|
-
doc: savedDoc,
|
|
80
|
-
};
|
|
81
|
-
_this.triggerKeyListener(key_1, crdtMessage);
|
|
82
|
-
// relay to other servers
|
|
83
|
-
// !!!
|
|
84
|
-
_this.network.sendToAll(crdtMessage, true);
|
|
85
64
|
});
|
|
86
65
|
}
|
|
87
66
|
else {
|
|
88
|
-
console.
|
|
67
|
+
console.warn("unverified message: ", value, message);
|
|
89
68
|
}
|
|
90
69
|
});
|
|
91
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleCrdtPut.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtPut.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handleCrdtPut.js","sourceRoot":"","sources":["../../src/messageHandlers/handleCrdtPut.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,4CAAgE;AAChE,2FAAqE;AACrE,4DAAsC;AAEtC,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBAmEC;IA9DC,mCAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK;QACvD,kEAAkE;QAClE,IAAI,KAAK,KAAK,sBAAY,CAAC,QAAQ,EAAE;YACnC,KAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/B,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,SAAS,IACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CACvB,CAAC;oBAEF,IAAI,UAAU,GAAG,OAAO,CAAC;oBAEzB,wDAAwD;oBACxD,2CAA2C;oBAC3C,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE;wBAChC,IAAM,MAAM,GAAG,IAAI,iBAAO,CACxB,KAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EACvB,aAAa,CAAC,CAAC,CAChB,CAAC;wBACF,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAM,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC1C,UAAU,yBACL,OAAO,KACV,CAAC,EAAE,aAAa,GACjB,CAAC;qBACH;oBAED,IAAI,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;wBAC/B,IAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;wBACzB,KAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;wBACzC,KAAI,CAAC,KAAK,CAAC,GAAG,CACZ,UAAU,CAAC,CAAC,EACZ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAC1B,UAAC,GAAG,EAAE,IAAI;4BACR,EAAE;wBACJ,CAAC,CACF,CAAC;qBACH;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;AAnED,gCAmEC"}
|
|
@@ -10,13 +10,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
var automerge_1 = __importDefault(require("automerge"));
|
|
18
|
-
var uint8ArrayToHex_1 = __importDefault(require("../utils/encoding/uint8ArrayToHex"));
|
|
19
|
-
var textRandom_1 = __importDefault(require("../utils/textRandom"));
|
|
20
14
|
function handleSubscribe(message, remotePeerId) {
|
|
21
15
|
var _this = this;
|
|
22
16
|
if (remotePeerId) {
|
|
@@ -24,7 +18,7 @@ function handleSubscribe(message, remotePeerId) {
|
|
|
24
18
|
if (!this.subscriptions.includes(subId)) {
|
|
25
19
|
this.subscriptions.push(subId);
|
|
26
20
|
this.addKeyListener(message.key, function (msg) {
|
|
27
|
-
if ((msg.type === "put" || msg.type === "
|
|
21
|
+
if ((msg.type === "put" || msg.type === "crdtPut") && remotePeerId) {
|
|
28
22
|
// We do not reply to the socket directly
|
|
29
23
|
// instead we use the client id, in case the socket reconnects
|
|
30
24
|
_this.network.sendToClientId(remotePeerId, msg);
|
|
@@ -44,20 +38,6 @@ function handleSubscribe(message, remotePeerId) {
|
|
|
44
38
|
}
|
|
45
39
|
}
|
|
46
40
|
});
|
|
47
|
-
this.loadCrdtDocument(message.key, false).then(function (doc) {
|
|
48
|
-
// console.log("Load crdt from subscribe", message.key, doc);
|
|
49
|
-
if (doc) {
|
|
50
|
-
var savedDoc = automerge_1.default.save(doc);
|
|
51
|
-
var msg = {
|
|
52
|
-
type: "crdt",
|
|
53
|
-
key: message.key,
|
|
54
|
-
to: [],
|
|
55
|
-
id: (0, textRandom_1.default)(10),
|
|
56
|
-
doc: (0, uint8ArrayToHex_1.default)(savedDoc),
|
|
57
|
-
};
|
|
58
|
-
_this.network.sendToClientId(remotePeerId, msg);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
41
|
}
|
|
62
42
|
exports.default = handleSubscribe;
|
|
63
43
|
//# sourceMappingURL=handleSubscribe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleSubscribe.js","sourceRoot":"","sources":["../../src/messageHandlers/handleSubscribe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handleSubscribe.js","sourceRoot":"","sources":["../../src/messageHandlers/handleSubscribe.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,SAAwB,eAAe,CAErC,OAAyB,EACzB,YAAoB;IAHtB,iBA+BC;IA1BC,IAAI,YAAY,EAAE;QAChB,IAAM,KAAK,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,UAAC,GAAG;gBACnC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,YAAY,EAAE;oBAClE,yCAAyC;oBACzC,8DAA8D;oBAC9D,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;SACJ;KACF;IAED,yCAAyC;IACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,IAAI;QACpC,IAAI,IAAI,EAAE;YACR,IAAI;gBACF,IAAM,OAAO,yBAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAE,EAAE,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;gBACxD,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;aACpD;YAAC,OAAO,CAAC,EAAE;gBACV,aAAa;aACd;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA/BD,kCA+BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDbClientOnMessage.js","sourceRoot":"","sources":["../src/toolDbClientOnMessage.ts"],"names":[],"mappings":";;AAGA,SAAwB,qBAAqB,CAE3C,OAAsB,EACtB,YAAoB;IAEpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KACtC;IACD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACxD,OAAO,CAAC,IAAI,CACV,sCAAoC,OAAO,CAAC,IAAI,cAAS,YAAc,CACxE,CAAC;QACF,OAAO;KACR;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,iBAAe,OAAO,CAAC,IAAI,cAAS,YAAc,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IAED,wCAAwC;IACxC,IAAI,OAAO,CAAC,EAAE,EAAE;QACd,IAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IACE,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB;QACA,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,OAAO,CAAC,CAAC;QAC7D,OAAO;KACR;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,MAAM;YACT,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACvC,MAAM;QAER,KAAK,MAAM;YACT,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACvC,MAAM;QAER,KAAK,WAAW;YACd,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC5C,MAAM;QAER,KAAK,KAAK;YACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACtC,MAAM;QAER,KAAK,KAAK;YACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACtC,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM;QAER,KAAK,OAAO;YACV,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACxC,MAAM;QAER
|
|
1
|
+
{"version":3,"file":"toolDbClientOnMessage.js","sourceRoot":"","sources":["../src/toolDbClientOnMessage.ts"],"names":[],"mappings":";;AAGA,SAAwB,qBAAqB,CAE3C,OAAsB,EACtB,YAAoB;IAEpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KACtC;IACD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACxD,OAAO,CAAC,IAAI,CACV,sCAAoC,OAAO,CAAC,IAAI,cAAS,YAAc,CACxE,CAAC;QACF,OAAO;KACR;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,iBAAe,OAAO,CAAC,IAAI,cAAS,YAAc,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IAED,wCAAwC;IACxC,IAAI,OAAO,CAAC,EAAE,EAAE;QACd,IAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IACE,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB;QACA,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,OAAO,CAAC,CAAC;QAC7D,OAAO;KACR;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,MAAM;YACT,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACvC,MAAM;QAER,KAAK,MAAM;YACT,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACvC,MAAM;QAER,KAAK,WAAW;YACd,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC5C,MAAM;QAER,KAAK,KAAK;YACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACtC,MAAM;QAER,KAAK,KAAK;YACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACtC,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM;QAER,KAAK,OAAO;YACV,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACxC,MAAM;QAER;YACE,MAAM;KACT;AACH,CAAC;AA7ED,wCA6EC"}
|
package/dist/toolDbCrdtGet.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import BaseCrdt from "./crdt/baseCrdt";
|
|
1
2
|
import ToolDb from "./tooldb";
|
|
3
|
+
import { CrdtPutMessage } from "./types/message";
|
|
2
4
|
/**
|
|
3
5
|
* Triggers a GET request to other peers. If the data is available locally it will return that instead.
|
|
4
6
|
* @param key key of the data
|
|
5
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
7
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
6
8
|
* @param timeout Max time to wait for remote.
|
|
7
9
|
* @returns Promise<Data>
|
|
8
10
|
*/
|
|
9
|
-
export default function toolDbCrdtGet(this: ToolDb, key: string, userNamespaced?: boolean, timeoutMs?: number): Promise<
|
|
11
|
+
export default function toolDbCrdtGet<T = any>(this: ToolDb, key: string, crdt: BaseCrdt<T, any, any>, userNamespaced?: boolean, timeoutMs?: number): Promise<CrdtPutMessage<T> | null>;
|
package/dist/toolDbCrdtGet.js
CHANGED
|
@@ -1,41 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
var _1 = require(".");
|
|
7
|
-
var hexToUint8_1 = __importDefault(require("./utils/encoding/hexToUint8"));
|
|
8
4
|
/**
|
|
9
5
|
* Triggers a GET request to other peers. If the data is available locally it will return that instead.
|
|
10
6
|
* @param key key of the data
|
|
11
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
7
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
12
8
|
* @param timeout Max time to wait for remote.
|
|
13
9
|
* @returns Promise<Data>
|
|
14
10
|
*/
|
|
15
|
-
function toolDbCrdtGet(key, userNamespaced, timeoutMs) {
|
|
11
|
+
function toolDbCrdtGet(key, crdt, userNamespaced, timeoutMs) {
|
|
16
12
|
var _this = this;
|
|
17
13
|
if (userNamespaced === void 0) { userNamespaced = false; }
|
|
18
14
|
if (timeoutMs === void 0) { timeoutMs = 1000; }
|
|
19
15
|
return new Promise(function (resolve, reject) {
|
|
20
|
-
if (userNamespaced && _this.
|
|
16
|
+
if (userNamespaced && _this.getAddress() === undefined) {
|
|
21
17
|
reject(new Error("You are not authorized yet!"));
|
|
22
18
|
return;
|
|
23
19
|
}
|
|
24
|
-
var finalKey = userNamespaced ? ":" + _this.
|
|
20
|
+
var finalKey = userNamespaced ? ":" + _this.getAddress() + "." + key : key;
|
|
25
21
|
if (_this.options.debug) {
|
|
26
22
|
console.log("CRDT GET > " + finalKey);
|
|
27
23
|
}
|
|
28
24
|
var msgId = (0, _1.textRandom)(10);
|
|
29
25
|
var cancelTimeout = setTimeout(function () {
|
|
30
|
-
_this.
|
|
31
|
-
if (_this.options.debug) {
|
|
32
|
-
console.log("CRDT DATA > ", data);
|
|
33
|
-
}
|
|
26
|
+
_this.store.get(finalKey, function (err, data) {
|
|
34
27
|
if (data) {
|
|
35
28
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
resolve(
|
|
29
|
+
var message = JSON.parse(data);
|
|
30
|
+
crdt.mergeChanges(message.v);
|
|
31
|
+
resolve(message);
|
|
39
32
|
}
|
|
40
33
|
catch (e) {
|
|
41
34
|
resolve(null);
|
|
@@ -48,12 +41,26 @@ function toolDbCrdtGet(key, userNamespaced, timeoutMs) {
|
|
|
48
41
|
}, timeoutMs);
|
|
49
42
|
_this.addIdListener(msgId, function (msg) {
|
|
50
43
|
if (_this.options.debug) {
|
|
51
|
-
console.log("
|
|
44
|
+
console.log("GET RECV > " + finalKey, msg);
|
|
52
45
|
}
|
|
53
46
|
clearTimeout(cancelTimeout);
|
|
54
|
-
if (msg.type === "
|
|
55
|
-
|
|
56
|
-
resolve(
|
|
47
|
+
if (msg.type === "crdtPut") {
|
|
48
|
+
crdt.mergeChanges(msg.v);
|
|
49
|
+
resolve(msg);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
_this.store.get(finalKey, function (err, data) {
|
|
53
|
+
if (data) {
|
|
54
|
+
try {
|
|
55
|
+
var msg = JSON.parse(data);
|
|
56
|
+
clearTimeout(cancelTimeout);
|
|
57
|
+
_this.removeIdListener(msgId);
|
|
58
|
+
crdt.mergeChanges(msg.v);
|
|
59
|
+
resolve(msg);
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
// do nothing
|
|
63
|
+
}
|
|
57
64
|
}
|
|
58
65
|
});
|
|
59
66
|
// Do get
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDbCrdtGet.js","sourceRoot":"","sources":["../src/toolDbCrdtGet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolDbCrdtGet.js","sourceRoot":"","sources":["../src/toolDbCrdtGet.ts"],"names":[],"mappings":";;AAAA,sBAA+B;AAK/B;;;;;;GAMG;AACH,SAAwB,aAAa,CAEnC,GAAW,EACX,IAA2B,EAC3B,cAAsB,EACtB,SAAgB;IALlB,iBAqEC;IAjEC,+BAAA,EAAA,sBAAsB;IACtB,0BAAA,EAAA,gBAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,cAAc,IAAI,KAAI,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YACrD,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACjD,OAAO;SACR;QACD,IAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,MAAI,KAAI,CAAC,UAAU,EAAE,SAAI,GAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;SACvC;QAED,IAAM,KAAK,GAAG,IAAA,aAAU,EAAC,EAAE,CAAC,CAAC;QAE7B,IAAM,aAAa,GAAG,UAAU,CAAC;YAC/B,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;gBACjC,IAAI,IAAI,EAAE;oBACR,IAAI;wBACF,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;qBAClB;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,IAAI,CAAC,CAAC;qBACf;iBACF;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,CAAC;iBACf;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAC,GAAG;YAC5B,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;aAC7C;YAED,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,CAAC;aACd;QACH,CAAC,CAAC,CAAC;QAEH,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI;YACjC,IAAI,IAAI,EAAE;gBACR,IAAI;oBACF,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7B,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,CAAC;iBACd;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAa;iBACd;aACF;QACH,CAAC,CAAC,CAAC;QAEH,SAAS;QACT,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,QAAQ;YACb,EAAE,EAAE,KAAK;SACV,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AArED,gCAqEC"}
|
package/dist/toolDbCrdtPut.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BinaryChange } from "automerge";
|
|
2
1
|
import { CrdtPutMessage } from ".";
|
|
3
2
|
import ToolDb from "./tooldb";
|
|
3
|
+
import BaseCrdt from "./crdt/baseCrdt";
|
|
4
4
|
/**
|
|
5
5
|
* Triggers a PUT request to other peers.
|
|
6
6
|
* @param key key where we want to put the data at.
|
|
7
7
|
* @param value Data we want to any (any type)
|
|
8
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
8
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
9
9
|
* @returns Promise<Data | null>
|
|
10
10
|
*/
|
|
11
|
-
export default function toolDbCrdtPut<T = any>(this: ToolDb, key: string,
|
|
11
|
+
export default function toolDbCrdtPut<T = any>(this: ToolDb, key: string, crdt: BaseCrdt<T, any, any>, userNamespaced?: boolean): Promise<CrdtPutMessage | null>;
|
package/dist/toolDbCrdtPut.js
CHANGED
|
@@ -16,15 +16,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
var _1 = require(".");
|
|
18
18
|
var proofOfWork_1 = __importDefault(require("./utils/proofOfWork"));
|
|
19
|
-
var uint8ArrayToHex_1 = __importDefault(require("./utils/encoding/uint8ArrayToHex"));
|
|
20
19
|
/**
|
|
21
20
|
* Triggers a PUT request to other peers.
|
|
22
21
|
* @param key key where we want to put the data at.
|
|
23
22
|
* @param value Data we want to any (any type)
|
|
24
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
23
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
25
24
|
* @returns Promise<Data | null>
|
|
26
25
|
*/
|
|
27
|
-
function toolDbCrdtPut(key,
|
|
26
|
+
function toolDbCrdtPut(key, crdt, userNamespaced) {
|
|
28
27
|
var _this = this;
|
|
29
28
|
if (userNamespaced === void 0) { userNamespaced = false; }
|
|
30
29
|
return new Promise(function (resolve, reject) {
|
|
@@ -33,33 +32,34 @@ function toolDbCrdtPut(key, value, userNamespaced) {
|
|
|
33
32
|
reject(new Error("Key cannot include dots!; " + key));
|
|
34
33
|
return;
|
|
35
34
|
}
|
|
36
|
-
if (!_this.
|
|
35
|
+
if (!_this.getAddress()) {
|
|
37
36
|
reject(new Error("You need to log in before you can PUT."));
|
|
38
37
|
return;
|
|
39
38
|
}
|
|
40
39
|
var timestamp = new Date().getTime();
|
|
41
|
-
var
|
|
42
|
-
var
|
|
40
|
+
var crdtChanges = crdt.getChanges();
|
|
41
|
+
var encodedData = JSON.stringify(crdtChanges);
|
|
42
|
+
var dataString = "" + encodedData + _this.getAddress() + timestamp;
|
|
43
43
|
// WORK
|
|
44
44
|
(0, proofOfWork_1.default)(dataString, _this.options.pow)
|
|
45
45
|
.then(function (_a) {
|
|
46
46
|
var hash = _a.hash, nonce = _a.nonce;
|
|
47
47
|
var signature = _this.signData(hash);
|
|
48
|
-
if (signature && _this.
|
|
48
|
+
if (signature && _this.getAddress()) {
|
|
49
49
|
// Compose the message
|
|
50
50
|
var data = {
|
|
51
|
-
k: userNamespaced ? ":" + _this.
|
|
52
|
-
a: _this.
|
|
51
|
+
k: userNamespaced ? ":" + _this.getAddress() + "." + key : key,
|
|
52
|
+
a: _this.getAddress() || "",
|
|
53
53
|
n: nonce,
|
|
54
54
|
t: timestamp,
|
|
55
55
|
h: hash,
|
|
56
56
|
s: signature.signature,
|
|
57
|
-
v:
|
|
57
|
+
v: crdtChanges,
|
|
58
58
|
};
|
|
59
59
|
if (_this.options.debug) {
|
|
60
60
|
console.log("PUT CRDT > " + key, data);
|
|
61
61
|
}
|
|
62
|
-
var finalMessage = __assign({ type: "crdtPut", id: (0, _1.textRandom)(10), to: [] }, data);
|
|
62
|
+
var finalMessage = __assign({ type: "crdtPut", crdt: crdt.type, id: (0, _1.textRandom)(10), to: [] }, data);
|
|
63
63
|
_this.network.sendToAll(finalMessage);
|
|
64
64
|
resolve(finalMessage);
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDbCrdtPut.js","sourceRoot":"","sources":["../src/toolDbCrdtPut.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolDbCrdtPut.js","sourceRoot":"","sources":["../src/toolDbCrdtPut.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sBAAiE;AAGjE,oEAA8C;AAK9C;;;;;;GAMG;AACH,SAAwB,aAAa,CAEnC,GAAW,EACX,IAA2B,EAC3B,cAAsB;IAJxB,iBA2DC;IAvDC,+BAAA,EAAA,sBAAsB;IAEtB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrB,8FAA8F;YAC9F,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA6B,GAAK,CAAC,CAAC,CAAC;YACtD,OAAO;SACR;QAED,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE,EAAE;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,IAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAEvC,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEtC,IAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAM,UAAU,GAAG,KAAG,WAAW,GAAG,KAAI,CAAC,UAAU,EAAE,GAAG,SAAW,CAAC;QAEpE,OAAO;QACP,IAAA,qBAAW,EAAC,UAAU,EAAE,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC;aACtC,IAAI,CAAC,UAAC,EAAe;gBAAb,IAAI,UAAA,EAAE,KAAK,WAAA;YAClB,IAAM,SAAS,GAAG,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,SAAS,IAAI,KAAI,CAAC,UAAU,EAAE,EAAE;gBAClC,sBAAsB;gBACtB,IAAM,IAAI,GAAsC;oBAC9C,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,MAAI,KAAI,CAAC,UAAU,EAAE,SAAI,GAAK,CAAC,CAAC,CAAC,GAAG;oBACxD,CAAC,EAAE,KAAI,CAAC,UAAU,EAAE,IAAI,EAAE;oBAC1B,CAAC,EAAE,KAAK;oBACR,CAAC,EAAE,SAAS;oBACZ,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,SAAS,CAAC,SAAS;oBACtB,CAAC,EAAE,WAAW;iBACf,CAAC;gBAEF,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;iBACxC;gBAED,IAAM,YAAY,cAChB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,EAAE,EAAE,IAAA,aAAU,EAAC,EAAE,CAAC,EAClB,EAAE,EAAE,EAAE,IACH,IAAI,CACR,CAAC;gBACF,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACrC,OAAO,CAAC,YAAY,CAAC,CAAC;aACvB;QACH,CAAC,CAAC;aACD,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AA3DD,gCA2DC"}
|
package/dist/toolDbGet.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import ToolDb from "./tooldb";
|
|
|
2
2
|
/**
|
|
3
3
|
* Triggers a GET request to other peers. If the data is available locally it will return that instead.
|
|
4
4
|
* @param key key of the data
|
|
5
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
5
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
6
6
|
* @param timeout Max time to wait for remote.
|
|
7
7
|
* @returns Promise<Data>
|
|
8
8
|
*/
|
package/dist/toolDbGet.js
CHANGED
|
@@ -4,7 +4,7 @@ var _1 = require(".");
|
|
|
4
4
|
/**
|
|
5
5
|
* Triggers a GET request to other peers. If the data is available locally it will return that instead.
|
|
6
6
|
* @param key key of the data
|
|
7
|
-
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our
|
|
7
|
+
* @param userNamespaced If this key bolongs to a user or its public. Making it private will enforce validation for our address and signatures.
|
|
8
8
|
* @param timeout Max time to wait for remote.
|
|
9
9
|
* @returns Promise<Data>
|
|
10
10
|
*/
|
|
@@ -13,11 +13,11 @@ function toolDbGet(key, userNamespaced, timeoutMs) {
|
|
|
13
13
|
if (userNamespaced === void 0) { userNamespaced = false; }
|
|
14
14
|
if (timeoutMs === void 0) { timeoutMs = 1000; }
|
|
15
15
|
return new Promise(function (resolve, reject) {
|
|
16
|
-
if (userNamespaced && _this.
|
|
16
|
+
if (userNamespaced && _this.getAddress() === undefined) {
|
|
17
17
|
reject(new Error("You are not authorized yet!"));
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
var finalKey = userNamespaced ? ":" + _this.
|
|
20
|
+
var finalKey = userNamespaced ? ":" + _this.getAddress() + "." + key : key;
|
|
21
21
|
if (_this.options.debug) {
|
|
22
22
|
console.log("GET > " + finalKey);
|
|
23
23
|
}
|