lib/session/selectors/index.js
import debugModule from "debug";
const debug = debugModule("debugger:session:selectors");
import { createSelectorTree, createLeaf } from "reselect-tree";
import evm from "lib/evm/selectors";
import solidity from "lib/solidity/selectors";
const session = createSelectorTree({
/**
* session.info
*/
info: {
/**
* session.info.affectedInstances
*/
affectedInstances: createLeaf(
[evm.info.instances, evm.info.contexts, solidity.info.sources, solidity.info.sourceMaps],
(instances, contexts, sources, sourceMaps) => Object.assign({},
...Object.entries(instances).map(
([address, {context}]) => {
let { contractName, binary } = contexts[context];
let { sourceMap } = sourceMaps[context];
let { source } = sourceMap ?
// look for source ID between second and third colons (HACK)
sources[sourceMap.match(/^[^:]+:[^:]+:([^:]+):/)[1]] :
{};
return {
[address]: {
contractName, source, binary
}
};
}
)
)
)
}
});
export default session;