Home Reference Source

lib/session/selectors/index.js

  1. import debugModule from "debug";
  2. const debug = debugModule("debugger:session:selectors");
  3.  
  4. import { createSelectorTree, createLeaf } from "reselect-tree";
  5.  
  6. import evm from "lib/evm/selectors";
  7. import solidity from "lib/solidity/selectors";
  8.  
  9. const session = createSelectorTree({
  10. /**
  11. * session.info
  12. */
  13. info: {
  14.  
  15. /**
  16. * session.info.affectedInstances
  17. */
  18. affectedInstances: createLeaf(
  19. [evm.info.instances, evm.info.contexts, solidity.info.sources, solidity.info.sourceMaps],
  20.  
  21. (instances, contexts, sources, sourceMaps) => Object.assign({},
  22. ...Object.entries(instances).map(
  23. ([address, {context}]) => {
  24. let { contractName, binary } = contexts[context];
  25. let { sourceMap } = sourceMaps[context];
  26.  
  27. let { source } = sourceMap ?
  28. // look for source ID between second and third colons (HACK)
  29. sources[sourceMap.match(/^[^:]+:[^:]+:([^:]+):/)[1]] :
  30. {};
  31.  
  32. return {
  33. [address]: {
  34. contractName, source, binary
  35. }
  36. };
  37. }
  38. )
  39. )
  40. )
  41. }
  42. });
  43.  
  44. export default session;