tool-db 1.0.10 → 1.0.14

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 CHANGED
@@ -1,28 +1,66 @@
1
- # Tool Chain
1
+ # Tool Db
2
2
 
3
3
  ## WIP
4
4
 
5
- ToolChain is a peer-to-peer model for a decentralized database, inspired by the work made of Mark Nadal at https://gun.eco/
5
+ ToolDb is a peer-to-peer model for a decentralized database, built on top of Gun, by Mark Nadal: https://gun.eco/
6
6
 
7
7
  Base usage;
8
- ```
9
- // Namespace of our app, make sure its unique
10
- const client = new ToolChainClient(host, debug?);
11
8
 
12
- client.anonSignIn().then();
9
+ Initializing;
10
+ ```
11
+ const client = new ToolChainClient([gunPeers]);
12
+ ```
13
+ Connects to the selected gun db peers. These can be normal gun relays or tool-db for a tighter protocol enforcement.
13
14
 
15
+ You can create a user, sign in or create a random set of keys for anonymous usage;
16
+ ```
14
17
  client.signUp(user, pass).then();
15
-
16
18
  client.signIn(user, pass).then(keys);
17
-
18
19
  client.anonSignIn().then();
20
+ ```
19
21
 
22
+ To retrieve your public key; (only if logged in)
23
+ ```
20
24
  client.getPubKey().then(pubKey);
25
+ // or
26
+ client.user?.pubKey
27
+ ```
21
28
 
22
- // userNamespaced will check for the user namespace, so it will transform the key used to "~user.key",
23
- // This way all peers reading this entry will understand the key belongs to this user and will enforce
24
- // the verifications required to namespaced entries.
25
- client.getData("key", userNamespaced?, timeout?).then();
29
+ You can check if you are correctly logged in by checking if the user field exists or not;
30
+ ```
31
+ if (client.user) {
32
+ // Ok!
33
+ }
34
+ ```
26
35
 
36
+
37
+ Simple put and get:
38
+ ```
39
+ client.getData("key", userNamespaced?, timeout?).then();
27
40
  client.putData("key", value, userNamespaced?).then();
28
41
  ```
42
+ UserNamespaced will check for the user namespace, so it will transform the key used to ":user.key", This way all peers reading this entry will understand the key belongs to this user and will enforce the verifications required to namespaced entries.
43
+
44
+ To listen for a value you can set up a listener on a key. Beware the listener will check for all keys *starting with* the supplied key, so for example, if you use "value." as your listener if will execute on every key that starts with "value.". This is useful for checking against a public key or use namespace.
45
+ ```
46
+ const listenerId = client.addKeyListener("value", console.log);
47
+ client.removeKeyListener(listenerId);
48
+ ```
49
+
50
+ Similarly, for using a custom verification on a key (or subset of keys) you can create a new function that returns a Promise boolean;
51
+ ```
52
+ const validateDn = (msg) => {
53
+ return new Promise((resolve) => {
54
+ console.log("Custom verif", msg);
55
+ if (typeof msg.value === "string") resolve(true);
56
+ else resolve(false);
57
+ });
58
+ }
59
+
60
+ const validatorId = client.addCustomVerification("value", validateFn);
61
+
62
+ // You will not usually need to remove validators, but we provide a function anyway.
63
+ client.removeCustomVerification(validatorId);
64
+ ```
65
+
66
+ Keep in mind validators should run on all client nodes, and even though the nodes not running your validator will be able to store and relay invalid messages its up to each client and peer to check these messages on arrival. ToolDb does this automatically when using the custom validation, but its important to make sure every peer runs the same code to avoid issues.
@@ -1 +1 @@
1
- export default function customGun(g?: undefined): void;
1
+ export default function customGun(toolDb: any, _gun?: any): void;
package/dist/customGun.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable */
3
2
  // @ts-nocheck
4
3
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
4
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -49,7 +48,7 @@ function verification(msg) {
49
48
  if (!msg.put) return [3 /*break*/, 2];
50
49
  keys = Object.keys(msg.put);
51
50
  promises = keys.map(function (key) { return __awaiter(_this, void 0, void 0, function () {
52
- var data;
51
+ var data, toolDb;
53
52
  var _a;
54
53
  return __generator(this, function (_b) {
55
54
  switch (_b.label) {
@@ -63,7 +62,8 @@ function verification(msg) {
63
62
  //
64
63
  }
65
64
  }
66
- return [4 /*yield*/, (0, _1.verifyMessage)(data)];
65
+ toolDb = (window || global).toolDb;
66
+ return [4 /*yield*/, toolDb.verify(data)];
67
67
  case 1: return [2 /*return*/, _b.sent()];
68
68
  }
69
69
  });
@@ -74,12 +74,13 @@ function verification(msg) {
74
74
  if (verifiedList.filter(function (r) { return r === _1.VerifyResult.Verified; }).length ===
75
75
  keys.length) {
76
76
  this.to.next(msg);
77
- console.log("Verification OK", verifiedList);
77
+ // console.log("Verification > OK", msg);
78
78
  return [2 /*return*/];
79
79
  }
80
- console.log("Verification NOT OK", verifiedList, keys, msg);
80
+ // console.log("Verification > NOT OK", msg);
81
81
  return [2 /*return*/];
82
82
  case 2:
83
+ // console.log("Verification > Skipped", msg);
83
84
  this.to.next(msg);
84
85
  _a.label = 3;
85
86
  case 3: return [2 /*return*/];
@@ -87,25 +88,54 @@ function verification(msg) {
87
88
  });
88
89
  });
89
90
  }
90
- // function putCheck(msg) {
91
- // // console.log("PUT", msg);
92
- // if (msg.put) {
93
- // const key = msg.put["#"];
94
- // if (key && key.startsWith("==")) {
95
- // if (msg._.root.graph[key]) {
96
- // console.log("Illegal dupe, Not putting");
97
- // return;
98
- // }
99
- // }
100
- // }
101
- // this.to.next(msg);
102
- // }
103
- function customGun(g) {
104
- if (g === void 0) { g = undefined; }
105
- (g || Gun).on("create", function (ctx) {
91
+ function putCheck(msg) {
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ var key_1, data_1, toolDb, verify;
94
+ return __generator(this, function (_a) {
95
+ switch (_a.label) {
96
+ case 0:
97
+ if (!msg.put) return [3 /*break*/, 2];
98
+ key_1 = msg.put["#"];
99
+ data_1 = {};
100
+ try {
101
+ data_1 = JSON.parse(msg.put[":"]);
102
+ }
103
+ catch (e) {
104
+ // console.warn(e);
105
+ }
106
+ if (!(data_1 && data_1.value)) return [3 /*break*/, 2];
107
+ toolDb = (window || global).toolDb;
108
+ return [4 /*yield*/, toolDb.verify(data_1)];
109
+ case 1:
110
+ verify = _a.sent();
111
+ if (verify !== _1.VerifyResult.Verified) {
112
+ return [2 /*return*/];
113
+ }
114
+ // Check listeners
115
+ toolDb._keyListeners.forEach(function (listener) {
116
+ if (key_1.startsWith(listener.key)) {
117
+ if (listener.timeout)
118
+ clearTimeout(listener.timeout);
119
+ listener.timeout = setTimeout(function () {
120
+ listener.fn(data_1.value);
121
+ listener.timeout = null;
122
+ }, 250);
123
+ }
124
+ });
125
+ _a.label = 2;
126
+ case 2:
127
+ this.to.next(msg);
128
+ return [2 /*return*/];
129
+ }
130
+ });
131
+ });
132
+ }
133
+ function customGun(toolDb, _gun) {
134
+ if (_gun === void 0) { _gun = undefined; }
135
+ (_gun || Gun).on("create", function (ctx) {
106
136
  ctx.on("in", verification);
107
137
  ctx.on("out", verification);
108
- // ctx.on("put", putCheck);
138
+ ctx.on("put", putCheck);
109
139
  this.to.next(ctx);
110
140
  });
111
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"customGun.js","sourceRoot":"","sources":["../src/customGun.ts"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEd,sBAAgD;AAEhD,SAAe,YAAY,CAAC,GAAG;;;;;;;yBAEzB,GAAG,CAAC,GAAG,EAAP,wBAAO;oBACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC5B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAO,GAAG;;;;;;oCAC9B,IAAI,GAAG,EAAE,CAAC;oCACd,IAAI,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,CAAC,EAAE;wCACnB,IAAI;4CACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;yCACnC;wCAAC,OAAO,CAAC,EAAE;4CACV,EAAE;yCACH;qCACF;oCACM,qBAAM,IAAA,gBAAa,EAAC,IAAI,CAAC,EAAA;wCAAhC,sBAAO,SAAyB,EAAC;;;yBAClC,CAAC,CAAC;oBACkB,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA;;oBAA/D,YAAY,GAAG,SAAgD;oBAErE,IACE,YAAY,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,eAAY,CAAC,QAAQ,EAA3B,CAA2B,CAAC,CAAC,MAAM;wBAC9D,IAAI,CAAC,MAAM,EACX;wBACA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;wBAC7C,sBAAO;qBACR;oBACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5D,sBAAO;;oBAEP,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;;;CAErB;AAED,2BAA2B;AAC3B,gCAAgC;AAChC,mBAAmB;AACnB,gCAAgC;AAChC,yCAAyC;AACzC,qCAAqC;AACrC,oDAAoD;AACpD,kBAAkB;AAClB,UAAU;AACV,QAAQ;AACR,MAAM;AACN,uBAAuB;AACvB,IAAI;AAEJ,SAAwB,SAAS,CAAC,CAAa;IAAb,kBAAA,EAAA,aAAa;IAC7C,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG;QACnC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5B,2BAA2B;QAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAPD,4BAOC"}
1
+ {"version":3,"file":"customGun.js","sourceRoot":"","sources":["../src/customGun.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -32,5 +32,4 @@ export { default as loadKeysComb } from "./utils/crypto/loadKeysComb";
32
32
  export { default as saveKeysComb } from "./utils/crypto/saveKeysComb";
33
33
  export { default as verifyData } from "./utils/crypto/verifyData";
34
34
  export { default as customGun } from "./customGun";
35
- export { default as ToolDbService } from "./toolDbService";
36
35
  export { default as ToolDbClient } from "./toolDbClient";
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.ToolDbClient = exports.ToolDbService = exports.customGun = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.verifyMessage = exports.uint8ToBase64 = exports.toBase64 = exports.textRandom = exports.stringToArrayBuffer = exports.randomAnimal = exports.generateIv = exports.fromBase64 = exports.base64ToUint8 = exports.base64ToArrayBuffer = exports.arrayBufferToString = exports.arrayBufferToBase64 = exports.signData = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
16
+ exports.ToolDbClient = exports.customGun = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.verifyMessage = exports.uint8ToBase64 = exports.toBase64 = exports.textRandom = exports.stringToArrayBuffer = exports.randomAnimal = exports.generateIv = exports.fromBase64 = exports.base64ToUint8 = exports.base64ToArrayBuffer = exports.arrayBufferToString = exports.arrayBufferToBase64 = exports.signData = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
17
17
  /* eslint-disable no-undef */
18
18
  /* eslint-disable global-require */
19
19
  __exportStar(require("./types/graph"), exports);
@@ -96,8 +96,6 @@ var verifyData_1 = require("./utils/crypto/verifyData");
96
96
  Object.defineProperty(exports, "verifyData", { enumerable: true, get: function () { return __importDefault(verifyData_1).default; } });
97
97
  var customGun_1 = require("./customGun");
98
98
  Object.defineProperty(exports, "customGun", { enumerable: true, get: function () { return __importDefault(customGun_1).default; } });
99
- var toolDbService_1 = require("./toolDbService");
100
- Object.defineProperty(exports, "ToolDbService", { enumerable: true, get: function () { return __importDefault(toolDbService_1).default; } });
101
99
  var toolDbClient_1 = require("./toolDbClient");
102
100
  Object.defineProperty(exports, "ToolDbClient", { enumerable: true, get: function () { return __importDefault(toolDbClient_1).default; } });
103
101
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,mCAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,GAAG;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;CACH;AAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,UAAU;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC;CACH;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;CAC7C;AAED,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAC/B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AACxB,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AAEjC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,kFAA4F;AAAnF,mJAAA,OAAO,OAA2B;AAC3C,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,oEAA8E;AAArE,qIAAA,OAAO,OAAoB;AACpC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,wDAAkE;AAAzD,yHAAA,OAAO,OAAc;AAE9B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAE7B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,mCAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,GAAG;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;CACH;AAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,UAAU;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC;CACH;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;CAC7C;AAED,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAC/B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AACxB,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AAEjC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,kFAA4F;AAAnF,mJAAA,OAAO,OAA2B;AAC3C,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,oEAA8E;AAArE,qIAAA,OAAO,OAAoB;AACpC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,wDAAkE;AAAzD,yHAAA,OAAO,OAAc;AAE9B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAE7B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB"}
@@ -1,9 +1,21 @@
1
+ import { IGunChainReference } from "gun/types/chain";
2
+ import { GraphEntryValue } from ".";
1
3
  import toolDbAnonSignIn from "./toolDbAnonSignIn";
2
4
  import toolDbGet from "./toolDbGet";
3
5
  import toolDbGetPubKey from "./toolDbGetPubKey";
4
6
  import toolDbPut from "./toolDbPut";
5
7
  import toolDbSignIn from "./toolDbSignIn";
6
8
  import toolDbSignUp from "./toolDbSignUp";
9
+ import toolDbVerificationWrapper from "./toolDbVerificationWrapper";
10
+ interface Listener {
11
+ key: string;
12
+ timeout: number | null;
13
+ fn: (msg: any) => void;
14
+ }
15
+ interface Verificator<T> {
16
+ key: string;
17
+ fn: (msg: GraphEntryValue<T>) => Promise<boolean>;
18
+ }
7
19
  declare class ToolDbClient {
8
20
  debug: boolean;
9
21
  private _gun;
@@ -13,6 +25,13 @@ declare class ToolDbClient {
13
25
  signIn: typeof toolDbSignIn;
14
26
  anonSignIn: typeof toolDbAnonSignIn;
15
27
  signUp: typeof toolDbSignUp;
28
+ verify: typeof toolDbVerificationWrapper;
29
+ _keyListeners: (Listener | null)[];
30
+ addKeyListener: <T = any>(key: string, fn: (msg: T) => void) => number;
31
+ removeKeyListener: (id: number) => void;
32
+ _customVerificator: (Verificator<any> | null)[];
33
+ addCustomVerification: <T = any>(key: string, fn: (msg: GraphEntryValue<T>) => Promise<boolean>) => number;
34
+ removeCustomVerification: (id: number) => void;
16
35
  user: {
17
36
  keys: {
18
37
  signKeys: CryptoKeyPair;
@@ -22,6 +41,6 @@ declare class ToolDbClient {
22
41
  pubKey: string;
23
42
  } | undefined;
24
43
  constructor(peers: string[]);
25
- get gun(): import("gun/types/chain").IGunChainReference<any, any, "pre_root">;
44
+ get gun(): IGunChainReference<any, any, false>;
26
45
  }
27
46
  export default ToolDbClient;
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var gun_1 = __importDefault(require("gun"));
7
6
  var customGun_1 = __importDefault(require("./customGun"));
8
7
  var toolDbAnonSignIn_1 = __importDefault(require("./toolDbAnonSignIn"));
9
8
  var toolDbGet_1 = __importDefault(require("./toolDbGet"));
@@ -11,8 +10,11 @@ var toolDbGetPubKey_1 = __importDefault(require("./toolDbGetPubKey"));
11
10
  var toolDbPut_1 = __importDefault(require("./toolDbPut"));
12
11
  var toolDbSignIn_1 = __importDefault(require("./toolDbSignIn"));
13
12
  var toolDbSignUp_1 = __importDefault(require("./toolDbSignUp"));
13
+ var toolDbVerificationWrapper_1 = __importDefault(require("./toolDbVerificationWrapper"));
14
+ var Gun = require("gun");
14
15
  var ToolDbClient = /** @class */ (function () {
15
16
  function ToolDbClient(peers) {
17
+ var _this = this;
16
18
  this.debug = false;
17
19
  this.getData = toolDbGet_1.default;
18
20
  this.putData = toolDbPut_1.default;
@@ -20,9 +22,43 @@ var ToolDbClient = /** @class */ (function () {
20
22
  this.signIn = toolDbSignIn_1.default;
21
23
  this.anonSignIn = toolDbAnonSignIn_1.default;
22
24
  this.signUp = toolDbSignUp_1.default;
25
+ this.verify = toolDbVerificationWrapper_1.default;
26
+ this._keyListeners = [];
27
+ this.addKeyListener = function (key, fn) {
28
+ var newListener = {
29
+ key: key,
30
+ timeout: null,
31
+ fn: fn,
32
+ };
33
+ _this._keyListeners.push(newListener);
34
+ return _this._keyListeners.length;
35
+ };
36
+ this.removeKeyListener = function (id) {
37
+ var _a, _b;
38
+ if ((_a = _this._keyListeners[id]) === null || _a === void 0 ? void 0 : _a.timeout) {
39
+ clearTimeout(((_b = _this._keyListeners[id]) === null || _b === void 0 ? void 0 : _b.timeout) || undefined);
40
+ }
41
+ _this._keyListeners[id] = null;
42
+ };
43
+ this._customVerificator = [];
44
+ this.addCustomVerification = function (key, fn) {
45
+ var newListener = {
46
+ key: key,
47
+ fn: fn,
48
+ };
49
+ _this._customVerificator.push(newListener);
50
+ return _this._customVerificator.length;
51
+ };
52
+ this.removeCustomVerification = function (id) {
53
+ _this._customVerificator[id] = null;
54
+ };
23
55
  this.user = undefined;
24
- (0, customGun_1.default)();
25
- this._gun = new gun_1.default({
56
+ (0, customGun_1.default)(this, Gun);
57
+ if (typeof window !== "undefined")
58
+ window.toolDb = this;
59
+ if (typeof global !== "undefined")
60
+ global.toolDb = this;
61
+ this._gun = new Gun({
26
62
  peers: peers,
27
63
  });
28
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolDbClient.js","sourceRoot":"","sources":["../src/toolDbClient.ts"],"names":[],"mappings":";;;;;AAAA,4CAAsB;AAEtB,0DAAoC;AACpC,wEAAkD;AAClD,0DAAoC;AACpC,sEAAgD;AAChD,0DAAoC;AACpC,gEAA0C;AAC1C,gEAA0C;AAE1C;IA4BE,sBAAY,KAAe;QA3BpB,UAAK,GAAG,KAAK,CAAC;QAId,YAAO,GAAG,mBAAS,CAAC;QAEpB,YAAO,GAAG,mBAAS,CAAC;QAEpB,cAAS,GAAG,yBAAe,CAAC;QAE5B,WAAM,GAAG,sBAAY,CAAC;QAEtB,eAAU,GAAG,0BAAgB,CAAC;QAE9B,WAAM,GAAG,sBAAY,CAAC;QAEtB,SAAI,GAAG,SAST,CAAC;QAGJ,IAAA,mBAAS,GAAE,CAAC;QAEZ,IAAI,CAAC,IAAI,GAAG,IAAI,aAAG,CAAC;YAClB,KAAK,OAAA;SACN,CAAC,CAAC;IACL,CAAC;IAED,sBAAI,6BAAG;aAAP;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;;;OAAA;IACH,mBAAC;AAAD,CAAC,AAvCD,IAuCC;AAED,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"toolDbClient.js","sourceRoot":"","sources":["../src/toolDbClient.ts"],"names":[],"mappings":";;;;;AAGA,0DAAoC;AACpC,wEAAkD;AAClD,0DAAoC;AACpC,sEAAgD;AAChD,0DAAoC;AACpC,gEAA0C;AAC1C,gEAA0C;AAC1C,0FAAoE;AAEpE,IAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAa3B;IAqEE,sBAAY,KAAe;QAA3B,iBASC;QA7EM,UAAK,GAAG,KAAK,CAAC;QAId,YAAO,GAAG,mBAAS,CAAC;QAEpB,YAAO,GAAG,mBAAS,CAAC;QAEpB,cAAS,GAAG,yBAAe,CAAC;QAE5B,WAAM,GAAG,sBAAY,CAAC;QAEtB,eAAU,GAAG,0BAAgB,CAAC;QAE9B,WAAM,GAAG,sBAAY,CAAC;QAEtB,WAAM,GAAG,mCAAyB,CAAC;QAEnC,kBAAa,GAAwB,EAAE,CAAC;QAExC,mBAAc,GAAG,UAAU,GAAW,EAAE,EAAoB;YACjE,IAAM,WAAW,GAAa;gBAC5B,GAAG,KAAA;gBACH,OAAO,EAAE,IAAI;gBACb,EAAE,IAAA;aACH,CAAC;YAEF,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,OAAO,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACnC,CAAC,CAAC;QAEK,sBAAiB,GAAG,UAAC,EAAU;;YACpC,IAAI,MAAA,KAAI,CAAC,aAAa,CAAC,EAAE,CAAC,0CAAE,OAAO,EAAE;gBACnC,YAAY,CAAC,CAAA,MAAA,KAAI,CAAC,aAAa,CAAC,EAAE,CAAC,0CAAE,OAAO,KAAI,SAAS,CAAC,CAAC;aAC5D;YACD,KAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;QAEK,uBAAkB,GAAgC,EAAE,CAAC;QAErD,0BAAqB,GAAG,UAC7B,GAAW,EACX,EAAiD;YAEjD,IAAM,WAAW,GAAmB;gBAClC,GAAG,KAAA;gBACH,EAAE,IAAA;aACH,CAAC;YAEF,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC;QAEK,6BAAwB,GAAG,UAAC,EAAU;YAC3C,KAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC;QAEK,SAAI,GAAG,SAST,CAAC;QAGJ,IAAA,mBAAS,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAErB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAG,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;QACjE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAG,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;QAEjE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;YAClB,KAAK,OAAA;SACN,CAAC,CAAC;IACL,CAAC;IAED,sBAAI,6BAAG;aAAP;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;;;OAAA;IACH,mBAAC;AAAD,CAAC,AAnFD,IAmFC;AAED,kBAAe,YAAY,CAAC"}
package/dist/toolDbGet.js CHANGED
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  function toolDbGet(key, userNamespaced, timeoutMs) {
11
11
  var _this = this;
12
12
  if (userNamespaced === void 0) { userNamespaced = false; }
13
- if (timeoutMs === void 0) { timeoutMs = 3000; }
13
+ if (timeoutMs === void 0) { timeoutMs = 1000; }
14
14
  return new Promise(function (resolve, reject) {
15
15
  var _a, _b;
16
16
  if (userNamespaced && ((_a = _this.user) === null || _a === void 0 ? void 0 : _a.pubKey) === undefined) {
@@ -22,27 +22,24 @@ function toolDbGet(key, userNamespaced, timeoutMs) {
22
22
  console.log("GET > " + finalKey);
23
23
  }
24
24
  var first = true;
25
+ var timeout = setTimeout(function () {
26
+ resolve(null);
27
+ }, timeoutMs);
25
28
  _this.gun.get(finalKey, function (ack) {
26
29
  if (ack["@"] || ack.put) {
27
30
  var d = ack.put;
28
31
  if ((d && first) || (d && !first)) {
29
- if (!d.v) {
30
- resolve(null);
31
- }
32
- else {
32
+ if (d.v) {
33
33
  try {
34
34
  var data = JSON.parse(d.v);
35
+ clearTimeout(timeout);
35
36
  resolve(data.value);
36
37
  }
37
38
  catch (e) {
38
39
  console.error(e);
39
- resolve(null);
40
40
  }
41
41
  }
42
42
  }
43
- if (!d && !first) {
44
- resolve(null);
45
- }
46
43
  first = false;
47
44
  }
48
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"toolDbGet.js","sourceRoot":"","sources":["../src/toolDbGet.ts"],"names":[],"mappings":";;AAEA;;;;;;GAMG;AACH,SAAwB,SAAS,CAE/B,GAAW,EACX,cAAsB,EACtB,SAAgB;IAJlB,iBAwCC;IArCC,+BAAA,EAAA,sBAAsB;IACtB,0BAAA,EAAA,gBAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;;QACjC,IAAI,cAAc,IAAI,CAAA,MAAA,KAAI,CAAC,IAAI,0CAAE,MAAM,MAAK,SAAS,EAAE;YACrD,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACjD,OAAO;SACR;QACD,IAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,OAAI,MAAA,KAAI,CAAC,IAAI,0CAAE,MAAM,UAAI,GAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,IAAI,KAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;SAClC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAQ;YAC9B,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE;gBACvB,IAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;wBACR,OAAO,CAAC,IAAI,CAAC,CAAC;qBACf;yBAAM;wBACL,IAAI;4BACF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACrB;wBAAC,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BACjB,OAAO,CAAC,IAAI,CAAC,CAAC;yBACf;qBACF;iBACF;gBACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;iBACf;gBACD,KAAK,GAAG,KAAK,CAAC;aACf;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAxCD,4BAwCC"}
1
+ {"version":3,"file":"toolDbGet.js","sourceRoot":"","sources":["../src/toolDbGet.ts"],"names":[],"mappings":";;AAEA;;;;;;GAMG;AACH,SAAwB,SAAS,CAE/B,GAAW,EACX,cAAsB,EACtB,SAAgB;IAJlB,iBAwCC;IArCC,+BAAA,EAAA,sBAAsB;IACtB,0BAAA,EAAA,gBAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;;QACjC,IAAI,cAAc,IAAI,CAAA,MAAA,KAAI,CAAC,IAAI,0CAAE,MAAM,MAAK,SAAS,EAAE;YACrD,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACjD,OAAO;SACR;QACD,IAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,OAAI,MAAA,KAAI,CAAC,IAAI,0CAAE,MAAM,UAAI,GAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,IAAI,KAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;SAClC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAM,OAAO,GAAG,UAAU,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAQ;YAC9B,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE;gBACvB,IAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,CAAC,CAAC,EAAE;wBACP,IAAI;4BACF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7B,YAAY,CAAC,OAAO,CAAC,CAAC;4BACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACrB;wBAAC,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yBAClB;qBACF;iBACF;gBACD,KAAK,GAAG,KAAK,CAAC;aACf;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAxCD,4BAwCC"}
@@ -60,7 +60,7 @@ var sha256_1 = __importDefault(require("./utils/sha256"));
60
60
  function toolDbSignIn(user, password) {
61
61
  var _this = this;
62
62
  return new Promise(function (resolve, reject) {
63
- _this.getData("==" + user)
63
+ _this.getData("==" + user, false, 5000)
64
64
  .then(function (_user) {
65
65
  if (!_user) {
66
66
  reject(Error("Unvalid user data"));
@@ -1 +1 @@
1
- {"version":3,"file":"toolDbSignIn.js","sourceRoot":"","sources":["../src/toolDbSignIn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolDbSignIn.js","sourceRoot":"","sources":["../src/toolDbSignIn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { GraphEntryValue, ToolDbClient } from ".";
2
+ export default function toolDbVerificationWrapper(this: ToolDbClient, data: GraphEntryValue<any>): Promise<unknown>;
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable */
3
- // @ts-nocheck
4
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -39,58 +37,44 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
39
37
  };
40
38
  Object.defineProperty(exports, "__esModule", { value: true });
41
39
  var _1 = require(".");
42
- function security(msg) {
43
- return __awaiter(this, void 0, void 0, function () {
44
- var at, to, soul, data, verified;
45
- return __generator(this, function (_a) {
46
- switch (_a.label) {
47
- case 0:
48
- at = this.as, to = this.to;
49
- console.log("Security", msg);
50
- if (msg.get) {
51
- soul = msg.get["#"];
52
- if (soul) {
53
- return [2 /*return*/, to.next(msg)];
40
+ function toolDbVerificationWrapper(data) {
41
+ var _this = this;
42
+ // This wrapper function adds our custom verification functions to all messages.
43
+ return new Promise(function (resolve, reject) {
44
+ (0, _1.verifyMessage)(data).then(function (verified) { return __awaiter(_this, void 0, void 0, function () {
45
+ var skipCustom_1;
46
+ return __generator(this, function (_a) {
47
+ if (verified) {
48
+ skipCustom_1 = true;
49
+ this._customVerificator.forEach(function (listener) {
50
+ if (listener && data.key.startsWith(listener.key)) {
51
+ skipCustom_1 = false;
52
+ listener
53
+ .fn(data)
54
+ .then(function (verified) {
55
+ if (verified) {
56
+ resolve(_1.VerifyResult.Verified);
57
+ }
58
+ else {
59
+ resolve(_1.VerifyResult.CustomVerificationFailed);
60
+ }
61
+ })
62
+ .catch(function (e) {
63
+ resolve(_1.VerifyResult.CustomVerificationFailed);
64
+ });
54
65
  }
55
- return [2 /*return*/];
66
+ });
67
+ if (skipCustom_1) {
68
+ resolve(verified);
56
69
  }
57
- if (!msg.put) return [3 /*break*/, 2];
58
- data = void 0;
59
- try {
60
- data = JSON.parse(msg.put.v);
61
- }
62
- catch (e) {
63
- return [2 /*return*/];
64
- }
65
- return [4 /*yield*/, (0, _1.verifyMessage)(data)];
66
- case 1:
67
- verified = _a.sent();
68
- console.log("verified?", verified, data);
69
- if (verified === _1.VerifyResult.Verified) {
70
- to.next(msg);
71
- }
72
- return [2 /*return*/];
73
- case 2:
74
- to.next(msg);
75
- return [2 /*return*/];
76
- }
77
- });
78
- });
79
- }
80
- function signature(msg) {
81
- if (msg.user) {
82
- return this.to.next(msg);
83
- }
84
- var ctx = this.as;
85
- msg.user = ctx.user;
86
- security.call(this, msg);
87
- }
88
- function customGun(gun) {
89
- gun.on("opt", function (ctx) {
90
- ctx.on("in", security, ctx);
91
- ctx.on("out", signature, ctx);
92
- this.to.next(ctx);
70
+ }
71
+ else {
72
+ resolve(_1.VerifyResult.InvalidVerification);
73
+ }
74
+ return [2 /*return*/];
75
+ });
76
+ }); });
93
77
  });
94
78
  }
95
- exports.default = customGun;
96
- //# sourceMappingURL=customPut.js.map
79
+ exports.default = toolDbVerificationWrapper;
80
+ //# sourceMappingURL=toolDbVerificationWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDbVerificationWrapper.js","sourceRoot":"","sources":["../src/toolDbVerificationWrapper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sBAA+E;AAE/E,SAAwB,yBAAyB,CAE/C,IAA0B;IAF5B,iBAmCC;IA/BC,gFAAgF;IAChF,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAA,gBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAO,QAAQ;;;gBACtC,IAAI,QAAQ,EAAE;oBACR,eAAa,IAAI,CAAC;oBACtB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAC,QAAQ;wBACvC,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;4BACjD,YAAU,GAAG,KAAK,CAAC;4BACnB,QAAQ;iCACL,EAAE,CAAC,IAAI,CAAC;iCACR,IAAI,CAAC,UAAC,QAAQ;gCACb,IAAI,QAAQ,EAAE;oCACZ,OAAO,CAAC,eAAY,CAAC,QAAQ,CAAC,CAAC;iCAChC;qCAAM;oCACL,OAAO,CAAC,eAAY,CAAC,wBAAwB,CAAC,CAAC;iCAChD;4BACH,CAAC,CAAC;iCACD,KAAK,CAAC,UAAC,CAAC;gCACP,OAAO,CAAC,eAAY,CAAC,wBAAwB,CAAC,CAAC;4BACjD,CAAC,CAAC,CAAC;yBACN;oBACH,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAU,EAAE;wBACd,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACnB;iBACF;qBAAM;oBACL,OAAO,CAAC,eAAY,CAAC,mBAAmB,CAAC,CAAC;iBAC3C;;;aACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAnCD,4CAmCC"}
@@ -1,4 +1,5 @@
1
1
  export declare enum VerifyResult {
2
+ CustomVerificationFailed = -8,
2
3
  InvalidData = -7,
3
4
  InvalidVerification = -6,
4
5
  InvalidTimestamp = -5,
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VerifyResult = void 0;
4
4
  var VerifyResult;
5
5
  (function (VerifyResult) {
6
+ VerifyResult[VerifyResult["CustomVerificationFailed"] = -8] = "CustomVerificationFailed";
6
7
  VerifyResult[VerifyResult["InvalidData"] = -7] = "InvalidData";
7
8
  VerifyResult[VerifyResult["InvalidVerification"] = -6] = "InvalidVerification";
8
9
  VerifyResult[VerifyResult["InvalidTimestamp"] = -5] = "InvalidTimestamp";
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":";;;AAAA,IAAY,YASX;AATD,WAAY,YAAY;IACtB,8DAAgB,CAAA;IAChB,8EAAwB,CAAA;IACxB,wEAAqB,CAAA;IACrB,oEAAmB,CAAA;IACnB,kEAAkB,CAAA;IAClB,wEAAqB,CAAA;IACrB,wEAAqB,CAAA;IACrB,uDAAY,CAAA;AACd,CAAC,EATW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QASvB"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAUX;AAVD,WAAY,YAAY;IACtB,wFAA6B,CAAA;IAC7B,8DAAgB,CAAA;IAChB,8EAAwB,CAAA;IACxB,wEAAqB,CAAA;IACrB,oEAAmB,CAAA;IACnB,kEAAkB,CAAA;IAClB,wEAAqB,CAAA;IACrB,wEAAqB,CAAA;IACrB,uDAAY,CAAA;AACd,CAAC,EAVW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAUvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tool-db",
3
- "version": "1.0.10",
3
+ "version": "1.0.14",
4
4
  "private": false,
5
5
  "description": "A decentralized database model for p2p networks.",
6
6
  "main": "dist/index.js",
@@ -16,21 +16,14 @@
16
16
  "author": "Manuel Etchegaray",
17
17
  "license": "ISC",
18
18
  "dependencies": {
19
- "@babel/preset-env": "^7.15.0",
20
- "@babel/preset-typescript": "^7.15.0",
21
19
  "@peculiar/webcrypto": "^1.1.7",
22
20
  "axios": "^0.21.1",
23
21
  "babel": "^6.23.0",
24
22
  "buffer": "^6.0.3",
25
23
  "crypto": "^1.0.1",
26
- "gun": "github:amark/gun",
27
- "jest": "^27.0.6",
28
- "localforage": "^1.9.0",
29
- "localforage-startswith": "^1.4.0",
24
+ "gun": "^0.2020.1235",
30
25
  "lodash": "^4.17.21",
31
- "npm-watch": "^0.11.0",
32
- "ts-node": "^10.2.0",
33
- "typescript": "^4.1.2"
26
+ "npm-watch": "^0.11.0"
34
27
  },
35
28
  "devDependencies": {
36
29
  "@types/gun": "^0.9.3",
@@ -38,6 +31,11 @@
38
31
  "@types/lodash": "^4.14.172",
39
32
  "@types/node": "^15.0.1",
40
33
  "@typescript-eslint/eslint-plugin": "^4.29.1",
34
+ "@babel/preset-env": "^7.15.0",
35
+ "@babel/preset-typescript": "^7.15.0",
36
+ "jest": "^27.0.6",
37
+ "typescript": "^4.1.2",
38
+ "ts-node": "^10.2.0",
41
39
  "eslint": "^7.32.0",
42
40
  "eslint-config-airbnb": "^18.2.1",
43
41
  "eslint-config-prettier": "^8.3.0",
@@ -1 +0,0 @@
1
- export default function customGun(gun: any): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"customPut.js","sourceRoot":"","sources":["../src/customPut.ts"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEd,sBAAgD;AAEhD,SAAe,QAAQ,CAAC,GAAG;;;;;;oBACrB,EAAE,GAAG,IAAI,CAAC,EAAE,EACd,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC7B,IAAI,GAAG,CAAC,GAAG,EAAE;wBAEP,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACxB,IAAI,IAAI,EAAE;4BACR,sBAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;yBACrB;wBACD,sBAAO;qBACR;yBACG,GAAG,CAAC,GAAG,EAAP,wBAAO;oBACL,IAAI,SAAA,CAAC;oBACT,IAAI;wBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC9B;oBAAC,OAAO,CAAC,EAAE;wBACV,sBAAO;qBACR;oBAEgB,qBAAM,IAAA,gBAAa,EAAC,IAAI,CAAC,EAAA;;oBAApC,QAAQ,GAAG,SAAyB;oBAC1C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAI,QAAQ,KAAK,eAAY,CAAC,QAAQ,EAAE;wBACtC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACd;oBAED,sBAAO;;oBAET,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;;CACd;AAED,SAAS,SAAS,CAAC,GAAG;IACpB,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAClB,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAwB,SAAS,CAAC,GAAG;IACnC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG;QACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAND,4BAMC"}
@@ -1 +0,0 @@
1
- export default function gunReplacements(): void;
@@ -1,253 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable */
4
- function gunReplacements() {
5
- Gun.chain.put = function (data, cb, as) {
6
- console.log("PUT EXECUTED YAY");
7
- // I rewrote it :)
8
- var gun = this, at = gun._, root = at.root;
9
- as = as || {};
10
- as.root = at.root;
11
- as.run || (as.run = root.once);
12
- stun(as, at.id); // set a flag for reads to check if this chain is writing.
13
- as.ack = as.ack || cb;
14
- as.via = as.via || gun;
15
- as.data = as.data || data;
16
- as.soul || (as.soul = at.soul || ("string" == typeof cb && cb));
17
- var s = (as.state = as.state || Gun.state());
18
- if ("function" == typeof data) {
19
- data(function (d) {
20
- as.data = d;
21
- gun.put(u, u, as);
22
- });
23
- return gun;
24
- }
25
- if (!as.soul) {
26
- return get(as), gun;
27
- }
28
- as.$ = root.$.get(as.soul); // TODO: This may not allow user chaining and similar?
29
- as.todo = [{ it: as.data, ref: as.$ }];
30
- as.turn = as.turn || turn;
31
- as.ran = as.ran || ran;
32
- //var path = []; as.via.back(at => { at.get && path.push(at.get.slice(0,9)) }); path = path.reverse().join('.');
33
- // TODO: Perf! We only need to stun chains that are being modified, not necessarily written to.
34
- (function walk() {
35
- var to = as.todo, at = to.pop(), d = at.it, cid = at.ref && at.ref._.id, v, k, cat, tmp, g;
36
- stun(as, at.ref);
37
- if ((tmp = at.todo)) {
38
- k = tmp.pop();
39
- d = d[k];
40
- if (tmp.length) {
41
- to.push(at);
42
- }
43
- }
44
- k && (to.path || (to.path = [])).push(k);
45
- if (!(v = valid(d)) && !(g = Gun.is(d))) {
46
- if (!Object.plain(d)) {
47
- (as.ack || noop).call(as, (as.out = {
48
- err: (as.err = Gun.log("Invalid data: " +
49
- ((d && (tmp = d.constructor) && tmp.name) || typeof d) +
50
- " at " +
51
- (as.via.back(function (at) {
52
- at.get && tmp.push(at.get);
53
- }, (tmp = [])) || tmp.join(".")) +
54
- "." +
55
- (to.path || []).join("."))),
56
- }));
57
- as.ran(as);
58
- return;
59
- }
60
- var seen = as.seen || (as.seen = []), i = seen.length;
61
- while (i--) {
62
- if (d === (tmp = seen[i]).it) {
63
- v = d = tmp.link;
64
- break;
65
- }
66
- }
67
- }
68
- if (k && v) {
69
- at.node = state_ify(at.node, k, s, d);
70
- } // handle soul later.
71
- else {
72
- as.seen.push((cat = {
73
- it: d,
74
- link: {},
75
- todo: g ? [] : Object.keys(d).sort().reverse(),
76
- path: (to.path || []).slice(),
77
- up: at,
78
- })); // Any perf reasons to CPU schedule this .keys( ?
79
- at.node = state_ify(at.node, k, s, cat.link);
80
- !g && cat.todo.length && to.push(cat);
81
- // ---------------
82
- var id = as.seen.length;
83
- (as.wait || (as.wait = {}))[id] = "";
84
- tmp = (cat.ref = g ? d : k ? at.ref.get(k) : at.ref)._;
85
- (tmp = (d && (d._ || "")["#"]) || tmp.soul || tmp.link)
86
- ? resolve({ soul: tmp })
87
- : cat.ref.get(resolve, {
88
- run: as.run,
89
- /*hatch: 0,*/ v2020: 1,
90
- out: { get: { ".": " " } },
91
- }); // TODO: BUG! This should be resolve ONLY soul to prevent full data from being loaded. // Fixed now?
92
- //setTimeout(function(){ if(F){ return } console.log("I HAVE NOT BEEN CALLED!", path, id, cat.ref._.id, k) }, 9000); var F; // MAKE SURE TO ADD F = 1 below!
93
- function resolve(msg, eve) {
94
- var end = cat.link["#"];
95
- if (eve) {
96
- eve.off();
97
- eve.rid(msg);
98
- } // TODO: Too early! Check all peers ack not found.
99
- // TODO: BUG maybe? Make sure this does not pick up a link change wipe, that it uses the changign link instead.
100
- var soul = end ||
101
- msg.soul ||
102
- (tmp = (msg.$$ || msg.$)._ || "").soul ||
103
- tmp.link ||
104
- ((tmp = tmp.put || "")._ || "")["#"] ||
105
- tmp["#"] ||
106
- ((tmp = msg.put || "") && msg.$$
107
- ? tmp["#"]
108
- : (tmp["="] || tmp[":"] || "")["#"]);
109
- !end && stun(as, msg.$);
110
- if (!soul && !at.link["#"]) {
111
- // check soul link above us
112
- (at.wait || (at.wait = [])).push(function () {
113
- resolve(msg, eve);
114
- }); // wait
115
- return;
116
- }
117
- if (!soul) {
118
- soul = [];
119
- (msg.$$ || msg.$).back(function (at) {
120
- if ((tmp = at.soul || at.link)) {
121
- return soul.push(tmp);
122
- }
123
- soul.push(at.get);
124
- });
125
- soul = soul.reverse().join("/");
126
- }
127
- cat.link["#"] = soul;
128
- !g &&
129
- (((as.graph || (as.graph = {}))[soul] =
130
- cat.node || (cat.node = { _: {} }))._["#"] = soul);
131
- delete as.wait[id];
132
- cat.wait &&
133
- setTimeout.each(cat.wait, function (cb) {
134
- cb && cb();
135
- });
136
- as.ran(as);
137
- }
138
- // ---------------
139
- }
140
- if (!to.length) {
141
- return as.ran(as);
142
- }
143
- as.turn(walk);
144
- })();
145
- return gun;
146
- };
147
- function stun(as, id) {
148
- if (!id) {
149
- return;
150
- }
151
- id = (id._ || "").id || id;
152
- var run = as.root.stun || (as.root.stun = { on: Gun.on }), test = {}, tmp;
153
- as.stun || (as.stun = run.on("stun", function () { }));
154
- if ((tmp = run.on("" + id))) {
155
- tmp.the.last.next(test);
156
- }
157
- if (test.run >= as.run) {
158
- return;
159
- }
160
- run.on("" + id, function (test) {
161
- if (as.stun.end) {
162
- this.off();
163
- this.to.next(test);
164
- return;
165
- }
166
- test.run = test.run || as.run;
167
- test.stun = test.stun || as.stun;
168
- return;
169
- if (this.to.to) {
170
- this.the.last.next(test);
171
- return;
172
- }
173
- test.stun = as.stun;
174
- });
175
- }
176
- function ran(as) {
177
- if (as.err) {
178
- ran.end(as.stun, as.root);
179
- return;
180
- } // move log handle here.
181
- if (as.todo.length || as.end || !Object.empty(as.wait)) {
182
- return;
183
- }
184
- as.end = 1;
185
- var cat = as.$.back(-1)._, root = cat.root, ask = cat.ask(function (ack) {
186
- root.on("ack", ack);
187
- if (ack.err) {
188
- Gun.log(ack);
189
- }
190
- if (++acks > (as.acks || 0)) {
191
- this.off();
192
- } // Adjustable ACKs! Only 1 by default.
193
- if (!as.ack) {
194
- return;
195
- }
196
- as.ack(ack, this);
197
- }, as.opt), acks = 0, stun = as.stun, tmp;
198
- (tmp = function () {
199
- // this is not official yet, but quick solution to hack in for now.
200
- if (!stun) {
201
- return;
202
- }
203
- ran.end(stun, root);
204
- setTimeout.each(Object.keys((stun = stun.add || "")), function (cb) {
205
- if ((cb = stun[cb])) {
206
- cb();
207
- }
208
- }); // resume the stunned reads // Any perf reasons to CPU schedule this .keys( ?
209
- }).hatch = tmp; // this is not official yet ^
210
- //console.log(1, "PUT", as.run, as.graph);
211
- as.via._.on("out", {
212
- put: (as.out = as.graph),
213
- opt: as.opt,
214
- "#": ask,
215
- _: tmp,
216
- });
217
- }
218
- ran.end = function (stun, root) {
219
- stun.end = noop; // like with the earlier id, cheaper to make this flag a function so below callbacks do not have to do an extra type check.
220
- if (stun.the.to === stun && stun === stun.the.last) {
221
- delete root.stun;
222
- }
223
- stun.off();
224
- };
225
- function get(as) {
226
- var at = as.via._, tmp;
227
- as.via = as.via.back(function (at) {
228
- if (at.soul || !at.get) {
229
- return at.$;
230
- }
231
- tmp = as.data;
232
- (as.data = {})[at.get] = tmp;
233
- });
234
- if (!as.via || !as.via._.soul) {
235
- as.via = at.root.$.get(((as.data || "")._ || "")["#"] || at.$.back("opt.uuid")());
236
- }
237
- as.via.put(as.data, as.ack, as);
238
- return;
239
- if (at.get && at.back.soul) {
240
- tmp = as.data;
241
- as.via = at.back.$;
242
- (as.data = {})[at.get] = tmp;
243
- as.via.put(as.data, as.ack, as);
244
- return;
245
- }
246
- }
247
- var u, empty = {}, noop = function () { }, turn = setTimeout.turn, valid = Gun.valid, state_ify = Gun.state.ify;
248
- var iife = function (fn, as) {
249
- fn.call(as || empty);
250
- };
251
- }
252
- exports.default = gunReplacements;
253
- //# sourceMappingURL=gunReplacements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gunReplacements.js","sourceRoot":"","sources":["../src/gunReplacements.ts"],"names":[],"mappings":"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"}