UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 40.9 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import*as SDK from"../../core/sdk/sdk.js";import*as Bindings from"../../models/bindings/bindings.js";import*as Logs from"../../models/logs/logs.js";import*as Host from"../../core/host/host.js";import*as TextUtils from"../../models/text_utils/text_utils.js";import*as Workspace from"../../models/workspace/workspace.js";import*as CodeHighlighter from"../../ui/components/code_highlighter/code_highlighter.js";import*as IconButton from"../../ui/components/icon_button/icon_button.js";import*as IssueCounter from"../../ui/components/issue_counter/issue_counter.js";import*as RequestLinkIcon from"../../ui/components/request_link_icon/request_link_icon.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as ObjectUI from"../../ui/legacy/components/object_ui/object_ui.js";import*as Components from"../../ui/legacy/components/utils/utils.js";import*as UI from"../../ui/legacy/legacy.js";import objectValueStyles from"../../ui/legacy/components/object_ui/objectValue.css.js";import{format,updateStyle}from"./ConsoleFormat.js";import consoleViewStyles from"./consoleView.css.js";import{augmentErrorStackWithScriptIds,parseSourcePositionsFromErrorStack}from"./ErrorStackParser.js";const UIStrings={consoleclearWasPreventedDueTo:"`console.clear()` was prevented due to 'Preserve log'",consoleWasCleared:"Console was cleared",clearAllMessagesWithS:"Clear all messages with {PH1}",assertionFailed:"Assertion failed: ",violationS:"`[Violation]` {PH1}",interventionS:"`[Intervention]` {PH1}",deprecationS:"`[Deprecation]` {PH1}",thisValueWillNotBeCollectedUntil:"This value will not be collected until console is cleared.",thisValueWasEvaluatedUponFirst:"This value was evaluated upon first expanding. It may have changed since then.",functionWasResolvedFromBound:"Function was resolved from bound function.",exception:"<exception>",warning:"Warning",error:"Error",logpoint:"Logpoint",cndBreakpoint:"Conditional Breakpoint",repeatS:"{n, plural, =1 {Repeated # time} other {Repeated # times}}",warningS:"{n, plural, =1 {Warning, Repeated # time} other {Warning, Repeated # times}}",errorS:"{n, plural, =1 {Error, Repeated # time} other {Error, Repeated # times}}",url:"<URL>",tookNms:"took <N>ms",someEvent:"<some> event",Mxx:" M<XX>",attribute:"<attribute>",index:"(index)",value:"Value",console:"Console",stackMessageExpanded:"Stack table expanded",stackMessageCollapsed:"Stack table collapsed"},str_=i18n.i18n.registerUIStrings("panels/console/ConsoleViewMessage.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_),elementToMessage=new WeakMap;export const getMessageForElement=e=>elementToMessage.get(e);const defaultConsoleRowHeight=19,parameterToRemoteObject=e=>t=>t instanceof SDK.RemoteObject.RemoteObject?t:e?"object"==typeof t?e.createRemoteObject(t):e.createRemoteObjectFromPrimitiveValue(t):SDK.RemoteObject.RemoteObject.fromLocalObject(t);export class ConsoleViewMessage{message;linkifier;repeatCountInternal;closeGroupDecorationCount;consoleGroupInternal;selectableChildren;messageResized;elementInternal;previewFormatter;searchRegexInternal;messageIcon;traceExpanded;expandTrace;anchorElement;contentElementInternal;nestingLevelMarkers;searchHighlightNodes;searchHighlightNodeChanges;isVisibleInternal;cachedHeight;messagePrefix;timestampElement;inSimilarGroup;similarGroupMarker;lastInSimilarGroup;groupKeyInternal;repeatCountElement;requestResolver;issueResolver;#e=!1;#t=Promise.resolve();constructor(e,t,s,n,r){this.message=e,this.linkifier=t,this.requestResolver=s,this.issueResolver=n,this.repeatCountInternal=1,this.closeGroupDecorationCount=0,this.selectableChildren=[],this.messageResized=r,this.elementInternal=null,this.previewFormatter=new ObjectUI.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,this.searchRegexInternal=null,this.messageIcon=null,this.traceExpanded=!1,this.expandTrace=null,this.anchorElement=null,this.contentElementInternal=null,this.nestingLevelMarkers=null,this.searchHighlightNodes=[],this.searchHighlightNodeChanges=[],this.isVisibleInternal=!1,this.cachedHeight=0,this.messagePrefix="",this.timestampElement=null,this.inSimilarGroup=!1,this.similarGroupMarker=null,this.lastInSimilarGroup=!1,this.groupKeyInternal="",this.repeatCountElement=null,this.consoleGroupInternal=null}element(){return this.toMessageElement()}wasShown(){this.isVisibleInternal=!0}onResize(){}willHide(){this.isVisibleInternal=!1,this.cachedHeight=this.element().offsetHeight}isVisible(){return this.isVisibleInternal}fastHeight(){return this.cachedHeight?this.cachedHeight:this.approximateFastHeight()}approximateFastHeight(){return 19}consoleMessage(){return this.message}formatErrorStackPromiseForTest(){return this.#t}buildMessage(){let e,t=this.message.messageText;if(this.message.source===SDK.ConsoleModel.FrontendMessageSource.ConsoleAPI)switch(this.message.type){case"trace":e=this.format(this.message.parameters||["console.trace"]);break;case"clear":e=document.createElement("span"),e.classList.add("console-info"),Common.Settings.Settings.instance().moduleSetting("preserveConsoleLog").get()?e.textContent=i18nString(UIStrings.consoleclearWasPreventedDueTo):e.textContent=i18nString(UIStrings.consoleWasCleared),UI.Tooltip.Tooltip.install(e,i18nString(UIStrings.clearAllMessagesWithS,{PH1:String(UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("console.clear"))}));break;case"dir":{const t=["%O",this.message.parameters?this.message.parameters[0]:void 0];e=this.format(t);break}case"profile":case"profileEnd":e=this.format([t]);break;default:{if("assert"===this.message.type&&(this.messagePrefix=i18nString(UIStrings.assertionFailed)),this.message.parameters&&1===this.message.parameters.length){const t=this.message.parameters[0];"string"!=typeof t&&"string"===t.type&&(e=this.tryFormatAsError(t.value))}const s=this.message.parameters||[t];e=e||this.format(s)}}else if("network"===this.message.source)e=this.formatAsNetworkRequest()||this.format([t]);else{const s=this.message.parameters&&t===this.message.parameters[0];"violation"===this.message.source?t=i18nString(UIStrings.violationS,{PH1:t}):"intervention"===this.message.source?t=i18nString(UIStrings.interventionS,{PH1:t}):"deprecation"===this.message.source&&(t=i18nString(UIStrings.deprecationS,{PH1:t}));const n=this.message.parameters||[t];s&&(n[0]=t),e=this.format(n)}e.classList.add("console-message-text");const s=document.createElement("span");return s.classList.add("source-code"),this.anchorElement=this.buildMessageAnchor(),this.anchorElement&&s.appendChild(this.anchorElement),s.appendChild(e),s}formatAsNetworkRequest(){const e=Logs.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(!e)return null;const t=document.createElement("span");if("error"===this.message.level){UI.UIUtils.createTextChild(t,e.requestMethod+" ");const s=Components.Linkifier.Linkifier.linkifyRevealable(e,e.url(),e.url());s.tabIndex=-1,this.selectableChildren.push({element:s,forceSelect:()=>s.focus()}),t.appendChild(s),e.failed&&UI.UIUtils.createTextChildren(t," ",e.localizedFailDescription||""),0!==e.statusCode&&UI.UIUtils.createTextChildren(t," ",String(e.statusCode)),e.statusText&&UI.UIUtils.createTextChildren(t," (",e.statusText,")")}else{const s=this.message.messageText,n=this.linkifyWithCustomLinkifier(s,((t,s,n,r)=>{const i=s===e.url()?Components.Linkifier.Linkifier.linkifyRevealable(e,s,e.url()):Components.Linkifier.Linkifier.linkifyURL(s,{text:t,lineNumber:n,columnNumber:r});return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}));t.appendChild(n)}return t}createAffectedResourceLinks(){const e=[],t=this.message.getAffectedResources()?.requestId;if(t){const s=new RequestLinkIcon.RequestLinkIcon.RequestLinkIcon;s.classList.add("resource-links"),s.data={affectedRequest:{requestId:t},requestResolver:this.requestResolver,displayURL:!1},e.push(s)}const s=this.message.getAffectedResources()?.issueId;if(s){const t=new IssueCounter.IssueLinkIcon.IssueLinkIcon;t.classList.add("resource-links"),t.data={issueId:s,issueResolver:this.issueResolver},e.push(t)}return e}#s(){const e=Logs.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(e?.resourceType().isStyleSheet())return Host.UserMetrics.Action.StyleSheetInitiatorLinkClicked}buildMessageAnchor(){const e=this.message.runtimeModel();if(!e)return null;const t=(({stackFrameWithBreakpoint:t,scriptId:s,stackTrace:n,url:r,line:i,column:a})=>{const o=this.#s();return t?this.linkifier.maybeLinkifyConsoleCallFrame(e.target(),t,{inlineFrameIndex:0,revealBreakpoint:!0,userMetric:o}):s?this.linkifier.linkifyScriptLocation(e.target(),s,r||Platform.DevToolsPath.EmptyUrlString,i,{columnNumber:a,inlineFrameIndex:0,userMetric:o}):n&&n.callFrames.length?this.linkifier.linkifyStackTraceTopFrame(e.target(),n):r&&"undefined"!==r?this.linkifier.linkifyScriptLocation(e.target(),null,r,i,{columnNumber:a,inlineFrameIndex:0,userMetric:o}):null})(this.message);if(t){t.tabIndex=-1,this.selectableChildren.push({element:t,forceSelect:()=>t.focus()});const e=document.createElement("span");e.classList.add("console-message-anchor"),e.appendChild(t);for(const t of this.createAffectedResourceLinks())UI.UIUtils.createTextChild(e," "),e.append(t);return UI.UIUtils.createTextChild(e," "),e}return null}buildMessageWithStackTrace(e){const t=document.createElement("div");t.classList.add("console-message-stack-trace-toggle");const s=t.createChild("div","console-message-stack-trace-wrapper"),n=this.buildMessage(),r=UI.Icon.Icon.create("triangle-right","console-message-expand-icon"),i=s.createChild("div");UI.ARIAUtils.setExpanded(i,!1),i.appendChild(r),i.tabIndex=-1,i.appendChild(n);const a=s.createChild("div"),o=Components.JSPresentationUtils.buildStackTracePreviewContents(e.target(),this.linkifier,{stackTrace:this.message.stackTrace,tabStops:void 0});a.appendChild(o.element);for(const e of o.links)this.selectableChildren.push({element:e,forceSelect:()=>e.focus()});a.classList.add("hidden"),UI.ARIAUtils.setLabel(s,`${n.textContent} ${i18nString(UIStrings.stackMessageCollapsed)}`),UI.ARIAUtils.markAsGroup(a),this.expandTrace=e=>{r.setIconType(e?"triangle-down":"triangle-right"),a.classList.toggle("hidden",!e);const t=i18nString(e?UIStrings.stackMessageExpanded:UIStrings.stackMessageCollapsed);UI.ARIAUtils.setLabel(s,`${n.textContent} ${t}`),UI.ARIAUtils.alert(t),UI.ARIAUtils.setExpanded(i,e),this.traceExpanded=e};return i.addEventListener("click",(e=>{UI.UIUtils.isEditing()||s.hasSelection()||(this.expandTrace&&this.expandTrace(a.classList.contains("hidden")),e.consume())}),!1),"trace"===this.message.type&&Common.Settings.Settings.instance().moduleSetting("consoleTraceExpand").get()&&this.expandTrace(!0),t._expandStackTraceForTest=this.expandTrace.bind(this,!0),t}format(e){const t=document.createElement("span");if(this.messagePrefix&&(t.createChild("span").textContent=this.messagePrefix),!e.length)return t;let s=e.map(parameterToRemoteObject(this.message.runtimeModel()));const n="string"===SDK.RemoteObject.RemoteObject.type(s[0])&&(this.message.type!==SDK.ConsoleModel.FrontendMessageType.Result||"error"===this.message.level);n&&(s=this.formatWithSubstitutionString(s[0].description,s.slice(1),t),s.length&&UI.UIUtils.createTextChild(t," "));for(let e=0;e<s.length;++e)n&&"string"===s[e].type?t.appendChild(this.linkifyStringAsFragment(s[e].description||"")):t.appendChild(this.formatParameter(s[e],!1,!0)),e<s.length-1&&UI.UIUtils.createTextChild(t," ");return t}formatParameter(e,t,s){if(e.customPreview())return new ObjectUI.CustomPreviewComponent.CustomPreviewComponent(e).element;const n=t?"object":e.subtype||e.type;let r;switch(n){case"error":r=this.formatParameterAsError(e);break;case"function":r=this.formatParameterAsFunction(e,s);break;case"array":case"arraybuffer":case"blob":case"dataview":case"generator":case"iterator":case"map":case"object":case"promise":case"proxy":case"set":case"typedarray":case"wasmvalue":case"weakmap":case"weakset":case"webassemblymemory":r=this.formatParameterAsObject(e,s);break;case"node":r=e.isNode()?this.formatParameterAsNode(e):this.formatParameterAsObject(e,!1);break;case"trustedtype":r=this.formatParameterAsObject(e,!1);break;case"string":r=this.formatParameterAsString(e);break;case"boolean":case"date":case"null":case"number":case"regexp":case"symbol":case"undefined":case"bigint":r=this.formatParameterAsValue(e);break;default:r=this.formatParameterAsValue(e),console.error(`Tried to format remote object of unknown type ${n}.`)}return r.classList.add(`object-value-${n}`),r.classList.add("source-code"),r}formatParameterAsValue(e){const t=document.createElement("span"),s=e.description||"";if(s.length>getMaxTokenizableStringLength()){const e=new ObjectUI.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),s,getLongStringVisibleLength());t.appendChild(e.element)}else UI.UIUtils.createTextChild(t,s);return t.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),t}formatParameterAsTrustedType(e){const t=document.createElement("span"),s=document.createElement("span");return s.appendChild(this.formatParameterAsString(e)),s.classList.add("object-value-string"),UI.UIUtils.createTextChild(t,`${e.className} `),t.appendChild(s),t}formatParameterAsObject(e,t){const s=document.createElement("span");if(s.classList.add("console-object"),t&&e.preview)s.classList.add("console-object-preview"),this.previewFormatter.appendObjectPreview(s,e.preview,!1),ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.appendMemoryIcon(s,e);else if("function"===e.type){const t=s.createChild("span");ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(e,t,!1),s.classList.add("object-value-function")}else"trustedtype"===e.subtype?s.appendChild(this.formatParameterAsTrustedType(e)):UI.UIUtils.createTextChild(s,e.description||"");if(!e.hasChildren||e.customPreview())return s;const n=s.createChild("span","object-state-note info-note");this.message.type===SDK.ConsoleModel.FrontendMessageType.QueryObjectResult?UI.Tooltip.Tooltip.install(n,i18nString(UIStrings.thisValueWillNotBeCollectedUntil)):UI.Tooltip.Tooltip.install(n,i18nString(UIStrings.thisValueWasEvaluatedUponFirst));const r=new ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection(e,s,this.linkifier);return r.element.classList.add("console-view-object-properties-section"),r.enableContextMenu(),r.setShowSelectionOnKeyboardFocus(!0,!0),this.selectableChildren.push(r),r.addEventListener(UI.TreeOutline.Events.ElementAttached,this.messageResized),r.addEventListener(UI.TreeOutline.Events.ElementExpanded,this.messageResized),r.addEventListener(UI.TreeOutline.Events.ElementCollapsed,this.messageResized),r.element}formatParameterAsFunction(e,t){const s=document.createElement("span");return SDK.RemoteObject.RemoteFunction.objectAsFunction(e).targetFunction().then(function(n){const r=document.createElement("span"),i=ObjectUI.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(n,r,!0,t);if(s.appendChild(r),n!==e){const e=s.createChild("span","object-state-note info-note");UI.Tooltip.Tooltip.install(e,i18nString(UIStrings.functionWasResolvedFromBound))}s.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),i.then((()=>this.formattedParameterAsFunctionForTest()))}.bind(this)),s}formattedParameterAsFunctionForTest(){}contextMenuEventFired(e,t){const s=new UI.ContextMenu.ContextMenu(t);s.appendApplicableItems(e),s.show()}renderPropertyPreviewOrAccessor(e,t,s){return"accessor"===t.type?this.formatAsAccessorProperty(e,s.map((e=>e.name.toString())),!1):this.previewFormatter.renderPropertyPreview(t.type,"subtype"in t?t.subtype:void 0,null,t.value)}formatParameterAsNode(e){const t=document.createElement("span"),s=e.runtimeModel().target().model(SDK.DOMModel.DOMModel);return s?(s.pushObjectAsNodeToFrontend(e).then((async s=>{if(!s)return void t.appendChild(this.formatParameterAsObject(e,!1));const n=await UI.UIUtils.Renderer.render(s);n?(n.tree&&(this.selectableChildren.push(n.tree),n.tree.addEventListener(UI.TreeOutline.Events.ElementAttached,this.messageResized),n.tree.addEventListener(UI.TreeOutline.Events.ElementExpanded,this.messageResized),n.tree.addEventListener(UI.TreeOutline.Events.ElementCollapsed,this.messageResized)),t.appendChild(n.node)):t.appendChild(this.formatParameterAsObject(e,!1)),this.formattedParameterAsNodeForTest()})),t):t}formattedParameterAsNodeForTest(){}formatParameterAsString(e){const t=e.description??"",s=Platform.StringUtilities.formatAsJSLiteral(t),n=document.createElement("span");return n.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),n.appendChild(this.linkifyStringAsFragment(s)),n}formatParameterAsError(e){const t=document.createElement("span"),s=e.description||"";return this.#t=this.retrieveExceptionDetails(e).then((e=>{const n=this.tryFormatAsError(s,e);t.appendChild(n??this.linkifyStringAsFragment(s))})),t}async retrieveExceptionDetails(e){const t=this.message.runtimeModel();if(t&&e.objectId)return t.getExceptionDetails(e.objectId)}formatAsArrayEntry(e){return this.previewFormatter.renderPropertyPreview(e.type,e.subtype,e.className,e.description)}formatAsAccessorProperty(e,t,s){const n=ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement.createRemoteObjectAccessorPropertySpan(e,t,function(e){const t=e.wasThrown,r=e.object;if(!r)return;if(n.removeChildren(),t){const e=n.createChild("span");e.textContent=i18nString(UIStrings.exception),UI.Tooltip.Tooltip.install(e,r.description)}else if(s)n.appendChild(this.formatAsArrayEntry(r));else{const e=100,t=r.type,s=r.subtype;let i="";"function"!==t&&r.description&&(i="string"===t||"regexp"===s||"trustedtype"===s?Platform.StringUtilities.trimMiddle(r.description,e):Platform.StringUtilities.trimEndWithMaxLength(r.description,e)),n.appendChild(this.previewFormatter.renderPropertyPreview(t,s,r.className,i))}}.bind(this));return n}formatWithSubstitutionString(e,t,s){const n=new Map,{tokens:r,args:i}=format(e,t);for(const e of r)switch(e.type){case"generic":s.append(this.formatParameter(e.value,!0,!1));break;case"optimal":s.append(this.formatParameter(e.value,!1,!0));break;case"string":if(0===n.size)s.append(this.linkifyStringAsFragment(e.value));else{const t=e.value.split("\n");for(let e=0;e<t.length;e++){e>0&&s.append(document.createElement("br"));const r=document.createElement("span");r.style.setProperty("contain","paint"),r.style.setProperty("display","inline-block"),r.style.setProperty("max-width","100%"),r.appendChild(this.linkifyStringAsFragment(t[e]));for(const[e,{value:t,priority:s}]of n)r.style.setProperty(e,t,s);s.append(r)}}break;case"style":updateStyle(n,e.value)}return i}matchesFilterRegex(e){e.lastIndex=0;const t=this.contentElement(),s=this.anchorElement?this.anchorElement.deepTextContent():"";return Boolean(s)&&e.test(s.trim())||e.test(t.deepTextContent().slice(s.length))}matchesFilterText(e){return this.contentElement().deepTextContent().toLowerCase().includes(e.toLowerCase())}updateTimestamp(){this.contentElementInternal&&(Common.Settings.Settings.instance().moduleSetting("consoleTimestampsEnabled").get()?(this.timestampElement||(this.timestampElement=document.createElement("span"),this.timestampElement.classList.add("console-timestamp")),this.timestampElement.textContent=UI.UIUtils.formatTimestamp(this.message.timestamp,!1)+" ",UI.Tooltip.Tooltip.install(this.timestampElement,UI.UIUtils.formatTimestamp(this.message.timestamp,!0)),this.contentElementInternal.insertBefore(this.timestampElement,this.contentElementInternal.firstChild)):this.timestampElement&&(this.timestampElement.remove(),this.timestampElement=null))}nestingLevel(){let e=0;for(let t=this.consoleGroup();null!==t;t=t.consoleGroup())e++;return e}setConsoleGroup(e){console.assert(null===this.consoleGroupInternal),this.consoleGroupInternal=e}clearConsoleGroup(){this.consoleGroupInternal=null}consoleGroup(){return this.consoleGroupInternal}setInSimilarGroup(e,t){this.inSimilarGroup=e,this.lastInSimilarGroup=e&&Boolean(t),this.similarGroupMarker&&!e?(this.similarGroupMarker.remove(),this.similarGroupMarker=null):this.elementInternal&&!this.similarGroupMarker&&e&&(this.similarGroupMarker=document.createElement("div"),this.similarGroupMarker.classList.add("nesting-level-marker"),this.elementInternal.insertBefore(this.similarGroupMarker,this.elementInternal.firstChild),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup))}isLastInSimilarGroup(){return Boolean(this.inSimilarGroup)&&Boolean(this.lastInSimilarGroup)}resetCloseGroupDecorationCount(){this.closeGroupDecorationCount&&(this.closeGroupDecorationCount=0,this.updateCloseGroupDecorations())}incrementCloseGroupDecorationCount(){++this.closeGroupDecorationCount,this.updateCloseGroupDecorations()}updateCloseGroupDecorations(){if(this.nestingLevelMarkers)for(let e=0,t=this.nestingLevelMarkers.length;e<t;++e){this.nestingLevelMarkers[e].classList.toggle("group-closed",t-e<=this.closeGroupDecorationCount)}}focusedChildIndex(){return this.selectableChildren.length?this.selectableChildren.findIndex((e=>e.element.hasFocus())):-1}onKeyDown(e){!UI.UIUtils.isEditing()&&this.elementInternal&&this.elementInternal.hasFocus()&&!this.elementInternal.hasSelection()&&this.maybeHandleOnKeyDown(e)&&e.consume(!0)}maybeHandleOnKeyDown(e){const t=this.focusedChildIndex(),s=-1===t;if(this.expandTrace&&s&&("ArrowLeft"===e.key&&this.traceExpanded||"ArrowRight"===e.key&&!this.traceExpanded))return this.expandTrace(!this.traceExpanded),!0;if(!this.selectableChildren.length)return!1;if("ArrowLeft"===e.key)return this.elementInternal&&this.elementInternal.focus(),!0;if("ArrowRight"===e.key&&s&&this.selectNearestVisibleChild(0))return!0;if("ArrowUp"===e.key){const e=this.nearestVisibleChild(0);if(this.selectableChildren[t]===e&&e)return this.elementInternal&&this.elementInternal.focus(),!0;if(this.selectNearestVisibleChild(t-1,!0))return!0}if("ArrowDown"===e.key){if(s&&this.selectNearestVisibleChild(0))return!0;if(!s&&this.selectNearestVisibleChild(t+1))return!0}return!1}selectNearestVisibleChild(e,t){const s=this.nearestVisibleChild(e,t);return!!s&&(s.forceSelect(),!0)}nearestVisibleChild(e,t){const s=this.selectableChildren.length;if(e<0||e>=s)return null;const n=t?-1:1;let r=e;for(;!this.selectableChildren[r].element.offsetParent;)if(r+=n,r<0||r>=s)return null;return this.selectableChildren[r]}focusLastChildOrSelf(){this.elementInternal&&!this.selectNearestVisibleChild(this.selectableChildren.length-1,!0)&&this.elementInternal.focus()}setContentElement(e){console.assert(!this.contentElementInternal,"Cannot set content element twice"),this.contentElementInternal=e}getContentElement(){return this.contentElementInternal}contentElement(){if(this.contentElementInternal)return this.contentElementInternal;const e=document.createElement("div");e.classList.add("console-message"),this.messageIcon&&e.appendChild(this.messageIcon),this.contentElementInternal=e;const t=this.message.runtimeModel();let s;const n=Boolean(this.message.stackTrace)&&("network"===this.message.source||"violation"===this.message.source||"error"===this.message.level||"warning"===this.message.level||"trace"===this.message.type);return s=t&&n?this.buildMessageWithStackTrace(t):this.buildMessage(),e.appendChild(s),this.updateTimestamp(),this.contentElementInternal}toMessageElement(){return this.elementInternal||(this.elementInternal=document.createElement("div"),this.elementInternal.tabIndex=-1,this.elementInternal.addEventListener("keydown",this.onKeyDown.bind(this)),this.updateMessageElement(),this.elementInternal.classList.toggle("console-adjacent-user-command-result",this.#e)),this.elementInternal}updateMessageElement(){if(this.elementInternal){this.elementInternal.className="console-message-wrapper",this.elementInternal.removeChildren(),this.message.isGroupStartMessage()&&this.elementInternal.classList.add("console-group-title"),this.message.source===SDK.ConsoleModel.FrontendMessageSource.ConsoleAPI&&this.elementInternal.classList.add("console-from-api"),this.inSimilarGroup&&(this.similarGroupMarker=this.elementInternal.createChild("div","nesting-level-marker"),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup)),this.nestingLevelMarkers=[];for(let e=0;e<this.nestingLevel();++e)this.nestingLevelMarkers.push(this.elementInternal.createChild("div","nesting-level-marker"));switch(this.updateCloseGroupDecorations(),elementToMessage.set(this.elementInternal,this),this.message.level){case"verbose":this.elementInternal.classList.add("console-verbose-level");break;case"info":this.elementInternal.classList.add("console-info-level"),this.message.type===SDK.ConsoleModel.FrontendMessageType.System&&this.elementInternal.classList.add("console-system-type");break;case"warning":this.elementInternal.classList.add("console-warning-level");break;case"error":this.elementInternal.classList.add("console-error-level")}this.updateMessageIcon(),this.shouldRenderAsWarning()&&this.elementInternal.classList.add("console-warning-level"),this.elementInternal.appendChild(this.contentElement()),this.repeatCountInternal>1&&this.showRepeatCountElement()}}shouldRenderAsWarning(){return!("verbose"!==this.message.level&&"info"!==this.message.level||"violation"!==this.message.source&&"deprecation"!==this.message.source&&"intervention"!==this.message.source&&"recommendation"!==this.message.source)}updateMessageIcon(){this.messageIcon&&(this.messageIcon.remove(),this.messageIcon=null);let e="",t="",s="";"warning"===this.message.level?(e="var(--icon-warning)",t="warning-filled",s=i18nString(UIStrings.warning)):"error"===this.message.level?(e="var(--icon-error)",t="cross-circle-filled",s=i18nString(UIStrings.error)):this.message.originatesFromLogpoint?(t="console-logpoint",s=i18nString(UIStrings.logpoint)):this.message.originatesFromConditionalBreakpoint&&(t="console-conditional-breakpoint",s=i18nString(UIStrings.cndBreakpoint)),t&&(this.messageIcon=new IconButton.Icon.Icon,this.messageIcon.data={iconName:t,color:e,width:"14px",height:"14px"},this.messageIcon.classList.add("message-level-icon"),this.contentElementInternal&&this.contentElementInternal.insertBefore(this.messageIcon,this.contentElementInternal.firstChild),UI.ARIAUtils.setLabel(this.messageIcon,s))}setAdjacentUserCommandResult(e){this.#e=e,this.elementInternal?.classList.toggle("console-adjacent-user-command-result",this.#e)}repeatCount(){return this.repeatCountInternal||1}resetIncrementRepeatCount(){this.repeatCountInternal=1,this.repeatCountElement&&(this.repeatCountElement.remove(),this.contentElementInternal&&this.contentElementInternal.classList.remove("repeated-message"),this.repeatCountElement=null)}incrementRepeatCount(){this.repeatCountInternal++,this.showRepeatCountElement()}setRepeatCount(e){this.repeatCountInternal=e,this.showRepeatCountElement()}showRepeatCountElement(){if(!this.elementInternal)return;if(!this.repeatCountElement){switch(this.repeatCountElement=document.createElement("span",{is:"dt-small-bubble"}),this.repeatCountElement.classList.add("console-message-repeat-count"),this.message.level){case"warning":this.repeatCountElement.type="warning";break;case"error":this.repeatCountElement.type="error";break;case"verbose":this.repeatCountElement.type="verbose";break;default:this.repeatCountElement.type="info"}this.shouldRenderAsWarning()&&(this.repeatCountElement.type="warning"),this.elementInternal.insertBefore(this.repeatCountElement,this.contentElementInternal),this.contentElement().classList.add("repeated-message")}let e;this.repeatCountElement.textContent=`${this.repeatCountInternal}`,e="warning"===this.message.level?i18nString(UIStrings.warningS,{n:this.repeatCountInternal}):"error"===this.message.level?i18nString(UIStrings.errorS,{n:this.repeatCountInternal}):i18nString(UIStrings.repeatS,{n:this.repeatCountInternal}),UI.ARIAUtils.setLabel(this.repeatCountElement,e)}get text(){return this.message.messageText}toExportString(){const e=[],t=this.contentElement().childTextNodes().map(Components.Linkifier.Linkifier.untruncatedNodeText).join("");for(let s=0;s<this.repeatCount();++s)e.push(t);return e.join("\n")}setSearchRegex(e){if(this.searchHighlightNodeChanges&&this.searchHighlightNodeChanges.length&&UI.UIUtils.revertDomChanges(this.searchHighlightNodeChanges),this.searchRegexInternal=e,this.searchHighlightNodes=[],this.searchHighlightNodeChanges=[],!this.searchRegexInternal)return;const t=this.contentElement().deepTextContent();let s;this.searchRegexInternal.lastIndex=0;const n=[];for(;(s=this.searchRegexInternal.exec(t))&&s[0];)n.push(new TextUtils.TextRange.SourceRange(s.index,s[0].length));n.length&&(this.searchHighlightNodes=UI.UIUtils.highlightSearchResults(this.contentElement(),n,this.searchHighlightNodeChanges))}searchRegex(){return this.searchRegexInternal}searchCount(){return this.searchHighlightNodes.length}searchHighlightNode(e){return this.searchHighlightNodes[e]}async getInlineFrames(e,t,s,n){const r=Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();if(r.pluginManager){const i=Workspace.Workspace.WorkspaceImpl.instance().projects().map((e=>e.uiSourceCodeForURL(t))).flat().filter((e=>Boolean(e))).map((e=>r.scriptsForUISourceCode(e))).flat();if(i.length){const t=new SDK.DebuggerModel.Location(e,i[0].scriptId,s||0,n),a=await r.pluginManager.getFunctionInfo(i[0],t);return a&&"frames"in a?a:{frames:[]}}}return{frames:[]}}async expandInlineStackFrames(e,t,s,n,r,i,a,o){const{frames:l}=await this.getInlineFrames(e,n,r,i);if(!l.length)return!1;for(let c=0;c<l.length;++c){const{name:h}=l[c],m=document.createElement("span");m.appendChild(this.linkifyStringAsFragment(`${t} ${h} (`));const d=this.linkifier.linkifyScriptLocation(e.target(),null,n,r,{columnNumber:i,inlineFrameIndex:c});d.tabIndex=-1,this.selectableChildren.push({element:d,forceSelect:()=>d.focus()}),m.appendChild(d),m.appendChild(this.linkifyStringAsFragment(s)),a.insertBefore(m,o)}return!0}createScriptLocationLinkForSyntaxError(e,t){const{scriptId:s,lineNumber:n,columnNumber:r}=t;if(!s)return;const i=t.url||e.scriptForId(s)?.sourceURL;if(!i)return;const a=this.linkifier.linkifyScriptLocation(e.target(),t.scriptId||null,i,n,{columnNumber:r,inlineFrameIndex:0,showColumnNumber:!0});return a.tabIndex=-1,a}tryFormatAsError(e,t){const s=this.message.runtimeModel();if(!s)return null;const n=parseSourcePositionsFromErrorStack(s,e);if(!n?.length)return null;t?.stackTrace&&augmentErrorStackWithScriptIds(n,t.stackTrace);const r=s.debuggerModel(),i=document.createElement("span");for(let e=0;e<n.length;++e){const s=e<n.length-1?"\n":"",{line:a,link:o}=n[e];if(!o&&t&&a.startsWith("SyntaxError")){i.appendChild(this.linkifyStringAsFragment(a));const e=this.createScriptLocationLinkForSyntaxError(r,t);e&&(i.append(" (at "),i.appendChild(e),i.append(")")),i.append(s);continue}if(!o){i.appendChild(this.linkifyStringAsFragment(`${a}${s}`));continue}const l=document.createElement("span"),c=`${o.suffix}${s}`;l.appendChild(this.linkifyStringAsFragment(o.prefix));const h=this.linkifier.linkifyScriptLocation(r.target(),o.scriptId||null,o.url,o.lineNumber,{columnNumber:o.columnNumber,inlineFrameIndex:0,showColumnNumber:!0});if(h.tabIndex=-1,this.selectableChildren.push({element:h,forceSelect:()=>h.focus()}),l.appendChild(h),l.appendChild(this.linkifyStringAsFragment(c)),i.appendChild(l),!o.enclosedInBraces)continue;const m=o.prefix.substring(0,o.prefix.lastIndexOf(" ",o.prefix.length-3)),d=this.selectableChildren.length-1;this.expandInlineStackFrames(r,m,c,o.url,o.lineNumber,o.columnNumber,i,l).then((e=>{e&&(i.removeChild(l),this.selectableChildren.splice(d,1))}))}return i}linkifyWithCustomLinkifier(e,t){if(e.length>getMaxTokenizableStringLength()){const t=new ObjectUI.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),e,getLongStringVisibleLength()),s=document.createDocumentFragment();return s.appendChild(t.element),s}const s=document.createDocumentFragment(),n=ConsoleViewMessage.tokenizeMessageText(e);let r=!1;for(const e of n)if(e.text)switch(r&&(e.text=`blob:${e.text}`,r=!r),"'blob:"===e.text&&e===n[0]&&(r=!0,e.text="'"),e.type){case"url":{const n=e.text.startsWith("www.")?"http://"+e.text:e.text,r=Common.ParsedURL.ParsedURL.splitLineAndColumn(n),i=Common.ParsedURL.ParsedURL.removeWasmFunctionInfoFromURL(r.url);let a;a=r?t(e.text,i,r.lineNumber,r.columnNumber):t(e.text,Platform.DevToolsPath.EmptyUrlString),s.appendChild(a);break}default:s.appendChild(document.createTextNode(e.text))}return s}linkifyStringAsFragment(e){return this.linkifyWithCustomLinkifier(e,((e,t,s,n)=>{const r={text:e,lineNumber:s,columnNumber:n},i=Components.Linkifier.Linkifier.linkifyURL(t,r);return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}))}static tokenizeMessageText(e){const{tokenizerRegexes:t,tokenizerTypes:s}=getOrCreateTokenizers();if(e.length>getMaxTokenizableStringLength())return[{text:e,type:void 0}];return TextUtils.TextUtils.Utils.splitStringByRegexes(e,t).map((e=>({text:e.value,type:s[e.regexIndex]})))}groupKey(){return this.groupKeyInternal||(this.groupKeyInternal=this.message.groupCategoryKey()+":"+this.groupTitle()),this.groupKeyInternal}groupTitle(){return ConsoleViewMessage.tokenizeMessageText(this.message.messageText).reduce(((e,t)=>{let s=t.text;return"url"===t.type?s=i18nString(UIStrings.url):"time"===t.type?s=i18nString(UIStrings.tookNms):"event"===t.type?s=i18nString(UIStrings.someEvent):"milestone"===t.type?s=i18nString(UIStrings.Mxx):"autofill"===t.type&&(s=i18nString(UIStrings.attribute)),e+s}),"").replace(/[%]o/g,"")}}let tokenizerRegexes=null,tokenizerTypes=null;function getOrCreateTokenizers(){if(!tokenizerRegexes||!tokenizerTypes){const e="\\u0000-\\u0020\\u007f-\\u009f",t=new RegExp("(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|data:|www\\.)[^\\s"+e+'"]{2,}[^\\s'+e+"\"')}\\],:;.!?]","u"),s=/(?:\/[\w\.-]*)+\:[\d]+/,n=/took [\d]+ms/,r=/'\w+' event/,i=/\sM[6-7]\d/,a=/\(suggested: \"[\w-]+\"\)/,o=new Map;return o.set(t,"url"),o.set(s,"url"),o.set(n,"time"),o.set(r,"event"),o.set(i,"milestone"),o.set(a,"autofill"),tokenizerRegexes=Array.from(o.keys()),tokenizerTypes=Array.from(o.values()),{tokenizerRegexes:tokenizerRegexes,tokenizerTypes:tokenizerTypes}}return{tokenizerRegexes:tokenizerRegexes,tokenizerTypes:tokenizerTypes}}export class ConsoleGroupViewMessage extends ConsoleViewMessage{collapsedInternal;expandGroupIcon;onToggle;groupEndMessageInternal;constructor(e,t,s,n,r,i){console.assert(e.isGroupStartMessage()),super(e,t,s,n,i),this.collapsedInternal="startGroupCollapsed"===e.type,this.expandGroupIcon=null,this.onToggle=r,this.groupEndMessageInternal=null}setCollapsed(e){this.collapsedInternal=e,this.expandGroupIcon&&this.expandGroupIcon.setIconType(this.collapsedInternal?"triangle-right":"triangle-down"),this.onToggle.call(null)}collapsed(){return this.collapsedInternal}maybeHandleOnKeyDown(e){return-1===this.focusedChildIndex()&&("ArrowLeft"===e.key&&!this.collapsedInternal||"ArrowRight"===e.key&&this.collapsedInternal)?(this.setCollapsed(!this.collapsedInternal),!0):super.maybeHandleOnKeyDown(e)}toMessageElement(){let e=this.elementInternal||null;if(!e){e=super.toMessageElement();const t=this.collapsedInternal?"triangle-right":"triangle-down";this.expandGroupIcon=UI.Icon.Icon.create(t,"expand-group-icon"),this.contentElement().tabIndex=-1,this.repeatCountElement?this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild):e.insertBefore(this.expandGroupIcon,this.contentElementInternal),e.addEventListener("click",(()=>this.setCollapsed(!this.collapsedInternal)))}return e}showRepeatCountElement(){super.showRepeatCountElement(),this.repeatCountElement&&this.expandGroupIcon&&this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild)}messagesHidden(){if(this.collapsed())return!0;const e=this.consoleGroup();return Boolean(e&&e.messagesHidden())}setGroupEnd(e){if("endGroup"!==e.consoleMessage().type)throw new Error("Invalid console message as group end");if(null!==this.groupEndMessageInternal)throw new Error("Console group already has an end");this.groupEndMessageInternal=e}groupEnd(){return this.groupEndMessageInternal}}export class ConsoleCommand extends ConsoleViewMessage{formattedCommand;constructor(e,t,s,n,r){super(e,t,s,n,r),this.formattedCommand=null}contentElement(){const e=this.getContentElement();if(e)return e;const t=document.createElement("div");this.setContentElement(t),t.classList.add("console-user-command");const s=new IconButton.Icon.Icon;return s.data={iconName:"chevron-right",color:"var(--icon-default)",width:"16px",height:"16px"},s.classList.add("command-result-icon"),t.appendChild(s),elementToMessage.set(t,this),this.formattedCommand=document.createElement("span"),this.formattedCommand.classList.add("source-code"),this.formattedCommand.textContent=Platform.StringUtilities.replaceControlCharacters(this.text),t.appendChild(this.formattedCommand),this.formattedCommand.textContent.length<MaxLengthToIgnoreHighlighter?CodeHighlighter.CodeHighlighter.highlightNode(this.formattedCommand,"text/javascript").then(this.updateSearch.bind(this)):this.updateSearch(),this.updateTimestamp(),t}updateSearch(){this.setSearchRegex(this.searchRegex())}}export class ConsoleCommandResult extends ConsoleViewMessage{contentElement(){const e=super.contentElement();if(!e.classList.contains("console-user-command-result")&&(e.classList.add("console-user-command-result"),"info"===this.consoleMessage().level)){const t=new IconButton.Icon.Icon;t.data={iconName:"chevron-left-dot",color:"var(--icon-default)",width:"16px",height:"16px"},t.classList.add("command-result-icon"),e.insertBefore(t,e.firstChild)}return e}}export class ConsoleTableMessageView extends ConsoleViewMessage{dataGrid;constructor(e,t,s,n,r){super(e,t,s,n,r),console.assert("table"===e.type),this.dataGrid=null}wasShown(){this.dataGrid&&this.dataGrid.updateWidths(),super.wasShown()}onResize(){this.isVisible()&&this.dataGrid&&this.dataGrid.onResize()}contentElement(){const e=this.getContentElement();if(e)return e;const t=document.createElement("div");return t.classList.add("console-message"),this.messageIcon&&t.appendChild(this.messageIcon),this.setContentElement(t),t.appendChild(this.buildTableMessage()),this.updateTimestamp(),t}buildTableMessage(){const e=document.createElement("span");e.classList.add("source-code"),this.anchorElement=this.buildMessageAnchor(),this.anchorElement&&e.appendChild(this.anchorElement);const t=this.message.parameters&&this.message.parameters.length?this.message.parameters[0]:null;if(!t)return this.buildMessage();const s=parameterToRemoteObject(this.message.runtimeModel())(t);if(!s||!s.preview)return this.buildMessage();const n=Symbol("rawValueColumn"),r=[],i=s.preview,a=[];for(let e=0;e<i.properties.length;++e){const t=i.properties[e];let o;if(t.valuePreview&&t.valuePreview.properties.length)o=t.valuePreview.properties;else{if(!t.value&&""!==t.value)continue;o=[{name:n,type:t.type,value:t.value}]}const l=new Map,c=20;for(let e=0;e<o.length;++e){const n=o[e];let i=-1!==r.indexOf(n.name);if(!i){if(r.length===c)continue;i=!0,r.push(n.name)}if(i){const e=this.renderPropertyPreviewOrAccessor(s,n,[t,n]);e.classList.add("console-message-nowrap-below"),l.set(n.name,e)}}a.push({rowName:t.name,rowValue:l})}const o=[];for(const{rowName:e,rowValue:t}of a){o.push(e);for(let e=0;e<r.length;++e)o.push(t.get(r[e]))}r.unshift(i18nString(UIStrings.index));const l=r.map((e=>e===n?i18nString(UIStrings.value):e.toString()));if(o.length&&(this.dataGrid=DataGrid.SortableDataGrid.SortableDataGrid.create(l,o,i18nString(UIStrings.console)),this.dataGrid)){this.dataGrid.setStriped(!0),this.dataGrid.setFocusable(!1);const t=document.createElement("span");t.classList.add("console-message-text");const n=t.createChild("div","console-message-formatted-table"),r=n.createChild("span");n.appendChild(this.formatParameter(s,!0,!1));const i=r.attachShadow({mode:"open"}),a=this.dataGrid.asWidget();a.markAsRoot(),a.show(i),a.registerCSSFiles([consoleViewStyles,objectValueStyles]),e.appendChild(t),this.dataGrid.renderInline()}return e}approximateFastHeight(){const e=this.message.parameters&&this.message.parameters[0];return e&&"string"!=typeof e&&e.preview?19*e.preview.properties.length:19}}const MaxLengthToIgnoreHighlighter=1e4;export const MaxLengthForLinks=40;let maxTokenizableStringLength=1e4,longStringVisibleLength=5e3;export const getMaxTokenizableStringLength=()=>maxTokenizableStringLength;export const setMaxTokenizableStringLength=e=>{maxTokenizableStringLength=e};export const getLongStringVisibleLength=()=>longStringVisibleLength;export const setLongStringVisibleLength=e=>{longStringVisibleLength=e};