{"version":3,"file":"chunks/e2ade387ac691c5b8f5b.js","mappings":"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","sources":["webpack:///./config.ts","webpack:///./resources/js/client-errors/index.ts","webpack:///./resources/js/common/environment.ts"],"sourcesContent":["/**\n * url Config for de cluttering endpoints so that we can change it in one place and it will reflect\n * across the whole code base, eventually we can make one for prod but just dev for right now\n * stgWacInternalUrl(formerly): \"qa-wac.internal.atlassian.com\"\n */\n\n\nexport const stgConfig = {\n stgWacInternalUrl: \"https://wac.stg.internal.atlassian.com\"\n};\n\nexport default stgConfig;\n","import * as Sentry from \"@sentry/browser\";\nimport Environment from \"../common/environment\";\n\nconst filterErrorDomains = [\n \"https://web-analytics.engagio.com/\",\n \"https://match.prod.bidr.io/\",\n \"https://id.rlcdn.com/\",\n \"https://platform.twitter.com/\",\n \"https://connect.facebook.net/\",\n \"https://cdnssl.clicktale.net/\",\n \"https://googleads.g.doubleclick.net/\",\n \"https://scripts.demandbase.com/\",\n \"https://cdn.optimizely.com/\",\n \"https://munchkin.marketo.net/\",\n \"https://analytics.twitter.com/\",\n \"https://snap.licdn.com/\",\n \"https://www.googletagmanager.com/\",\n \"https://www.googleadservices.com/\",\n \"https://www.google-analytics.com/\",\n \"https://www.redditstatic.com/\",\n \"https://api.autopilothq.com/\",\n \"https://cdn.bizible.com/\",\n \"https://a.quora.com/\",\n \"https://www.google.com/\",\n];\n\nconst currentEnvironment = Environment.getEnvironment();\n\nSentry.init({\n // https://hello.atlassian.net/wiki/spaces/OBSERVABILITY/pages/1436386358/Sentry+Cloud+-+Getting+Started#Setting-up-the-Sentry-SDK-for-your-project\n dsn: \"https://1c1d742244454a16842f0bf5a72c06a2@api.atlassian.com/sentry-cloud/5988886\", // Should match `.sentryclirc`\n environment: currentEnvironment,\n release: WEBPACK_SENTRY_BUILD_VERSION,\n});\n\nconst shouldLogError = (errorSourceUrl: string) => {\n const errorUrlRootResult = /^https?:\\/\\/.*?\\//.exec(errorSourceUrl);\n\n if (\n errorUrlRootResult &&\n filterErrorDomains.includes(errorUrlRootResult[0])\n ) {\n return false;\n }\n\n return true;\n};\n\n// Remove everything after characters `?` or `#` in a URL before logging.\nconst stripUrl = (url: string) => url.replace(/[?#].*$/i, \"\");\n\n// See https://github.com/getsentry/sentry-javascript/issues/3382#issuecomment-817673194\nconst tagErrorHandler = (event: ErrorEvent) => {\n if (!event.target) {\n Sentry.captureMessage(\n `Error without target, type: ${event.type || \"unknown\"}`,\n Sentry.Severity.Error\n );\n return;\n }\n\n let errorTag = \"undefined\";\n let errorSourceUrl = \"unknown\";\n const errorSeverity = Sentry.Severity.Error;\n\n const targetElement = event.target as HTMLElement;\n\n if (targetElement && targetElement.tagName) {\n errorTag = `${targetElement.tagName}`;\n\n const tagNameLowercase = errorTag.toLowerCase();\n\n if (tagNameLowercase === \"img\") {\n errorSourceUrl = `${(targetElement as HTMLImageElement).src}`;\n } else if (tagNameLowercase === \"link\") {\n errorSourceUrl = `${(targetElement as HTMLLinkElement).href}`;\n } else if (tagNameLowercase === \"script\") {\n errorSourceUrl = `${(targetElement as HTMLScriptElement).src}`;\n }\n }\n\n if (!shouldLogError(errorSourceUrl)) {\n return;\n }\n\n errorSourceUrl = stripUrl(errorSourceUrl);\n\n Sentry.captureMessage(\n `Uncaught error event from \"${errorTag}\", source: ${errorSourceUrl}`,\n errorSeverity\n );\n};\n\nconst attachTagErrorHandler = (element: HTMLElement | Document) => {\n element.addEventListener(\"error\", tagErrorHandler as EventListener, true);\n};\n\nattachTagErrorHandler(document);\n\n// Don't trigger attaching to document body until page readyState has left \"loading\"\n// \"loading\" -> \"interactive\" -> \"complete\"\nif (document.readyState !== \"loading\") {\n attachTagErrorHandler(document.body);\n} else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n attachTagErrorHandler(document.body);\n });\n}\n","import stgConfig from \"../../../config\";\nconst ENV_DEV = \"dev\";\nconst ENV_STAGING = \"staging\";\nconst ENV_PRODUCTION = \"production\";\nconst ENV_AUTHOR = \"author\";\n\nexport default class Environment {\n static getWindowLocation() {\n return window.location;\n }\n\n static getSubdomain() {\n const urlParts = this.getWindowLocation().hostname.split(\".\");\n\n if (urlParts[1] === \"dev\") {\n return \"localhost\";\n }\n\n return urlParts[0];\n }\n\n static getSubdirectory() {\n const urlParts = this.getWindowLocation().pathname.split(\"/\");\n if (urlParts[1] === \"wac\") {\n return urlParts.length > 1 ? urlParts[2] : \"\";\n } else {\n return urlParts[1];\n }\n }\n\n static isStagingPublicEnvironment() {\n return (\n this.getWindowLocation().hostname.indexOf(\"wac.stg.internal.atlassian\") >\n -1 || this.getWindowLocation().hostname.indexOf(\"qa-wac.atlassian\") > -1\n );\n }\n\n static getEnvironment() {\n const forceStaging = window.location.search.includes('forceProdTesting=true');\n \n if (forceStaging) {\n return ENV_PRODUCTION;\n }\n switch (this.getSubdomain()) {\n case \"wac\":\n case \"qa-wac\":\n case \"author\":\n case \"proof\":\n return ENV_STAGING;\n case \"localhost\":\n case \"local\":\n return ENV_DEV;\n case \"truth\":\n case \"www\":\n case \"atlassian\":\n case \"bitbucket\":\n case \"sourcetreeapp\":\n case \"agile\": \n case \"git\":\n case \"software\":\n return ENV_PRODUCTION;\n default:\n /* for omlet instances */\n return ENV_STAGING;\n }\n }\n\n static getInternationalSubdomain() {\n const hostnameSubdomain = this.getSubdomain();\n const validLocales = [\n \"cn\",\n \"cs\",\n \"de\",\n \"es\",\n \"fr\",\n \"it\",\n \"ko\",\n \"hu\",\n \"nl\",\n \"ja\",\n \"pl\",\n \"br\",\n \"ro\",\n \"fi\",\n \"ru\",\n ];\n\n if (validLocales.indexOf(hostnameSubdomain) === -1) {\n return false;\n }\n\n return hostnameSubdomain;\n }\n\n static getInternationalSubdirectory() {\n const subdirectory = this.getSubdirectory();\n const validLocales = [\n \"zh\",\n \"cs\",\n \"de\",\n \"es\",\n \"fr\",\n \"it\",\n \"ko\",\n \"hu\",\n \"nl\",\n \"ja\",\n \"pl\",\n \"br\",\n \"ro\",\n \"fi\",\n \"ru\",\n ];\n\n if (validLocales.indexOf(subdirectory) === -1) {\n return false;\n }\n\n return subdirectory;\n }\n\n static isInternationalSubdomain() {\n return !!this.getInternationalSubdomain();\n }\n\n static production() {\n return ENV_PRODUCTION;\n }\n\n static staging() {\n return ENV_STAGING;\n }\n\n static dev() {\n return ENV_DEV;\n }\n\n static author() {\n return ENV_AUTHOR;\n }\n\n static isProduction() {\n return this.getEnvironment() === this.production();\n }\n\n static isStaging() {\n return this.getEnvironment() === this.staging();\n }\n\n static isDev() {\n return this.getEnvironment() === this.dev();\n }\n\n static isAuthor() {\n return this.getSubdomain() === this.author();\n }\n\n static getIdentityBaseUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://id.stg.internal.atlassian.com\";\n } else {\n return \"https://id.atlassian.com\";\n }\n }\n\n static getLoginUrl(skipEncoding: boolean) {\n const continueUrl = this.getWindowLocation().href;\n if (!skipEncoding) {\n return `${this.getIdentityBaseUrl()}/login?continue=${encodeURIComponent(\n continueUrl\n )}`;\n } else {\n return `${this.getIdentityBaseUrl()}/login?continue=${continueUrl}`;\n }\n }\n\n static getLogoutUrl() {\n const continueUrl = this.getWindowLocation().href;\n return `${this.getIdentityBaseUrl()}/logout?continue=${encodeURIComponent(\n continueUrl\n )}`;\n }\n\n static getSwitchAccountURL(continueUrlParam?: string) {\n const continueUrl = continueUrlParam ? continueUrlParam : this.getWindowLocation().href;\n return `${this.getIdentityBaseUrl()}/login/select-account?continue=${encodeURIComponent(\n continueUrl\n )}`;\n }\n \n static getManageProfileUrl(userEmail: string) {\n const applicationParam = encodeURIComponent(\"wac\")\n const continueUrlParam = encodeURIComponent(`${this.getIdentityBaseUrl()}/manage-profile`)\n const loginHintParam = encodeURIComponent(userEmail)\n \n return `${this.getIdentityBaseUrl()}/login?application=${applicationParam}&continue=${continueUrlParam}&login_hint=${loginHintParam}`;\n }\n\n static getMacUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://my.stg.internal.atlassian.com\";\n } else {\n return \"https://my.atlassian.com\";\n }\n }\n\n static getStartUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://start.stg.atlassian.com\";\n } else {\n return \"https://start.atlassian.com\";\n }\n }\n\n static getAPIPrivateURL() {\n if (this.isStaging() || this.isDev()) {\n return \"https://wac.stg.internal.atlassian.com/gateway/api\";\n }\n\n return \"https://www.atlassian.com/gateway/api\";\n }\n\n static getWacIntegrationUrl() {\n if (this.isStaging() || this.isDev()) {\n const useQaWAC =\n window.location.hostname.indexOf(\"qa-wac\") > -1 ||\n window.location.hostname.indexOf(\"author\") > -1;\n return `${useQaWAC\n ? \"https://qa-wac.internal.atlassian.com\"\n : stgConfig.stgWacInternalUrl\n }`;\n } else {\n return \"https://www.atlassian.com\";\n }\n }\n\n static getBBIntegrationUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://integration.bb-inf.net\";\n } else {\n return \"https://bitbucket.org\";\n }\n }\n}\n"],"names":["stgWacInternalUrl","filterErrorDomains","currentEnvironment","Environment","Sentry","dsn","environment","release","WEBPACK_SENTRY_BUILD_VERSION","tagErrorHandler","event","target","errorTag","errorSourceUrl","errorSeverity","targetElement","tagName","tagNameLowercase","toLowerCase","src","href","errorUrlRootResult","exec","includes","shouldLogError","replace","type","attachTagErrorHandler","element","addEventListener","document","readyState","body","window","ENV_STAGING","ENV_PRODUCTION","location","urlParts","this","getWindowLocation","hostname","split","pathname","length","indexOf","search","getSubdomain","hostnameSubdomain","subdirectory","getSubdirectory","getInternationalSubdomain","getEnvironment","production","staging","dev","author","isStaging","isDev","skipEncoding","continueUrl","getIdentityBaseUrl","encodeURIComponent","continueUrlParam","userEmail","applicationParam","loginHintParam","useQaWAC","stgConfig"],"sourceRoot":""}