@eluvio/elv-client-js 4.2.10 → 4.2.12

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 +1 -1
  2. package/dist/ElvClient-node-min.js +1 -1
  3. package/dist/ElvFrameClient-min.js +1 -1
  4. package/dist/ElvPermissionsClient-min.js +1 -1
  5. package/dist/ElvWalletClient-min.js +1 -1
  6. package/dist/ElvWalletClient-node-min.js +1 -1
  7. package/dist/src/AuthorizationClient.js +723 -710
  8. package/dist/src/ContentObjectAudit.js +56 -56
  9. package/dist/src/ContentObjectVerification.js +281 -0
  10. package/dist/src/Crypto.js +85 -85
  11. package/dist/src/ElvClient.js +500 -530
  12. package/dist/src/ElvWallet.js +28 -30
  13. package/dist/src/EthClient.js +311 -311
  14. package/dist/src/FrameClient.js +64 -63
  15. package/dist/src/HttpClient.js +60 -60
  16. package/dist/src/Id.js +2 -1
  17. package/dist/src/PermissionsClient.js +487 -499
  18. package/dist/src/RemoteSigner.js +163 -114
  19. package/dist/src/UserProfileClient.js +374 -392
  20. package/dist/src/Utils.js +66 -69
  21. package/dist/src/Validation.js +10 -10
  22. package/dist/src/client/ABRPublishing.js +238 -238
  23. package/dist/src/client/AccessGroups.js +474 -477
  24. package/dist/src/client/ContentAccess.js +1709 -1705
  25. package/dist/src/client/ContentManagement.js +871 -871
  26. package/dist/src/client/Contracts.js +578 -575
  27. package/dist/src/client/Files.js +684 -700
  28. package/dist/src/client/LiveConf.js +6 -1
  29. package/dist/src/client/LiveStream.js +686 -722
  30. package/dist/src/client/NFT.js +14 -14
  31. package/dist/src/client/NTP.js +84 -84
  32. package/dist/src/client/Shares.js +60 -53
  33. package/dist/src/walletClient/ClientMethods.js +951 -977
  34. package/dist/src/walletClient/Notifications.js +14 -14
  35. package/dist/src/walletClient/Profile.js +66 -66
  36. package/dist/src/walletClient/Utils.js +15 -15
  37. package/dist/src/walletClient/index.js +581 -579
  38. package/package.json +1 -1
  39. package/src/client/LiveConf.js +5 -1
  40. package/src/client/LiveStream.js +9 -38
@@ -11,9 +11,9 @@ var _require = require("./Validation"),
11
11
  ValidateParameters = _require.ValidateParameters;
12
12
  var ContentObjectAudit = {
13
13
  AuditContentObject: function AuditContentObject(_ref) {
14
- return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
15
- var client, libraryId, objectId, versionHash, salt, samples, _ref$live, live, authorizationToken, queryParams, uris, httpClient, path, responses, auditHash, verified, audits, _iterator, _step, response, url, audit, res, _t, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0, _t1;
16
- return _regeneratorRuntime.wrap(function (_context) {
14
+ return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
15
+ var client, libraryId, objectId, versionHash, salt, samples, _ref$live, live, authorizationToken, queryParams, uris, httpClient, path, responses, auditHash, verified, audits, _iterator, _step, response, url, audit, res;
16
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
17
17
  while (1) switch (_context.prev = _context.next) {
18
18
  case 0:
19
19
  client = _ref.client, libraryId = _ref.libraryId, objectId = _ref.objectId, versionHash = _ref.versionHash, salt = _ref.salt, samples = _ref.samples, _ref$live = _ref.live, live = _ref$live === void 0 ? false : _ref$live, authorizationToken = _ref.authorizationToken;
@@ -30,16 +30,16 @@ var ContentObjectAudit = {
30
30
  objectId = client.utils.DecodeVersionHash(versionHash).objectId;
31
31
  }
32
32
  if (libraryId) {
33
- _context.next = 2;
33
+ _context.next = 9;
34
34
  break;
35
35
  }
36
- _context.next = 1;
36
+ _context.next = 8;
37
37
  return client.ContentObjectLibraryId({
38
38
  objectId: objectId
39
39
  });
40
- case 1:
40
+ case 8:
41
41
  libraryId = _context.sent;
42
- case 2:
42
+ case 9:
43
43
  ValidateParameters({
44
44
  libraryId: libraryId,
45
45
  objectId: objectId,
@@ -54,64 +54,64 @@ var ContentObjectAudit = {
54
54
  }
55
55
 
56
56
  // Test against the node the client is currently using, plus a batch of fresh nodes
57
- _t = [client.HttpClient.uris[client.HttpClient.uriIndex]];
58
- _t2 = _toConsumableArray;
59
- _context.next = 3;
57
+ _context.t0 = [client.HttpClient.uris[client.HttpClient.uriIndex]];
58
+ _context.t1 = _toConsumableArray;
59
+ _context.next = 16;
60
60
  return client.Configuration({
61
61
  configUrl: client.configUrl,
62
62
  clientIP: client.clientIP,
63
63
  region: client.region
64
64
  });
65
- case 3:
66
- _t3 = _context.sent.fabricURIs;
67
- _t4 = _t2(_t3);
68
- uris = _t.concat.call(_t, _t4).filter(function (v, i, s) {
65
+ case 16:
66
+ _context.t2 = _context.sent.fabricURIs;
67
+ _context.t3 = (0, _context.t1)(_context.t2);
68
+ uris = _context.t0.concat.call(_context.t0, _context.t3).filter(function (v, i, s) {
69
69
  return s.indexOf(v) === i;
70
70
  });
71
71
  httpClient = new HttpClient({
72
72
  uris: uris
73
73
  });
74
74
  path = UrlJoin("qlibs", libraryId, "q", versionHash || objectId, live ? "call/live/audit" : "audit");
75
- _t5 = httpClient;
75
+ _context.t4 = httpClient;
76
76
  if (!authorizationToken) {
77
- _context.next = 4;
77
+ _context.next = 26;
78
78
  break;
79
79
  }
80
- _t6 = {
80
+ _context.t5 = {
81
81
  Authorization: "Bearer ".concat(authorizationToken)
82
82
  };
83
- _context.next = 6;
83
+ _context.next = 29;
84
84
  break;
85
- case 4:
86
- _context.next = 5;
85
+ case 26:
86
+ _context.next = 28;
87
87
  return client.authClient.AuthorizationHeader({
88
88
  libraryId: libraryId,
89
89
  objectId: objectId,
90
90
  versionHash: versionHash
91
91
  });
92
- case 5:
93
- _t6 = _context.sent;
94
- case 6:
95
- _t7 = _t6;
96
- _t8 = queryParams;
97
- _t9 = path;
98
- _t0 = {
99
- headers: _t7,
100
- queryParams: _t8,
92
+ case 28:
93
+ _context.t5 = _context.sent;
94
+ case 29:
95
+ _context.t6 = _context.t5;
96
+ _context.t7 = queryParams;
97
+ _context.t8 = path;
98
+ _context.t9 = {
99
+ headers: _context.t6,
100
+ queryParams: _context.t7,
101
101
  method: "GET",
102
- path: _t9
102
+ path: _context.t8
103
103
  };
104
- _context.next = 7;
105
- return _t5.RequestAll.call(_t5, _t0);
106
- case 7:
104
+ _context.next = 35;
105
+ return _context.t4.RequestAll.call(_context.t4, _context.t9);
106
+ case 35:
107
107
  responses = _context.sent;
108
108
  audits = [];
109
109
  _iterator = _createForOfIteratorHelper(responses);
110
- _context.prev = 8;
110
+ _context.prev = 38;
111
111
  _iterator.s();
112
- case 9:
112
+ case 40:
113
113
  if ((_step = _iterator.n()).done) {
114
- _context.next = 14;
114
+ _context.next = 57;
115
115
  break;
116
116
  }
117
117
  response = _step.value;
@@ -120,17 +120,17 @@ var ContentObjectAudit = {
120
120
  host: url.hostname
121
121
  };
122
122
  if (response.ok) {
123
- _context.next = 10;
123
+ _context.next = 49;
124
124
  break;
125
125
  }
126
126
  audit.error = response;
127
127
  audit.errorMessage = response.message || JSON.stringify(response);
128
- _context.next = 12;
128
+ _context.next = 54;
129
129
  break;
130
- case 10:
131
- _context.next = 11;
130
+ case 49:
131
+ _context.next = 51;
132
132
  return client.utils.ResponseToJson(response);
133
- case 11:
133
+ case 51:
134
134
  res = _context.sent;
135
135
  if (auditHash === undefined) {
136
136
  auditHash = res.audit_hash;
@@ -140,23 +140,23 @@ var ContentObjectAudit = {
140
140
  verified = true;
141
141
  }
142
142
  audit.audit_hash = res.audit_hash;
143
- case 12:
143
+ case 54:
144
144
  audits.push(audit);
145
- case 13:
146
- _context.next = 9;
145
+ case 55:
146
+ _context.next = 40;
147
147
  break;
148
- case 14:
149
- _context.next = 16;
148
+ case 57:
149
+ _context.next = 62;
150
150
  break;
151
- case 15:
152
- _context.prev = 15;
153
- _t1 = _context["catch"](8);
154
- _iterator.e(_t1);
155
- case 16:
156
- _context.prev = 16;
151
+ case 59:
152
+ _context.prev = 59;
153
+ _context.t10 = _context["catch"](38);
154
+ _iterator.e(_context.t10);
155
+ case 62:
156
+ _context.prev = 62;
157
157
  _iterator.f();
158
- return _context.finish(16);
159
- case 17:
158
+ return _context.finish(62);
159
+ case 65:
160
160
  verified = verified || false;
161
161
  return _context.abrupt("return", {
162
162
  verified: verified,
@@ -164,11 +164,11 @@ var ContentObjectAudit = {
164
164
  samples: samples,
165
165
  audits: audits
166
166
  });
167
- case 18:
167
+ case 67:
168
168
  case "end":
169
169
  return _context.stop();
170
170
  }
171
- }, _callee, null, [[8, 15, 16, 17]]);
171
+ }, _callee, null, [[38, 59, 62, 65]]);
172
172
  }))();
173
173
  }
174
174
  };
@@ -0,0 +1,281 @@
1
+ var _regeneratorRuntime = require("@babel/runtime/regenerator");
2
+ var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
3
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6
+ var CBOR = require("cbor");
7
+ var SJCL = require("sjcl");
8
+ var MultiHash = require("multihashes");
9
+ var DeepEqual = require("deep-equal");
10
+ var Utils = require("./Utils");
11
+ var ContentObjectVerification = {
12
+ VerifyContentObject: function VerifyContentObject(_ref) {
13
+ return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
14
+ var client, libraryId, objectId, versionHash, response, partHash, qpartsResponse, partVerification, qmdHash, metadataPartHash, metadataPartResponse, metadataVerification, metadata, qstructHash, structPartHash, structPartResponse, structVerification;
15
+ 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
125
+ };
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();
137
+ }
138
+ }, _callee);
139
+ }))();
140
+ },
141
+ // Content verification methods //
142
+ _FormatQStruct: function _FormatQStruct(structParts) {
143
+ if (!structParts) {
144
+ return [];
145
+ }
146
+ return structParts.map(function (structPart) {
147
+ return {
148
+ hash: "hqp_" + MultiHash.toB58String(structPart.Hash.value.slice(1, structPart.Hash.length)),
149
+ size: structPart.Size
150
+ };
151
+ });
152
+ },
153
+ _Hash: function _Hash(thing) {
154
+ function fromBits(arr) {
155
+ var out = [],
156
+ bl = SJCL.bitArray.bitLength(arr),
157
+ i,
158
+ tmp;
159
+ for (i = 0; i < bl / 8; i++) {
160
+ if ((i & 3) === 0) {
161
+ tmp = arr[i / 4];
162
+ }
163
+ out.push(tmp >>> 24);
164
+ tmp <<= 8;
165
+ }
166
+ return out;
167
+ }
168
+ function toBits(bytes) {
169
+ var out = [],
170
+ i,
171
+ tmp = 0;
172
+ for (i = 0; i < bytes.length; i++) {
173
+ tmp = tmp << 8 | bytes[i];
174
+ if ((i & 3) === 3) {
175
+ out.push(tmp);
176
+ tmp = 0;
177
+ }
178
+ }
179
+ if (i & 3) {
180
+ out.push(SJCL.bitArray.partial(8 * (i & 3), tmp));
181
+ }
182
+ return out;
183
+ }
184
+ var digest = SJCL.hash.sha256.hash(toBits(thing));
185
+ var bytes = fromBits(digest);
186
+ var out = Buffer.from(bytes, "binary");
187
+ return MultiHash.toB58String(MultiHash.encode(out, "sha2-256"));
188
+ },
189
+ _ParseCBOR: function _ParseCBOR(cborResponse) {
190
+ var buffer = cborResponse.slice(7, cborResponse.length);
191
+ var hex = buffer.toString("hex");
192
+ return CBOR.decodeFirstSync(hex);
193
+ },
194
+ _VerifyPart: function _VerifyPart(_ref2) {
195
+ var partHash = _ref2.partHash,
196
+ qpartsResponse = _ref2.qpartsResponse;
197
+ try {
198
+ if (ContentObjectVerification._Hash(qpartsResponse) !== partHash.replace("hqp_", "")) {
199
+ throw Error("Hashes do not match");
200
+ }
201
+ var cbor = ContentObjectVerification._ParseCBOR(qpartsResponse);
202
+ return {
203
+ valid: true,
204
+ cbor: cbor
205
+ };
206
+ } catch (error) {
207
+ return {
208
+ valid: false,
209
+ error: error
210
+ };
211
+ }
212
+ },
213
+ _VerifyMetadata: function _VerifyMetadata(_ref3) {
214
+ var metadataCbor = _ref3.metadataCbor,
215
+ metadata = _ref3.metadata;
216
+ if (!metadataCbor) {
217
+ metadataCbor = {};
218
+ }
219
+ if (!metadata) {
220
+ metadata = {};
221
+ }
222
+ var response = {
223
+ valid: true,
224
+ invalidValues: []
225
+ };
226
+ var cborKeys = Object.keys(metadataCbor);
227
+ var metadataKeys = Object.keys(metadata);
228
+
229
+ // Find any difference between top level keys
230
+ var differentKeys = cborKeys.filter(function (x) {
231
+ return !metadataKeys.includes(x);
232
+ }).concat(metadataKeys.filter(function (x) {
233
+ return !cborKeys.includes(x);
234
+ }));
235
+ var _iterator = _createForOfIteratorHelper(differentKeys),
236
+ _step;
237
+ try {
238
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
239
+ var key = _step.value;
240
+ var cborValue = metadataCbor[key];
241
+ var metadataValue = metadata[key];
242
+ response.invalidValues.push({
243
+ key: key,
244
+ cborValue: cborValue,
245
+ metadataValue: metadataValue
246
+ });
247
+ }
248
+
249
+ // Deep comparison of up to 5 keys
250
+ } catch (err) {
251
+ _iterator.e(err);
252
+ } finally {
253
+ _iterator.f();
254
+ }
255
+ var _iterator2 = _createForOfIteratorHelper(Object.keys(metadataCbor).slice(0, 5)),
256
+ _step2;
257
+ try {
258
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
259
+ var fieldToValidate = _step2.value;
260
+ var _cborValue = metadataCbor[fieldToValidate];
261
+ var _metadataValue = metadata[fieldToValidate];
262
+ if (!DeepEqual(_cborValue, _metadataValue)) {
263
+ response.invalidValues.push({
264
+ key: fieldToValidate,
265
+ cborValue: _cborValue,
266
+ metadataValue: _metadataValue
267
+ });
268
+ }
269
+ }
270
+ } catch (err) {
271
+ _iterator2.e(err);
272
+ } finally {
273
+ _iterator2.f();
274
+ }
275
+ if (response.invalidValues.length !== 0) {
276
+ response.valid = false;
277
+ }
278
+ return response;
279
+ }
280
+ };
281
+ module.exports = ContentObjectVerification;