(_bytecode: string, linkReferencesObj?: any)
| 458 | } |
| 459 | |
| 460 | function extractLinkReferences(_bytecode: string, linkReferencesObj?: any): BytecodeWithLinkReferences { |
| 461 | const bytecode = ensure0xPrefix(_bytecode) |
| 462 | // See comment in `extractBytecode` for explanation. |
| 463 | const allLinkReferencesRegex = /__[a-zA-Z0-9/\\:_$.-]{36}__/g |
| 464 | const allReferences = bytecode.match(allLinkReferencesRegex) |
| 465 | if (!allReferences) return { bytecode } |
| 466 | |
| 467 | const uniqueReferences = Array.from(new Set(allReferences)) |
| 468 | const refToNameMap = linkReferencesObj ? extractLinkReferenceContractNames(linkReferencesObj) : {} |
| 469 | const linkReferences = uniqueReferences.map((reference) => |
| 470 | refToNameMap[reference] ? { reference, name: refToNameMap[reference] } : { reference }, |
| 471 | ) |
| 472 | |
| 473 | return { bytecode, linkReferences } |
| 474 | } |
| 475 | |
| 476 | // Returns mapping from link reference (bytecode fake address) to readable contract name |
| 477 | function extractLinkReferenceContractNames(linkReferences: any): Dictionary<string> { |
no test coverage detected
searching dependent graphs…