{"version":3,"file":"js/global-49e0b6d69422cab89236.js","mappings":"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","sources":["webpack://StravaModern/./app/javascript/globalLibraries.js","webpack://StravaModern/./app/javascript/utils/devUtils.js","webpack://StravaModern/./app/javascript/utils/public-service-env.js","webpack://StravaModern/./app/javascript/utils/sentry.helper.js","webpack://StravaModern/./app/javascript/utils/sentry.js","webpack://StravaModern/./node_modules/@babel/runtime/helpers/esm/extends.js"],"sourcesContent":["// This file is deprecated and only used to move node_modules accessed in the\n// sprockets asset pipeline to webpack entry points\n// adding random string to force recompile:\n// A998D3152224818D225A880A9B627F1FB4484DD7E408EACA1B243326ED4AA01B\n\n// importing jquery using script-loader to mimic adding jQuery via a script tag\n/* eslint-disable no-unused-vars,import/extensions */\nimport 'jquery/dist/jquery.min.js';\nimport 'leaflet/dist/leaflet.js';\nimport 'dexie/dist/dexie.min.js';\nimport 'intersection-observer/intersection-observer.js';\nimport '@strava/clio/dist/strava_analytics.min.js';\nimport '@strava/autotrack/autotrack.js';\nimport 'dropzone/dist/dropzone.js';\nimport 'blueimp-load-image/js/load-image.all.min.js';\nimport 'dropzone/dist/min/dropzone.min.css';\n\nimport { setPublicServiceEnv } from './utils/public-service-env';\nimport { devLog } from './utils/devUtils';\n\n// Expose method on global scope that sets public keys that are commonly passed\n// to 3rd party libs or tooling.\nif (window.stravaPublicServiceEnv === undefined) {\n window.stravaPublicServiceEnv = setPublicServiceEnv;\n}\n\ndevLog('loading global libraries');\n","/**\n * dev utils to make local development easier (dynamically-imported mock data,\n * dev-only console logs, etc.)\n */\n\nexport const isDev = () => {\n return process.env.NODE_ENV === 'development';\n};\n\nexport const isTest = () => process.env.NODE_ENV === 'test';\n\nexport const devLog = (string) => {\n if (isDev() || window?.StravaDevTools?.enabled) {\n // eslint-disable-next-line no-console\n console.log(string);\n }\n};\n\nexport const timeout = (ms) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\nexport default { isDev, devLog, timeout };\n","// Object containing no secret key value pairs that are expected to be seen and\n// used in the browser. This keys are commonly passed to 3rd party libs or tooling.\n//\n// Data that gets set to this object is set in the following file:\n// app/views/common/_react_public_service_env.haml\n//\n// Do not set values directly into this object here as that is not intended use\nconst publicServiceEnv = {};\n\n/**\n * Sets data to an object and freezes it on the initial call.\n * @param {Object} envData Object containing key value pairs that are not nested objects\n */\nfunction setPublicServiceEnv(envData) {\n // Only update the object if it's empty as we do not want to allow any updated\n // after the initial call to this method\n if (Object.keys(publicServiceEnv).length === 0) {\n const keys = Object.keys(envData);\n\n if (keys.length > 0) {\n keys.forEach((value) => {\n publicServiceEnv[value] = envData[value];\n });\n\n // Freeze object so that it can not be updated or changed\n Object.freeze(publicServiceEnv);\n }\n }\n}\n\nexport { publicServiceEnv, setPublicServiceEnv };\n","const BROWSER_EXTENSION = '-extension://';\nconst ANONYMOUS = '';\n\nexport const hasExtensionReferenceInHintErrorStack = (hint) =>\n hint?.originalException?.stack?.includes(BROWSER_EXTENSION);\n\nexport const hasExtensionReferenceInBreadCrumbs = (event) =>\n !!event?.breadcrumbs?.find((entry) =>\n entry.data?.url?.includes(BROWSER_EXTENSION)\n );\n\nexport const hasExtensionReferenceInEventErrorStack = (event) => {\n return !!event?.exception?.values?.find((entry) => {\n return !!entry.stacktrace?.frames?.find(\n (frame) =>\n frame?.filename?.includes(BROWSER_EXTENSION) ||\n frame?.abs_path?.includes(BROWSER_EXTENSION) ||\n frame?.filename?.includes(ANONYMOUS) ||\n frame?.abs_path?.includes(ANONYMOUS)\n );\n });\n};\n\nexport default {\n hasExtensionReferenceInHintErrorStack,\n hasExtensionReferenceInBreadCrumbs,\n hasExtensionReferenceInEventErrorStack\n};\n","import * as Sentry from '@sentry/browser';\nimport { BrowserTracing } from '@sentry/tracing';\nimport { isDev } from './devUtils';\nimport {\n hasExtensionReferenceInBreadCrumbs,\n hasExtensionReferenceInHintErrorStack,\n hasExtensionReferenceInEventErrorStack\n} from './sentry.helper';\n\n// List of pages that have the same pathname but different variants controlled with\n// search params. Pages added to this list will have the search param added to the name\n// during tracing (performance tracking)\nconst PAGES_WITH_VARIANTS = ['/onboarding/continue'];\n\nif (!window.StravaSentryDsn) {\n window.StravaSentryDsn = {};\n}\nif (!window.StravaSentryDsn.deferred) {\n window.StravaSentryDsn.deferred = {};\n const promise = new Promise(\n function _(resolve, reject) {\n this.doResolve = resolve;\n this.doReject = reject;\n }.bind(window.StravaSentryDsn.deferred)\n );\n window.StravaSentryDsn.deferred.then = promise.then.bind(promise);\n}\n\nconst { enabled, environment, release, userId, dsn, sampleRate, debug } =\n window.StravaSentry || {};\n\nwindow.StravaSentryDsn.deferred.doResolve(dsn);\n\nwindow.StravaSentryDsn.deferred.then((_dsn) => {\n // configure sentry_frontend.yml to enable sentry on local\n if (enabled) {\n Sentry.init({\n dsn: _dsn,\n maxBreadcrumbs: 50,\n integrations: [\n new BrowserTracing({\n tracingOrigins: [\n 'https://www.staging.strava.com',\n 'https://www.strava.com',\n 'localhost',\n /^\\//\n ],\n beforeNavigate: (context) => {\n const { pathname, search } = window.location;\n const includeSearchParam = PAGES_WITH_VARIANTS.includes(pathname);\n return {\n ...context,\n name: includeSearchParam ? pathname.concat(search) : pathname\n };\n }\n })\n ],\n denyUrls: [\n // Chrome extensions\n /extensions\\//i,\n /^chrome:\\/\\//i\n ],\n tracesSampleRate: sampleRate,\n debug,\n attachStacktrace: true,\n release,\n initialScope: {\n user: { id: userId }\n },\n environment,\n beforeSend: (event, hint) => {\n if (\n hasExtensionReferenceInHintErrorStack(hint) ||\n hasExtensionReferenceInBreadCrumbs(event) ||\n hasExtensionReferenceInEventErrorStack(event)\n ) {\n return null;\n }\n return event;\n }\n });\n }\n});\n\nexport const logError = (err) => {\n if (isDev()) {\n // eslint-disable-next-line no-console\n console.error('logError :::', err);\n return;\n }\n Sentry.captureException(err);\n};\n\nexport const logMessage = (message) => {\n if (isDev()) {\n // eslint-disable-next-line no-console\n console.log('logMessage :::', message);\n return;\n }\n Sentry.captureMessage(message);\n};\n\nexport default { logError, logMessage };\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}"],"names":["undefined","window","stravaPublicServiceEnv","setPublicServiceEnv","devLog","isDev","process","string","StravaDevTools","enabled","console","log","timeout","ms","Promise","resolve","setTimeout","publicServiceEnv","envData","Object","keys","length","forEach","value","freeze","BROWSER_EXTENSION","ANONYMOUS","hasExtensionReferenceInHintErrorStack","hint","originalException","stack","includes","hasExtensionReferenceInBreadCrumbs","event","breadcrumbs","find","entry","data","url","hasExtensionReferenceInEventErrorStack","exception","values","stacktrace","frames","frame","filename","abs_path","PAGES_WITH_VARIANTS","StravaSentryDsn","deferred","promise","reject","this","doResolve","doReject","bind","then","StravaSentry","environment","release","userId","dsn","sampleRate","debug","_dsn","Sentry","maxBreadcrumbs","integrations","BrowserTracing","tracingOrigins","beforeNavigate","context","location","pathname","search","includeSearchParam","name","concat","denyUrls","tracesSampleRate","attachStacktrace","initialScope","user","id","beforeSend","logError","err","error","logMessage","message","_extends","assign","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply"],"sourceRoot":""}