@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 7.3 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";import{AttributionReportingIssue}from"./AttributionReportingIssue.js";import{BounceTrackingIssue}from"./BounceTrackingIssue.js";import{ClientHintIssue}from"./ClientHintIssue.js";import{ContentSecurityPolicyIssue}from"./ContentSecurityPolicyIssue.js";import{CorsIssue}from"./CorsIssue.js";import{CrossOriginEmbedderPolicyIssue,isCrossOriginEmbedderPolicyIssue}from"./CrossOriginEmbedderPolicyIssue.js";import{DeprecationIssue}from"./DeprecationIssue.js";import{FederatedAuthRequestIssue}from"./FederatedAuthRequestIssue.js";import{FederatedAuthUserInfoRequestIssue}from"./FederatedAuthUserInfoRequestIssue.js";import{GenericIssue}from"./GenericIssue.js";import{HeavyAdIssue}from"./HeavyAdIssue.js";import{LowTextContrastIssue}from"./LowTextContrastIssue.js";import{MixedContentIssue}from"./MixedContentIssue.js";import{QuirksModeIssue}from"./QuirksModeIssue.js";import{CookieIssue}from"./CookieIssue.js";import{SharedArrayBufferIssue}from"./SharedArrayBufferIssue.js";import{SourceFrameIssuesManager}from"./SourceFrameIssuesManager.js";import{StylesheetLoadingIssue}from"./StylesheetLoadingIssue.js";let issuesManagerInstance=null;function createIssuesForBlockedByResponseIssue(e,s){const t=s.details.blockedByResponseIssueDetails;return t?isCrossOriginEmbedderPolicyIssue(t.reason)?[new CrossOriginEmbedderPolicyIssue(t,e)]:[]:(console.warn("BlockedByResponse issue without details received."),[])}const issueCodeHandlers=new Map([["CookieIssue",CookieIssue.fromInspectorIssue],["MixedContentIssue",MixedContentIssue.fromInspectorIssue],["HeavyAdIssue",HeavyAdIssue.fromInspectorIssue],["ContentSecurityPolicyIssue",ContentSecurityPolicyIssue.fromInspectorIssue],["BlockedByResponseIssue",createIssuesForBlockedByResponseIssue],["SharedArrayBufferIssue",SharedArrayBufferIssue.fromInspectorIssue],["LowTextContrastIssue",LowTextContrastIssue.fromInspectorIssue],["CorsIssue",CorsIssue.fromInspectorIssue],["QuirksModeIssue",QuirksModeIssue.fromInspectorIssue],["AttributionReportingIssue",AttributionReportingIssue.fromInspectorIssue],["GenericIssue",GenericIssue.fromInspectorIssue],["DeprecationIssue",DeprecationIssue.fromInspectorIssue],["ClientHintIssue",ClientHintIssue.fromInspectorIssue],["FederatedAuthRequestIssue",FederatedAuthRequestIssue.fromInspectorIssue],["BounceTrackingIssue",BounceTrackingIssue.fromInspectorIssue],["StylesheetLoadingIssue",StylesheetLoadingIssue.fromInspectorIssue],["FederatedAuthUserInfoRequestIssue",FederatedAuthUserInfoRequestIssue.fromInspectorIssue]]);function createIssuesFromProtocolIssue(e,s){const t=issueCodeHandlers.get(s.code);return t?t(e,s):(console.warn(`No handler registered for issue code ${s.code}`),[])}export function defaultHideIssueByCodeSetting(){return{}}export function getHideIssueByCodeSetting(){return Common.Settings.Settings.instance().createSetting("HideIssueByCodeSetting-Experiment-2021",defaultHideIssueByCodeSetting())}export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper{showThirdPartyIssuesSetting;hideIssueSetting;#e=new WeakMap;#s=new Map;#t=new Map;#r=new Map;#i=new Map;#n=!1;#o=new Map;#u=new Map;constructor(e,s){super(),this.showThirdPartyIssuesSetting=e,this.hideIssueSetting=s,new SourceFrameIssuesManager(this),SDK.TargetManager.TargetManager.instance().observeModels(SDK.IssuesModel.IssuesModel,this),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,SDK.ResourceTreeModel.Events.PrimaryPageChanged,this.#a,this),SDK.FrameManager.FrameManager.instance().addEventListener(SDK.FrameManager.Events.FrameAddedToTarget,this.#d,this),this.showThirdPartyIssuesSetting?.addChangeListener((()=>this.#I())),this.hideIssueSetting?.addChangeListener((()=>this.#I())),SDK.TargetManager.TargetManager.instance().observeTargets({targetAdded:e=>{e.outermostTarget()===e&&this.#I()},targetRemoved:e=>{}},{scoped:!0})}static instance(e={forceNew:!1,ensureFirst:!1}){if(issuesManagerInstance&&e.ensureFirst)throw new Error('IssuesManager was already created. Either set "ensureFirst" to false or make sure that this invocation is really the first one.');return issuesManagerInstance&&!e.forceNew||(issuesManagerInstance=new IssuesManager(e.showThirdPartyIssuesSetting,e.hideIssueSetting)),issuesManagerInstance}static removeInstance(){issuesManagerInstance=null}reloadForAccurateInformationRequired(){return!this.#n}#a(e){const{frame:s,type:t}=e.data,r=new Map;for(const[e,i]of this.#s.entries())if(i.isAssociatedWithRequestId(s.loaderId))r.set(e,i);else if("Activation"===t&&s.resourceTreeModel().target()===i.model()?.target())r.set(e,i);else if("BounceTrackingIssue"===i.code()||"CookieIssue"===i.code()){const t=s.resourceTreeModel().target().model(SDK.NetworkManager.NetworkManager);!1===t?.requestForLoaderId(s.loaderId)?.hasUserGesture()&&r.set(e,i)}this.#s=r,this.#n=!0,this.#I()}#d(e){const{frame:s}=e.data;s.isOutermostFrame()&&SDK.TargetManager.TargetManager.instance().isInScope(s.resourceTreeModel())&&this.#I()}modelAdded(e){const s=e.addEventListener("IssueAdded",this.#c,this);this.#e.set(e,s)}modelRemoved(e){const s=this.#e.get(e);s&&Common.EventTarget.removeEventListeners([s])}#c(e){const{issuesModel:s,inspectorIssue:t}=e.data,r=createIssuesFromProtocolIssue(s,t);for(const e of r)this.addIssue(s,e)}addIssue(e,s){if(!s.getDescription())return;const t=s.primaryKey();if(this.#s.has(t))return;this.#s.set(t,s);const r=e.target().outermostTarget();if(r){let e=this.#u.get(r);e||(e=new Set,this.#u.set(r,e)),e.add(s)}if(this.#g(s)){this.#t.set(t,s),this.#r.set(s.getKind(),1+(this.#r.get(s.getKind())||0));const r=s.getIssueId();r&&this.#o.set(r,s);const i=this.hideIssueSetting?.get();this.#h(s,i),s.isHidden()&&this.#i.set(s.getKind(),1+(this.#i.get(s.getKind())||0)),this.dispatchEventToListeners("IssueAdded",{issuesModel:e,issue:s})}this.dispatchEventToListeners("IssuesCountUpdated")}issues(){return this.#t.values()}numberOfIssues(e){return e?(this.#r.get(e)??0)-this.numberOfHiddenIssues(e):this.#t.size-this.numberOfHiddenIssues()}numberOfHiddenIssues(e){if(e)return this.#i.get(e)??0;let s=0;for(const e of this.#i.values())s+=e;return s}numberOfAllStoredIssues(){return this.#s.size}#g(e){const s=SDK.TargetManager.TargetManager.instance().scopeTarget();return!!s&&(!!this.#u.get(s)?.has(e)&&(this.showThirdPartyIssuesSetting?.get()||!e.isCausedByThirdParty()))}#h(e,s){const t=e.code();if(s&&s[t])return"Hidden"===s[t]?void e.setHidden(!0):void e.setHidden(!1)}#I(){this.#t.clear(),this.#r.clear(),this.#o.clear(),this.#i.clear();const e=this.hideIssueSetting?.get();for(const[s,t]of this.#s)if(this.#g(t)){this.#h(t,e),this.#t.set(s,t),this.#r.set(t.getKind(),1+(this.#r.get(t.getKind())??0)),t.isHidden()&&this.#i.set(t.getKind(),1+(this.#i.get(t.getKind())||0));const r=t.getIssueId();r&&this.#o.set(r,t)}this.dispatchEventToListeners("FullUpdateRequired"),this.dispatchEventToListeners("IssuesCountUpdated")}unhideAllIssues(){for(const e of this.#s.values())e.setHidden(!1);this.hideIssueSetting?.set(defaultHideIssueByCodeSetting())}getIssueById(e){return this.#o.get(e)}}globalThis.addIssueForTest=e=>{const s=SDK.TargetManager.TargetManager.instance().primaryPageTarget(),t=s?.model(SDK.IssuesModel.IssuesModel);t?.issueAdded({issue:e})};