UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 11.4 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import{Issue,IssueCategory,IssueKind}from"./Issue.js";import{resolveLazyDescription}from"./MarkdownIssueDescription.js";const UIStrings={samesiteCookiesExplained:"SameSite cookies explained",howSchemefulSamesiteWorks:"How Schemeful Same-Site Works",aSecure:"a secure",anInsecure:"an insecure",firstPartySetsExplained:"`First-Party Sets` and the `SameParty` attribute",thirdPartyPhaseoutExplained:"Prepare for phasing out third-party cookies"},str_=i18n.i18n.registerUIStrings("models/issues_manager/CookieIssue.ts",UIStrings),i18nLazyString=i18n.i18n.getLazilyComputedLocalizedString.bind(void 0,str_);export class CookieIssue extends Issue{#e;constructor(e,i,s){super(e,s),this.#e=i}#i(){if(this.#e.cookie){const{domain:e,path:i,name:s}=this.#e.cookie;return`${e};${i};${s}`}return this.#e.rawCookieLine??"no-cookie-info"}primaryKey(){const e=this.#e.request?this.#e.request.requestId:"no-request";return`${this.code()}-(${this.#i()})-(${e})`}static createIssuesFromCookieIssueDetails(e,i){const s=[];if(e.cookieExclusionReasons&&e.cookieExclusionReasons.length>0){for(const t of e.cookieExclusionReasons){const o=CookieIssue.codeForCookieIssueDetails(t,e.cookieWarningReasons,e.operation,e.cookieUrl);o&&s.push(new CookieIssue(o,e,i))}return s}if(e.cookieWarningReasons)for(const t of e.cookieWarningReasons){const o=CookieIssue.codeForCookieIssueDetails(t,[],e.operation,e.cookieUrl);o&&s.push(new CookieIssue(o,e,i))}return s}static codeForCookieIssueDetails(e,i,s,t){const o=t&&(t.startsWith("https://")||t.startsWith("wss://"))?"Secure":"Insecure";if("ExcludeSameSiteStrict"===e||"ExcludeSameSiteLax"===e||"ExcludeSameSiteUnspecifiedTreatedAsLax"===e){if(i&&i.length>0){if(i.includes("WarnSameSiteStrictLaxDowngradeStrict"))return["CookieIssue","ExcludeNavigationContextDowngrade",o].join("::");if(i.includes("WarnSameSiteStrictCrossDowngradeStrict")||i.includes("WarnSameSiteStrictCrossDowngradeLax")||i.includes("WarnSameSiteLaxCrossDowngradeStrict")||i.includes("WarnSameSiteLaxCrossDowngradeLax"))return["CookieIssue","ExcludeContextDowngrade",s,o].join("::")}return"ExcludeSameSiteUnspecifiedTreatedAsLax"===e?["CookieIssue",e,s].join("::"):null}return"WarnSameSiteStrictLaxDowngradeStrict"===e?["CookieIssue",e,o].join("::"):"WarnSameSiteStrictCrossDowngradeStrict"===e||"WarnSameSiteStrictCrossDowngradeLax"===e||"WarnSameSiteLaxCrossDowngradeLax"===e||"WarnSameSiteLaxCrossDowngradeStrict"===e?["CookieIssue","WarnCrossDowngrade",s,o].join("::"):["CookieIssue",e,s].join("::")}cookies(){return this.#e.cookie?[this.#e.cookie]:[]}rawCookieLines(){return this.#e.rawCookieLine?[this.#e.rawCookieLine]:[]}requests(){return this.#e.request?[this.#e.request]:[]}getCategory(){return IssueCategory.Cookie}getDescription(){const e=issueDescriptions.get(this.code());return e?resolveLazyDescription(e):null}isCausedByThirdParty(){return isCausedByThirdParty(SDK.FrameManager.FrameManager.instance().getOutermostFrame(),this.#e.cookieUrl)}getKind(){return this.#e.cookieExclusionReasons?.length>0?IssueKind.PageError:IssueKind.BreakingChange}static fromInspectorIssue(e,i){const s=i.details.cookieIssueDetails;return s?CookieIssue.createIssuesFromCookieIssueDetails(s,e):(console.warn("Cookie issue without details received."),[])}}export function isCausedByThirdParty(e,i){if(!e)return!0;if(!i||""===e.domainAndRegistry())return!1;const s=Common.ParsedURL.ParsedURL.fromString(i);return!!s&&!isSubdomainOf(s.domain(),e.domainAndRegistry())}function isSubdomainOf(e,i){if(e.length<=i.length)return e===i;if(!e.endsWith(i))return!1;return e.substr(0,e.length-i.length).endsWith(".")}const sameSiteUnspecifiedWarnRead={file:"SameSiteUnspecifiedLaxAllowUnsafeRead.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},sameSiteUnspecifiedWarnSet={file:"SameSiteUnspecifiedLaxAllowUnsafeSet.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},sameSiteNoneInsecureErrorRead={file:"SameSiteNoneInsecureErrorRead.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},sameSiteNoneInsecureErrorSet={file:"SameSiteNoneInsecureErrorSet.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},sameSiteNoneInsecureWarnRead={file:"SameSiteNoneInsecureWarnRead.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},sameSiteNoneInsecureWarnSet={file:"SameSiteNoneInsecureWarnSet.md",links:[{link:"https://web.dev/samesite-cookies-explained/",linkTitle:i18nLazyString(UIStrings.samesiteCookiesExplained)}]},schemefulSameSiteArticles=[{link:"https://web.dev/schemeful-samesite/",linkTitle:i18nLazyString(UIStrings.howSchemefulSamesiteWorks)}];function schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:i}){return new Map([["PLACEHOLDER_destination",()=>e?"a secure":"an insecure"],["PLACEHOLDER_origin",()=>i?"a secure":"an insecure"]])}function sameSiteWarnStrictLaxDowngradeStrict(e){return{file:"SameSiteWarnStrictLaxDowngradeStrict.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:!e}),links:schemefulSameSiteArticles}}function sameSiteExcludeNavigationContextDowngrade(e){return{file:"SameSiteExcludeNavigationContextDowngrade.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:!e}),links:schemefulSameSiteArticles}}function sameSiteWarnCrossDowngradeRead(e){return{file:"SameSiteWarnCrossDowngradeRead.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:!e}),links:schemefulSameSiteArticles}}function sameSiteExcludeContextDowngradeRead(e){return{file:"SameSiteExcludeContextDowngradeRead.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:!e}),links:schemefulSameSiteArticles}}function sameSiteWarnCrossDowngradeSet(e){return{file:"SameSiteWarnCrossDowngradeSet.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:!e,isOriginSecure:e}),links:schemefulSameSiteArticles}}function sameSiteExcludeContextDowngradeSet(e){return{file:"SameSiteExcludeContextDowngradeSet.md",substitutions:schemefulSameSiteSubstitutions({isDestinationSecure:e,isOriginSecure:!e}),links:schemefulSameSiteArticles}}const sameSiteInvalidSameParty={file:"SameSiteInvalidSameParty.md",links:[{link:"https://developer.chrome.com/blog/first-party-sets-sameparty/",linkTitle:i18nLazyString(UIStrings.firstPartySetsExplained)}]},samePartyCrossPartyContextSet={file:"SameSiteSamePartyCrossPartyContextSet.md",links:[{link:"https://developer.chrome.com/blog/first-party-sets-sameparty/",linkTitle:i18nLazyString(UIStrings.firstPartySetsExplained)}]},attributeValueExceedsMaxSize={file:"CookieAttributeValueExceedsMaxSize.md",links:[]},warnDomainNonAscii={file:"cookieWarnDomainNonAscii.md",links:[]},excludeDomainNonAscii={file:"cookieExcludeDomainNonAscii.md",links:[]},excludeBlockedWithinFirstPartySet={file:"cookieExcludeBlockedWithinFirstPartySet.md",links:[]},cookieWarnThirdPartyPhaseoutSet={file:"cookieWarnThirdPartyPhaseoutSet.md",links:[{link:"https://developer.chrome.com/docs/privacy-sandbox/third-party-cookie-phase-out/",linkTitle:i18nLazyString(UIStrings.thirdPartyPhaseoutExplained)}]},cookieWarnThirdPartyPhaseoutRead={file:"cookieWarnThirdPartyPhaseoutRead.md",links:[{link:"https://developer.chrome.com/docs/privacy-sandbox/third-party-cookie-phase-out/",linkTitle:i18nLazyString(UIStrings.thirdPartyPhaseoutExplained)}]},cookieExcludeThirdPartyPhaseoutSet={file:"cookieExcludeThirdPartyPhaseoutSet.md",links:[{link:"https://developer.chrome.com/docs/privacy-sandbox/third-party-cookie-phase-out/",linkTitle:i18nLazyString(UIStrings.thirdPartyPhaseoutExplained)}]},cookieExcludeThirdPartyPhaseoutRead={file:"cookieExcludeThirdPartyPhaseoutRead.md",links:[{link:"https://developer.chrome.com/docs/privacy-sandbox/third-party-cookie-phase-out/",linkTitle:i18nLazyString(UIStrings.thirdPartyPhaseoutExplained)}]},issueDescriptions=new Map([["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie",sameSiteUnspecifiedWarnRead],["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie",sameSiteUnspecifiedWarnSet],["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie",sameSiteUnspecifiedWarnRead],["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie",sameSiteUnspecifiedWarnSet],["CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie",sameSiteNoneInsecureErrorRead],["CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie",sameSiteNoneInsecureErrorSet],["CookieIssue::WarnSameSiteNoneInsecure::ReadCookie",sameSiteNoneInsecureWarnRead],["CookieIssue::WarnSameSiteNoneInsecure::SetCookie",sameSiteNoneInsecureWarnSet],["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure",sameSiteWarnStrictLaxDowngradeStrict(!0)],["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure",sameSiteWarnStrictLaxDowngradeStrict(!1)],["CookieIssue::WarnCrossDowngrade::ReadCookie::Secure",sameSiteWarnCrossDowngradeRead(!0)],["CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure",sameSiteWarnCrossDowngradeRead(!1)],["CookieIssue::WarnCrossDowngrade::SetCookie::Secure",sameSiteWarnCrossDowngradeSet(!0)],["CookieIssue::WarnCrossDowngrade::SetCookie::Insecure",sameSiteWarnCrossDowngradeSet(!1)],["CookieIssue::ExcludeNavigationContextDowngrade::Secure",sameSiteExcludeNavigationContextDowngrade(!0)],["CookieIssue::ExcludeNavigationContextDowngrade::Insecure",sameSiteExcludeNavigationContextDowngrade(!1)],["CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure",sameSiteExcludeContextDowngradeRead(!0)],["CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure",sameSiteExcludeContextDowngradeRead(!1)],["CookieIssue::ExcludeContextDowngrade::SetCookie::Secure",sameSiteExcludeContextDowngradeSet(!0)],["CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure",sameSiteExcludeContextDowngradeSet(!1)],["CookieIssue::ExcludeInvalidSameParty::SetCookie",sameSiteInvalidSameParty],["CookieIssue::ExcludeSamePartyCrossPartyContext::SetCookie",samePartyCrossPartyContextSet],["CookieIssue::WarnAttributeValueExceedsMaxSize::ReadCookie",attributeValueExceedsMaxSize],["CookieIssue::WarnAttributeValueExceedsMaxSize::SetCookie",attributeValueExceedsMaxSize],["CookieIssue::WarnDomainNonASCII::ReadCookie",warnDomainNonAscii],["CookieIssue::WarnDomainNonASCII::SetCookie",warnDomainNonAscii],["CookieIssue::ExcludeDomainNonASCII::ReadCookie",excludeDomainNonAscii],["CookieIssue::ExcludeDomainNonASCII::SetCookie",excludeDomainNonAscii],["CookieIssue::ExcludeThirdPartyCookieBlockedInFirstPartySet::ReadCookie",excludeBlockedWithinFirstPartySet],["CookieIssue::ExcludeThirdPartyCookieBlockedInFirstPartySet::SetCookie",excludeBlockedWithinFirstPartySet],["CookieIssue::WarnThirdPartyPhaseout::ReadCookie",cookieWarnThirdPartyPhaseoutRead],["CookieIssue::WarnThirdPartyPhaseout::SetCookie",cookieWarnThirdPartyPhaseoutSet],["CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie",cookieExcludeThirdPartyPhaseoutRead],["CookieIssue::ExcludeThirdPartyPhaseout::SetCookie",cookieExcludeThirdPartyPhaseoutSet]]);