{"version":3,"file":"loginweb/sm-app-loginweb.276bda92.js","mappings":"6EAAA,IAAIA,EAAM,CACT,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,MAGF,SAASC,oBAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,KAIR,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAOR,EAAoBK,EAAEG,EAAI,IAAIJ,MAAK,WACzC,OAAOJ,EAAoBU,EAAED,EAAI,OAGnCX,oBAAoBa,KAAO,WAAa,OAAOC,OAAOD,KAAKd,IAC3DC,oBAAoBW,GAAK,MACzBI,EAAOC,QAAUhB,qB,sBC1IjB,IAAID,EAAM,CACT,UAAW,CACV,MACA,GAED,eAAgB,CACf,MACA,GAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MACA,KAED,UAAW,CACV,MACA,KAED,eAAgB,CACf,MA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","sources":["/app/apps/loginweb/node_modules/@sm/webassets/dist/locales/translated|lazy|/^/.//.*$/|chunkName: i18n/webassets/[request]|groupOptions: {}|namespace object","/app/apps/loginweb/src/locales/translated|lazy|/^/.//.*$/|chunkName: i18n/[request]|groupOptions: {}|namespace object","/app/apps/loginweb/src/app/components/CTASplitter/CTASplitter.tsx","/app/apps/loginweb/src/app/helpers/possibleTypes.ts","/app/apps/loginweb/src/app/utils/getSubdomain.ts","/app/apps/loginweb/src/app/helpers/queryParams.ts","/app/apps/loginweb/src/app/handlers/login.ts","/app/apps/loginweb/src/app/pages/login/BaseLoadingPage/index.tsx","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/handlers/index.ts","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/handlers/connectionDisabled.ts","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/handlers/idpInitiated.ts","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/handlers/invalidCert.ts","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/handlers/invalidThumbprint.ts","/app/apps/loginweb/src/app/pages/login/LoadingPage/LoadingPage.tsx","/app/apps/loginweb/src/app/utils/auth0SamlErrorParser/index.ts","/app/apps/loginweb/src/app/pages/login/hooks.tsx","/app/apps/loginweb/src/app/pages/login/StartAuthTransactionPage/index.tsx","/app/apps/loginweb/src/app/handlers/callback/handleRedirectCallback.ts","/app/apps/loginweb/src/common/utils/cleanObject.ts","/app/apps/loginweb/src/app/helpers/respondentSSOApiClient.ts","/app/apps/loginweb/src/app/handlers/callback.ts","/app/apps/loginweb/src/app/pages/login/HandleAuthCallbackPage/index.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/UnlinkedWindow.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/UnlinkedButtonOption.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/UnlinkedErrorBanner.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/UnlinkedHeader.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/UnlinkedPageContent.tsx","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/index.tsx","/app/apps/loginweb/src/app/pages/login/ErrorPage/copy.ts","/app/apps/loginweb/src/app/helpers/samlConnectionApi.ts","/app/apps/loginweb/src/app/pages/login/ErrorPage/index.tsx","/app/apps/loginweb/src/app/App.tsx","/app/apps/loginweb/src/app/utils/getLocaleMessages.ts","/app/apps/loginweb/src/app/entry.ts","/app/apps/loginweb/src/app/utils/bootstrapSMWeb.ts","/app/apps/loginweb/src/app/utils/createApp.tsx","/app/apps/loginweb/src/app/utils/mount.ts","/app/apps/loginweb/src/app/handlers/handlers.ts","/app/apps/loginweb/src/app/helpers/navigateTo.ts","/app/apps/loginweb/src/app/helpers/sessionStorage.ts","/app/apps/loginweb/src/app/helpers/sessionsApiClient.ts","/app/apps/loginweb/src/app/pages/login/UnlinkedPage/tokenHelper.tsx","/app/apps/loginweb/src/app/pages/sharedRoutes.ts","/app/apps/loginweb/src/app/pages/team/routes.ts","/app/apps/loginweb/src/common/helpers/amplitudeSession.ts","/app/apps/loginweb/src/app/utils/amplitudeHelpers.ts","/app/apps/loginweb/src/app/utils/history.ts","/app/apps/loginweb/src/common/entities/auth0Strategy.ts","/app/apps/loginweb/src/common/entities/smParams.ts","/app/apps/loginweb/src/common/errors/userFacing.ts","/app/apps/loginweb/src/common/helpers/asEnum.ts","/app/apps/loginweb/external var \"jsdom\""],"sourcesContent":["var map = {\n\t\"./da-DK\": [\n\t\t60102,\n\t\t233\n\t],\n\t\"./da-DK.json\": [\n\t\t60102,\n\t\t233\n\t],\n\t\"./de-DE\": [\n\t\t70963,\n\t\t233\n\t],\n\t\"./de-DE.json\": [\n\t\t70963,\n\t\t233\n\t],\n\t\"./es-LA\": [\n\t\t56137,\n\t\t233\n\t],\n\t\"./es-LA.json\": [\n\t\t56137,\n\t\t233\n\t],\n\t\"./fi-FI\": [\n\t\t11049,\n\t\t233\n\t],\n\t\"./fi-FI.json\": [\n\t\t11049,\n\t\t233\n\t],\n\t\"./fr-FR\": [\n\t\t63798,\n\t\t233\n\t],\n\t\"./fr-FR.json\": [\n\t\t63798,\n\t\t233\n\t],\n\t\"./it-IT\": [\n\t\t76977,\n\t\t233\n\t],\n\t\"./it-IT.json\": [\n\t\t76977,\n\t\t233\n\t],\n\t\"./ja-JP\": [\n\t\t68572,\n\t\t233\n\t],\n\t\"./ja-JP.json\": [\n\t\t68572,\n\t\t233\n\t],\n\t\"./ko-KR\": [\n\t\t87602,\n\t\t233\n\t],\n\t\"./ko-KR.json\": [\n\t\t87602,\n\t\t233\n\t],\n\t\"./nl-NL\": [\n\t\t84742,\n\t\t233\n\t],\n\t\"./nl-NL.json\": [\n\t\t84742,\n\t\t233\n\t],\n\t\"./no-NO\": [\n\t\t67813,\n\t\t233\n\t],\n\t\"./no-NO.json\": [\n\t\t67813,\n\t\t233\n\t],\n\t\"./pt-BR\": [\n\t\t78815,\n\t\t233\n\t],\n\t\"./pt-BR.json\": [\n\t\t78815,\n\t\t233\n\t],\n\t\"./ru-RU\": [\n\t\t67962,\n\t\t233\n\t],\n\t\"./ru-RU.json\": [\n\t\t67962,\n\t\t233\n\t],\n\t\"./sv-SE\": [\n\t\t19207,\n\t\t233\n\t],\n\t\"./sv-SE.json\": [\n\t\t19207,\n\t\t233\n\t],\n\t\"./tr-TR\": [\n\t\t68314,\n\t\t233\n\t],\n\t\"./tr-TR.json\": [\n\t\t68314,\n\t\t233\n\t],\n\t\"./zh-TW\": [\n\t\t22729,\n\t\t233\n\t],\n\t\"./zh-TW.json\": [\n\t\t22729,\n\t\t233\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 38686;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./da-DK\": [\n\t\t29302,\n\t\t2\n\t],\n\t\"./da-DK.json\": [\n\t\t29302,\n\t\t2\n\t],\n\t\"./de-DE\": [\n\t\t29125,\n\t\t750\n\t],\n\t\"./de-DE.json\": [\n\t\t29125,\n\t\t750\n\t],\n\t\"./es-LA\": [\n\t\t24547,\n\t\t597\n\t],\n\t\"./es-LA.json\": [\n\t\t24547,\n\t\t597\n\t],\n\t\"./fi-FI\": [\n\t\t53989,\n\t\t675\n\t],\n\t\"./fi-FI.json\": [\n\t\t53989,\n\t\t675\n\t],\n\t\"./fr-FR\": [\n\t\t73836,\n\t\t821\n\t],\n\t\"./fr-FR.json\": [\n\t\t73836,\n\t\t821\n\t],\n\t\"./it-IT\": [\n\t\t82546,\n\t\t174\n\t],\n\t\"./it-IT.json\": [\n\t\t82546,\n\t\t174\n\t],\n\t\"./ja-JP\": [\n\t\t65340,\n\t\t93\n\t],\n\t\"./ja-JP.json\": [\n\t\t65340,\n\t\t93\n\t],\n\t\"./ko-KR\": [\n\t\t37025,\n\t\t890\n\t],\n\t\"./ko-KR.json\": [\n\t\t37025,\n\t\t890\n\t],\n\t\"./nl-NL\": [\n\t\t41212,\n\t\t574\n\t],\n\t\"./nl-NL.json\": [\n\t\t41212,\n\t\t574\n\t],\n\t\"./no-NO\": [\n\t\t52883,\n\t\t244\n\t],\n\t\"./no-NO.json\": [\n\t\t52883,\n\t\t244\n\t],\n\t\"./pt-BR\": [\n\t\t73924,\n\t\t319\n\t],\n\t\"./pt-BR.json\": [\n\t\t73924,\n\t\t319\n\t],\n\t\"./ru-RU\": [\n\t\t16917,\n\t\t484\n\t],\n\t\"./ru-RU.json\": [\n\t\t16917,\n\t\t484\n\t],\n\t\"./sv-SE\": [\n\t\t97570,\n\t\t130\n\t],\n\t\"./sv-SE.json\": [\n\t\t97570,\n\t\t130\n\t],\n\t\"./tr-TR\": [\n\t\t78016,\n\t\t580\n\t],\n\t\"./tr-TR.json\": [\n\t\t78016,\n\t\t580\n\t],\n\t\"./zh-TW\": [\n\t\t61515,\n\t\t10\n\t],\n\t\"./zh-TW.json\": [\n\t\t61515,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 54067;\nmodule.exports = webpackAsyncContext;","import { Box } from '@wds/box';\nimport { Responsive } from '@wds/responsive';\nimport { Theme } from '@wds/styles';\nimport { Typography } from '@wds/typography';\nimport React, { Fragment, ReactElement, ReactNode } from 'react';\nimport { createUseStyles } from 'react-jss';\n\nconst useStyles = createUseStyles((theme: Theme) => {\n const mediaQueryMinScreenSm = `@media (min-width: ${theme.breakpoints.sm}px)`;\n return {\n ctaContainer: {\n marginBottom: theme.spacing[6],\n [mediaQueryMinScreenSm]: {\n width: '240px',\n marginBottom: 0,\n },\n },\n spacer: {\n [mediaQueryMinScreenSm]: {\n borderRight: `1px solid ${theme.palette.border.main}`,\n },\n },\n };\n});\n\ntype CtaDefinition = {\n /** The call-to-action button */\n cta: ReactNode;\n\n /** Explanatory text */\n caption: ReactNode;\n\n /** unique id */\n id: string;\n};\n\n/**\n * Helper for rendering alternative CTAs side-by-side:\n *\n * ```\n * How do you want to proceed?\n * |\n * CALL TO ACTION #1 | CALL TO ACTION #2\n * |\n * Some caption explaining | Another caption explaining\n * the first option | the second option\n * ```\n *\n * - On small screens it collapses into a single column with alternatives stacked vertically\n *\n * @param ctas List of calls-to-action\n * @param prompt Prompt text to show above CTAs\n * @param swapOrder When `true`, the caption is rendered above the CTA. Default is `false`\n */\nexport default function CTASplitter({\n ctas,\n prompt,\n swapOrder = false,\n}: {\n ctas: CtaDefinition[];\n prompt?: ReactNode;\n swapOrder?: boolean;\n}): ReactElement {\n const { ctaContainer, spacer } = useStyles();\n\n const promptText = prompt ? (\n \n \n {prompt}\n \n \n ) : null;\n\n const justify = ctas.length > 1 ? 'space-between' : 'center';\n\n return (\n <>\n {promptText}\n \n {(matches: boolean) => (\n \n {ctas.map(({ cta, caption, id }, index) => (\n \n \n {swapOrder ? caption : cta}\n {swapOrder ? cta : caption}\n \n {index < ctas.length - 1 ?
: null}\n \n ))}\n \n )}\n \n \n );\n}\n","const possibleTypes = {\n SurveyQuestion: [\n 'PresentationQuestion',\n 'SingleChoiceQuestion',\n 'MultipleChoiceQuestion',\n 'OpenEndedQuestion',\n 'MatrixQuestion',\n 'DemographicQuestion',\n 'ClickMapQuestion',\n 'DatetimeQuestion',\n 'BasicQuestion',\n ],\n BaseQuestionHeader: ['SurveyQuestionHeader', 'VideoStimuliSurveyQuestionHeader'],\n PaginatedList: [\n 'AnalysisStandardViewList',\n 'RespondentList',\n 'SurveyRespondentResultsList',\n 'SurveyQuestionColumnChoiceList',\n 'SurveyQuestionList',\n 'CollaboratorList',\n 'CollectorList',\n 'CrossTabReportList',\n 'AnalysisResultsDashboardList',\n 'SurveyPageList',\n 'AnalysisSharedViewList',\n 'SurveyQuestionRowList',\n 'SurveyQuestionOptionList',\n 'WordCloudTagList',\n 'SurveyOtherResponseList',\n 'TeamImageAssetsList',\n 'ApplicationListingList',\n 'LibraryAssetsList',\n 'SurveyList',\n 'AnalysisExportJobList',\n 'SurveyTemplateList',\n 'SurveyCategoryList',\n 'SurveyCategoryIdList',\n 'SurveyTemplateCategoryList',\n 'SurveyTemplateAttributesList',\n 'TeamSurveyList',\n 'SurveyQuestionTemplateList',\n 'BillingInvoiceList',\n 'SurveyQuestionColumnList',\n 'NotificationPreferenceList',\n ],\n AnalysisStandardViewFilterRule: [\n 'QnAFilter',\n 'CollectorFilter',\n 'QuizScoreBucketsFilter',\n 'TimePeriodFilter',\n 'CompletenessFilter',\n 'RandomAssignmentFilter',\n 'RelativeTimePeriodFilter',\n 'ResponseQualityFilter',\n 'SinceLastInviteFilter',\n 'TagFilter',\n ],\n AnalysisStandardViewCompareRule: ['QuestionAndAnswerCompare', 'RandomAssignmentCompare'],\n SurveyRespondentAnswer: [\n 'SurveyChoiceResponse',\n 'SurveyImageChoiceResponse',\n 'SurveyOtherResponse',\n 'SurveyOpenEndedResponse',\n 'SurveyMatrixResponse',\n 'SurveyMatrixOtherResponse',\n 'SurveyMatrixDropDownResponse',\n 'SurveyMatrixOpenEndedResponse',\n 'SurveyFileUploadResponse',\n 'SurveyPaymentResponse',\n 'SurveyPresentationImageResponse',\n 'SurveyPresentationTextResponse',\n ],\n SurveyQuestionOption: [\n 'SurveyQuestionRow',\n 'SurveyQuestionOther',\n 'SurveyQuestionColumn',\n 'SurveyQuestionColumnChoice',\n ],\n Project: ['ConceptTestingProject'],\n ProjectVariableConfiguration: [\n 'DefaultConfiguration',\n 'ImageStimuliVariableConfiguration',\n 'TextStimuliVariableConfiguration',\n 'VideoStimuliVariableConfiguration',\n 'ProductStimuliVariableConfiguration',\n 'NormsVariableConfiguration',\n 'AttributesVariableConfiguration',\n 'StimuliComparisonQuestionVariableConfiguration',\n 'CustomQuestionsBeforeStimuliVariableConfiguration',\n 'CustomQuestionsAfterStimuliVariableConfiguration',\n ],\n ProjectVariableAnswer: ['QuestionVariableAnswer', 'QuestionBankVariableAnswer', 'ValueVariableAnswer'],\n ConceptTestingStimulus: ['ConceptTestingTextStimulus', 'ConceptTestingImageStimulus'],\n AttributeQuestion: ['SingleChoiceQuestion', 'MultipleChoiceQuestion', 'OpenEndedQuestion'],\n QuestionResponseSummary: [\n 'OneDimensionalResponseSummary',\n 'TwoDimensionalResponseSummary',\n 'ThreeDimensionalResponseSummary',\n ],\n MultipleComparisonQuestion: ['MultipleChoiceQuestion', 'SingleChoiceQuestion'],\n CustomQuestion: ['SingleChoiceQuestion', 'MultipleChoiceQuestion', 'OpenEndedQuestion'],\n ProjectEntity: ['ProjectAudienceCollectorEntity', 'ProjectSurveyEntity'],\n AudienceTargetingCriteria: [\n 'AudienceRangeCriteria',\n 'AudienceCategoricalCriteria',\n 'AudienceHouseholdIncomeRangeCriteria',\n ],\n AudienceCriteriaSelection: [\n 'AudienceCategoricalCriteriaSelection',\n 'AudienceRangeCriteriaSelection',\n 'AudienceHouseholdIncomeRangeCriteriaSelection',\n ],\n CustomQuestionResponseSummary: ['CustomQuestionAggregateResponseSummary', 'CustomQuestionStimuliResponseSummary'],\n ImageAsset: ['TeamImageAsset'],\n TeamAsset: ['TeamImageAsset'],\n Asset: ['TeamImageAsset'],\n LibraryAsset: ['LibraryImage', 'LibraryTheme', 'LibraryCustomQuestion', 'LibrarySurveyTemplate', 'LibraryDocument'],\n WelcomeFlowQuestion: [\n 'WelcomeFlowSingleChoiceQuestion',\n 'WelcomeFlowMultipleChoiceQuestion',\n 'WelcomeFlowFlagQuestion',\n 'WelcomeFlowNumberQuestion',\n 'WelcomeFlowTextQuestion',\n ],\n SurveyQuestionTemplate: [\n 'BasicQuestionTemplate',\n 'SingleChoiceQuestionTemplate',\n 'MatrixQuestionTemplate',\n 'OpenEndedQuestionTemplate',\n 'DemographicQuestionTemplate',\n 'MultipleChoiceQuestionTemplate',\n 'ClickMapQuestionTemplate',\n 'DatetimeQuestionTemplate',\n 'PresentationQuestionTemplate',\n ],\n QuestionVariableAnswerData: [\n 'DefaultQuestionVariableAnswerData',\n 'ABQuestionVariableAnswerData',\n 'VideoABQuestionVariableAnswerData',\n ],\n SurveyQuestionTemplateOption: [\n 'SurveyQuestionTemplateRow',\n 'SurveyQuestionTemplateOther',\n 'SurveyQuestionTemplateColumn',\n 'SurveyQuestionTemplateColumnChoice',\n ],\n};\n\nexport default possibleTypes;\n","const isEUSubdomain = (hostname: string): boolean => {\n const parts = hostname.split('.');\n\n return parts.length === 4 && parts[1] === 'eu';\n};\n\nexport default function getSubdomain(): string | undefined {\n let subdomain = '';\n\n try {\n const host = window.location.hostname;\n\n const parts = host.split('.');\n const isUKDomain = host.endsWith('.co.uk');\n\n // We only want to handle domains that are in the format de.surveymonkey.com or de.eu.surveymonkey.com\n const validHost = parts.length === 3 && !isUKDomain;\n const validEUHost = isEUSubdomain(host) && !isUKDomain;\n\n if (validHost) {\n [subdomain] = parts;\n } else if (validEUHost) {\n subdomain = `${parts[0]}.${parts[1]}`;\n }\n } catch (e: unknown) {\n // do nothing\n }\n\n return subdomain;\n}\n","import { QueryParams } from '~common/entities/smParams';\n\nexport default function getQueryParam(name: QueryParams): T | undefined {\n const params = new URLSearchParams(window.location.search);\n return (params.get(name) as T) || undefined;\n}\n\nexport function hasQueryParam(name: string): boolean {\n return new URLSearchParams(window.location.search).has(name);\n}\n\n/**\n * @returns The page query params as a dictionary.\n */\nexport function getAllQueryParams(): Record {\n const params = new URLSearchParams(window.location.search);\n const obj = Object.create(null);\n params.forEach((value, key) => {\n obj[key] = value;\n });\n return obj;\n}\n","import { Auth0Client, AuthorizationParams } from '@auth0/auth0-spa-js';\n\nimport { Auth0Config } from '~app/helpers/auth0Config';\nimport { stashSamlConnection, stashEp, stashSm, stashSmAllow } from '~app/helpers/sessionStorage';\nimport { getAmplitudeIds, waitForAmplitude } from '~app/utils/amplitudeHelpers';\nimport getSubdomain from '~app/utils/getSubdomain';\nimport { Auth0Strategy, isSocial } from '~common/entities/auth0Strategy';\nimport { QueryParams, SmParams } from '~common/entities/smParams';\nimport asEnum from '~common/helpers/asEnum';\nimport getQueryParam, { getAllQueryParams, hasQueryParam } from '../helpers/queryParams';\nimport { AppState, SmApp, SmShow } from './handlers';\n\nfunction getRedirectUri(ep: string | undefined): string {\n return `https://${window.location.hostname}/login/callback${ep?.includes('sso_user') ? '?sso_user=' : ''}`;\n}\n\nconst FORCE_AUTH: AuthorizationParams['prompt'] = 'login';\n\nfunction getSmShow(): SmShow | undefined {\n const showParam: SmShow | undefined = getQueryParam(QueryParams.SM_SHOW);\n if (showParam !== undefined) {\n return showParam;\n }\n\n const { pathname } = window.location;\n if (pathname.includes('sign-up')) {\n return SmShow.SIGNUP;\n }\n if (pathname.includes('forgot-password')) {\n return SmShow.FORGOT_PASSWORD;\n }\n\n return undefined;\n}\n\nfunction getSmApp(): SmApp | undefined {\n const value = getQueryParam(QueryParams.SM_APP);\n\n try {\n return asEnum(SmApp, value);\n } catch (e: unknown) {\n // value not in enum\n }\n return undefined;\n}\n\nfunction getSmForceAccontPicker(): true | undefined {\n if (hasQueryParam(SmParams.SM_FORCE_ACCOUNT_PICKER)) {\n return true;\n }\n return undefined;\n}\n\nfunction getForceAccountCreation(): true | undefined {\n const { pathname } = window.location;\n if (pathname.replace(/\\/$/, '') === '/sign-up') {\n const connection = getQueryParam(QueryParams.CONNECTION);\n try {\n // When the user came into the transaction with \"signup\" intent and a social `connection`\n // param, they'll bypass the login page and go straight to the social IdP, so their intent\n // cannot change. Let's go ahead and force account creation in this case\n const strategy = asEnum(Auth0Strategy, connection);\n return isSocial(strategy) || undefined;\n } catch (e: unknown) {\n // unknown or no connection, ignore\n }\n }\n\n return undefined;\n}\n\n/**\n * @returns the params that will be persisted with the login transaction\n */\nfunction buildAppState(): AppState {\n return {\n show: getSmShow(),\n app: getSmApp(),\n forceAccountPicker: getSmForceAccontPicker(),\n ut_source: getQueryParam(QueryParams.UT_SOURCE),\n ut_source2: getQueryParam(QueryParams.UT_SOURCE2),\n ut_source3: getQueryParam(QueryParams.UT_SOURCE3),\n authUrl: window.location.toString(),\n forceAccountCreation: getForceAccountCreation(),\n };\n}\n\n// URL opener function for the auth redirect. Because the current /login route is just a transitional\n// spinner screen, it shouldn't appear in the user's browsing history, hence location.replace() it\nasync function replaceUrl(url: string): Promise {\n window.location.replace(url);\n return Promise.resolve();\n}\n\n/**\n * @returns Which Auth0 connection to initiate login against. If undefined, LoginApp UI will be\n * rendered and offer all the available options (password, social, SAML, etc).\n */\nfunction getConnection(ssoCanonicalName?: string): string | undefined {\n return getQueryParam(QueryParams.CONNECTION) ?? ssoCanonicalName ?? undefined;\n}\n\n/**\n * Begins a login transaction, storing the per-transaction params in\n * sessionStorage. Then navigates to the authentication provider.\n * Handles both sign-ups and logins, given the user can switch intent\n * on the login page.\n *\n * @param auth0Config Auth0 configuration\n * @param ep Optional URI where the user should be sent after completing the transaction\n * @param language The user's language code, will be passed to LoginApp to control display language\n * @param country The user's country, will be passed to LoginApp to adjust country-specific look & feel\n * @param smAllowCreateUserCookieVal\n * @param ssoCanonicalName Initiate login against the Auth0 connection with this name. This is used\n * in SSO flows when we already know what IdP the user wants.\n */\nexport default async function login({\n auth0Config,\n ep,\n language,\n country,\n smAllowCreateUserCookieVal,\n ssoCanonicalName,\n}: {\n auth0Config: Auth0Config;\n ep?: string;\n language?: string;\n country?: string;\n smAllowCreateUserCookieVal?: string;\n ssoCanonicalName?: string;\n}): Promise {\n const { domain, clientId, now } = auth0Config;\n if (!domain || !clientId) {\n throw new Error(`Missing auth0 configuration`);\n }\n\n const client = new Auth0Client({\n clientId,\n domain,\n authorizationParams: {\n redirect_uri: getRedirectUri(ep),\n },\n nowProvider: () => now,\n });\n\n const sm = getQueryParam(QueryParams.SM);\n const smAllowCreateUser = smAllowCreateUserCookieVal ?? getQueryParam(QueryParams.SM_ALLOW_CREATE_USER);\n const queryObj = getAllQueryParams();\n const connection = getConnection(ssoCanonicalName);\n\n // This saves the connection name in session storage to be used\n // when a user is done with their SSO authentication\n stashSamlConnection(connection ?? '');\n\n let enableSocialPopup = false;\n if (ep !== undefined) {\n stashEp(ep);\n\n enableSocialPopup = ep.startsWith('/oauth/authorize?');\n }\n if (sm !== undefined) {\n stashSm(sm);\n }\n if (smAllowCreateUser !== undefined) {\n stashSmAllow(smAllowCreateUser);\n }\n\n // Wait for the Amplitude SDK to drop a session ID. This is important, as passing the Amp session\n // to Auth0 is what makes tracking work across the OAuth flow and back.\n await waitForAmplitude();\n\n const appState = buildAppState();\n const lang = language ?? 'en';\n const amplitudeIds = getAmplitudeIds();\n\n // navigates away\n client\n .loginWithRedirect({\n appState,\n openUrl: replaceUrl,\n authorizationParams: {\n ...queryObj, // propagate all our query params over to Auth0 (incl. 'ep' if we have it)\n [SmParams.SM_AMP_DID]: amplitudeIds.deviceId ?? undefined,\n [SmParams.SM_AMP_SID]: amplitudeIds.sessionId ?? undefined,\n [SmParams.SM_APP]: appState.app,\n [SmParams.SM_SHOW]: appState.show,\n [SmParams.SM_LOCALE]: lang,\n [SmParams.SM_COUNTRY]: country,\n [SmParams.SM_SUBDOMAIN]: getSubdomain(),\n [SmParams.SM_SOCIAL_POPUP]: enableSocialPopup.toString(),\n connection,\n prompt: FORCE_AUTH, // SM auth cookie will redirect logged-in users; always prompt for Auth0 login\n },\n })\n ?.catch(e => {\n // eslint-disable-next-line no-console\n console.error('Failed to login with redirect', e);\n });\n}\n","import { MetricsTracker } from '@sm/metrics';\nimport { StaticContext } from '@sm/webassets';\nimport React, { PropsWithChildren, useContext, useEffect, useRef } from 'react';\n\nconst useInitialRender = (): boolean => {\n const isInitialRender = useRef(true);\n\n useEffect(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n }\n });\n\n return isInitialRender.current;\n};\n\nexport default function BaseLoadingPage({ children, pageId }: PropsWithChildren<{ pageId: string }>): JSX.Element {\n const isInitialRender = useInitialRender();\n const { user, environment, 'client-config': clientConfig } = useContext(StaticContext);\n const { countryCode: country } = environment;\n const { gtmId, loggingAPIPath, dataAnalyticsAPIPath, amplitudeToken } = clientConfig;\n\n if (isInitialRender) {\n MetricsTracker.initialize({\n user,\n dataAnalyticsAPIPath,\n loggingAPIPath,\n country,\n legacyWeb: '',\n pageId,\n gtmId,\n amplitudeToken,\n });\n }\n\n return <>{children};\n}\n","import { ParseResult } from '..';\n\nexport type Handler = {\n setNext(handler: Handler): Handler;\n\n handle(error: string, errorDescription: string): ParseResult | null;\n};\n\nexport abstract class AbstractHandler implements Handler {\n private nextHandler: Handler | undefined;\n\n public setNext(handler: Handler): Handler {\n this.nextHandler = handler;\n // Returning a handler from here will let us link handlers in a\n // convenient way\n return handler;\n }\n\n public handle(error: string, errorDescription: string): ParseResult | null {\n if (this.nextHandler) {\n return this.nextHandler.handle(error, errorDescription);\n }\n\n return null;\n }\n}\n","import { SamlErrorCode } from '~common/errors/userFacing';\n\nimport { ParseResult } from '..';\nimport { AbstractHandler } from '.';\n\nexport default class ConnectionDisabledHandler extends AbstractHandler {\n public handle(error: string, errorDescription: string): ParseResult | null {\n const isError = error === 'invalid_request' && errorDescription.includes('the connection was disabled');\n\n if (isError) {\n return {\n code: SamlErrorCode.CONNECTION_DISABLED,\n };\n }\n return super.handle(error, errorDescription);\n }\n}\n","import { SamlErrorCode } from '~common/errors/userFacing';\n\nimport { ParseResult } from '..';\nimport { AbstractHandler } from '.';\n\nexport default class IDPInitiatedHandler extends AbstractHandler {\n public handle(error: string, errorDescription: string): ParseResult | null {\n const isError = error === 'invalid_request' && errorDescription.includes('IdP-Initiated login is not enabled');\n\n if (isError) {\n return {\n code: SamlErrorCode.IDP_INITIATED_NOT_ENABLED,\n };\n }\n return super.handle(error, errorDescription);\n }\n}\n","import { SamlErrorCode } from '~common/errors/userFacing';\n\nimport { ParseResult } from '..';\nimport { AbstractHandler } from '.';\n\nexport default class InvalidCertHandler extends AbstractHandler {\n public handle(error: string, errorDescription: string): ParseResult | null {\n const isError =\n error === 'access_denied' &&\n (errorDescription.startsWith('The signing certificate is invalid') ||\n errorDescription.startsWith('Signature check errors') ||\n errorDescription.startsWith('Signature is missing') ||\n errorDescription.startsWith('Signature was found more than one time'));\n\n if (isError) {\n return {\n code: SamlErrorCode.X509_CANNOT_VERIFY,\n };\n }\n return super.handle(error, errorDescription);\n }\n}\n","import { SamlErrorCode } from '~common/errors/userFacing';\n\nimport { ParseResult } from '..';\nimport { AbstractHandler } from '.';\n\nexport default class InvalidThumprintHandler extends AbstractHandler {\n public handle(error: string, errorDescription: string): ParseResult | null {\n const isError = error === 'access_denied' && errorDescription.startsWith('Invalid thumbprint');\n\n if (isError) {\n return {\n code: SamlErrorCode.X509_MISMATCH,\n };\n }\n return super.handle(error, errorDescription);\n }\n}\n","import { ProgressCircle } from '@wds/progress-circle';\nimport React, { useEffect, useState } from 'react';\n\nimport BaseLoadingPage from '~app/pages/login/BaseLoadingPage';\nimport { SamlError } from '~app/helpers/sessionsApiClient';\n\nimport navigateTo from '~app/helpers/navigateTo';\nimport './loading.scss';\n\nimport getQueryParam from '~app/helpers/queryParams';\nimport parse, { ParseResult } from '~app/utils/auth0SamlErrorParser';\nimport { QueryParams } from '~common/entities/smParams';\n\nexport const TEST_ID = 'LoadingPage';\n\ntype Handler = () => void | Promise;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPromise(v?: any): v is Promise {\n return !!v && 'then' in v;\n}\n\nexport default function LoadingPage({ handler }: { handler: Handler }): JSX.Element {\n const [, setError] = useState();\n const handleError = (e: Error): void => {\n // Auth0 throws this error if the state been returned is not valid\n const validState = e.message !== 'Invalid state';\n\n let auth0Error: ParseResult | null = null;\n const errorReason = getQueryParam(QueryParams.ERROR);\n const errorDesc = getQueryParam(QueryParams.ERROR_DESCRIPTION);\n\n if (errorReason && errorDesc && validState) {\n auth0Error = parse(errorReason, errorDesc);\n }\n\n if ((auth0Error || e instanceof SamlError) && validState) {\n const code = auth0Error?.code ?? (e as SamlError).code;\n\n return navigateTo('/login/error', { error: code });\n }\n\n // Re-throw the error inside a new hook. This ensures that the page-level\n // error boundary will trigger.\n setError(() => {\n throw e;\n });\n };\n\n // We're not providing deps to useEffect because we only load this\n // component on page load and we're running a script for the entire lifecycle\n // of the page.\n useEffect(() => {\n const result = handler();\n if (isPromise(result)) {\n result.catch(handleError);\n }\n });\n return (\n \n
\n \n
\n
\n );\n}\n","import { SamlErrorCode } from '~common/errors/userFacing';\nimport ConnectionDisabledHandler from './handlers/connectionDisabled';\nimport IDPInitiatedHandler from './handlers/idpInitiated';\nimport InvalidCertHandler from './handlers/invalidCert';\nimport InvalidThumprintHandler from './handlers/invalidThumbprint';\n\nexport type ParseResult = {\n code: SamlErrorCode;\n};\n\nexport default function parse(error: string, errorDescription: string): ParseResult | null {\n const idpInitiated = new IDPInitiatedHandler();\n const invalidCert = new InvalidCertHandler();\n const invalidThumbprint = new InvalidThumprintHandler();\n const connectionDisabled = new ConnectionDisabledHandler();\n\n invalidThumbprint.setNext(connectionDisabled).setNext(invalidCert).setNext(idpInitiated);\n\n return invalidThumbprint.handle(error, decodeURIComponent(errorDescription));\n}\n","import { StaticContext } from '@sm/webassets';\nimport { useContext } from 'react';\nimport { Auth0Config } from '~app/helpers/auth0Config';\n\nexport default function useAuth0Config(): Auth0Config {\n const {\n 'client-config': { auth0, now },\n } = useContext<{ 'client-config': { auth0: Auth0Config; now: number } }>(StaticContext);\n\n auth0.now = now;\n\n return auth0;\n}\n","import { StaticContext } from '@sm/webassets';\nimport React, { useContext } from 'react';\nimport { useParams } from 'react-router-dom';\nimport login from '~app/handlers/login';\nimport LoadingPage from '~app/pages/login/LoadingPage/LoadingPage';\nimport useAuth0Config from '~app/pages/login/hooks';\n\n/** Renders a spinner page that starts the auth transaction and redirects the user to Auth0 */\nexport default function StartAuthTransactionPage(): JSX.Element {\n const {\n 'client-config': { ep, smAllowCreateUser },\n environment: { languageCode: language, countryCode: country },\n } = useContext(StaticContext);\n\n const auth0Config = useAuth0Config();\n\n const { ssoCanonicalName } = useParams<{ ssoCanonicalName?: string }>();\n\n return (\n {\n // Don't need to await this promise, just ignore it\n void login({\n auth0Config,\n ep,\n language,\n country,\n smAllowCreateUserCookieVal: smAllowCreateUser,\n ssoCanonicalName,\n });\n }}\n />\n );\n}\n","import { Auth0Client, IdToken } from '@auth0/auth0-spa-js';\nimport { clientErrorHandler } from '@sm/webassets';\nimport { AppState } from '../handlers';\n\n/**\n * Handles the OAuth callback, extracting the ID Token claims, and AppState that was\n * saved with the transaction.\n *\n * @param client Configured Auth0 client\n * @returns ID Token claims and app state.\n */\nexport default async function handleRedirectCallback(\n client: Auth0Client\n): Promise<{ appState: AppState; claims: IdToken }> {\n try {\n const result = await client.handleRedirectCallback();\n const claims = await client.getIdTokenClaims();\n const appState: AppState = result.appState || {};\n\n if (!claims) {\n throw new Error('Missing ID token');\n }\n\n return { appState, claims };\n } catch (e: unknown) {\n if (e instanceof Error) {\n clientErrorHandler.logError(e, 'Failed to get ID token');\n }\n throw e;\n }\n}\n","type Input = Record;\n\n/**\n * Helper function that asserts a value that:\n * - we know is a string (or expect is a string)\n * - its typing says it _could_ be of type not-a-string\n * gets returned as type string.\n *\n * @param v any value that should be a string\n * @returns the value asserted as a string, or undefined if the value isn't a string\n */\nexport function asString(v: unknown): string | undefined {\n return typeof v === 'string' ? v : undefined;\n}\n\n/** @returns a copy of `target` with all `undefined`-valued properties omitted */\nexport default function cleanObject(target: Input): Record {\n const copy: Record = {};\n\n Object.entries(target).forEach(([key, value]) => {\n if (value !== undefined) {\n copy[key] = value;\n }\n });\n\n return copy;\n}\n","import { IdToken } from '@auth0/auth0-spa-js';\nimport { clientErrorHandler } from '@sm/webassets';\n\ntype respondentSSOTokenBody = {\n userId: string;\n userAuthCookie: string;\n redirectUrl?: string;\n};\n\nexport class RespondentSSOClient {\n readonly createRespondentSSOTokenendpointUrl = '/login/api/v1/respondent/actions/create_respondent_sso_token';\n\n async createRespondentSSOToken(idToken: IdToken, ep: string): Promise {\n const resp = await fetch(this.createRespondentSSOTokenendpointUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n id_token: idToken.__raw,\n ep,\n }),\n });\n\n if (resp.status === 200) {\n return (await resp.json()) as respondentSSOTokenBody;\n }\n\n const error = new Error('Failed to create responent SSO Token');\n clientErrorHandler.logError(error);\n throw error;\n }\n}\n\nexport default (): RespondentSSOClient => new RespondentSSOClient();\n","import { Auth0Client, IdToken } from '@auth0/auth0-spa-js';\nimport SessionClient, { IdentityNotLinkedError, SessionResult } from '../helpers/sessionsApiClient';\nimport handleRedirectCallback from './callback/handleRedirectCallback';\nimport navigateTo from '~app/helpers/navigateTo';\nimport { fetchAndRemoveEp, fetchAndRemoveSm, fetchAndRemoveSmAllow, stashIdToken } from '../helpers/sessionStorage';\nimport { Auth0Config } from '~app/helpers/auth0Config';\nimport cleanObject from '~common/utils/cleanObject';\nimport { SmParams } from '~common/entities/smParams';\nimport { AppState } from './handlers';\nimport RespondentSSOClient from '../helpers/respondentSSOApiClient';\n\nfunction handleSsoSessionResult(result: SessionResult, redirectUrl?: string): void {\n if (redirectUrl) {\n navigateTo(redirectUrl);\n } else {\n throw new Error(`redirectUrl not provided for SSO_LOGIN result: ${result}`);\n }\n}\n\nfunction handleLoggedInOrCreatedSessionResult(\n result: SessionResult,\n appState: AppState,\n ep?: string,\n sm?: string\n): void {\n navigateTo(\n '/login/next',\n cleanObject({\n ep,\n joined: result === SessionResult.CREATED ? 'true' : undefined,\n force_account_picker: appState.forceAccountPicker ? 'true' : undefined,\n sm,\n })\n );\n}\n\nfunction handleUnlinkedSessionResult(\n appState: AppState,\n claims: IdToken,\n error?: IdentityNotLinkedError,\n ep?: string,\n sm?: string,\n smAllowCreateUser?: string\n): void {\n const { app, forceAccountPicker, ut_source: utSource, ut_source2: utSource2 } = appState;\n const emailInUse = error?.emailInUse ? 'true' : undefined;\n stashIdToken(claims);\n navigateTo(\n '/login/unlinked',\n cleanObject({\n [SmParams.SM_APP]: app,\n [SmParams.SM_FORCE_ACCOUNT_PICKER]: forceAccountPicker ? '' : undefined,\n ep,\n sm,\n sm_allow_create_user: smAllowCreateUser,\n ut_source: utSource,\n ut_source2: utSource2,\n email_in_use: emailInUse,\n })\n );\n}\n\n/**\n * Completes a login transaction and establishes a session, then navigates the user\n *\n * @param config Auth0 configuration\n */\nasync function auth0Callback(\n config: Auth0Config,\n ep?: string,\n sm?: string,\n sm_allow_create_user?: string\n): Promise {\n const { domain, clientId } = config;\n if (!domain || !clientId) {\n throw new Error('Missing auth0 configuration');\n }\n\n const client = new Auth0Client({\n clientId,\n domain,\n nowProvider: () => config.now,\n });\n const { appState, claims } = await handleRedirectCallback(client);\n const { result, error, redirectUrl } = await SessionClient().createByLogin({\n claims,\n appState,\n smAllowCreateUser: sm_allow_create_user,\n });\n\n switch (result) {\n case SessionResult.SSO_LOGIN:\n handleSsoSessionResult(result, redirectUrl);\n break;\n case SessionResult.LOGGED_IN:\n case SessionResult.CREATED:\n handleLoggedInOrCreatedSessionResult(result, appState, ep, sm);\n break;\n case SessionResult.UNLINKED:\n handleUnlinkedSessionResult(appState, claims, error, ep, sm, sm_allow_create_user);\n break;\n default:\n throw new Error(`Unhandled result: ${result}`);\n }\n}\n\nexport default async function callback(config: Auth0Config, isLegacySso: boolean): Promise {\n const ep = fetchAndRemoveEp() ?? undefined;\n const sm = fetchAndRemoveSm() ?? undefined;\n\n if (ep?.includes('sso_user')) {\n const { domain, clientId } = config;\n if (!domain || !clientId) {\n throw new Error('Missing auth0 configuration');\n }\n const client = new Auth0Client({\n clientId,\n domain,\n nowProvider: () => config.now,\n });\n const { claims } = await handleRedirectCallback(client);\n const respondentSSOData = await RespondentSSOClient().createRespondentSSOToken(claims, ep);\n navigateTo(respondentSSOData.redirectUrl ?? ep);\n } else if (isLegacySso) {\n navigateTo('/user/redirect', cleanObject({ ep, sm }));\n } else {\n const sm_allow_create_user = fetchAndRemoveSmAllow() ?? undefined;\n await auth0Callback(config, ep, sm, sm_allow_create_user);\n }\n}\n","import { StaticContext } from '@sm/webassets';\nimport React, { useContext } from 'react';\nimport callback from '~app/handlers/callback';\nimport LoadingPage from '~app/pages/login/LoadingPage/LoadingPage';\nimport useAuth0Config from '~app/pages/login/hooks';\n\nexport default function HandleAuthCallbackPage(): JSX.Element {\n const {\n 'client-config': { isLegacySso },\n } = useContext(StaticContext);\n\n const auth0Config = useAuth0Config();\n\n return callback(auth0Config, isLegacySso)} />;\n}\n","import React, { PropsWithChildren, ReactNode } from 'react';\nimport { CaptiveWindow } from '@sm/webassets';\nimport { createUseStyles } from 'react-jss';\nimport { Box } from '@wds/box';\nimport { Theme } from '@wds/styles';\n\nconst useStyles = createUseStyles(({ palette }: Theme) => {\n return {\n unlinkedWindow: {\n maxWidth: '636px',\n },\n window: {\n backgroundColor: palette.background.main,\n },\n };\n});\n\nconst UnlinkedWindow = ({ addOnTop, children }: PropsWithChildren<{ addOnTop: ReactNode }>): JSX.Element => {\n const { unlinkedWindow, window } = useStyles();\n return (\n \n {addOnTop}
}>\n {children}\n \n
\n );\n};\n\nexport default UnlinkedWindow;\n","import React from 'react';\nimport { Button } from '@wds/button';\nimport { Theme } from '@wds/styles';\nimport { createUseStyles } from 'react-jss';\nimport { ProgressCircle } from '@wds/progress-circle';\n\nexport const BUTTON_TEST_ID = 'UnlinkedButtonOptionButton';\n\nconst useStyles = createUseStyles((theme: Theme) => ({\n buttonOverride: {\n '& a, & button': {\n // reduce padding since we have some long titles and want to avoid breaking onto another\n // line if possible\n padding: [0, theme.spacing[3]],\n },\n },\n}));\n\nexport default function UnlinkedButtonOption({\n isDisabled,\n showSpinner,\n titleText,\n onClick,\n id,\n href,\n}: {\n isDisabled: boolean;\n showSpinner: boolean;\n titleText: string;\n id?: string;\n href?: string;\n onClick(): void;\n}): JSX.Element {\n let buttonTestId: string = BUTTON_TEST_ID;\n if (typeof id !== 'undefined') {\n const suffix = `__${id}`;\n buttonTestId = `${buttonTestId}${suffix}`;\n }\n\n const { buttonOverride } = useStyles();\n\n return (\n
\n \n {/* Using ProgressCircle here to workaround https://momentiveai.atlassian.net/browse/WEBEXP-994,\n update when that ticket is fixed */}\n {showSpinner ? : titleText}\n \n
\n );\n}\n\nUnlinkedButtonOption.defaultProps = {\n id: undefined,\n href: undefined,\n};\n","import React from 'react';\nimport { defineMessages, T } from '@sm/intl';\nimport { Banner } from '@wds/banner';\n\nexport const TEST_ID = 'UnlinkedErrorBanner';\nexport const ERROR_TEST_ID = 'UnlinkedErrorBanner__Error';\nexport const JWT_ERROR_TEST_ID = 'UnlinkedErrorBanner__JWTError';\n\nconst COPY = defineMessages({\n unlinkedPageErrorBanner: {\n id: 'login.UnlinkedErrorBanner.BannerCopy',\n defaultMessage: 'Sorry, something went wrong. Please try again.',\n description: '[Type: Label][Vis: high] - Banner that shows when a signup attempt failed',\n },\n unlinkedPageJwtErrorBanner: {\n id: 'login.UnlinkedErrorBanner.JWTErrorBannerCopy',\n defaultMessage: \"Your request expired. Please go back and try again.\",\n description:\n '[Type: Label][Vis: high] - Banner that instructs the user to take specific action when a signup attempt failed',\n },\n});\n\nexport default function UnlinkedErrorBanner({ JWTError }: { JWTError: boolean }): JSX.Element {\n return (\n \n {JWTError ? (\n \n \n \n ) : (\n \n \n \n )}\n \n );\n}\n","import { defineMessages, T } from '@sm/intl';\nimport React from 'react';\nimport { PageHeader } from '@wds/page-header';\nimport { createUseStyles } from 'react-jss';\nimport { Theme } from '@wds/styles';\n\nimport { SocialName } from './types';\n\nexport const TEST_ID = 'UnlinkedHeader';\n\nconst COPY = defineMessages({\n unlinkedPageHeader: {\n id: 'login.UnlinkedHeader.Header',\n defaultMessage: 'Your {socialName} account isn’t linked to a SurveyMonkey account',\n description:\n '[Type: Header][Vis: med] - Header of the page alerting the user their third party account is unlinked',\n },\n unlinkedEmailInUseHeader: {\n id: 'login.UnlinkedHeader.EmailInUseHeader',\n defaultMessage: 'Please log in with your password',\n description:\n '[Type: Header][Vis: med] - Header of the page informing the user there is an existing account linked to their social email, so they need to log in using their password',\n },\n});\n\nconst useStyles = createUseStyles((theme: Theme) => {\n return {\n headerContainer: {\n '& > *': {\n paddingTop: 0,\n paddingBottom: theme.spacing[6],\n },\n '& *': {\n backgroundColor: 'transparent',\n },\n },\n header: {\n fontSize: theme.type.fontSize.pageTitle,\n },\n };\n});\n\nexport default function UnlinkedHeader({\n socialName,\n emailInUse,\n}: {\n socialName: SocialName;\n emailInUse: boolean;\n}): JSX.Element {\n const { headerContainer, header } = useStyles();\n\n const headerText = emailInUse ? (\n \n ) : (\n \n );\n\n return (\n
\n {headerText}
}>\n <>\n \n \n );\n}\n","import { defineMessages, t } from '@sm/intl';\nimport { createURL } from '@sm/utils';\nimport { Box } from '@wds/box';\nimport { Theme } from '@wds/styles';\nimport { Typography } from '@wds/typography';\nimport React, { useState } from 'react';\nimport { createUseStyles } from 'react-jss';\nimport CTASplitter from '~app/components/CTASplitter/CTASplitter';\nimport { AppState } from '~app/handlers/handlers';\nimport navigateTo from '~app/helpers/navigateTo';\nimport { removeIdToken } from '~app/helpers/sessionStorage';\nimport SessionClient, { SessionResult } from '~app/helpers/sessionsApiClient';\nimport UnlinkedWindow from '~app/pages/login/UnlinkedPage/UnlinkedWindow';\nimport { QueryParams, SmParams } from '~common/entities/smParams';\nimport cleanObject from '~common/utils/cleanObject';\nimport getQueryParam, { hasQueryParam } from '../../../helpers/queryParams';\nimport UnlinkedButtonOption from './UnlinkedButtonOption';\nimport UnlinkedErrorBanner from './UnlinkedErrorBanner';\nimport UnlinkedHeader from './UnlinkedHeader';\nimport getAndValidateIdToken from './tokenHelper';\nimport { AuthState } from './types';\n\nexport const TEST_ID = 'UnlinkedPage';\n\nconst COPY = defineMessages({\n unlinkedPageSignupButtonTitle: {\n id: 'login.UnlinkedPageContent.SignupTitle',\n defaultMessage: 'Create a new account',\n description: '[Type: Button][Vis: high] - Button header for the user to create a new account',\n },\n unlinkedPageSignupButtonContent: {\n id: 'login.UnlinkedPageContent.SignupContent',\n defaultMessage: 'Sign up for SurveyMonkey using your {socialName} account – it’s free and easy',\n description:\n '[Type: Button][Vis: high] - Button text informing the user what happens if they click \"Create a new account\"',\n },\n unlinkedPageLoginButtonTitle: {\n id: 'login.UnlinkedPageContent.LoginTitle',\n defaultMessage: 'Log in to an existing account',\n description: '[Type: Button][Vis: high] - Button header for the user to log in to an existing account',\n },\n unlinkedPageLoginButtonEmailInUseTitle: {\n id: 'login.UnlinkedPageContent.LoginEmailInUseTitle',\n defaultMessage: 'Log in to your account',\n description:\n '[Type: Button][Vis: high] - Button header for the user to log in to the existing account linked to their social email',\n },\n unlinkedPageLoginButtonContent: {\n id: 'login.UnlinkedPageContent.LoginContent',\n defaultMessage: 'Once you log in to SurveyMonkey, you can link your {socialName} account from the My Account page',\n description:\n '[Type: Button][Vis: high] - Button text informing the user what happens if they click \"Log in to an existing account\"',\n },\n unlinkedPageEmailInUseMessage: {\n id: 'login.UnlinkedPageContent.EmailInUseMessage',\n defaultMessage: `

We found your account with {email}.

To log in, enter this email and select Next to enter your password.

You can’t use the Log in with {socialName} option until you’ve linked your SurveyMonkey and {socialName} accounts.

`,\n description: `[Type: Paragraph][Vis: med] - Body text informing the user of what steps they must take in order to login. \"Next\" is the button label defined in LoginEmailPage:submitButtonLabel`,\n },\n unlinkedPageLoginButton: {\n id: 'login.UnlinkedPageContent.LogIn',\n defaultMessage: 'Log in',\n description: `[Type: Button][Vis: high] - Label for the \"Log in\" button`,\n },\n unlinkedPageOptionsHeaderNoEmail: {\n id: 'login.UnlinkedPageContent.OptionsHeaderNoEmail',\n defaultMessage: `What would you like to do?`,\n description: '[Type: Paragraph][Vis: med] - Header asking user what they would like to do to link their account',\n },\n});\n\nconst useStyles = createUseStyles((theme: Theme) => {\n return {\n emailInUseButtonContainer: {\n width: '240px',\n },\n };\n});\n\nexport default function UnlinkedPageContent(): JSX.Element {\n const { idToken, socialName } = getAndValidateIdToken();\n const { emailInUseButtonContainer } = useStyles();\n\n const appState: AppState = {\n app: getQueryParam(QueryParams.SM_APP),\n ep: getQueryParam(QueryParams.EP),\n forceAccountPicker: hasQueryParam(SmParams.SM_FORCE_ACCOUNT_PICKER) ? true : undefined,\n sm: getQueryParam(QueryParams.SM),\n sm_allow_create_user: getQueryParam(QueryParams.SM_ALLOW_CREATE_USER),\n ut_source: getQueryParam(QueryParams.UT_SOURCE),\n ut_source2: getQueryParam(QueryParams.UT_SOURCE2),\n };\n\n const emailInUse = !!getQueryParam(QueryParams.EMAIL_IN_USE);\n const userEmail = idToken.email as string;\n // For the \"Create a new account\" button\n const [signupState, setSignupState] = useState('pageload');\n const [signupJWTError, setSignupJWTError] = useState(false);\n\n const attemptSignUp = async (): Promise => {\n if (signupState === 'pending' || signupState === 'success') {\n return;\n }\n setSignupState('pending');\n\n try {\n const result = await SessionClient().createBySignup({ claims: idToken, appState });\n if (result === SessionResult.CREATED) {\n setSignupState('success');\n removeIdToken();\n navigateTo('/login/next', cleanObject({ ep: appState.ep, joined: 'true' }));\n } else {\n setSignupState('error');\n setSignupJWTError(result === SessionResult.INVALID_JWT);\n }\n } catch (error: unknown) {\n setSignupJWTError(false);\n setSignupState('error');\n }\n };\n\n // For the \"Log in to an existing acct\" button\n const [loginState, setLoginState] = useState('pageload');\n\n const attemptLogin = (): void => {\n // navigation to /login handled by href attr; just set state here\n if (loginState !== 'pending' && loginState !== 'success') {\n setLoginState('pending');\n }\n };\n\n const generateLoginURL = (): string => {\n return createURL(\n '/login',\n cleanObject({\n [SmParams.SM_APP]: appState.app,\n [SmParams.SM_FORCE_ACCOUNT_PICKER]: appState.forceAccountPicker ? '' : undefined,\n [SmParams.SM_EMAIL]: userEmail,\n ep: appState.ep,\n sm: appState.sm,\n sm_allow_create_user: appState.sm_allow_create_user,\n ut_source: appState.ut_source,\n ut_source2: appState.ut_source2,\n })\n );\n };\n\n const allowAccountCreation = (): boolean => {\n const baseUrl = window.location.href;\n return !baseUrl.includes('eu.');\n };\n\n // For logic affecting either/both buttons\n const areButtonsDisabled: boolean =\n loginState === 'pending' || loginState === 'success' || signupState === 'pending' || signupState === 'success';\n\n const loginButton = (label: string): JSX.Element => (\n \n );\n\n const EmailInUse = (): JSX.Element => {\n return (\n \n \n {t(\n COPY.unlinkedPageEmailInUseMessage,\n {\n email: userEmail,\n socialName,\n },\n { html: true }\n )}\n \n \n {loginButton(t(COPY.unlinkedPageLoginButton))}\n \n \n );\n };\n\n const CreateOrLogin = (): JSX.Element => {\n const signupCTA = {\n id: 'cta.signup',\n cta: (\n {\n void attemptSignUp();\n }}\n id=\"SIGNUP\"\n />\n ),\n caption: {t(COPY.unlinkedPageSignupButtonContent, { socialName })},\n };\n\n const loginCTA = {\n id: 'cta.login',\n cta: loginButton(t(COPY.unlinkedPageLoginButtonTitle)),\n caption: {t(COPY.unlinkedPageLoginButtonContent, { socialName })},\n };\n\n return (\n \n );\n };\n\n return (\n \n }\n >\n
\n {/* OPTIONAL ERROR BANNER */}\n {signupState === 'error' ? : null}\n\n {emailInUse ? : }\n
\n \n );\n}\n","import React, { useContext } from 'react';\nimport { StaticContext, BasePage, Helmet } from '@sm/webassets';\nimport UnlinkedPageContent from './UnlinkedPageContent';\n\nexport default function UnlinkedPage(): JSX.Element {\n const {\n locale: { isEUDC },\n } = useContext(StaticContext);\n return (\n \n \n Create or Link Your Account\n \n \n \n );\n}\n","import { Desc, defineMessages } from '@sm/intl';\nimport { getHelpCenterLink } from '@sm/webassets';\nimport { SamlErrorCode } from '~common/errors/userFacing';\n\ntype ErrorMessage = {\n values: Record;\n desc: Desc;\n};\n\nconst errorDescription = '[Type: Paragraph][Vis: high] - The description of a login failure.';\n\nconst COPY = defineMessages({\n ERROR_CODE: {\n id: 'login.copy.ErrorCode',\n defaultMessage: 'Error code',\n description: '[Type: Label][Vis: high] - The label of the error code to be shown',\n },\n ERROR_TITLE: {\n id: 'login.copy.Title',\n defaultMessage: 'Sorry, not able to log in',\n description: '[Type: Paragraph][Vis: high] - The reason a login failed',\n },\n DEFAULT: {\n id: 'login.copy.Default',\n defaultMessage: 'Ask your admin or contact your Customer Success Manager for help.',\n description: errorDescription,\n },\n GROUP_DOWNGRADED: {\n id: 'login.copy.GroupDowngraded',\n defaultMessage: 'Your group no longer has an Enterprise plan. Contact us for more info.',\n description: errorDescription,\n },\n GROUP_NOT_FOUND: {\n id: 'login.copy.GroupNotFound',\n defaultMessage: 'We’re not able to identify your group information. Ask your admin or contact us for help.',\n description: errorDescription,\n },\n NOT_AFTER_FAILURE: {\n id: 'login.copy.NotAfterFailure',\n defaultMessage: 'We’re unable to authenticate your info at this time. Ask your admin or contact us for help.',\n description: errorDescription,\n },\n NO_NAME_ID_FOUND: {\n id: 'login.copy.NoNameIDFound',\n defaultMessage: 'We’re not able to find your account ID in our system. Ask your admin or contact us for help.',\n description: errorDescription,\n },\n RESPONDENT: {\n id: 'login.copy.Respondent',\n defaultMessage: 'Your account doesn’t have permissions enabled. Contact your admin or IT team for help.',\n description: errorDescription,\n },\n SSO_NOT_ENABLED: {\n id: 'login.copy.SSONotEnabled',\n defaultMessage: 'Single sign-on isn’t enabled for your group. Contact your admin for more info.',\n description: errorDescription,\n },\n USER_PENDING_DELETION: {\n id: 'login.copy.UserPendingDeletion',\n defaultMessage:\n 'The account you’re trying to log in to may be pending deletion. Contact us for more info.',\n description: errorDescription,\n },\n USER_PENDING_REASSIGNMENT: {\n id: 'login.copy.UserPendingReassignment',\n defaultMessage:\n 'The account you’re trying to log in to was reassigned by your admin. The invitation email needs to be accepted before logging in. Contact your admin for more info.',\n description: errorDescription,\n },\n X509_CANNOT_VERIFY: {\n id: 'login.copy.X509CannotVerify',\n defaultMessage:\n 'We’re not able to identify your group information due to an incorrect certificate. Ask your admin or contact us for help.',\n description: errorDescription,\n },\n});\n\nexport const getErrorMessage = (languageCode: string, reason?: SamlErrorCode): ErrorMessage => {\n const contactUsLink = getHelpCenterLink(languageCode, { path: 'contact' });\n let values: Record = {};\n let desc: Desc;\n\n switch (reason) {\n case SamlErrorCode.GROUP_DOWNGRADED:\n case SamlErrorCode.GROUP_HAS_NO_OWNER:\n case SamlErrorCode.GROUP_OWNER_IS_NOT_ENTERPRISE:\n values = { contactUs: contactUsLink };\n desc = COPY.GROUP_DOWNGRADED;\n break;\n case SamlErrorCode.GROUP_NOT_FOUND_BY_CANONICAL_NAME:\n case SamlErrorCode.GROUP_NOT_FOUND_BY_ISSUER:\n case SamlErrorCode.GROUP_NOT_FOUND:\n desc = COPY.GROUP_NOT_FOUND;\n break;\n case SamlErrorCode.NOT_AFTER_FAILURE:\n case SamlErrorCode.NOT_BEFORE_FAILURE:\n case SamlErrorCode.SAML_RESPONSE_ALREADY_SEEN:\n desc = COPY.NOT_AFTER_FAILURE;\n break;\n case SamlErrorCode.NO_NAME_ID_FOUND:\n desc = COPY.NO_NAME_ID_FOUND;\n break;\n case SamlErrorCode.RESPONDENT_ONLY:\n desc = COPY.RESPONDENT;\n break;\n case SamlErrorCode.SSO_NOT_ENABLED:\n case SamlErrorCode.GROUP_NOT_SSO_ENABLED:\n desc = COPY.SSO_NOT_ENABLED;\n break;\n case SamlErrorCode.USER_PENDING_DELETION:\n case SamlErrorCode.USER_IS_PENDING_DELETION:\n values = { contactUs: contactUsLink };\n desc = COPY.USER_PENDING_DELETION;\n break;\n case SamlErrorCode.USER_PENDING_REASSIGNMENT:\n case SamlErrorCode.USER_IS_PENDING_REASSIGNMENT:\n desc = COPY.USER_PENDING_REASSIGNMENT;\n break;\n case SamlErrorCode.X509_CANNOT_VERIFY:\n case SamlErrorCode.X509_MISMATCH:\n desc = COPY.X509_CANNOT_VERIFY;\n break;\n default:\n desc = COPY.DEFAULT;\n break;\n }\n\n return {\n desc,\n values,\n };\n};\n\nexport default COPY;\n","/**\n * This takes in a connection name and returns the canonical link of the connection\n *\n * @param connection The connection name\n * @returns The canonical link for the connection name\n */\nconst getCanonicalLink = (connection: string): string => `/login/sso/${connection}`;\n\nconst refreshSamlConnection = async (connection: string): Promise => {\n const endpointUrl = '/login/api/v1/saml_connections/refresh';\n\n try {\n const resp = await fetch(endpointUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n connection,\n }),\n });\n\n if (resp.status === 200) {\n return true;\n }\n } catch (e: unknown) {\n // nothing\n }\n\n return false;\n};\n\nexport default {\n getCanonicalLink,\n refreshSamlConnection,\n};\n","import React, { useContext, useEffect } from 'react';\nimport { ProgressCircle } from '@wds/progress-circle';\nimport { FiveHundredErrorPage, StaticContext } from '@sm/webassets';\nimport { t, T } from '@sm/intl';\n\nimport getQueryParam from '~app/helpers/queryParams';\nimport BaseLoadingPage from '~app/pages/login/BaseLoadingPage';\nimport { QueryParams } from '~common/entities/smParams';\nimport { SamlErrorCode } from '~common/errors/userFacing';\nimport COPY, { getErrorMessage } from './copy';\nimport { fetchSamlConnection, removeSamlConnection } from '~app/helpers/sessionStorage';\nimport samlConnectionApi from '~app/helpers/samlConnectionApi';\n\nexport const LOADING_TEST_ID = 'LoadingPage';\n\nexport function getSamlErrorCode(errorReason: string | undefined): SamlErrorCode | undefined {\n if (errorReason && Object.values(SamlErrorCode).includes(errorReason)) {\n return errorReason as SamlErrorCode;\n }\n\n return undefined;\n}\n\nexport default function ErrorPage(): JSX.Element {\n const [isLoading, setIsLoading] = React.useState(true);\n\n const {\n environment: { languageCode },\n pageRequestId,\n } = useContext(StaticContext);\n const errorReason = getQueryParam(QueryParams.ERROR);\n const samlErrorCode = getSamlErrorCode(errorReason);\n const connection = fetchSamlConnection();\n\n useEffect(() => {\n (async () => {\n const shouldRefreshSamlConnection =\n !!connection &&\n samlErrorCode &&\n (samlErrorCode === SamlErrorCode.X509_MISMATCH || samlErrorCode === SamlErrorCode.X509_CANNOT_VERIFY);\n\n try {\n if (shouldRefreshSamlConnection) {\n const refreshed = await samlConnectionApi.refreshSamlConnection(connection as string);\n\n // redirect user back to canonical link if connection was refreshed\n if (refreshed) {\n // Remove the connection from storage before redirecting\n removeSamlConnection();\n window.location.href = samlConnectionApi.getCanonicalLink(connection as string);\n return;\n }\n }\n } catch (e: unknown) {\n // ignore\n }\n\n // We want to stop showing the spinner if the page is not redirecting\n setIsLoading(false);\n })();\n });\n\n if (isLoading) {\n return (\n \n
\n \n
\n
\n );\n }\n\n if (samlErrorCode) {\n const { desc, values } = getErrorMessage(languageCode, samlErrorCode);\n\n return (\n }\n />\n );\n }\n\n return ;\n}\n","import loadable from '@loadable/component';\nimport { FourOhFourError, GlobalThemeProvider } from '@sm/webassets';\nimport { WrenchTheme } from '@wds/styles';\nimport { Route, Switch, useLocation } from 'react-router-dom';\nimport React from 'react';\n\nimport StartAuthTransactionPage from '~app/pages/login/StartAuthTransactionPage';\nimport HandleAuthCallbackPage from '~app/pages/login/HandleAuthCallbackPage';\nimport LoadingPage from './pages/login/LoadingPage/LoadingPage';\nimport UnlinkedPage from './pages/login/UnlinkedPage';\nimport LoginErrorPage from './pages/login/ErrorPage';\nimport SHARED_ROUTES from './pages/sharedRoutes';\nimport TeamRoutes from './pages/team/routes';\n\n// Team join pages go in their own separate chunk\nconst TeamPage = loadable(\n async () => import(/* webpackChunkName: 'loginweb-team-join' */ './pages/team/TeamBasePage'),\n {\n fallback: {}} />,\n }\n);\n\n// Survey share interstitial page goes in a separate chunk, since it's off the main path\nconst SurveyShareInterstitialPage = loadable(\n async () =>\n import(/* webpackChunkName: 'loginweb-survey-share' */ './pages/survey-share/SurveyShareInterstitialPage'),\n {\n fallback: {}} />,\n }\n);\n\nconst App = (): JSX.Element => {\n const { search } = useLocation();\n\n return (\n \n \n \n \n \n\n \n {/*\n We have a single callback path registered with the auth server. It routes to distinct\n login flows based on the query param. Determine which flow we're in.\n - /login/callback?team-join => TeamPage\n - /login/callback => normal login/sign-up\n */}\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n );\n};\n\nexport default App;\n","type Messages = { [K: string]: string };\n\nconst DEFAULT_LOCALE = 'en-US';\nconst FALLBACK = {};\n\nexport default async function getLocaleMessages(locale: string): Promise {\n if (locale === DEFAULT_LOCALE) {\n // Default locale will use the default fallback strings\n return FALLBACK;\n }\n try {\n const webassetsTranslationsModule: Messages = await import(\n /* webpackChunkName: \"i18n/webassets/[request]\" */ `@sm/webassets/dist/locales/translated/${locale}`\n );\n const appTranslationsModule: Messages = await import(\n /* webpackChunkName: \"i18n/[request]\" */ `../../locales/translated/${locale}`\n );\n return {\n ...webassetsTranslationsModule,\n ...appTranslationsModule,\n };\n } catch (err: unknown) {\n return FALLBACK;\n }\n}\n","import 'regenerator-runtime/runtime';\nimport 'core-js/stable';\n\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client';\nimport createBrowserApolloClient from '@sm/apollo-clients/dist/browser';\n\nimport { clientErrorHandler } from '@sm/webassets';\nimport possibleTypes from './helpers/possibleTypes';\nimport { bootstrapSMWeb, createApp, getLocaleMessages, mount } from './utils';\n\nconst { staticData, environ, locale } = bootstrapSMWeb(window);\nconst {\n pageRequestId,\n 'client-config': { appName, appVersion, graphQLUri },\n gql: { gqlCache = {} } = {},\n} = staticData;\n\nconst apolloClient: ApolloClient = createBrowserApolloClient({\n uri: graphQLUri,\n cacheHydration: gqlCache,\n pageRequestId,\n possibleTypes,\n linkOptions: {\n credentials: 'include',\n batchInterval: 30,\n },\n metadata: { appName, appVersion },\n availableLoggedOutPaths: ['/lo-graphql/teamJoin'],\n});\n\n// if there is no opener, open the page right away\nlet timeout = 1;\nif (window.opener) {\n // make the timeout longer to wait for the opener to tell this page to close\n timeout = 200;\n\n // wait for a message from the opener to close this window\n window.addEventListener('message', event => {\n if (event.data === 'done') {\n window.close();\n }\n });\n\n // tell the opener where to navigate to\n window.opener.postMessage(\n JSON.stringify({\n location: window.location.href,\n }),\n '*'\n );\n}\n\nsetTimeout(() => {\n getLocaleMessages(locale)\n .then(createApp(environ, staticData, apolloClient))\n .then(mount(document))\n .catch(clientErrorHandler.logError);\n}, timeout);\n","import { initializeClientErrorHandler } from '@sm/webassets';\n\nexport default function bootstrapSMWeb(window: Window): SMConfig {\n const staticData = window.SM?.__LOAD_PAYLOAD_CACHE__;\n if (!staticData) {\n throw new Error('__LOAD_PAYLOAD_CACHE__ not found in window.SM');\n }\n\n initializeClientErrorHandler();\n\n const { environment: environ } = staticData;\n const locale = environ?.slLanguageLocale;\n\n if (!locale) {\n throw new Error('Misconfigured SMEnviron');\n }\n\n return {\n locale,\n environ,\n staticData,\n };\n}\n","import SMEnviron from '@sm/environ';\nimport { L10nProvider } from '@sm/intl';\nimport { LanguageCode } from '@sm/locale';\nimport { ApolloClient, NormalizedCacheObject, ApolloProvider } from '@apollo/client';\nimport { ErrorBoundary, FiveHundredErrorPage, HelmetProvider, StaticProvider } from '@sm/webassets';\nimport React, { ReactElement } from 'react';\nimport { Router } from 'react-router-dom';\nimport App from '../App';\nimport history from './history';\n\nexport default function createApp(\n environ: SMEnviron,\n staticData: { [K in string]: unknown },\n apolloClient: ApolloClient\n): (msgs: { [K: string]: string }) => ReactElement {\n return (localeMessages: { [K: string]: string }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { ReactElement } from 'react';\nimport { hydrate, render } from 'react-dom';\n\ntype DocumentLike = {\n getElementById(id: string): HTMLElement | null;\n};\n\nexport default function mount(document: DocumentLike): (app: ReactElement) => void {\n const target = document.getElementById('reactApp');\n if (!target) {\n throw new Error('App node not found in document');\n }\n\n return (app: ReactElement) => {\n if (target.innerHTML.trim().length) {\n return hydrate(app, target);\n }\n return render(app, target);\n };\n}\n","// Interfaces for the client side handler code.\n\nimport { UtSourceParams } from '~common/entities/user';\n\n/**\n * Any additional data stored by the client that is associated with\n * a particular login transaction.\n *\n * - `ep`: \"end page\"; where the user is redirected to after auth\n * - `show`: what auth experience the user should first get on LoginApp\n * - `forceAccountCreation`: true to create a SurveyMonkey account instead of showing the\n * \"unlinked 3rd party account\" page when possible.\n */\nexport type AppState = {\n ep?: string;\n show?: SmShow;\n app?: SmApp;\n forceAccountPicker?: boolean;\n forceAccountCreation?: boolean;\n sm?: string;\n sm_allow_create_user?: string;\n authUrl?: string; // The complete original login URL that the client came into the transaction with.\n} & UtSourceParams;\n\n/** Possible values for the `sm.show` query parameter */\nexport enum SmShow {\n SIGNUP = 'sign-up',\n LOGIN = 'log-in',\n FORGOT_PASSWORD = 'forgot-password',\n}\n\n/** Possible values for the `sm.app` query parameter */\nexport enum SmApp {\n CORE = 'core',\n CONTRIBUTE = 'contribute',\n REWARDS = 'rewards',\n MOBILE = 'mobile',\n}\n","import { createURL } from '@sm/utils';\n\n/**\n * Navigates to the given base URL and query.\n */\nexport default function navigateTo(url: string, params?: Record): void {\n window.location.replace(createURL(url, params));\n}\n","import { IdToken } from '@auth0/auth0-spa-js';\n\nconst ID_TOKEN_NAMESPACE = 'unlinkedState';\nconst EP_PARAM_NAMESPACE = 'ep';\nconst SM_PARAM_NAMESPACE = 'sm';\nconst SM_ALLOW_CREATE_PARAM_NAMESPACE = 'sm_allow_create_user';\nconst CONNECTION_NAME_NAMESPACE = 'auth.conn';\n\nfunction stash(namespace: string, value: string): void {\n window.sessionStorage.setItem(namespace, value);\n}\n\nfunction fetch(namespace: string): string | null {\n return window.sessionStorage.getItem(namespace);\n}\n\nfunction remove(namespace: string): void {\n window.sessionStorage.removeItem(namespace);\n}\n\nexport function stashSamlConnection(connection: string): void {\n stash(CONNECTION_NAME_NAMESPACE, connection);\n}\n\nexport function fetchSamlConnection(): string | null {\n return fetch(CONNECTION_NAME_NAMESPACE);\n}\n\nexport function removeSamlConnection(): void {\n remove(CONNECTION_NAME_NAMESPACE);\n}\n\nexport function stashIdToken(idToken: IdToken): void {\n stash(ID_TOKEN_NAMESPACE, JSON.stringify(idToken));\n}\n\nexport function fetchIdToken(): IdToken | null {\n const token = fetch(ID_TOKEN_NAMESPACE);\n if (!token) {\n return null;\n }\n return JSON.parse(token) as IdToken;\n}\n\nexport function removeIdToken(): void {\n remove(ID_TOKEN_NAMESPACE);\n}\n\nexport function stashEp(ep: string): void {\n stash(EP_PARAM_NAMESPACE, ep);\n}\n\nexport function fetchAndRemoveEp(): string | null {\n const ep = fetch(EP_PARAM_NAMESPACE);\n remove(EP_PARAM_NAMESPACE);\n return ep;\n}\n\nexport function stashSm(sm: string): void {\n stash(SM_PARAM_NAMESPACE, sm);\n}\n\nexport function fetchAndRemoveSm(): string | null {\n const sm = fetch(SM_PARAM_NAMESPACE);\n remove(SM_PARAM_NAMESPACE);\n return sm;\n}\n\nexport function stashSmAllow(sm_allow_create_user: string): void {\n stash(SM_ALLOW_CREATE_PARAM_NAMESPACE, sm_allow_create_user);\n}\n\nexport function fetchAndRemoveSmAllow(): string | null {\n const sm_allow_create_user = fetch(SM_ALLOW_CREATE_PARAM_NAMESPACE);\n remove(SM_ALLOW_CREATE_PARAM_NAMESPACE);\n return sm_allow_create_user;\n}\n","import { IdToken } from '@auth0/auth0-spa-js';\nimport { clientErrorHandler } from '@sm/webassets';\nimport { UtSourceParams } from 'src/common/entities/user';\nimport { Auth0Strategy, getStrategyBySub } from '~common/entities/auth0Strategy';\nimport { FormattedError, SamlErrorCode } from '~common/errors/userFacing';\nimport { AppState, SmApp } from '../handlers/handlers';\nimport { getAmplitudeIds, waitForAmplitude } from '~app/utils/amplitudeHelpers';\nimport { AmplitudeSessionInfo } from '~common/helpers/amplitudeSession';\n\n// The types of errors that the server can return from POST /api/v1/sessions\nexport class IdentityAlreadyLinkedError extends Error {}\n\nexport class SamlError extends Error {\n code: SamlErrorCode;\n\n constructor(detail: string, code: SamlErrorCode) {\n super(detail);\n this.code = code;\n }\n}\n\nexport class IdentityNotLinkedError extends Error {\n /**\n * Whether the email asserted by the social identity is in use by an existing account\n */\n emailInUse: boolean;\n\n constructor(emailInUse = false) {\n super();\n this.emailInUse = emailInUse;\n }\n}\nexport class InvalidJWTError extends Error {}\nexport class InvalidInviteError extends Error {}\n\nexport enum SessionResult {\n /** Could not create a session because no account was linked. User intervention is needed. */\n UNLINKED = 1,\n\n /** Could not create a session because of issue detected with the JWT (with no further detail, intentionally) */\n INVALID_JWT = 2,\n\n /** Existing user successfully logged in */\n LOGGED_IN = 3,\n\n /** New user created and then logged in */\n CREATED = 4,\n\n /** User login via SSO */\n SSO_LOGIN = 5,\n}\n\n/** Which type of account we'd prefer to log into */\nexport type AccountTypePreference = 'contribute' | 'rewards' | undefined;\n\n/** Return value from sucessful POST /sessions call */\ntype SessionResponseBody = {\n user: {\n id: string;\n };\n redirectUrl?: string;\n};\n\nfunction toPref(smApp?: SmApp): AccountTypePreference {\n switch (smApp) {\n case undefined:\n case SmApp.CORE:\n case SmApp.MOBILE:\n return undefined;\n case SmApp.CONTRIBUTE:\n return 'contribute';\n case SmApp.REWARDS:\n return 'rewards';\n }\n}\n\nexport class SessionClient {\n readonly endpointUrl = '/login/api/v1/sessions';\n\n private static getSignupParams(appState: AppState): Pick {\n const { ut_source, ut_source2, ut_source3 } = appState;\n return { ut_source, ut_source2, ut_source3 };\n }\n\n /**\n * @returns Whether we should create a SurveyMonkey account linked to the user's token subject\n * without prompting the user\n */\n private static shouldCreateAccount(\n appState: AppState,\n claims: IdToken,\n notLinkedError: IdentityNotLinkedError\n ): boolean {\n // Create an account when the user authenticated via Auth0 strategy (i.e. email+password).\n // This is the typical case when a user has just created an Auth0 email identity.\n if (getStrategyBySub(claims.sub) === Auth0Strategy.Auth0) {\n return true;\n }\n\n // Create an account if the 'force' param is set, and the email isn't already in use\n if (appState.forceAccountCreation && !notLinkedError.emailInUse) {\n return true;\n }\n\n return false;\n }\n\n private static handleError(body: { errors: FormattedError[] }): never {\n const {\n errors: [serverError],\n } = body;\n\n if (Object.values(SamlErrorCode).includes(serverError.code)) {\n throw new SamlError(serverError.detail, serverError.code as unknown as SamlErrorCode);\n }\n\n switch (serverError.code) {\n case 'identity_already_linked':\n throw new IdentityAlreadyLinkedError();\n case 'identity_not_linked':\n throw new IdentityNotLinkedError(serverError.extra === 'email_in_use_by_password_account');\n case 'invalid_invite':\n throw new InvalidInviteError();\n case 'unauthorized':\n // The remote UserService rejected the JWT\n throw new InvalidJWTError();\n case 'invalid_request':\n if (\n serverError.source &&\n serverError.source.location === 'body' &&\n serverError.source.pointer === '.id_token'\n ) {\n // Shallow validation failed (probably because the JWT expired)\n throw new InvalidJWTError();\n }\n break;\n default:\n break; // will throw generic error below\n }\n\n const error = new Error('Failed to create session');\n clientErrorHandler.logError(error);\n throw error;\n }\n\n /**\n * Authenticate using the identity token, by first attempting to login and creating a new SM user\n * if necessary.\n *\n * @throws `IdentityAlreadyLinkedError` if the identity is already linked to an SM user.\n * @throws Generic error on other failure.\n * @returns A SessionResult and optionally a detailed error field\n */\n async createByLogin({\n claims,\n appState,\n smAllowCreateUser,\n }: {\n claims: IdToken;\n appState: AppState;\n smAllowCreateUser?: string;\n }): Promise<{ result: SessionResult; error?: IdentityNotLinkedError; redirectUrl?: string }> {\n const idToken = claims.__raw;\n\n // Try to login\n let notLinkedError: IdentityNotLinkedError | undefined;\n try {\n const response = await this.postSessions({\n idToken,\n action: 'login',\n preference: toPref(appState.app),\n authUrl: appState.authUrl,\n });\n\n if (response.redirectUrl) {\n return { result: SessionResult.SSO_LOGIN, redirectUrl: response.redirectUrl };\n }\n\n return { result: SessionResult.LOGGED_IN };\n } catch (e: unknown) {\n if (!(e instanceof IdentityNotLinkedError)) {\n throw e;\n }\n notLinkedError = e;\n }\n\n // Identity is not linked to an SM account. Check if we should create one.\n if (SessionClient.shouldCreateAccount(appState, claims, notLinkedError)) {\n const result = await this.createBySignup({ claims, appState, smAllowCreateUser });\n return { result };\n }\n\n // Identity not linked and we couldn't create an account for them. Just return unlinked, and\n // let the user decide how to proceed.\n return { result: SessionResult.UNLINKED, error: notLinkedError };\n }\n\n /**\n * Authenticate using the identity token, by creating a new SM user on the fly.\n *\n * @param claims The ID token\n * @param appState\n * @param inviteToken Optional invite token if user is being created in the context of\n * a team invite workflow\n *\n * @throws `IdentityAlreadyLinkedError` if the identity is already linked to an SM user.\n * @throws Generic error on other failure.\n */\n async createBySignup({\n claims,\n appState,\n inviteToken = undefined,\n smAllowCreateUser = undefined,\n }: {\n claims: IdToken;\n appState: AppState;\n inviteToken?: string;\n smAllowCreateUser?: string;\n }): Promise {\n const idToken = claims.__raw;\n\n try {\n await this.postSessions({\n idToken,\n action: 'signup',\n signupParams: SessionClient.getSignupParams(appState),\n inviteToken,\n smAllowCreateUser,\n authUrl: appState.authUrl,\n preference: toPref(appState.app),\n });\n return SessionResult.CREATED;\n } catch (e: unknown) {\n if (e instanceof InvalidJWTError) {\n return SessionResult.INVALID_JWT;\n }\n throw e;\n }\n }\n\n /**\n * Authenticate an existing SM user using the identity token.\n *\n * @param idToken\n * @throws IdentityNotLinkedError\n * @throws InvalidJWTError\n */\n async login(idToken: IdToken): Promise {\n return this.postSessions({ action: 'login', idToken: idToken.__raw });\n }\n\n /**\n * Switch to a linked account by the active session.\n *\n * @param targetUserId Id of the linked user account being switched to\n */\n async switch(targetUserId: string): Promise {\n return this.postSessions({ action: 'switch', targetUserId });\n }\n\n private async postSessions(\n opts:\n | {\n action: 'login';\n idToken: string;\n preference?: AccountTypePreference;\n authUrl?: string;\n }\n | {\n action: 'signup';\n idToken: string;\n signupParams: UtSourceParams;\n inviteToken?: string;\n smAllowCreateUser?: string;\n authUrl?: string;\n preference?: AccountTypePreference;\n }\n | { action: 'switch'; targetUserId: string }\n ): Promise {\n let ampIds: AmplitudeSessionInfo = {};\n if (opts.action === 'login' || opts.action === 'signup') {\n await waitForAmplitude();\n ampIds = getAmplitudeIds();\n }\n\n const resp = await fetch(this.endpointUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n action: opts.action,\n id_token: 'idToken' in opts ? opts.idToken : undefined,\n preference: opts.action === 'login' || opts.action === 'signup' ? opts.preference : undefined,\n signup_params: opts.action === 'signup' ? opts.signupParams : undefined,\n invite_token: opts.action === 'signup' ? opts.inviteToken : undefined,\n sm_allow_create_user: opts.action === 'signup' ? opts.smAllowCreateUser : undefined,\n target_user_id: opts.action === 'switch' ? opts.targetUserId : undefined,\n auth_url: opts.action === 'login' || opts.action === 'signup' ? opts.authUrl : undefined,\n sm_amp_sid: ampIds.sessionId ?? undefined,\n sm_amp_did: ampIds.deviceId ?? undefined,\n }),\n });\n\n if (resp.status === 200) {\n return (await resp.json()) as SessionResponseBody;\n }\n\n return SessionClient.handleError(await resp.json());\n }\n}\n\nexport default (): SessionClient => new SessionClient();\n","import { IdToken } from '@auth0/auth0-spa-js';\nimport { fetchIdToken } from '../../../helpers/sessionStorage';\nimport { SocialName } from './types';\n\n/**\n * Given an id token from a social login, returns the display name of the social IDP.\n *\n * @param idToken\n * @returns The social IDP name. The returned values are brand/company names, so they don't\n * need to be translated.\n */\nexport function getSocialName(idToken: IdToken): SocialName {\n // loose type-check that idToken _is_ an IdToken\n if (typeof idToken.sub === 'undefined') {\n throw new Error('idToken not in expected IdToken shape');\n }\n\n const { sub } = idToken;\n\n // verify sub one of expected social providers\n let socialName: SocialName;\n switch (sub.split('|')[0]) {\n case 'google-oauth2':\n socialName = 'Google';\n break;\n case 'facebook':\n socialName = 'Facebook';\n break;\n case 'windowslive':\n socialName = 'Microsoft';\n break;\n case 'linkedin':\n socialName = 'LinkedIn';\n break;\n case 'apple':\n socialName = 'Apple';\n break;\n default:\n throw new Error('Unidentifiable third party social provider');\n }\n return socialName;\n}\n\nexport default function getAndValidateIdToken(): { idToken: IdToken; socialName: SocialName } {\n // verify token JSON-serializable and of expected shape\n let idToken: IdToken | null;\n try {\n idToken = fetchIdToken();\n } catch (error: unknown) {\n throw new Error('idToken not in expected JSON-serializable format');\n }\n if (idToken === null) {\n throw new Error('No id token present in app state');\n }\n\n const socialName = getSocialName(idToken);\n\n return { idToken, socialName };\n}\n","// Routes shared by the login and team pages\n\nconst SHARED_ROUTES = Object.freeze({\n /** Our callback URL that is allow-listed on the auth server */\n CALLBACK: '/login/callback',\n});\n\nexport default SHARED_ROUTES;\n","const ROUTES = Object.freeze({\n LANDING: '/login/team/join/:inviteToken',\n CREATE: '/login/team/join/:inviteToken/create',\n CONVERT: '/login/team/join/:inviteToken/convert',\n\n REASSIGN_LANDING: '/login/team/reassign/:inviteToken',\n REASSIGN_CONFIRM: '/login/team/reassign/:inviteToken/confirm',\n});\n\nexport default ROUTES;\n","/* Helper functions for parsing Amplitude session. These are consumed by BOTH client and server code */\n\nexport type AmplitudeSessionInfo = {\n deviceId?: string;\n sessionId?: number;\n};\n\nfunction atob(input: string): string {\n // This works in the browser or Node.js\n return typeof window !== 'undefined' ? window.atob(input) : Buffer.from(input, 'base64').toString('latin1');\n}\n\nexport function getAmplitudeStorageKey(amplitudeToken: string): string {\n // the amplitude SDK names its storage key `AMP_`\n return `AMP_${amplitudeToken.substring(0, 10)}`;\n}\n\n/**\n * Parse Amplitude session from a string\n * @param json A string containing JSON data\n */\nexport function parseAmplitudeSession(json: string | undefined | null): AmplitudeSessionInfo {\n if (typeof json !== 'string') {\n return {};\n }\n\n try {\n const parsed = JSON.parse(json);\n return {\n deviceId: parsed.deviceId,\n sessionId: parsed.sessionId,\n };\n } catch (e: unknown) {\n // give up\n return {};\n }\n}\n\n/**\n * Parse Amplitude session from cookie\n *\n * @param cookies Object containing cookies as name-value pairs\n */\nexport default function parseAmplitudeCookie(\n cookies: Record,\n amplitudeToken: string\n): AmplitudeSessionInfo {\n const storageKey = getAmplitudeStorageKey(amplitudeToken);\n\n let cookieData = cookies[storageKey];\n if (!cookieData) {\n return {};\n }\n\n // Normalize it before parsing\n cookieData = decodeURIComponent(atob(cookieData));\n\n return parseAmplitudeSession(cookieData);\n}\n","import { MetricsTracker, USER_EVENTS } from '@sm/metrics';\nimport { parse as parseCookie } from 'cookie';\nimport parseAmplitudeCookie, {\n AmplitudeSessionInfo,\n getAmplitudeStorageKey,\n parseAmplitudeSession,\n} from '~common/helpers/amplitudeSession';\n\n/* Client-side Amplitude helper functions */\n\n// How long we'll wait for Amplitude SDK to initialize before giving up\nconst amplitudeInitTimeoutMs = 150;\n\n// Time between checks\nconst pollIntervalMs = 50;\n\n/** Parse Amplitude session from local storage */\nfunction parseAmplitudeStorage(s: Storage, amplitudeToken: string): AmplitudeSessionInfo {\n const storageKey = getAmplitudeStorageKey(amplitudeToken);\n const data = s.getItem(storageKey);\n return parseAmplitudeSession(data);\n}\n\n/**\n * Extracts the device and session IDs from the Amplitude cookie\n *\n * @returns An object containing the extracted device/session IDs\n */\nexport function getAmplitudeIds(): AmplitudeSessionInfo {\n const amplitudeToken = MetricsTracker?.getConfig()?.amplitudeToken;\n\n if (!amplitudeToken) {\n return {};\n }\n\n // Check for cookie storage\n const cookieTokens = parseCookie(document.cookie);\n const fromCookie = parseAmplitudeCookie(cookieTokens, amplitudeToken);\n\n if (fromCookie.deviceId && fromCookie.sessionId) {\n // Use the cookie values\n return fromCookie;\n }\n\n // Cookie not found, try localStorage fallback\n return parseAmplitudeStorage(window.localStorage, amplitudeToken);\n}\n\n/**\n * Polls a predicate function until it returns true or timeout elapses.\n *\n * @resolves To `'ok'` if condition returned true, or `'timeout'` if timeout elapsed\n * @rejects On runtime error in `condition()`\n */\nasync function waitFor(predicate: () => boolean): Promise<'ok' | 'timeout'> {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => resolve('timeout'), amplitudeInitTimeoutMs);\n\n const check = (): void => {\n try {\n if (predicate()) {\n clearTimeout(timeoutId);\n resolve('ok');\n } else {\n setTimeout(check, pollIntervalMs);\n }\n } catch (e: unknown) {\n const err = e as Error;\n clearTimeout(timeoutId);\n reject(err);\n }\n };\n\n setTimeout(check, 0); // start on next tick\n });\n}\n\n/**\n * This function forces the Amplitude SDK to start up, and returns once it has written the\n * session ID and device ID to storage. If we can't find the SID/DID in a reasonable time,\n * give up and return so we don't block the user's transaction.\n *\n * ⚠️ NOTE: this won't work in all cases: in particular, users who haven't yet consented to functional\n * cookies will not get an Amp session. But given the current @sm/metrics design this is the best\n * we can do.\n */\nexport async function waitForAmplitude(): Promise {\n // Track a useless event, this triggers initialization of the Amplitude SDK as a side effect\n MetricsTracker.track({\n name: USER_EVENTS.VIRTUAL_PAGE_VIEW,\n data: {\n amplitudeEvent: 'login init',\n },\n });\n\n // Poll until we find a session or our timeout elapses\n await waitFor(() => !!getAmplitudeIds().sessionId);\n}\n","import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory();\n","import asEnum from '~common/helpers/asEnum';\n\n/**\n * An Auth0 login strategy. The strategy appears in Auth0-issued ID Tokens as the leftmost\n * segment of the `sub` claim.\n *\n * Example sub claims:\n * - `auth0|deadbeef`\n * - `facebook|111222333444`\n * - `samlp|bigcorp|user@email.com`\n */\nexport enum Auth0Strategy {\n Apple = 'apple',\n Auth0 = 'auth0',\n Facebook = 'facebook',\n Google = 'google-oauth2',\n LinkedIn = 'linkedin',\n Microsoft = 'windowslive',\n Saml = 'samlp',\n}\n\nexport function isSocial(s: Auth0Strategy): boolean {\n switch (s) {\n case Auth0Strategy.Apple:\n case Auth0Strategy.Facebook:\n case Auth0Strategy.Google:\n case Auth0Strategy.LinkedIn:\n case Auth0Strategy.Microsoft:\n return true;\n default:\n return false;\n }\n}\n\n/** Gets the Auth0 login strategy from a `sub` claim */\nexport function getStrategyBySub(sub: string): Auth0Strategy {\n const [strategyPart] = sub.split('|');\n return asEnum(Auth0Strategy, strategyPart);\n}\n","/** The names of known \"sm.\" query params that can be added to the auth URL */\nexport enum SmParams {\n SM_APP = 'sm.app',\n SM_COUNTRY = 'sm.country',\n SM_EMAIL = 'sm.email',\n SM_FORCE_ACCOUNT_PICKER = 'sm.force_account_picker',\n SM_INVITE_TOKEN = 'sm.invite_token',\n SM_LOCALE = 'sm.locale',\n SM_SUBDOMAIN = 'sm.subdomain',\n SM_ORIGIN = 'sm.origin',\n SM_SOCIAL_POPUP = 'sm.social_popup',\n SM_SHOW = 'sm.show',\n // amplitude device ID\n SM_AMP_DID = 'sm.amp_did',\n // amplitude session ID\n SM_AMP_SID = 'sm.amp_sid',\n}\n\n/** Possible values for the sm.origin param */\nexport enum SmOrigin {\n SURVEYENDPAGE = 'surveyendpage',\n}\n\n/** Inbound query params that we understand */\nexport enum QueryParams {\n CONNECTION = 'connection',\n EMAIL_IN_USE = 'email_in_use',\n ERROR = 'error',\n ERROR_DESCRIPTION = 'error_description',\n EP = 'ep',\n SM = 'sm',\n SM_ALLOW_CREATE_USER = 'sm_allow_create_user',\n SM_APP = 'sm.app',\n SM_LOCALE = 'sm.locale',\n SM_SHOW = 'sm.show',\n UT_SOURCE = 'ut_source',\n UT_SOURCE2 = 'ut_source2',\n UT_SOURCE3 = 'ut_source3',\n}\n\nexport default SmParams;\n","/* Error types that may be observed by the client */\n\nexport enum SamlErrorCode {\n // Usersvc codes\n DOMAIN_LOCKED = 'domain_locked',\n EMAIL_ROLE_BASED = 'email_role_based',\n GROUP_DOWNGRADED = 'group_downgraded',\n GROUP_HAS_NO_OWNER = 'group_has_no_owner',\n GROUP_NOT_FOUND = 'group_not_found',\n GROUP_NOT_FOUND_BY_CANONICAL_NAME = 'group_not_found_by_canonical_name',\n GROUP_NOT_FOUND_BY_ISSUER = 'group_not_found_by_issuer',\n GROUP_NOT_SSO_ENABLED = 'group_not_sso_enabled',\n GROUP_OWNER_IS_NOT_ENTERPRISE = 'group_owner_is_not_enterprise',\n INVALID_EMAIL = 'invalid_email',\n INVALID_EMAIL_IN_USER_ATTRIBUTES = 'invalid_email_in_user_attributes',\n NOT_AFTER_FAILURE = 'not_after_failure',\n NOT_BEFORE_FAILURE = 'not_before_failure',\n NO_NAME_ID_FOUND = 'no_nameID_found',\n RESPONDENT_ONLY = 'respondent_only',\n REQUEST_DENIED = 'request_denied',\n SAML_RESPONSE_ALREADY_SEEN = 'saml_response_already_seen',\n SSO_NOT_ENABLED = 'sso_not_enabled',\n USER_PENDING_DELETION = 'user_pending_deletion',\n USER_IS_PENDING_DELETION = 'user_is_pending_deletion',\n USER_PENDING_REASSIGNMENT = 'user_pending_reassignment',\n USER_IS_PENDING_REASSIGNMENT = 'user_is_pending_reassignment',\n X509_CANNOT_VERIFY = 'x509_cannot_verify',\n X509_MISMATCH = 'x509_mismatch',\n\n // Non Usersvc codes\n CONNECTION_DISABLED = 'connection_disabled',\n IDP_INITIATED_NOT_ENABLED = 'idp_init_not_enabled',\n}\n\nexport type ErrorCode =\n | 'accept_forbidden'\n | 'content_type_not_acceptable'\n | 'data_center_mismatch'\n | 'identity_already_linked'\n | 'identity_not_linked'\n | 'internal_error'\n | 'invalid_invite'\n | 'invalid_request'\n | 'method_not_allowed'\n | 'not_enough_seats'\n | 'profile'\n | 'profile_not_found'\n | 'multiple_profiles_found'\n | 'rate_limit_exceeded'\n | 'resource_not_found'\n | 'temporarily_unavailable'\n | 'unauthorized'\n | 'user_already_in_group'\n | 'user_is_hipaa';\n\ntype ErrorSource =\n | {\n location: 'body';\n pointer: string;\n }\n | {\n location: 'headers';\n header: string;\n }\n | {\n location: 'path';\n }\n | {\n location: 'query';\n parameter: string;\n };\n\nexport type FormattedError = {\n code: ErrorCode | SamlErrorCode;\n detail: string;\n source?: ErrorSource;\n retryAfter?: string;\n isEmailInUse?: boolean;\n extra?: string;\n};\n","/**\n * @returns a string value if it belongs to the enum.\n * @throws if the value is not a member of the enum.\n */\nexport default function asEnum(\n enumObject: { [K in T]: TEnumValue },\n value: unknown\n): TEnumValue {\n const isOk = (v: unknown): v is TEnumValue => Object.values(enumObject).includes(value);\n\n if (isOk(value)) {\n return value;\n }\n\n throw new Error(`Value \"${value}\" is not a member of enum [${Object.values(enumObject).join(',')}]`);\n}\n","module.exports = jsdom;"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","useStyles","createUseStyles","theme","mediaQueryMinScreenSm","concat","breakpoints","sm","ctaContainer","_defineProperty","marginBottom","spacing","width","spacer","borderRight","palette","border","main","CTASplitter","_ref","ctas","prompt","_ref$swapOrder","swapOrder","_useStyles","promptText","React","Box","mb","Typography","align","variant","justify","length","Responsive","minWidth","matches","assign","mt","mx","flexJustify","display","_ref2","index","cta","caption","Fragment","key","className","flexDirection","SurveyQuestion","BaseQuestionHeader","PaginatedList","AnalysisStandardViewFilterRule","AnalysisStandardViewCompareRule","SurveyRespondentAnswer","SurveyQuestionOption","Project","ProjectVariableConfiguration","ProjectVariableAnswer","ConceptTestingStimulus","AttributeQuestion","QuestionResponseSummary","MultipleComparisonQuestion","CustomQuestion","ProjectEntity","AudienceTargetingCriteria","AudienceCriteriaSelection","CustomQuestionResponseSummary","ImageAsset","TeamAsset","Asset","LibraryAsset","WelcomeFlowQuestion","SurveyQuestionTemplate","QuestionVariableAnswerData","SurveyQuestionTemplateOption","getSubdomain","subdomain","host","window","location","hostname","parts","split","isUKDomain","endsWith","validHost","validEUHost","isEUSubdomain","_slicedToArray","getQueryParam","name","URLSearchParams","search","get","undefined","hasQueryParam","has","getAllQueryParams","params","obj","create","forEach","value","getRedirectUri","ep","includes","FORCE_AUTH","getSmShow","showParam","QueryParams","pathname","SmShow","getSmApp","asEnum","SmApp","getForceAccountCreation","replace","connection","strategy","Auth0Strategy","isSocial","buildAppState","show","app","forceAccountPicker","SmParams","ut_source","ut_source2","ut_source3","authUrl","toString","forceAccountCreation","replaceUrl","_x","_replaceUrl","apply","arguments","_asyncToGenerator","_regeneratorRuntime","_callee","url","_callee$","_context","prev","next","abrupt","stop","getConnection","ssoCanonicalName","_getQueryParam","_login","_callee2","_client$loginWithRedi","_amplitudeIds$deviceI","_amplitudeIds$session","_objectSpread2","auth0Config","language","country","smAllowCreateUserCookieVal","domain","clientId","now","client","smAllowCreateUser","queryObj","enableSocialPopup","appState","lang","amplitudeIds","_callee2$","_context2","Auth0Client","authorizationParams","redirect_uri","nowProvider","stashSamlConnection","stashEp","startsWith","stashSm","stashSmAllow","waitForAmplitude","getAmplitudeIds","loginWithRedirect","openUrl","_objectSpread","deviceId","sessionId","catch","console","error","BaseLoadingPage","children","pageId","isInitialRender","useInitialRender","useRef","useEffect","current","_useContext","useContext","StaticContext","user","environment","clientConfig","countryCode","gtmId","loggingAPIPath","dataAnalyticsAPIPath","amplitudeToken","MetricsTracker","legacyWeb","AbstractHandler","_classCallCheck","nextHandler","_createClass","setNext","handler","this","handle","errorDescription","ConnectionDisabledHandler","_AbstractHandler","_inherits","_super","_createSuper","SamlErrorCode","_get","_getPrototypeOf","prototype","call","IDPInitiatedHandler","InvalidCertHandler","InvalidThumprintHandler","LoadingPage","_useState","useState","setError","handleError","validState","message","auth0Error","errorReason","errorDesc","parse","idpInitiated","invalidCert","invalidThumbprint","connectionDisabled","decodeURIComponent","SamlError","_auth0Error$code","_auth0Error","navigateTo","result","isPromise","v","ProgressCircle","continuous","useAuth0Config","_useContext$clientCo","auth0","StartAuthTransactionPage","_useContext$environme","languageCode","useParams","login","_x2","handleRedirectCallback","_handleRedirectCallback","claims","sent","getIdTokenClaims","t0","clientErrorHandler","cleanObject","target","copy","entries","displayName","RespondentSSOClient","createRespondentSSOTokenendpointUrl","_createRespondentSSOToken","idToken","resp","fetch","method","headers","body","JSON","stringify","id_token","__raw","status","json","createRespondentSSOToken","handleSsoSessionResult","redirectUrl","handleLoggedInOrCreatedSessionResult","joined","SessionResult","force_account_picker","handleUnlinkedSessionResult","_cleanObject","utSource","utSource2","emailInUse","stashIdToken","auth0Callback","_x3","_x4","_auth0Callback","config","sm_allow_create_user","_yield$handleRedirect","_yield$SessionClient$","SessionClient","createByLogin","_callback","isLegacySso","_fetchAndRemoveEp","_fetchAndRemoveSm","_respondentSSOData$re","_yield$handleRedirect2","respondentSSOData","_fetchAndRemoveSmAllo","fetchAndRemoveEp","fetchAndRemoveSm","fetchAndRemoveSmAllow","HandleAuthCallbackPage","callback","_x5","_x6","unlinkedWindow","maxWidth","backgroundColor","background","UnlinkedWindow","addOnTop","CaptiveWindow","logoPosition","buttonOverride","padding","UnlinkedButtonOption","isDisabled","showSpinner","titleText","onClick","href","buttonTestId","suffix","Button","stretched","color","size","disabled","defaultProps","COPY","defineMessages","unlinkedPageErrorBanner","defaultMessage","description","unlinkedPageJwtErrorBanner","UnlinkedErrorBanner","JWTError","Banner","showIcon","T","desc","html","unlinkedPageHeader","unlinkedEmailInUseHeader","headerContainer","paddingTop","paddingBottom","header","fontSize","type","pageTitle","UnlinkedHeader","socialName","headerText","values","PageHeader","centered","title","unlinkedPageSignupButtonTitle","unlinkedPageSignupButtonContent","unlinkedPageLoginButtonTitle","unlinkedPageLoginButtonEmailInUseTitle","unlinkedPageLoginButtonContent","unlinkedPageEmailInUseMessage","unlinkedPageLoginButton","unlinkedPageOptionsHeaderNoEmail","emailInUseButtonContainer","UnlinkedPageContent","_getAndValidateIdToke","getAndValidateIdToken","userEmail","email","_useState2","signupState","setSignupState","_useState3","_useState4","signupJWTError","setSignupJWTError","attemptSignUp","createBySignup","removeIdToken","_useState5","_useState6","loginState","setLoginState","attemptLogin","generateLoginURL","createURL","allowAccountCreation","areButtonsDisabled","loginButton","label","EmailInUse","CreateOrLogin","signupCTA","loginCTA","UnlinkedPage","isEUDC","locale","BasePage","includeHeader","showSignupButton","includeFooter","excludeMenuItems","Helmet","ERROR_CODE","ERROR_TITLE","DEFAULT","GROUP_DOWNGRADED","GROUP_NOT_FOUND","NOT_AFTER_FAILURE","NO_NAME_ID_FOUND","RESPONDENT","SSO_NOT_ENABLED","USER_PENDING_DELETION","USER_PENDING_REASSIGNMENT","X509_CANNOT_VERIFY","getCanonicalLink","refreshSamlConnection","ErrorPage","_React$useState","_React$useState2","isLoading","setIsLoading","pageRequestId","samlErrorCode","getSamlErrorCode","fetchSamlConnection","shouldRefreshSamlConnection","samlConnectionApi","removeSamlConnection","_getErrorMessage","getErrorMessage","reason","contactUsLink","getHelpCenterLink","path","contactUs","FiveHundredErrorPage","requestId","openingMessage","errorTitle","errorMessage","TeamPage","loadable","fallback","SurveyShareInterstitialPage","App","useLocation","GlobalThemeProvider","WrenchTheme","Switch","Route","exact","SHARED_ROUTES","LoginErrorPage","_toConsumableArray","TeamRoutes","FourOhFourError","DEFAULT_LOCALE","FALLBACK","_getLocaleMessages","webassetsTranslationsModule","appTranslationsModule","_bootstrapSMWeb","bootstrapSMWeb","_window$SM","staticData","SM","__LOAD_PAYLOAD_CACHE__","initializeClientErrorHandler","environ","slLanguageLocale","_staticData$clientCo","appName","appVersion","graphQLUri","_staticData$gql","gql","_staticData$gql$gqlCa","gqlCache","apolloClient","createBrowserApolloClient","uri","cacheHydration","possibleTypes","linkOptions","credentials","batchInterval","metadata","availableLoggedOutPaths","timeout","opener","addEventListener","event","data","close","postMessage","setTimeout","getLocaleMessages","createApp","localeMessages","ErrorBoundary","FallbackComponent","HelmetProvider","ApolloProvider","Router","history","StaticProvider","L10nProvider","localeCode","mount","document","getElementById","innerHTML","trim","hydrate","render","ID_TOKEN_NAMESPACE","EP_PARAM_NAMESPACE","SM_PARAM_NAMESPACE","SM_ALLOW_CREATE_PARAM_NAMESPACE","CONNECTION_NAME_NAMESPACE","stash","namespace","sessionStorage","setItem","getItem","remove","removeItem","fetchIdToken","token","IdentityAlreadyLinkedError","_Error","_wrapNativeSuper","_Error2","_super2","detail","_this","IdentityNotLinkedError","_Error3","_super3","_this2","InvalidJWTError","_Error4","_super4","InvalidInviteError","_Error5","_super5","toPref","smApp","endpointUrl","_postSessions","_switch2","_createBySignup","_createByLogin","notLinkedError","response","postSessions","action","preference","SSO_LOGIN","LOGGED_IN","shouldCreateAccount","UNLINKED","_ref2$inviteToken","inviteToken","_ref2$smAllowCreateUs","signupParams","getSignupParams","CREATED","INVALID_JWT","_callee3","_callee3$","_context3","_callee4","targetUserId","_callee4$","_context4","_switch","_callee5","opts","_ampIds$sessionId","_ampIds$deviceId","ampIds","_callee5$","_context5","signup_params","invite_token","target_user_id","auth_url","sm_amp_sid","sm_amp_did","t1","getStrategyBySub","sub","serverError","errors","extra","source","pointer","getSocialName","freeze","CALLBACK","ROUTES","LANDING","CREATE","CONVERT","REASSIGN_LANDING","REASSIGN_CONFIRM","getAmplitudeStorageKey","substring","parseAmplitudeSession","parsed","parseAmplitudeCookie","cookies","cookieData","atob","input","Buffer","from","_MetricsTracker$getCo","fromCookie","parseCookie","cookie","parseAmplitudeStorage","s","storageKey","localStorage","waitFor","_waitFor","predicate","reject","timeoutId","check","clearTimeout","err","_waitForAmplitude","USER_EVENTS","amplitudeEvent","createBrowserHistory","Apple","Facebook","Google","LinkedIn","Microsoft","_sub$split","strategyPart","SmOrigin","enumObject","isOk","join","jsdom"],"sourceRoot":""}