|  | // Copyright 2017 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | const {session, contextGroup, Protocol} = | 
|  | InspectorTest.start('Checks liveedit with ES6 modules.'); | 
|  |  | 
|  | const moduleSource = ` | 
|  | export function foo() { | 
|  | console.log('module1'); | 
|  | return 42; | 
|  | } | 
|  | foo()`; | 
|  |  | 
|  | const newModuleSource = ` | 
|  | export function foo() { | 
|  | console.log('patched module1'); | 
|  | return 42; | 
|  | } | 
|  | foo()`; | 
|  |  | 
|  | const callFooSource = ` | 
|  | import { foo } from 'module'; | 
|  | foo();`; | 
|  |  | 
|  | (async function test() { | 
|  | await Protocol.Runtime.enable(); | 
|  | await Protocol.Debugger.enable(); | 
|  | contextGroup.addModule(moduleSource, 'module'); | 
|  | const [{ params: { scriptId } }, { params: { args }}] = [ | 
|  | await Protocol.Debugger.onceScriptParsed(), | 
|  | await Protocol.Runtime.onceConsoleAPICalled() | 
|  | ]; | 
|  | InspectorTest.log('console.log message from function before patching:') | 
|  | InspectorTest.logMessage(args[0]); | 
|  |  | 
|  | const {result} = await Protocol.Debugger.setScriptSource({ | 
|  | scriptId, | 
|  | scriptSource: newModuleSource | 
|  | }); | 
|  | InspectorTest.log('Debugger.setScriptSource result:'); | 
|  | InspectorTest.logMessage(result); | 
|  |  | 
|  | contextGroup.addModule(callFooSource, 'callFoo'); | 
|  | const { params: {args: patchedArgs } } = | 
|  | await Protocol.Runtime.onceConsoleAPICalled(); | 
|  | InspectorTest.log('console.log message from function after patching:') | 
|  | InspectorTest.logMessage(patchedArgs[0]); | 
|  | InspectorTest.completeTest(); | 
|  | })() |