{"version":3,"file":"747.38b7d9b8fb87a465a012.js","mappings":"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","sources":["webpack://customer-portal-web-app/./src/common/webHostClient/authentication/authenticationClient.ts","webpack://customer-portal-web-app/./src/pages/basePage.ts","webpack://customer-portal-web-app/./src/links.ts","webpack://customer-portal-web-app/./src/common/staticFileReferences.ts","webpack://customer-portal-web-app/./src/common/webHostClient/baseClient.ts","webpack://customer-portal-web-app/./src/pages.js","webpack://customer-portal-web-app/./src/common/storage.ts","webpack://customer-portal-web-app/./src/common/globals.ts","webpack://customer-portal-web-app/./src/common/webHostClient/configuration/configurationClient.ts"],"sourcesContent":["import BaseClient from \"../baseClient\";\r\nimport AccountUpdateTokenResponseBody from \"./accountUpdateTokenResponseBody\";\r\nimport EmailVerificationRequestBody from \"./emailVerificationRequestBody\";\r\nimport EmailVerifyRequestBody from \"./emailVerifyRequestBody\";\r\nimport ForgottenPasswordRequestBody from \"./forgottenPasswordRequestBody\";\r\nimport GetTokenInfoRequest from \"./getTokenInfoRequest\";\r\nimport GetTokenInfoResponse from \"./getTokenInfoResponse\";\r\nimport LogInRequestBody from \"./logInRequestBody\";\r\nimport LogInResponseBody from \"./logInResponseBody\";\r\nimport PasswordComplexityRequestBody from \"./passwordComplexityRequestBody\";\r\nimport PasswordComplexityResponseBody from \"./passwordComplexityResponseBody\";\r\nimport RegistrationRequest from \"./registrationRequest\";\r\nimport RegistrationResponse from \"./registrationResponse\";\r\nimport UpdatePasswordRequest from \"./updatePasswordRequest\";\r\n\r\n/**\r\n * Authentication client.\r\n */\r\nexport default class AuthenticationClient extends BaseClient {\r\n\r\n public async logInAsync(request: LogInRequestBody) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync('authentication_log_in');\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication', \r\n action: 'log-in', \r\n method: 'post', \r\n body: request, \r\n });\r\n return response as LogInResponseBody;\r\n }\r\n\r\n public async submitEmailForVerificationAsync(request: EmailVerificationRequestBody) : Promise {\r\n \r\n request.recaptchaToken = await this.recaptchaChallengeAsync('send_email_verification');\r\n\r\n await this.makeRequestAsync({\r\n controller: 'authentication',\r\n action: 'send-verification-email',\r\n method: 'post',\r\n body: request,\r\n });\r\n }\r\n\r\n public async registerNewUserAsync(request: RegistrationRequest) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync('authentication_register');\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication',\r\n action: 'register-new-user',\r\n method: 'post',\r\n body: request,\r\n });\r\n\r\n return response as RegistrationResponse;\r\n }\r\n\r\n public async forgottenPasswordAsync(request: ForgottenPasswordRequestBody) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync('authentication_forgotten_password');\r\n\r\n await this.makeRequestAsync({\r\n controller: 'authentication',\r\n action: 'forgotten-password',\r\n method: 'post',\r\n body: request,\r\n });\r\n }\r\n\r\n public async getPasswordComplexityAsync(request: PasswordComplexityRequestBody) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync('authentication_password_complexity');\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication',\r\n action: 'get-password-complexity',\r\n method: 'post',\r\n body: request});\r\n \r\n return response as PasswordComplexityResponseBody;\r\n }\r\n\r\n public async verifyEmailAsync(request: EmailVerifyRequestBody) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync('authentication_verify_email');\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication',\r\n action: 'verify-email',\r\n method: 'post',\r\n body: request});\r\n\r\n return response as AccountUpdateTokenResponseBody;\r\n }\r\n\r\n /**\r\n * Gets the current logged in user information and validates the current in progress order token.\r\n * @param request The request content.\r\n * @returns A promise that will return the response content.\r\n */\r\n public async getTokenInfo(request: GetTokenInfoRequest) : Promise {\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication', \r\n action: 'get-token-info', \r\n method: 'post',\r\n body: request\r\n });\r\n return response as GetTokenInfoResponse;\r\n }\r\n\r\n\r\n /**\r\n * Updates the password for the currently logged on user.\r\n * @param request The request content.\r\n * @returns A promise that will return the response content.\r\n */\r\n public async updatePasswordAsync(request: UpdatePasswordRequest) : Promise {\r\n\r\n request.recaptchaToken = await this.recaptchaChallengeAsync(\"update_password\");\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'authentication', \r\n action: 'update-password', \r\n method: 'post',\r\n body: request\r\n });\r\n }\r\n\r\n \r\n\r\n\r\n\r\n\r\n}\r\n","import * as ko from 'knockout';\r\n\r\nimport { links } from '../links';\r\nimport AuthenticatedUser from '../authenticatedUser';\r\nimport AuthenticationClient from '../common/webHostClient/authentication/authenticationClient';\r\nimport ConfigurationClient from '../common/webHostClient/configuration/configurationClient';\r\nimport GetTokenInfoRequest from '../common/webHostClient/authentication/getTokenInfoRequest';\r\nimport GetTokenInfoResponse from '../common/webHostClient/authentication/getTokenInfoResponse';\r\nimport storage from '../common/storage';\r\nimport globals from '../common/globals';\r\nimport '../common/staticFileReferences';\r\nimport Feature from '../common/webHostClient/configuration/Feature';\r\n\r\n/**\r\n * Base page view model\r\n */\r\nexport default abstract class BasePage {\r\n\r\n private static wayleavesMapFeatureName = \"WayleavesMapUSOnline\";\r\n public readonly currentUser: ko.Observable = ko.observable();\r\n public readonly links = links;\r\n protected requiresAuthentication: boolean = false;\r\n public readonly isWayleavesMapEnabled : ko.Observable = ko.observable(false);\r\n\r\n public async initialiseAsync(): Promise {\r\n\r\n // Get site key\r\n const configurationClient = new ConfigurationClient();\r\n globals.config = await configurationClient.getGeneralConfigurationAsync();\r\n\r\n if (!await this.preflightAsync())\r\n {\r\n console.log(\"Page preflight checks failed, navigating to home page.\");\r\n window.location.assign(this.links.homeHref);\r\n return;\r\n }\r\n\r\n await this.loadHeadAsync();\r\n await this.loadAuthenticationAsync();\r\n\r\n if (this.requiresAuthentication && this.currentUser() == null)\r\n {\r\n console.log(\"Page requires user to login.\");\r\n const loginHref: string = this.links.getRedirectingBackToCurrentPageLoginHref(\"login\");\r\n window.location.assign(loginHref);\r\n return;\r\n }\r\n\r\n const wayleavesMapFeatureToggle : Feature = globals.config.features.find(i => i.name === BasePage.wayleavesMapFeatureName)\r\n\r\n this.isWayleavesMapEnabled(wayleavesMapFeatureToggle.enabled);\r\n\r\n await this.loadContentAsync();\r\n\r\n this.defineCustomBindings();\r\n\r\n ko.applyBindings(this);\r\n\r\n await this.onLoadCompleteAsync();\r\n }\r\n\r\n protected async onLoadCompleteAsync(): Promise {\r\n return;\r\n }\r\n\r\n protected async loadContentAsync(): Promise\r\n {\r\n return;\r\n }\r\n\r\n public signOut() {\r\n this.clearAllInProgressOrderData();\r\n storage.clearAuthenticationToken();\r\n window.location.assign(this.links.homeHref);\r\n }\r\n\r\n protected async preflightAsync(): Promise {\r\n return true;\r\n }\r\n\r\n protected getQueryStringParameter(name) {\r\n return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(window.location.search) || [null, ''])[1].replace(/\\+/g, '%20')) || null;\r\n }\r\n\r\n /**\r\n * Clears all in progress order data from persistent storage.\r\n */\r\n protected clearAllInProgressOrderData() {\r\n storage.clearInProgressOrderToken();\r\n storage.clearPayPalOrderId();\r\n storage.clearStartOrderLocationQueryText();\r\n storage.clearStartOrderMapBounds();\r\n storage.clearStartOrderSiteGeometry();\r\n }\r\n\r\n private initialiseGooleTagManager() {\r\n \r\n const id = 'GTM-T7Q28RD';\r\n\r\n window['dataLayer'] = window['dataLayer']||[];\r\n window['dataLayer'].push({\r\n 'gtm.start': new Date().getTime(),\r\n event: 'gtm.js'\r\n });\r\n\r\n const gtmScriptElement = document.createElement('script')\r\n gtmScriptElement.async=true\r\n gtmScriptElement.src='https://www.googletagmanager.com/gtm.js'+\r\n '?id=' + id + \r\n '>m_auth=' + globals.config.gtmAuth + \r\n '>m_preview=' + globals.config.gtmPreview + \r\n '>m_cookies_win=x';\r\n\r\n const firstScriptElement = document.getElementsByTagName('script')[0];\r\n firstScriptElement.parentNode.insertBefore(gtmScriptElement, firstScriptElement);\r\n }\r\n\r\n private async loadHeadAsync() {\r\n\r\n const headElement = document.getElementsByTagName(\"head\")[0];\r\n\r\n // Google Tag Manager\r\n this.initialiseGooleTagManager();\r\n\r\n // Google reCAPTCHA\r\n const recaptchaScriptElement: HTMLScriptElement = document.createElement(\"script\");\r\n recaptchaScriptElement.src = `${globals.config.reCaptchaClientScriptUrl}?render=${globals.config.reCaptchaSiteKey}`;\r\n \r\n await new Promise((resolve, reject) => {\r\n recaptchaScriptElement.addEventListener('load', () => resolve(null));\r\n recaptchaScriptElement.onerror = (error) => reject(error);\r\n headElement.appendChild(recaptchaScriptElement);\r\n });\r\n\r\n\r\n // Infinity call tracking\r\n try {\r\n (function (i:any, n, f, t, y, x, z) {\r\n y = i._its = function () { return y.queue.push(arguments) }; y.version = '2.0'; y.queue = []; z = n.createElement(f); z.async = !0; z.src = t; x = n.getElementsByTagName(f)[0]; x.parentNode.insertBefore(z, x)\r\n })(window, document, 'script', 'https://script.infinity-tracking.com/infinitytrack.js?i=269');\r\n window['_its']('init', '269');\r\n window['_its']('track');\r\n }\r\n catch (err) {\r\n console.log(\"Failed to initialise Infinity Call Tracking\", err);\r\n }\r\n \r\n }\r\n\r\n /**\r\n * Loads authentication items for the page.\r\n */\r\n private async loadAuthenticationAsync() {\r\n\r\n const authenticationClient: AuthenticationClient = new AuthenticationClient();\r\n\r\n const tokenInfoRequest: GetTokenInfoRequest = {\r\n orderToken: storage.getInProgressOrderToken(),\r\n };\r\n\r\n const tokenInfoResponse : GetTokenInfoResponse = await authenticationClient.getTokenInfo(tokenInfoRequest);\r\n\r\n // Is the user authenticated?\r\n if (tokenInfoResponse.currentUserEmail && tokenInfoResponse.currentUserName)\r\n {\r\n this.currentUser({\r\n name: tokenInfoResponse.currentUserName, \r\n email: tokenInfoResponse.currentUserEmail,\r\n });\r\n }\r\n else\r\n {\r\n storage.clearAuthenticationToken();\r\n this.currentUser(null);\r\n }\r\n\r\n // Is there an order in progress?\r\n if (tokenInfoResponse.orderToken)\r\n {\r\n // Yes, hang on to the refreshed token\r\n storage.setInProgressOrderToken(tokenInfoResponse.orderToken);\r\n }\r\n else\r\n {\r\n // No, clear any stale token.\r\n storage.clearInProgressOrderToken();\r\n }\r\n }\r\n\r\n private defineCustomBindings() {\r\n\r\n // Some popover elements are created by knockout, we need to wait until knockout has finished binding before initialising them.\r\n // Using a databinding to bind popover instead of doing it in the view models.\r\n ko.bindingHandlers.bindPopover = {\r\n init: (element, _valueAccessor, _allBindings, _viewModel, _bindingContext) => {\r\n $(element).popover();\r\n }\r\n };\r\n\r\n ko.bindingHandlers.fadeVisible = {\r\n init: function(element, valueAccessor) {\r\n // Initially set the element to be instantly visible/hidden depending on the value\r\n var value = valueAccessor();\r\n $(element).toggle(ko.unwrap(value)); // Use \"unwrapObservable\" so we can handle values that may or may not be observable\r\n },\r\n update: function(element, valueAccessor) {\r\n // Whenever the value subsequently changes, slowly fade the element in or out\r\n var value = valueAccessor();\r\n ko.unwrap(value) ? $(element).fadeIn() : $(element).hide();\r\n }\r\n }\r\n \r\n }\r\n}","import * as pages from './pages';\r\n\r\n// Common source for all hyperlinks within the web app\r\nclass Links {\r\n public readonly homeHref = Links.pageToPath(pages.home);\r\n\r\n public readonly errorHref = Links.pageToPath(pages.error);\r\n\r\n public readonly logInHref = Links.pageToPath(pages.logIn);\r\n\r\n // Footer\r\n public readonly accessibilityPolicyHref = 'https://www.atkinsglobal.com/accessibility-policy';\r\n public readonly privacyNoticeHref = 'https://www.atkinsglobal.com/privacy-policy';\r\n public readonly modernSlaveryTraffickingStatementHref = 'https://www.atkinsglobal.com/statutory-and-regulatory-disclosures#accordion-item-link-modern-slavery-and-human-trafficking-statement';\r\n public readonly statutoryRegulatoryDisclosuresHref = 'https://www.atkinsglobal.com/statutory-and-regulatory-disclosures';\r\n public readonly integrityHref = 'https://www.snclavalin.com/en/about/integrity';\r\n public readonly reportingLineHref = 'https://www.snclavalin.com/en/site-services/reporting-line';\r\n public readonly disclaimerHref = 'https://www.atkinsglobal.com/disclaimer';\r\n\r\n public readonly aboutUsHref = Links.pageToPath(pages.aboutUs);\r\n public readonly aboutUsBestPracticeHref = `${this.aboutUsHref}#bestpractice`;\r\n public readonly aboutUsMeetTheTeamHref = `${this.aboutUsHref}#meettheteam`;\r\n public readonly aboutUsOurservicesHref = `${this.aboutUsHref}#ourservices`;\r\n\r\n public readonly whatWeOfferHref = Links.pageToPath(pages.whatWeOffer);\r\n public readonly productsHref = Links.pageToPath(pages.products);\r\n public readonly wayleavesMapHref = Links.pageToPath(pages.wayleavesMap);\r\n\r\n // Products Page - Products panels\r\n public readonly productsUsrHref = `${this.productsHref}#usr-panel`;\r\n public readonly productsUsmHref = `${this.productsHref}#usm-panel`;\r\n public readonly productsUssHref = `${this.productsHref}#uss-panel`;\r\n\r\n // What we offer - Discovery phase\r\n public readonly whatWeOfferDiscoveryHref = `${this.whatWeOfferHref}#discovery`;\r\n public readonly whatWeOfferUtilitySearchReportHref = `${this.whatWeOfferHref}#utilitysearchreport`;\r\n public readonly whatWeOfferUtilitySearchMapHref = `${this.whatWeOfferHref}#utilitysearchmap`;\r\n public readonly whatWeOfferUtilitySearchSummaryHref = `${this.whatWeOfferHref}#utilitysearchsummary`;\r\n public readonly whatWeOfferWayleavesReportHref = `${this.whatWeOfferHref}#wayleavesreport`;\r\n\r\n // What we offer - Feasibility phase\r\n public readonly whatWeOfferFeasibilityHref = `${this.whatWeOfferHref}#feasibility`;\r\n public readonly whatWeOfferDiversionaryWorksBudgetHref = `${this.whatWeOfferHref}#diversionaryworksbudget`;\r\n public readonly whatWeOfferConstraintsAnalysisHref = `${this.whatWeOfferHref}#constraintsanalysis`;\r\n public readonly whatWeOfferCapacityAnalysisHref = `${this.whatWeOfferHref}#capacityanalysis`;\r\n public readonly whatWeOfferNewConnectionsBudgetHref = `${this.whatWeOfferHref}#newconnectionsbudget`;\r\n\r\n // What we offer - Procurement phase\r\n public readonly whatWeOfferProcurementHref = `${this.whatWeOfferHref}#procurement`;\r\n public readonly whatWeOfferDiversionaryWorksDetailedHref = `${this.whatWeOfferHref}#diversionaryworksdetailed`;\r\n public readonly whatWeOfferNewConnectionsFirmHref = `${this.whatWeOfferHref}#newconnectionsfirm`;\r\n\r\n // What we offer - Coordination phase\r\n public readonly whatWeOfferCoordinationHref = `${this.whatWeOfferHref}#coordination`;\r\n public readonly whatWeOfferDiversionaryWorksCoordinationHref = `${this.whatWeOfferHref}#diversionaryworkscoordination`;\r\n public readonly whatWeOfferDisconnectionsHref = `${this.whatWeOfferHref}#disconnections`;\r\n public readonly whatWeOfferNewconnectionsCoordinationHref = `${this.whatWeOfferHref}#newconnectionscoordination`;\r\n\r\n public readonly pricingHref = Links.pageToPath(pages.pricing);\r\n\r\n // Hashes\r\n public readonly utilitySearchReportHash = `#utility-search-report`;\r\n public readonly utilitySearchMapHash = `#utility-search-map`;\r\n public readonly utilitySearchSummaryHash = `#utility-search-summary`;\r\n\r\n // Pricing - Utility Search Report\r\n public readonly pricingUtilitySearchReportHref = `${this.pricingHref}${this.utilitySearchReportHash}`;\r\n\r\n // Pricing - Utility Search Map\r\n public readonly pricingUtilitySearchMapHref = `${this.pricingHref}${this.utilitySearchMapHash}`;\r\n\r\n // Pricing - Utility Search Summary\r\n public readonly pricingUtilitySearchSummaryHref = `${this.pricingHref}${this.utilitySearchSummaryHash}`;\r\n\r\n public readonly caseStudiesHref = Links.pageToPath(pages.caseStudies);\r\n\r\n // Order process - select area\r\n public readonly selectAreaHref = Links.pageToPath(pages.selectArea);\r\n\r\n public readonly selectOptionsHref = Links.pageToPath(pages.selectOptions);\r\n\r\n public readonly contactAndHelpHref = Links.pageToPath(pages.contactAndHelp);\r\n public readonly contactAndHelpEnquiryHref = `${this.contactAndHelpHref}#ums-customer-enquiry`;\r\n\r\n public readonly orderDetailsHref = Links.pageToPath(pages.orderDetails);\r\n\r\n // Order process - view estimate\r\n public readonly viewEstimateHref = Links.pageToPath(pages.viewEstimate);\r\n\r\n // Order process - checkout on account\r\n public readonly checkoutHref = Links.pageToPath(pages.checkout);\r\n\r\n // Order process - confirmation (for checkout as guest).\r\n public readonly confirmationHref = Links.pageToPath(pages.confirmation);\r\n\r\n // Add products page (formally known as retrospective USM).\r\n public readonly addProductsHref = Links.pageToPath(pages.addProducts);\r\n\r\n public readonly myOrdersHref = Links.pageToPath(pages.myOrders);\r\n\r\n public readonly orderIdQueryStringKey: string = \"orderId\";\r\n public readonly actionQueryStringKey: string = \"a\";\r\n public readonly actionQueryStringValueRegister: LoginPageActionQueryString = \"register\";\r\n public readonly actionQueryStringValueLogin: LoginPageActionQueryString = \"login\";\r\n public readonly returnUrlQueryStringKey: string = \"returnUrl\";\r\n public readonly filterQueryStringKey: string = \"f\"\r\n public readonly filterQueryStringValueAll: string = \"a\"\r\n public readonly filterQueryStringValueInProgress: string = \"p\"\r\n public readonly filterQueryStringValueIssued: string = \"i\"\r\n public readonly filterQueryStringValueExpired: string = \"e\"\r\n public readonly filterQueryStringValueCancelled: string = \"c\"\r\n public readonly filterQueryStringValueQuote: string = \"q\"\r\n public readonly filterQueryStringValueEmailToken: string = \"u\"\r\n\r\n public readonly hasPlacedOrderRegisteredForInvoicing: string = \"rfi\";\r\n public readonly hasCompletedInlineRegistrationQueryStringKey: string = \"reg\";\r\n public readonly queryStringTrueValue: string = \"t\";\r\n \r\n public readonly documentIdQueryStringKey: string = \"documentId\";\r\n\r\n public readonly myDocumentsHref = Links.pageToPath(pages.myDocuments);\r\n public readonly myDocumentsDetailsHref = Links.pageToPath(pages.myDocumentDetails);\r\n public readonly myNotificationsHref = Links.pageToPath(pages.myNotifications);\r\n public readonly myAccountHref = Links.pageToPath(pages.myAccount);\r\n\r\n public readonly primaryMenuItems: ReadonlyArray = [\r\n Links.pageToNavItem(pages.aboutUs),\r\n Links.pageToNavItem(pages.whatWeOffer),\r\n Links.pageToNavItem(pages.pricing),\r\n Links.pageToNavItem(pages.caseStudies),\r\n ];\r\n\r\n public readonly secondaryMenuItems: ReadonlyArray = [\r\n Links.pageToNavItem(pages.myOrders),\r\n Links.pageToNavItem(pages.myDocuments),\r\n Links.pageToNavItem(pages.myNotifications),\r\n Links.pageToNavItem(pages.myAccount)\r\n ];\r\n\r\n public getRedirectingBackToCurrentPageLoginHref(action: LoginPageActionQueryString) : string\r\n {\r\n // The redirect URL should only contain the path, query string and hash of the current URL.\r\n const currentUrl = new URL(window.location.href);\r\n const loginHref: string = this.getLoginHref(action, currentUrl.pathname + currentUrl.search + currentUrl.hash);\r\n return loginHref;\r\n }\r\n\r\n public getLoginHref(action: LoginPageActionQueryString, redirectUrl: string) : string\r\n {\r\n\r\n let fullLoginHref = `${this.logInHref}`;\r\n let sep = \"?\";\r\n\r\n if (action)\r\n {\r\n fullLoginHref += `${sep}${this.actionQueryStringKey}=${action}`\r\n sep = \"&\"\r\n }\r\n\r\n if (redirectUrl)\r\n {\r\n let returnUrlEncoded = encodeURIComponent(redirectUrl);\r\n fullLoginHref += `${sep}${this.returnUrlQueryStringKey}=${returnUrlEncoded}`;\r\n\r\n }\r\n\r\n return fullLoginHref;\r\n }\r\n\r\n private static pageToPath(page): string {\r\n return [\"\"].concat(page.directoryParts).concat(page.htmlName).join(\"/\");\r\n }\r\n\r\n private static pageToNavItem(page): NavItem {\r\n const path = Links.pageToPath(page);\r\n return {\r\n title: page.title,\r\n pathOrCallback: path,\r\n isActive: window.location.pathname === path\r\n }\r\n }\r\n}\r\n\r\n\r\n// Exports\r\n\r\n// Singleton instance\r\nexport const links = new Links();\r\n\r\n// Interfaces\r\nexport interface NavItem { title: string; pathOrCallback: string | (() => void); isActive: boolean };\r\n\r\n// All possible values for the action query string on the login page. \r\nexport type LoginPageActionQueryString = \"login\" | \"register\";","/**\r\n * References to files that are not referenced from anywhere in the project but need to be included in the webpack bundle.\r\n */\r\nimport '../emailResources/atkins-logo.png';\r\nimport '../emailResources/footer.png';\r\nimport '../emailResources/logo.png';\r\nimport '../emailResources/us-email-footer.png';\r\nimport '../emailResources/us-email-header.png';","import WebHostRequest from \"./webHostRequest\";\r\nimport WebHostClientError from \"./webHostClientError\";\r\n\r\nimport { RecaptchaAction } from \"../recaptchaActions\";\r\nimport { ReCaptcha } from \"../recaptcha\";\r\nimport storage from \"../storage\";\r\nimport ErrorInfo from \"./errorInfo\";\r\nimport globals from '../globals';\r\n\r\n\r\nexport default abstract class BaseClient \r\n{\r\n\r\n protected async makeRequestAsync(requestInfo: WebHostRequest): Promise {\r\n\r\n const requestInit: RequestInit = {\r\n method: requestInfo.method,\r\n headers: {\r\n 'Accept': 'application/json',\r\n }\r\n };\r\n\r\n const authenticationToken: string = storage.getAuthenticationToken();\r\n if (authenticationToken)\r\n {\r\n requestInit.headers[\"Authorization\"] = \"Bearer \" + authenticationToken;\r\n }\r\n\r\n if (null != requestInfo.body)\r\n {\r\n requestInit.headers['Content-Type'] = 'application/json';\r\n requestInit.body = JSON.stringify(requestInfo.body);\r\n }\r\n\r\n let requestUrl = `/api/${requestInfo.controller}/${requestInfo.action}`;\r\n\r\n if (null != requestInfo.queryParams)\r\n {\r\n const query = requestInfo.queryParams\r\n .map(p => `${encodeURIComponent(p.name)}=${encodeURIComponent(p.value)}`)\r\n .join(\"&\");\r\n\r\n requestUrl = `${requestUrl}?${query}`;\r\n }\r\n\r\n const response = await fetch(requestUrl, requestInit);\r\n \r\n // Read response content\r\n let contentObj: any = null;\r\n let contentMessage: string = null;\r\n\r\n const responseContentType = response.headers.get('Content-Type');\r\n if (responseContentType && 'application/json' == responseContentType.split(\";\")[0].trim())\r\n {\r\n contentObj = await response.json(); \r\n }\r\n else \r\n {\r\n contentMessage = await response.text();\r\n }\r\n\r\n // Was the request successful?\r\n const success = 200 <= response.status && response.status <= 299;\r\n if (!success)\r\n {\r\n const error: WebHostClientError = {\r\n status : response.status, \r\n statusText: response.statusText, \r\n content: contentObj as ErrorInfo,\r\n contentMessage: contentMessage,\r\n }; \r\n throw error;\r\n }\r\n\r\n return contentObj;\r\n }\r\n\r\n /**\r\n * Performs the ReCAPTCHA challenge and returns the response token.\r\n * @param action The ReCAPTCHA action name.\r\n * @returns The ReCAPTCHA token to send to the server for validation.\r\n */ \r\n protected async recaptchaChallengeAsync(action: RecaptchaAction) : Promise\r\n {\r\n // Get global recaptcha object\r\n const grecaptcha = window['grecaptcha'] as ReCaptcha;\r\n if (null == grecaptcha)\r\n {\r\n throw \"Recaptcha is not loaded\";\r\n }\r\n\r\n // Get token\r\n const token: string = await new Promise((resolve, reject) => {\r\n grecaptcha.ready(() => {\r\n grecaptcha.execute(globals.config.reCaptchaSiteKey, { action: action })\r\n .then(token => resolve(token))\r\n });\r\n });\r\n\r\n return token;\r\n }\r\n\r\n}\r\n","module.exports = {\r\n home: { title: \"Home\", description: \"AtkinsRéalis Utility Solutions Home\", directoryParts: [], htmlName: \"index.html\", pageType: \"branded\" },\r\n aboutUs: { title: \"About us\", description: \"About AtkinsRéalis Utility Solutions\", directoryParts: [], htmlName: \"about-us.html\", pageType: \"branded\" },\r\n products: { title: \"Products\", description: \"Products\", directoryParts: [], htmlName: \"products.html\", pageType: \"branded\" },\r\n whatWeOffer: { title: \"What we offer\", description: \"Services that Atkins Utility Solutions offer to our clients\", directoryParts: [], htmlName: \"what-we-offer.html\", pageType: \"branded\" },\r\n pricing: { title: \"Pricing\", description: \"AtkinsRéalis Utility Solutions pricing information\", directoryParts: [], htmlName: \"pricing.html\", pageType: \"branded\" },\r\n caseStudies: { title: \"Case studies\", description: \"AtkinsRéalis Utility Solutions case studies\", directoryParts: [], htmlName: \"case-studies.html\", pageType: \"branded\" },\r\n contactAndHelp: { title: \"Contact and help\", description: \"Contact AtkinsRéalis Utility Solutions or get help\", directoryParts: [], htmlName: \"contact-and-help.html\", pageType: \"branded\" },\r\n myOrders: { title: \"My orders\", description: \"Current user's orders\", directoryParts: [\"account\"], htmlName: \"my-orders.html\", pageType: \"branded\" },\r\n myDocuments: { title: \"My documents\", description: \"Current user's documents\", directoryParts: [\"account\"], htmlName: \"my-documents.html\", pageType: \"branded\" },\r\n myDocumentDetails: { title: \"My document details\", description: \"Current user's document details\", directoryParts: [\"account\"], htmlName: \"my-document-details.html\", pageType: \"branded\" },\r\n myNotifications: { title: \"My notifications\", description: \"Current user's notifications\", directoryParts: [\"account\"], htmlName: \"my-notifications.html\", pageType: \"branded\" },\r\n myAccount: { title: \"My account\", description: \"Current user's account details\", directoryParts: [\"account\"], htmlName: \"my-account.html\", pageType: \"branded\" },\r\n selectArea: { title: \"Select area\", description: \"Select an area of interest for a new utility search\", directoryParts: [\"order\"], htmlName: \"select-area.html\", pageType: \"order\" },\r\n selectOptions: { title: \"Select options\", description: \"Select options requested for the order\", directoryParts: [\"order\"], htmlName: \"select-options.html\", pageType: \"order\" },\r\n logIn: { title: \"Log in\", description: \"Please sign in to access your account.\", directoryParts: [], htmlName: \"log-in.html\", pageType: \"branded\" },\r\n error: { title: \"Error\", description: \"Error page\", directoryParts: [], htmlName: \"error.html\", pageType: \"branded\" },\r\n orderDetails: { title: \"Order details\", description: \"Order details\", directoryParts: [\"account\"], htmlName: \"order-details.html\", pageType: \"branded\" },\r\n viewEstimate: { title: \"View Estimate\", description: \"View estimate pricing for the order\", directoryParts: [\"order\"], htmlName: \"view-estimate.html\", pageType: \"order\" },\r\n checkout: { title: \"Checkout\", description: \"Checkout order\", directoryParts: [\"order\"], htmlName: \"checkout.html\", pageType: \"order\" },\r\n confirmation: { title: \"Order confirmation\", description: \"Your order has been successfully placed.\", directoryParts: [\"order\"], htmlName: \"confirmation.html\", pageType: \"branded\" },\r\n paymentComplete: { title: \"Payment complete\", description: \"Payment complete\", directoryParts: [\"order\", \"paypal\"], htmlName: \"payment-complete.html\", pageType: \"base\" },\r\n paymentCancelled: { title: \"Payment cancelled\", description: \"Payment cancelled\", directoryParts: [\"order\", \"paypal\"], htmlName: \"payment-cancelled.html\", pageType: \"base\" },\r\n addProducts: { title: \"Add products to order\", description: \"Add products to your existing order.\", directoryParts: [\"order\"], htmlName: \"add-products.html\", pageType: \"branded\" },\r\n utilitySearchReportLandingPage: {title: \"Utility Search Report landing page\", description: \"Utility Search Report landing page\", directoryParts: [\"landingpages\"], htmlName: \"utility-search-report-landing-page.html\", pageType: \"branded\" },\r\n utilitySearchMapLandingPage: {title: \"Utility Search Map landing page\", description: \"Utility Search Map landing page\", directoryParts: [\"landingpages\"], htmlName: \"utility-search-map-landing-page.html\", pageType: \"branded\" },\r\n wayleavesMap: {title: \"Utility Legal View\", description: \"Utility Legal View\", directoryParts: [\"products\"], htmlName: \"utilityLegalView.html\", pageType: \"branded\" },\r\n};\r\n\r\n","const authenticationTokenKey = \"authenticationToken\";\r\nconst startOrderLocationQueryTextKey = \"startOrderLocationQueryText\";\r\nconst inProgressOrderTokenKey = \"inProgressOrderToken\";\r\nconst startOrderMapBoundsKey = \"startOrderMapBounds\";\r\nconst startOrderSiteGeometryKey = \"startOrderSiteGeometry\";\r\nconst cookiePreferencesSavedKey = \"cookiePreferencesSaved\";\r\nconst allowAnalyticsCookiesKey = \"allowAnalyticsCookies\";\r\nconst payPalOrderIdKey = \"payPalOrderId\";\r\nconst userId = \"userId\";\r\n\r\n/**\r\n * Persistent storage\r\n */\r\nclass Storage {\r\n\r\n public setUserId(contactId: string): void {\r\n window.localStorage.setItem(userId, contactId);\r\n }\r\n\r\n public getAuthenticationToken(): string {\r\n let authenticationTokenValue: string = window.sessionStorage.getItem(authenticationTokenKey);\r\n if (!authenticationTokenValue) {\r\n authenticationTokenValue = window.localStorage.getItem(authenticationTokenKey);\r\n }\r\n return authenticationTokenValue;\r\n }\r\n\r\n public setAuthenticationToken(authenticationTokenValue: string, persist: boolean): void {\r\n if (persist) {\r\n // Remember the authentication token for future sessions.\r\n window.sessionStorage.removeItem(authenticationTokenKey);\r\n window.localStorage.setItem(authenticationTokenKey, authenticationTokenValue);\r\n }\r\n\r\n else {\r\n // Only store the token for this session\r\n window.sessionStorage.setItem(authenticationTokenKey, authenticationTokenValue);\r\n window.localStorage.removeItem(authenticationTokenKey);\r\n }\r\n }\r\n\r\n public clearAuthenticationToken(): void {\r\n window.sessionStorage.removeItem(authenticationTokenKey);\r\n window.localStorage.removeItem(authenticationTokenKey);\r\n }\r\n\r\n\r\n public getStartOrderLocationQueryText(): string {\r\n return window.sessionStorage.getItem(startOrderLocationQueryTextKey);\r\n }\r\n\r\n public setStartOrderLocationQueryText(startOrderLocationQueryTextValue): void {\r\n return window.sessionStorage.setItem(startOrderLocationQueryTextKey, startOrderLocationQueryTextValue);\r\n }\r\n\r\n public clearStartOrderLocationQueryText(): void {\r\n return window.sessionStorage.removeItem(startOrderLocationQueryTextKey);\r\n }\r\n\r\n public getStartOrderMapBounds(): string {\r\n return window.sessionStorage.getItem(startOrderMapBoundsKey);\r\n }\r\n\r\n public setStartOrderMapBounds(startOrderMapBoundsValue): void {\r\n return window.sessionStorage.setItem(startOrderMapBoundsKey, startOrderMapBoundsValue);\r\n }\r\n\r\n public clearStartOrderMapBounds(): void {\r\n return window.sessionStorage.removeItem(startOrderMapBoundsKey);\r\n }\r\n\r\n public getStartOrderSiteGeometry(): string {\r\n return window.sessionStorage.getItem(startOrderSiteGeometryKey);\r\n }\r\n\r\n public setStartOrderSiteGeometry(startOrderSiteGeometryValue): void {\r\n return window.sessionStorage.setItem(startOrderSiteGeometryKey, startOrderSiteGeometryValue);\r\n }\r\n\r\n public clearStartOrderSiteGeometry(): void {\r\n return window.sessionStorage.removeItem(startOrderSiteGeometryKey);\r\n }\r\n\r\n public getInProgressOrderToken(): string {\r\n return window.sessionStorage.getItem(inProgressOrderTokenKey);\r\n }\r\n\r\n public setInProgressOrderToken(inProgressOrderTokenValue: string): void {\r\n window.sessionStorage.setItem(inProgressOrderTokenKey, inProgressOrderTokenValue);\r\n }\r\n\r\n public clearInProgressOrderToken(): void {\r\n return window.sessionStorage.removeItem(inProgressOrderTokenKey);\r\n }\r\n\r\n public getPayPalOrderId(): string {\r\n return window.sessionStorage.getItem(payPalOrderIdKey);\r\n }\r\n\r\n public setPayPalOrderId(payPalOrderIdValue: string): void {\r\n window.sessionStorage.setItem(payPalOrderIdKey, payPalOrderIdValue);\r\n }\r\n\r\n public clearPayPalOrderId(): void {\r\n return window.sessionStorage.removeItem(payPalOrderIdKey);\r\n }\r\n\r\n public getAllowAnalyticsCookies(): boolean {\r\n\r\n const cookieValue = window.localStorage.getItem(allowAnalyticsCookiesKey);\r\n\r\n if (\"0\" === cookieValue)\r\n {\r\n return false;\r\n }\r\n else if (\"1\" == cookieValue)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n public setAllowAnalyticsCookies(newValue: boolean): void {\r\n window.localStorage.setItem(allowAnalyticsCookiesKey, newValue ? \"1\" : \"0\");\r\n }\r\n\r\n public clearAllowAnalyticsCookies(): void {\r\n return window.localStorage.removeItem(allowAnalyticsCookiesKey);\r\n }\r\n\r\n public getCookiePreferencesSaved(): boolean {\r\n return \"1\" === window.localStorage.getItem(cookiePreferencesSavedKey);\r\n }\r\n\r\n public setCookiePreferencesSaved(newValue: boolean): void {\r\n window.localStorage.setItem(cookiePreferencesSavedKey, newValue ? \"1\" : \"0\");\r\n }\r\n\r\n public clearCookiePreferencesSaved(): void {\r\n return window.localStorage.removeItem(cookiePreferencesSavedKey);\r\n }\r\n}\r\n\r\n// Create and export singleton instance.\r\nconst storage = new Storage();\r\nexport default storage;","import GeneralConfigurationResponse from \"./webHostClient/configuration/generalConfigurationResponse\";\r\n\r\n/**\r\n * Global parameters object\r\n */\r\nclass Globals \r\n{\r\n public config: GeneralConfigurationResponse = null;\r\n}\r\n\r\n\r\n\r\n// Singleton instance\r\nconst instance = new Globals();\r\nexport default instance;","import BaseClient from \"../baseClient\";\r\nimport GeneralConfigurationResponse from \"./generalConfigurationResponse\";\r\nimport OsApiConfigurationResponse from \"./osApiConfigurationResponse\";\r\n\r\nexport default class ConfigurationClient extends BaseClient {\r\n\r\n public async getOsApiConfigurationAsync() : Promise {\r\n \r\n const recaptchaToken = await this.recaptchaChallengeAsync('configuration_os_api')\r\n\r\n const response = await this.makeRequestAsync({\r\n controller: 'configuration', \r\n action: 'os-api', \r\n method: 'get', \r\n queryParams: [\r\n { name: 'recaptchaToken', value : recaptchaToken }\r\n ], \r\n });\r\n return response as OsApiConfigurationResponse;\r\n }\r\n\r\n\r\n /**\r\n * Gets the general configuration from the server.\r\n * @returns The configuration response object.\r\n */\r\n public async getGeneralConfigurationAsync() : Promise {\r\n const response = await this.makeRequestAsync({controller: 'configuration', action: 'general', method: 'get'});\r\n return response as GeneralConfigurationResponse;\r\n }\r\n\r\n}\r\n"],"names":["AuthenticationClient","request","this","recaptchaChallengeAsync","recaptchaToken","makeRequestAsync","controller","action","method","body","response","BasePage","currentUser","ko","observable","links","requiresAuthentication","isWayleavesMapEnabled","configurationClient","getGeneralConfigurationAsync","config","preflightAsync","console","log","window","location","assign","homeHref","loadHeadAsync","loadAuthenticationAsync","loginHref","getRedirectingBackToCurrentPageLoginHref","wayleavesMapFeatureToggle","features","find","i","name","wayleavesMapFeatureName","enabled","loadContentAsync","defineCustomBindings","applyBindings","onLoadCompleteAsync","clearAllInProgressOrderData","clearAuthenticationToken","decodeURIComponent","RegExp","exec","search","replace","clearInProgressOrderToken","clearPayPalOrderId","clearStartOrderLocationQueryText","clearStartOrderMapBounds","clearStartOrderSiteGeometry","push","Date","getTime","event","gtmScriptElement","document","createElement","async","src","gtmAuth","gtmPreview","firstScriptElement","getElementsByTagName","parentNode","insertBefore","headElement","initialiseGooleTagManager","recaptchaScriptElement","reCaptchaClientScriptUrl","reCaptchaSiteKey","Promise","resolve","reject","addEventListener","onerror","error","appendChild","n","f","t","y","x","z","_its","queue","arguments","version","err","authenticationClient","tokenInfoRequest","orderToken","getInProgressOrderToken","getTokenInfo","tokenInfoResponse","currentUserEmail","currentUserName","email","setInProgressOrderToken","bindingHandlers","bindPopover","init","element","_valueAccessor","_allBindings","_viewModel","_bindingContext","$","popover","fadeVisible","valueAccessor","value","toggle","unwrap","update","fadeIn","hide","Links","pageToPath","pages","home","errorHref","logInHref","logIn","accessibilityPolicyHref","privacyNoticeHref","modernSlaveryTraffickingStatementHref","statutoryRegulatoryDisclosuresHref","integrityHref","reportingLineHref","disclaimerHref","aboutUsHref","aboutUs","aboutUsBestPracticeHref","aboutUsMeetTheTeamHref","aboutUsOurservicesHref","whatWeOfferHref","whatWeOffer","productsHref","products","wayleavesMapHref","wayleavesMap","productsUsrHref","productsUsmHref","productsUssHref","whatWeOfferDiscoveryHref","whatWeOfferUtilitySearchReportHref","whatWeOfferUtilitySearchMapHref","whatWeOfferUtilitySearchSummaryHref","whatWeOfferWayleavesReportHref","whatWeOfferFeasibilityHref","whatWeOfferDiversionaryWorksBudgetHref","whatWeOfferConstraintsAnalysisHref","whatWeOfferCapacityAnalysisHref","whatWeOfferNewConnectionsBudgetHref","whatWeOfferProcurementHref","whatWeOfferDiversionaryWorksDetailedHref","whatWeOfferNewConnectionsFirmHref","whatWeOfferCoordinationHref","whatWeOfferDiversionaryWorksCoordinationHref","whatWeOfferDisconnectionsHref","whatWeOfferNewconnectionsCoordinationHref","pricingHref","pricing","utilitySearchReportHash","utilitySearchMapHash","utilitySearchSummaryHash","pricingUtilitySearchReportHref","pricingUtilitySearchMapHref","pricingUtilitySearchSummaryHref","caseStudiesHref","caseStudies","selectAreaHref","selectArea","selectOptionsHref","selectOptions","contactAndHelpHref","contactAndHelp","contactAndHelpEnquiryHref","orderDetailsHref","orderDetails","viewEstimateHref","viewEstimate","checkoutHref","checkout","confirmationHref","confirmation","addProductsHref","addProducts","myOrdersHref","myOrders","orderIdQueryStringKey","actionQueryStringKey","actionQueryStringValueRegister","actionQueryStringValueLogin","returnUrlQueryStringKey","filterQueryStringKey","filterQueryStringValueAll","filterQueryStringValueInProgress","filterQueryStringValueIssued","filterQueryStringValueExpired","filterQueryStringValueCancelled","filterQueryStringValueQuote","filterQueryStringValueEmailToken","hasPlacedOrderRegisteredForInvoicing","hasCompletedInlineRegistrationQueryStringKey","queryStringTrueValue","documentIdQueryStringKey","myDocumentsHref","myDocuments","myDocumentsDetailsHref","myDocumentDetails","myNotificationsHref","myNotifications","myAccountHref","myAccount","primaryMenuItems","pageToNavItem","secondaryMenuItems","currentUrl","URL","href","getLoginHref","pathname","hash","redirectUrl","fullLoginHref","sep","returnUrlEncoded","encodeURIComponent","page","concat","directoryParts","htmlName","join","path","title","pathOrCallback","isActive","BaseClient","requestInfo","requestInit","headers","authenticationToken","getAuthenticationToken","JSON","stringify","requestUrl","queryParams","query","map","p","fetch","contentObj","contentMessage","responseContentType","get","split","trim","json","text","status","statusText","content","grecaptcha","ready","execute","then","token","module","exports","description","pageType","paymentComplete","paymentCancelled","utilitySearchReportLandingPage","utilitySearchMapLandingPage","authenticationTokenKey","startOrderLocationQueryTextKey","inProgressOrderTokenKey","startOrderMapBoundsKey","startOrderSiteGeometryKey","cookiePreferencesSavedKey","allowAnalyticsCookiesKey","payPalOrderIdKey","storage","contactId","localStorage","setItem","authenticationTokenValue","sessionStorage","getItem","persist","removeItem","startOrderLocationQueryTextValue","startOrderMapBoundsValue","startOrderSiteGeometryValue","inProgressOrderTokenValue","payPalOrderIdValue","cookieValue","newValue","instance","ConfigurationClient"],"sourceRoot":""}