update decodeEvent, convert address to lowercase
This commit is contained in:
parent
039c07ff1c
commit
cf4af92b81
29
dist/utils/chain.util.cjs
vendored
29
dist/utils/chain.util.cjs
vendored
@ -19431,18 +19431,13 @@ function checkPersionalSign(message, address, signature) {
|
|||||||
var getTopics = (abi) => {
|
var getTopics = (abi) => {
|
||||||
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
||||||
};
|
};
|
||||||
var decodeEvent = (abi, eventData) => {
|
var parseOne = (input, value) => {
|
||||||
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[]") {
|
if (input.type === "tuple[]") {
|
||||||
decodedData[input.name] = result[i].map((item) => {
|
return value.map((item) => {
|
||||||
let itemData = {};
|
let itemData = {};
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j];
|
const component = input.components[j];
|
||||||
itemData[component.name] = item[j];
|
itemData[component.name] = parseOne(component, item[j]);
|
||||||
}
|
}
|
||||||
return itemData;
|
return itemData;
|
||||||
});
|
});
|
||||||
@ -19450,12 +19445,24 @@ var decodeEvent = (abi, eventData) => {
|
|||||||
let itemData = {};
|
let itemData = {};
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j];
|
const component = input.components[j];
|
||||||
itemData[component.name] = result[i][j];
|
itemData[component.name] = parseOne(component, value[j]);
|
||||||
}
|
}
|
||||||
decodedData[input.name] = itemData;
|
return itemData;
|
||||||
} else {
|
} else {
|
||||||
decodedData[input.name] = result[i];
|
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];
|
||||||
|
const value = result[i];
|
||||||
|
decodedData[input.name] = parseOne(input, value);
|
||||||
}
|
}
|
||||||
return decodedData;
|
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
29
dist/utils/chain.util.js
vendored
29
dist/utils/chain.util.js
vendored
@ -19426,18 +19426,13 @@ function checkPersionalSign(message, address, signature) {
|
|||||||
var getTopics = (abi) => {
|
var getTopics = (abi) => {
|
||||||
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
return (0, import_web3_utils.keccak256)((0, import_web3_utils._jsonInterfaceMethodToString)(abi));
|
||||||
};
|
};
|
||||||
var decodeEvent = (abi, eventData) => {
|
var parseOne = (input, value) => {
|
||||||
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[]") {
|
if (input.type === "tuple[]") {
|
||||||
decodedData[input.name] = result[i].map((item) => {
|
return value.map((item) => {
|
||||||
let itemData = {};
|
let itemData = {};
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j];
|
const component = input.components[j];
|
||||||
itemData[component.name] = item[j];
|
itemData[component.name] = parseOne(component, item[j]);
|
||||||
}
|
}
|
||||||
return itemData;
|
return itemData;
|
||||||
});
|
});
|
||||||
@ -19445,12 +19440,24 @@ var decodeEvent = (abi, eventData) => {
|
|||||||
let itemData = {};
|
let itemData = {};
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j];
|
const component = input.components[j];
|
||||||
itemData[component.name] = result[i][j];
|
itemData[component.name] = parseOne(component, value[j]);
|
||||||
}
|
}
|
||||||
decodedData[input.name] = itemData;
|
return itemData;
|
||||||
} else {
|
} else {
|
||||||
decodedData[input.name] = result[i];
|
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];
|
||||||
|
const value = result[i];
|
||||||
|
decodedData[input.name] = parseOne(input, value);
|
||||||
}
|
}
|
||||||
return decodedData;
|
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": {
|
"scripts": {
|
||||||
"build": "tsup",
|
"build": "tsup",
|
||||||
"lint": "eslint --ext .ts src/**",
|
"lint": "eslint --ext .ts src/**",
|
||||||
"format": "eslint --ext .ts src/** --fix"
|
"format": "eslint --ext .ts src/** --fix",
|
||||||
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
@ -39,14 +40,18 @@
|
|||||||
"web3": "^1.7.4"
|
"web3": "^1.7.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@jest/globals": "^29.7.0",
|
||||||
"@types/crypto-js": "^4.2.1",
|
"@types/crypto-js": "^4.2.1",
|
||||||
|
"@types/jest": "^29.5.12",
|
||||||
"@types/node-fetch": "^2.6.11",
|
"@types/node-fetch": "^2.6.11",
|
||||||
"@types/redis": "^2.8.28",
|
"@types/redis": "^2.8.28",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
||||||
"@typescript-eslint/parser": "^6.19.0",
|
"@typescript-eslint/parser": "^6.19.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
|
"jest": "^29.7.0",
|
||||||
"prettier": "^3.2.3",
|
"prettier": "^3.2.3",
|
||||||
|
"ts-jest": "^29.1.2",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"tsup": "^8.0.1",
|
"tsup": "^8.0.1",
|
||||||
"typescript": "^5.3.3"
|
"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,19 +109,13 @@ export const getTopics = (abi: AbiItem) => {
|
|||||||
return keccak256(_jsonInterfaceMethodToString(abi))
|
return keccak256(_jsonInterfaceMethodToString(abi))
|
||||||
}
|
}
|
||||||
|
|
||||||
export const decodeEvent = (abi: AbiItem, eventData: { data: string; topics: string[] }) => {
|
const parseOne = (input: AbiInput, value: any) => {
|
||||||
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[]') {
|
if (input.type === 'tuple[]') {
|
||||||
// @ts-ignore
|
return value.map((item: any) => {
|
||||||
decodedData[input.name] = result[i].map(item => {
|
|
||||||
let itemData = {}
|
let itemData = {}
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j]
|
const component = input.components[j]
|
||||||
itemData[component.name] = item[j]
|
itemData[component.name] = parseOne(component, item[j])
|
||||||
}
|
}
|
||||||
return itemData
|
return itemData
|
||||||
})
|
})
|
||||||
@ -129,12 +123,25 @@ export const decodeEvent = (abi: AbiItem, eventData: { data: string; topics: str
|
|||||||
let itemData = {}
|
let itemData = {}
|
||||||
for (let j = 0; j < input.components.length; j++) {
|
for (let j = 0; j < input.components.length; j++) {
|
||||||
const component = input.components[j]
|
const component = input.components[j]
|
||||||
itemData[component.name] = result[i][j]
|
itemData[component.name] = parseOne(component, value[j])
|
||||||
}
|
}
|
||||||
decodedData[input.name] = itemData
|
return itemData
|
||||||
} else {
|
} else {
|
||||||
decodedData[input.name] = result[i]
|
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]
|
||||||
|
const value = result[i]
|
||||||
|
decodedData[input.name] = parseOne(input, value)
|
||||||
}
|
}
|
||||||
return decodedData
|
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