tool-db 2.5.3 → 2.5.5

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 (183) hide show
  1. package/README.md +82 -82
  2. package/bundle.js +1 -1
  3. package/dist/adapters-base/networkAdapter.d.ts +58 -58
  4. package/dist/adapters-base/networkAdapter.js +215 -215
  5. package/dist/adapters-base/storageAdapter.d.ts +11 -11
  6. package/dist/adapters-base/storageAdapter.js +35 -35
  7. package/dist/adapters-base/userAdapter.d.ts +15 -15
  8. package/dist/adapters-base/userAdapter.js +41 -41
  9. package/dist/crdt/baseCrdt.d.ts +9 -9
  10. package/dist/crdt/baseCrdt.js +26 -26
  11. package/dist/crdt/counterCrdt.d.ts +30 -30
  12. package/dist/crdt/counterCrdt.js +105 -105
  13. package/dist/crdt/listCrdt.d.ts +42 -42
  14. package/dist/crdt/listCrdt.js +158 -158
  15. package/dist/crdt/mapCrdt.d.ts +32 -32
  16. package/dist/crdt/mapCrdt.js +117 -117
  17. package/dist/index.d.ts +35 -34
  18. package/dist/index.js +84 -82
  19. package/dist/index.js.map +1 -1
  20. package/dist/logger.d.ts +2 -2
  21. package/dist/logger.js +28 -28
  22. package/dist/messageHandlers/handleCrdtGet.d.ts +2 -2
  23. package/dist/messageHandlers/handleCrdtGet.js +49 -28
  24. package/dist/messageHandlers/handleCrdtGet.js.map +1 -1
  25. package/dist/messageHandlers/handleCrdtPut.d.ts +2 -2
  26. package/dist/messageHandlers/handleCrdtPut.js +102 -92
  27. package/dist/messageHandlers/handleCrdtPut.js.map +1 -1
  28. package/dist/messageHandlers/handleFunction.d.ts +2 -0
  29. package/dist/messageHandlers/handleFunction.js +56 -0
  30. package/dist/messageHandlers/handleFunction.js.map +1 -0
  31. package/dist/messageHandlers/handleGet.d.ts +2 -2
  32. package/dist/messageHandlers/handleGet.js +49 -28
  33. package/dist/messageHandlers/handleGet.js.map +1 -1
  34. package/dist/messageHandlers/handlePing.d.ts +2 -2
  35. package/dist/messageHandlers/handlePing.js +35 -35
  36. package/dist/messageHandlers/handlePing.js.map +1 -1
  37. package/dist/messageHandlers/handlePong.d.ts +2 -2
  38. package/dist/messageHandlers/handlePong.js +25 -25
  39. package/dist/messageHandlers/handlePut.d.ts +2 -2
  40. package/dist/messageHandlers/handlePut.js +77 -56
  41. package/dist/messageHandlers/handlePut.js.map +1 -1
  42. package/dist/messageHandlers/handleQuery.d.ts +2 -2
  43. package/dist/messageHandlers/handleQuery.js +43 -22
  44. package/dist/messageHandlers/handleQuery.js.map +1 -1
  45. package/dist/messageHandlers/handleSubscribe.d.ts +2 -2
  46. package/dist/messageHandlers/handleSubscribe.js +43 -43
  47. package/dist/server.d.ts +1 -1
  48. package/dist/server.js +8 -8
  49. package/dist/shared.d.ts +2 -2
  50. package/dist/shared.js +6 -6
  51. package/dist/toolDbAnonSignIn.d.ts +2 -2
  52. package/dist/toolDbAnonSignIn.js +6 -6
  53. package/dist/toolDbClientOnMessage.d.ts +2 -2
  54. package/dist/toolDbClientOnMessage.js +61 -58
  55. package/dist/toolDbClientOnMessage.js.map +1 -1
  56. package/dist/toolDbCrdtGet.d.ts +9 -9
  57. package/dist/toolDbCrdtGet.js +76 -76
  58. package/dist/toolDbCrdtGet.js.map +1 -1
  59. package/dist/toolDbCrdtPut.d.ts +9 -9
  60. package/dist/toolDbCrdtPut.js +62 -62
  61. package/dist/toolDbCrdtPut.js.map +1 -1
  62. package/dist/toolDbFunction.d.ts +9 -0
  63. package/dist/toolDbFunction.js +38 -0
  64. package/dist/toolDbFunction.js.map +1 -0
  65. package/dist/toolDbGet.d.ts +9 -9
  66. package/dist/toolDbGet.js +76 -76
  67. package/dist/toolDbGet.js.map +1 -1
  68. package/dist/toolDbKeysSignIn.d.ts +2 -2
  69. package/dist/toolDbKeysSignIn.js +15 -15
  70. package/dist/toolDbPut.d.ts +9 -9
  71. package/dist/toolDbPut.js +68 -68
  72. package/dist/toolDbPut.js.map +1 -1
  73. package/dist/toolDbQueryKeys.d.ts +8 -8
  74. package/dist/toolDbQueryKeys.js +65 -65
  75. package/dist/toolDbQueryKeys.js.map +1 -1
  76. package/dist/toolDbSignIn.d.ts +2 -2
  77. package/dist/toolDbSignIn.js +26 -26
  78. package/dist/toolDbSignIn.js.map +1 -1
  79. package/dist/toolDbSignUp.d.ts +2 -2
  80. package/dist/toolDbSignUp.js +100 -100
  81. package/dist/toolDbSignUp.js.map +1 -1
  82. package/dist/toolDbSubscribe.d.ts +9 -9
  83. package/dist/toolDbSubscribe.js +49 -49
  84. package/dist/toolDbSubscribe.js.map +1 -1
  85. package/dist/toolDbVerificationWrapper.d.ts +2 -2
  86. package/dist/toolDbVerificationWrapper.js +97 -97
  87. package/dist/tooldb.d.ts +123 -108
  88. package/dist/tooldb.js +309 -285
  89. package/dist/tooldb.js.map +1 -1
  90. package/dist/types/message.d.ts +110 -100
  91. package/dist/types/message.js +16 -16
  92. package/dist/types/message.js.map +1 -1
  93. package/dist/types/tooldb.d.ts +110 -84
  94. package/dist/types/tooldb.js +2 -2
  95. package/dist/utils/catchReturn.d.ts +1 -1
  96. package/dist/utils/catchReturn.js +7 -7
  97. package/dist/utils/encoding/arrayBufferToHex.d.ts +1 -1
  98. package/dist/utils/encoding/arrayBufferToHex.js +18 -18
  99. package/dist/utils/encoding/arrayBufferToString.d.ts +1 -1
  100. package/dist/utils/encoding/arrayBufferToString.js +11 -11
  101. package/dist/utils/encoding/hexToArrayBuffer.d.ts +1 -1
  102. package/dist/utils/encoding/hexToArrayBuffer.js +14 -14
  103. package/dist/utils/encoding/hexToString.d.ts +1 -1
  104. package/dist/utils/encoding/hexToString.js +11 -11
  105. package/dist/utils/encoding/hexToUint8.d.ts +1 -1
  106. package/dist/utils/encoding/hexToUint8.js +7 -7
  107. package/dist/utils/encoding/stringToArrayBuffer.d.ts +1 -1
  108. package/dist/utils/encoding/stringToArrayBuffer.js +11 -11
  109. package/dist/utils/getPeerSignature.d.ts +2 -2
  110. package/dist/utils/getPeerSignature.js +8 -8
  111. package/dist/utils/getTimestamp.d.ts +1 -1
  112. package/dist/utils/getTimestamp.js +6 -6
  113. package/dist/utils/proofOfWork.d.ts +4 -4
  114. package/dist/utils/proofOfWork.js +15 -15
  115. package/dist/utils/randomAnimal.d.ts +1 -1
  116. package/dist/utils/randomAnimal.js +76 -76
  117. package/dist/utils/sha1.d.ts +1 -1
  118. package/dist/utils/sha1.js +12 -12
  119. package/dist/utils/sha256.d.ts +3 -3
  120. package/dist/utils/sha256.js +12 -12
  121. package/dist/utils/textRandom.d.ts +1 -1
  122. package/dist/utils/textRandom.js +14 -14
  123. package/dist/utils/uniq.d.ts +1 -1
  124. package/dist/utils/uniq.js +6 -6
  125. package/dist/utils/verifyMessage.d.ts +8 -8
  126. package/dist/utils/verifyMessage.js +128 -128
  127. package/dist/utils/verifyPeer.d.ts +2 -2
  128. package/dist/utils/verifyPeer.js +14 -14
  129. package/lib/adapters-base/networkAdapter.ts +217 -217
  130. package/lib/adapters-base/storageAdapter.ts +35 -35
  131. package/lib/adapters-base/userAdapter.ts +49 -49
  132. package/lib/crdt/baseCrdt.ts +21 -21
  133. package/lib/crdt/counterCrdt.ts +111 -111
  134. package/lib/crdt/listCrdt.ts +190 -190
  135. package/lib/crdt/mapCrdt.ts +119 -119
  136. package/lib/index.ts +43 -42
  137. package/lib/logger.ts +30 -30
  138. package/lib/messageHandlers/handleCrdtGet.ts +34 -29
  139. package/lib/messageHandlers/handleCrdtPut.ts +123 -118
  140. package/lib/messageHandlers/handleFunction.ts +59 -0
  141. package/lib/messageHandlers/handleGet.ts +34 -29
  142. package/lib/messageHandlers/handlePing.ts +40 -40
  143. package/lib/messageHandlers/handlePong.ts +30 -30
  144. package/lib/messageHandlers/handlePut.ts +59 -54
  145. package/lib/messageHandlers/handleQuery.ts +30 -25
  146. package/lib/messageHandlers/handleSubscribe.ts +46 -46
  147. package/lib/server.ts +7 -7
  148. package/lib/shared.ts +5 -5
  149. package/lib/toolDbAnonSignIn.ts +5 -5
  150. package/lib/toolDbClientOnMessage.ts +79 -75
  151. package/lib/toolDbCrdtGet.ts +83 -82
  152. package/lib/toolDbCrdtPut.ts +78 -77
  153. package/lib/toolDbFunction.ts +49 -0
  154. package/lib/toolDbGet.ts +81 -80
  155. package/lib/toolDbKeysSignIn.ts +16 -16
  156. package/lib/toolDbPut.ts +84 -83
  157. package/lib/toolDbQueryKeys.ts +65 -64
  158. package/lib/toolDbSignIn.ts +32 -31
  159. package/lib/toolDbSignUp.ts +72 -71
  160. package/lib/toolDbSubscribe.ts +54 -53
  161. package/lib/toolDbVerificationWrapper.ts +55 -55
  162. package/lib/tooldb.ts +343 -316
  163. package/lib/types/message.ts +154 -133
  164. package/lib/types/tooldb.ts +139 -97
  165. package/lib/utils/catchReturn.ts +4 -4
  166. package/lib/utils/encoding/arrayBufferToHex.ts +18 -18
  167. package/lib/utils/encoding/arrayBufferToString.ts +8 -8
  168. package/lib/utils/encoding/hexToArrayBuffer.ts +13 -13
  169. package/lib/utils/encoding/hexToString.ts +8 -8
  170. package/lib/utils/encoding/hexToUint8.ts +5 -5
  171. package/lib/utils/encoding/stringToArrayBuffer.ts +8 -8
  172. package/lib/utils/getPeerSignature.ts +12 -12
  173. package/lib/utils/getTimestamp.ts +3 -3
  174. package/lib/utils/proofOfWork.ts +16 -16
  175. package/lib/utils/randomAnimal.ts +77 -77
  176. package/lib/utils/sha1.ts +7 -7
  177. package/lib/utils/sha256.ts +7 -7
  178. package/lib/utils/textRandom.ts +11 -11
  179. package/lib/utils/uniq.ts +3 -3
  180. package/lib/utils/verifyMessage.ts +88 -88
  181. package/lib/utils/verifyPeer.ts +15 -15
  182. package/package.json +2 -2
  183. package/tsconfig.json +14 -14
@@ -1,71 +1,72 @@
1
- import {
2
- ToolDb,
3
- PutMessage,
4
- textRandom,
5
- VerificationData,
6
- proofOfWork,
7
- sha256,
8
- } from ".";
9
-
10
- export default async function toolDbSignUp(
11
- this: ToolDb,
12
- user: string,
13
- password: string
14
- ): Promise<PutMessage<any>> {
15
- const userRoot = `==${user}`;
16
- return new Promise((resolve, reject) => {
17
- this.getData(userRoot, false, 3000)
18
- .then((data) => {
19
- if (data === null) {
20
- const account = new this.options.userAdapter(this);
21
- account.encryptAccount(sha256(password)).then((userData) => {
22
- const timestamp = new Date().getTime();
23
- const userDataString = `${JSON.stringify(
24
- userData
25
- )}${account.getAddress()}${timestamp}`;
26
-
27
- proofOfWork(userDataString, 0)
28
- .then(({ hash, nonce }) => {
29
- account.signData(hash).then((signature) => {
30
- const signupMessage: VerificationData = {
31
- k: userRoot,
32
- a: account.getAddress() || "",
33
- n: nonce,
34
- t: timestamp,
35
- h: hash,
36
- s: signature,
37
- v: userData,
38
- c: null,
39
- };
40
-
41
- this.logger("SIGNUP PUT", userRoot, signupMessage);
42
-
43
- const finalMsg = {
44
- type: "put",
45
- id: textRandom(10),
46
- to: [],
47
- data: signupMessage,
48
- } as PutMessage;
49
-
50
- this.network.sendToAll(finalMsg);
51
- this.store
52
- .put(userRoot, JSON.stringify(signupMessage))
53
- .catch((e) => {
54
- // do nothing
55
- })
56
- .finally(() => {
57
- resolve(finalMsg);
58
- });
59
- });
60
- })
61
- .catch(reject);
62
- });
63
- } else {
64
- reject(new Error("User already exists!"));
65
- }
66
- })
67
- .catch(() => {
68
- reject(new Error("Could not fetch user"));
69
- });
70
- });
71
- }
1
+ import {
2
+ ToolDb,
3
+ PutMessage,
4
+ textRandom,
5
+ VerificationData,
6
+ proofOfWork,
7
+ sha256,
8
+ } from ".";
9
+
10
+ export default async function toolDbSignUp(
11
+ this: ToolDb,
12
+ user: string,
13
+ password: string,
14
+ to?: string[]
15
+ ): Promise<PutMessage<any>> {
16
+ const userRoot = `==${user}`;
17
+ return new Promise((resolve, reject) => {
18
+ this.getData(userRoot, false, 3000, to)
19
+ .then((data) => {
20
+ if (data === null) {
21
+ const account = new this.options.userAdapter(this);
22
+ account.encryptAccount(sha256(password)).then((userData) => {
23
+ const timestamp = new Date().getTime();
24
+ const userDataString = `${JSON.stringify(
25
+ userData
26
+ )}${account.getAddress()}${timestamp}`;
27
+
28
+ proofOfWork(userDataString, 0)
29
+ .then(({ hash, nonce }) => {
30
+ account.signData(hash).then((signature) => {
31
+ const signupMessage: VerificationData = {
32
+ k: userRoot,
33
+ a: account.getAddress() || "",
34
+ n: nonce,
35
+ t: timestamp,
36
+ h: hash,
37
+ s: signature,
38
+ v: userData,
39
+ c: null,
40
+ };
41
+
42
+ this.logger("SIGNUP PUT", userRoot, signupMessage);
43
+
44
+ const finalMsg = {
45
+ type: "put",
46
+ id: textRandom(10),
47
+ to: to || [],
48
+ data: signupMessage,
49
+ } as PutMessage;
50
+
51
+ this.network.sendToAll(finalMsg);
52
+ this.store
53
+ .put(userRoot, JSON.stringify(signupMessage))
54
+ .catch((e) => {
55
+ // do nothing
56
+ })
57
+ .finally(() => {
58
+ resolve(finalMsg);
59
+ });
60
+ });
61
+ })
62
+ .catch(reject);
63
+ });
64
+ } else {
65
+ reject(new Error("User already exists!"));
66
+ }
67
+ })
68
+ .catch(() => {
69
+ reject(new Error("Could not fetch user"));
70
+ });
71
+ });
72
+ }
@@ -1,53 +1,54 @@
1
- import { ToolDb, textRandom } from ".";
2
-
3
- /**
4
- * Subscribe to all PUT updates for this key.
5
- * @param key key of the data
6
- * @param userNamespaced If this key bolongs to a user or its public. Making it
7
- * private will enforce validation for our address and signatures.
8
- * @returns Promise<Data>
9
- */
10
- export default function toolDbSubscribe(
11
- this: ToolDb,
12
- key: string,
13
- userNamespaced = false
14
- ): Promise<void> {
15
- return new Promise((resolve, reject) => {
16
- if (userNamespaced && this.userAccount.getAddress() === undefined) {
17
- reject(new Error("You are not authorized yet!"));
18
- return;
19
- }
20
-
21
- const finalKey = userNamespaced
22
- ? `:${this.userAccount.getAddress()}.${key}`
23
- : key;
24
-
25
- this.logger("SUBSCRIBE", finalKey);
26
-
27
- const msgId = textRandom(10);
28
-
29
- this.network.sendToAll({
30
- type: "subscribe",
31
- key: finalKey,
32
- to: [],
33
- id: msgId,
34
- });
35
-
36
- this.store
37
- .get(finalKey)
38
- .then((data) => {
39
- try {
40
- const message = JSON.parse(data);
41
- this.triggerKeyListener(finalKey, message);
42
- } catch (e) {
43
- // do nothing
44
- }
45
- })
46
- .catch((e) => {
47
- // do nothing
48
- })
49
- .finally(() => {
50
- resolve();
51
- });
52
- });
53
- }
1
+ import { ToolDb, textRandom } from ".";
2
+
3
+ /**
4
+ * Subscribe to all PUT updates for this key.
5
+ * @param key key of the data
6
+ * @param userNamespaced If this key bolongs to a user or its public. Making it
7
+ * private will enforce validation for our address and signatures.
8
+ * @returns Promise<Data>
9
+ */
10
+ export default function toolDbSubscribe(
11
+ this: ToolDb,
12
+ key: string,
13
+ userNamespaced = false,
14
+ to?: string[]
15
+ ): Promise<void> {
16
+ return new Promise((resolve, reject) => {
17
+ if (userNamespaced && this.userAccount.getAddress() === undefined) {
18
+ reject(new Error("You are not authorized yet!"));
19
+ return;
20
+ }
21
+
22
+ const finalKey = userNamespaced
23
+ ? `:${this.userAccount.getAddress()}.${key}`
24
+ : key;
25
+
26
+ this.logger("SUBSCRIBE", finalKey);
27
+
28
+ const msgId = textRandom(10);
29
+
30
+ this.network.sendToAll({
31
+ type: "subscribe",
32
+ key: finalKey,
33
+ to: to || [],
34
+ id: msgId,
35
+ });
36
+
37
+ this.store
38
+ .get(finalKey)
39
+ .then((data) => {
40
+ try {
41
+ const message = JSON.parse(data);
42
+ this.triggerKeyListener(finalKey, message);
43
+ } catch (e) {
44
+ // do nothing
45
+ }
46
+ })
47
+ .catch((e) => {
48
+ // do nothing
49
+ })
50
+ .finally(() => {
51
+ resolve();
52
+ });
53
+ });
54
+ }
@@ -1,55 +1,55 @@
1
- import { ToolDb, VerificationData, VerifyResult } from ".";
2
-
3
- export default function toolDbVerificationWrapper(
4
- this: ToolDb,
5
- data: VerificationData<any>
6
- ) {
7
- // This wrapper function adds our custom verification functions to all messages.
8
- return new Promise((resolve) => {
9
- this.verifyMessage(data, this.options.pow).then(async (verified) => {
10
- if (verified) {
11
- let skipCustom = true;
12
- this._customVerificator.forEach((listener) => {
13
- if (listener && data.k && data.k.startsWith(listener.key)) {
14
- skipCustom = false;
15
-
16
- let previousData: any = undefined;
17
- // Get the previously stored value of this key
18
- this.store
19
- .get(data.k)
20
- .then((prev) => {
21
- try {
22
- previousData = JSON.parse(prev);
23
- } catch (e) {
24
- // do nothing
25
- }
26
- })
27
- .catch((e) => {
28
- // do nothing
29
- })
30
- .finally(() => {
31
- listener
32
- .fn(data, previousData)
33
- .then((verified: boolean) => {
34
- if (verified) {
35
- resolve(VerifyResult.Verified);
36
- } else {
37
- resolve(VerifyResult.CustomVerificationFailed);
38
- }
39
- })
40
- .catch((e) => {
41
- resolve(VerifyResult.CustomVerificationFailed);
42
- });
43
- });
44
- }
45
- });
46
-
47
- if (skipCustom) {
48
- resolve(verified);
49
- }
50
- } else {
51
- resolve(VerifyResult.InvalidVerification);
52
- }
53
- });
54
- });
55
- }
1
+ import { ToolDb, VerificationData, VerifyResult } from ".";
2
+
3
+ export default function toolDbVerificationWrapper(
4
+ this: ToolDb,
5
+ data: VerificationData<any>
6
+ ) {
7
+ // This wrapper function adds our custom verification functions to all messages.
8
+ return new Promise((resolve) => {
9
+ this.verifyMessage(data, this.options.pow).then(async (verified) => {
10
+ if (verified) {
11
+ let skipCustom = true;
12
+ this._customVerificator.forEach((listener) => {
13
+ if (listener && data.k && data.k.startsWith(listener.key)) {
14
+ skipCustom = false;
15
+
16
+ let previousData: any = undefined;
17
+ // Get the previously stored value of this key
18
+ this.store
19
+ .get(data.k)
20
+ .then((prev) => {
21
+ try {
22
+ previousData = JSON.parse(prev);
23
+ } catch (e) {
24
+ // do nothing
25
+ }
26
+ })
27
+ .catch((e) => {
28
+ // do nothing
29
+ })
30
+ .finally(() => {
31
+ listener
32
+ .fn(data, previousData)
33
+ .then((verified: boolean) => {
34
+ if (verified) {
35
+ resolve(VerifyResult.Verified);
36
+ } else {
37
+ resolve(VerifyResult.CustomVerificationFailed);
38
+ }
39
+ })
40
+ .catch((e) => {
41
+ resolve(VerifyResult.CustomVerificationFailed);
42
+ });
43
+ });
44
+ }
45
+ });
46
+
47
+ if (skipCustom) {
48
+ resolve(verified);
49
+ }
50
+ } else {
51
+ resolve(VerifyResult.InvalidVerification);
52
+ }
53
+ });
54
+ });
55
+ }