From bbd5750bb46e8fb745cd014ff67deb9d5d08d1c6 Mon Sep 17 00:00:00 2001 From: Lukas Piatkowski Date: Wed, 18 Jan 2017 04:27:18 -0800 Subject: [PATCH] Sampling Profiler to return urls that open file in nuclide Reviewed By: cwdick Differential Revision: D4422768 fbshipit-source-id: 2e8c4af6e6fae4256fe886b79f5ea6c87986d581 --- .../middleware/jscProfilerMiddleware.js | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/local-cli/server/middleware/jscProfilerMiddleware.js b/local-cli/server/middleware/jscProfilerMiddleware.js index 2410f02f0..018ec1576 100644 --- a/local-cli/server/middleware/jscProfilerMiddleware.js +++ b/local-cli/server/middleware/jscProfilerMiddleware.js @@ -43,6 +43,37 @@ class TreeTransformator { }; } + // private + getFileUrl(source, lineNumber) { + if (!source) { + return ''; + } + + const url = urlLib.parse( + 'https://our.intern.facebook.com/intern/nuclide/open/arc/', + true); + let project = ''; + let root = ''; + + if (source.includes('fbsource/fbandroid/')) { + project = 'facebook-fbandroid'; + root = 'fbsource/fbandroid/'; + } else if (source.includes('fbsource/fbobjc/')) { + project = 'fbobjc'; + root = 'fbsource/fbobjc/'; + } else { + return 'file://' + source; + } + + url.query = { + 'project' : project, + 'paths[0]' : source.substring(source.indexOf(root) + root.length), + 'lines[0]' : [lineNumber], + }; + + return urlLib.format(url); + } + // private transformNode(tree) { if (tree.url in this.urlResults) { @@ -58,7 +89,7 @@ class TreeTransformator { tree.functionName = tree.functionName || functionName; } tree.scriptId = tree.id; - tree.url = 'file://' + original.source; + tree.url = this.getFileUrl(original.source, original.line); tree.lineNumber = original.line; tree.columnNumber = original.column; } else if (tree.deoptReason === 'outside_vm') {