@0xobelisk/sui-client 0.5.19 → 0.5.20

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/index.mjs CHANGED
@@ -941,7 +941,7 @@ function createTx(meta, fn) {
941
941
  }
942
942
  );
943
943
  }
944
- var _query, _tx, _struct, _exec, _read;
944
+ var _query, _tx, _object, _exec, _read, _bcs;
945
945
  var Obelisk = class {
946
946
  /**
947
947
  * Support the following ways to init the ObeliskClient:
@@ -965,7 +965,49 @@ var Obelisk = class {
965
965
  } = {}) {
966
966
  __privateAdd(this, _query, {});
967
967
  __privateAdd(this, _tx, {});
968
- __privateAdd(this, _struct, {});
968
+ __privateAdd(this, _object, {
969
+ address: bcs2.bytes(32).transform({
970
+ // To change the input type, you need to provide a type definition for the input
971
+ input: (val) => fromHEX2(val),
972
+ output: (val) => toHEX(val)
973
+ }),
974
+ u8: bcs2.u8(),
975
+ u16: bcs2.u16(),
976
+ u32: bcs2.u32(),
977
+ u64: bcs2.u64(),
978
+ u128: bcs2.u128(),
979
+ u256: bcs2.u256(),
980
+ bool: bcs2.bool(),
981
+ "0x1::ascii::String": bcs2.string(),
982
+ "0x1::option::Option<address>": bcs2.option(
983
+ bcs2.bytes(32).transform({
984
+ // To change the input type, you need to provide a type definition for the input
985
+ input: (val) => fromHEX2(val),
986
+ output: (val) => toHEX(val)
987
+ })
988
+ ),
989
+ "0x1::option::Option<u8>": bcs2.option(bcs2.u8()),
990
+ "0x1::option::Option<u16>": bcs2.option(bcs2.u16()),
991
+ "0x1::option::Option<u32>": bcs2.option(bcs2.u32()),
992
+ "0x1::option::Option<u64>": bcs2.option(bcs2.u64()),
993
+ "0x1::option::Option<u128>": bcs2.option(bcs2.u128()),
994
+ "0x1::option::Option<u256>": bcs2.option(bcs2.u256()),
995
+ "0x1::option::Option<bool>": bcs2.option(bcs2.bool()),
996
+ "vector<address>": bcs2.vector(
997
+ bcs2.bytes(32).transform({
998
+ // To change the input type, you need to provide a type definition for the input
999
+ input: (val) => fromHEX2(val),
1000
+ output: (val) => toHEX(val)
1001
+ })
1002
+ ),
1003
+ "vector<u8>": bcs2.vector(bcs2.u8()),
1004
+ "vector<u16>": bcs2.vector(bcs2.u16()),
1005
+ "vector<u32>": bcs2.vector(bcs2.u32()),
1006
+ "vector<u64>": bcs2.vector(bcs2.u64()),
1007
+ "vector<u128>": bcs2.vector(bcs2.u128()),
1008
+ "vector<u256>": bcs2.vector(bcs2.u256()),
1009
+ "vector<bool>": bcs2.vector(bcs2.bool())
1010
+ });
969
1011
  __privateAdd(this, _exec, async (meta, tx, params, typeArguments, isRaw) => {
970
1012
  if (isRaw === true) {
971
1013
  return tx.moveCall({
@@ -996,43 +1038,221 @@ var Obelisk = class {
996
1038
  });
997
1039
  return await this.inspectTxn(tx);
998
1040
  });
1041
+ __privateAdd(this, _bcs, (bcsmeta) => {
1042
+ let loopFlag = false;
1043
+ const bcsJson = {};
1044
+ Object.entries(bcsmeta.objectType.fields).forEach(([index, type]) => {
1045
+ const objName = type.name;
1046
+ const objType = type.type;
1047
+ switch (typeof objType) {
1048
+ case "object":
1049
+ for (const [key, value] of Object.entries(objType)) {
1050
+ switch (key) {
1051
+ case "Struct":
1052
+ const structType = value;
1053
+ if (structType.address === "0x1" && structType.module === "ascii" && structType.name === "String") {
1054
+ bcsJson[objName] = bcs2.string();
1055
+ return;
1056
+ } else if (structType.address === "0x2" && structType.module === "object" && structType.name === "UID") {
1057
+ bcsJson[objName] = bcs2.fixedArray(32, bcs2.u8()).transform({
1058
+ input: (id) => fromHEX2(id),
1059
+ output: (id) => toHEX(Uint8Array.from(id))
1060
+ });
1061
+ return;
1062
+ } else if (structType.address === "0x2" && structType.module === "object" && structType.name === "ID") {
1063
+ bcsJson[objName] = bcs2.fixedArray(32, bcs2.u8()).transform({
1064
+ input: (id) => fromHEX2(id),
1065
+ output: (id) => toHEX(Uint8Array.from(id))
1066
+ });
1067
+ return;
1068
+ } else if (structType.address === "0x2" && structType.module === "bag" && structType.name === "Bag") {
1069
+ bcsJson[objName] = bcs2.fixedArray(32, bcs2.u8()).transform({
1070
+ input: (id) => fromHEX2(id),
1071
+ output: (id) => toHEX(Uint8Array.from(id))
1072
+ });
1073
+ return;
1074
+ } else if (structType.address === "0x1" && structType.module === "option" && structType.name === "Option") {
1075
+ switch (structType.typeArguments[0]) {
1076
+ case "U8":
1077
+ bcsJson[objName] = bcs2.option(bcs2.u8());
1078
+ return;
1079
+ case "U16":
1080
+ bcsJson[objName] = bcs2.option(bcs2.u16());
1081
+ return;
1082
+ case "U32":
1083
+ bcsJson[objName] = bcs2.option(bcs2.u32());
1084
+ return;
1085
+ case "U64":
1086
+ bcsJson[objName] = bcs2.option(bcs2.u64());
1087
+ return;
1088
+ case "U128":
1089
+ bcsJson[objName] = bcs2.option(bcs2.u128());
1090
+ return;
1091
+ case "U256":
1092
+ bcsJson[objName] = bcs2.option(bcs2.u256());
1093
+ return;
1094
+ case "Bool":
1095
+ bcsJson[objName] = bcs2.option(bcs2.bool());
1096
+ return;
1097
+ case "Address":
1098
+ bcsJson[objName] = bcs2.option(
1099
+ bcs2.bytes(32).transform({
1100
+ // To change the input type, you need to provide a type definition for the input
1101
+ input: (val) => fromHEX2(val),
1102
+ output: (val) => toHEX(val)
1103
+ })
1104
+ );
1105
+ return;
1106
+ default:
1107
+ }
1108
+ } else {
1109
+ if (this.object[`${structType.address}::${structType.module}::${structType.name}`] === void 0) {
1110
+ loopFlag = true;
1111
+ } else {
1112
+ bcsJson[objName] = this.object[`${structType.address}::${structType.module}::${structType.name}`];
1113
+ return;
1114
+ }
1115
+ }
1116
+ return;
1117
+ case "Vector":
1118
+ switch (value) {
1119
+ case "U8":
1120
+ bcsJson[objName] = bcs2.vector(bcs2.u8());
1121
+ return;
1122
+ case "U16":
1123
+ bcsJson[objName] = bcs2.vector(bcs2.u16());
1124
+ return;
1125
+ case "U32":
1126
+ bcsJson[objName] = bcs2.vector(bcs2.u32());
1127
+ return;
1128
+ case "U64":
1129
+ bcsJson[objName] = bcs2.vector(bcs2.u64());
1130
+ return;
1131
+ case "U128":
1132
+ bcsJson[objName] = bcs2.vector(bcs2.u128());
1133
+ return;
1134
+ case "U256":
1135
+ bcsJson[objName] = bcs2.vector(bcs2.u256());
1136
+ return;
1137
+ case "Bool":
1138
+ bcsJson[objName] = bcs2.vector(bcs2.bool());
1139
+ return;
1140
+ case "Address":
1141
+ bcsJson[objName] = bcs2.vector(
1142
+ bcs2.bytes(32).transform({
1143
+ // To change the input type, you need to provide a type definition for the input
1144
+ input: (val) => fromHEX2(val),
1145
+ output: (val) => toHEX(val)
1146
+ })
1147
+ );
1148
+ return;
1149
+ default:
1150
+ }
1151
+ case "TypeParameter":
1152
+ bcsJson[objName] = bcs2.u128();
1153
+ return;
1154
+ default:
1155
+ throw new Error("Unsupported type");
1156
+ }
1157
+ }
1158
+ return;
1159
+ case "string":
1160
+ switch (objType) {
1161
+ case "U8":
1162
+ bcsJson[objName] = bcs2.u8();
1163
+ return;
1164
+ case "U16":
1165
+ bcsJson[objName] = bcs2.u16();
1166
+ return;
1167
+ case "U32":
1168
+ bcsJson[objName] = bcs2.u32();
1169
+ return;
1170
+ case "U64":
1171
+ bcsJson[objName] = bcs2.u64();
1172
+ return;
1173
+ case "U128":
1174
+ bcsJson[objName] = bcs2.u128();
1175
+ return;
1176
+ case "U256":
1177
+ bcsJson[objName] = bcs2.u256();
1178
+ return;
1179
+ case "Bool":
1180
+ bcsJson[objName] = bcs2.bool();
1181
+ return;
1182
+ case "Address":
1183
+ bcsJson[objName] = bcs2.bytes(32).transform({
1184
+ // To change the input type, you need to provide a type definition for the input
1185
+ input: (val) => fromHEX2(val),
1186
+ output: (val) => toHEX(val)
1187
+ });
1188
+ return;
1189
+ default:
1190
+ return;
1191
+ }
1192
+ default:
1193
+ throw new Error("Unsupported type");
1194
+ }
1195
+ });
1196
+ return {
1197
+ bcs: bcs2.struct(bcsmeta.objectName, bcsJson),
1198
+ loopFlag
1199
+ };
1200
+ });
999
1201
  this.accountManager = new SuiAccountManager({ mnemonics, secretKey });
1000
1202
  fullnodeUrls = fullnodeUrls || [getFullnodeUrl(networkType ?? "mainnet")];
1001
1203
  this.suiInteractor = new SuiInteractor(fullnodeUrls, networkType);
1002
1204
  this.packageId = packageId;
1003
1205
  if (metadata !== void 0) {
1004
1206
  this.metadata = metadata;
1005
- Object.values(metadata).forEach(
1006
- (moudlevalue) => {
1007
- const data = moudlevalue;
1008
- const moduleName = data.name;
1009
- Object.entries(data.exposedFunctions).forEach(
1010
- ([funcName, funcvalue]) => {
1011
- const meta = funcvalue;
1012
- meta.moduleName = moduleName;
1013
- meta.funcName = funcName;
1014
- if (isUndefined(__privateGet(this, _query)[moduleName])) {
1015
- __privateGet(this, _query)[moduleName] = {};
1016
- }
1017
- if (isUndefined(__privateGet(this, _query)[moduleName][funcName])) {
1018
- __privateGet(this, _query)[moduleName][funcName] = createQuery(
1019
- meta,
1020
- (tx, p, typeArguments, isRaw) => __privateGet(this, _read).call(this, meta, tx, p, typeArguments, isRaw)
1021
- );
1022
- }
1023
- if (isUndefined(__privateGet(this, _tx)[moduleName])) {
1024
- __privateGet(this, _tx)[moduleName] = {};
1207
+ let stillNeedFormat = true;
1208
+ while (stillNeedFormat === true) {
1209
+ let loopFlag = false;
1210
+ Object.values(metadata).forEach(
1211
+ (moudlevalue) => {
1212
+ const data = moudlevalue;
1213
+ const moduleName = data.name;
1214
+ const objMoudleId = `${packageId}::${moduleName}`;
1215
+ Object.entries(data.structs).forEach(([objectName, objectType]) => {
1216
+ const objId = `${objMoudleId}::${objectName}`;
1217
+ const bcsmeta = {
1218
+ objectName,
1219
+ objectType
1220
+ };
1221
+ let bcsObj = __privateGet(this, _bcs).call(this, bcsmeta);
1222
+ if (bcsObj.loopFlag === true) {
1223
+ loopFlag = bcsObj.loopFlag;
1025
1224
  }
1026
- if (isUndefined(__privateGet(this, _tx)[moduleName][funcName])) {
1027
- __privateGet(this, _tx)[moduleName][funcName] = createTx(
1028
- meta,
1029
- (tx, p, typeArguments, isRaw) => __privateGet(this, _exec).call(this, meta, tx, p, typeArguments, isRaw)
1030
- );
1225
+ __privateGet(this, _object)[objId] = bcsObj.bcs;
1226
+ });
1227
+ Object.entries(data.exposedFunctions).forEach(
1228
+ ([funcName, funcvalue]) => {
1229
+ const meta = funcvalue;
1230
+ meta.moduleName = moduleName;
1231
+ meta.funcName = funcName;
1232
+ if (isUndefined(__privateGet(this, _query)[moduleName])) {
1233
+ __privateGet(this, _query)[moduleName] = {};
1234
+ }
1235
+ if (isUndefined(__privateGet(this, _query)[moduleName][funcName])) {
1236
+ __privateGet(this, _query)[moduleName][funcName] = createQuery(
1237
+ meta,
1238
+ (tx, p, typeArguments, isRaw) => __privateGet(this, _read).call(this, meta, tx, p, typeArguments, isRaw)
1239
+ );
1240
+ }
1241
+ if (isUndefined(__privateGet(this, _tx)[moduleName])) {
1242
+ __privateGet(this, _tx)[moduleName] = {};
1243
+ }
1244
+ if (isUndefined(__privateGet(this, _tx)[moduleName][funcName])) {
1245
+ __privateGet(this, _tx)[moduleName][funcName] = createTx(
1246
+ meta,
1247
+ (tx, p, typeArguments, isRaw) => __privateGet(this, _exec).call(this, meta, tx, p, typeArguments, isRaw)
1248
+ );
1249
+ }
1031
1250
  }
1032
- }
1033
- );
1034
- }
1035
- );
1251
+ );
1252
+ }
1253
+ );
1254
+ stillNeedFormat = loopFlag;
1255
+ }
1036
1256
  }
1037
1257
  this.contractFactory = new SuiContractFactory({
1038
1258
  packageId,
@@ -1045,8 +1265,23 @@ var Obelisk = class {
1045
1265
  get tx() {
1046
1266
  return __privateGet(this, _tx);
1047
1267
  }
1048
- get struct() {
1049
- return __privateGet(this, _struct);
1268
+ get object() {
1269
+ return __privateGet(this, _object);
1270
+ }
1271
+ view(dryResult) {
1272
+ let returnValues = [];
1273
+ if (dryResult.effects.status.status === "success") {
1274
+ const resultList = dryResult.results[0].returnValues;
1275
+ for (const res of resultList) {
1276
+ let baseValue = res[0];
1277
+ let baseType = res[1];
1278
+ const value = Uint8Array.from(baseValue);
1279
+ returnValues.push(this.object[baseType].parse(value));
1280
+ }
1281
+ return returnValues;
1282
+ } else {
1283
+ return void 0;
1284
+ }
1050
1285
  }
1051
1286
  /**
1052
1287
  * if derivePathParams is not provided or mnemonics is empty, it will return the keypair.
@@ -1264,50 +1499,11 @@ var Obelisk = class {
1264
1499
  if (entityId !== void 0) {
1265
1500
  params.push(tx.pure.address(entityId));
1266
1501
  }
1267
- const getResult = await this.query[schemaModuleName].get(
1502
+ const dryResult = await this.query[schemaModuleName].get(
1268
1503
  tx,
1269
1504
  params
1270
1505
  );
1271
- let returnValues = [];
1272
- if (getResult.effects.status.status === "success") {
1273
- const resultList = getResult.results[0].returnValues;
1274
- for (const res of resultList) {
1275
- let baseValue = res[0];
1276
- let baseType = res[1];
1277
- const value = Uint8Array.from(baseValue);
1278
- if (baseType === "address") {
1279
- const Address = bcs2.bytes(32).transform({
1280
- // To change the input type, you need to provide a type definition for the input
1281
- input: (val) => fromHEX2(val),
1282
- output: (val) => toHEX(val)
1283
- });
1284
- returnValues.push(Address.parse(value));
1285
- } else if (baseType === "u8") {
1286
- returnValues.push(bcs2.u8().parse(value));
1287
- } else if (baseType === "u16") {
1288
- returnValues.push(bcs2.u16().parse(value));
1289
- } else if (baseType === "u32") {
1290
- returnValues.push(bcs2.u32().parse(value));
1291
- } else if (baseType === "u64") {
1292
- returnValues.push(bcs2.u64().parse(value));
1293
- } else if (baseType === "u128") {
1294
- returnValues.push(bcs2.u128().parse(value));
1295
- } else if (baseType === "u256") {
1296
- returnValues.push(bcs2.u256().parse(value));
1297
- } else if (baseType === "bool") {
1298
- returnValues.push(bcs2.bool().parse(value));
1299
- } else if (baseType === "0x1::ascii::String") {
1300
- returnValues.push(bcs2.string().parse(value));
1301
- } else if (baseType === "vector<u8>") {
1302
- returnValues.push(bcs2.vector(bcs2.u8()).parse(value));
1303
- } else if (baseType === "0x1::option::Option<u8>") {
1304
- returnValues.push(bcs2.option(bcs2.u8()).parse(value));
1305
- }
1306
- }
1307
- return returnValues;
1308
- } else {
1309
- return void 0;
1310
- }
1506
+ return this.view(dryResult);
1311
1507
  }
1312
1508
  async containEntity(worldId, schemaName, entityId) {
1313
1509
  const schemaModuleName = `${schemaName}_schema`;
@@ -1316,18 +1512,11 @@ var Obelisk = class {
1316
1512
  if (entityId !== void 0) {
1317
1513
  params.push(tx.pure.address(entityId));
1318
1514
  }
1319
- const getResult = await this.query[schemaModuleName].contains(
1515
+ const dryResult = await this.query[schemaModuleName].contains(
1320
1516
  tx,
1321
1517
  params
1322
1518
  );
1323
- if (getResult.effects.status.status === "success") {
1324
- const res = getResult.results[0].returnValues[0];
1325
- let baseValue = res[0];
1326
- const value = Uint8Array.from(baseValue);
1327
- return bcs2.bool().parse(value);
1328
- } else {
1329
- return void 0;
1330
- }
1519
+ return this.view(dryResult);
1331
1520
  }
1332
1521
  // async getEntities(
1333
1522
  // worldId: string,
@@ -1424,54 +1613,13 @@ var Obelisk = class {
1424
1613
  // const u8Value = Uint8Array.from(value);
1425
1614
  // return bcs.de(type, u8Value);
1426
1615
  // }
1427
- async autoFormatDryValue(value) {
1428
- let returnValues = [];
1429
- if (value.effects.status.status === "success") {
1430
- const resultList = value.results[0].returnValues;
1431
- for (const res of resultList) {
1432
- let baseValue = res[0];
1433
- let baseType = res[1];
1434
- const value2 = Uint8Array.from(baseValue);
1435
- if (baseType === "address") {
1436
- const Address = bcs2.bytes(32).transform({
1437
- // To change the input type, you need to provide a type definition for the input
1438
- input: (val) => fromHEX2(val),
1439
- output: (val) => toHEX(val)
1440
- });
1441
- returnValues.push(Address.parse(value2));
1442
- } else if (baseType === "u8") {
1443
- returnValues.push(bcs2.u8().parse(value2));
1444
- } else if (baseType === "u16") {
1445
- returnValues.push(bcs2.u16().parse(value2));
1446
- } else if (baseType === "u32") {
1447
- returnValues.push(bcs2.u32().parse(value2));
1448
- } else if (baseType === "u64") {
1449
- returnValues.push(bcs2.u64().parse(value2));
1450
- } else if (baseType === "u128") {
1451
- returnValues.push(bcs2.u128().parse(value2));
1452
- } else if (baseType === "u256") {
1453
- returnValues.push(bcs2.u256().parse(value2));
1454
- } else if (baseType === "bool") {
1455
- returnValues.push(bcs2.bool().parse(value2));
1456
- } else if (baseType === "0x1::ascii::String") {
1457
- returnValues.push(bcs2.string().parse(value2));
1458
- } else if (baseType === "vector<u8>") {
1459
- returnValues.push(bcs2.vector(bcs2.u8()).parse(value2));
1460
- } else if (baseType === "0x1::option::Option<u8>") {
1461
- returnValues.push(bcs2.option(bcs2.u8()).parse(value2));
1462
- }
1463
- }
1464
- return returnValues;
1465
- } else {
1466
- return void 0;
1467
- }
1468
- }
1469
1616
  };
1470
1617
  _query = new WeakMap();
1471
1618
  _tx = new WeakMap();
1472
- _struct = new WeakMap();
1619
+ _object = new WeakMap();
1473
1620
  _exec = new WeakMap();
1474
1621
  _read = new WeakMap();
1622
+ _bcs = new WeakMap();
1475
1623
 
1476
1624
  // src/libs/multiSig/client.ts
1477
1625
  import { MultiSigPublicKey } from "@mysten/sui/multisig";