genlayer 0.28.0 → 0.28.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.
- package/CHANGELOG.md +2 -0
- package/dist/index.js +239 -104
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -17856,7 +17856,7 @@ var require_semver2 = __commonJS({
|
|
|
17856
17856
|
import { program } from "commander";
|
|
17857
17857
|
|
|
17858
17858
|
// package.json
|
|
17859
|
-
var version = "0.28.
|
|
17859
|
+
var version = "0.28.1";
|
|
17860
17860
|
var package_default = {
|
|
17861
17861
|
name: "genlayer",
|
|
17862
17862
|
version,
|
|
@@ -17923,7 +17923,7 @@ var package_default = {
|
|
|
17923
17923
|
dotenv: "^17.0.0",
|
|
17924
17924
|
ethers: "^6.13.4",
|
|
17925
17925
|
"fs-extra": "^11.3.0",
|
|
17926
|
-
"genlayer-js": "
|
|
17926
|
+
"genlayer-js": "0.15.1",
|
|
17927
17927
|
inquirer: "^12.0.0",
|
|
17928
17928
|
keytar: "^7.9.0",
|
|
17929
17929
|
"node-fetch": "^3.0.0",
|
|
@@ -40019,6 +40019,7 @@ var calldata_exports = {};
|
|
|
40019
40019
|
__export2(calldata_exports, {
|
|
40020
40020
|
decode: () => decode2,
|
|
40021
40021
|
encode: () => encode4,
|
|
40022
|
+
makeCalldataObject: () => makeCalldataObject,
|
|
40022
40023
|
toString: () => toString
|
|
40023
40024
|
});
|
|
40024
40025
|
var BITS_IN_TYPE = 3;
|
|
@@ -40161,6 +40162,32 @@ function encode4(data) {
|
|
|
40161
40162
|
encodeImpl(arr, data);
|
|
40162
40163
|
return new Uint8Array(arr);
|
|
40163
40164
|
}
|
|
40165
|
+
function makeCalldataObject(method, args, kwargs) {
|
|
40166
|
+
let ret = {};
|
|
40167
|
+
if (method) {
|
|
40168
|
+
ret["method"] = method;
|
|
40169
|
+
}
|
|
40170
|
+
if (args && args.length > 0) {
|
|
40171
|
+
ret["args"] = args;
|
|
40172
|
+
}
|
|
40173
|
+
if (kwargs) {
|
|
40174
|
+
if (kwargs instanceof Map) {
|
|
40175
|
+
if (kwargs.size > 0) {
|
|
40176
|
+
ret["kwargs"] = kwargs;
|
|
40177
|
+
}
|
|
40178
|
+
} else {
|
|
40179
|
+
let hasVal = false;
|
|
40180
|
+
for (const _k in kwargs) {
|
|
40181
|
+
hasVal = true;
|
|
40182
|
+
break;
|
|
40183
|
+
}
|
|
40184
|
+
if (hasVal) {
|
|
40185
|
+
ret["kwargs"] = kwargs;
|
|
40186
|
+
}
|
|
40187
|
+
}
|
|
40188
|
+
}
|
|
40189
|
+
return ret;
|
|
40190
|
+
}
|
|
40164
40191
|
function readULeb128(data, index2) {
|
|
40165
40192
|
let res = 0n;
|
|
40166
40193
|
let accum = 0n;
|
|
@@ -40329,32 +40356,6 @@ function serializeOne(data) {
|
|
|
40329
40356
|
function serialize(data) {
|
|
40330
40357
|
return toRlp(data.map(serializeOne));
|
|
40331
40358
|
}
|
|
40332
|
-
function makeCalldataObject(method, args, kwargs) {
|
|
40333
|
-
let ret = {};
|
|
40334
|
-
if (method) {
|
|
40335
|
-
ret["method"] = method;
|
|
40336
|
-
}
|
|
40337
|
-
if (args && args.length > 0) {
|
|
40338
|
-
ret["args"] = args;
|
|
40339
|
-
}
|
|
40340
|
-
if (kwargs) {
|
|
40341
|
-
if (kwargs instanceof Map) {
|
|
40342
|
-
if (kwargs.size > 0) {
|
|
40343
|
-
ret["kwargs"] = kwargs;
|
|
40344
|
-
}
|
|
40345
|
-
} else {
|
|
40346
|
-
let hasVal = false;
|
|
40347
|
-
for (const _k in kwargs) {
|
|
40348
|
-
hasVal = true;
|
|
40349
|
-
break;
|
|
40350
|
-
}
|
|
40351
|
-
if (hasVal) {
|
|
40352
|
-
ret["kwargs"] = kwargs;
|
|
40353
|
-
}
|
|
40354
|
-
}
|
|
40355
|
-
}
|
|
40356
|
-
return ret;
|
|
40357
|
-
}
|
|
40358
40359
|
var contractActions = (client, publicClient) => {
|
|
40359
40360
|
return {
|
|
40360
40361
|
getContractSchema: async (address) => {
|
|
@@ -40385,8 +40386,8 @@ var contractActions = (client, publicClient) => {
|
|
|
40385
40386
|
args: callArgs,
|
|
40386
40387
|
kwargs,
|
|
40387
40388
|
leaderOnly = false,
|
|
40388
|
-
transactionHashVariant = "latest-
|
|
40389
|
-
/*
|
|
40389
|
+
transactionHashVariant = "latest-nonfinal"
|
|
40390
|
+
/* LATEST_NONFINAL */
|
|
40390
40391
|
} = args;
|
|
40391
40392
|
const encodedData = [encode4(makeCalldataObject(functionName, callArgs, kwargs)), leaderOnly];
|
|
40392
40393
|
const serializedData = serialize(encodedData);
|
|
@@ -40537,14 +40538,16 @@ var _sendTransaction = async ({
|
|
|
40537
40538
|
data: encodedData,
|
|
40538
40539
|
type: "legacy",
|
|
40539
40540
|
nonce: Number(nonce),
|
|
40540
|
-
value
|
|
40541
|
+
value,
|
|
40542
|
+
gas: 21000n
|
|
40541
40543
|
});
|
|
40542
40544
|
if (validatedSenderAccount?.type !== "local") {
|
|
40543
40545
|
const formattedRequest = {
|
|
40544
40546
|
from: transactionRequest.from,
|
|
40545
40547
|
to: transactionRequest.to,
|
|
40546
40548
|
data: encodedData,
|
|
40547
|
-
value: transactionRequest.value ? `0x${transactionRequest.value.toString(16)}` : "0x0"
|
|
40549
|
+
value: transactionRequest.value ? `0x${transactionRequest.value.toString(16)}` : "0x0",
|
|
40550
|
+
gas: transactionRequest.gas ? `0x${transactionRequest.gas.toString(16)}` : "0x5208"
|
|
40548
40551
|
};
|
|
40549
40552
|
return await client.request({
|
|
40550
40553
|
method: "eth_sendTransaction",
|
|
@@ -40622,66 +40625,49 @@ function resultToUserFriendlyJson(cd64) {
|
|
|
40622
40625
|
payload
|
|
40623
40626
|
};
|
|
40624
40627
|
}
|
|
40625
|
-
var
|
|
40626
|
-
|
|
40627
|
-
|
|
40628
|
-
|
|
40629
|
-
|
|
40630
|
-
|
|
40631
|
-
|
|
40632
|
-
|
|
40633
|
-
|
|
40634
|
-
|
|
40635
|
-
|
|
40636
|
-
|
|
40637
|
-
|
|
40638
|
-
|
|
40639
|
-
|
|
40640
|
-
|
|
40641
|
-
|
|
40642
|
-
|
|
40643
|
-
|
|
40644
|
-
|
|
40645
|
-
|
|
40646
|
-
|
|
40647
|
-
|
|
40648
|
-
|
|
40649
|
-
|
|
40650
|
-
|
|
40651
|
-
|
|
40652
|
-
|
|
40653
|
-
|
|
40654
|
-
|
|
40655
|
-
|
|
40656
|
-
|
|
40657
|
-
|
|
40658
|
-
|
|
40659
|
-
|
|
40660
|
-
|
|
40661
|
-
|
|
40662
|
-
|
|
40663
|
-
|
|
40664
|
-
|
|
40665
|
-
|
|
40666
|
-
|
|
40667
|
-
|
|
40668
|
-
transaction2.statusName = localnetStatus;
|
|
40669
|
-
return _decodeLocalnetTransaction(transaction2);
|
|
40670
|
-
}
|
|
40671
|
-
const transaction = await publicClient.readContract({
|
|
40672
|
-
address: client.chain.consensusDataContract?.address,
|
|
40673
|
-
abi: client.chain.consensusDataContract?.abi,
|
|
40674
|
-
functionName: "getTransactionData",
|
|
40675
|
-
args: [
|
|
40676
|
-
hash2,
|
|
40677
|
-
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
40678
|
-
// unix seconds
|
|
40679
|
-
]
|
|
40680
|
-
});
|
|
40681
|
-
return _decodeTransaction(transaction);
|
|
40682
|
-
}
|
|
40683
|
-
});
|
|
40684
|
-
var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
40628
|
+
var FIELDS_TO_REMOVE = [
|
|
40629
|
+
"raw",
|
|
40630
|
+
"contract_state",
|
|
40631
|
+
"base64",
|
|
40632
|
+
"consensus_history",
|
|
40633
|
+
"tx_data",
|
|
40634
|
+
"eq_blocks_outputs",
|
|
40635
|
+
"r",
|
|
40636
|
+
"s",
|
|
40637
|
+
"v",
|
|
40638
|
+
"created_timestamp",
|
|
40639
|
+
"current_timestamp",
|
|
40640
|
+
"tx_execution_hash",
|
|
40641
|
+
"random_seed",
|
|
40642
|
+
"states",
|
|
40643
|
+
"contract_code",
|
|
40644
|
+
"appeal_failed",
|
|
40645
|
+
"appeal_leader_timeout",
|
|
40646
|
+
"appeal_processing_time",
|
|
40647
|
+
"appeal_undetermined",
|
|
40648
|
+
"appealed",
|
|
40649
|
+
"timestamp_appeal",
|
|
40650
|
+
"config_rotation_rounds",
|
|
40651
|
+
"rotation_count",
|
|
40652
|
+
"queue_position",
|
|
40653
|
+
"queue_type",
|
|
40654
|
+
"leader_timeout_validators",
|
|
40655
|
+
"triggered_by",
|
|
40656
|
+
"num_of_initial_validators",
|
|
40657
|
+
"timestamp_awaiting_finalization",
|
|
40658
|
+
"last_vote_timestamp",
|
|
40659
|
+
"read_state_block_range",
|
|
40660
|
+
"tx_slot",
|
|
40661
|
+
"blockHash",
|
|
40662
|
+
"blockNumber",
|
|
40663
|
+
"to",
|
|
40664
|
+
"transactionIndex"
|
|
40665
|
+
];
|
|
40666
|
+
var FIELD_NAME_MAPPINGS = {
|
|
40667
|
+
statusName: "status_name",
|
|
40668
|
+
typeHex: "type"
|
|
40669
|
+
};
|
|
40670
|
+
var decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
40685
40671
|
if (!rlpEncodedAppData || rlpEncodedAppData === "0x" || rlpEncodedAppData.length <= 2) {
|
|
40686
40672
|
return null;
|
|
40687
40673
|
}
|
|
@@ -40719,8 +40705,8 @@ var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
|
40719
40705
|
return null;
|
|
40720
40706
|
}
|
|
40721
40707
|
};
|
|
40722
|
-
var
|
|
40723
|
-
const txDataDecoded =
|
|
40708
|
+
var decodeTransaction = (tx) => {
|
|
40709
|
+
const txDataDecoded = decodeInputData(tx.txData, tx.recipient);
|
|
40724
40710
|
const decodedTx = {
|
|
40725
40711
|
...tx,
|
|
40726
40712
|
txData: tx.txData,
|
|
@@ -40755,7 +40741,78 @@ var _decodeTransaction = (tx) => {
|
|
|
40755
40741
|
};
|
|
40756
40742
|
return decodedTx;
|
|
40757
40743
|
};
|
|
40758
|
-
var
|
|
40744
|
+
var simplifyTransactionReceipt = (tx) => {
|
|
40745
|
+
const simplifyObject = (obj, path6 = "") => {
|
|
40746
|
+
if (obj === null || obj === void 0) return obj;
|
|
40747
|
+
if (Array.isArray(obj)) {
|
|
40748
|
+
return obj.map((item) => simplifyObject(item, path6)).filter((item) => item !== void 0);
|
|
40749
|
+
}
|
|
40750
|
+
if (typeof obj === "object") {
|
|
40751
|
+
const result = {};
|
|
40752
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
40753
|
+
const currentPath = path6 ? `${path6}.${key}` : key;
|
|
40754
|
+
if (FIELDS_TO_REMOVE.includes(key)) {
|
|
40755
|
+
continue;
|
|
40756
|
+
}
|
|
40757
|
+
if (key === "node_config" && !path6.includes("consensus_data")) {
|
|
40758
|
+
continue;
|
|
40759
|
+
}
|
|
40760
|
+
if (key === "consensus_data" && typeof value === "object" && value !== null) {
|
|
40761
|
+
const simplifiedConsensus = {};
|
|
40762
|
+
if ("votes" in value) {
|
|
40763
|
+
simplifiedConsensus.votes = value.votes;
|
|
40764
|
+
}
|
|
40765
|
+
if ("leader_receipt" in value && Array.isArray(value.leader_receipt)) {
|
|
40766
|
+
simplifiedConsensus.leader_receipt = value.leader_receipt.map((receipt) => {
|
|
40767
|
+
const simplifiedReceipt = {};
|
|
40768
|
+
["execution_result", "genvm_result", "mode", "vote", "node_config"].forEach((field) => {
|
|
40769
|
+
if (field in receipt) {
|
|
40770
|
+
simplifiedReceipt[field] = receipt[field];
|
|
40771
|
+
}
|
|
40772
|
+
});
|
|
40773
|
+
if (receipt.calldata && typeof receipt.calldata === "object" && "readable" in receipt.calldata) {
|
|
40774
|
+
simplifiedReceipt.calldata = { readable: receipt.calldata.readable };
|
|
40775
|
+
}
|
|
40776
|
+
if (receipt.eq_outputs) {
|
|
40777
|
+
simplifiedReceipt.eq_outputs = simplifyObject(receipt.eq_outputs, currentPath);
|
|
40778
|
+
}
|
|
40779
|
+
if (receipt.result) {
|
|
40780
|
+
simplifiedReceipt.result = simplifyObject(receipt.result, currentPath);
|
|
40781
|
+
}
|
|
40782
|
+
return simplifiedReceipt;
|
|
40783
|
+
});
|
|
40784
|
+
}
|
|
40785
|
+
if ("validators" in value && Array.isArray(value.validators)) {
|
|
40786
|
+
const simplifiedValidators = value.validators.map((validator) => {
|
|
40787
|
+
const simplifiedValidator = {};
|
|
40788
|
+
["execution_result", "genvm_result", "mode", "vote", "node_config"].forEach((field) => {
|
|
40789
|
+
if (field in validator) {
|
|
40790
|
+
simplifiedValidator[field] = validator[field];
|
|
40791
|
+
}
|
|
40792
|
+
});
|
|
40793
|
+
return simplifiedValidator;
|
|
40794
|
+
}).filter((validator) => Object.keys(validator).length > 0);
|
|
40795
|
+
if (simplifiedValidators.length > 0) {
|
|
40796
|
+
simplifiedConsensus.validators = simplifiedValidators;
|
|
40797
|
+
}
|
|
40798
|
+
}
|
|
40799
|
+
result[key] = simplifiedConsensus;
|
|
40800
|
+
continue;
|
|
40801
|
+
}
|
|
40802
|
+
const simplifiedValue = simplifyObject(value, currentPath);
|
|
40803
|
+
const shouldInclude = simplifiedValue !== void 0 && !(typeof simplifiedValue === "object" && simplifiedValue !== null && Object.keys(simplifiedValue).length === 0);
|
|
40804
|
+
if (shouldInclude || simplifiedValue === 0) {
|
|
40805
|
+
const mappedKey = FIELD_NAME_MAPPINGS[key] || key;
|
|
40806
|
+
result[mappedKey] = simplifiedValue;
|
|
40807
|
+
}
|
|
40808
|
+
}
|
|
40809
|
+
return result;
|
|
40810
|
+
}
|
|
40811
|
+
return obj;
|
|
40812
|
+
};
|
|
40813
|
+
return simplifyObject({ ...tx });
|
|
40814
|
+
};
|
|
40815
|
+
var decodeLocalnetTransaction = (tx) => {
|
|
40759
40816
|
if (!tx.data) return tx;
|
|
40760
40817
|
try {
|
|
40761
40818
|
const leaderReceipt = tx.consensus_data?.leader_receipt;
|
|
@@ -40772,11 +40829,20 @@ var _decodeLocalnetTransaction = (tx) => {
|
|
|
40772
40829
|
};
|
|
40773
40830
|
}
|
|
40774
40831
|
if (receipt.eq_outputs) {
|
|
40775
|
-
|
|
40776
|
-
|
|
40777
|
-
|
|
40778
|
-
|
|
40779
|
-
|
|
40832
|
+
const decodedOutputs = {};
|
|
40833
|
+
for (const [key, value] of Object.entries(receipt.eq_outputs)) {
|
|
40834
|
+
if (typeof value === "object" && value !== null) {
|
|
40835
|
+
decodedOutputs[key] = value;
|
|
40836
|
+
} else {
|
|
40837
|
+
try {
|
|
40838
|
+
decodedOutputs[key] = resultToUserFriendlyJson(value);
|
|
40839
|
+
} catch (e2) {
|
|
40840
|
+
console.warn(`Error decoding eq_output ${key}: ${e2}`);
|
|
40841
|
+
decodedOutputs[key] = value;
|
|
40842
|
+
}
|
|
40843
|
+
}
|
|
40844
|
+
}
|
|
40845
|
+
receipt.eq_outputs = decodedOutputs;
|
|
40780
40846
|
}
|
|
40781
40847
|
});
|
|
40782
40848
|
}
|
|
@@ -40787,10 +40853,75 @@ var _decodeLocalnetTransaction = (tx) => {
|
|
|
40787
40853
|
};
|
|
40788
40854
|
}
|
|
40789
40855
|
} catch (e2) {
|
|
40790
|
-
console.error("Error in
|
|
40856
|
+
console.error("Error in decodeLocalnetTransaction:", e2);
|
|
40791
40857
|
}
|
|
40792
40858
|
return tx;
|
|
40793
40859
|
};
|
|
40860
|
+
var receiptActions = (client, publicClient) => ({
|
|
40861
|
+
waitForTransactionReceipt: async ({
|
|
40862
|
+
hash: hash2,
|
|
40863
|
+
status = "ACCEPTED",
|
|
40864
|
+
interval = transactionsConfig.waitInterval,
|
|
40865
|
+
retries = transactionsConfig.retries,
|
|
40866
|
+
fullTransaction = false
|
|
40867
|
+
}) => {
|
|
40868
|
+
const transaction = await client.getTransaction({
|
|
40869
|
+
hash: hash2
|
|
40870
|
+
});
|
|
40871
|
+
if (!transaction) {
|
|
40872
|
+
throw new Error("Transaction not found");
|
|
40873
|
+
}
|
|
40874
|
+
const transactionStatusString = String(transaction.status);
|
|
40875
|
+
const transactionStatusFinalized = transactionsStatusNameToNumber[
|
|
40876
|
+
"FINALIZED"
|
|
40877
|
+
/* FINALIZED */
|
|
40878
|
+
];
|
|
40879
|
+
const requestedStatus = transactionsStatusNameToNumber[status];
|
|
40880
|
+
if (transactionStatusString === requestedStatus || status === "ACCEPTED" && transactionStatusString === transactionStatusFinalized) {
|
|
40881
|
+
let finalTransaction = transaction;
|
|
40882
|
+
if (client.chain.id === localnet.id) {
|
|
40883
|
+
finalTransaction = decodeLocalnetTransaction(transaction);
|
|
40884
|
+
}
|
|
40885
|
+
if (!fullTransaction) {
|
|
40886
|
+
return simplifyTransactionReceipt(finalTransaction);
|
|
40887
|
+
}
|
|
40888
|
+
return finalTransaction;
|
|
40889
|
+
}
|
|
40890
|
+
if (retries === 0) {
|
|
40891
|
+
throw new Error("Transaction status is not " + status);
|
|
40892
|
+
}
|
|
40893
|
+
await sleep(interval);
|
|
40894
|
+
return receiptActions(client, publicClient).waitForTransactionReceipt({
|
|
40895
|
+
hash: hash2,
|
|
40896
|
+
status,
|
|
40897
|
+
interval,
|
|
40898
|
+
retries: retries - 1,
|
|
40899
|
+
fullTransaction
|
|
40900
|
+
});
|
|
40901
|
+
}
|
|
40902
|
+
});
|
|
40903
|
+
var transactionActions = (client, publicClient) => ({
|
|
40904
|
+
getTransaction: async ({ hash: hash2 }) => {
|
|
40905
|
+
if (client.chain.id === localnet.id) {
|
|
40906
|
+
const transaction2 = await client.getTransaction({ hash: hash2 });
|
|
40907
|
+
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" : transaction2.status;
|
|
40908
|
+
transaction2.status = Number(transactionsStatusNameToNumber[localnetStatus]);
|
|
40909
|
+
transaction2.statusName = localnetStatus;
|
|
40910
|
+
return decodeLocalnetTransaction(transaction2);
|
|
40911
|
+
}
|
|
40912
|
+
const transaction = await publicClient.readContract({
|
|
40913
|
+
address: client.chain.consensusDataContract?.address,
|
|
40914
|
+
abi: client.chain.consensusDataContract?.abi,
|
|
40915
|
+
functionName: "getTransactionData",
|
|
40916
|
+
args: [
|
|
40917
|
+
hash2,
|
|
40918
|
+
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
40919
|
+
// unix seconds
|
|
40920
|
+
]
|
|
40921
|
+
});
|
|
40922
|
+
return decodeTransaction(transaction);
|
|
40923
|
+
}
|
|
40924
|
+
});
|
|
40794
40925
|
var snapID = {
|
|
40795
40926
|
local: "local:http://localhost:8081",
|
|
40796
40927
|
npm: "npm:genlayer-wallet-plugin"
|
|
@@ -40923,9 +41054,13 @@ var getCustomTransportConfig = (config) => {
|
|
|
40923
41054
|
async request({ method, params = [] }) {
|
|
40924
41055
|
if (method.startsWith("eth_") && isAddress2) {
|
|
40925
41056
|
try {
|
|
40926
|
-
|
|
41057
|
+
const provider = config.provider || window.ethereum;
|
|
41058
|
+
if (!provider) {
|
|
41059
|
+
throw new Error("No wallet provider available");
|
|
41060
|
+
}
|
|
41061
|
+
return await provider.request({ method, params });
|
|
40927
41062
|
} catch (err) {
|
|
40928
|
-
console.warn(`Error using
|
|
41063
|
+
console.warn(`Error using provider for method ${method}:`, err);
|
|
40929
41064
|
throw err;
|
|
40930
41065
|
}
|
|
40931
41066
|
} else {
|
|
@@ -40963,7 +41098,7 @@ var createClient2 = (config = { chain: localnet }) => {
|
|
|
40963
41098
|
if (config.endpoint) {
|
|
40964
41099
|
chainConfig.rpcUrls.default.http = [config.endpoint];
|
|
40965
41100
|
}
|
|
40966
|
-
const customTransport = custom(getCustomTransportConfig(config));
|
|
41101
|
+
const customTransport = custom(getCustomTransportConfig(config), { retryCount: 0, retryDelay: 0 });
|
|
40967
41102
|
const publicClient = createPublicClient2(chainConfig, customTransport).extend(
|
|
40968
41103
|
publicActions
|
|
40969
41104
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genlayer",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "GenLayer Command Line Tool",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"dotenv": "^17.0.0",
|
|
65
65
|
"ethers": "^6.13.4",
|
|
66
66
|
"fs-extra": "^11.3.0",
|
|
67
|
-
"genlayer-js": "
|
|
67
|
+
"genlayer-js": "0.15.1",
|
|
68
68
|
"inquirer": "^12.0.0",
|
|
69
69
|
"keytar": "^7.9.0",
|
|
70
70
|
"node-fetch": "^3.0.0",
|