pathchain 1.0.9 → 1.0.11

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
@@ -17,6 +17,7 @@ Maker functions recieve new data to encode into the chain.
17
17
  | [`makeSecret()`](#Secret) | author, format |
18
18
 
19
19
 
20
+
20
21
  ## Getters
21
22
  Getter functions retrieve objects given a hashname and author information
22
23
 
@@ -27,6 +28,8 @@ Getter functions retrieve objects given a hashname and author information
27
28
  | [`getSecret()`](#Secret) | xsecret |
28
29
 
29
30
 
31
+ ---
32
+
30
33
 
31
34
  ## Moment
32
35
 
@@ -86,6 +89,7 @@ Parameter rules:
86
89
  |{float} z |(optional)|
87
90
  |{string} format |(optional)|
88
91
 
92
+
89
93
  Summoning `makeMoment(datetime, lat, lon, x, y, z, format)`:
90
94
  ```javascript
91
95
  const pathchain = require("pathchain"); // Summoning pathchain
@@ -107,6 +111,7 @@ Parameter rules:
107
111
  |{string} xauthor |(optional)|
108
112
  |{string} xmoment |(required)|
109
113
 
114
+
110
115
  Summoning `getMomentObj(xauthor, xmoment)`
111
116
  ```
112
117
  const pathchain = require("pathchain"); // Summoning pathchain
@@ -164,6 +169,7 @@ Parameter rules:
164
169
  |{string} author |(required)|
165
170
  |{string} format |(optional)|
166
171
 
172
+
167
173
  Summoning `makeMoment(author, format)`:
168
174
  ```javascript
169
175
  const pathchain = require("pathchain"); // Summoning pathchain
@@ -184,7 +190,8 @@ Parameter rules:
184
190
  |-------------------------|----------|
185
191
  |{string} xsecret |(required)|
186
192
 
187
- Summoning `useSecret(xsecret)`:
193
+
194
+ Summoning `useSecret(xsecret)` & `isSecretUsed(xsecret)`:
188
195
  ```javascript
189
196
  const pathchain = require("pathchain"); // Summoning pathchain
190
197
 
@@ -224,6 +231,7 @@ Parameter rules:
224
231
  |-------------------------|----------|
225
232
  |{string} xsecret |(optional)|
226
233
 
234
+
227
235
  Summoning `getSecretObj(xsecret)`
228
236
  ```
229
237
  const pathchain = require("pathchain"); // Summoning pathchain
package/checker.js CHANGED
@@ -50,7 +50,7 @@ function checkEmptyDir(dir) {
50
50
  */
51
51
  function isSecretUsed(xsecret) {
52
52
  // DECODING SECRET
53
- var secret_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/secret.proto'))
53
+ var secret_pb = pb(fs.readFileSync('node_modules/pathchain/proto/secret.proto'))
54
54
 
55
55
  // NOT FOUND EXCEPTION
56
56
  var secret_enc;
@@ -68,7 +68,7 @@ function isSecretUsed(xsecret) {
68
68
 
69
69
  if(secret_obj.used == false){
70
70
  return false
71
- }
71
+ }
72
72
  return true;
73
73
  }
74
74
 
package/getter.js CHANGED
@@ -28,7 +28,7 @@ function getMomentObj(xmoment) {
28
28
  }
29
29
 
30
30
  // LOADING PB
31
- var moment_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/moment.proto'))
31
+ var moment_pb = pb(fs.readFileSync('node_modules/pathchain/proto/moment.proto'))
32
32
 
33
33
  // NOT FOUND EXCEPTION
34
34
  var fileContents;
@@ -59,7 +59,7 @@ function getMomentObj(xmoment) {
59
59
  function getPioneerObj(xpioneer) {
60
60
 
61
61
  // LOADING PB
62
- var pioneer_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/entity.proto'))
62
+ var pioneer_pb = pb(fs.readFileSync('node_modules/pathchain/proto/entity.proto'))
63
63
 
64
64
  // NOT FOUND EXCEPTION
65
65
  var fileContents;
@@ -89,23 +89,23 @@ function getPioneerObj(xpioneer) {
89
89
  *
90
90
  * @return void
91
91
  */
92
- function getSecretObj(xsecret) {
92
+ function getSecretObj(xsecret, xauthor) {
93
93
  // "secret/hash" FORMAT EXCEPTION
94
94
  /*if(xsecret.split("/").length > 1){
95
95
  xsecret = xsecret.split("/")[xsecret.length -1]
96
96
  }*/
97
97
 
98
- if(author_folder != ""){
99
- author_folder = author_folder + '/';
98
+ if(xauthor != ""){
99
+ xauthor = xauthor + '/';
100
100
  }
101
101
 
102
102
  // LOADING PB
103
- var secret_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/secret.proto'))
103
+ var secret_pb = pb(fs.readFileSync('node_modules/pathchain/proto/secret.proto'))
104
104
 
105
105
  // NOT FOUND EXCEPTION
106
106
  var fileContents;
107
107
  try {
108
- fileContents = fs.readFileSync("files/" + author_folder + "secrets/" + xsecret);
108
+ fileContents = fs.readFileSync("files/" + xauthor + "secrets/" + xsecret);
109
109
  } catch (err) {
110
110
  if (err.code === 'ENOENT') {
111
111
  return "Secret not found";
package/maker.js CHANGED
@@ -19,7 +19,7 @@ const checker = require("./checker");
19
19
  * @return {string} moment_buffer
20
20
  */
21
21
  function moment(datetime, lat, lon, x, y, z, format) {
22
- var moment_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/moment.proto'));
22
+ var moment_pb = pb(fs.readFileSync('node_modules/pathchain/proto/moment.proto'));
23
23
 
24
24
  var date_obj = dt.preparse(datetime, format);
25
25
  var moment_obj = {
@@ -68,7 +68,7 @@ function secret(author, format) {
68
68
 
69
69
  // There is no pioneer
70
70
  if(checker.checkEmptyDir("files/entities/")){
71
- var secret_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/secret.proto'))
71
+ var secret_pb = pb(fs.readFileSync('node_modules/pathchain/proto/secret.proto'))
72
72
 
73
73
  var register = new Date()
74
74
  register = dt.format(register, dt.compile(format, true));
@@ -112,7 +112,7 @@ function pioneer(xbigbang, format) {
112
112
  // There is no pioneer
113
113
  if(checker.checkEmptyDir("files/entities/")){
114
114
  // CREATING PIONEER
115
- var entity = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/entity.proto'))
115
+ var entity = pb(fs.readFileSync('node_modules/pathchain/proto/entity.proto'))
116
116
 
117
117
  var register = new Date()
118
118
  register = dt.format(register, dt.compile(format, true));
@@ -132,7 +132,7 @@ function pioneer(xbigbang, format) {
132
132
  var buffer = entity.entity.encode({
133
133
  birthday: "moments/"+birthday_moment,
134
134
  register: "moments/"+register_moment_hash,
135
- invite: "entities/"+pioneer_hash, // points to itself as inviting entity in the chain
135
+ invite: "entities/"+pioneer_hash, // points to itself as ancestor entity in the chain
136
136
  tag: "entities/"+pioneer_hash,
137
137
  })
138
138
 
@@ -155,5 +155,55 @@ function pioneer(xbigbang, format) {
155
155
  }
156
156
  }
157
157
 
158
+ /** entity
159
+ * [Entity Protocol Buffer Creation]
160
+ *
161
+ * @param {string} xsecret (required)
162
+ * @param {string} format (optional)
163
+ *
164
+ * @return {string} secret_hash
165
+ */
166
+ function entity(xsecret, format) {
167
+ // "secret/hash" FORMAT EXCEPTION
168
+ /*if(xsecret.split("/").length > 1){
169
+ xsecret = xsecret.split("/")[1]
170
+ }*/
171
+
172
+ checker.checkDir("files/entities/");
173
+ if(checker.checkEmptyDir("files/entities/")){
174
+ return "A pioneer's secret is needed to create the first entity. There was no pioneer, but here is the one at 'files/pioneer/'" + pioneer();
175
+ }
176
+ else{
177
+ if(!checker.isSecretUsed(xsecret)){
178
+ // CREATING entity
179
+ var entity = pb(fs.readFileSync('node_modules/pathchain/proto/entity.proto'))
180
+
181
+ var register = new Date()
182
+ register = dt.format(register, dt.compile(format, true));
183
+
184
+ var register_moment_hash = moment(register, format, 0, 0, 0, 0, 0)
185
+ var ancestor_entity_hash = getter.getSecretObj(xsecret).author;
186
+ // console.log("-> ancestor ENTITY HASH: ", ancestor_entity_hash);
187
+
188
+ var entity_hash = sha256(register_moment_hash + "_" + ancestor_entity_hash);
189
+
190
+
191
+ var buffer = entity.entity.encode({
192
+ register: "moments/"+register_moment_hash,
193
+ invite: ancestor_entity_hash,
194
+ tag: "entities/"+entity_hash,
195
+ })
196
+
197
+ checker.checkDir("files/entities/") // checking
198
+ fs.writeFileSync("files/entities/" + entity_hash, buffer);
199
+
200
+ return "entities/"+entity_hash
201
+ }
202
+ else{
203
+ return "Secret has been already used!"
204
+ }
205
+ }
206
+ }
207
+
158
208
 
159
- module.exports = { moment, pioneer, secret }
209
+ module.exports = { moment, pioneer, secret, entity }
package/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "pathchain",
3
- "version": "1.0.9"
3
+ "version": "1.0.11"
4
4
  }
@@ -2,6 +2,6 @@ syntax = "proto3";
2
2
 
3
3
  message entity {
4
4
  required string register = 1;
5
- required string invite = 2;
5
+ required string ancestor = 2;
6
6
  required string tag = 3;
7
7
  }
@@ -3,6 +3,7 @@ syntax = "proto3";
3
3
  message secret {
4
4
  required string register = 1;
5
5
  required string author = 2;
6
- required bool used = 3;
6
+ required string user = 3;
7
+ required string used = 3;
7
8
  required string tag = 4;
8
9
  }
package/updater.js ADDED
@@ -0,0 +1,48 @@
1
+ var fs = require("fs");
2
+ const maker = require("./maker");
3
+ var pb = require('protocol-buffers');
4
+
5
+ /** useSecret
6
+ * [Function that changes a secret state to used]
7
+ *
8
+ * @param {string} xsecret
9
+ *
10
+ * @return {string} xsecret
11
+ */
12
+ function useSecret(xsecret, xentity){
13
+ // DECODING SECRET
14
+ var secret_pb = pb(fs.readFileSync('node_modules/pathos-proto-infra/proto/secret.proto'))
15
+
16
+ // NOT FOUND EXCEPTION
17
+ var secret_enc;
18
+ try {
19
+ secret_enc = fs.readFileSync("files/secrets/"+xsecret)
20
+ } catch (err) {
21
+ if (err.code === 'ENOENT') {
22
+ return "Secret not found :(";
23
+ } else {
24
+ throw err;
25
+ }
26
+ }
27
+
28
+ var secret_obj = secret_pb.secret.decode(secret_enc)
29
+
30
+ if(secret_obj.used == false){
31
+ // USING INVITE SECRET
32
+ secret_obj.used = true
33
+
34
+ var register = new Date()
35
+ register = dt.format(register, dt.compile(format, true));
36
+
37
+ var register_moment_hash = moment(register, format, 0, 0, 0, 0, 0)
38
+
39
+
40
+
41
+ fs.writeFileSync("files/secrets/" + xsecret, secret_pb.secret.encode(secret_obj));
42
+
43
+ return xsecret;
44
+ }
45
+ return xsecret;
46
+ }
47
+
48
+ module.exports = { useSecret }