function prepPFunction(data) {
const allowedGapiKeys = [
'type', 'name', 'inputs', 'outputs',
'stateMutability', 'payable', 'constant',
'anonymous',
];
let pclass;
if (!data.pclass) {
pclass = {
_id: '0x0',
name: 'unknown',
type: 'unknown',
deployment: 'unknown',
}
} else {
pclass = {
_id: data.pclass._id,
name: data.pclass.name,
type: data.pclass.type,
deployment: data.pclass.deployment,
}
}
const gapi = JSON.parse(JSON.stringify(data.pfunction.gapi));
Object.keys(gapi).forEach(key => {
if (!allowedGapiKeys.includes(key)) {
delete gapi[key];
}
});
if (!gapi.stateMutability) {
gapi.stateMutability = gapi.payable ? 'payable' : (gapi.constant ? 'view' : 'nonpayable');
}
let pfunc = {
_id: data._id,
pclassid: data.pclassid,
pfunction: {
signature: data.pfunction.signature,
gapi,
graph: data.pfunction.graph || {},
sources: data.pfunction.sources || {},
},
timestamp: data.timestamp,
pclass,
}
if (pfunc.pclass.type === 'sol') {
pfunc = solidityBuilder.enrichAbi(pfunc);
}
return pfunc;
}