{"version":3,"file":"js/4850.js","mappings":"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","sources":["webpack://nocodenodeweb/./src/client/bootstraps/bootstrap.tsx","webpack://nocodenodeweb/./src/client/contexts/AppContext.tsx","webpack://nocodenodeweb/./src/client/lib/datadog.ts","webpack://nocodenodeweb/./src/client/utils/server-data.ts"],"sourcesContent":["import React from 'react';\nimport { hydrateRoot, createRoot } from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport { WorldReady } from '@paypalcorp/worldready';\nimport { WorldReadyProvider } from '@paypalcorp/pp-react-worldready';\nimport { ContextProvider as WorldReadyContextProvider } from '@paypalcorp/worldready-react';\nimport { init as initServerData, Data as ServerData } from '@client/utils/server-data';\nimport { CONTEXT_ROOT } from '@client/lib/constants';\nimport { WorldReadyProps } from '../utils/localeHelper';\n\ntype InitialAppData = {\n app: {\n locale: string;\n worldReady: WorldReadyProps;\n };\n serverData: ServerData;\n};\n\nexport const initializeAppData = (initialData?: InitialAppData): InitialAppData => {\n // eslint-disable-next-line no-underscore-dangle\n const initialState = initialData || (window.__initialState__ as InitialAppData);\n\n // Load localization messages from WorldReady\n const worldReadyData = initialState?.app?.worldReady;\n WorldReady.load(worldReadyData);\n initServerData(initialState?.serverData);\n\n // Allow the passed state to be garbage-collected\n // eslint-disable-next-line no-underscore-dangle\n if (!initialData) {\n delete window.__initialState__;\n }\n\n return initialState;\n};\n\nexport const hydrate = ({\n App,\n initialAppData,\n options = {\n hydrateMethod: 'rootRender'\n }\n}: {\n App: React.FunctionComponent<{ initialAppData: InitialAppData }>;\n initialAppData: InitialAppData;\n options?: {\n hydrateMethod: 'hydrateRoot' | 'rootRender';\n };\n}) => {\n const container = document.getElementById('root');\n if (container) {\n const Comp = (\n \n \n \n \n \n \n \n );\n\n if (options.hydrateMethod === 'hydrateRoot') {\n hydrateRoot(container, Comp);\n } else {\n const root = createRoot(container);\n root.render(Comp);\n }\n }\n};\n","import React, { useState, useContext, useMemo } from 'react';\nimport _set from 'lodash/set';\nimport { FlowType, SourceType } from '@common/analytics';\nimport type {\n HostedButtonDetails,\n OrderDetails,\n HostedButton,\n UcpConfig,\n DeployEnvironment,\n MerchantInfo,\n PaymentPrefillData,\n ButtonVariation,\n MerchantSettings,\n EnableMessagingObj,\n InterstitialExperimentDetails\n} from '../typings/Common';\nimport { CartDetails } from '../typings/Cart';\nimport { WorldReadyProps } from './WorldReadyContext';\n\ninterface IData {\n app: {\n cdnHostName: string;\n context?: {\n locality: { country: string; language: string };\n };\n csrfToken: string;\n hostname: string;\n nonce: string;\n targetEnv: DeployEnvironment;\n worldReady: WorldReadyProps;\n locale: string;\n timeZone: string;\n region: string;\n config: UcpConfig;\n };\n clientId?: string;\n cartDetails?: CartDetails;\n hostedButtonDetails?: HostedButtonDetails; // From HBS\n orderDetails?: OrderDetails | null;\n hostedButton?: HostedButton; // From BFS\n serverData: {\n csrfToken: string;\n nonce: string;\n sdkUrl: string;\n sdkClientId: string;\n geoAwareDomain?: string;\n };\n isLoading?: boolean;\n paymentPrefillData?: PaymentPrefillData;\n merchantInfo?: MerchantInfo;\n buttonVariation?: ButtonVariation;\n merchantSettings?: MerchantSettings;\n // Flags\n enablePaywall?: boolean;\n enableApplePay?: boolean;\n enableFireAid?: boolean;\n paypalButtonMessagingEnableData?: EnableMessagingObj;\n enablePaywallButtons?: boolean;\n enableBuyerAddToCart?: boolean;\n interstitial?: InterstitialExperimentDetails;\n is3ButtonsEligible?: boolean;\n isSlowRampMerchant?: boolean;\n shouldDisplayFeedbackButton?: boolean;\n isCartButtonSettingEnabled?: boolean;\n isSettingsEnabled?: boolean;\n isPayLaterDisabled?: boolean;\n sourcePage?: string;\n // fpti\n fptiData?: {\n flowType: FlowType;\n sourceType: SourceType;\n };\n supportProfileShipTaxConfig?: boolean;\n supportShipTaxOnCustomerSetPrice?: boolean;\n // Cart\n addToCartId?: string;\n}\n\nexport interface IAppContext extends IData {\n setCustomData: (path: string, value: unknown) => void;\n setCsrfToken: (csrfToken: string) => void;\n setHostedButton: (HostedButton: HostedButton) => void;\n}\n\nconst AppContext = React.createContext(null);\n\nexport const AppContextProvider = ({\n value,\n children\n}: {\n value: IData | null;\n children: React.ReactElement;\n}) => {\n const [data, setData] = useState(value);\n\n const appContextValue = useMemo(\n () =>\n data\n ? {\n ...data,\n setCustomData: (path: string, value: unknown) => {\n setData((prevData) => {\n /* istanbul ignore next */\n if (!prevData) return prevData;\n _set(prevData, path, value);\n return {\n ...prevData\n };\n });\n },\n setCsrfToken: (csrfToken: string) => {\n setData((prevData) => {\n /* istanbul ignore next */\n if (!prevData) return prevData;\n prevData.app.csrfToken = csrfToken;\n return {\n ...prevData\n };\n });\n },\n setHostedButton: (hostedButton: HostedButton) => {\n setData((prevData) => {\n /* istanbul ignore next */\n if (!prevData) return prevData;\n prevData.hostedButton = hostedButton;\n return {\n ...prevData\n };\n });\n }\n }\n : null,\n [data]\n );\n\n return {children};\n};\n\nexport const useAppContext = () => useContext(AppContext);\n","import { datadogRum, RumEvent } from '@datadog/browser-rum';\n\nconst packageJson = require('../../../package.json');\n\nexport const SERVICE_NAME = 'nocodenodeweb';\nexport const APPLICATION_ID = {\n PRODUCTION: '0fe5d467-797b-412c-9298-926f9e9f38c1',\n SANDBOX: '89a547d3-6d6c-435b-a5d6-08d99dd236cd',\n QA: 'a35d3113-10a8-4627-8047-cdfd0b525d1f'\n};\nexport const CLIENT_ID = {\n PRODUCTION: 'pub0d7fd9504d3dcea8fac2bf1a9db36ff2',\n SANDBOX: 'pub81376fccac5c9d506846d0611f2f06cf',\n QA: 'pubeca4ff0cb4f336c706f3a8089383c20a'\n};\n\nconst DATADOG_RUM_SITE = 'us5.datadoghq.com';\n\nfunction getClientEnvironment() {\n const hostname = typeof window !== 'undefined' ? window.location.host : '';\n if (hostname.includes('localhost')) return 'DEVELOPMENT';\n if (hostname.includes('qa.paypal.com')) return 'STAGE';\n if (hostname.includes('sandbox.paypal.com')) return 'SANDBOX';\n if (hostname.includes('paypal.com')) return 'PRODUCTION';\n\n return undefined;\n}\n\nfunction getDDTraceLink(correlationId: string) {\n const environment = getClientEnvironment();\n switch (environment) {\n case 'PRODUCTION':\n return `https://go/ddprod/trace?${correlationId}`;\n case 'SANDBOX':\n return `https://go/ddsb/trace?${correlationId}`;\n default:\n return `https://go/ddqa/trace?${correlationId}`;\n }\n}\n\nfunction getCalLogLink(correlationId: string) {\n const environment = getClientEnvironment();\n switch (environment) {\n case 'PRODUCTION':\n return `https://go/ddprod/tocal?${correlationId}`;\n case 'SANDBOX':\n return `https://go/ddsb/tocal?${correlationId}`;\n default:\n return `https://go/ddqa/tocal?${correlationId}`;\n }\n}\n\nexport function getApplicationId() {\n const environment = getClientEnvironment();\n switch (environment) {\n case 'PRODUCTION':\n return APPLICATION_ID.PRODUCTION;\n case 'SANDBOX':\n return APPLICATION_ID.SANDBOX;\n default:\n return APPLICATION_ID.QA;\n }\n}\n\nexport function getClientToken() {\n const environment = getClientEnvironment();\n switch (environment) {\n case 'PRODUCTION':\n return CLIENT_ID.PRODUCTION;\n case 'SANDBOX':\n return CLIENT_ID.SANDBOX;\n default:\n return CLIENT_ID.QA;\n }\n}\n\nexport function addCorrelationIdToContext(event: RumEvent, correlationId: string | null) {\n if (correlationId && typeof correlationId === 'string') {\n event.context = event.context || {};\n event.context.correlationId = correlationId;\n\n const ddTraceLink = getDDTraceLink(correlationId);\n const calLogLink = getCalLogLink(correlationId);\n event.context['dd-trace-url'] = ddTraceLink;\n event.context['external-cal-url'] = calLogLink;\n }\n}\n\n/* istanbul ignore next */\nif (typeof window !== 'undefined') {\n // init Datadog RUM\n /* istanbul ignore next */\n datadogRum.init({\n // properties for identifying and authenticating the application with RUM\n applicationId: getApplicationId(),\n clientToken: getClientToken(),\n site: DATADOG_RUM_SITE,\n service: SERVICE_NAME,\n version: packageJson.version,\n // sampling must be set at 100 for session and 0 for recording. retention will be controlled on the backend in Datadog\n sessionSampleRate: 100,\n sessionReplaySampleRate: 0,\n // auto-instrumentations https://docs.datadoghq.com/real_user_monitoring/browser/data_collected/\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n // privacy defaults to prevent leaking PII\n defaultPrivacyLevel: 'mask',\n enablePrivacyForActionName: true,\n // exclude log, tealeaf, and fpti endpoints which are not tied to user interactions from activity tracking\n excludedActivityUrls: [/log/i, /fpti/i, /tealeaf/i, /tracking\\/ts/i],\n // exclude log, tealeaf, and fpti endpoints which are not tied to user interactions from universal tracing\n allowedTracingUrls: [\n (url) =>\n !(\n url.toLowerCase().includes('log') ||\n url.toLowerCase().includes('fpti') ||\n url.toLowerCase().includes('tealeaftarget') ||\n url.toLowerCase().includes('tracking/ts')\n ) && url.includes('paypal.com')\n ],\n beforeSend(event, context) {\n // modify RUM events to include the correlationId and links to logs and traces\n // for the request because we don't yet have universal tracing\n if (event.type === 'resource') {\n // handle fetch\n if ('response' in context && context?.response?.headers) {\n const correlationId = context.response.headers.get('Paypal-Debug-Id');\n addCorrelationIdToContext(event, correlationId);\n }\n // handle XHR\n if (\n 'xhr' in context &&\n context.xhr &&\n 'getResponseHeader' in context.xhr &&\n typeof context.xhr.getResponseHeader === 'function'\n ) {\n const correlationId = context.xhr.getResponseHeader('Paypal-Debug-Id');\n addCorrelationIdToContext(event, correlationId);\n }\n }\n return true;\n }\n });\n}\n","/**\n * Grabs the data we dump from the server into the DOM and exports them as a singleton.\n * This allows us to conveniently dump server data into the dom and use this to load\n * that data into our app.\n */\n// because the way webpack is implemented, you can import this file anywhere\n// in the codebase like so:\n// import serverData from 'utils/server-data'\nimport { WorldReady } from '@paypalcorp/worldready';\nimport { ServerData } from '../typings/Common';\nimport { logErrorClient } from './beaverLogger';\n\nconst serverData = {} as ServerData;\n\nexport interface Data extends ServerData {\n serializedServerData?: string;\n serializedFptiConfigs?: string;\n}\n\nfunction init(data: Data) {\n if (!data) {\n return;\n }\n\n try {\n const serverDataDetails = JSON.parse(data.serializedServerData || '{}');\n const serverFPTIConfig = JSON.parse(data.serializedFptiConfigs || '{}');\n Object.assign(serverData, { ...data, ...serverDataDetails, ...serverFPTIConfig });\n\n if (process.env.NODE_ENV !== 'test' && serverData?.worldReady) {\n WorldReady.load(serverData.worldReady);\n }\n } catch (err) {\n logErrorClient('server-data: ', err.toString());\n }\n}\n\nconst supportedCurrencies = () => {\n return serverData.accountCurrencies || [];\n};\n\nexport default serverData;\nexport { init, supportedCurrencies };\n"],"names":["initializeAppData","initialData","initialState","window","__initialState__","worldReadyData","app","worldReady","WorldReady","load","initServerData","serverData","hydrate","App","initialAppData","options","hydrateMethod","container","document","getElementById","Comp","_jsx","WorldReadyContextProvider","locale","children","WorldReadyProvider","BrowserRouter","basename","CONTEXT_ROOT","hydrateRoot","createRoot","render","AppContext","React","AppContextProvider","value","data","setData","useState","appContextValue","useMemo","setCustomData","path","prevData","_set","setCsrfToken","csrfToken","setHostedButton","hostedButton","Provider","useAppContext","useContext","packageJson","require","getClientEnvironment","hostname","location","host","includes","addCorrelationIdToContext","event","correlationId","context","ddTraceLink","getDDTraceLink","calLogLink","getCalLogLink","datadogRum","init","applicationId","getApplicationId","clientToken","getClientToken","site","service","version","sessionSampleRate","sessionReplaySampleRate","trackUserInteractions","trackResources","trackLongTasks","defaultPrivacyLevel","enablePrivacyForActionName","excludedActivityUrls","allowedTracingUrls","url","toLowerCase","beforeSend","type","response","headers","get","xhr","getResponseHeader","serverDataDetails","JSON","parse","serializedServerData","serverFPTIConfig","serializedFptiConfigs","Object","assign","err","logErrorClient","toString"],"sourceRoot":""}