// 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. let {session, contextGroup, Protocol} = InspectorTest.start('Checks basic ES6 modules support.'); var module1 = ` export function foo() { console.log('module1'); return 42; } export let a1 = 1`; var module2 = ` export function foo() { console.log('module2'); return 239; } export let a2 = 2`; var module3 = ` import { foo as foo1 } from 'module1'; import { foo as foo2 } from 'module2'; // check that queryObjects works with JSModuleNamespace import * as foo3 from 'module2'; console.log(foo1()); console.log(foo2()); import { a1 } from 'module1'; import { a2 } from 'module2'; debugger; foo3; `; var module4 = '}'; (async function test() { session.setupScriptMap(); // We get scriptParsed events for modules .. Protocol.Debugger.onScriptParsed(InspectorTest.logMessage); // .. scriptFailed to parse for modules with syntax error .. Protocol.Debugger.onScriptFailedToParse(InspectorTest.logMessage); // .. API messages from modules contain correct stack trace .. Protocol.Runtime.onConsoleAPICalled(message => { InspectorTest.log(`console.log(${message.params.args[0].value})`); session.logCallFrames(message.params.stackTrace.callFrames); InspectorTest.log(''); }); // .. we could break inside module and scope contains correct list of variables .. Protocol.Debugger.onPaused(message => { InspectorTest.logMessage(message); Protocol.Runtime.getProperties({ objectId: message.params.callFrames[0].scopeChain[0].object.objectId}) .then(InspectorTest.logMessage) .then(() => Protocol.Debugger.resume()); }); // .. we process uncaught errors from modules correctly. Protocol.Runtime.onExceptionThrown(InspectorTest.logMessage); Protocol.Runtime.enable(); await Protocol.Debugger.enable(); await contextGroup.addModule(module1, 'module1'); await contextGroup.addModule(module2, 'module2'); await contextGroup.addModule(module3, 'module3'); await contextGroup.addModule(module4, 'module4'); await InspectorTest.waitForPendingTasks(); Protocol.Debugger.onScriptParsed(null); Protocol.Runtime.evaluate({ includeCommandLineAPI: true, expression: 'queryObjects(Function)' }); const {params:{object:{objectId}}} = await Protocol.Runtime.onceInspectRequested(); const {result:{objects}} = await Protocol.Runtime.queryObjects({ prototypeObjectId: objectId }); InspectorTest.log('queryObjects returns ' + objects.description.replace(/\d+/, 'N')); InspectorTest.completeTest(); })();