@eluvio/elv-client-js 3.2.45 → 4.0.1

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 (37) hide show
  1. package/dist/ElvClient-min.js +17 -9
  2. package/dist/ElvClient-node-min.js +12 -25
  3. package/dist/ElvFrameClient-min.js +17 -9
  4. package/dist/ElvPermissionsClient-min.js +16 -8
  5. package/dist/ElvWalletClient-min.js +17 -9
  6. package/dist/ElvWalletClient-node-min.js +12 -25
  7. package/dist/src/AuthorizationClient.js +6 -6
  8. package/dist/src/ElvClient.js +24 -14
  9. package/dist/src/ElvWallet.js +1 -3
  10. package/dist/src/EthClient.js +21 -12
  11. package/dist/src/FrameClient.js +10 -7
  12. package/dist/src/HttpClient.js +7 -6
  13. package/dist/src/client/ContentAccess.js +3 -3
  14. package/dist/src/client/ContentManagement.js +15 -12
  15. package/dist/src/client/Contracts.js +1 -1
  16. package/package.json +2 -2
  17. package/src/AuthorizationClient.js +6 -6
  18. package/src/ElvClient.js +16 -5
  19. package/src/ElvWallet.js +1 -3
  20. package/src/EthClient.js +19 -10
  21. package/src/FrameClient.js +10 -2
  22. package/src/HttpClient.js +7 -5
  23. package/src/client/ContentAccess.js +3 -3
  24. package/src/client/ContentManagement.js +7 -5
  25. package/src/client/Contracts.js +1 -1
  26. package/testScripts/Test.js +7 -36
  27. package/testScripts/abr_profile_both.json +4 -4
  28. package/testScripts/abr_profile_clear_store_encrypted.json +4 -4
  29. package/testScripts/abr_profile_clear_store_unencrypted.json +4 -4
  30. package/testScripts/abr_profile_drm.json +4 -4
  31. package/utilities/example_files/abr_profile_both.json +4 -4
  32. package/utilities/example_files/abr_profile_clear_hls_only_store_encrypted.json +4 -4
  33. package/utilities/example_files/abr_profile_clear_hls_only_store_unencrypted.json +4 -4
  34. package/utilities/example_files/abr_profile_clear_store_encrypted.json +4 -4
  35. package/utilities/example_files/abr_profile_clear_store_unencrypted.json +4 -4
  36. package/utilities/example_files/abr_profile_drm.json +4 -4
  37. package/utilities/example_files/abr_profile_drm_hls_only.json +4 -4
package/src/ElvClient.js CHANGED
@@ -130,7 +130,8 @@ class ElvClient {
130
130
  * @param {number} fabricVersion - The version of the target content fabric
131
131
  * @param {Array<string>} fabricURIs - A list of full URIs to content fabric nodes
132
132
  * @param {Array<string>} ethereumURIs - A list of full URIs to ethereum nodes
133
- * @param {Array<string>} ethereumURIs - A list of full URIs to auth service endpoints
133
+ * @param {Array<string>} authServiceURIs - A list of full URIs to auth service endpoints
134
+ * @param {Array<string>=} searchURIs - A list of full URIs to search service endpoints
134
135
  * @param {number=} ethereumContractTimeout=10 - Number of seconds to wait for contract calls
135
136
  * @param {string=} trustAuthorityId - (OAuth) The ID of the trust authority to use for OAuth authentication
136
137
  * @param {string=} staticToken - Static token that will be used for all authorization in place of normal auth
@@ -147,6 +148,7 @@ class ElvClient {
147
148
  fabricURIs,
148
149
  ethereumURIs,
149
150
  authServiceURIs,
151
+ searchURIs,
150
152
  ethereumContractTimeout = 10,
151
153
  trustAuthorityId,
152
154
  staticToken,
@@ -169,6 +171,7 @@ class ElvClient {
169
171
  this.fabricURIs = fabricURIs;
170
172
  this.authServiceURIs = authServiceURIs;
171
173
  this.ethereumURIs = ethereumURIs;
174
+ this.searchURIs = searchURIs;
172
175
  this.ethereumContractTimeout = ethereumContractTimeout;
173
176
 
174
177
  this.trustAuthorityId = trustAuthorityId;
@@ -230,6 +233,8 @@ class ElvClient {
230
233
  authServiceURIs = authServiceURIs.filter(filterHTTPS);
231
234
  }
232
235
 
236
+ const searchURIs = fabricInfo.network.services.search || [];
237
+
233
238
  const fabricVersion = Math.max(...(fabricInfo.network.api_versions || [2]));
234
239
 
235
240
  return {
@@ -241,6 +246,7 @@ class ElvClient {
241
246
  ethereumURIs,
242
247
  authServiceURIs,
243
248
  kmsURIs: kmsUrls,
249
+ searchURIs,
244
250
  fabricVersion
245
251
  };
246
252
  } catch(error) {
@@ -326,6 +332,7 @@ class ElvClient {
326
332
  fabricURIs,
327
333
  ethereumURIs,
328
334
  authServiceURIs,
335
+ searchURIs,
329
336
  fabricVersion
330
337
  } = await ElvClient.Configuration({
331
338
  configUrl,
@@ -340,6 +347,7 @@ class ElvClient {
340
347
  fabricURIs,
341
348
  ethereumURIs,
342
349
  authServiceURIs,
350
+ searchURIs,
343
351
  ethereumContractTimeout,
344
352
  trustAuthorityId,
345
353
  staticToken,
@@ -421,7 +429,7 @@ class ElvClient {
421
429
  throw Error("Unable to change region: Configuration URL not set");
422
430
  }
423
431
 
424
- const {fabricURIs, ethereumURIs, authServiceURIs} = await ElvClient.Configuration({
432
+ const {fabricURIs, ethereumURIs, authServiceURIs, searchURIs} = await ElvClient.Configuration({
425
433
  configUrl: this.configUrl,
426
434
  region
427
435
  });
@@ -429,6 +437,7 @@ class ElvClient {
429
437
  this.authServiceURIs = authServiceURIs;
430
438
  this.fabricURIs = fabricURIs;
431
439
  this.ethereumURIs = ethereumURIs;
440
+ this.searchURIs = searchURIs;
432
441
 
433
442
  this.HttpClient.uris = fabricURIs;
434
443
  this.HttpClient.uriIndex = 0;
@@ -438,7 +447,8 @@ class ElvClient {
438
447
 
439
448
  return {
440
449
  fabricURIs,
441
- ethereumURIs
450
+ ethereumURIs,
451
+ searchURIs
442
452
  };
443
453
  }
444
454
 
@@ -998,7 +1008,7 @@ class ElvClient {
998
1008
 
999
1009
  ValidatePresence("message", message);
1000
1010
 
1001
- return await this.Crypto.EncryptConk(message, publicKey || this.signer.signingKey.keyPair.publicKey);
1011
+ return await this.Crypto.EncryptConk(message, publicKey || this.signer._signingKey().publicKey);
1002
1012
  }
1003
1013
 
1004
1014
  /**
@@ -1016,7 +1026,7 @@ class ElvClient {
1016
1026
 
1017
1027
  ValidatePresence("message", message);
1018
1028
 
1019
- return await this.Crypto.DecryptCap(message, this.signer.signingKey.privateKey);
1029
+ return await this.Crypto.DecryptCap(message, this.signer._signingKey().privateKey);
1020
1030
  }
1021
1031
 
1022
1032
  /**
@@ -1061,6 +1071,7 @@ class ElvClient {
1061
1071
  "GenerateWallet",
1062
1072
  "InitializeClients",
1063
1073
  "Log",
1074
+ "PersonalSign",
1064
1075
  "SetRemoteSigner",
1065
1076
  "SetSigner",
1066
1077
  "SetSignerFromWeb3Provider",
package/src/ElvWallet.js CHANGED
@@ -7,8 +7,6 @@ class ElvWallet {
7
7
  * NOTE: It is recommended to initialize wallets from the ElvClient, not using this constructor
8
8
  *
9
9
  * @see ElvClient#GenerateWallet()
10
- *
11
- * @param {string} providerUrl - URL of blockchain provider
12
10
  */
13
11
  constructor(provider) {
14
12
  this.provider = provider;
@@ -21,7 +19,7 @@ class ElvWallet {
21
19
  * @returns {string} - Space-separated list of random words
22
20
  */
23
21
  GenerateMnemonic() {
24
- return Ethers.utils.HDNode.entropyToMnemonic(Ethers.utils.randomBytes(16));
22
+ return Ethers.Wallet.createRandom().mnemonic.phrase;
25
23
  }
26
24
 
27
25
  /**
package/src/EthClient.js CHANGED
@@ -39,7 +39,7 @@ class EthClient {
39
39
  // HTTP client for making misc calls to elv-master
40
40
  this.HttpClient = new HttpClient({uris: this.ethereumURIs, debug: this.debug});
41
41
 
42
- Ethers.errors.setLogLevel("error");
42
+ //Ethers.errors.setLogLevel("error");
43
43
  }
44
44
 
45
45
  SetEthereumURIs(uris) {
@@ -234,7 +234,7 @@ class EthClient {
234
234
 
235
235
  contract = contract || this.Contract({contractAddress, abi, cacheContract, overrideCachedContract});
236
236
 
237
- abi = contract.interface.abi;
237
+ abi = contract.interface.fragments;
238
238
 
239
239
  // Automatically format contract arguments
240
240
  if(formatArguments) {
@@ -262,7 +262,7 @@ class EthClient {
262
262
  Args: [${methodArgs.join(", ")}]`
263
263
  );
264
264
 
265
- const methodAbi = contract.interface.abi.find(method => method.name === methodName);
265
+ const methodAbi = contract.interface.fragments.find(method => method.name === methodName);
266
266
 
267
267
  // Lock if performing a transaction
268
268
  if(!methodAbi || !methodAbi.constant) {
@@ -278,7 +278,7 @@ class EthClient {
278
278
  let success = false;
279
279
  while(!success) {
280
280
  try {
281
- result = await contract.functions[methodName](...methodArgs, overrides);
281
+ result = await contract[methodName](...methodArgs, overrides);
282
282
  success = true;
283
283
  } catch(error) {
284
284
  if(error.code === -32000 || error.code === "REPLACEMENT_UNDERPRICED") {
@@ -343,9 +343,15 @@ class EthClient {
343
343
 
344
344
  if(methodEvent) {
345
345
  methodEvent.logs = methodEvent.logs.map(log => {
346
+ let parsedLogs = {};
347
+ try {
348
+ parsedLogs = contract.interface.parseLog(log);
349
+ // eslint-disable-next-line no-empty
350
+ } catch(error) {}
351
+
346
352
  return {
347
353
  ...log,
348
- ...(contract.interface.parseLog(log))
354
+ ...parsedLogs
349
355
  };
350
356
  });
351
357
 
@@ -378,10 +384,13 @@ class EthClient {
378
384
  const contractInterface = new Ethers.utils.Interface(abi);
379
385
  // Loop through logs to find the desired log
380
386
  for(const log of event.logs) {
381
- const parsedLog = contractInterface.parseLog(log);
382
- if(parsedLog && parsedLog.name === eventName) {
383
- return parsedLog;
384
- }
387
+ try {
388
+ const parsedLog = contractInterface.parseLog(log);
389
+ if(parsedLog && parsedLog.name === eventName) {
390
+ return parsedLog;
391
+ }
392
+ // eslint-disable-next-line no-empty
393
+ } catch(error) {}
385
394
  }
386
395
  }
387
396
 
@@ -400,7 +409,7 @@ class EthClient {
400
409
  throw Error(`${methodName} failed - Log not present in transaction`);
401
410
  }
402
411
 
403
- const newContractAddress = eventLog.values[eventValue];
412
+ const newContractAddress = eventLog.args[eventValue];
404
413
 
405
414
  return {
406
415
  contractAddress: Utils.FormatAddress(newContractAddress),
@@ -243,7 +243,7 @@ class FrameClient {
243
243
  "DeleteUserMetadata",
244
244
  "MergeUserMetadata",
245
245
  "ReplaceUserMetadata",
246
- "UserMetadata"
246
+ "UserMetadata",
247
247
  ];
248
248
  }
249
249
 
@@ -268,6 +268,13 @@ class FrameClient {
268
268
  ];
269
269
  }
270
270
 
271
+ // List of methods that are defined separately in FrameClient
272
+ OverriddenMethods() {
273
+ return [
274
+ "UploadFiles"
275
+ ];
276
+ }
277
+
271
278
  // List of allowed methods available to frames
272
279
  // This should match ElvClient.FrameAvailableMethods()
273
280
  // ElvClient will also reject any disallowed methods
@@ -334,6 +341,7 @@ class FrameClient {
334
341
  "CreateContentObject",
335
342
  "CreateContentType",
336
343
  "CreateEncryptionConk",
344
+ "CreateFabricToken",
337
345
  "CreateFileDirectories",
338
346
  "CreateFileUploadJob",
339
347
  "CreateLinks",
@@ -377,6 +385,7 @@ class FrameClient {
377
385
  "FinalizeUploadJob",
378
386
  "FormatContractArguments",
379
387
  "GenerateStateChannelToken",
388
+ "GenerateSignedLinkToken",
380
389
  "GetBalance",
381
390
  "InitializeAuthPolicy",
382
391
  "IssueNTPCode",
@@ -440,7 +449,6 @@ class FrameClient {
440
449
  "UpdateContentObjectGraph",
441
450
  "UpdateNTPInstance",
442
451
  "UploadFileData",
443
- /*"UploadFiles",*/ //Override
444
452
  "UploadFilesFromS3",
445
453
  "UploadJobStatus",
446
454
  "UploadPart",
package/src/HttpClient.js CHANGED
@@ -14,8 +14,8 @@ class HttpClient {
14
14
  this.draftURIs = {};
15
15
  }
16
16
 
17
- BaseURI() {
18
- return new URI(this.uris[this.uriIndex]);
17
+ BaseURI(url) {
18
+ return new URI(url || this.uris[this.uriIndex]);
19
19
  }
20
20
 
21
21
  static Fetch(url, params={}) {
@@ -49,9 +49,11 @@ class HttpClient {
49
49
  headers={},
50
50
  attempts=0,
51
51
  failover=true,
52
- forceFailover=false
52
+ forceFailover=false,
53
+ nodeUrl
53
54
  }) {
54
- let baseURI = this.BaseURI();
55
+ // if nodeUrl passed in, restrict communication to that node only (unless previously recorded write token is found in next step)
56
+ let baseURI = this.BaseURI(nodeUrl);
55
57
 
56
58
  // If URL contains a write token, it must go to the correct server and can not fail over
57
59
  const writeTokenMatch = path.replace(/^\//, "").match(/(qlibs\/ilib[a-zA-Z0-9]+|q|qid)\/(tqw__[a-zA-Z0-9]+)/);
@@ -105,7 +107,7 @@ class HttpClient {
105
107
 
106
108
  if(!response.ok) {
107
109
  // Fail over if not a write token request, the response was a server error, and we haven't tried all available nodes
108
- if(!writeToken && ((failover && parseInt(response.status) >= 500) || forceFailover) && attempts < this.uris.length) {
110
+ if(!writeToken && !nodeUrl && ((failover && parseInt(response.status) >= 500) || forceFailover) && attempts < this.uris.length) {
109
111
  // Server error - Try next node
110
112
  this.Log(`HttpClient failing over from ${this.BaseURI()}: ${attempts + 1} attempts`, true);
111
113
  this.uriIndex = (this.uriIndex + 1) % this.uris.length;
@@ -2372,7 +2372,7 @@ exports.CreateEncryptionConk = async function({libraryId, objectId, versionHash,
2372
2372
  });
2373
2373
 
2374
2374
  if(existingUserCap) {
2375
- this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer.signingKey.privateKey);
2375
+ this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer._signingKey().privateKey);
2376
2376
  } else {
2377
2377
  this.encryptionConks[objectId] = await this.Crypto.GeneratePrimaryConk({
2378
2378
  spaceId: this.contentSpaceId,
@@ -2384,7 +2384,7 @@ exports.CreateEncryptionConk = async function({libraryId, objectId, versionHash,
2384
2384
  objectId,
2385
2385
  writeToken,
2386
2386
  metadataSubtree: capKey,
2387
- metadata: await this.Crypto.EncryptConk(this.encryptionConks[objectId], this.signer.signingKey.publicKey)
2387
+ metadata: await this.Crypto.EncryptConk(this.encryptionConks[objectId], this.signer._signingKey().publicKey)
2388
2388
  });
2389
2389
  }
2390
2390
 
@@ -2475,7 +2475,7 @@ exports.EncryptionConk = async function({libraryId, objectId, versionHash, write
2475
2475
  });
2476
2476
 
2477
2477
  if(existingUserCap) {
2478
- this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer.signingKey.privateKey);
2478
+ this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer._signingKey().privateKey);
2479
2479
  } else if(writeToken) {
2480
2480
  await this.CreateEncryptionConk({libraryId, objectId, versionHash, writeToken, createKMSConk: false});
2481
2481
  } else {
@@ -656,7 +656,7 @@ exports.CopyContentObject = async function({libraryId, originalVersionHash, opti
656
656
  const userCapKey = `eluv.caps.iusr${this.utils.AddressToHash(this.signer.address)}`;
657
657
 
658
658
  if(metadata[userCapKey]) {
659
- const userConkKey = await this.Crypto.DecryptCap(metadata[userCapKey], this.signer.signingKey.privateKey);
659
+ const userConkKey = await this.Crypto.DecryptCap(metadata[userCapKey], this.signer._signingKey().privateKey);
660
660
  userConkKey.qid = objectId;
661
661
 
662
662
  await this.ReplaceMetadata({
@@ -664,7 +664,7 @@ exports.CopyContentObject = async function({libraryId, originalVersionHash, opti
664
664
  objectId,
665
665
  writeToken,
666
666
  metadataSubtree: userCapKey,
667
- metadata: await this.Crypto.EncryptConk(userConkKey, this.signer.signingKey.publicKey)
667
+ metadata: await this.Crypto.EncryptConk(userConkKey, this.signer._signingKey().publicKey)
668
668
  });
669
669
  }
670
670
 
@@ -709,7 +709,7 @@ exports.CreateNonOwnerCap = async function({objectId, libraryId, publicKey, writ
709
709
  throw Error("No user cap found for current user");
710
710
  }
711
711
 
712
- const userConk = await this.Crypto.DecryptCap(userCapValue, this.signer.signingKey.privateKey);
712
+ const userConk = await this.Crypto.DecryptCap(userCapValue, this.signer._signingKey().privateKey);
713
713
 
714
714
  const publicAddress = this.utils.PublicKeyToAddress(publicKey);
715
715
 
@@ -749,6 +749,7 @@ exports.CreateNonOwnerCap = async function({objectId, libraryId, publicKey, writ
749
749
  * @param {object=} options -
750
750
  * meta: New metadata for the object - will be merged into existing metadata if specified
751
751
  * type: New type for the object - Object ID, version hash or name of type
752
+ * nodeUrl: Node URL to use in HTTP call
752
753
  *
753
754
  * @returns {Promise<object>} - Response containing the object ID and write token of the draft, as well as URL of node handling the draft
754
755
  */
@@ -778,7 +779,8 @@ exports.EditContentObject = async function({libraryId, objectId, options={}}) {
778
779
  headers: await this.authClient.AuthorizationHeader({libraryId, objectId, update: true}),
779
780
  method: "POST",
780
781
  path: path,
781
- body: options
782
+ body: options,
783
+ nodeUrl: options.nodeUrl
782
784
  });
783
785
 
784
786
  const actualUrl = new URL(rawEditResponse.url);
@@ -1052,7 +1054,7 @@ exports.PublishContentVersion = async function({objectId, versionHash, awaitComm
1052
1054
  });
1053
1055
 
1054
1056
  const confirmEvent = events.find(blockEvents =>
1055
- blockEvents.find(event => objectHash === (event && event.values && event.values.objectHash))
1057
+ blockEvents.find(event => objectHash === (event && event.args && event.args.objectHash))
1056
1058
  );
1057
1059
 
1058
1060
  if(confirmEvent) {
@@ -455,7 +455,7 @@ exports.ExtractEventFromLogs = function({abi, event, eventName}) {
455
455
  */
456
456
  exports.ExtractValueFromEvent = function({abi, event, eventName, eventValue}) {
457
457
  const eventLog = this.ethClient.ExtractEventFromLogs({abi, event, eventName, eventValue});
458
- return eventLog ? eventLog.values[eventValue] : undefined;
458
+ return eventLog ? eventLog.args[eventValue] : undefined;
459
459
  };
460
460
 
461
461
  exports.FormatBlockNumbers = async function({fromBlock, toBlock, count=10}) {
@@ -2,50 +2,21 @@ const { ElvClient } = require("../src/ElvClient");
2
2
  const { ElvWalletClient } = require("../src/walletClient/index");
3
3
  const ClientConfiguration = require("../TestConfiguration.json");
4
4
 
5
+ const ethers = require("ethers");
6
+
5
7
  const Test = async () => {
6
8
  try {
7
- /*
8
- const client = await ElvClient.FromConfigurationUrl({
9
- configUrl: ClientConfiguration["config-url"]
9
+
10
+ const client = await ElvClient.FromNetworkName({
11
+ networkName: "demo"
10
12
  });
11
13
 
12
- let wallet = client.GenerateWallet();
13
- let signer = wallet.AddAccount({
14
+ const wallet = client.GenerateWallet();
15
+ const signer = wallet.AddAccount({
14
16
  privateKey: process.env.PRIVATE_KEY
15
17
  });
16
18
 
17
19
  client.SetSigner({signer});
18
-
19
- */
20
- //const idToken = "eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMCIsInppcCI6IkRlZmxhdGUiLCJzZXIiOiIxLjAifQ..-hVeBqfPm9f0dsZ_.h7ECJlFBsX1y8rfAVanFXoper2YBRd_yH3HyJiyV5fZJ-GGxMJR8y7gP_YIWS1D-zps4fR2QkFZ1j7DZKHQwZH0kOkCq-OYyNvLDHulF-uIY1HW9U-yfpyPO2K6Ukr0QcUvGASB7RyqqVLhvDAxCBYTpm4vEHo9DQrVal--9YlkdGogeF6HLLfYoFFCGdjb5korzaQIKyWTP4LsDDTZXITcCjHaCR9GC8rNHOybLy58IbEjukvJzooKpaRxzp20OuKr96-TDApKpklpCDCgiCsCvnOj5-CxhI10rs4frsFKF4s4d2RAa93RLplzy2SLJkg9zRe6cyezp9APZYGRUHb2wjEK8YXH0-_Uus48OIfPJQIbA-BatMHZUMTUJ9ZnYRCIL2FrIRu3QcaBR1KL2DYOJLVC3uQvNwUYV0_Yxr4CgooP2e6wb0Y61d5qU_O649XjIXIqHn0slr9lcAufIrG1or5D9Gc-yliF9BCoRZQi3Zgm80L6T3imO0XT8J3abTJpBJ9PtoW5cADPKEXz5GAENkjjay3YUyC4ZX_3u0ZdaNTOd8JAL6wKQRI3lBfJS_77MkTk8ea2JDCX4MJjYCIVOpIo_YVNOmx9cQEPSZiQ5.ZPc2LOM-vuHeZBrETCCOaA";
21
- //const idToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Inlwd1ZUbXJkWENkYU5tcjAzVGRDaCJ9.eyJodHRwczovL2F1dGguY29udGVudGZhYnJpYy5pby9nZW8iOnsiY291bnRyeV9jb2RlIjoiVVMiLCJjb3VudHJ5X2NvZGUzIjoiVVNBIiwiY291bnRyeV9uYW1lIjoiVW5pdGVkIFN0YXRlcyIsImNpdHlfbmFtZSI6IkZvbHNvbSIsImxhdGl0dWRlIjozOC42NzExLCJsb25naXR1ZGUiOi0xMjEuMTQ5NSwidGltZV96b25lIjoiQW1lcmljYS9Mb3NfQW5nZWxlcyIsImNvbnRpbmVudF9jb2RlIjoiTkEiLCJzdWJkaXZpc2lvbl9jb2RlIjoiQ0EiLCJzdWJkaXZpc2lvbl9uYW1lIjoiQ2FsaWZvcm5pYSJ9LCJuaWNrbmFtZSI6ImtldmluKzciLCJuYW1lIjoia2V2aW4rN0BlbHV2LmlvIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyL2ZkNDMxN2Y4ZjdmMzBjNTVkZTA2YTI5Y2ExY2I2OWYxP3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGa2UucG5nIiwidXBkYXRlZF9hdCI6IjIwMjItMDctMjJUMjE6NTU6MjkuOTQ4WiIsImVtYWlsIjoia2V2aW4rN0BlbHV2LmlvIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJpc3MiOiJodHRwczovL2F1dGguY29udGVudGZhYnJpYy5pby8iLCJzdWIiOiJhdXRoMHw2MTY2NzcxNzg5OWI5MjAwNzBmMzRhYzQiLCJhdWQiOiJPTnl1YlA5ckZJNUJIem1ZZ2xRS0JaMWJCYml5b0IzUyIsImlhdCI6MTY1ODUyNzA1NywiZXhwIjoxNjU4NTYzMDU3LCJub25jZSI6Ilh6a3pUakF1VW5CRFgwVTVkR1pxU0dWK2JHazFjVXArUlZOamJWTlhlbFZzUzJSSWFUZE9hSEJsT1E9PSJ9.nLH00sOatOcuIv-QPgCp6Pjm565RpLqqy3VOtzJt9p2rSsIBgJxfl6j1zuFQV_H5UquYTx15BNN3_WglqVXF7U-aCb7ozsYsQCl4nv8rjumkla2pRUGCFt89B7-NR8yGXr9eak6IgE6ADe6uqiM10CWmxp8BI3Z1PficNGVDUcwmrTW_IeDFyqTw_gedDVAeYcd79xMGR5exqiHD6P2AljXKAXzNaaAVrRbBp1FBrNZnuD97k-EDta6G6lr1qqN1Gc2oS2vTrfjPjmHMBtz99_UYSrfPjPSrRMpPi9Vt3YTzEBTb-BTOKG1SSfBVHkxOqIRO1ZlNxE_bPCMJXwhSVA"
22
- //const idToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsifQ.eyJleHAiOjE2NTg1MjkwMTQsIm5iZiI6MTY1ODUyODcxNCwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly93ZGNiMmMuYjJjbG9naW4uY29tL3RmcC9mYWVhYTg5ZS02YTA1LTRjMzEtOGJkNS01MGRlNWNkNGQyZTEvYjJjXzFfbXNfc2lnbl91cF9pbi92Mi4wLyIsInN1YiI6IjVhYWIyOWNiLWRiZDMtNDM1ZS04MzViLTlmYmFkYTBkODg2MyIsImF1ZCI6ImFjYjQ3MjMzLTk3ZDUtNGFjMy04OWQzLTdkMTUzNjFjMjYzNiIsImlhdCI6MTY1ODUyODcxNCwiYXV0aF90aW1lIjoxNjU4NTI4NzAxLCJpZHAiOiJsaXZlLmNvbSIsImVtYWlscyI6WyJrZXZpbkBlbHV2LmlvIl0sInRmcCI6IkIyQ18xX21zX3NpZ25fdXBfaW4ifQ.H9-YrUQFDBM8potZpGJsNA1roQ15SiBUg40_C9XVy5LQ6thGKuM7TzxJj1ALViwLTEL1ytL5r6g8r0tVYWOiQwfU1W7m7m0rK4D6VJ-pby69o0f4jZaqdWLak-ALncxAl1IOaxtDD2vpmx8XTT8Qabp8DImzK9xzc0bAUirPERUK08lJ3LR8bZjH2TaLMvEii9i-Ss0kZoSvdZI_a4xQqXcU2knJ-2Ds-S-upAAq70lMnSlmG16-MGHM2ZGtz7w6O2FoS9CRs0QI9FBtziSEVMAVigKIMLtWcJwPOnFDeCv_qY2TpOabUzyjfm0DZDlcQRnNjV6i0LfwYLyNWGmcHg";
23
- const idToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsifQ.eyJleHAiOjE2NTg1MzAyMjYsIm5iZiI6MTY1ODUyOTkyNiwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly93ZGNiMmMuYjJjbG9naW4uY29tL3RmcC9mYWVhYTg5ZS02YTA1LTRjMzEtOGJkNS01MGRlNWNkNGQyZTEvYjJjXzFfbXNfc2lnbl91cF9pbi92Mi4wLyIsInN1YiI6IjVhYWIyOWNiLWRiZDMtNDM1ZS04MzViLTlmYmFkYTBkODg2MyIsImF1ZCI6ImFjYjQ3MjMzLTk3ZDUtNGFjMy04OWQzLTdkMTUzNjFjMjYzNiIsImlhdCI6MTY1ODUyOTkyNiwiYXV0aF90aW1lIjoxNjU4NTI5OTA2LCJpZHAiOiJsaXZlLmNvbSIsImVtYWlscyI6WyJrZXZpbkBlbHV2LmlvIl0sInRmcCI6IkIyQ18xX21zX3NpZ25fdXBfaW4ifQ.H1rbbrKCzU2dkdWe62GCTlOHACLbr8IV8UDiL1nukyerGrBVq_LtguLJAOjKO1jBClyJDOTMgI9y1wGb1zHdF2tCeN75wNwXCUUC5hn_TcemLOgp-haAEMC7KFFdR-4K_5A7IUUW9IqOQciE5DKNCKRDOKVNsDoMg7eV3VFp8QSeSCp7OGWL9FI1dWLmD6D_uoHfyYxE96LPrB-VCveCThQgsLMb6QE072S05w8ZM8CGxbLXcgKWG3VVaKT95e1e0NlDWQYlQQGFMBirUISpA3D82q3Wm4QlrANfGv49oypdnj-T4Uclu6pVnNwLvCIisj5w2GLobiyyyqMhEEsI1Q";
24
-
25
- const client = await ElvWalletClient.Initialize({
26
- network: "demo",
27
- mode: "staging"
28
- });
29
-
30
- /*
31
- console.log(
32
- await client.AuthenticateOAuth({
33
- idToken,
34
- signerURIs: [
35
- "https://wlt.stg.svc.eluv.io"
36
- ]
37
- })
38
- );
39
-
40
- */
41
-
42
- await client.Authenticate({
43
- token: "DYxK5cLMW5ofVh3pU23TmbAzkpFAsYrQQLsantU3uHFCJgyAjNoRHE7HvSCbQzZx1F33JM65R6oWZ1ZLYPEUhfA3WrnN9emo69A6AAKyFNBecKSFn3T6PP5MxMMPZRwN6AgwmuRgZMJQthF1xo7cMUqVwZCXtdHARYSrTHoRe3QMPggd6EJ6MzK7WHv2Sb7MPGGyVCR8uC4mK9SbncNm77Fj4H2LWxQpQggnF579GWv3SwAYiUBhbtgnfw6WEzyo1ZmBTV8vSkMiDAyBoMC138nokWNZc6DkpBNkyn6z3GwszoPsdXezKv7vANEVF6rrD3odbjosJpRoWbeEoPkebjoVySTgU8ywJybCDzeoFcg2XC1FQ4nyBhv5o3UVyXWispw3hN7oNs65vt9DaXmXwy45HzG3vL7PNdK8qviBg5XttCHUxkQ2aeYXTXcUzBYJ34PgDTXPBUwrj7a5FBa3gyC42eu48DAyxaFtV6GC5SXJCczTgQW6DPTrXiwzyEkBbVCoyDbMepaAA5MWH5WmpeWWzuexbHhKd3qW2ukWMHyjJpwAy1aUMZXGrAx3eGjTTmev342DqsV8ECHw9zPuzKv7MufkU7A9N9Wgi6jWoZXZvbMySxuRo81CV7XQZ6Zvcfy2xXFbtu5rgYA1xxhZaGZBioMUgT3HwEo1eqJuvs7r1QW3t1mMx9zbAJDTJtHFsYu4nkvyrDHQwDgKvQmnzSDhUs7yxeKeVKeFi2wy4QkXz56VJKxp3CtB9gM8qMLP3eUg1B3BRaNH8uPmy7qVYn3wn9epwPA2fDwR6MbunU5C4kx7rTbZmiQtKW4VUVP8iL6MvVy6Wx3NEXCeTmaSDz2BAfkrv7zFmC9ERyeqfrPvCYDyeTV2PHA6vVmdh5cXo6meJWKCD6jc5QAd6J7D1hJw6PWP8gyUQZGtZ6Xd9v82v3cP1L6njMWc4kpivB41mUF7Q86Zy8EoZ2xYhFrU3MoUuNPV3ApVKRqUmcL4cpKhbcSCgPi8QvnhUCjZGyEtxLwzCaRhXa"
44
- })
45
-
46
- console.log(
47
- await client.PersonalSign({message: "test"})
48
- )
49
20
  } catch(error) {
50
21
  console.error(error);
51
22
  console.error(JSON.stringify(error, null, 2));
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },
@@ -660,17 +660,17 @@
660
660
  },
661
661
  {
662
662
  "bit_rate": 810000,
663
- "height": 360,
663
+ "height": 640,
664
664
  "media_type": "video",
665
665
  "pregenerate": false,
666
- "width": 640
666
+ "width": 360
667
667
  },
668
668
  {
669
669
  "bit_rate": 520000,
670
- "height": 360,
670
+ "height": 640,
671
671
  "media_type": "video",
672
672
  "pregenerate": false,
673
- "width": 640
673
+ "width": 360
674
674
  }
675
675
  ]
676
676
  },