@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.82 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Root from"../../core/root/root.js";import*as SourceFrame from"../../ui/legacy/components/source_frame/source_frame.js";import*as TextUtils from"../../models/text_utils/text_utils.js";import*as UI from"../../ui/legacy/legacy.js";const UIStrings={thisRequestHasNoResponseData:"This request has no response data available.",failedToLoadResponseData:"Failed to load response data"},str_=i18n.i18n.registerUIStrings("panels/network/RequestResponseView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class RequestResponseView extends UI.Widget.VBox{request;contentViewPromise;constructor(e){super(),this.element.classList.add("request-view"),this.request=e,this.contentViewPromise=null}static hasTextContent(e,t){const s=e.mimeType||"";let o=Common.ResourceType.ResourceType.fromMimeType(s);return o===Common.ResourceType.resourceTypes.Other&&(o=e.contentType()),o===Common.ResourceType.resourceTypes.Image?s.startsWith("image/svg"):!!o.isTextType()||!t.error&&(o===Common.ResourceType.resourceTypes.Other&&(Boolean(t.content)&&!t.encoded))}static async sourceViewForRequest(e){let t=requestToSourceView.get(e);if(void 0!==t)return t;const s=await e.contentData();if(!RequestResponseView.hasTextContent(e,s))return requestToSourceView.delete(e),null;const o=e.resourceType().canonicalMimeType()||e.mimeType,r=Common.ResourceType.ResourceType.mediaTypeForMetrics(o,e.resourceType().isFromSourceMap(),TextUtils.TextUtils.isMinified(s.content??""));Host.userMetrics.networkPanelResponsePreviewOpened(r);const i=Root.Runtime.experiments.isEnabled("sourcesPrettyPrint");return t=SourceFrame.ResourceSourceFrame.ResourceSourceFrame.createSearchableView(e,o,i),requestToSourceView.set(e,t),t}wasShown(){this.doShowPreview()}doShowPreview(){return this.contentViewPromise||(this.contentViewPromise=this.showPreview()),this.contentViewPromise}async showPreview(){const e=await this.createPreview();return e.show(this.element),e}async createPreview(){const e=await this.request.contentData(),t=await RequestResponseView.sourceViewForRequest(this.request);return e.content&&t||e.error?e.content&&t?t:e.error?new UI.EmptyWidget.EmptyWidget(i18nString(UIStrings.failedToLoadResponseData)+": "+e.error):204===this.request.statusCode?new UI.EmptyWidget.EmptyWidget(i18nString(UIStrings.thisRequestHasNoResponseData)):new UI.EmptyWidget.EmptyWidget(i18nString(UIStrings.failedToLoadResponseData)):new UI.EmptyWidget.EmptyWidget(i18nString(UIStrings.thisRequestHasNoResponseData))}async revealLine(e){const t=await this.doShowPreview();t instanceof SourceFrame.ResourceSourceFrame.SearchableContainer&&t.revealPosition(e)}}const requestToSourceView=new WeakMap;