UNPKG

@react-native/debugger-frontend

Version:
2 lines (1 loc) • 21.3 kB
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 `3G` 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 T(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:!1,isPreviewFeature:!0,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:()=>T((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:!0,toggledIconClass:"record-stop",toggleWithRedColor:!0,contextTypes:()=>T((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:()=>T((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 R={showNetwork:"Show Network",network:"Network",networkExpoUnstable:"Expo Network",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",R),x=t.i18n.getLazilyComputedLocalizedString.bind(void 0,N),C=t.i18n.getLocalizedString.bind(void 0,N);let D;async function E(){return D||(D=await import("../../panels/network/network.js")),D}function I(e){return void 0===D?[]:e(D)}o.ViewManager.registerViewExtension({location:"panel",id:"network",commandPrompt:x(R.showNetwork),title:()=>n.Runtime.conditions.reactNativeExpoNetworkPanel()?C(R.networkExpoUnstable):C(R.network),order:40,loadView:async()=>(await E()).NetworkPanel.NetworkPanel.instance()}),o.ViewManager.registerViewExtension({location:"drawer-view",id:"network.blocked-urls",commandPrompt:x(R.showNetworkRequestBlocking),title:x(R.networkRequestBlocking),persistence:"closeable",order:60,loadView:async()=>new((await E()).BlockedURLsPane.BlockedURLsPane)}),o.ViewManager.registerViewExtension({location:"drawer-view",id:"network.config",commandPrompt:x(R.showNetworkConditions),title:x(R.networkConditions),persistence:"closeable",order:40,tags:[x(R.diskCache),x(R.networkThrottling),t.i18n.lockedLazyString("useragent"),t.i18n.lockedLazyString("user agent"),t.i18n.lockedLazyString("user-agent")],loadView:async()=>(await E()).NetworkConfigView.NetworkConfigView.instance()}),o.ViewManager.registerViewExtension({location:"network-sidebar",id:"network.search-network-tab",commandPrompt:x(R.showSearch),title:x(R.search),persistence:"permanent",loadView:async()=>(await E()).NetworkPanel.SearchNetworkView.instance()}),o.ActionRegistration.registerActionExtension({actionId:"network.toggle-recording",category:"NETWORK",iconClass:"record-start",toggleable:!0,toggledIconClass:"record-stop",toggleWithRedColor:!0,contextTypes:()=>I((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await E()).NetworkPanel.ActionDelegate),options:[{value:!0,title:x(R.recordNetworkLog)},{value:!1,title:x(R.stopRecordingNetworkLog)}],bindings:[{shortcut:"Ctrl+E",platform:"windows,linux"},{shortcut:"Meta+E",platform:"mac"}]}),o.ActionRegistration.registerActionExtension({actionId:"network.clear",category:"NETWORK",title:x(R.clear),iconClass:"clear",loadActionDelegate:async()=>new((await E()).NetworkPanel.ActionDelegate),contextTypes:()=>I((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(R.hideRequestDetails),contextTypes:()=>I((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await E()).NetworkPanel.ActionDelegate),bindings:[{shortcut:"Esc"}]}),o.ActionRegistration.registerActionExtension({actionId:"network.search",category:"NETWORK",title:x(R.search),contextTypes:()=>I((e=>[e.NetworkPanel.NetworkPanel])),loadActionDelegate:async()=>new((await E()).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(R.addNetworkRequestBlockingPattern),iconClass:"plus",contextTypes:()=>I((e=>[e.BlockedURLsPane.BlockedURLsPane])),loadActionDelegate:async()=>new((await E()).BlockedURLsPane.ActionDelegate)}),o.ActionRegistration.registerActionExtension({actionId:"network.remove-all-network-request-blocking-patterns",category:"NETWORK",title:x(R.removeAllNetworkRequestBlockingPatterns),iconClass:"clear",contextTypes:()=>I((e=>[e.BlockedURLsPane.BlockedURLsPane])),loadActionDelegate:async()=>new((await E()).BlockedURLsPane.ActionDelegate)}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(R.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(R.allowToGenerateHarWithSensitiveData)},{value:!1,title:x(R.dontAllowToGenerateHarWithSensitiveData)}],learnMore:{url:"https://goo.gle/devtools-export-hars",tooltip:x(R.allowToGenerateHarWithSensitiveDataDocumentation)}}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(R.colorcodeResourceTypes),settingName:"network-color-code-resource-types",settingType:"boolean",defaultValue:!1,tags:[x(R.colorCode),x(R.resourceType)],options:[{value:!0,title:x(R.colorCodeByResourceType)},{value:!1,title:x(R.useDefaultColors)}]}),e.Settings.registerSettingExtension({category:"NETWORK",storageType:"Synced",title:x(R.groupNetworkLogByFrame),settingName:"network.group-by-frame",settingType:"boolean",defaultValue:!1,tags:[x(R.netWork),x(R.frame),x(R.group)],options:[{value:!0,title:x(R.groupNetworkLogItemsByFrame)},{value:!1,title:x(R.dontGroupNetworkLogItemsByFrame)}]}),o.ViewManager.registerLocationResolver({name:"network-sidebar",category:"NETWORK",loadResolver:async()=>(await E()).NetworkPanel.NetworkPanel.instance()}),o.ContextMenu.registerProvider({contextTypes:()=>[i.NetworkRequest.NetworkRequest,i.Resource.Resource,s.UISourceCode.UISourceCode,i.TraceObject.RevealableNetworkRequest],loadProvider:async()=>(await E()).NetworkPanel.NetworkPanel.instance(),experiment:void 0}),e.Revealer.registerRevealer({contextTypes:()=>[i.NetworkRequest.NetworkRequest],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await E()).NetworkPanel.RequestRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.UIRequestLocation.UIRequestLocation],destination:void 0,loadRevealer:async()=>new((await E()).NetworkPanel.RequestLocationRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.NetworkRequestId.NetworkRequestId],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await E()).NetworkPanel.RequestIdRevealer)}),e.Revealer.registerRevealer({contextTypes:()=>[a.UIFilter.UIRequestFilter,r.ExtensionServer.RevealableNetworkRequestFilter],destination:e.Revealer.RevealerDestination.NETWORK_PANEL,loadRevealer:async()=>new((await E()).NetworkPanel.NetworkLogWithFilterRevealer)});var A={cssText:`.add-network-target-button{margin:10px 25px;align-self:center}.network-discovery-list{flex:none;max-width:600px;max-height:202px;margin:20px 0 5px}.network-discovery-list-empty{flex:auto;height:30px;display:flex;align-items:center;justify-content:center}.network-discovery-list-item{padding:3px 5px;height:30px;display:flex;align-items:center;position:relative;flex:auto 1 1}.network-discovery-value{flex:3 1 0}.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:100%;text-align:inherit}.network-discovery-footer{margin:0;overflow:hidden;max-width:500px;padding:3px}.network-discovery-footer > *{white-space:pre-wrap}.node-panel{align-items:center;justify-content:flex-start;overflow-y:auto}.network-discovery-view{min-width:400px;text-align:left}:host-context(.node-frontend) .network-discovery-list-empty{height:40px}:host-context(.node-frontend) .network-discovery-list-item{padding:3px 15px;height:40px}.node-panel-center{max-width:600px;padding-top:50px;text-align:center}.node-panel-logo{width:400px;margin-bottom:50px}:host-context(.node-frontend) .network-discovery-edit-row input{height:30px;padding-left:5px}:host-context(.node-frontend) .network-discovery-edit-row{margin:6px 9px}\n/*# sourceURL=${import.meta.resolve("./nodeConnectionsPanel.css")} */\n`};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:9229)"},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=0,this.setDefaultFocusedElement(this.contentElement),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!1),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!0),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(A)}}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 0,"node-js-debugging");n.appendChild(t.i18n.getFormatLocalizedString(b,S.specifyNetworkEndpointAnd,{PH1:i})),this.#i=new o.ListWidget.ListWidget(this),this.#i.registerRequiredCSS(A),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,!0)}}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,1),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:!1,errorMessage:void 0};return{valid:parseInt(n[2],10)<=65535,errorMessage:void 0}}));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 0,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:!0}),l.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(l.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#o,this),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!1),l.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!0)}#o({data:e}){const t=[];for(const o of e.networkDiscoveryConfig){const e=o.split(":"),n=parseInt(e[1],10);e[0]&&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 0,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:32,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),G=t.i18n.getLazilyComputedLocalizedString.bind(void 0,K);let z;o.ViewManager.registerViewExtension({location:"panel",id:"node-connection",title:G(O.connection),commandPrompt:G(O.showConnection),order:0,loadView:async()=>new M,tags:[G(O.node)]}),o.ViewManager.registerViewExtension({location:"navigator-view",id:"navigator-network",title:G(O.networkTitle),commandPrompt:G(O.showNode),order:2,persistence:"permanent",loadView:async()=>(await async function(){return z||(z=await import("../../panels/sources/sources.js")),z}()).SourcesNavigator.NetworkNavigatorView.instance()}),self.runtime=n.Runtime.Runtime.instance({forceNew:!0}),e.Runnable.registerEarlyInitializationRunnable(j.instance),new c.MainImpl.MainImpl;