update decodeEvent, convert address to lowercase
This commit is contained in:
parent
039c07ff1c
commit
cf4af92b81
45
dist/utils/chain.util.cjs
vendored
45
dist/utils/chain.util.cjs
vendored
@ -19431,31 +19431,38 @@ function checkPersionalSign(message, address, signature) {
|
||||
var getTopics = (abi) => {
|
||||
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
||||
};
|
||||
var parseOne = (input, value) => {
|
||||
if (input.type === "tuple[]") {
|
||||
return value.map((item) => {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = parseOne(component, item[j]);
|
||||
}
|
||||
return itemData;
|
||||
});
|
||||
} else if (input.type === "tuple") {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = parseOne(component, value[j]);
|
||||
}
|
||||
return itemData;
|
||||
} else {
|
||||
if (input.type === "address") {
|
||||
return value.toLowerCase();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
};
|
||||
var decodeEvent = (abi, eventData) => {
|
||||
const abiInputs = abi.inputs;
|
||||
let result = import_web3_eth_abi.default.decodeLog(abiInputs, eventData.data, eventData.topics.slice(1));
|
||||
let decodedData = {};
|
||||
for (let i = 0; i < abiInputs.length; i++) {
|
||||
const input = abiInputs[i];
|
||||
if (input.type === "tuple[]") {
|
||||
decodedData[input.name] = result[i].map((item) => {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = item[j];
|
||||
}
|
||||
return itemData;
|
||||
});
|
||||
} else if (input.type === "tuple") {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = result[i][j];
|
||||
}
|
||||
decodedData[input.name] = itemData;
|
||||
} else {
|
||||
decodedData[input.name] = result[i];
|
||||
}
|
||||
const value = result[i];
|
||||
decodedData[input.name] = parseOne(input, value);
|
||||
}
|
||||
return decodedData;
|
||||
};
|
||||
|
2
dist/utils/chain.util.cjs.map
vendored
2
dist/utils/chain.util.cjs.map
vendored
File diff suppressed because one or more lines are too long
45
dist/utils/chain.util.js
vendored
45
dist/utils/chain.util.js
vendored
@ -19426,31 +19426,38 @@ function checkPersionalSign(message, address, signature) {
|
||||
var getTopics = (abi) => {
|
||||
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
||||
};
|
||||
var parseOne = (input, value) => {
|
||||
if (input.type === "tuple[]") {
|
||||
return value.map((item) => {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = parseOne(component, item[j]);
|
||||
}
|
||||
return itemData;
|
||||
});
|
||||
} else if (input.type === "tuple") {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = parseOne(component, value[j]);
|
||||
}
|
||||
return itemData;
|
||||
} else {
|
||||
if (input.type === "address") {
|
||||
return value.toLowerCase();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
};
|
||||
var decodeEvent = (abi, eventData) => {
|
||||
const abiInputs = abi.inputs;
|
||||
let result = import_web3_eth_abi.default.decodeLog(abiInputs, eventData.data, eventData.topics.slice(1));
|
||||
let decodedData = {};
|
||||
for (let i = 0; i < abiInputs.length; i++) {
|
||||
const input = abiInputs[i];
|
||||
if (input.type === "tuple[]") {
|
||||
decodedData[input.name] = result[i].map((item) => {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = item[j];
|
||||
}
|
||||
return itemData;
|
||||
});
|
||||
} else if (input.type === "tuple") {
|
||||
let itemData = {};
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j];
|
||||
itemData[component.name] = result[i][j];
|
||||
}
|
||||
decodedData[input.name] = itemData;
|
||||
} else {
|
||||
decodedData[input.name] = result[i];
|
||||
}
|
||||
const value = result[i];
|
||||
decodedData[input.name] = parseOne(input, value);
|
||||
}
|
||||
return decodedData;
|
||||
};
|
||||
|
2
dist/utils/chain.util.js.map
vendored
2
dist/utils/chain.util.js.map
vendored
File diff suppressed because one or more lines are too long
5
jest.config.js
Normal file
5
jest.config.js
Normal file
@ -0,0 +1,5 @@
|
||||
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
||||
module.exports = {
|
||||
preset: 'ts-jest',
|
||||
testEnvironment: 'node',
|
||||
}
|
@ -26,7 +26,8 @@
|
||||
"scripts": {
|
||||
"build": "tsup",
|
||||
"lint": "eslint --ext .ts src/**",
|
||||
"format": "eslint --ext .ts src/** --fix"
|
||||
"format": "eslint --ext .ts src/** --fix",
|
||||
"test": "jest"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
@ -39,14 +40,18 @@
|
||||
"web3": "^1.7.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@jest/globals": "^29.7.0",
|
||||
"@types/crypto-js": "^4.2.1",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node-fetch": "^2.6.11",
|
||||
"@types/redis": "^2.8.28",
|
||||
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
||||
"@typescript-eslint/parser": "^6.19.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"jest": "^29.7.0",
|
||||
"prettier": "^3.2.3",
|
||||
"ts-jest": "^29.1.2",
|
||||
"ts-node": "^10.9.2",
|
||||
"tsup": "^8.0.1",
|
||||
"typescript": "^5.3.3"
|
||||
|
8
src/test.ts
Normal file
8
src/test.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { convert } from "utils/number.util"
|
||||
|
||||
|
||||
let alphabet = '3fBCM8j17XNA9xYun4wmLWep2oHFlhPcgyEJskqOz6GK0UtV5ZRaDSvrTbidQI'
|
||||
let id1 = '95c9a166b7bd65'
|
||||
console.log(convert({ numStr: id1, base: 16, to: 52, alphabet }))
|
||||
let id2 = '95c9a166b7bd66'
|
||||
console.log(convert({ numStr: id2, base: 16, to: 52, alphabet }))
|
@ -109,32 +109,39 @@ export const getTopics = (abi: AbiItem) => {
|
||||
return keccak256(_jsonInterfaceMethodToString(abi))
|
||||
}
|
||||
|
||||
const parseOne = (input: AbiInput, value: any) => {
|
||||
if (input.type === 'tuple[]') {
|
||||
return value.map((item: any) => {
|
||||
let itemData = {}
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j]
|
||||
itemData[component.name] = parseOne(component, item[j])
|
||||
}
|
||||
return itemData
|
||||
})
|
||||
} else if (input.type === 'tuple') {
|
||||
let itemData = {}
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j]
|
||||
itemData[component.name] = parseOne(component, value[j])
|
||||
}
|
||||
return itemData
|
||||
} else {
|
||||
if (input.type === 'address') {
|
||||
return value.toLowerCase()
|
||||
}
|
||||
return value
|
||||
}
|
||||
}
|
||||
|
||||
export const decodeEvent = (abi: AbiItem, eventData: { data: string; topics: string[] }) => {
|
||||
const abiInputs = abi.inputs
|
||||
let result = web3abi.decodeLog(abiInputs, eventData.data, eventData.topics.slice(1))
|
||||
let decodedData: any = {}
|
||||
for (let i = 0; i < abiInputs.length; i++) {
|
||||
const input: AbiInput = abiInputs[i]
|
||||
if (input.type === 'tuple[]') {
|
||||
// @ts-ignore
|
||||
decodedData[input.name] = result[i].map(item => {
|
||||
let itemData = {}
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j]
|
||||
itemData[component.name] = item[j]
|
||||
}
|
||||
return itemData
|
||||
})
|
||||
} else if (input.type === 'tuple') {
|
||||
let itemData = {}
|
||||
for (let j = 0; j < input.components.length; j++) {
|
||||
const component = input.components[j]
|
||||
itemData[component.name] = result[i][j]
|
||||
}
|
||||
decodedData[input.name] = itemData
|
||||
} else {
|
||||
decodedData[input.name] = result[i]
|
||||
}
|
||||
const value = result[i]
|
||||
decodedData[input.name] = parseOne(input, value)
|
||||
}
|
||||
return decodedData
|
||||
}
|
||||
|
13
test/number.util.test.ts
Normal file
13
test/number.util.test.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { describe, expect } from '@jest/globals'
|
||||
import { convert } from '../src/utils/number.util'
|
||||
|
||||
describe('Number Utils Tests', () => {
|
||||
it('should return true for voucher code', async () => {
|
||||
let alphabet = '3fBCM8j17XNA9xYun4wmLWep2oHFlhPcgyEJskqOz6GK0UtV5ZRaDSvrTbidQI'
|
||||
let id1 = '95c9a166b7bd65'
|
||||
let val1 = convert({ numStr: id1, base: 16, to: 52, alphabet })
|
||||
let id2 = '95c9a166b7bd66'
|
||||
let val2 = convert({ numStr: id2, base: 16, to: 52, alphabet })
|
||||
// expect(result).toBe(true)
|
||||
})
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user