'use strict';
import '../../shared/debug-init';
/** Some small polyfills we want always. */
import 'url-search-params-polyfill';
import 'nodelist-foreach-polyfill';
/** Schedule and execute our site modules one at a time.
*
* - An exception thrown in the execution of a single module
* will not prevent another module from executing.
*
* TODO: Lowercase the names of imported functions, for consistency and best practice
*/
import JsCookiesGF from '../../shared/site/config/js-cookies-gf';
import GoogleTagManager from '../../shared/site/marketing/google-tag-manager';
import Bing from './marketing/bing';
import GoogleOptimizeHide from './marketing/google-optimize-hide';
import Trustpilot from './marketing/truspilot';
import LocaleDefault from './behavior/locale-default';
import LocaleRedirect from './behavior/locale-redirect';
import SearchAds from './session/search-ads';
import MarketingCampaign from './session/marketing-campaign';
import ReferralPlatform from './session/referral-platform';
import LandingPage from './session/landing-page';
import CJ from './session/cj'; // eslint-disable-line id-length
import HasOffers from './session/has-offers';
import ReferringSite from './session/referring-site';
import SentryErrorReporting from './logging/sentry-error-reporting';
import IpBanner from './visual/ip';
import CountDown from './visual/countdown';
import Popup from './visual/popup';
import IEsupportPopup from './visual/ie-support-popup';
import { runModules } from '../../shared/run-modules';
/** The list of modules in order of execution */
const modules = [
/* Logging modules */
SentryErrorReporting,
/* Config */
JsCookiesGF,
/* Behavior Modules */
LocaleDefault, // Step 1: This may set our locale
LocaleRedirect, // Step 2: This may redirect based on our locale
/* Marketing Analytics, Tagging, etc. */
Bing,
GoogleOptimizeHide,
GoogleTagManager,
Trustpilot,
// NOTE: SearchAds must come before LandingPage because SearchAds will
// strip the `__s` query params. In the future, I will work in a
// system to specify dependencies so that it's codified and not
// a note.
/* Session tracking modules */
SearchAds,
MarketingCampaign,
ReferralPlatform,
LandingPage,
CJ,
HasOffers,
ReferringSite,
/* Visual modifications */
IpBanner,
CountDown,
Popup,
IEsupportPopup,
];
runModules(modules);