@eluvio/elv-client-js 4.0.8 → 4.0.9

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 (40) hide show
  1. package/dist/ElvClient-min.js +10 -11
  2. package/dist/ElvClient-node-min.js +10 -11
  3. package/dist/ElvFrameClient-min.js +10 -11
  4. package/dist/ElvPermissionsClient-min.js +9 -10
  5. package/dist/ElvWalletClient-min.js +10 -11
  6. package/dist/ElvWalletClient-node-min.js +9 -10
  7. package/dist/src/AuthorizationClient.js +2069 -1548
  8. package/dist/src/ContentObjectVerification.js +185 -134
  9. package/dist/src/Crypto.js +323 -226
  10. package/dist/src/ElvClient.js +1118 -824
  11. package/dist/src/ElvWallet.js +106 -64
  12. package/dist/src/EthClient.js +974 -719
  13. package/dist/src/FrameClient.js +318 -222
  14. package/dist/src/HttpClient.js +154 -112
  15. package/dist/src/Id.js +6 -1
  16. package/dist/src/LogMessage.js +8 -4
  17. package/dist/src/PermissionsClient.js +1271 -973
  18. package/dist/src/RemoteSigner.js +232 -161
  19. package/dist/src/UserProfileClient.js +1038 -781
  20. package/dist/src/Utils.js +302 -160
  21. package/dist/src/Validation.js +17 -2
  22. package/dist/src/client/ABRPublishing.js +942 -772
  23. package/dist/src/client/AccessGroups.js +1095 -849
  24. package/dist/src/client/ContentAccess.js +4198 -3272
  25. package/dist/src/client/ContentManagement.js +2284 -1812
  26. package/dist/src/client/Contracts.js +614 -468
  27. package/dist/src/client/Files.js +1831 -1491
  28. package/dist/src/client/NFT.js +116 -94
  29. package/dist/src/client/NTP.js +425 -326
  30. package/dist/src/index.js +5 -2
  31. package/dist/src/walletClient/ClientMethods.js +1766 -1350
  32. package/dist/src/walletClient/Configuration.js +2 -4
  33. package/dist/src/walletClient/Notifications.js +127 -98
  34. package/dist/src/walletClient/Profile.js +246 -184
  35. package/dist/src/walletClient/Utils.js +124 -78
  36. package/dist/src/walletClient/index.js +1498 -1169
  37. package/package.json +1 -1
  38. package/src/client/ContentAccess.js +27 -10
  39. package/src/walletClient/ClientMethods.js +18 -10
  40. package/src/walletClient/index.js +7 -2
@@ -1,139 +1,169 @@
1
1
  var _regeneratorRuntime = require("@babel/runtime/regenerator");
2
+
2
3
  var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
4
+
3
5
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
6
+
4
7
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
6
11
  var CBOR = require("cbor");
12
+
7
13
  var SJCL = require("sjcl");
14
+
8
15
  var MultiHash = require("multihashes");
16
+
9
17
  var DeepEqual = require("deep-equal");
18
+
10
19
  var Utils = require("./Utils");
20
+
11
21
  var ContentObjectVerification = {
12
22
  VerifyContentObject: function VerifyContentObject(_ref) {
13
23
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
14
24
  var client, libraryId, objectId, versionHash, response, partHash, qpartsResponse, partVerification, qmdHash, metadataPartHash, metadataPartResponse, metadataVerification, metadata, qstructHash, structPartHash, structPartResponse, structVerification;
15
25
  return _regeneratorRuntime.wrap(function _callee$(_context) {
16
- while (1) switch (_context.prev = _context.next) {
17
- case 0:
18
- client = _ref.client, libraryId = _ref.libraryId, objectId = _ref.objectId, versionHash = _ref.versionHash;
19
- response = {
20
- hash: versionHash
21
- };
22
- partHash = Utils.DecodeVersionHash(versionHash).partHash;
23
- _context.next = 5;
24
- return client.QParts({
25
- libraryId: libraryId,
26
- objectId: objectId,
27
- partHash: partHash,
28
- format: "arrayBuffer"
29
- }).then(function (response) {
30
- return Buffer.from(response);
31
- });
32
- case 5:
33
- qpartsResponse = _context.sent;
34
- partVerification = ContentObjectVerification._VerifyPart({
35
- partHash: partHash,
36
- qpartsResponse: qpartsResponse
37
- });
38
- if (partVerification.valid) {
39
- response.qref = {
40
- valid: true
41
- };
42
- } else {
43
- response.qref = {
44
- valid: false,
45
- error: partVerification.error.message
46
- };
47
- }
48
- response.qref.hash = partHash;
49
- if (!response.qref.valid) {
50
- _context.next = 32;
51
- break;
52
- }
53
- // Validate Metadata
54
- qmdHash = partVerification.cbor.QmdHash.value;
55
- metadataPartHash = "hqp_" + MultiHash.toB58String(qmdHash.slice(1, qmdHash.length));
56
- _context.next = 14;
57
- return client.QParts({
58
- libraryId: libraryId,
59
- objectId: objectId,
60
- partHash: metadataPartHash,
61
- format: "arrayBuffer"
62
- }).then(function (response) {
63
- return Buffer.from(response);
64
- });
65
- case 14:
66
- metadataPartResponse = _context.sent;
67
- metadataVerification = ContentObjectVerification._VerifyPart({
68
- partHash: metadataPartHash,
69
- qpartsResponse: metadataPartResponse
70
- });
71
- if (metadataVerification.valid) {
72
- response.qmd = {
73
- valid: true
74
- };
75
- } else {
76
- response.qmd = {
77
- valid: false,
78
- error: metadataVerification.error.message
79
- };
80
- }
81
- response.qmd.hash = metadataPartHash;
82
- if (!(response.qmd.valid && libraryId)) {
83
- _context.next = 23;
84
- break;
85
- }
86
- _context.next = 21;
87
- return client.ContentObjectMetadata({
88
- libraryId: libraryId,
89
- objectId: objectId,
90
- versionHash: partHash.replace("hqp_", "hq__")
91
- });
92
- case 21:
93
- metadata = _context.sent;
94
- response.qmd.check = ContentObjectVerification._VerifyMetadata({
95
- metadataCbor: metadataVerification.cbor,
96
- metadata: metadata
97
- });
98
- case 23:
99
- // Validate Qstruct
100
- qstructHash = partVerification.cbor.QstructHash.value;
101
- structPartHash = "hqp_" + MultiHash.toB58String(qstructHash.slice(1, qstructHash.length));
102
- _context.next = 27;
103
- return client.QParts({
104
- libraryId: libraryId,
105
- objectId: objectId,
106
- partHash: structPartHash,
107
- format: "arrayBuffer"
108
- }).then(function (response) {
109
- return Buffer.from(response);
110
- });
111
- case 27:
112
- structPartResponse = _context.sent;
113
- structVerification = ContentObjectVerification._VerifyPart({
114
- partHash: structPartHash,
115
- qpartsResponse: structPartResponse
116
- });
117
- if (structVerification.valid) {
118
- response.qstruct = {
119
- valid: true
120
- };
121
- } else {
122
- response.qstruct = {
123
- valid: false,
124
- error: structVerification.error.message
26
+ while (1) {
27
+ switch (_context.prev = _context.next) {
28
+ case 0:
29
+ client = _ref.client, libraryId = _ref.libraryId, objectId = _ref.objectId, versionHash = _ref.versionHash;
30
+ response = {
31
+ hash: versionHash
125
32
  };
126
- }
127
- response.qstruct.hash = structPartHash;
128
- if (response.qstruct.valid) {
129
- response.qstruct.parts = ContentObjectVerification._FormatQStruct(structVerification.cbor.Parts);
130
- }
131
- case 32:
132
- response.valid = response.qref.valid && response.qmd.valid && response.qstruct.valid && (!response.qmd.check || response.qmd.check.valid);
133
- return _context.abrupt("return", response);
134
- case 34:
135
- case "end":
136
- return _context.stop();
33
+ partHash = Utils.DecodeVersionHash(versionHash).partHash;
34
+ _context.next = 5;
35
+ return client.QParts({
36
+ libraryId: libraryId,
37
+ objectId: objectId,
38
+ partHash: partHash,
39
+ format: "arrayBuffer"
40
+ }).then(function (response) {
41
+ return Buffer.from(response);
42
+ });
43
+
44
+ case 5:
45
+ qpartsResponse = _context.sent;
46
+ partVerification = ContentObjectVerification._VerifyPart({
47
+ partHash: partHash,
48
+ qpartsResponse: qpartsResponse
49
+ });
50
+
51
+ if (partVerification.valid) {
52
+ response.qref = {
53
+ valid: true
54
+ };
55
+ } else {
56
+ response.qref = {
57
+ valid: false,
58
+ error: partVerification.error.message
59
+ };
60
+ }
61
+
62
+ response.qref.hash = partHash;
63
+
64
+ if (!response.qref.valid) {
65
+ _context.next = 32;
66
+ break;
67
+ }
68
+
69
+ // Validate Metadata
70
+ qmdHash = partVerification.cbor.QmdHash.value;
71
+ metadataPartHash = "hqp_" + MultiHash.toB58String(qmdHash.slice(1, qmdHash.length));
72
+ _context.next = 14;
73
+ return client.QParts({
74
+ libraryId: libraryId,
75
+ objectId: objectId,
76
+ partHash: metadataPartHash,
77
+ format: "arrayBuffer"
78
+ }).then(function (response) {
79
+ return Buffer.from(response);
80
+ });
81
+
82
+ case 14:
83
+ metadataPartResponse = _context.sent;
84
+ metadataVerification = ContentObjectVerification._VerifyPart({
85
+ partHash: metadataPartHash,
86
+ qpartsResponse: metadataPartResponse
87
+ });
88
+
89
+ if (metadataVerification.valid) {
90
+ response.qmd = {
91
+ valid: true
92
+ };
93
+ } else {
94
+ response.qmd = {
95
+ valid: false,
96
+ error: metadataVerification.error.message
97
+ };
98
+ }
99
+
100
+ response.qmd.hash = metadataPartHash;
101
+
102
+ if (!(response.qmd.valid && libraryId)) {
103
+ _context.next = 23;
104
+ break;
105
+ }
106
+
107
+ _context.next = 21;
108
+ return client.ContentObjectMetadata({
109
+ libraryId: libraryId,
110
+ objectId: objectId,
111
+ versionHash: partHash.replace("hqp_", "hq__")
112
+ });
113
+
114
+ case 21:
115
+ metadata = _context.sent;
116
+ response.qmd.check = ContentObjectVerification._VerifyMetadata({
117
+ metadataCbor: metadataVerification.cbor,
118
+ metadata: metadata
119
+ });
120
+
121
+ case 23:
122
+ // Validate Qstruct
123
+ qstructHash = partVerification.cbor.QstructHash.value;
124
+ structPartHash = "hqp_" + MultiHash.toB58String(qstructHash.slice(1, qstructHash.length));
125
+ _context.next = 27;
126
+ return client.QParts({
127
+ libraryId: libraryId,
128
+ objectId: objectId,
129
+ partHash: structPartHash,
130
+ format: "arrayBuffer"
131
+ }).then(function (response) {
132
+ return Buffer.from(response);
133
+ });
134
+
135
+ case 27:
136
+ structPartResponse = _context.sent;
137
+ structVerification = ContentObjectVerification._VerifyPart({
138
+ partHash: structPartHash,
139
+ qpartsResponse: structPartResponse
140
+ });
141
+
142
+ if (structVerification.valid) {
143
+ response.qstruct = {
144
+ valid: true
145
+ };
146
+ } else {
147
+ response.qstruct = {
148
+ valid: false,
149
+ error: structVerification.error.message
150
+ };
151
+ }
152
+
153
+ response.qstruct.hash = structPartHash;
154
+
155
+ if (response.qstruct.valid) {
156
+ response.qstruct.parts = ContentObjectVerification._FormatQStruct(structVerification.cbor.Parts);
157
+ }
158
+
159
+ case 32:
160
+ response.valid = response.qref.valid && response.qmd.valid && response.qstruct.valid && (!response.qmd.check || response.qmd.check.valid);
161
+ return _context.abrupt("return", response);
162
+
163
+ case 34:
164
+ case "end":
165
+ return _context.stop();
166
+ }
137
167
  }
138
168
  }, _callee);
139
169
  }))();
@@ -143,6 +173,7 @@ var ContentObjectVerification = {
143
173
  if (!structParts) {
144
174
  return [];
145
175
  }
176
+
146
177
  return structParts.map(function (structPart) {
147
178
  return {
148
179
  hash: "hqp_" + MultiHash.toB58String(structPart.Hash.value.slice(1, structPart.Hash.length)),
@@ -153,34 +184,43 @@ var ContentObjectVerification = {
153
184
  _Hash: function _Hash(thing) {
154
185
  function fromBits(arr) {
155
186
  var out = [],
156
- bl = SJCL.bitArray.bitLength(arr),
157
- i,
158
- tmp;
187
+ bl = SJCL.bitArray.bitLength(arr),
188
+ i,
189
+ tmp;
190
+
159
191
  for (i = 0; i < bl / 8; i++) {
160
192
  if ((i & 3) === 0) {
161
193
  tmp = arr[i / 4];
162
194
  }
195
+
163
196
  out.push(tmp >>> 24);
164
197
  tmp <<= 8;
165
198
  }
199
+
166
200
  return out;
167
201
  }
202
+
168
203
  function toBits(bytes) {
169
204
  var out = [],
170
- i,
171
- tmp = 0;
205
+ i,
206
+ tmp = 0;
207
+
172
208
  for (i = 0; i < bytes.length; i++) {
173
209
  tmp = tmp << 8 | bytes[i];
210
+
174
211
  if ((i & 3) === 3) {
175
212
  out.push(tmp);
176
213
  tmp = 0;
177
214
  }
178
215
  }
216
+
179
217
  if (i & 3) {
180
218
  out.push(SJCL.bitArray.partial(8 * (i & 3), tmp));
181
219
  }
220
+
182
221
  return out;
183
222
  }
223
+
184
224
  var digest = SJCL.hash.sha256.hash(toBits(thing));
185
225
  var bytes = fromBits(digest);
186
226
  var out = Buffer.from(bytes, "binary");
@@ -193,12 +233,15 @@ var ContentObjectVerification = {
193
233
  },
194
234
  _VerifyPart: function _VerifyPart(_ref2) {
195
235
  var partHash = _ref2.partHash,
196
- qpartsResponse = _ref2.qpartsResponse;
236
+ qpartsResponse = _ref2.qpartsResponse;
237
+
197
238
  try {
198
239
  if (ContentObjectVerification._Hash(qpartsResponse) !== partHash.replace("hqp_", "")) {
199
240
  throw Error("Hashes do not match");
200
241
  }
242
+
201
243
  var cbor = ContentObjectVerification._ParseCBOR(qpartsResponse);
244
+
202
245
  return {
203
246
  valid: true,
204
247
  cbor: cbor
@@ -212,28 +255,32 @@ var ContentObjectVerification = {
212
255
  },
213
256
  _VerifyMetadata: function _VerifyMetadata(_ref3) {
214
257
  var metadataCbor = _ref3.metadataCbor,
215
- metadata = _ref3.metadata;
258
+ metadata = _ref3.metadata;
259
+
216
260
  if (!metadataCbor) {
217
261
  metadataCbor = {};
218
262
  }
263
+
219
264
  if (!metadata) {
220
265
  metadata = {};
221
266
  }
267
+
222
268
  var response = {
223
269
  valid: true,
224
270
  invalidValues: []
225
271
  };
226
272
  var cborKeys = Object.keys(metadataCbor);
227
- var metadataKeys = Object.keys(metadata);
273
+ var metadataKeys = Object.keys(metadata); // Find any difference between top level keys
228
274
 
229
- // Find any difference between top level keys
230
275
  var differentKeys = cborKeys.filter(function (x) {
231
276
  return !metadataKeys.includes(x);
232
277
  }).concat(metadataKeys.filter(function (x) {
233
278
  return !cborKeys.includes(x);
234
279
  }));
280
+
235
281
  var _iterator = _createForOfIteratorHelper(differentKeys),
236
- _step;
282
+ _step;
283
+
237
284
  try {
238
285
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
239
286
  var key = _step.value;
@@ -244,21 +291,23 @@ var ContentObjectVerification = {
244
291
  cborValue: cborValue,
245
292
  metadataValue: metadataValue
246
293
  });
247
- }
294
+ } // Deep comparison of up to 5 keys
248
295
 
249
- // Deep comparison of up to 5 keys
250
296
  } catch (err) {
251
297
  _iterator.e(err);
252
298
  } finally {
253
299
  _iterator.f();
254
300
  }
301
+
255
302
  var _iterator2 = _createForOfIteratorHelper(Object.keys(metadataCbor).slice(0, 5)),
256
- _step2;
303
+ _step2;
304
+
257
305
  try {
258
306
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
259
307
  var fieldToValidate = _step2.value;
260
308
  var _cborValue = metadataCbor[fieldToValidate];
261
309
  var _metadataValue = metadata[fieldToValidate];
310
+
262
311
  if (!DeepEqual(_cborValue, _metadataValue)) {
263
312
  response.invalidValues.push({
264
313
  key: fieldToValidate,
@@ -272,9 +321,11 @@ var ContentObjectVerification = {
272
321
  } finally {
273
322
  _iterator2.f();
274
323
  }
324
+
275
325
  if (response.invalidValues.length !== 0) {
276
326
  response.valid = false;
277
327
  }
328
+
278
329
  return response;
279
330
  }
280
331
  };