UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.51 kB
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as Platform from"../../core/platform/platform.js";import*as SDK from"../../core/sdk/sdk.js";import*as Workspace from"../../models/workspace/workspace.js";import*as LighthouseReport from"../../third_party/lighthouse/report/report.js";import*as Components from"../../ui/legacy/components/utils/utils.js";import*as UI from"../../ui/legacy/legacy.js";import*as ThemeSupport from"../../ui/legacy/theme_support/theme_support.js";import*as Timeline from"../timeline/timeline.js";const MaxLengthForLinks=40;export class LighthouseReportRenderer{static renderLighthouseReport(e,t,o){let n;t&&(n=async()=>{const e=t.traces.defaultPass;Host.userMetrics.actionTaken(Host.UserMetrics.Action.LighthouseViewTrace),await UI.InspectorView.InspectorView.instance().showPanel("timeline"),Timeline.TimelinePanel.TimelinePanel.instance().loadFromEvents(e.traceEvents)});const r=LighthouseReport.renderReport(e,{disableDarkMode:!0,onViewTrace:n,onSaveFileOverride:async function(t){const o=`${new Common.ParsedURL.ParsedURL(e.finalUrl||e.finalDisplayedUrl).domain().replace(/[^a-z0-9.-]+/gi,"_")}-${Platform.DateUtilities.toISO8601Compact(new Date(e.fetchTime))}${t.type.match("json")?".json":".html"}`,n=await t.text();Workspace.FileManager.FileManager.instance().save(o,n,!0)},onPrintOverride:async function(e){const t=e.cloneNode(!0),n=window.open("","_blank","channelmode=1,status=1,resizable=1");n&&(n.document.body.replaceWith(t),await LighthouseReportRenderer.linkifyNodeDetails(t),o?.beforePrint?.(),n.focus(),n.print(),n.close(),o?.afterPrint?.())},getStandaloneReportHTML:function(){return Lighthouse.ReportGenerator.ReportGenerator.generateReportHtml(e)}});r.classList.add("lh-devtools");const i=()=>{r.classList.toggle("lh-dark","dark"===ThemeSupport.ThemeSupport.instance().themeName())};return ThemeSupport.ThemeSupport.instance().addEventListener(ThemeSupport.ThemeChangeEvent.eventName,i),i(),r._lighthouseResultForTesting=e,r._lighthouseArtifactsForTesting=t,LighthouseReportRenderer.waitForMainTargetLoad().then((()=>{LighthouseReportRenderer.linkifyNodeDetails(r),LighthouseReportRenderer.linkifySourceLocationDetails(r)})),r}static async waitForMainTargetLoad(){const e=SDK.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)return;const t=e.model(SDK.ResourceTreeModel.ResourceTreeModel);t&&await t.once(SDK.ResourceTreeModel.Events.Load)}static async linkifyNodeDetails(e){const t=SDK.TargetManager.TargetManager.instance().primaryPageTarget();if(!t)return;const o=t.model(SDK.DOMModel.DOMModel);if(o)for(const t of e.getElementsByClassName("lh-node")){const e=t,n=e.dataset;if(!n.path)continue;const r=await o.pushNodeByPathToFrontend(n.path);if(!r)continue;const i=o.nodeForId(r);if(!i)continue;const a=await Common.Linkifier.Linkifier.linkify(i,{tooltip:n.snippet,preventKeyboardFocus:void 0});UI.Tooltip.Tooltip.install(e,"");const s=e.querySelector(".lh-element-screenshot");e.textContent="",s&&e.append(s),e.appendChild(a)}}static async linkifySourceLocationDetails(e){for(const t of e.getElementsByClassName("lh-source-location")){const e=t,o=e.dataset;if(!o.sourceUrl||!o.sourceLine||!o.sourceColumn)continue;const n=o.sourceUrl,r=Number(o.sourceLine),i=Number(o.sourceColumn),a=await Components.Linkifier.Linkifier.linkifyURL(n,{lineNumber:r,columnNumber:i,showColumnNumber:!1,inlineFrameIndex:0,maxLength:40});UI.Tooltip.Tooltip.install(e,""),e.textContent="",e.appendChild(a)}}}