@eluvio/elv-client-js 3.2.44 → 4.0.0
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/dist/ElvClient-min.js +17 -9
- package/dist/ElvClient-node-min.js +12 -25
- package/dist/ElvFrameClient-min.js +17 -9
- package/dist/ElvPermissionsClient-min.js +16 -8
- package/dist/ElvWalletClient-min.js +17 -9
- package/dist/ElvWalletClient-node-min.js +12 -25
- package/dist/src/AuthorizationClient.js +6 -6
- package/dist/src/ElvClient.js +3 -3
- package/dist/src/ElvWallet.js +1 -3
- package/dist/src/EthClient.js +21 -12
- package/dist/src/FrameClient.js +10 -7
- package/dist/src/HttpClient.js +3 -3
- package/dist/src/client/ABRPublishing.js +150 -103
- package/dist/src/client/ContentAccess.js +32 -15
- package/dist/src/client/ContentManagement.js +33 -24
- package/dist/src/client/Contracts.js +1 -1
- package/dist/src/walletClient/ClientMethods.js +573 -645
- package/dist/src/walletClient/index.js +47 -43
- package/package.json +2 -2
- package/src/AuthorizationClient.js +6 -6
- package/src/ElvClient.js +3 -2
- package/src/ElvWallet.js +1 -3
- package/src/EthClient.js +19 -10
- package/src/FrameClient.js +10 -2
- package/src/HttpClient.js +3 -3
- package/src/client/ABRPublishing.js +71 -32
- package/src/client/ContentAccess.js +19 -8
- package/src/client/ContentManagement.js +21 -14
- package/src/client/Contracts.js +1 -1
- package/testScripts/Test.js +7 -36
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
const UrlJoin = require("url-join");
|
|
8
|
+
const objectPath = require("object-path");
|
|
8
9
|
|
|
9
10
|
const HttpClient = require("../HttpClient");
|
|
10
11
|
|
|
@@ -581,17 +582,18 @@ exports.ContentObjects = async function({libraryId, filterOptions={}}) {
|
|
|
581
582
|
* @param {string=} libraryId - ID of the library
|
|
582
583
|
* @param {string=} objectId - ID of the object
|
|
583
584
|
* @param {string=} versionHash - Version hash of the object -- if not specified, latest version is returned
|
|
585
|
+
* @param {string=} writeToken - Write token for an object draft -- if supplied, versionHash will be ignored
|
|
584
586
|
*
|
|
585
587
|
* @returns {Promise<Object>} - Description of content object
|
|
586
588
|
*/
|
|
587
|
-
exports.ContentObject = async function({libraryId, objectId, versionHash}) {
|
|
589
|
+
exports.ContentObject = async function({libraryId, objectId, versionHash, writeToken}) {
|
|
588
590
|
ValidateParameters({libraryId, objectId, versionHash});
|
|
589
591
|
|
|
590
|
-
this.Log(`Retrieving content object: ${libraryId || ""} ${
|
|
592
|
+
this.Log(`Retrieving content object: ${libraryId || ""} ${writeToken || versionHash || objectId}`);
|
|
591
593
|
|
|
592
594
|
if(versionHash) { objectId = this.utils.DecodeVersionHash(versionHash).objectId; }
|
|
593
595
|
|
|
594
|
-
let path = UrlJoin("q", versionHash || objectId);
|
|
596
|
+
let path = UrlJoin("q", writeToken || versionHash || objectId);
|
|
595
597
|
|
|
596
598
|
return await this.utils.ResponseToJson(
|
|
597
599
|
this.HttpClient.Request({
|
|
@@ -925,8 +927,17 @@ exports.ContentObjectMetadata = async function({
|
|
|
925
927
|
if(error.status !== 404) {
|
|
926
928
|
throw error;
|
|
927
929
|
}
|
|
928
|
-
|
|
929
|
-
|
|
930
|
+
// For a 404 error, check if error was due to write token not found
|
|
931
|
+
const errQwtoken = objectPath.get(error.body, "errors[0].cause.cause.cause.qwtoken");
|
|
932
|
+
if(errQwtoken) {
|
|
933
|
+
// if so, re-throw rather than suppress error
|
|
934
|
+
throw error;
|
|
935
|
+
} else {
|
|
936
|
+
// For all other 404 errors (not just 'subtree not found'), suppress error and
|
|
937
|
+
// return an empty value. (there are function call chains that depend on this behavior,
|
|
938
|
+
// e.g. CreateABRMezzanine -> CreateEncryptionConk -> ContentObjectMetadata)
|
|
939
|
+
metadata = metadataSubtree === "/" ? {} : undefined;
|
|
940
|
+
}
|
|
930
941
|
}
|
|
931
942
|
|
|
932
943
|
if(!produceLinkUrls) { return metadata; }
|
|
@@ -2361,7 +2372,7 @@ exports.CreateEncryptionConk = async function({libraryId, objectId, versionHash,
|
|
|
2361
2372
|
});
|
|
2362
2373
|
|
|
2363
2374
|
if(existingUserCap) {
|
|
2364
|
-
this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer.
|
|
2375
|
+
this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer._signingKey().privateKey);
|
|
2365
2376
|
} else {
|
|
2366
2377
|
this.encryptionConks[objectId] = await this.Crypto.GeneratePrimaryConk({
|
|
2367
2378
|
spaceId: this.contentSpaceId,
|
|
@@ -2373,7 +2384,7 @@ exports.CreateEncryptionConk = async function({libraryId, objectId, versionHash,
|
|
|
2373
2384
|
objectId,
|
|
2374
2385
|
writeToken,
|
|
2375
2386
|
metadataSubtree: capKey,
|
|
2376
|
-
metadata: await this.Crypto.EncryptConk(this.encryptionConks[objectId], this.signer.
|
|
2387
|
+
metadata: await this.Crypto.EncryptConk(this.encryptionConks[objectId], this.signer._signingKey().publicKey)
|
|
2377
2388
|
});
|
|
2378
2389
|
}
|
|
2379
2390
|
|
|
@@ -2464,7 +2475,7 @@ exports.EncryptionConk = async function({libraryId, objectId, versionHash, write
|
|
|
2464
2475
|
});
|
|
2465
2476
|
|
|
2466
2477
|
if(existingUserCap) {
|
|
2467
|
-
this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer.
|
|
2478
|
+
this.encryptionConks[objectId] = await this.Crypto.DecryptCap(existingUserCap, this.signer._signingKey().privateKey);
|
|
2468
2479
|
} else if(writeToken) {
|
|
2469
2480
|
await this.CreateEncryptionConk({libraryId, objectId, versionHash, writeToken, createKMSConk: false});
|
|
2470
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.
|
|
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.
|
|
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.
|
|
712
|
+
const userConk = await this.Crypto.DecryptCap(userCapValue, this.signer._signingKey().privateKey);
|
|
713
713
|
|
|
714
714
|
const publicAddress = this.utils.PublicKeyToAddress(publicKey);
|
|
715
715
|
|
|
@@ -750,7 +750,7 @@ exports.CreateNonOwnerCap = async function({objectId, libraryId, publicKey, writ
|
|
|
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
752
|
*
|
|
753
|
-
* @returns {Promise<object>} - Response containing the object ID and write token of the draft
|
|
753
|
+
* @returns {Promise<object>} - Response containing the object ID and write token of the draft, as well as URL of node handling the draft
|
|
754
754
|
*/
|
|
755
755
|
exports.EditContentObject = async function({libraryId, objectId, options={}}) {
|
|
756
756
|
ValidateParameters({libraryId, objectId});
|
|
@@ -774,20 +774,27 @@ exports.EditContentObject = async function({libraryId, objectId, options={}}) {
|
|
|
774
774
|
|
|
775
775
|
let path = UrlJoin("qid", objectId);
|
|
776
776
|
|
|
777
|
-
|
|
778
|
-
this.
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
);
|
|
777
|
+
const rawEditResponse = await this.HttpClient.Request({
|
|
778
|
+
headers: await this.authClient.AuthorizationHeader({libraryId, objectId, update: true}),
|
|
779
|
+
method: "POST",
|
|
780
|
+
path: path,
|
|
781
|
+
body: options
|
|
782
|
+
});
|
|
783
|
+
|
|
784
|
+
const actualUrl = new URL(rawEditResponse.url);
|
|
785
|
+
actualUrl.pathname = "";
|
|
786
|
+
actualUrl.search = "";
|
|
787
|
+
actualUrl.hash = "";
|
|
788
|
+
const nodeUrl = actualUrl.href;
|
|
789
|
+
|
|
790
|
+
let editResponse = await this.utils.ResponseToJson(rawEditResponse);
|
|
785
791
|
|
|
786
792
|
// Record the node used in creating this write token
|
|
787
|
-
this.HttpClient.RecordWriteToken(editResponse.write_token);
|
|
793
|
+
this.HttpClient.RecordWriteToken(editResponse.write_token, nodeUrl);
|
|
788
794
|
|
|
789
795
|
editResponse.writeToken = editResponse.write_token;
|
|
790
796
|
editResponse.objectId = editResponse.id;
|
|
797
|
+
editResponse.nodeUrl = nodeUrl;
|
|
791
798
|
|
|
792
799
|
return editResponse;
|
|
793
800
|
};
|
|
@@ -1045,7 +1052,7 @@ exports.PublishContentVersion = async function({objectId, versionHash, awaitComm
|
|
|
1045
1052
|
});
|
|
1046
1053
|
|
|
1047
1054
|
const confirmEvent = events.find(blockEvents =>
|
|
1048
|
-
blockEvents.find(event => objectHash === (event && event.
|
|
1055
|
+
blockEvents.find(event => objectHash === (event && event.args && event.args.objectHash))
|
|
1049
1056
|
);
|
|
1050
1057
|
|
|
1051
1058
|
if(confirmEvent) {
|
package/src/client/Contracts.js
CHANGED
|
@@ -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.
|
|
458
|
+
return eventLog ? eventLog.args[eventValue] : undefined;
|
|
459
459
|
};
|
|
460
460
|
|
|
461
461
|
exports.FormatBlockNumbers = async function({fromBlock, toBlock, count=10}) {
|
package/testScripts/Test.js
CHANGED
|
@@ -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.
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
const client = await ElvClient.FromNetworkName({
|
|
11
|
+
networkName: "demo"
|
|
10
12
|
});
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
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));
|