tool-db 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +82 -1
  2. package/bundle.js +1 -0
  3. package/dist/adapters-base/networkAdapter.d.ts +58 -0
  4. package/dist/adapters-base/networkAdapter.js +214 -0
  5. package/dist/adapters-base/networkAdapter.js.map +1 -0
  6. package/dist/adapters-base/storageAdapter.d.ts +11 -0
  7. package/dist/adapters-base/storageAdapter.js +36 -0
  8. package/dist/adapters-base/storageAdapter.js.map +1 -0
  9. package/dist/adapters-base/userAdapter.d.ts +15 -0
  10. package/dist/adapters-base/userAdapter.js +42 -0
  11. package/dist/adapters-base/userAdapter.js.map +1 -0
  12. package/dist/crdt/baseCrdt.d.ts +9 -0
  13. package/dist/crdt/baseCrdt.js +27 -0
  14. package/dist/crdt/baseCrdt.js.map +1 -0
  15. package/dist/crdt/counterCrdt.d.ts +30 -0
  16. package/dist/crdt/counterCrdt.js +106 -0
  17. package/dist/crdt/counterCrdt.js.map +1 -0
  18. package/dist/crdt/listCrdt.d.ts +42 -0
  19. package/dist/crdt/listCrdt.js +159 -0
  20. package/dist/crdt/listCrdt.js.map +1 -0
  21. package/dist/crdt/mapCrdt.d.ts +32 -0
  22. package/dist/crdt/mapCrdt.js +118 -0
  23. package/dist/crdt/mapCrdt.js.map +1 -0
  24. package/dist/index.d.ts +34 -0
  25. package/dist/index.js +83 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/logger.d.ts +2 -0
  28. package/dist/logger.js +29 -0
  29. package/dist/logger.js.map +1 -0
  30. package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
  31. package/dist/messageHandlers/handleCrdtGet.js +29 -0
  32. package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
  33. package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
  34. package/dist/messageHandlers/handleCrdtPut.js +93 -0
  35. package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
  36. package/dist/messageHandlers/handleGet.d.ts +2 -0
  37. package/dist/messageHandlers/handleGet.js +29 -0
  38. package/dist/messageHandlers/handleGet.js.map +1 -0
  39. package/dist/messageHandlers/handlePing.d.ts +2 -0
  40. package/dist/messageHandlers/handlePing.js +36 -0
  41. package/dist/messageHandlers/handlePing.js.map +1 -0
  42. package/dist/messageHandlers/handlePong.d.ts +2 -0
  43. package/dist/messageHandlers/handlePong.js +26 -0
  44. package/dist/messageHandlers/handlePong.js.map +1 -0
  45. package/dist/messageHandlers/handlePut.d.ts +2 -0
  46. package/dist/messageHandlers/handlePut.js +57 -0
  47. package/dist/messageHandlers/handlePut.js.map +1 -0
  48. package/dist/messageHandlers/handleQuery.d.ts +2 -0
  49. package/dist/messageHandlers/handleQuery.js +23 -0
  50. package/dist/messageHandlers/handleQuery.js.map +1 -0
  51. package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
  52. package/dist/messageHandlers/handleSubscribe.js +44 -0
  53. package/dist/messageHandlers/handleSubscribe.js.map +1 -0
  54. package/dist/server.d.ts +1 -0
  55. package/dist/server.js +9 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/shared.d.ts +2 -0
  58. package/dist/shared.js +7 -0
  59. package/dist/shared.js.map +1 -0
  60. package/dist/toolDbAnonSignIn.d.ts +2 -0
  61. package/dist/toolDbAnonSignIn.js +7 -0
  62. package/dist/toolDbAnonSignIn.js.map +1 -0
  63. package/dist/toolDbClientOnMessage.d.ts +2 -0
  64. package/dist/toolDbClientOnMessage.js +59 -0
  65. package/dist/toolDbClientOnMessage.js.map +1 -0
  66. package/dist/toolDbCrdtGet.d.ts +9 -0
  67. package/dist/toolDbCrdtGet.js +77 -0
  68. package/dist/toolDbCrdtGet.js.map +1 -0
  69. package/dist/toolDbCrdtPut.d.ts +9 -0
  70. package/dist/toolDbCrdtPut.js +63 -0
  71. package/dist/toolDbCrdtPut.js.map +1 -0
  72. package/dist/toolDbGet.d.ts +9 -0
  73. package/dist/toolDbGet.js +77 -0
  74. package/dist/toolDbGet.js.map +1 -0
  75. package/dist/toolDbKeysSignIn.d.ts +2 -0
  76. package/dist/toolDbKeysSignIn.js +16 -0
  77. package/dist/toolDbKeysSignIn.js.map +1 -0
  78. package/dist/toolDbPut.d.ts +9 -0
  79. package/dist/toolDbPut.js +69 -0
  80. package/dist/toolDbPut.js.map +1 -0
  81. package/dist/toolDbQueryKeys.d.ts +8 -0
  82. package/dist/toolDbQueryKeys.js +66 -0
  83. package/dist/toolDbQueryKeys.js.map +1 -0
  84. package/dist/toolDbSignIn.d.ts +2 -0
  85. package/dist/toolDbSignIn.js +27 -0
  86. package/dist/toolDbSignIn.js.map +1 -0
  87. package/dist/toolDbSignUp.d.ts +2 -0
  88. package/dist/toolDbSignUp.js +101 -0
  89. package/dist/toolDbSignUp.js.map +1 -0
  90. package/dist/toolDbSubscribe.d.ts +9 -0
  91. package/dist/toolDbSubscribe.js +50 -0
  92. package/dist/toolDbSubscribe.js.map +1 -0
  93. package/dist/toolDbVerificationWrapper.d.ts +2 -0
  94. package/dist/toolDbVerificationWrapper.js +98 -0
  95. package/dist/toolDbVerificationWrapper.js.map +1 -0
  96. package/dist/tooldb.d.ts +108 -0
  97. package/dist/tooldb.js +284 -0
  98. package/dist/tooldb.js.map +1 -0
  99. package/dist/types/message.d.ts +100 -0
  100. package/dist/types/message.js +17 -0
  101. package/dist/types/message.js.map +1 -0
  102. package/dist/types/tooldb.d.ts +79 -0
  103. package/dist/types/tooldb.js +3 -0
  104. package/dist/types/tooldb.js.map +1 -0
  105. package/dist/utils/catchReturn.d.ts +1 -0
  106. package/dist/utils/catchReturn.js +8 -0
  107. package/dist/utils/catchReturn.js.map +1 -0
  108. package/dist/utils/encoding/arrayBufferToHex.d.ts +1 -0
  109. package/dist/utils/encoding/arrayBufferToHex.js +19 -0
  110. package/dist/utils/encoding/arrayBufferToHex.js.map +1 -0
  111. package/dist/utils/encoding/arrayBufferToString.d.ts +1 -0
  112. package/dist/utils/encoding/arrayBufferToString.js +12 -0
  113. package/dist/utils/encoding/arrayBufferToString.js.map +1 -0
  114. package/dist/utils/encoding/hexToArrayBuffer.d.ts +1 -0
  115. package/dist/utils/encoding/hexToArrayBuffer.js +15 -0
  116. package/dist/utils/encoding/hexToArrayBuffer.js.map +1 -0
  117. package/dist/utils/encoding/hexToString.d.ts +1 -0
  118. package/dist/utils/encoding/hexToString.js +12 -0
  119. package/dist/utils/encoding/hexToString.js.map +1 -0
  120. package/dist/utils/encoding/hexToUint8.d.ts +1 -0
  121. package/dist/utils/encoding/hexToUint8.js +8 -0
  122. package/dist/utils/encoding/hexToUint8.js.map +1 -0
  123. package/dist/utils/encoding/stringToArrayBuffer.d.ts +1 -0
  124. package/dist/utils/encoding/stringToArrayBuffer.js +12 -0
  125. package/dist/utils/encoding/stringToArrayBuffer.js.map +1 -0
  126. package/dist/utils/getPeerSignature.d.ts +2 -0
  127. package/dist/utils/getPeerSignature.js +9 -0
  128. package/dist/utils/getPeerSignature.js.map +1 -0
  129. package/dist/utils/getTimestamp.d.ts +1 -0
  130. package/dist/utils/getTimestamp.js +7 -0
  131. package/dist/utils/getTimestamp.js.map +1 -0
  132. package/dist/utils/proofOfWork.d.ts +4 -0
  133. package/dist/utils/proofOfWork.js +16 -0
  134. package/dist/utils/proofOfWork.js.map +1 -0
  135. package/dist/utils/randomAnimal.d.ts +1 -0
  136. package/dist/utils/randomAnimal.js +77 -0
  137. package/dist/utils/randomAnimal.js.map +1 -0
  138. package/dist/utils/sha1.d.ts +1 -0
  139. package/dist/utils/sha1.js +13 -0
  140. package/dist/utils/sha1.js.map +1 -0
  141. package/dist/utils/sha256.d.ts +3 -0
  142. package/dist/utils/sha256.js +13 -0
  143. package/dist/utils/sha256.js.map +1 -0
  144. package/dist/utils/textRandom.d.ts +1 -0
  145. package/dist/utils/textRandom.js +15 -0
  146. package/dist/utils/textRandom.js.map +1 -0
  147. package/dist/utils/uniq.d.ts +1 -0
  148. package/dist/utils/uniq.js +7 -0
  149. package/dist/utils/uniq.js.map +1 -0
  150. package/dist/utils/verifyMessage.d.ts +8 -0
  151. package/dist/utils/verifyMessage.js +129 -0
  152. package/dist/utils/verifyMessage.js.map +1 -0
  153. package/dist/utils/verifyPeer.d.ts +2 -0
  154. package/dist/utils/verifyPeer.js +15 -0
  155. package/dist/utils/verifyPeer.js.map +1 -0
  156. package/package.json +4 -3
@@ -0,0 +1,159 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ListCrdt = void 0;
19
+ var __1 = require("..");
20
+ var ListCrdt = /** @class */ (function (_super) {
21
+ __extends(ListCrdt, _super);
22
+ function ListCrdt(author, changes) {
23
+ var _this = _super.call(this) || this;
24
+ _this.type = __1.CRDT_LIST;
25
+ _this._changes = [];
26
+ _this._author = "";
27
+ _this._value = [];
28
+ _this._tempValues = [];
29
+ _this._lastUpdateSize = 0;
30
+ _this._author = author;
31
+ if (changes) {
32
+ _this.mergeChanges(changes);
33
+ }
34
+ _this.calculate();
35
+ return _this;
36
+ }
37
+ ListCrdt.prototype.changesSort = function (a, b) {
38
+ if (a.i > b.i)
39
+ return 1;
40
+ if (a.i < b.i)
41
+ return -1;
42
+ return 0; // Should never be equal!
43
+ };
44
+ ListCrdt.prototype.calculate = function () {
45
+ var temp = [];
46
+ // Only update if we have new changes
47
+ if (Object.values(this._changes).length !== this._lastUpdateSize) {
48
+ this._changes.sort(this.changesSort).forEach(function (change) {
49
+ if (change.t === "INS") {
50
+ var poisitionToInsert = 0;
51
+ if (change.p) {
52
+ poisitionToInsert = temp.findIndex(function (v) { return v.index === change.p; }) + 1;
53
+ }
54
+ else if (change.n) {
55
+ poisitionToInsert = temp.findIndex(function (v) { return v.index === change.n; });
56
+ }
57
+ var cursorValue = {
58
+ value: change.v,
59
+ index: change.i,
60
+ tomb: false,
61
+ prev: change.p,
62
+ next: change.n,
63
+ };
64
+ temp.splice(poisitionToInsert, 0, cursorValue);
65
+ }
66
+ else if (change.t === "DEL") {
67
+ var poisitionToInsert = temp.findIndex(function (v) { return v.index === change.v; });
68
+ temp[poisitionToInsert].tomb = true;
69
+ }
70
+ });
71
+ this._lastUpdateSize = Object.values(temp).length;
72
+ this._tempValues = temp;
73
+ this._value = temp.filter(function (v) { return !v.tomb; }).map(function (v) { return v.value; });
74
+ }
75
+ };
76
+ Object.defineProperty(ListCrdt.prototype, "value", {
77
+ get: function () {
78
+ this.calculate();
79
+ return this._value;
80
+ },
81
+ enumerable: false,
82
+ configurable: true
83
+ });
84
+ ListCrdt.prototype.mergeChanges = function (newChanges) {
85
+ var _this = this;
86
+ newChanges.forEach(function (change) {
87
+ // Filter by author and index
88
+ var filtered = _this._changes.filter(function (c) { return c.i === change.i && c.t === change.t && c.v === change.v; });
89
+ // Only add if there are not matches
90
+ if (filtered.length === 0) {
91
+ _this._changes.push(change);
92
+ }
93
+ });
94
+ this.calculate();
95
+ };
96
+ ListCrdt.prototype.getChanges = function () {
97
+ return this._changes;
98
+ };
99
+ ListCrdt.prototype.INS = function (value, index) {
100
+ var _this = this;
101
+ var filterTombs = this._tempValues.filter(function (v) { return !v.tomb; });
102
+ var currentPrev = undefined;
103
+ var currentNext = undefined;
104
+ if (filterTombs.length !== 0) {
105
+ var currentIndex_1 = filterTombs[index].index;
106
+ var currentIndexPosition = this._tempValues.findIndex(function (v) { return v.index === currentIndex_1; });
107
+ currentPrev = this._tempValues[currentIndexPosition - 1];
108
+ currentNext = this._tempValues[currentIndexPosition];
109
+ }
110
+ var ourChanges = this._changes.filter(function (c) {
111
+ return c.i.startsWith(_this._author);
112
+ });
113
+ this._changes.push({
114
+ t: "INS",
115
+ p: currentPrev === null || currentPrev === void 0 ? void 0 : currentPrev.index,
116
+ n: currentNext === null || currentNext === void 0 ? void 0 : currentNext.index,
117
+ v: value,
118
+ i: this._author + "-" + "".concat(ourChanges.length).padStart(8, "0"),
119
+ });
120
+ this.calculate();
121
+ };
122
+ ListCrdt.prototype.PUSH = function (value) {
123
+ var _this = this;
124
+ var _a;
125
+ var filterTombs = this._tempValues.filter(function (v) { return !v.tomb; });
126
+ var currentIndex = (_a = filterTombs[filterTombs.length - 1]) === null || _a === void 0 ? void 0 : _a.index;
127
+ var currentIndexPosition = this._tempValues.findIndex(function (v) { return v.index === currentIndex; });
128
+ var currentPrev = this._tempValues[currentIndexPosition];
129
+ var ourChanges = this._changes.filter(function (c) {
130
+ return c.i.startsWith(_this._author);
131
+ });
132
+ this._changes.push({
133
+ t: "INS",
134
+ p: currentPrev === null || currentPrev === void 0 ? void 0 : currentPrev.index,
135
+ n: undefined,
136
+ v: value,
137
+ i: this._author + "-" + "".concat(ourChanges.length).padStart(8, "0"),
138
+ });
139
+ this.calculate();
140
+ };
141
+ ListCrdt.prototype.DEL = function (index) {
142
+ var _this = this;
143
+ var currentIndex = this._tempValues.filter(function (v) { return !v.tomb; })[index].index;
144
+ var currentIndexPosition = this._tempValues.findIndex(function (v) { return v.index === currentIndex; });
145
+ var current = this._tempValues[currentIndexPosition];
146
+ var ourChanges = this._changes.filter(function (c) {
147
+ return c.i.startsWith(_this._author);
148
+ });
149
+ this._changes.push({
150
+ t: "DEL",
151
+ v: current.index,
152
+ i: this._author + "-" + "".concat(ourChanges.length).padStart(8, "0"),
153
+ });
154
+ this.calculate();
155
+ };
156
+ return ListCrdt;
157
+ }(__1.BaseCrdt));
158
+ exports.ListCrdt = ListCrdt;
159
+ //# sourceMappingURL=listCrdt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listCrdt.js","sourceRoot":"","sources":["../../lib/crdt/listCrdt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { BaseCrdt } from "..";
2
+ export declare type MapOperations = "SET" | "DEL";
3
+ export interface ChangeMapBase<T> {
4
+ t: MapOperations;
5
+ a: string;
6
+ k: string;
7
+ i: number;
8
+ }
9
+ export interface SetMapChange<T> extends ChangeMapBase<T> {
10
+ t: "SET";
11
+ v: T;
12
+ }
13
+ export interface DelMapChange<T> extends ChangeMapBase<T> {
14
+ t: "DEL";
15
+ }
16
+ export declare type MapChanges<T> = SetMapChange<T> | DelMapChange<T>;
17
+ export declare class MapCrdt<T> extends BaseCrdt<T, MapChanges<T>, Record<string, T>> {
18
+ type: string;
19
+ private _changes;
20
+ private _author;
21
+ private _value;
22
+ private _keyIndex;
23
+ private _lastUpdateSize;
24
+ constructor(author: string, changes?: MapChanges<T>[]);
25
+ changesSort(a: MapChanges<T>, b: MapChanges<T>): 0 | 1 | -1;
26
+ calculate(): void;
27
+ get value(): Record<string, T>;
28
+ mergeChanges(newChanges: MapChanges<T>[]): void;
29
+ getChanges(): MapChanges<T>[];
30
+ SET(key: string, value: T): void;
31
+ DEL(key: string): void;
32
+ }
@@ -0,0 +1,118 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MapCrdt = void 0;
19
+ var __1 = require("..");
20
+ var MapCrdt = /** @class */ (function (_super) {
21
+ __extends(MapCrdt, _super);
22
+ function MapCrdt(author, changes) {
23
+ var _this = _super.call(this) || this;
24
+ _this.type = __1.CRDT_MAP;
25
+ _this._changes = [];
26
+ _this._author = "";
27
+ _this._value = {};
28
+ _this._keyIndex = {};
29
+ _this._lastUpdateSize = 0;
30
+ _this._author = author;
31
+ if (changes) {
32
+ _this.mergeChanges(changes);
33
+ }
34
+ _this.calculate();
35
+ return _this;
36
+ }
37
+ MapCrdt.prototype.changesSort = function (a, b) {
38
+ if (a.i < b.i)
39
+ return -1;
40
+ if (a.i > b.i)
41
+ return 1;
42
+ if (a.t === "SET" && b.t === "DEL")
43
+ return -1;
44
+ if (a.t === "DEL" && b.t === "SET")
45
+ return 1;
46
+ if (a.a < b.a)
47
+ return -1;
48
+ if (a.a > b.a)
49
+ return 1;
50
+ return 0; // Should never be equal!
51
+ };
52
+ MapCrdt.prototype.calculate = function () {
53
+ var _this = this;
54
+ var temp = {};
55
+ // Only update if we have new changes
56
+ if (Object.values(this._changes).length !== this._lastUpdateSize) {
57
+ this._changes.sort(this.changesSort).forEach(function (change) {
58
+ // Here we apply the model properties
59
+ // Since this is a KV store we dont need much logic,
60
+ // except for the sorting of the changes. Then we just apply them.
61
+ if (change.t === "SET") {
62
+ temp[change.k] = change.v;
63
+ }
64
+ else if (change.t === "DEL") {
65
+ delete temp[change.k];
66
+ }
67
+ _this._keyIndex[change.k] = change.i;
68
+ });
69
+ this._lastUpdateSize = Object.values(temp).length;
70
+ this._value = temp;
71
+ }
72
+ };
73
+ Object.defineProperty(MapCrdt.prototype, "value", {
74
+ get: function () {
75
+ this.calculate();
76
+ return this._value;
77
+ },
78
+ enumerable: false,
79
+ configurable: true
80
+ });
81
+ MapCrdt.prototype.mergeChanges = function (newChanges) {
82
+ var _this = this;
83
+ newChanges.forEach(function (change) {
84
+ // Filter by author and index
85
+ var filtered = _this._changes.filter(function (c) { return c.i === change.i && c.a === change.a && c.t === change.t; });
86
+ // Only add if there are not matches
87
+ if (filtered.length === 0) {
88
+ _this._changes.push(change);
89
+ }
90
+ });
91
+ this.calculate();
92
+ };
93
+ MapCrdt.prototype.getChanges = function () {
94
+ return this._changes;
95
+ };
96
+ MapCrdt.prototype.SET = function (key, value) {
97
+ this._keyIndex[key] = (this._keyIndex[key] || 0) + 1;
98
+ this._changes.push({
99
+ t: "SET",
100
+ k: key,
101
+ a: this._author,
102
+ v: value,
103
+ i: this._keyIndex[key],
104
+ });
105
+ };
106
+ MapCrdt.prototype.DEL = function (key) {
107
+ this._keyIndex[key] = (this._keyIndex[key] || 0) + 1;
108
+ this._changes.push({
109
+ t: "DEL",
110
+ k: key,
111
+ a: this._author,
112
+ i: this._keyIndex[key],
113
+ });
114
+ };
115
+ return MapCrdt;
116
+ }(__1.BaseCrdt));
117
+ exports.MapCrdt = MapCrdt;
118
+ //# sourceMappingURL=mapCrdt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCrdt.js","sourceRoot":"","sources":["../../lib/crdt/mapCrdt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wBAAwC;AAsBxC;IAAgC,2BAA6C;IAa3E,iBAAY,MAAc,EAAE,OAAyB;QAArD,YACE,iBAAO,SAOR;QApBM,UAAI,GAAG,YAAQ,CAAC;QAEf,cAAQ,GAAoB,EAAE,CAAC;QAE/B,aAAO,GAAG,EAAE,CAAC;QAEb,YAAM,GAAsB,EAAE,CAAC;QAE/B,eAAS,GAA2B,EAAE,CAAC;QAEvC,qBAAe,GAAW,CAAC,CAAC;QAIlC,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,OAAO,EAAE;YACX,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SAC5B;QAED,KAAI,CAAC,SAAS,EAAE,CAAC;;IACnB,CAAC;IAED,6BAAW,GAAX,UAAY,CAAgB,EAAE,CAAgB;QAC5C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC,yBAAyB;IACrC,CAAC;IAED,2BAAS,GAAT;QAAA,iBAkBC;QAjBC,IAAM,IAAI,GAAsB,EAAE,CAAC;QACnC,qCAAqC;QACrC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE;YAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAC,MAAM;gBAClD,qCAAqC;gBACrC,oDAAoD;gBACpD,kEAAkE;gBAClE,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,EAAE;oBACtB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;iBAC3B;qBAAM,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK,EAAE;oBAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACvB;gBACD,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IACH,CAAC;IAED,sBAAI,0BAAK;aAAT;YACE,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IAEM,8BAAY,GAAnB,UAAoB,UAA2B;QAA/C,iBAYC;QAXC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM;YACxB,6BAA6B;YAC7B,IAAM,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CACnC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,EAAxD,CAAwD,CAChE,CAAC;YACF,oCAAoC;YACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,4BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,qBAAG,GAAV,UAAW,GAAW,EAAE,KAAQ;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,IAAI,CAAC,OAAO;YACf,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SACvB,CAAC,CAAC;IACL,CAAC;IAEM,qBAAG,GAAV,UAAW,GAAW;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,IAAI,CAAC,OAAO;YACf,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SACvB,CAAC,CAAC;IACL,CAAC;IACH,cAAC;AAAD,CAAC,AAhGD,CAAgC,YAAQ,GAgGvC;AAhGY,0BAAO"}
@@ -0,0 +1,34 @@
1
+ export { default as proofOfWork } from "./utils/proofOfWork";
2
+ export { default as sha1 } from "./utils/sha1";
3
+ export { default as sha256 } from "./utils/sha256";
4
+ export { default as uniq } from "./utils/uniq";
5
+ export { default as randomAnimal } from "./utils/randomAnimal";
6
+ export { default as verifyMessage } from "./utils/verifyMessage";
7
+ export { default as getPeerSignature } from "./utils/getPeerSignature";
8
+ export { default as verifyPeer } from "./utils/verifyPeer";
9
+ export { default as textRandom } from "./utils/textRandom";
10
+ export { default as catchReturn } from "./utils/catchReturn";
11
+ export { default as stringToArrayBuffer } from "./utils/encoding/stringToArrayBuffer";
12
+ export { default as arrayBufferToString } from "./utils/encoding/arrayBufferToString";
13
+ export { default as arrayBufferToHex } from "./utils/encoding/arrayBufferToHex";
14
+ export { default as hexToArrayBuffer } from "./utils/encoding/hexToArrayBuffer";
15
+ export { default as hexToString } from "./utils/encoding/hexToString";
16
+ export { default as hexToUint8 } from "./utils/encoding/hexToUint8";
17
+ export { default as ToolDbNetworkAdapter } from "./adapters-base/networkAdapter";
18
+ export { default as ToolDbStorageAdapter } from "./adapters-base/storageAdapter";
19
+ export { default as ToolDbUserAdapter } from "./adapters-base/userAdapter";
20
+ export * from "./types/tooldb";
21
+ export * from "./types/message";
22
+ export * from "./crdt/baseCrdt";
23
+ export * from "./crdt/counterCrdt";
24
+ export * from "./crdt/listCrdt";
25
+ export * from "./crdt/mapCrdt";
26
+ export { default as handleSubscribe } from "./messageHandlers/handleSubscribe";
27
+ export { default as handleCrdtGet } from "./messageHandlers/handleCrdtGet";
28
+ export { default as handleCrdtPut } from "./messageHandlers/handleCrdtPut";
29
+ export { default as handleQuery } from "./messageHandlers/handleQuery";
30
+ export { default as handlePing } from "./messageHandlers/handlePing";
31
+ export { default as handlePong } from "./messageHandlers/handlePong";
32
+ export { default as handleGet } from "./messageHandlers/handleGet";
33
+ export { default as handlePut } from "./messageHandlers/handlePut";
34
+ export { default as ToolDb } from "./tooldb";
package/dist/index.js ADDED
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.ToolDb = exports.handlePut = exports.handleGet = exports.handlePong = exports.handlePing = exports.handleQuery = exports.handleCrdtPut = exports.handleCrdtGet = exports.handleSubscribe = exports.ToolDbUserAdapter = exports.ToolDbStorageAdapter = exports.ToolDbNetworkAdapter = exports.hexToUint8 = exports.hexToString = exports.hexToArrayBuffer = exports.arrayBufferToHex = exports.arrayBufferToString = exports.stringToArrayBuffer = exports.catchReturn = exports.textRandom = exports.verifyPeer = exports.getPeerSignature = exports.verifyMessage = exports.randomAnimal = exports.uniq = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
21
+ var proofOfWork_1 = require("./utils/proofOfWork");
22
+ Object.defineProperty(exports, "proofOfWork", { enumerable: true, get: function () { return __importDefault(proofOfWork_1).default; } });
23
+ var sha1_1 = require("./utils/sha1");
24
+ Object.defineProperty(exports, "sha1", { enumerable: true, get: function () { return __importDefault(sha1_1).default; } });
25
+ var sha256_1 = require("./utils/sha256");
26
+ Object.defineProperty(exports, "sha256", { enumerable: true, get: function () { return __importDefault(sha256_1).default; } });
27
+ var uniq_1 = require("./utils/uniq");
28
+ Object.defineProperty(exports, "uniq", { enumerable: true, get: function () { return __importDefault(uniq_1).default; } });
29
+ var randomAnimal_1 = require("./utils/randomAnimal");
30
+ Object.defineProperty(exports, "randomAnimal", { enumerable: true, get: function () { return __importDefault(randomAnimal_1).default; } });
31
+ var verifyMessage_1 = require("./utils/verifyMessage");
32
+ Object.defineProperty(exports, "verifyMessage", { enumerable: true, get: function () { return __importDefault(verifyMessage_1).default; } });
33
+ var getPeerSignature_1 = require("./utils/getPeerSignature");
34
+ Object.defineProperty(exports, "getPeerSignature", { enumerable: true, get: function () { return __importDefault(getPeerSignature_1).default; } });
35
+ var verifyPeer_1 = require("./utils/verifyPeer");
36
+ Object.defineProperty(exports, "verifyPeer", { enumerable: true, get: function () { return __importDefault(verifyPeer_1).default; } });
37
+ var textRandom_1 = require("./utils/textRandom");
38
+ Object.defineProperty(exports, "textRandom", { enumerable: true, get: function () { return __importDefault(textRandom_1).default; } });
39
+ var catchReturn_1 = require("./utils/catchReturn");
40
+ Object.defineProperty(exports, "catchReturn", { enumerable: true, get: function () { return __importDefault(catchReturn_1).default; } });
41
+ var stringToArrayBuffer_1 = require("./utils/encoding/stringToArrayBuffer");
42
+ Object.defineProperty(exports, "stringToArrayBuffer", { enumerable: true, get: function () { return __importDefault(stringToArrayBuffer_1).default; } });
43
+ var arrayBufferToString_1 = require("./utils/encoding/arrayBufferToString");
44
+ Object.defineProperty(exports, "arrayBufferToString", { enumerable: true, get: function () { return __importDefault(arrayBufferToString_1).default; } });
45
+ var arrayBufferToHex_1 = require("./utils/encoding/arrayBufferToHex");
46
+ Object.defineProperty(exports, "arrayBufferToHex", { enumerable: true, get: function () { return __importDefault(arrayBufferToHex_1).default; } });
47
+ var hexToArrayBuffer_1 = require("./utils/encoding/hexToArrayBuffer");
48
+ Object.defineProperty(exports, "hexToArrayBuffer", { enumerable: true, get: function () { return __importDefault(hexToArrayBuffer_1).default; } });
49
+ var hexToString_1 = require("./utils/encoding/hexToString");
50
+ Object.defineProperty(exports, "hexToString", { enumerable: true, get: function () { return __importDefault(hexToString_1).default; } });
51
+ var hexToUint8_1 = require("./utils/encoding/hexToUint8");
52
+ Object.defineProperty(exports, "hexToUint8", { enumerable: true, get: function () { return __importDefault(hexToUint8_1).default; } });
53
+ var networkAdapter_1 = require("./adapters-base/networkAdapter");
54
+ Object.defineProperty(exports, "ToolDbNetworkAdapter", { enumerable: true, get: function () { return __importDefault(networkAdapter_1).default; } });
55
+ var storageAdapter_1 = require("./adapters-base/storageAdapter");
56
+ Object.defineProperty(exports, "ToolDbStorageAdapter", { enumerable: true, get: function () { return __importDefault(storageAdapter_1).default; } });
57
+ var userAdapter_1 = require("./adapters-base/userAdapter");
58
+ Object.defineProperty(exports, "ToolDbUserAdapter", { enumerable: true, get: function () { return __importDefault(userAdapter_1).default; } });
59
+ __exportStar(require("./types/tooldb"), exports);
60
+ __exportStar(require("./types/message"), exports);
61
+ __exportStar(require("./crdt/baseCrdt"), exports);
62
+ __exportStar(require("./crdt/counterCrdt"), exports);
63
+ __exportStar(require("./crdt/listCrdt"), exports);
64
+ __exportStar(require("./crdt/mapCrdt"), exports);
65
+ var handleSubscribe_1 = require("./messageHandlers/handleSubscribe");
66
+ Object.defineProperty(exports, "handleSubscribe", { enumerable: true, get: function () { return __importDefault(handleSubscribe_1).default; } });
67
+ var handleCrdtGet_1 = require("./messageHandlers/handleCrdtGet");
68
+ Object.defineProperty(exports, "handleCrdtGet", { enumerable: true, get: function () { return __importDefault(handleCrdtGet_1).default; } });
69
+ var handleCrdtPut_1 = require("./messageHandlers/handleCrdtPut");
70
+ Object.defineProperty(exports, "handleCrdtPut", { enumerable: true, get: function () { return __importDefault(handleCrdtPut_1).default; } });
71
+ var handleQuery_1 = require("./messageHandlers/handleQuery");
72
+ Object.defineProperty(exports, "handleQuery", { enumerable: true, get: function () { return __importDefault(handleQuery_1).default; } });
73
+ var handlePing_1 = require("./messageHandlers/handlePing");
74
+ Object.defineProperty(exports, "handlePing", { enumerable: true, get: function () { return __importDefault(handlePing_1).default; } });
75
+ var handlePong_1 = require("./messageHandlers/handlePong");
76
+ Object.defineProperty(exports, "handlePong", { enumerable: true, get: function () { return __importDefault(handlePong_1).default; } });
77
+ var handleGet_1 = require("./messageHandlers/handleGet");
78
+ Object.defineProperty(exports, "handleGet", { enumerable: true, get: function () { return __importDefault(handleGet_1).default; } });
79
+ var handlePut_1 = require("./messageHandlers/handlePut");
80
+ Object.defineProperty(exports, "handlePut", { enumerable: true, get: function () { return __importDefault(handlePut_1).default; } });
81
+ var tooldb_1 = require("./tooldb");
82
+ Object.defineProperty(exports, "ToolDb", { enumerable: true, get: function () { return __importDefault(tooldb_1).default; } });
83
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAC/B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AACxB,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AAExB,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,6DAAuE;AAA9D,qIAAA,OAAO,OAAoB;AACpC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAE9B,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAE/B,4EAAsF;AAA7E,2IAAA,OAAO,OAAuB;AACvC,4EAAsF;AAA7E,2IAAA,OAAO,OAAuB;AAEvC,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,iEAAiF;AAAxE,uIAAA,OAAO,OAAwB;AACxC,iEAAiF;AAAxE,uIAAA,OAAO,OAAwB;AACxC,2DAA2E;AAAlE,iIAAA,OAAO,OAAqB;AAErC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAE/B,qEAA+E;AAAtE,mIAAA,OAAO,OAAmB;AACnC,iEAA2E;AAAlE,+HAAA,OAAO,OAAiB;AACjC,iEAA2E;AAAlE,+HAAA,OAAO,OAAiB;AACjC,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,2DAAqE;AAA5D,yHAAA,OAAO,OAAc;AAC9B,2DAAqE;AAA5D,yHAAA,OAAO,OAAc;AAC9B,yDAAmE;AAA1D,uHAAA,OAAO,OAAa;AAC7B,yDAAmE;AAA1D,uHAAA,OAAO,OAAa;AAE7B,mCAA6C;AAApC,iHAAA,OAAO,OAAU"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb } from ".";
2
+ export default function logger(this: ToolDb, arg0: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any): void;
package/dist/logger.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var _1 = require(".");
13
+ function logger(arg0, arg1, arg2, arg3, arg4, arg5) {
14
+ if (this.options.debug) {
15
+ var isNode = typeof window === "undefined";
16
+ var title = isNode
17
+ ? this.options.storageName
18
+ : "%c" + this.options.storageName;
19
+ var style = isNode
20
+ ? ""
21
+ : "background: #" +
22
+ (0, _1.sha1)(this.options.storageName).slice(-6) +
23
+ "; padding: 2px; color: black";
24
+ console.log.apply(console, __spreadArray([title,
25
+ style], [arg0, arg1, arg2, arg3, arg4, arg4, arg5].slice(0, arguments.length), false));
26
+ }
27
+ }
28
+ exports.default = logger;
29
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../lib/logger.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sBAAiC;AAEjC,SAAwB,MAAM,CAE5B,IAAS,EACT,IAAU,EACV,IAAU,EACV,IAAU,EACV,IAAU,EACV,IAAU;IAEV,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACtB,IAAM,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;QAC7C,IAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;YAC1B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAEpC,IAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,eAAe;gBACf,IAAA,OAAI,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,8BAA8B,CAAC;QAEnC,OAAO,CAAC,GAAG,OAAX,OAAO,iBACL,KAAK;YACL,KAAK,GACF,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,UACxE;KACH;AACH,CAAC;AA3BD,yBA2BC"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb, CrdtGetMessage } from "..";
2
+ export default function handleCrdtGet(this: ToolDb, message: CrdtGetMessage, remotePeerId: string): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function handleCrdtGet(message, remotePeerId) {
4
+ var _this = this;
5
+ this.store
6
+ .get(message.key)
7
+ .then(function (data) {
8
+ try {
9
+ // Use the id of the get so the other client knows we are replying
10
+ var oldData = {
11
+ type: "crdtPut",
12
+ data: JSON.parse(data),
13
+ to: [],
14
+ id: message.id,
15
+ };
16
+ _this.network.sendToClientId(remotePeerId, oldData);
17
+ }
18
+ catch (e) {
19
+ // socket.send(data);
20
+ // do nothing
21
+ }
22
+ })
23
+ .catch(function (e) {
24
+ _this.logger("Local key not found, relay", JSON.stringify(message));
25
+ _this.network.sendToAll(message, false);
26
+ });
27
+ }
28
+ exports.default = handleCrdtGet;
29
+ //# sourceMappingURL=handleCrdtGet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtGet.js","sourceRoot":"","sources":["../../lib/messageHandlers/handleCrdtGet.ts"],"names":[],"mappings":";;AAEA,SAAwB,aAAa,CAEnC,OAAuB,EACvB,YAAoB;IAHtB,iBA0BC;IArBC,IAAI,CAAC,KAAK;SACP,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SAChB,IAAI,CAAC,UAAC,IAAI;QACT,IAAI;YACF,kEAAkE;YAClE,IAAM,OAAO,GAAG;gBACd,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,OAAO,CAAC,EAAE;aACG,CAAC;YACpB,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACV,qBAAqB;YACrB,aAAa;SACd;IACH,CAAC,CAAC;SACD,KAAK,CAAC,UAAC,CAAC;QACP,KAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC;AA1BD,gCA0BC"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb, CrdtPutMessage } from "..";
2
+ export default function handleCrdtPut(this: ToolDb, message: CrdtPutMessage, remotePeerId: string): void;
@@ -0,0 +1,93 @@
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 handleCrdtPut(message, remotePeerId) {
20
+ var _this = this;
21
+ toolDbVerificationWrapper_1.default.call(this, message.data).then(function (value) {
22
+ // this.logger("Verification wrapper result: ", value, message.k);
23
+ if (value === __1.VerifyResult.Verified) {
24
+ _this.emit("crdtput", message);
25
+ _this.emit("data", message.data);
26
+ _this.emit("verified", message);
27
+ // relay to other servers !!!
28
+ _this.network.sendToAll(message, true);
29
+ _this.store
30
+ .get(message.data.k)
31
+ .then(function (oldData) {
32
+ try {
33
+ var parsedOldData = JSON.parse(oldData);
34
+ var newMessage = message;
35
+ // Merge old document with new data incoming and save it
36
+ // Add handles for all kinds of CRDT we add
37
+ var oldDoc = void 0;
38
+ if (parsedOldData.c === __1.CRDT_MAP) {
39
+ oldDoc = new __1.MapCrdt(_this.userAccount.getAddress() || "", parsedOldData.v);
40
+ }
41
+ if (parsedOldData.c === __1.CRDT_LIST) {
42
+ oldDoc = new __1.ListCrdt(_this.userAccount.getAddress() || "", parsedOldData.v);
43
+ }
44
+ if (parsedOldData.c === __1.CRDT_COUNTER) {
45
+ oldDoc = new __1.CounterCrdt(_this.userAccount.getAddress() || "", parsedOldData.v);
46
+ }
47
+ var changesMerged = [];
48
+ if (oldDoc) {
49
+ oldDoc.mergeChanges(message.data.v);
50
+ changesMerged = oldDoc.getChanges();
51
+ }
52
+ newMessage = __assign({}, message);
53
+ newMessage.data.v = changesMerged;
54
+ if (parsedOldData.t < message.data.t) {
55
+ var key = newMessage.data.k;
56
+ _this.triggerKeyListener(key, newMessage.data);
57
+ _this.store
58
+ .put(newMessage.data.k, JSON.stringify(newMessage.data))
59
+ .catch(function (e) {
60
+ // do nothing
61
+ });
62
+ }
63
+ else {
64
+ var key = message.data.k;
65
+ _this.triggerKeyListener(key, parsedOldData);
66
+ }
67
+ // } else {
68
+ // this.logger(
69
+ // `${message.k} has old data, but its newer. old ${parsedOldData.t} < new ${message.t}`
70
+ // );
71
+ // }
72
+ }
73
+ catch (e) {
74
+ _this.logger("Couldnt parse crdt data", oldData, e);
75
+ }
76
+ })
77
+ .catch(function (e) {
78
+ var key = message.data.k;
79
+ _this.triggerKeyListener(key, message.data);
80
+ _this.store
81
+ .put(message.data.k, JSON.stringify(message.data))
82
+ .catch(function (e) {
83
+ // do nothing
84
+ });
85
+ });
86
+ }
87
+ else {
88
+ _this.logger("unverified message: ", value, message);
89
+ }
90
+ });
91
+ }
92
+ exports.default = handleCrdtPut;
93
+ //# sourceMappingURL=handleCrdtPut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCrdtPut.js","sourceRoot":"","sources":["../../lib/messageHandlers/handleCrdtPut.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb, GetMessage } from "..";
2
+ export default function handleGet(this: ToolDb, message: GetMessage, remotePeerId: string): void;