@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.46 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as IssuesManager from"../../models/issues_manager/issues_manager.js";export class AggregatedIssue extends IssuesManager.Issue.Issue{#e=new Map;#s=new Map;#t=new Map;#r=new Map;#a=new Set;#n=new Map;#i=new Set;#u=new Set;#o=new Set;#d=new Set;#g=IssuesManager.Issue.IssueKind.Improvement;#I=new Set;#c=new Set;#h=new Set;#f=new Set;#y=new Set;#p=new Set;#l;#k=0;#C;constructor(e,s){super(e),this.#C=s}primaryKey(){throw new Error("This should never be called")}aggregationKey(){return this.#C}getBlockedByResponseDetails(){return this.#n.values()}cookies(){return Array.from(this.#e.values()).map((e=>e.cookie))}getRawCookieLines(){return this.#s.values()}sources(){return this.#r.values()}getBounceTrackingSites(){return this.#i.values()}cookiesWithRequestIndicator(){return this.#e.values()}getHeavyAdIssues(){return this.#a}getMixedContentIssues(){return this.#c}getCorsIssues(){return this.#u}getCspIssues(){return this.#o}getDeprecationIssues(){return this.#d}getLowContrastIssues(){return this.#I}requests(){return this.#t.values()}getSharedArrayBufferIssues(){return this.#h}getQuirksModeIssues(){return this.#f}getAttributionReportingIssues(){return this.#y}getGenericIssues(){return this.#p}getDescription(){return this.#l?this.#l.getDescription():null}getCategory(){return this.#l?this.#l.getCategory():IssuesManager.Issue.IssueCategory.Other}getAggregatedIssuesCount(){return this.#k}#w(e){const{domain:s,path:t,name:r}=e;return`${s};${t};${r}`}addInstance(e){this.#k++,this.#l||(this.#l=e),this.#g=IssuesManager.Issue.unionIssueKind(this.#g,e.getKind());let s=!1;for(const t of e.requests())s=!0,this.#t.has(t.requestId)||this.#t.set(t.requestId,t);for(const t of e.cookies()){const e=this.#w(t);this.#e.has(e)||this.#e.set(e,{cookie:t,hasRequest:s})}for(const t of e.rawCookieLines())this.#s.has(t)||this.#s.set(t,{rawCookieLine:t,hasRequest:s});for(const s of e.trackingSites())this.#i.has(s)||this.#i.add(s);for(const s of e.sources()){const e=JSON.stringify(s);this.#r.has(e)||this.#r.set(e,s)}e instanceof IssuesManager.MixedContentIssue.MixedContentIssue&&this.#c.add(e),e instanceof IssuesManager.HeavyAdIssue.HeavyAdIssue&&this.#a.add(e);for(const s of e.getBlockedByResponseDetails()){const e=JSON.stringify(s,["parentFrame","blockedFrame","requestId","frameId","reason","request"]);this.#n.set(e,s)}e instanceof IssuesManager.ContentSecurityPolicyIssue.ContentSecurityPolicyIssue&&this.#o.add(e),e instanceof IssuesManager.DeprecationIssue.DeprecationIssue&&this.#d.add(e),e instanceof IssuesManager.SharedArrayBufferIssue.SharedArrayBufferIssue&&this.#h.add(e),e instanceof IssuesManager.LowTextContrastIssue.LowTextContrastIssue&&this.#I.add(e),e instanceof IssuesManager.CorsIssue.CorsIssue&&this.#u.add(e),e instanceof IssuesManager.QuirksModeIssue.QuirksModeIssue&&this.#f.add(e),e instanceof IssuesManager.AttributionReportingIssue.AttributionReportingIssue&&this.#y.add(e),e instanceof IssuesManager.GenericIssue.GenericIssue&&this.#p.add(e)}getKind(){return this.#g}isHidden(){return this.#l?.isHidden()||!1}setHidden(e){throw new Error("Should not call setHidden on aggregatedIssue")}}export class IssueAggregator extends Common.ObjectWrapper.ObjectWrapper{issuesManager;#M=new Map;#A=new Map;constructor(e){super(),this.issuesManager=e,this.issuesManager.addEventListener("IssueAdded",this.#v,this),this.issuesManager.addEventListener("FullUpdateRequired",this.#B,this);for(const e of this.issuesManager.issues())this.#m(e)}#v(e){this.#m(e.data.issue)}#B(){this.#M.clear(),this.#A.clear();for(const e of this.issuesManager.issues())this.#m(e);this.dispatchEventToListeners("FullUpdateRequired")}#m(e){const s=e.isHidden()?this.#A:this.#M,t=this.#S(s,e);return this.dispatchEventToListeners("AggregatedIssueUpdated",t),t}#S(e,s){const t=s.code();let r=e.get(t);return r||(r=new AggregatedIssue(s.code(),t),e.set(t,r)),r.addInstance(s),r}aggregatedIssues(){return[...this.#M.values(),...this.#A.values()]}hiddenAggregatedIssues(){return this.#A.values()}aggregatedIssueCodes(){return new Set([...this.#M.keys(),...this.#A.keys()])}aggregatedIssueCategories(){const e=new Set;for(const s of this.#M.values())e.add(s.getCategory());return e}aggregatedIssueKinds(){const e=new Set;for(const s of this.#M.values())e.add(s.getKind());return e}numberOfAggregatedIssues(){return this.#M.size}numberOfHiddenAggregatedIssues(){return this.#A.size}keyForIssue(e){return e.code()}}