From fd6f992786934fbb1fa0b84a7cd9ecb6d2b635f5 Mon Sep 17 00:00:00 2001 From: Graham Tackley Date: Tue, 23 Apr 2024 08:29:37 +0100 Subject: [PATCH 1/6] refactor: move images to src/assets/images (#1168) Rather than being dumped in the root directory, which is unusual. --- .../images/Subdomains_Rewards_Ads_Default.png | Bin .../assets/images/ad-benefits.svg | 0 .../assets/images/all_sizes_frame.svg | 0 .../assets/images/basic-attention-token.svg | 0 .../assets/images/brave-icon-release-color.svg | 0 .../assets/images/brave_logo_icon.png | Bin curtains.png => src/assets/images/curtains.png | Bin .../assets/images/darker-gradient.svg | 0 favicon.png => src/assets/images/favicon.png | Bin images.svg => src/assets/images/images.svg | 0 logo.svg => src/assets/images/logo.svg | 0 microwave.png => src/assets/images/microwave.png | Bin .../assets/images/news-mobile.png | Bin newsfeed.png => src/assets/images/newsfeed.png | Bin .../assets/images/notification.png | Bin .../assets/images/powerful_format_frame.svg | 0 .../assets/images/privacy_focused_frame.svg | 0 .../assets/images/search-preview.png | Bin tswift.png => src/assets/images/tswift.png | Bin src/auth/registration/AccountChoice.tsx | 2 +- src/auth/registration/AdvertiserRegistered.tsx | 2 +- src/auth/registration/RegistrationContainer.tsx | 2 +- src/auth/views/LandingPage.tsx | 2 +- src/auth/views/MobileAdsBenefits.tsx | 6 +++--- .../BasicAttentionTokenLandingPage.tsx | 6 +++--- src/components/AppBar/LandingPageAppBar.tsx | 2 +- src/components/Background/Background.tsx | 2 +- src/components/Creatives/NotificationPreview.tsx | 2 +- src/components/Navigation/Navbar.tsx | 2 +- 29 files changed, 14 insertions(+), 14 deletions(-) rename Subdomains_Rewards_Ads_Default.png => src/assets/images/Subdomains_Rewards_Ads_Default.png (100%) rename ad-benefits.svg => src/assets/images/ad-benefits.svg (100%) rename all_sizes_frame.svg => src/assets/images/all_sizes_frame.svg (100%) rename basic-attention-token.svg => src/assets/images/basic-attention-token.svg (100%) rename brave-icon-release-color.svg => src/assets/images/brave-icon-release-color.svg (100%) rename brave_logo_icon.png => src/assets/images/brave_logo_icon.png (100%) rename curtains.png => src/assets/images/curtains.png (100%) rename darker-gradient.svg => src/assets/images/darker-gradient.svg (100%) rename favicon.png => src/assets/images/favicon.png (100%) rename images.svg => src/assets/images/images.svg (100%) rename logo.svg => src/assets/images/logo.svg (100%) rename microwave.png => src/assets/images/microwave.png (100%) rename news-mobile.png => src/assets/images/news-mobile.png (100%) rename newsfeed.png => src/assets/images/newsfeed.png (100%) rename notification.png => src/assets/images/notification.png (100%) rename powerful_format_frame.svg => src/assets/images/powerful_format_frame.svg (100%) rename privacy_focused_frame.svg => src/assets/images/privacy_focused_frame.svg (100%) rename search-preview.png => src/assets/images/search-preview.png (100%) rename tswift.png => src/assets/images/tswift.png (100%) diff --git a/Subdomains_Rewards_Ads_Default.png b/src/assets/images/Subdomains_Rewards_Ads_Default.png similarity index 100% rename from Subdomains_Rewards_Ads_Default.png rename to src/assets/images/Subdomains_Rewards_Ads_Default.png diff --git a/ad-benefits.svg b/src/assets/images/ad-benefits.svg similarity index 100% rename from ad-benefits.svg rename to src/assets/images/ad-benefits.svg diff --git a/all_sizes_frame.svg b/src/assets/images/all_sizes_frame.svg similarity index 100% rename from all_sizes_frame.svg rename to src/assets/images/all_sizes_frame.svg diff --git a/basic-attention-token.svg b/src/assets/images/basic-attention-token.svg similarity index 100% rename from basic-attention-token.svg rename to src/assets/images/basic-attention-token.svg diff --git a/brave-icon-release-color.svg b/src/assets/images/brave-icon-release-color.svg similarity index 100% rename from brave-icon-release-color.svg rename to src/assets/images/brave-icon-release-color.svg diff --git a/brave_logo_icon.png b/src/assets/images/brave_logo_icon.png similarity index 100% rename from brave_logo_icon.png rename to src/assets/images/brave_logo_icon.png diff --git a/curtains.png b/src/assets/images/curtains.png similarity index 100% rename from curtains.png rename to src/assets/images/curtains.png diff --git a/darker-gradient.svg b/src/assets/images/darker-gradient.svg similarity index 100% rename from darker-gradient.svg rename to src/assets/images/darker-gradient.svg diff --git a/favicon.png b/src/assets/images/favicon.png similarity index 100% rename from favicon.png rename to src/assets/images/favicon.png diff --git a/images.svg b/src/assets/images/images.svg similarity index 100% rename from images.svg rename to src/assets/images/images.svg diff --git a/logo.svg b/src/assets/images/logo.svg similarity index 100% rename from logo.svg rename to src/assets/images/logo.svg diff --git a/microwave.png b/src/assets/images/microwave.png similarity index 100% rename from microwave.png rename to src/assets/images/microwave.png diff --git a/news-mobile.png b/src/assets/images/news-mobile.png similarity index 100% rename from news-mobile.png rename to src/assets/images/news-mobile.png diff --git a/newsfeed.png b/src/assets/images/newsfeed.png similarity index 100% rename from newsfeed.png rename to src/assets/images/newsfeed.png diff --git a/notification.png b/src/assets/images/notification.png similarity index 100% rename from notification.png rename to src/assets/images/notification.png diff --git a/powerful_format_frame.svg b/src/assets/images/powerful_format_frame.svg similarity index 100% rename from powerful_format_frame.svg rename to src/assets/images/powerful_format_frame.svg diff --git a/privacy_focused_frame.svg b/src/assets/images/privacy_focused_frame.svg similarity index 100% rename from privacy_focused_frame.svg rename to src/assets/images/privacy_focused_frame.svg diff --git a/search-preview.png b/src/assets/images/search-preview.png similarity index 100% rename from search-preview.png rename to src/assets/images/search-preview.png diff --git a/tswift.png b/src/assets/images/tswift.png similarity index 100% rename from tswift.png rename to src/assets/images/tswift.png diff --git a/src/auth/registration/AccountChoice.tsx b/src/auth/registration/AccountChoice.tsx index 4d556e83..6bb593c9 100644 --- a/src/auth/registration/AccountChoice.tsx +++ b/src/auth/registration/AccountChoice.tsx @@ -12,7 +12,7 @@ import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; import { useState } from "react"; -import logo from "../../../brave-icon-release-color.svg"; +import logo from "assets/images/brave-icon-release-color.svg"; import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; import { useIsMobile } from "hooks/useIsMobile"; import { AuthContainer } from "auth/views/components/AuthContainer"; diff --git a/src/auth/registration/AdvertiserRegistered.tsx b/src/auth/registration/AdvertiserRegistered.tsx index d08e5ad6..feb1efe0 100644 --- a/src/auth/registration/AdvertiserRegistered.tsx +++ b/src/auth/registration/AdvertiserRegistered.tsx @@ -2,7 +2,7 @@ import { Link, Stack, Typography } from "@mui/material"; import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; import { AuthContainer } from "auth/views/components/AuthContainer"; -import logo from "../../../brave-icon-release-color.svg"; +import logo from "assets/images/brave-icon-release-color.svg"; export function AdvertiserRegistered() { useTrackMatomoPageView({ documentTitle: "Advertiser Registration Complete" }); diff --git a/src/auth/registration/RegistrationContainer.tsx b/src/auth/registration/RegistrationContainer.tsx index c7661bc7..0c4a1029 100644 --- a/src/auth/registration/RegistrationContainer.tsx +++ b/src/auth/registration/RegistrationContainer.tsx @@ -1,6 +1,6 @@ import { PropsWithChildren } from "react"; import { PaddedCardContainer } from "components/Card/PaddedCardContainer"; -import logo from "../../../brave-icon-release-color.svg"; +import logo from "assets/images/brave-icon-release-color.svg"; import Typography from "@mui/material/Typography"; import { Trans } from "@lingui/macro"; import { PrivacyPolicy } from "basic-attention-token/PrivacyPolicy"; diff --git a/src/auth/views/LandingPage.tsx b/src/auth/views/LandingPage.tsx index 83b8914c..833f4deb 100644 --- a/src/auth/views/LandingPage.tsx +++ b/src/auth/views/LandingPage.tsx @@ -1,7 +1,7 @@ import { Background } from "components/Background/Background"; import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; import { Box, Button, Link, Stack, Toolbar, Typography } from "@mui/material"; -import benefits from "../../../ad-benefits.svg"; +import benefits from "assets/images/ad-benefits.svg"; import { useIsAuthenticated } from "auth/hooks/queries/useIsAuthenticated"; import { Link as RouterLink } from "react-router-dom"; import { useIsMobile } from "hooks/useIsMobile"; diff --git a/src/auth/views/MobileAdsBenefits.tsx b/src/auth/views/MobileAdsBenefits.tsx index f32a7505..9689c182 100644 --- a/src/auth/views/MobileAdsBenefits.tsx +++ b/src/auth/views/MobileAdsBenefits.tsx @@ -1,8 +1,8 @@ import { Card, CardMedia, List, ListItem, Typography } from "@mui/material"; -import allSizes from "../../../all_sizes_frame.svg"; -import powerfulFormats from "../../../powerful_format_frame.svg"; -import privacyFocused from "../../../privacy_focused_frame.svg"; +import allSizes from "assets/images/all_sizes_frame.svg"; +import powerfulFormats from "assets/images/powerful_format_frame.svg"; +import privacyFocused from "assets/images/privacy_focused_frame.svg"; import { msg } from "@lingui/macro"; import { MessageDescriptor } from "@lingui/core"; import { Trans } from "@lingui/react"; diff --git a/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx b/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx index bb1edf47..70560ca9 100644 --- a/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx +++ b/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx @@ -7,9 +7,9 @@ import { Background } from "components/Background/Background"; import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; import { Box, Button, Link, Stack, Toolbar, Typography } from "@mui/material"; import { Link as RouterLink } from "react-router-dom"; -import notification from "../../newsfeed.png"; -import mobileAd from "../../news-mobile.png"; -import bat from "../../basic-attention-token.svg"; +import notification from "assets/images/newsfeed.png"; +import mobileAd from "assets/images/news-mobile.png"; +import bat from "assets/images/basic-attention-token.svg"; import { Trans } from "@lingui/macro"; export function BasicAttentionTokenLandingPage() { diff --git a/src/components/AppBar/LandingPageAppBar.tsx b/src/components/AppBar/LandingPageAppBar.tsx index fd1409b5..2dffffda 100644 --- a/src/components/AppBar/LandingPageAppBar.tsx +++ b/src/components/AppBar/LandingPageAppBar.tsx @@ -7,7 +7,7 @@ import { Toolbar, Typography, } from "@mui/material"; -import ads from "../../../logo.svg"; +import ads from "assets/images/logo.svg"; import { Link as RouterLink, useRouteMatch } from "react-router-dom"; import { useIsAuthenticated } from "auth/hooks/queries/useIsAuthenticated"; import { useSignOut } from "auth/hooks/mutations/useSignOut"; diff --git a/src/components/Background/Background.tsx b/src/components/Background/Background.tsx index cec4ce2f..2939c94e 100644 --- a/src/components/Background/Background.tsx +++ b/src/components/Background/Background.tsx @@ -1,5 +1,5 @@ import { PropsWithChildren } from "react"; -import gradient from "../../../darker-gradient.svg"; +import gradient from "assets/images/darker-gradient.svg"; import { Container } from "@mui/material"; import { useIsMobile } from "hooks/useIsMobile"; diff --git a/src/components/Creatives/NotificationPreview.tsx b/src/components/Creatives/NotificationPreview.tsx index 87dc1212..1595cd86 100644 --- a/src/components/Creatives/NotificationPreview.tsx +++ b/src/components/Creatives/NotificationPreview.tsx @@ -1,5 +1,5 @@ import { Box, Paper, Stack, Typography } from "@mui/material"; -import logo from "../../../brave_logo_icon.png"; +import logo from "assets/images/brave_logo_icon.png"; import { useField, useFormikContext } from "formik"; import { CreativeInput } from "graphql/types"; import { Trans } from "@lingui/macro"; diff --git a/src/components/Navigation/Navbar.tsx b/src/components/Navigation/Navbar.tsx index e3a94290..331ba3ba 100644 --- a/src/components/Navigation/Navbar.tsx +++ b/src/components/Navigation/Navbar.tsx @@ -1,7 +1,7 @@ import { AppBar, Button, Divider, Stack, Toolbar } from "@mui/material"; import { DraftMenu } from "components/Navigation/DraftMenu"; -import ads from "../../../logo.svg"; +import ads from "assets/images/logo.svg"; import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; import { useSignOut } from "auth/hooks/mutations/useSignOut"; import { NewCampaignButton } from "components/Navigation/NewCampaignButton"; From 7fe55774a1c3d7e979b0c61e0207de08d6e27eab Mon Sep 17 00:00:00 2001 From: Graham Tackley Date: Wed, 24 Apr 2024 11:14:45 +0100 Subject: [PATCH 2/6] refactor: switch to using `@/` for in-app imports (#1170) Use `@/name` for app imports, as opposed to just `name` as previously. This is the modern convention for web apps, and makes clearer when imports are coming from the application as opposed to npm modules. There's a few deep `../../` style imports remaining - these get worse if I move them to `@/`-style imports, and I think are better left until we move the files around a bit more in a subsequent PR. --- src/App.tsx | 22 ++++++------ src/ErrorBoundary.tsx | 2 +- src/auth/components/AdvertiserAddress.tsx | 6 ++-- src/auth/components/AdvertiserAgreed.tsx | 4 +-- src/auth/components/AdvertiserDetailsForm.tsx | 22 ++++++------ src/auth/components/types.ts | 2 +- src/auth/context/auth.hook.ts | 2 +- src/auth/context/auth.interface.ts | 2 +- src/auth/hooks/mutations/useGetLink.ts | 2 +- src/auth/hooks/mutations/useRegister.ts | 8 ++--- src/auth/hooks/mutations/useSignIn.ts | 4 +-- src/auth/hooks/mutations/useSignOut.ts | 4 +-- src/auth/hooks/queries/useAdvertiser.ts | 6 ++-- src/auth/hooks/queries/useAuthorize.ts | 4 +-- src/auth/hooks/queries/useIsAuthenticated.ts | 2 +- src/auth/hooks/queries/useUser.ts | 2 +- src/auth/index.tsx | 4 +-- src/auth/lib/index.ts | 10 +++--- src/auth/registration/AccountChoice.tsx | 8 ++--- .../registration/AdvertiserRegistered.tsx | 6 ++-- .../registration/BraveAdsContactFrame.tsx | 6 ++-- src/auth/registration/BrowserForm.tsx | 6 ++-- src/auth/registration/BrowserRegister.tsx | 16 ++++----- src/auth/registration/MarketingChannel.tsx | 2 +- src/auth/registration/MarketingOptIn.tsx | 2 +- src/auth/registration/Register.tsx | 4 +-- .../registration/RegistrationContainer.tsx | 12 +++---- src/auth/registration/SearchForm.tsx | 8 ++--- src/auth/registration/SearchRegister.tsx | 14 ++++---- src/auth/views/AuthVerify.tsx | 6 ++-- src/auth/views/LandingPage.tsx | 16 ++++----- src/auth/views/Login.tsx | 6 ++-- src/auth/views/MagicLink.tsx | 6 ++-- src/auth/views/MobileAdsBenefits.tsx | 6 ++-- src/auth/views/components/AuthContainer.tsx | 6 ++-- .../BasicAttentionTokenLandingPage.tsx | 14 ++++---- src/checkout/hooks/useCreatePaymentSession.ts | 4 +-- .../hooks/useValidatePaymentSession.ts | 2 +- src/checkout/lib/index.ts | 2 +- src/components/AppBar/LandingPageAppBar.tsx | 10 +++--- src/components/Assets/AdvertiserAssets.tsx | 18 +++++----- src/components/Assets/ImageAutocomplete.tsx | 6 ++-- src/components/Assets/ImagePreview.tsx | 4 +-- src/components/Assets/UploadImage.tsx | 6 ++-- src/components/Assets/hooks/useUploadFile.ts | 10 +++--- src/components/Background/Background.tsx | 4 +-- src/components/Button/LearnMoreButton.tsx | 2 +- src/components/Button/SubmitPanel.tsx | 2 +- .../Campaigns/CampaignAgeFilter.tsx | 2 +- .../Campaigns/CampaignDateRange.tsx | 2 +- src/components/Campaigns/CloneCampaign.tsx | 14 ++++---- src/components/Campaigns/Status.tsx | 2 +- .../Conversion/ConversionDisplay.tsx | 4 +-- .../Conversion/ConversionFields.tsx | 2 +- src/components/Country/CountryPicker.tsx | 2 +- src/components/Country/useCountries.ts | 2 +- .../Creatives/CreateCreativeButton.tsx | 8 ++--- .../Creatives/CreativeCampaigns.tsx | 8 ++--- src/components/Creatives/CreativeForm.tsx | 34 +++++++++---------- src/components/Creatives/CreativeList.tsx | 22 ++++++------ src/components/Creatives/CreativeSelect.tsx | 14 ++++---- .../Creatives/CreativeSpecificPreview.tsx | 12 +++---- .../Creatives/CreativeStatusSwitch.tsx | 8 ++--- src/components/Creatives/CreativeType.tsx | 4 +-- src/components/Creatives/NewsPreview.tsx | 6 ++-- .../Creatives/NotificationPreview.tsx | 4 +-- .../Creatives/SelectCreativeHeader.tsx | 4 +-- .../Creatives/hooks/useGetCreativeDetails.tsx | 6 ++-- .../Creatives/hooks/useSubmitCreative.tsx | 10 +++--- src/components/Datagrid/renderers.tsx | 18 +++++----- src/components/Drawer/MiniSideBar.tsx | 8 ++--- src/components/Drawer/SupportMenu.tsx | 6 ++-- src/components/Error/ErrorDetail.tsx | 2 +- src/components/Location/LocationPicker.tsx | 4 +-- src/components/Navigation/DraftMenu.tsx | 2 +- src/components/Navigation/Navbar.tsx | 14 ++++---- .../Navigation/NewCampaignButton.tsx | 2 +- .../Navigation/NewCreativeButton.tsx | 2 +- src/components/Navigation/NewImageButton.tsx | 2 +- src/components/Route/ProtectedRoute.tsx | 4 +-- src/components/Segment/SegmentPicker.tsx | 6 ++-- src/components/Steps/ActionButtons.tsx | 4 +-- src/components/Steps/StepDrawer.tsx | 4 +-- src/components/Switch/OnOff.tsx | 2 +- src/components/Url/use-url-validation.ts | 2 +- src/form/FormikHelpers.tsx | 2 +- src/form/PersistFormValues.tsx | 4 +-- src/form/PersistRegistrationValues.tsx | 2 +- src/form/fragmentUtil.ts | 6 ++-- src/index.tsx | 10 +++--- src/state/context.ts | 2 +- src/theme.tsx | 2 +- src/user/User.tsx | 22 ++++++------ src/user/adSet/AdSetList.tsx | 20 +++++------ src/user/ads/AdList.tsx | 14 ++++---- src/user/ads/AdsExistingAd.tsx | 18 +++++----- src/user/ads/InlineContentAd.tsx | 14 ++++---- src/user/ads/NewAd.tsx | 8 ++--- src/user/ads/NotificationAd.tsx | 10 +++--- src/user/ads/ShowAdsButton.tsx | 2 +- .../components/BaseBarChart.tsx | 2 +- .../components/BasePieChart.tsx | 2 +- .../components/EngagementHeader.tsx | 4 +-- .../analyticsOverview/components/LiveFeed.tsx | 2 +- .../components/MetricFilter.tsx | 8 ++--- .../components/ReportUtils.tsx | 8 ++--- .../hooks/usePersistMetricFilter.ts | 2 +- .../analyticsOverview/lib/ads.library.ts | 6 ++-- .../analyticsOverview/lib/os.library.ts | 2 +- .../analyticsOverview/lib/overview.library.ts | 4 +-- .../reports/campaign/EngagementsOverview.tsx | 8 ++--- .../reports/os/OsOverview.tsx | 2 +- .../reports/os/components/OsBarChart.tsx | 5 ++- .../reports/os/components/OsPieChart.tsx | 4 +-- src/user/analytics/renderers/index.tsx | 10 +++--- src/user/analytics/search/AdSetBreakdown.tsx | 12 +++---- src/user/analytics/search/MetricSelector.tsx | 2 +- src/user/analytics/search/MetricsList.tsx | 4 +-- src/user/analytics/search/OverTimeGraph.tsx | 4 +-- src/user/analytics/search/RenderMetric.tsx | 2 +- src/user/analytics/search/metrics.ts | 4 +-- src/user/analytics/search/series.test.ts | 2 +- src/user/analytics/search/series.ts | 2 +- src/user/campaignList/CampaignList.tsx | 24 ++++++------- src/user/campaignList/EditButton.tsx | 4 +-- src/user/campaignList/MetricValue.tsx | 2 +- src/user/hooks/useAdvertiserCreatives.ts | 4 +-- src/user/hooks/useAdvertiserWithPrices.tsx | 10 +++--- src/user/hooks/useGenerateApiKey.tsx | 4 +-- src/user/library/index.test.ts | 14 +++++--- src/user/library/index.ts | 10 +++--- src/user/reporting/ReportMenu.tsx | 2 +- src/user/reporting/csv.library.tsx | 4 +-- src/user/settings/NewKeyPairModal.tsx | 8 ++--- src/user/settings/Settings.tsx | 14 ++++---- src/user/settings/UserApiKey.tsx | 6 ++-- src/user/settings/UserForm.tsx | 16 ++++----- src/user/views/adsManager/types/index.ts | 8 ++--- .../advanced/components/adSet/AdSetFields.tsx | 22 ++++++------ .../advanced/components/adSet/NewAdSet.tsx | 6 ++-- .../components/adSet/fields/AdSetAds.tsx | 24 ++++++------- .../adSet/fields/ConversionField.tsx | 6 ++-- .../components/adSet/fields/PickerFields.tsx | 12 +++---- .../components/campaign/CampaignSettings.tsx | 24 ++++++------- .../components/BillingModelSelect.tsx | 16 ++++----- .../campaign/components/CustomPriceSelect.tsx | 6 ++-- .../campaign/fields/BudgetField.tsx | 4 +-- .../campaign/fields/FormatField.tsx | 14 ++++---- .../campaign/fields/LocationField.tsx | 4 +-- .../campaign/fields/PaymentMethodField.tsx | 10 +++--- .../completionForm/CompletionForm.tsx | 4 +-- .../advanced/components/form/EditCampaign.tsx | 18 +++++----- .../advanced/components/form/NewCampaign.tsx | 24 ++++++------- .../components/form/components/BaseForm.tsx | 14 ++++---- .../form/components/PaymentButton.tsx | 6 ++-- .../advanced/components/review/Review.tsx | 4 +-- .../review/components/AdSetReview.tsx | 10 +++--- .../review/components/CampaignReview.tsx | 6 ++-- .../review/components/ReviewContainer.tsx | 2 +- src/user/views/user/AdDetailTable.tsx | 8 ++--- src/user/views/user/CampaignDetails.tsx | 12 +++---- .../views/user/CampaignReportViewSelector.tsx | 8 ++--- src/user/views/user/CampaignView.tsx | 18 +++++----- src/user/views/user/Profile.tsx | 8 ++--- .../user/reports/ConsultAccountManager.tsx | 2 +- .../reports/OriginalCampaignReportView.tsx | 14 ++++---- .../user/reports/SearchCampaignReportView.tsx | 26 +++++++------- src/util/campaign.ts | 2 +- src/util/displayState.ts | 2 +- src/validation/CampaignSchema.test.ts | 4 +-- src/validation/CampaignSchema.tsx | 14 ++++---- src/validation/CreativeSchema.tsx | 2 +- src/validation/RegistrationSchema.test.ts | 4 +-- src/validation/RegistrationSchema.tsx | 2 +- tsconfig.json | 7 ++-- 175 files changed, 659 insertions(+), 651 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 06c608ea..cc5c14b4 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,23 +2,23 @@ import { useState } from "react"; import { Redirect, Route, Switch } from "react-router-dom"; -import { DraftContext, getAllDrafts } from "state/context"; -import { User } from "user/User"; +import { DraftContext, getAllDrafts } from "@/state/context"; +import { User } from "@/user/User"; import { CssBaseline, StyledEngineProvider, ThemeProvider, } from "@mui/material"; -import { theme } from "theme"; -import { CampaignForm } from "user/views/adsManager/types"; -import { AuthVerify } from "auth/views/AuthVerify"; -import { Login } from "auth/views/Login"; -import { MagicLink } from "auth/views/MagicLink"; -import { Register } from "auth/registration/Register"; -import { LandingPage } from "auth/views/LandingPage"; -import { BraveAdsContactFrame } from "auth/registration/BraveAdsContactFrame"; +import { theme } from "./theme"; +import { CampaignForm } from "@/user/views/adsManager/types"; +import { AuthVerify } from "@/auth/views/AuthVerify"; +import { Login } from "@/auth/views/Login"; +import { MagicLink } from "@/auth/views/MagicLink"; +import { Register } from "@/auth/registration/Register"; +import { LandingPage } from "@/auth/views/LandingPage"; +import { BraveAdsContactFrame } from "@/auth/registration/BraveAdsContactFrame"; import { useMatomo } from "@jonkoops/matomo-tracker-react"; -import { BasicAttentionTokenLandingPage } from "basic-attention-token/BasicAttentionTokenLandingPage"; +import { BasicAttentionTokenLandingPage } from "@/basic-attention-token/BasicAttentionTokenLandingPage"; export function App() { const { enableLinkTracking } = useMatomo(); diff --git a/src/ErrorBoundary.tsx b/src/ErrorBoundary.tsx index 479e01b3..ea272a91 100644 --- a/src/ErrorBoundary.tsx +++ b/src/ErrorBoundary.tsx @@ -1,5 +1,5 @@ import { Component, PropsWithChildren } from "react"; -import { ErrorDetail } from "components/Error/ErrorDetail"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; interface State { error: unknown | null; diff --git a/src/auth/components/AdvertiserAddress.tsx b/src/auth/components/AdvertiserAddress.tsx index 7bf27a24..be54c63e 100644 --- a/src/auth/components/AdvertiserAddress.tsx +++ b/src/auth/components/AdvertiserAddress.tsx @@ -1,8 +1,8 @@ import { Box, Stack } from "@mui/material"; -import { FormikTextField } from "form/FormikHelpers"; -import { CountryPicker } from "components/Country/CountryPicker"; +import { FormikTextField } from "@/form/FormikHelpers"; +import { CountryPicker } from "@/components/Country/CountryPicker"; import { PropsWithChildren } from "react"; -import { AdvertiserBillingAddressFragment } from "graphql/advertiser.generated"; +import { AdvertiserBillingAddressFragment } from "@/graphql/advertiser.generated"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/auth/components/AdvertiserAgreed.tsx b/src/auth/components/AdvertiserAgreed.tsx index be60e679..28d0d355 100644 --- a/src/auth/components/AdvertiserAgreed.tsx +++ b/src/auth/components/AdvertiserAgreed.tsx @@ -1,8 +1,8 @@ import { Box, Link, Stack } from "@mui/material"; -import { FormikCheckbox } from "form/FormikHelpers"; +import { FormikCheckbox } from "@/form/FormikHelpers"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; export function AdvertiserAgreed(props: { requiresPaymentAgree: boolean }) { const { _ } = useLingui(); diff --git a/src/auth/components/AdvertiserDetailsForm.tsx b/src/auth/components/AdvertiserDetailsForm.tsx index 78054e99..0ae2c15d 100644 --- a/src/auth/components/AdvertiserDetailsForm.tsx +++ b/src/auth/components/AdvertiserDetailsForm.tsx @@ -1,22 +1,22 @@ import { Box, Card, Container, Skeleton } from "@mui/material"; import Typography from "@mui/material/Typography"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Form, Formik } from "formik"; -import { AdvertiserAddress } from "auth/components/AdvertiserAddress"; -import { useAuthContext } from "auth/context/auth.hook"; +import { AdvertiserAddress } from "@/auth/components/AdvertiserAddress"; +import { useAuthContext } from "@/auth/context/auth.hook"; import { useAdvertiserBillingAddressQuery, useUpdateAdvertiserMutation, -} from "graphql/advertiser.generated"; -import { getUser } from "auth/lib"; -import { AdvertiserForm, initialAdvertiserForm } from "auth/components/types"; +} from "@/graphql/advertiser.generated"; +import { getUser } from "@/auth/lib"; +import { AdvertiserForm, initialAdvertiserForm } from "@/auth/components/types"; import { useHistory } from "react-router-dom"; -import { PaymentType } from "graphql/types"; -import { AdvertiserAgreed } from "auth/components/AdvertiserAgreed"; -import { FormikSubmitButton } from "form/FormikButton"; -import { AdvertiserSchema } from "validation/AdvertiserSchema"; +import { PaymentType } from "@/graphql/types"; +import { AdvertiserAgreed } from "@/auth/components/AdvertiserAgreed"; +import { FormikSubmitButton } from "@/form/FormikButton"; +import { AdvertiserSchema } from "@/validation/AdvertiserSchema"; import { useState } from "react"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import _ from "lodash"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/auth/components/types.ts b/src/auth/components/types.ts index 7126a67e..5c8db00f 100644 --- a/src/auth/components/types.ts +++ b/src/auth/components/types.ts @@ -1,4 +1,4 @@ -import { AdvertiserBillingAddressFragment } from "graphql/advertiser.generated"; +import { AdvertiserBillingAddressFragment } from "@/graphql/advertiser.generated"; export type AdvertiserForm = { tracking: boolean; diff --git a/src/auth/context/auth.hook.ts b/src/auth/context/auth.hook.ts index a9e4bab6..94a5ca23 100644 --- a/src/auth/context/auth.hook.ts +++ b/src/auth/context/auth.hook.ts @@ -1,5 +1,5 @@ import { useContext } from "react"; -import { IAuthContext } from "auth/context/auth.state"; +import { IAuthContext } from "@/auth/context/auth.state"; export function useAuthContext() { return useContext(IAuthContext); diff --git a/src/auth/context/auth.interface.ts b/src/auth/context/auth.interface.ts index 01def0b6..cb52b02b 100644 --- a/src/auth/context/auth.interface.ts +++ b/src/auth/context/auth.interface.ts @@ -1,6 +1,6 @@ import { ReactNode } from "react"; import { ResponseUser } from "../lib"; -import { PaymentType } from "graphql/types"; +import { PaymentType } from "@/graphql/types"; export type IAdvertiser = { id: string; diff --git a/src/auth/hooks/mutations/useGetLink.ts b/src/auth/hooks/mutations/useGetLink.ts index 83057b60..3248b99e 100644 --- a/src/auth/hooks/mutations/useGetLink.ts +++ b/src/auth/hooks/mutations/useGetLink.ts @@ -1,5 +1,5 @@ import { useCallback, useState } from "react"; -import { getLink } from "auth/lib"; +import { getLink } from "@/auth/lib"; import { t } from "@lingui/macro"; interface Options { diff --git a/src/auth/hooks/mutations/useRegister.ts b/src/auth/hooks/mutations/useRegister.ts index 9e3b217d..c8223288 100644 --- a/src/auth/hooks/mutations/useRegister.ts +++ b/src/auth/hooks/mutations/useRegister.ts @@ -1,8 +1,8 @@ import { useCallback, useState } from "react"; -import { RegistrationForm } from "auth/registration/types"; -import { sendMarketingEmail, submitRegistration } from "auth/lib"; -import { clearRegistrationValues } from "form/PersistRegistrationValues"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { RegistrationForm } from "@/auth/registration/types"; +import { sendMarketingEmail, submitRegistration } from "@/auth/lib"; +import { clearRegistrationValues } from "@/form/PersistRegistrationValues"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { t } from "@lingui/macro"; import { useHistory } from "react-router-dom"; diff --git a/src/auth/hooks/mutations/useSignIn.ts b/src/auth/hooks/mutations/useSignIn.ts index cca2740d..f9d98707 100644 --- a/src/auth/hooks/mutations/useSignIn.ts +++ b/src/auth/hooks/mutations/useSignIn.ts @@ -1,6 +1,6 @@ import { useCallback, useState } from "react"; -import { useAuthContext } from "auth/context/auth.hook"; -import { getCredentials } from "auth/lib"; +import { useAuthContext } from "@/auth/context/auth.hook"; +import { getCredentials } from "@/auth/lib"; interface Options { onError?: (message: string) => void; diff --git a/src/auth/hooks/mutations/useSignOut.ts b/src/auth/hooks/mutations/useSignOut.ts index 792a588e..d5bb5b13 100644 --- a/src/auth/hooks/mutations/useSignOut.ts +++ b/src/auth/hooks/mutations/useSignOut.ts @@ -1,6 +1,6 @@ import { useCallback, useState } from "react"; -import { useAuthContext } from "auth/context/auth.hook"; -import { clearCredentials } from "auth/lib"; +import { useAuthContext } from "@/auth/context/auth.hook"; +import { clearCredentials } from "@/auth/lib"; interface Options { onSuccess?: () => void; diff --git a/src/auth/hooks/queries/useAdvertiser.ts b/src/auth/hooks/queries/useAdvertiser.ts index 83164060..990460b7 100644 --- a/src/auth/hooks/queries/useAdvertiser.ts +++ b/src/auth/hooks/queries/useAdvertiser.ts @@ -1,6 +1,6 @@ -import { useAuthContext } from "auth/context/auth.hook"; -import { IAdvertiser } from "auth/context/auth.interface"; -import { PaymentType } from "graphql/types"; +import { useAuthContext } from "@/auth/context/auth.hook"; +import { IAdvertiser } from "@/auth/context/auth.interface"; +import { PaymentType } from "@/graphql/types"; export function useAdvertiser(): { advertiser: IAdvertiser; diff --git a/src/auth/hooks/queries/useAuthorize.ts b/src/auth/hooks/queries/useAuthorize.ts index 3b2f1476..5739b414 100644 --- a/src/auth/hooks/queries/useAuthorize.ts +++ b/src/auth/hooks/queries/useAuthorize.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { useAuthContext } from "auth/context/auth.hook"; -import { authorize, ResponseUser } from "auth/lib"; +import { useAuthContext } from "@/auth/context/auth.hook"; +import { authorize, ResponseUser } from "@/auth/lib"; interface Options { variables: { diff --git a/src/auth/hooks/queries/useIsAuthenticated.ts b/src/auth/hooks/queries/useIsAuthenticated.ts index 5bad90fd..2aa1677c 100644 --- a/src/auth/hooks/queries/useIsAuthenticated.ts +++ b/src/auth/hooks/queries/useIsAuthenticated.ts @@ -1,4 +1,4 @@ -import { useAuthContext } from "auth/context/auth.hook"; +import { useAuthContext } from "@/auth/context/auth.hook"; export function useIsAuthenticated(): boolean | undefined { const { isInitialized, isAuthenticated } = useAuthContext(); diff --git a/src/auth/hooks/queries/useUser.ts b/src/auth/hooks/queries/useUser.ts index 0d06f479..61fa6025 100644 --- a/src/auth/hooks/queries/useUser.ts +++ b/src/auth/hooks/queries/useUser.ts @@ -1,4 +1,4 @@ -import { useAuthContext } from "auth/context/auth.hook"; +import { useAuthContext } from "@/auth/context/auth.hook"; type User = { userId?: string; diff --git a/src/auth/index.tsx b/src/auth/index.tsx index ca90789a..5327ebcd 100644 --- a/src/auth/index.tsx +++ b/src/auth/index.tsx @@ -3,8 +3,8 @@ import { IAdvertiser, IAuthProviderProps, IAuthState, -} from "auth/context/auth.interface"; -import { IAuthContext, initialState } from "auth/context/auth.state"; +} from "@/auth/context/auth.interface"; +import { IAuthContext, initialState } from "@/auth/context/auth.state"; import { getUser, ResponseUser } from "./lib"; import _ from "lodash"; import { setActiveAdvertiser } from "./util"; diff --git a/src/auth/lib/index.ts b/src/auth/lib/index.ts index 8ac34875..e5240bab 100644 --- a/src/auth/lib/index.ts +++ b/src/auth/lib/index.ts @@ -1,11 +1,11 @@ -import { UserFragment } from "graphql/user.generated"; -import { AdvertiserFragment } from "graphql/advertiser.generated"; -import { PaymentType } from "graphql/types"; +import { UserFragment } from "@/graphql/user.generated"; +import { AdvertiserFragment } from "@/graphql/advertiser.generated"; +import { PaymentType } from "@/graphql/types"; import { buildAdServerEndpoint, buildAdServerV2Endpoint, -} from "util/environment"; -import { RegistrationForm } from "auth/registration/types"; +} from "@/util/environment"; +import { RegistrationForm } from "@/auth/registration/types"; import { t } from "@lingui/macro"; export type Advertiser = Pick< diff --git a/src/auth/registration/AccountChoice.tsx b/src/auth/registration/AccountChoice.tsx index 6bb593c9..c695768c 100644 --- a/src/auth/registration/AccountChoice.tsx +++ b/src/auth/registration/AccountChoice.tsx @@ -12,10 +12,10 @@ import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; import { useState } from "react"; -import logo from "assets/images/brave-icon-release-color.svg"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; -import { useIsMobile } from "hooks/useIsMobile"; -import { AuthContainer } from "auth/views/components/AuthContainer"; +import logo from "@/assets/images/brave-icon-release-color.svg"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; +import { useIsMobile } from "@/hooks/useIsMobile"; +import { AuthContainer } from "@/auth/views/components/AuthContainer"; interface ChoiceOptions { title: MessageDescriptor; diff --git a/src/auth/registration/AdvertiserRegistered.tsx b/src/auth/registration/AdvertiserRegistered.tsx index feb1efe0..fc9d067b 100644 --- a/src/auth/registration/AdvertiserRegistered.tsx +++ b/src/auth/registration/AdvertiserRegistered.tsx @@ -1,8 +1,8 @@ import { Link, Stack, Typography } from "@mui/material"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; -import { AuthContainer } from "auth/views/components/AuthContainer"; -import logo from "assets/images/brave-icon-release-color.svg"; +import { AuthContainer } from "@/auth/views/components/AuthContainer"; +import logo from "@/assets/images/brave-icon-release-color.svg"; export function AdvertiserRegistered() { useTrackMatomoPageView({ documentTitle: "Advertiser Registration Complete" }); diff --git a/src/auth/registration/BraveAdsContactFrame.tsx b/src/auth/registration/BraveAdsContactFrame.tsx index d5c334e8..b3b39fc8 100644 --- a/src/auth/registration/BraveAdsContactFrame.tsx +++ b/src/auth/registration/BraveAdsContactFrame.tsx @@ -1,7 +1,7 @@ import { Box, Stack, Toolbar, Typography } from "@mui/material"; -import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; -import { Background } from "components/Background/Background"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { LandingPageAppBar } from "@/components/AppBar/LandingPageAppBar"; +import { Background } from "@/components/Background/Background"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; export function BraveAdsContactFrame() { diff --git a/src/auth/registration/BrowserForm.tsx b/src/auth/registration/BrowserForm.tsx index 641c9e71..3f2c56a6 100644 --- a/src/auth/registration/BrowserForm.tsx +++ b/src/auth/registration/BrowserForm.tsx @@ -1,8 +1,8 @@ -import { FormikTextField } from "form/FormikHelpers"; -import { MarketingOptIn } from "auth/registration/MarketingOptIn"; +import { FormikTextField } from "@/form/FormikHelpers"; +import { MarketingOptIn } from "@/auth/registration/MarketingOptIn"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; -import { MarketingChannel } from "auth/registration/MarketingChannel"; +import { MarketingChannel } from "@/auth/registration/MarketingChannel"; import { Box } from "@mui/material"; export function BrowserForm() { diff --git a/src/auth/registration/BrowserRegister.tsx b/src/auth/registration/BrowserRegister.tsx index 76691b5a..aea933b8 100644 --- a/src/auth/registration/BrowserRegister.tsx +++ b/src/auth/registration/BrowserRegister.tsx @@ -1,14 +1,14 @@ import { Form, Formik } from "formik"; -import { initialValues, RegistrationForm } from "auth/registration/types"; -import { FormikSubmitButton } from "form/FormikButton"; -import { useRegister } from "auth/hooks/mutations/useRegister"; +import { initialValues, RegistrationForm } from "@/auth/registration/types"; +import { FormikSubmitButton } from "@/form/FormikButton"; +import { useRegister } from "@/auth/hooks/mutations/useRegister"; import { Box } from "@mui/material"; -import { PersistRegistrationValues } from "form/PersistRegistrationValues"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { PersistRegistrationValues } from "@/form/PersistRegistrationValues"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; -import { RegistrationContainer } from "auth/registration/RegistrationContainer"; -import { BrowserForm } from "auth/registration/BrowserForm"; -import { RegistrationSchema } from "validation/RegistrationSchema"; +import { RegistrationContainer } from "@/auth/registration/RegistrationContainer"; +import { BrowserForm } from "@/auth/registration/BrowserForm"; +import { RegistrationSchema } from "@/validation/RegistrationSchema"; export function BrowserRegister() { useTrackMatomoPageView({ diff --git a/src/auth/registration/MarketingChannel.tsx b/src/auth/registration/MarketingChannel.tsx index 0b2c9f12..b7ece086 100644 --- a/src/auth/registration/MarketingChannel.tsx +++ b/src/auth/registration/MarketingChannel.tsx @@ -1,4 +1,4 @@ -import { FormikSelect, FormikTextField } from "form/FormikHelpers"; +import { FormikSelect, FormikTextField } from "@/form/FormikHelpers"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { useField } from "formik"; diff --git a/src/auth/registration/MarketingOptIn.tsx b/src/auth/registration/MarketingOptIn.tsx index 8973eba4..c4786fc1 100644 --- a/src/auth/registration/MarketingOptIn.tsx +++ b/src/auth/registration/MarketingOptIn.tsx @@ -1,4 +1,4 @@ -import { FormikCheckbox } from "form/FormikHelpers"; +import { FormikCheckbox } from "@/form/FormikHelpers"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; import { Box } from "@mui/material"; diff --git a/src/auth/registration/Register.tsx b/src/auth/registration/Register.tsx index 1215e71d..eeca72c5 100644 --- a/src/auth/registration/Register.tsx +++ b/src/auth/registration/Register.tsx @@ -1,6 +1,6 @@ -import { AdvertiserRegistered } from "auth/registration/AdvertiserRegistered"; +import { AdvertiserRegistered } from "@/auth/registration/AdvertiserRegistered"; import { Route, Switch } from "react-router-dom"; -import { BrowserRegister } from "auth/registration/BrowserRegister"; +import { BrowserRegister } from "@/auth/registration/BrowserRegister"; import { SearchRegister } from "./SearchRegister"; import { AccountChoice } from "./AccountChoice"; diff --git a/src/auth/registration/RegistrationContainer.tsx b/src/auth/registration/RegistrationContainer.tsx index 0c4a1029..df47ea34 100644 --- a/src/auth/registration/RegistrationContainer.tsx +++ b/src/auth/registration/RegistrationContainer.tsx @@ -1,12 +1,12 @@ import { PropsWithChildren } from "react"; -import { PaddedCardContainer } from "components/Card/PaddedCardContainer"; -import logo from "assets/images/brave-icon-release-color.svg"; +import { PaddedCardContainer } from "@/components/Card/PaddedCardContainer"; +import logo from "@/assets/images/brave-icon-release-color.svg"; import Typography from "@mui/material/Typography"; import { Trans } from "@lingui/macro"; -import { PrivacyPolicy } from "basic-attention-token/PrivacyPolicy"; -import { useIsMobile } from "hooks/useIsMobile"; -import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; -import { Background } from "components/Background/Background"; +import { PrivacyPolicy } from "@/basic-attention-token/PrivacyPolicy"; +import { useIsMobile } from "@/hooks/useIsMobile"; +import { LandingPageAppBar } from "@/components/AppBar/LandingPageAppBar"; +import { Background } from "@/components/Background/Background"; import { Toolbar } from "@mui/material"; export function RegistrationContainer(props: PropsWithChildren) { diff --git a/src/auth/registration/SearchForm.tsx b/src/auth/registration/SearchForm.tsx index 14b6d6c3..55537bc2 100644 --- a/src/auth/registration/SearchForm.tsx +++ b/src/auth/registration/SearchForm.tsx @@ -1,10 +1,10 @@ import { Box } from "@mui/material"; -import { FormikTextField } from "form/FormikHelpers"; -import { MarketingOptIn } from "auth/registration/MarketingOptIn"; +import { FormikTextField } from "@/form/FormikHelpers"; +import { MarketingOptIn } from "@/auth/registration/MarketingOptIn"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; -import { MarketingChannel } from "auth/registration/MarketingChannel"; -import { CountryPicker } from "components/Country/CountryPicker"; +import { MarketingChannel } from "@/auth/registration/MarketingChannel"; +import { CountryPicker } from "@/components/Country/CountryPicker"; export function SearchForm() { const { _ } = useLingui(); diff --git a/src/auth/registration/SearchRegister.tsx b/src/auth/registration/SearchRegister.tsx index 10c40f7d..c0d4b1f6 100644 --- a/src/auth/registration/SearchRegister.tsx +++ b/src/auth/registration/SearchRegister.tsx @@ -1,13 +1,13 @@ import { Form, Formik } from "formik"; -import { initialValues, RegistrationForm } from "auth/registration/types"; -import { FormikSubmitButton } from "form/FormikButton"; -import { useRegister } from "auth/hooks/mutations/useRegister"; +import { initialValues, RegistrationForm } from "@/auth/registration/types"; +import { FormikSubmitButton } from "@/form/FormikButton"; +import { useRegister } from "@/auth/hooks/mutations/useRegister"; import { Box } from "@mui/material"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; -import { RegistrationContainer } from "auth/registration/RegistrationContainer"; -import { RegistrationSchema } from "validation/RegistrationSchema"; -import { SearchForm } from "auth/registration/SearchForm"; +import { RegistrationContainer } from "@/auth/registration/RegistrationContainer"; +import { RegistrationSchema } from "@/validation/RegistrationSchema"; +import { SearchForm } from "@/auth/registration/SearchForm"; export function SearchRegister() { useTrackMatomoPageView({ diff --git a/src/auth/views/AuthVerify.tsx b/src/auth/views/AuthVerify.tsx index e1e51a82..a0bac75f 100644 --- a/src/auth/views/AuthVerify.tsx +++ b/src/auth/views/AuthVerify.tsx @@ -1,10 +1,10 @@ -import { AuthContainer } from "auth/views/components/AuthContainer"; -import { useAuthorize } from "auth/hooks/queries/useAuthorize"; +import { AuthContainer } from "@/auth/views/components/AuthContainer"; +import { useAuthorize } from "@/auth/hooks/queries/useAuthorize"; import { Link as RouterLink, useHistory } from "react-router-dom"; import { CircularProgress, Link, Stack, Typography } from "@mui/material"; import VerifiedIcon from "@mui/icons-material/Verified"; import CancelOutlinedIcon from "@mui/icons-material/CancelOutlined"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; export function AuthVerify() { diff --git a/src/auth/views/LandingPage.tsx b/src/auth/views/LandingPage.tsx index 833f4deb..68a96897 100644 --- a/src/auth/views/LandingPage.tsx +++ b/src/auth/views/LandingPage.tsx @@ -1,13 +1,13 @@ -import { Background } from "components/Background/Background"; -import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; +import { Background } from "@/components/Background/Background"; +import { LandingPageAppBar } from "@/components/AppBar/LandingPageAppBar"; import { Box, Button, Link, Stack, Toolbar, Typography } from "@mui/material"; -import benefits from "assets/images/ad-benefits.svg"; -import { useIsAuthenticated } from "auth/hooks/queries/useIsAuthenticated"; +import benefits from "@/assets/images/ad-benefits.svg"; +import { useIsAuthenticated } from "@/auth/hooks/queries/useIsAuthenticated"; import { Link as RouterLink } from "react-router-dom"; -import { useIsMobile } from "hooks/useIsMobile"; -import { MobileAdsBenefits } from "auth/views/MobileAdsBenefits"; -import { GradientText } from "components/Typography/GradientText"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { useIsMobile } from "@/hooks/useIsMobile"; +import { MobileAdsBenefits } from "@/auth/views/MobileAdsBenefits"; +import { GradientText } from "@/components/Typography/GradientText"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/auth/views/Login.tsx b/src/auth/views/Login.tsx index 77bcdcbb..79897a59 100644 --- a/src/auth/views/Login.tsx +++ b/src/auth/views/Login.tsx @@ -2,9 +2,9 @@ import { Alert, Link, TextField, Typography } from "@mui/material"; import { LoadingButton } from "@mui/lab"; import { useState } from "react"; import { Link as RouterLink, useHistory } from "react-router-dom"; -import { useSignIn } from "auth/hooks/mutations/useSignIn"; -import { AuthContainer } from "auth/views/components/AuthContainer"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useSignIn } from "@/auth/hooks/mutations/useSignIn"; +import { AuthContainer } from "@/auth/views/components/AuthContainer"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { Trans, msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/auth/views/MagicLink.tsx b/src/auth/views/MagicLink.tsx index 41036344..bf7346f1 100644 --- a/src/auth/views/MagicLink.tsx +++ b/src/auth/views/MagicLink.tsx @@ -2,10 +2,10 @@ import { useState } from "react"; import { Link, TextField, Typography } from "@mui/material"; import { Link as RouterLink } from "react-router-dom"; -import { useGetLink } from "auth/hooks/mutations/useGetLink"; +import { useGetLink } from "@/auth/hooks/mutations/useGetLink"; import { LoadingButton } from "@mui/lab"; -import { AuthContainer } from "auth/views/components/AuthContainer"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { AuthContainer } from "@/auth/views/components/AuthContainer"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/auth/views/MobileAdsBenefits.tsx b/src/auth/views/MobileAdsBenefits.tsx index 9689c182..947460eb 100644 --- a/src/auth/views/MobileAdsBenefits.tsx +++ b/src/auth/views/MobileAdsBenefits.tsx @@ -1,8 +1,8 @@ import { Card, CardMedia, List, ListItem, Typography } from "@mui/material"; -import allSizes from "assets/images/all_sizes_frame.svg"; -import powerfulFormats from "assets/images/powerful_format_frame.svg"; -import privacyFocused from "assets/images/privacy_focused_frame.svg"; +import allSizes from "@/assets/images/all_sizes_frame.svg"; +import powerfulFormats from "@/assets/images/powerful_format_frame.svg"; +import privacyFocused from "@/assets/images/privacy_focused_frame.svg"; import { msg } from "@lingui/macro"; import { MessageDescriptor } from "@lingui/core"; import { Trans } from "@lingui/react"; diff --git a/src/auth/views/components/AuthContainer.tsx b/src/auth/views/components/AuthContainer.tsx index bf621812..7b687ef8 100644 --- a/src/auth/views/components/AuthContainer.tsx +++ b/src/auth/views/components/AuthContainer.tsx @@ -1,8 +1,8 @@ import { Box } from "@mui/material"; -import { Background } from "components/Background/Background"; -import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; +import { Background } from "@/components/Background/Background"; +import { LandingPageAppBar } from "@/components/AppBar/LandingPageAppBar"; import { ReactNode } from "react"; -import { PaddedCardContainer } from "components/Card/PaddedCardContainer"; +import { PaddedCardContainer } from "@/components/Card/PaddedCardContainer"; interface Props { children?: ReactNode; diff --git a/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx b/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx index 70560ca9..378b4e7d 100644 --- a/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx +++ b/src/basic-attention-token/BasicAttentionTokenLandingPage.tsx @@ -1,15 +1,15 @@ import { useTrackMatomoEvent, useTrackMatomoPageView, -} from "hooks/useTrackWithMatomo"; -import { useIsMobile } from "hooks/useIsMobile"; -import { Background } from "components/Background/Background"; -import { LandingPageAppBar } from "components/AppBar/LandingPageAppBar"; +} from "@/hooks/useTrackWithMatomo"; +import { useIsMobile } from "@/hooks/useIsMobile"; +import { Background } from "@/components/Background/Background"; +import { LandingPageAppBar } from "@/components/AppBar/LandingPageAppBar"; import { Box, Button, Link, Stack, Toolbar, Typography } from "@mui/material"; import { Link as RouterLink } from "react-router-dom"; -import notification from "assets/images/newsfeed.png"; -import mobileAd from "assets/images/news-mobile.png"; -import bat from "assets/images/basic-attention-token.svg"; +import notification from "@/assets/images/newsfeed.png"; +import mobileAd from "@/assets/images/news-mobile.png"; +import bat from "@/assets/images/basic-attention-token.svg"; import { Trans } from "@lingui/macro"; export function BasicAttentionTokenLandingPage() { diff --git a/src/checkout/hooks/useCreatePaymentSession.ts b/src/checkout/hooks/useCreatePaymentSession.ts index af496db3..46bbb91e 100644 --- a/src/checkout/hooks/useCreatePaymentSession.ts +++ b/src/checkout/hooks/useCreatePaymentSession.ts @@ -1,6 +1,6 @@ -import { createPaymentSession } from "checkout/lib"; +import { createPaymentSession } from "@/checkout/lib"; import { useCallback, useState } from "react"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { useHistory } from "react-router-dom"; import { t } from "@lingui/macro"; diff --git a/src/checkout/hooks/useValidatePaymentSession.ts b/src/checkout/hooks/useValidatePaymentSession.ts index c1b877d1..1327aa70 100644 --- a/src/checkout/hooks/useValidatePaymentSession.ts +++ b/src/checkout/hooks/useValidatePaymentSession.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { fetchPaymentSession } from "checkout/lib"; +import { fetchPaymentSession } from "@/checkout/lib"; interface Props { sessionId: string | null; diff --git a/src/checkout/lib/index.ts b/src/checkout/lib/index.ts index a59d9cdb..4707dd0f 100644 --- a/src/checkout/lib/index.ts +++ b/src/checkout/lib/index.ts @@ -1,4 +1,4 @@ -import { buildAdServerEndpoint } from "util/environment"; +import { buildAdServerEndpoint } from "@/util/environment"; import { t } from "@lingui/macro"; export async function createPaymentSession( diff --git a/src/components/AppBar/LandingPageAppBar.tsx b/src/components/AppBar/LandingPageAppBar.tsx index 2dffffda..49ad49a2 100644 --- a/src/components/AppBar/LandingPageAppBar.tsx +++ b/src/components/AppBar/LandingPageAppBar.tsx @@ -7,14 +7,14 @@ import { Toolbar, Typography, } from "@mui/material"; -import ads from "assets/images/logo.svg"; +import ads from "@/assets/images/logo.svg"; import { Link as RouterLink, useRouteMatch } from "react-router-dom"; -import { useIsAuthenticated } from "auth/hooks/queries/useIsAuthenticated"; -import { useSignOut } from "auth/hooks/mutations/useSignOut"; -import { useIsMobile } from "hooks/useIsMobile"; +import { useIsAuthenticated } from "@/auth/hooks/queries/useIsAuthenticated"; +import { useSignOut } from "@/auth/hooks/mutations/useSignOut"; +import { useIsMobile } from "@/hooks/useIsMobile"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; -import { SupportMenu } from "components/Drawer/SupportMenu"; +import { SupportMenu } from "@/components/Drawer/SupportMenu"; export function LandingPageAppBar() { const match = useRouteMatch(); diff --git a/src/components/Assets/AdvertiserAssets.tsx b/src/components/Assets/AdvertiserAssets.tsx index bf764eb6..ddef2bfe 100644 --- a/src/components/Assets/AdvertiserAssets.tsx +++ b/src/components/Assets/AdvertiserAssets.tsx @@ -1,17 +1,17 @@ import { AdvertiserImageFragment, useAdvertiserImagesQuery, -} from "graphql/advertiser.generated"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { CardContainer } from "components/Card/CardContainer"; +} from "@/graphql/advertiser.generated"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Grid, LinearProgress, Typography } from "@mui/material"; -import MiniSideBar from "components/Drawer/MiniSideBar"; -import { ImagePreview } from "components/Assets/ImagePreview"; -import { CampaignFormat } from "graphql/types"; -import { RouteSelectionButton } from "components/Route/RouteSelectionButton"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; +import { ImagePreview } from "@/components/Assets/ImagePreview"; +import { CampaignFormat } from "@/graphql/types"; +import { RouteSelectionButton } from "@/components/Route/RouteSelectionButton"; import Box from "@mui/material/Box"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Assets/ImageAutocomplete.tsx b/src/components/Assets/ImageAutocomplete.tsx index 9da82320..c63c2ede 100644 --- a/src/components/Assets/ImageAutocomplete.tsx +++ b/src/components/Assets/ImageAutocomplete.tsx @@ -1,9 +1,9 @@ -import { useAdvertiserImagesQuery } from "graphql/advertiser.generated"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiserImagesQuery } from "@/graphql/advertiser.generated"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Autocomplete, createFilterOptions, TextField } from "@mui/material"; import { useEffect, useState } from "react"; import { useField } from "formik"; -import { UploadImage } from "components/Assets/UploadImage"; +import { UploadImage } from "@/components/Assets/UploadImage"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/components/Assets/ImagePreview.tsx b/src/components/Assets/ImagePreview.tsx index 4afa7cb1..672339b7 100644 --- a/src/components/Assets/ImagePreview.tsx +++ b/src/components/Assets/ImagePreview.tsx @@ -1,6 +1,6 @@ import { Box, Link, Skeleton } from "@mui/material"; -import { useGetImagePreviewUrl } from "components/Assets/hooks/useGetImagePreviewUrl"; -import { ErrorDetail } from "components/Error/ErrorDetail"; +import { useGetImagePreviewUrl } from "@/components/Assets/hooks/useGetImagePreviewUrl"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/components/Assets/UploadImage.tsx b/src/components/Assets/UploadImage.tsx index ca6e686d..a14944ca 100644 --- a/src/components/Assets/UploadImage.tsx +++ b/src/components/Assets/UploadImage.tsx @@ -14,9 +14,9 @@ import { StepLabel, Stepper, } from "@mui/material"; -import { CampaignFormat } from "graphql/types"; -import { useUploadFile } from "components/Assets/hooks/useUploadFile"; -import { NewImageButton } from "components/Navigation/NewImageButton"; +import { CampaignFormat } from "@/graphql/types"; +import { useUploadFile } from "@/components/Assets/hooks/useUploadFile"; +import { NewImageButton } from "@/components/Navigation/NewImageButton"; import { Trans } from "@lingui/macro"; export interface UploadConfig { diff --git a/src/components/Assets/hooks/useUploadFile.ts b/src/components/Assets/hooks/useUploadFile.ts index b91aadbc..7944c713 100644 --- a/src/components/Assets/hooks/useUploadFile.ts +++ b/src/components/Assets/hooks/useUploadFile.ts @@ -1,13 +1,13 @@ -import { buildAdServerEndpoint, getEnvConfig } from "util/environment"; +import { buildAdServerEndpoint, getEnvConfig } from "@/util/environment"; import { useCallback, useState } from "react"; import _ from "lodash"; import { refetchAdvertiserImagesQuery, useUploadAdvertiserImageMutation, -} from "graphql/advertiser.generated"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CampaignFormat } from "graphql/types"; -import { UploadConfig } from "components/Assets/UploadImage"; +} from "@/graphql/advertiser.generated"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CampaignFormat } from "@/graphql/types"; +import { UploadConfig } from "@/components/Assets/UploadImage"; import { t } from "@lingui/macro"; interface PutUploadResponse { diff --git a/src/components/Background/Background.tsx b/src/components/Background/Background.tsx index 2939c94e..bfd1d3fe 100644 --- a/src/components/Background/Background.tsx +++ b/src/components/Background/Background.tsx @@ -1,7 +1,7 @@ import { PropsWithChildren } from "react"; -import gradient from "assets/images/darker-gradient.svg"; +import gradient from "@/assets/images/darker-gradient.svg"; import { Container } from "@mui/material"; -import { useIsMobile } from "hooks/useIsMobile"; +import { useIsMobile } from "@/hooks/useIsMobile"; export function Background({ children }: PropsWithChildren) { const isMobile = useIsMobile(); diff --git a/src/components/Button/LearnMoreButton.tsx b/src/components/Button/LearnMoreButton.tsx index a0055f5a..e3103280 100644 --- a/src/components/Button/LearnMoreButton.tsx +++ b/src/components/Button/LearnMoreButton.tsx @@ -1,5 +1,5 @@ import { Link } from "@mui/material"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; import { TypographyOwnProps } from "@mui/material/Typography"; diff --git a/src/components/Button/SubmitPanel.tsx b/src/components/Button/SubmitPanel.tsx index 0cffc538..a949b5dc 100644 --- a/src/components/Button/SubmitPanel.tsx +++ b/src/components/Button/SubmitPanel.tsx @@ -5,7 +5,7 @@ import { extractErrors, FormikDialogButton, FormikSubmitButton, -} from "form/FormikButton"; +} from "@/form/FormikButton"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; diff --git a/src/components/Campaigns/CampaignAgeFilter.tsx b/src/components/Campaigns/CampaignAgeFilter.tsx index 4621f7bf..40283818 100644 --- a/src/components/Campaigns/CampaignAgeFilter.tsx +++ b/src/components/Campaigns/CampaignAgeFilter.tsx @@ -1,7 +1,7 @@ import { FormControlLabel, Switch, Typography } from "@mui/material"; import _ from "lodash"; import { useContext } from "react"; -import { FilterContext } from "state/context"; +import { FilterContext } from "@/state/context"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Campaigns/CampaignDateRange.tsx b/src/components/Campaigns/CampaignDateRange.tsx index 2518f04f..d85c7323 100644 --- a/src/components/Campaigns/CampaignDateRange.tsx +++ b/src/components/Campaigns/CampaignDateRange.tsx @@ -5,7 +5,7 @@ import { useField } from "formik"; import { useState } from "react"; import { getDefaultTimezone, TimeZonePicker } from "../TimeZonePicker"; import { TimezoneAwareDatePicker } from "../TimeZonePicker/TimezoneAwareDatePicker"; -import { useIsEdit } from "form/FormikHelpers"; +import { useIsEdit } from "@/form/FormikHelpers"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Campaigns/CloneCampaign.tsx b/src/components/Campaigns/CloneCampaign.tsx index 9827adf3..edcd14df 100644 --- a/src/components/Campaigns/CloneCampaign.tsx +++ b/src/components/Campaigns/CloneCampaign.tsx @@ -13,16 +13,16 @@ import { CampaignSummaryFragment, useCreateCampaignMutation, useLoadCampaignLazyQuery, -} from "graphql/campaign.generated"; +} from "@/graphql/campaign.generated"; import { useHistory } from "react-router-dom"; import { useContext, useState } from "react"; -import { refetchAdvertiserCampaignsQuery } from "graphql/advertiser.generated"; -import { createCampaignFromFragment } from "form/fragmentUtil"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; +import { createCampaignFromFragment } from "@/form/fragmentUtil"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; -import { useUser } from "auth/hooks/queries/useUser"; -import { FilterContext } from "state/context"; -import { CampaignFormat, CampaignSource } from "graphql/types"; +import { useUser } from "@/auth/hooks/queries/useUser"; +import { FilterContext } from "@/state/context"; +import { CampaignFormat, CampaignSource } from "@/graphql/types"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/components/Campaigns/Status.tsx b/src/components/Campaigns/Status.tsx index 5e3281d1..674434fc 100644 --- a/src/components/Campaigns/Status.tsx +++ b/src/components/Campaigns/Status.tsx @@ -1,7 +1,7 @@ import { Chip, Tooltip } from "@mui/material"; import { calcColorForState } from "./stateColors"; import _ from "lodash"; -import { isDateInThePast, isDateInTheFuture } from "util/isAfterEndDate"; +import { isDateInThePast, isDateInTheFuture } from "@/util/isAfterEndDate"; interface Props { state: string; diff --git a/src/components/Conversion/ConversionDisplay.tsx b/src/components/Conversion/ConversionDisplay.tsx index ade5383f..06d0f59e 100644 --- a/src/components/Conversion/ConversionDisplay.tsx +++ b/src/components/Conversion/ConversionDisplay.tsx @@ -1,6 +1,6 @@ -import { Conversion } from "user/views/adsManager/types"; +import { Conversion } from "@/user/views/adsManager/types"; import { FormikErrors } from "formik"; -import { ReviewField } from "user/views/adsManager/views/advanced/components/review/components/ReviewField"; +import { ReviewField } from "@/user/views/adsManager/views/advanced/components/review/components/ReviewField"; import _ from "lodash"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/components/Conversion/ConversionFields.tsx b/src/components/Conversion/ConversionFields.tsx index 39b0d484..02f97cda 100644 --- a/src/components/Conversion/ConversionFields.tsx +++ b/src/components/Conversion/ConversionFields.tsx @@ -1,5 +1,5 @@ import { Box } from "@mui/material"; -import { FormikRadioControl, FormikTextField } from "form/FormikHelpers"; +import { FormikRadioControl, FormikTextField } from "@/form/FormikHelpers"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/components/Country/CountryPicker.tsx b/src/components/Country/CountryPicker.tsx index 85e30658..9e717730 100644 --- a/src/components/Country/CountryPicker.tsx +++ b/src/components/Country/CountryPicker.tsx @@ -1,6 +1,6 @@ import { Autocomplete, Box, TextField } from "@mui/material"; import { useField } from "formik"; -import { useCountries } from "components/Country/useCountries"; +import { useCountries } from "@/components/Country/useCountries"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/components/Country/useCountries.ts b/src/components/Country/useCountries.ts index 6eef3562..41749c6e 100644 --- a/src/components/Country/useCountries.ts +++ b/src/components/Country/useCountries.ts @@ -1,4 +1,4 @@ -import { buildAdServerV2Endpoint } from "util/environment"; +import { buildAdServerV2Endpoint } from "@/util/environment"; import { useEffect, useState } from "react"; export function useCountries() { diff --git a/src/components/Creatives/CreateCreativeButton.tsx b/src/components/Creatives/CreateCreativeButton.tsx index 1a3eb019..c9cd5c6c 100644 --- a/src/components/Creatives/CreateCreativeButton.tsx +++ b/src/components/Creatives/CreateCreativeButton.tsx @@ -3,16 +3,16 @@ import { CampaignForm, Creative, initialCreative, -} from "user/views/adsManager/types"; +} from "@/user/views/adsManager/types"; import _ from "lodash"; import { refetchAdvertiserCreativesQuery, useCreateCreativeMutation, -} from "graphql/creative.generated"; +} from "@/graphql/creative.generated"; import { useField, useFormikContext } from "formik"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { LoadingButton } from "@mui/lab"; -import { validCreativeFields } from "user/library"; +import { validCreativeFields } from "@/user/library"; import { Trans } from "@lingui/macro"; export function CreateCreativeButton() { diff --git a/src/components/Creatives/CreativeCampaigns.tsx b/src/components/Creatives/CreativeCampaigns.tsx index dfac2f3b..2f4bf704 100644 --- a/src/components/Creatives/CreativeCampaigns.tsx +++ b/src/components/Creatives/CreativeCampaigns.tsx @@ -1,4 +1,4 @@ -import { CampaignsForCreativeQuery } from "graphql/creative.generated"; +import { CampaignsForCreativeQuery } from "@/graphql/creative.generated"; import { Link as RouterLink } from "react-router-dom"; import { Link, @@ -8,10 +8,10 @@ import { TableHead, TableRow, } from "@mui/material"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { CardContainer } from "components/Card/CardContainer"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { CardContainer } from "@/components/Card/CardContainer"; import _ from "lodash"; -import { Status } from "components/Campaigns/Status"; +import { Status } from "@/components/Campaigns/Status"; import { ApolloError } from "@apollo/client"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/components/Creatives/CreativeForm.tsx b/src/components/Creatives/CreativeForm.tsx index 38edcc11..8f3c1399 100644 --- a/src/components/Creatives/CreativeForm.tsx +++ b/src/components/Creatives/CreativeForm.tsx @@ -1,24 +1,24 @@ import { Box, Container, LinearProgress } from "@mui/material"; import { Form, Formik } from "formik"; import { useParams } from "react-router-dom"; -import { CardContainer } from "components/Card/CardContainer"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { CreativeSchema } from "validation/CreativeSchema"; -import MiniSideBar from "components/Drawer/MiniSideBar"; -import { CreativeType } from "components/Creatives/CreativeType"; -import { NotificationAd } from "user/ads/NotificationAd"; -import { InlineContentAd } from "user/ads/InlineContentAd"; -import { SubmitPanel } from "components/Button/SubmitPanel"; -import { useGetCreativeDetails } from "components/Creatives/hooks/useGetCreativeDetails"; -import { useSubmitCreative } from "components/Creatives/hooks/useSubmitCreative"; -import CreativeCampaigns from "components/Creatives/CreativeCampaigns"; -import { useCampaignsForCreativeQuery } from "graphql/creative.generated"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CreativeInput } from "graphql/types"; -import { CampaignFragment } from "graphql/campaign.generated"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { CreativeSchema } from "@/validation/CreativeSchema"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; +import { CreativeType } from "@/components/Creatives/CreativeType"; +import { NotificationAd } from "@/user/ads/NotificationAd"; +import { InlineContentAd } from "@/user/ads/InlineContentAd"; +import { SubmitPanel } from "@/components/Button/SubmitPanel"; +import { useGetCreativeDetails } from "@/components/Creatives/hooks/useGetCreativeDetails"; +import { useSubmitCreative } from "@/components/Creatives/hooks/useSubmitCreative"; +import CreativeCampaigns from "@/components/Creatives/CreativeCampaigns"; +import { useCampaignsForCreativeQuery } from "@/graphql/creative.generated"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CreativeInput } from "@/graphql/types"; +import { CampaignFragment } from "@/graphql/campaign.generated"; import _ from "lodash"; -import { isReviewableState } from "util/displayState"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { isReviewableState } from "@/util/displayState"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; interface Params { diff --git a/src/components/Creatives/CreativeList.tsx b/src/components/Creatives/CreativeList.tsx index 29bbe869..5af19c5e 100644 --- a/src/components/Creatives/CreativeList.tsx +++ b/src/components/Creatives/CreativeList.tsx @@ -1,20 +1,20 @@ import { CreativeFragment, useAdvertiserCreativesQuery, -} from "graphql/creative.generated"; -import { uiTextForCreativeTypeCode } from "user/library"; -import { CardContainer } from "components/Card/CardContainer"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import MiniSideBar from "components/Drawer/MiniSideBar"; +} from "@/graphql/creative.generated"; +import { uiTextForCreativeTypeCode } from "@/user/library"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; import { Box, Link, List, Typography } from "@mui/material"; -import { Status } from "components/Campaigns/Status"; +import { Status } from "@/components/Campaigns/Status"; import { Link as RouterLink } from "react-router-dom"; import { DataGrid, GridColDef } from "@mui/x-data-grid"; -import { CreativeStatusSwitch } from "components/Creatives/CreativeStatusSwitch"; -import { CustomToolbar } from "components/Datagrid/CustomToolbar"; -import { RouteSelectionButton } from "components/Route/RouteSelectionButton"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { CreativeStatusSwitch } from "@/components/Creatives/CreativeStatusSwitch"; +import { CustomToolbar } from "@/components/Datagrid/CustomToolbar"; +import { RouteSelectionButton } from "@/components/Route/RouteSelectionButton"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { Trans, useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; diff --git a/src/components/Creatives/CreativeSelect.tsx b/src/components/Creatives/CreativeSelect.tsx index 64b8190e..af78efc7 100644 --- a/src/components/Creatives/CreativeSelect.tsx +++ b/src/components/Creatives/CreativeSelect.tsx @@ -1,14 +1,14 @@ import { Box, Button, Stack, Typography } from "@mui/material"; -import { BoxContainer } from "components/Box/BoxContainer"; -import { NotificationPreview } from "components/Creatives/NotificationPreview"; -import { SelectCreativeHeader } from "components/Creatives/SelectCreativeHeader"; -import { CampaignForm, Creative } from "user/views/adsManager/types"; +import { BoxContainer } from "@/components/Box/BoxContainer"; +import { NotificationPreview } from "@/components/Creatives/NotificationPreview"; +import { SelectCreativeHeader } from "@/components/Creatives/SelectCreativeHeader"; +import { CampaignForm, Creative } from "@/user/views/adsManager/types"; import _ from "lodash"; import { PropsWithChildren, useContext, useState } from "react"; -import { FormContext } from "state/context"; +import { FormContext } from "@/state/context"; import { useFormikContext } from "formik"; -import { CampaignFormat } from "graphql/types"; -import { ImagePreview } from "components/Assets/ImagePreview"; +import { CampaignFormat } from "@/graphql/types"; +import { ImagePreview } from "@/components/Assets/ImagePreview"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Creatives/CreativeSpecificPreview.tsx b/src/components/Creatives/CreativeSpecificPreview.tsx index b8141212..8b5548e8 100644 --- a/src/components/Creatives/CreativeSpecificPreview.tsx +++ b/src/components/Creatives/CreativeSpecificPreview.tsx @@ -1,12 +1,12 @@ -import { CampaignFormat } from "graphql/types"; -import { BoxContainer } from "components/Box/BoxContainer"; -import { NotificationPreview } from "components/Creatives/NotificationPreview"; +import { CampaignFormat } from "@/graphql/types"; +import { BoxContainer } from "@/components/Box/BoxContainer"; +import { NotificationPreview } from "@/components/Creatives/NotificationPreview"; import { Stack, Typography } from "@mui/material"; import { PropsWithChildren } from "react"; import { useField } from "formik"; -import { Creative } from "user/views/adsManager/types"; -import { DisplayError } from "user/views/adsManager/views/advanced/components/review/components/ReviewField"; -import { ImagePreview } from "components/Assets/ImagePreview"; +import { Creative } from "@/user/views/adsManager/types"; +import { DisplayError } from "@/user/views/adsManager/views/advanced/components/review/components/ReviewField"; +import { ImagePreview } from "@/components/Assets/ImagePreview"; import { Trans } from "@lingui/macro"; interface Props extends PropsWithChildren { diff --git a/src/components/Creatives/CreativeStatusSwitch.tsx b/src/components/Creatives/CreativeStatusSwitch.tsx index 4505dc28..0fe3ac66 100644 --- a/src/components/Creatives/CreativeStatusSwitch.tsx +++ b/src/components/Creatives/CreativeStatusSwitch.tsx @@ -4,8 +4,8 @@ import { refetchCampaignsForCreativeQuery, useCampaignsForCreativeLazyQuery, useUpdateCreativeMutation, -} from "graphql/creative.generated"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +} from "@/graphql/creative.generated"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Box, Button, @@ -20,8 +20,8 @@ import { } from "@mui/material"; import { useState } from "react"; import _ from "lodash"; -import { validCreativeFields } from "user/library"; -import { isReviewableState } from "util/displayState"; +import { validCreativeFields } from "@/user/library"; +import { isReviewableState } from "@/util/displayState"; import { Trans } from "@lingui/macro"; interface Props { diff --git a/src/components/Creatives/CreativeType.tsx b/src/components/Creatives/CreativeType.tsx index 68415b38..88db52ea 100644 --- a/src/components/Creatives/CreativeType.tsx +++ b/src/components/Creatives/CreativeType.tsx @@ -1,7 +1,7 @@ import { Box, ListItemButton, List, Typography, Stack } from "@mui/material"; import { useFormikContext } from "formik"; -import { CreativeInput } from "graphql/types"; -import { FormatHelp } from "components/Button/FormatHelp"; +import { CreativeInput } from "@/graphql/types"; +import { FormatHelp } from "@/components/Button/FormatHelp"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; diff --git a/src/components/Creatives/NewsPreview.tsx b/src/components/Creatives/NewsPreview.tsx index 9d7d63f4..c5da7443 100644 --- a/src/components/Creatives/NewsPreview.tsx +++ b/src/components/Creatives/NewsPreview.tsx @@ -1,8 +1,8 @@ import { Box, Card, Typography } from "@mui/material"; -import { ImagePreview } from "components/Assets/ImagePreview"; +import { ImagePreview } from "@/components/Assets/ImagePreview"; import { useField, useFormikContext } from "formik"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CreativeInput } from "graphql/types"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CreativeInput } from "@/graphql/types"; import { Trans } from "@lingui/macro"; export function NewsPreview() { diff --git a/src/components/Creatives/NotificationPreview.tsx b/src/components/Creatives/NotificationPreview.tsx index 1595cd86..dd60c44c 100644 --- a/src/components/Creatives/NotificationPreview.tsx +++ b/src/components/Creatives/NotificationPreview.tsx @@ -1,7 +1,7 @@ import { Box, Paper, Stack, Typography } from "@mui/material"; -import logo from "assets/images/brave_logo_icon.png"; +import logo from "@/assets/images/brave_logo_icon.png"; import { useField, useFormikContext } from "formik"; -import { CreativeInput } from "graphql/types"; +import { CreativeInput } from "@/graphql/types"; import { Trans } from "@lingui/macro"; export function NotificationPreview(props: { diff --git a/src/components/Creatives/SelectCreativeHeader.tsx b/src/components/Creatives/SelectCreativeHeader.tsx index 6dc151f9..80a588b7 100644 --- a/src/components/Creatives/SelectCreativeHeader.tsx +++ b/src/components/Creatives/SelectCreativeHeader.tsx @@ -1,8 +1,8 @@ import { Box, IconButton, Typography } from "@mui/material"; import CheckBoxIcon from "@mui/icons-material/CheckBox"; import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank"; -import { Creative } from "user/views/adsManager/types"; -import { Status } from "components/Campaigns/Status"; +import { Creative } from "@/user/views/adsManager/types"; +import { Status } from "@/components/Campaigns/Status"; import { useEffect, useState } from "react"; export const SelectCreativeHeader = (props: { diff --git a/src/components/Creatives/hooks/useGetCreativeDetails.tsx b/src/components/Creatives/hooks/useGetCreativeDetails.tsx index cb8dc00c..d5a5fb8f 100644 --- a/src/components/Creatives/hooks/useGetCreativeDetails.tsx +++ b/src/components/Creatives/hooks/useGetCreativeDetails.tsx @@ -1,6 +1,6 @@ -import { useLoadCreativeQuery } from "graphql/creative.generated"; -import { CreativeInput } from "graphql/types"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useLoadCreativeQuery } from "@/graphql/creative.generated"; +import { CreativeInput } from "@/graphql/types"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/components/Creatives/hooks/useSubmitCreative.tsx b/src/components/Creatives/hooks/useSubmitCreative.tsx index c6dd76c6..b01f29c1 100644 --- a/src/components/Creatives/hooks/useSubmitCreative.tsx +++ b/src/components/Creatives/hooks/useSubmitCreative.tsx @@ -2,14 +2,14 @@ import { refetchAdvertiserCreativesQuery, useCreateCreativeMutation, useUpdateCreativeMutation, -} from "graphql/creative.generated"; +} from "@/graphql/creative.generated"; import { useCallback } from "react"; -import { CreativeInput } from "graphql/types"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { CreativeInput } from "@/graphql/types"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { useHistory } from "react-router-dom"; -import { validCreativeFields } from "user/library"; +import { validCreativeFields } from "@/user/library"; import _ from "lodash"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; export function useSubmitCreative(props: { id: string }) { const { trackMatomoEvent } = useTrackMatomoEvent(); diff --git a/src/components/Datagrid/renderers.tsx b/src/components/Datagrid/renderers.tsx index aecdbfd2..5e8bb5a5 100644 --- a/src/components/Datagrid/renderers.tsx +++ b/src/components/Datagrid/renderers.tsx @@ -6,15 +6,15 @@ import { refetchLoadCampaignAdsQuery, refetchLoadCampaignQuery, useUpdateCampaignMutation, -} from "graphql/campaign.generated"; -import { useUpdateAdSetMutation } from "graphql/ad-set.generated"; -import { OnOff } from "components/Switch/OnOff"; -import { displayFromCampaignState } from "util/displayState"; -import { CampaignExtras } from "user/adSet/AdSetList"; -import { FilterContext } from "state/context"; -import { refetchAdvertiserCampaignsQuery } from "graphql/advertiser.generated"; -import { UpdateAdSetInput } from "graphql/types"; -import { toLocaleString } from "util/bignumber"; +} from "@/graphql/campaign.generated"; +import { useUpdateAdSetMutation } from "@/graphql/ad-set.generated"; +import { OnOff } from "@/components/Switch/OnOff"; +import { displayFromCampaignState } from "@/util/displayState"; +import { CampaignExtras } from "@/user/adSet/AdSetList"; +import { FilterContext } from "@/state/context"; +import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; +import { UpdateAdSetInput } from "@/graphql/types"; +import { toLocaleString } from "@/util/bignumber"; import BigNumber from "bignumber.js"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Drawer/MiniSideBar.tsx b/src/components/Drawer/MiniSideBar.tsx index 594e0e3e..6f2b5363 100644 --- a/src/components/Drawer/MiniSideBar.tsx +++ b/src/components/Drawer/MiniSideBar.tsx @@ -8,11 +8,11 @@ import AccountBalanceOutlinedIcon from "@mui/icons-material/AccountBalanceOutlin import AccountBoxOutlinedIcon from "@mui/icons-material/AccountBoxOutlined"; import LightbulbOutlinedIcon from "@mui/icons-material/LightbulbOutlined"; import PeopleOutlineOutlinedIcon from "@mui/icons-material/PeopleOutlineOutlined"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { AlwaysOnFormButton } from "components/Button/AlwaysOnFormButton"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { AlwaysOnFormButton } from "@/components/Button/AlwaysOnFormButton"; import { msg } from "@lingui/macro"; -import { SupportMenu } from "components/Drawer/SupportMenu"; -import { ItemBox, RouteOption } from "components/Drawer/components/ItemBox"; +import { SupportMenu } from "@/components/Drawer/SupportMenu"; +import { ItemBox, RouteOption } from "@/components/Drawer/components/ItemBox"; const drawerWidth = 85; export default function MiniSideBar({ children }: PropsWithChildren) { diff --git a/src/components/Drawer/SupportMenu.tsx b/src/components/Drawer/SupportMenu.tsx index c4c077ab..950fc3a7 100644 --- a/src/components/Drawer/SupportMenu.tsx +++ b/src/components/Drawer/SupportMenu.tsx @@ -1,10 +1,10 @@ -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { MouseEvent, useState } from "react"; -import { useIsMobile } from "hooks/useIsMobile"; +import { useIsMobile } from "@/hooks/useIsMobile"; import { msg, Trans } from "@lingui/macro"; import HeadsetMicOutlinedIcon from "@mui/icons-material/HeadsetMicOutlined"; import { Link, Menu, MenuItem } from "@mui/material"; -import { ItemBox } from "components/Drawer/components/ItemBox"; +import { ItemBox } from "@/components/Drawer/components/ItemBox"; interface SupportProps { usePlainLink?: boolean; diff --git a/src/components/Error/ErrorDetail.tsx b/src/components/Error/ErrorDetail.tsx index 89d1c087..362331a0 100644 --- a/src/components/Error/ErrorDetail.tsx +++ b/src/components/Error/ErrorDetail.tsx @@ -9,7 +9,7 @@ import { Box, Typography, } from "@mui/material"; -import { VERSION } from "util/version"; +import { VERSION } from "@/util/version"; import { MessageDescriptor } from "@lingui/core"; import { Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/components/Location/LocationPicker.tsx b/src/components/Location/LocationPicker.tsx index d4dfa840..ceb28de2 100644 --- a/src/components/Location/LocationPicker.tsx +++ b/src/components/Location/LocationPicker.tsx @@ -3,8 +3,8 @@ import CheckBoxIcon from "@mui/icons-material/CheckBox"; import { Autocomplete, Checkbox, TextField } from "@mui/material"; import { useField } from "formik"; import _ from "lodash"; -import { useActiveGeocodesQuery } from "graphql/common.generated"; -import { GeocodeInput } from "graphql/types"; +import { useActiveGeocodesQuery } from "@/graphql/common.generated"; +import { GeocodeInput } from "@/graphql/types"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/components/Navigation/DraftMenu.tsx b/src/components/Navigation/DraftMenu.tsx index aa86d419..305a0e7c 100644 --- a/src/components/Navigation/DraftMenu.tsx +++ b/src/components/Navigation/DraftMenu.tsx @@ -2,7 +2,7 @@ import { useContext, useState, MouseEvent } from "react"; import { Link as RouterLink } from "react-router-dom"; import { Badge, Button, Menu, MenuItem } from "@mui/material"; -import { DraftContext } from "state/context"; +import { DraftContext } from "@/state/context"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/components/Navigation/Navbar.tsx b/src/components/Navigation/Navbar.tsx index 331ba3ba..b3cbdedf 100644 --- a/src/components/Navigation/Navbar.tsx +++ b/src/components/Navigation/Navbar.tsx @@ -1,13 +1,13 @@ import { AppBar, Button, Divider, Stack, Toolbar } from "@mui/material"; -import { DraftMenu } from "components/Navigation/DraftMenu"; -import ads from "assets/images/logo.svg"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { useSignOut } from "auth/hooks/mutations/useSignOut"; -import { NewCampaignButton } from "components/Navigation/NewCampaignButton"; -import { UploadImage } from "components/Assets/UploadImage"; +import { DraftMenu } from "@/components/Navigation/DraftMenu"; +import ads from "@/assets/images/logo.svg"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { useSignOut } from "@/auth/hooks/mutations/useSignOut"; +import { NewCampaignButton } from "@/components/Navigation/NewCampaignButton"; +import { UploadImage } from "@/components/Assets/UploadImage"; import { useHistory } from "react-router-dom"; -import { NewCreativeButton } from "components/Navigation/NewCreativeButton"; +import { NewCreativeButton } from "@/components/Navigation/NewCreativeButton"; import { Trans } from "@lingui/macro"; export function Navbar() { diff --git a/src/components/Navigation/NewCampaignButton.tsx b/src/components/Navigation/NewCampaignButton.tsx index 974c422d..f2c4a5e0 100644 --- a/src/components/Navigation/NewCampaignButton.tsx +++ b/src/components/Navigation/NewCampaignButton.tsx @@ -1,4 +1,4 @@ -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Button } from "@mui/material"; import { Link as RouterLink, useRouteMatch } from "react-router-dom"; import { Trans } from "@lingui/macro"; diff --git a/src/components/Navigation/NewCreativeButton.tsx b/src/components/Navigation/NewCreativeButton.tsx index 4ca5f575..fd8a16c9 100644 --- a/src/components/Navigation/NewCreativeButton.tsx +++ b/src/components/Navigation/NewCreativeButton.tsx @@ -1,4 +1,4 @@ -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Button } from "@mui/material"; import { Link as RouterLink, useRouteMatch } from "react-router-dom"; import { Trans } from "@lingui/macro"; diff --git a/src/components/Navigation/NewImageButton.tsx b/src/components/Navigation/NewImageButton.tsx index 5f66bf91..b8ce4ae5 100644 --- a/src/components/Navigation/NewImageButton.tsx +++ b/src/components/Navigation/NewImageButton.tsx @@ -1,4 +1,4 @@ -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Button } from "@mui/material"; import { Trans } from "@lingui/macro"; diff --git a/src/components/Route/ProtectedRoute.tsx b/src/components/Route/ProtectedRoute.tsx index 71e6bd1d..73e6f6eb 100644 --- a/src/components/Route/ProtectedRoute.tsx +++ b/src/components/Route/ProtectedRoute.tsx @@ -1,6 +1,6 @@ import { ComponentType } from "react"; -import { IAdvertiser } from "auth/context/auth.interface"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { IAdvertiser } from "@/auth/context/auth.interface"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Redirect, Route } from "react-router-dom"; interface ProtectedProps { diff --git a/src/components/Segment/SegmentPicker.tsx b/src/components/Segment/SegmentPicker.tsx index 271e4136..b804a4cd 100644 --- a/src/components/Segment/SegmentPicker.tsx +++ b/src/components/Segment/SegmentPicker.tsx @@ -3,10 +3,10 @@ import CheckBoxIcon from "@mui/icons-material/CheckBox"; import { Autocomplete, Box, Checkbox, TextField } from "@mui/material"; import { useField } from "formik"; import _ from "lodash"; -import { SegmentFragment, useSegmentsQuery } from "graphql/common.generated"; +import { SegmentFragment, useSegmentsQuery } from "@/graphql/common.generated"; import { useEffect } from "react"; -import { FormikSwitch } from "form/FormikHelpers"; -import { segmentNameWithNoDash } from "util/segment"; +import { FormikSwitch } from "@/form/FormikHelpers"; +import { segmentNameWithNoDash } from "@/util/segment"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/components/Steps/ActionButtons.tsx b/src/components/Steps/ActionButtons.tsx index 6fbb4efd..6e6179e0 100644 --- a/src/components/Steps/ActionButtons.tsx +++ b/src/components/Steps/ActionButtons.tsx @@ -1,8 +1,8 @@ import { Button, Stack } from "@mui/material"; import { useContext } from "react"; -import { DraftContext } from "state/context"; +import { DraftContext } from "@/state/context"; import { useFormikContext } from "formik"; -import { CampaignForm } from "user/views/adsManager/types"; +import { CampaignForm } from "@/user/views/adsManager/types"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import RemoveIcon from "@mui/icons-material/Remove"; import { Link as RouterLink } from "react-router-dom"; diff --git a/src/components/Steps/StepDrawer.tsx b/src/components/Steps/StepDrawer.tsx index 1cb3e574..22b28c2f 100644 --- a/src/components/Steps/StepDrawer.tsx +++ b/src/components/Steps/StepDrawer.tsx @@ -10,9 +10,9 @@ import { Stepper, Toolbar, } from "@mui/material"; -import { NextAndBack } from "components/Steps/NextAndBack"; +import { NextAndBack } from "@/components/Steps/NextAndBack"; import { useHistory } from "react-router-dom"; -import { ActionButtons } from "components/Steps/ActionButtons"; +import { ActionButtons } from "@/components/Steps/ActionButtons"; import { MessageDescriptor } from "@lingui/core"; import { Trans } from "@lingui/react"; diff --git a/src/components/Switch/OnOff.tsx b/src/components/Switch/OnOff.tsx index 4117368c..b82bd224 100644 --- a/src/components/Switch/OnOff.tsx +++ b/src/components/Switch/OnOff.tsx @@ -1,5 +1,5 @@ import { Switch, Tooltip, Typography } from "@mui/material"; -import { CampaignSource } from "graphql/types"; +import { CampaignSource } from "@/graphql/types"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Url/use-url-validation.ts b/src/components/Url/use-url-validation.ts index 2dca4d1a..d25f4b22 100644 --- a/src/components/Url/use-url-validation.ts +++ b/src/components/Url/use-url-validation.ts @@ -1,7 +1,7 @@ import { useValidateTargetUrlLazyQuery, ValidateTargetUrlQuery, -} from "graphql/url.generated"; +} from "@/graphql/url.generated"; import _ from "lodash"; import { useEffect, useMemo, useState } from "react"; diff --git a/src/form/FormikHelpers.tsx b/src/form/FormikHelpers.tsx index 94210ed2..b4bce186 100644 --- a/src/form/FormikHelpers.tsx +++ b/src/form/FormikHelpers.tsx @@ -24,7 +24,7 @@ import { } from "@mui/material"; import { ErrorMessage, useField, useFormikContext } from "formik"; import _ from "lodash"; -import { CampaignForm } from "user/views/adsManager/types"; +import { CampaignForm } from "@/user/views/adsManager/types"; import { Trans } from "@lingui/macro"; import { TypographyOwnProps } from "@mui/material/Typography"; diff --git a/src/form/PersistFormValues.tsx b/src/form/PersistFormValues.tsx index e21ad13e..aa1259c7 100644 --- a/src/form/PersistFormValues.tsx +++ b/src/form/PersistFormValues.tsx @@ -1,7 +1,7 @@ import { useFormikContext } from "formik"; import { useContext, useEffect } from "react"; -import { CampaignForm } from "user/views/adsManager/types"; -import { DraftContext } from "state/context"; +import { CampaignForm } from "@/user/views/adsManager/types"; +import { DraftContext } from "@/state/context"; export const PersistFormValues = () => { const { values, setValues, dirty } = useFormikContext(); diff --git a/src/form/PersistRegistrationValues.tsx b/src/form/PersistRegistrationValues.tsx index 0f0f1827..2dd95746 100644 --- a/src/form/PersistRegistrationValues.tsx +++ b/src/form/PersistRegistrationValues.tsx @@ -1,6 +1,6 @@ import { useFormikContext } from "formik"; import { useEffect } from "react"; -import { RegistrationForm } from "auth/registration/types"; +import { RegistrationForm } from "@/auth/registration/types"; import _ from "lodash"; export const PersistRegistrationValues = () => { diff --git a/src/form/fragmentUtil.ts b/src/form/fragmentUtil.ts index 3d1b96d9..a2fc109f 100644 --- a/src/form/fragmentUtil.ts +++ b/src/form/fragmentUtil.ts @@ -1,6 +1,6 @@ -import { CreateAdSetInput, CreateCampaignInput } from "graphql/types"; -import { CampaignFragment } from "graphql/campaign.generated"; -import { AdSetFragment } from "graphql/ad-set.generated"; +import { CreateAdSetInput, CreateCampaignInput } from "@/graphql/types"; +import { CampaignFragment } from "@/graphql/campaign.generated"; +import { AdSetFragment } from "@/graphql/ad-set.generated"; import dayjs from "dayjs"; export function createCampaignFromFragment( diff --git a/src/index.tsx b/src/index.tsx index 1d388434..d092a8b9 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { createRoot } from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; -import { App } from "App"; +import { App } from "./App"; import "./index.css"; import "@fontsource/poppins/latin.css"; @@ -10,14 +10,14 @@ import "@fontsource/mulish/latin.css"; import "./init_dayjs"; -import { IAuthProvider } from "auth"; -import { Environment, getEnvironment } from "util/environment"; +import { IAuthProvider } from "@/auth"; +import { Environment, getEnvironment } from "@/util/environment"; import { createInstance, MatomoProvider } from "@jonkoops/matomo-tracker-react"; -import { VERSION } from "util/version"; +import { VERSION } from "@/util/version"; import { i18n } from "@lingui/core"; import { I18nProvider } from "@lingui/react"; import { useEffect } from "react"; -import { findLocale } from "i18n"; +import { findLocale } from "./i18n"; console.log( `https://github.com/brave/ads-ui rev ${VERSION.shortHash} built ${VERSION.buildTime}`, diff --git a/src/state/context.ts b/src/state/context.ts index 3bbb634c..3acb3b64 100644 --- a/src/state/context.ts +++ b/src/state/context.ts @@ -1,6 +1,6 @@ import dayjs from "dayjs"; import { createContext } from "react"; -import { CampaignForm } from "user/views/adsManager/types"; +import { CampaignForm } from "@/user/views/adsManager/types"; export const DraftContext = createContext({ drafts: [] as CampaignForm[], diff --git a/src/theme.tsx b/src/theme.tsx index e04ecd94..5663ab54 100644 --- a/src/theme.tsx +++ b/src/theme.tsx @@ -1,5 +1,5 @@ import { createTheme, responsiveFontSizes, SxProps } from "@mui/material"; -import { findLocale } from "i18n"; +import { findLocale } from "./i18n"; const appTheme = createTheme( { diff --git a/src/user/User.tsx b/src/user/User.tsx index 83bf9b1f..f43234f4 100644 --- a/src/user/User.tsx +++ b/src/user/User.tsx @@ -12,19 +12,19 @@ import { Box } from "@mui/material"; import { NewCampaign } from "./views/adsManager/views/advanced/components/form/NewCampaign"; import { EditCampaign } from "./views/adsManager/views/advanced/components/form/EditCampaign"; import { CompletionForm } from "./views/adsManager/views/advanced/components/completionForm/CompletionForm"; -import { Navbar } from "components/Navigation/Navbar"; -import { CampaignView } from "user/views/user/CampaignView"; -import { Profile } from "user/views/user/Profile"; -import { FilterContext } from "state/context"; -import { AdvertiserAssets } from "components/Assets/AdvertiserAssets"; -import { CreativeList } from "components/Creatives/CreativeList"; -import { CreativeForm } from "components/Creatives/CreativeForm"; -import { ProtectedRoute } from "components/Route/ProtectedRoute"; -import { AdvertiserDetailsForm } from "auth/components/AdvertiserDetailsForm"; -import { ErrorBoundary } from "ErrorBoundary"; +import { Navbar } from "@/components/Navigation/Navbar"; +import { CampaignView } from "@/user/views/user/CampaignView"; +import { Profile } from "@/user/views/user/Profile"; +import { FilterContext } from "@/state/context"; +import { AdvertiserAssets } from "@/components/Assets/AdvertiserAssets"; +import { CreativeList } from "@/components/Creatives/CreativeList"; +import { CreativeForm } from "@/components/Creatives/CreativeForm"; +import { ProtectedRoute } from "@/components/Route/ProtectedRoute"; +import { AdvertiserDetailsForm } from "@/auth/components/AdvertiserDetailsForm"; +import { ErrorBoundary } from "@/ErrorBoundary"; import { CampaignReportViewSelector } from "./views/user/CampaignReportViewSelector"; import dayjs from "dayjs"; -import { useIsAuthenticated } from "auth/hooks/queries/useIsAuthenticated"; +import { useIsAuthenticated } from "@/auth/hooks/queries/useIsAuthenticated"; const buildApolloClient = () => { const httpLink = createHttpLink({ diff --git a/src/user/adSet/AdSetList.tsx b/src/user/adSet/AdSetList.tsx index 80bad56f..9c89fc82 100644 --- a/src/user/adSet/AdSetList.tsx +++ b/src/user/adSet/AdSetList.tsx @@ -1,16 +1,16 @@ import { Chip } from "@mui/material"; -import { Status } from "components/Campaigns/Status"; +import { Status } from "@/components/Campaigns/Status"; import _ from "lodash"; -import { adSetOnOffState } from "components/Datagrid/renderers"; -import { CampaignAdsFragment } from "graphql/campaign.generated"; -import { CampaignSource } from "graphql/types"; -import { StatsMetric } from "user/analytics/analyticsOverview/types"; -import { AdSetWithDeletedAdsFragment } from "graphql/ad-set.generated"; -import { AdDetailTable } from "user/views/user/AdDetailTable"; -import { displayFromCampaignState } from "util/displayState"; -import { uiLabelsForBillingType } from "util/billingType"; +import { adSetOnOffState } from "@/components/Datagrid/renderers"; +import { CampaignAdsFragment } from "@/graphql/campaign.generated"; +import { CampaignSource } from "@/graphql/types"; +import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { AdSetWithDeletedAdsFragment } from "@/graphql/ad-set.generated"; +import { AdDetailTable } from "@/user/views/user/AdDetailTable"; +import { displayFromCampaignState } from "@/util/displayState"; +import { uiLabelsForBillingType } from "@/util/billingType"; import { GridColDef } from "@mui/x-data-grid"; -import { segmentNameWithNoDash } from "util/segment"; +import { segmentNameWithNoDash } from "@/util/segment"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/user/ads/AdList.tsx b/src/user/ads/AdList.tsx index ef812eb2..8b6a81dd 100644 --- a/src/user/ads/AdList.tsx +++ b/src/user/ads/AdList.tsx @@ -1,12 +1,12 @@ import _ from "lodash"; -import { isDateInThePast } from "util/isAfterEndDate"; -import { AdFragment } from "graphql/ad-set.generated"; -import { CampaignSource } from "graphql/types"; -import { CampaignAdsFragment } from "graphql/campaign.generated"; -import { StatsMetric } from "user/analytics/analyticsOverview/types"; -import { AdDetailTable } from "user/views/user/AdDetailTable"; +import { isDateInThePast } from "@/util/isAfterEndDate"; +import { AdFragment } from "@/graphql/ad-set.generated"; +import { CampaignSource } from "@/graphql/types"; +import { CampaignAdsFragment } from "@/graphql/campaign.generated"; +import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { AdDetailTable } from "@/user/views/user/AdDetailTable"; import { GridColDef } from "@mui/x-data-grid"; -import { CreativeFragment } from "graphql/creative.generated"; +import { CreativeFragment } from "@/graphql/creative.generated"; import { Box } from "@mui/material"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/user/ads/AdsExistingAd.tsx b/src/user/ads/AdsExistingAd.tsx index 4b96ce78..b82f95a3 100644 --- a/src/user/ads/AdsExistingAd.tsx +++ b/src/user/ads/AdsExistingAd.tsx @@ -8,21 +8,21 @@ import { Modal, } from "@mui/material"; import { useFormikContext } from "formik"; -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; import _ from "lodash"; import { CreativeFragment, useAdvertiserCreativesQuery, -} from "graphql/creative.generated"; -import { isCreativeTypeApplicableToCampaignFormat } from "user/library"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CampaignForm } from "user/views/adsManager/types"; +} from "@/graphql/creative.generated"; +import { isCreativeTypeApplicableToCampaignFormat } from "@/user/library"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CampaignForm } from "@/user/views/adsManager/types"; import SearchIcon from "@mui/icons-material/Search"; import { useContext, useRef, useState } from "react"; -import { CreativeSelect } from "components/Creatives/CreativeSelect"; -import { FormContext } from "state/context"; -import { useAdvertiserCreatives } from "user/hooks/useAdvertiserCreatives"; -import { modalStyles } from "theme"; +import { CreativeSelect } from "@/components/Creatives/CreativeSelect"; +import { FormContext } from "@/state/context"; +import { useAdvertiserCreatives } from "@/user/hooks/useAdvertiserCreatives"; +import { modalStyles } from "@/theme"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/ads/InlineContentAd.tsx b/src/user/ads/InlineContentAd.tsx index a0a405b8..e0886a90 100644 --- a/src/user/ads/InlineContentAd.tsx +++ b/src/user/ads/InlineContentAd.tsx @@ -1,13 +1,13 @@ -import { FormikTextField } from "form/FormikHelpers"; -import { UrlResolver } from "components/Url/UrlResolver"; +import { FormikTextField } from "@/form/FormikHelpers"; +import { UrlResolver } from "@/components/Url/UrlResolver"; import { useField } from "formik"; import { useEffect } from "react"; import { Box, Stack, Typography } from "@mui/material"; -import { CreateCreativeButton } from "components/Creatives/CreateCreativeButton"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CardContainer } from "components/Card/CardContainer"; -import { ImageAutocomplete } from "components/Assets/ImageAutocomplete"; -import { NewsPreview } from "components/Creatives/NewsPreview"; +import { CreateCreativeButton } from "@/components/Creatives/CreateCreativeButton"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { ImageAutocomplete } from "@/components/Assets/ImageAutocomplete"; +import { NewsPreview } from "@/components/Creatives/NewsPreview"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/user/ads/NewAd.tsx b/src/user/ads/NewAd.tsx index 5883a5bc..c0c46b07 100644 --- a/src/user/ads/NewAd.tsx +++ b/src/user/ads/NewAd.tsx @@ -1,6 +1,6 @@ import { Box, Button } from "@mui/material"; import { useContext, useEffect } from "react"; -import { BoxContainer } from "components/Box/BoxContainer"; +import { BoxContainer } from "@/components/Box/BoxContainer"; import AddCircleOutlineIcon from "@mui/icons-material/AddCircleOutline"; import RemoveCircleOutlineIcon from "@mui/icons-material/RemoveCircleOutline"; import { useField, useFormikContext } from "formik"; @@ -8,9 +8,9 @@ import { CampaignForm, Creative, initialCreative, -} from "user/views/adsManager/types"; -import { FormContext } from "state/context"; -import { CampaignFormat } from "graphql/types"; +} from "@/user/views/adsManager/types"; +import { FormContext } from "@/state/context"; +import { CampaignFormat } from "@/graphql/types"; import { Trans } from "@lingui/macro"; export function NewAd() { diff --git a/src/user/ads/NotificationAd.tsx b/src/user/ads/NotificationAd.tsx index f5f99106..0bc1c54c 100644 --- a/src/user/ads/NotificationAd.tsx +++ b/src/user/ads/NotificationAd.tsx @@ -1,10 +1,10 @@ -import { CardContainer } from "components/Card/CardContainer"; -import { FormikTextField } from "form/FormikHelpers"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { FormikTextField } from "@/form/FormikHelpers"; import { Box, Stack, Typography } from "@mui/material"; -import { UrlResolver } from "components/Url/UrlResolver"; +import { UrlResolver } from "@/components/Url/UrlResolver"; import { useField } from "formik"; -import { NotificationPreview } from "components/Creatives/NotificationPreview"; -import { CreateCreativeButton } from "components/Creatives/CreateCreativeButton"; +import { NotificationPreview } from "@/components/Creatives/NotificationPreview"; +import { CreateCreativeButton } from "@/components/Creatives/CreateCreativeButton"; import { useEffect } from "react"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/ads/ShowAdsButton.tsx b/src/user/ads/ShowAdsButton.tsx index 340670f3..af8c7898 100644 --- a/src/user/ads/ShowAdsButton.tsx +++ b/src/user/ads/ShowAdsButton.tsx @@ -1,5 +1,5 @@ import { useContext } from "react"; -import { FormContext } from "state/context"; +import { FormContext } from "@/state/context"; import { Link } from "@mui/material"; import { useField } from "formik"; import { Trans } from "@lingui/macro"; diff --git a/src/user/analytics/analyticsOverview/components/BaseBarChart.tsx b/src/user/analytics/analyticsOverview/components/BaseBarChart.tsx index a859fa83..83138c91 100644 --- a/src/user/analytics/analyticsOverview/components/BaseBarChart.tsx +++ b/src/user/analytics/analyticsOverview/components/BaseBarChart.tsx @@ -1,7 +1,7 @@ import { Box, Tab, Tabs } from "@mui/material"; import { Options, SeriesOptionsType } from "highcharts"; import { Option } from "../types"; -import { HighchartsWrapper } from "user/analytics/analyticsOverview/components/HighchartsWrapper"; +import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; diff --git a/src/user/analytics/analyticsOverview/components/BasePieChart.tsx b/src/user/analytics/analyticsOverview/components/BasePieChart.tsx index 4c60b3d1..e51d6f16 100644 --- a/src/user/analytics/analyticsOverview/components/BasePieChart.tsx +++ b/src/user/analytics/analyticsOverview/components/BasePieChart.tsx @@ -1,7 +1,7 @@ import { Box, Tab, Tabs } from "@mui/material"; import { Options, SeriesOptionsType } from "highcharts"; import { Option } from "../types"; -import { HighchartsWrapper } from "user/analytics/analyticsOverview/components/HighchartsWrapper"; +import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; diff --git a/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx b/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx index d620dc7c..7e035d5b 100644 --- a/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx +++ b/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx @@ -1,6 +1,6 @@ import { Box, Button, Stack, Typography } from "@mui/material"; -import { Status } from "components/Campaigns/Status"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; +import { Status } from "@/components/Campaigns/Status"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { MessageDescriptor } from "@lingui/core"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; diff --git a/src/user/analytics/analyticsOverview/components/LiveFeed.tsx b/src/user/analytics/analyticsOverview/components/LiveFeed.tsx index 9b9c1231..d3d05e1a 100644 --- a/src/user/analytics/analyticsOverview/components/LiveFeed.tsx +++ b/src/user/analytics/analyticsOverview/components/LiveFeed.tsx @@ -1,6 +1,6 @@ import { Box, Chip, Typography } from "@mui/material"; import { OverviewDetail, StatsMetric } from "../types"; -import { toLocaleString } from "util/bignumber"; +import { toLocaleString } from "@/util/bignumber"; import { msg, Trans } from "@lingui/macro"; import { MessageDescriptor } from "@lingui/core"; import { useLingui } from "@lingui/react"; diff --git a/src/user/analytics/analyticsOverview/components/MetricFilter.tsx b/src/user/analytics/analyticsOverview/components/MetricFilter.tsx index 8ca80814..9b7ca97a 100644 --- a/src/user/analytics/analyticsOverview/components/MetricFilter.tsx +++ b/src/user/analytics/analyticsOverview/components/MetricFilter.tsx @@ -1,8 +1,8 @@ -import MetricSelect from "user/analytics/analyticsOverview/components/MetricSelect"; +import MetricSelect from "@/user/analytics/analyticsOverview/components/MetricSelect"; import { Box, Stack, Switch, Tooltip, Typography } from "@mui/material"; -import { decideValueAttribute } from "user/analytics/analyticsOverview/lib/overview.library"; -import { Metrics, StatsMetric } from "user/analytics/analyticsOverview/types"; -import { toLocaleString } from "util/bignumber"; +import { decideValueAttribute } from "@/user/analytics/analyticsOverview/lib/overview.library"; +import { Metrics, StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { toLocaleString } from "@/util/bignumber"; import { Trans } from "@lingui/macro"; type FilterMetric = { diff --git a/src/user/analytics/analyticsOverview/components/ReportUtils.tsx b/src/user/analytics/analyticsOverview/components/ReportUtils.tsx index 72b16e48..c8659847 100644 --- a/src/user/analytics/analyticsOverview/components/ReportUtils.tsx +++ b/src/user/analytics/analyticsOverview/components/ReportUtils.tsx @@ -1,9 +1,9 @@ import { Box } from "@mui/material"; -import { DateRangePicker } from "components/Date/DateRangePicker"; -import { DashboardButton } from "components/Button/DashboardButton"; -import { CampaignFormat } from "graphql/types"; +import { DateRangePicker } from "@/components/Date/DateRangePicker"; +import { DashboardButton } from "@/components/Button/DashboardButton"; +import { CampaignFormat } from "@/graphql/types"; import _ from "lodash"; -import { ReportMenu } from "user/reporting/ReportMenu"; +import { ReportMenu } from "@/user/reporting/ReportMenu"; import { Dayjs } from "dayjs"; interface DownloaderProps { diff --git a/src/user/analytics/analyticsOverview/hooks/usePersistMetricFilter.ts b/src/user/analytics/analyticsOverview/hooks/usePersistMetricFilter.ts index 8139c6e7..057eaa51 100644 --- a/src/user/analytics/analyticsOverview/hooks/usePersistMetricFilter.ts +++ b/src/user/analytics/analyticsOverview/hooks/usePersistMetricFilter.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react"; -import { Metrics, StatsMetric } from "user/analytics/analyticsOverview/types"; +import { Metrics, StatsMetric } from "@/user/analytics/analyticsOverview/types"; import _ from "lodash"; export function usePersistMetricFilter( diff --git a/src/user/analytics/analyticsOverview/lib/ads.library.ts b/src/user/analytics/analyticsOverview/lib/ads.library.ts index 40925443..425bba95 100644 --- a/src/user/analytics/analyticsOverview/lib/ads.library.ts +++ b/src/user/analytics/analyticsOverview/lib/ads.library.ts @@ -1,7 +1,7 @@ import _ from "lodash"; -import { EngagementFragment } from "graphql/analytics-overview.generated"; -import { StatsMetric } from "user/analytics/analyticsOverview/types"; -import { processStats } from "user/analytics/analyticsOverview/lib/overview.library"; +import { EngagementFragment } from "@/graphql/analytics-overview.generated"; +import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { processStats } from "@/user/analytics/analyticsOverview/lib/overview.library"; export function adEngagements( engagements: EngagementFragment[], diff --git a/src/user/analytics/analyticsOverview/lib/os.library.ts b/src/user/analytics/analyticsOverview/lib/os.library.ts index 49580384..fc5cc129 100644 --- a/src/user/analytics/analyticsOverview/lib/os.library.ts +++ b/src/user/analytics/analyticsOverview/lib/os.library.ts @@ -1,5 +1,5 @@ import { calculateMetric } from "./overview.library"; -import { EngagementFragment } from "graphql/analytics-overview.generated"; +import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { OS, OSMetric } from "../types"; export function processOs(engagements: EngagementFragment[]) { diff --git a/src/user/analytics/analyticsOverview/lib/overview.library.ts b/src/user/analytics/analyticsOverview/lib/overview.library.ts index d804b77e..8096fb97 100644 --- a/src/user/analytics/analyticsOverview/lib/overview.library.ts +++ b/src/user/analytics/analyticsOverview/lib/overview.library.ts @@ -5,8 +5,8 @@ import { Metrics, StatsMetric, Tooltip, -} from "user/analytics/analyticsOverview/types"; -import { EngagementFragment } from "graphql/analytics-overview.generated"; +} from "@/user/analytics/analyticsOverview/types"; +import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import BigNumber from "bignumber.js"; import { t } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx b/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx index 2e16b28b..ba1d774e 100644 --- a/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx +++ b/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { CampaignWithEngagementsFragment, EngagementFragment, -} from "graphql/analytics-overview.generated"; +} from "@/graphql/analytics-overview.generated"; import { prepareChart, processData, @@ -12,10 +12,10 @@ import { import MetricFilter from "../../components/MetricFilter"; import EngagementHeader from "../../components/EngagementHeader"; import LiveFeed from "../../components/LiveFeed"; -import { ErrorDetail } from "components/Error/ErrorDetail"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { ApolloError } from "@apollo/client"; -import { usePersistMetricFilter } from "user/analytics/analyticsOverview/hooks/usePersistMetricFilter"; -import { HighchartsWrapper } from "user/analytics/analyticsOverview/components/HighchartsWrapper"; +import { usePersistMetricFilter } from "@/user/analytics/analyticsOverview/hooks/usePersistMetricFilter"; +import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; import { msg, Trans } from "@lingui/macro"; interface Props { diff --git a/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx b/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx index 104cce3f..15330a28 100644 --- a/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx +++ b/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx @@ -1,5 +1,5 @@ import { Box, Stack } from "@mui/material"; -import { EngagementFragment } from "graphql/analytics-overview.generated"; +import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { mapOsStats, processOs } from "../../lib/os.library"; import { OsPieChart } from "./components/OsPieChart"; import { OsBarChart } from "./components/OsBarChart"; diff --git a/src/user/analytics/analyticsOverview/reports/os/components/OsBarChart.tsx b/src/user/analytics/analyticsOverview/reports/os/components/OsBarChart.tsx index a368e708..83df1192 100644 --- a/src/user/analytics/analyticsOverview/reports/os/components/OsBarChart.tsx +++ b/src/user/analytics/analyticsOverview/reports/os/components/OsBarChart.tsx @@ -1,6 +1,9 @@ import { useState } from "react"; import { SeriesOptionsType } from "highcharts"; -import { CalculatedOSMetric, OS } from "user/analytics/analyticsOverview/types"; +import { + CalculatedOSMetric, + OS, +} from "@/user/analytics/analyticsOverview/types"; import { BaseBarChart } from "../../../components/BaseBarChart"; import { msg } from "@lingui/macro"; diff --git a/src/user/analytics/analyticsOverview/reports/os/components/OsPieChart.tsx b/src/user/analytics/analyticsOverview/reports/os/components/OsPieChart.tsx index 884eae59..917b73f3 100644 --- a/src/user/analytics/analyticsOverview/reports/os/components/OsPieChart.tsx +++ b/src/user/analytics/analyticsOverview/reports/os/components/OsPieChart.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; -import { mapDevice } from "user/analytics/analyticsOverview/lib/os.library"; -import { OSMetric } from "user/analytics/analyticsOverview/types"; +import { mapDevice } from "@/user/analytics/analyticsOverview/lib/os.library"; +import { OSMetric } from "@/user/analytics/analyticsOverview/types"; import { BasePieChart } from "../../../components/BasePieChart"; import { SeriesOptionsType } from "highcharts"; import { msg } from "@lingui/macro"; diff --git a/src/user/analytics/renderers/index.tsx b/src/user/analytics/renderers/index.tsx index 51f943fa..bfc1059f 100644 --- a/src/user/analytics/renderers/index.tsx +++ b/src/user/analytics/renderers/index.tsx @@ -1,9 +1,9 @@ import { Box, Skeleton, Typography } from "@mui/material"; -import { renderMonetaryAmount } from "components/Datagrid/renderers"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; -import { CampaignFormat } from "graphql/types"; -import { StatsMetric } from "user/analytics/analyticsOverview/types"; -import { toLocaleString } from "util/bignumber"; +import { renderMonetaryAmount } from "@/components/Datagrid/renderers"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; +import { CampaignFormat } from "@/graphql/types"; +import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { toLocaleString } from "@/util/bignumber"; export type EngagementOverview = { campaignId: string; diff --git a/src/user/analytics/search/AdSetBreakdown.tsx b/src/user/analytics/search/AdSetBreakdown.tsx index 867d2ec1..804a77a0 100644 --- a/src/user/analytics/search/AdSetBreakdown.tsx +++ b/src/user/analytics/search/AdSetBreakdown.tsx @@ -1,19 +1,19 @@ import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { DataGrid, GridColDef } from "@mui/x-data-grid"; -import { Status } from "components/Campaigns/Status"; +import { Status } from "@/components/Campaigns/Status"; import { AdSetValuesFragment, useFetchAdSetMetricsForCampaignQuery, -} from "graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; -import { uiLabelsForBillingType } from "util/billingType"; -import { displayFromCampaignState } from "util/displayState"; +} from "@/graphql/analytics-overview.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; +import { uiLabelsForBillingType } from "@/util/billingType"; +import { displayFromCampaignState } from "@/util/displayState"; import { MetricDefinition, getMetricListForCampaign } from "./metrics"; import { RenderMetric } from "./RenderMetric"; import { i18n } from "@lingui/core"; import lodash from "lodash"; -import { PerformanceFilter } from "graphql/types"; +import { PerformanceFilter } from "@/graphql/types"; function getColumnDefinitionForMetric(metric: MetricDefinition): GridColDef { return { diff --git a/src/user/analytics/search/MetricSelector.tsx b/src/user/analytics/search/MetricSelector.tsx index f5a1f699..cff9991b 100644 --- a/src/user/analytics/search/MetricSelector.tsx +++ b/src/user/analytics/search/MetricSelector.tsx @@ -2,7 +2,7 @@ import { Box, Switch, Tooltip, Typography, switchClasses } from "@mui/material"; import { MetricDefinition } from "./metrics"; import { RenderMetric } from "./RenderMetric"; import { useMetricSelection } from "./hooks"; -import { CampaignMetricDetailValuesFragment } from "graphql/analytics-overview.generated"; +import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; import { Trans } from "@lingui/react"; interface Props { diff --git a/src/user/analytics/search/MetricsList.tsx b/src/user/analytics/search/MetricsList.tsx index 478ced72..eb7d1404 100644 --- a/src/user/analytics/search/MetricsList.tsx +++ b/src/user/analytics/search/MetricsList.tsx @@ -1,7 +1,7 @@ import { getMetricListForCampaign } from "./metrics"; import { MetricSelector } from "./MetricSelector"; -import { CampaignMetricDetailValuesFragment } from "graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; +import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; interface Props { campaign: CampaignSummaryFragment; diff --git a/src/user/analytics/search/OverTimeGraph.tsx b/src/user/analytics/search/OverTimeGraph.tsx index edec07d7..3d5e9e00 100644 --- a/src/user/analytics/search/OverTimeGraph.tsx +++ b/src/user/analytics/search/OverTimeGraph.tsx @@ -1,7 +1,7 @@ -import { DailyValuesFragment } from "graphql/analytics-overview.generated"; +import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; import { useMetricSelection } from "./hooks"; import { makeLineChartSeries } from "./series"; -import { HighchartsWrapper } from "user/analytics/analyticsOverview/components/HighchartsWrapper"; +import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; interface Props { dataSource: DailyValuesFragment[] | undefined; diff --git a/src/user/analytics/search/RenderMetric.tsx b/src/user/analytics/search/RenderMetric.tsx index 08de97ee..c2eec7ea 100644 --- a/src/user/analytics/search/RenderMetric.tsx +++ b/src/user/analytics/search/RenderMetric.tsx @@ -2,7 +2,7 @@ import BigNumber from "bignumber.js"; import { MetricType } from "./metrics"; import _ from "lodash"; import { Skeleton, Typography } from "@mui/material"; -import { format } from "user/library/format"; +import { format } from "@/user/library/format"; interface Props { type: MetricType; diff --git a/src/user/analytics/search/metrics.ts b/src/user/analytics/search/metrics.ts index fc343628..d41d00ae 100644 --- a/src/user/analytics/search/metrics.ts +++ b/src/user/analytics/search/metrics.ts @@ -1,7 +1,7 @@ import { msg } from "@lingui/macro"; import BigNumber from "bignumber.js"; -import { CampaignMetricDetailValuesFragment } from "graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; +import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { MessageDescriptor } from "@lingui/core"; export type MetricType = "number" | "rate" | "usd"; diff --git a/src/user/analytics/search/series.test.ts b/src/user/analytics/search/series.test.ts index f70dd2cd..bbaad4e5 100644 --- a/src/user/analytics/search/series.test.ts +++ b/src/user/analytics/search/series.test.ts @@ -2,7 +2,7 @@ import { getMetricDefinition } from "./metrics"; import { makeLineChartSeries } from "./series"; import assert from "node:assert"; import { DeepPartial } from "@apollo/client/utilities"; -import { DailyValuesFragment } from "graphql/analytics-overview.generated"; +import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; import dayjs from "dayjs"; it("should populate zero values for missing days in the date range", () => { diff --git a/src/user/analytics/search/series.ts b/src/user/analytics/search/series.ts index 28eaf6b5..7c233e2a 100644 --- a/src/user/analytics/search/series.ts +++ b/src/user/analytics/search/series.ts @@ -1,7 +1,7 @@ import { MetricDefinition } from "./metrics"; import { SeriesSplineOptions, SeriesTooltipOptionsObject } from "highcharts"; import BigNumber from "bignumber.js"; -import { DailyValuesFragment } from "graphql/analytics-overview.generated"; +import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; import { i18n } from "@lingui/core"; import dayjs from "dayjs"; diff --git a/src/user/campaignList/CampaignList.tsx b/src/user/campaignList/CampaignList.tsx index 4273602f..560fcf18 100644 --- a/src/user/campaignList/CampaignList.tsx +++ b/src/user/campaignList/CampaignList.tsx @@ -4,26 +4,26 @@ import { campaignOnOffState, renderMonetaryAmount, StandardRenderers, -} from "components/Datagrid/renderers"; +} from "@/components/Datagrid/renderers"; import { Link as RouterLink } from "react-router-dom"; -import { Status } from "components/Campaigns/Status"; -import { isDateInThePast } from "util/isAfterEndDate"; -import { AdvertiserCampaignsFragment } from "graphql/advertiser.generated"; +import { Status } from "@/components/Campaigns/Status"; +import { isDateInThePast } from "@/util/isAfterEndDate"; +import { AdvertiserCampaignsFragment } from "@/graphql/advertiser.generated"; import { CampaignMetricSummaryValuesFragment, useCampaignMetricsQuery, -} from "graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; +} from "@/graphql/analytics-overview.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { DataGrid, GridColDef } from "@mui/x-data-grid"; -import { CustomToolbar } from "components/Datagrid/CustomToolbar"; -import { CloneCampaign } from "components/Campaigns/CloneCampaign"; -import { EditButton } from "user/campaignList/EditButton"; -import { uiLabelsForCampaignFormat } from "util/campaign"; -import { stringFilterOperators } from "components/Datagrid/stringFilterOperators"; +import { CustomToolbar } from "@/components/Datagrid/CustomToolbar"; +import { CloneCampaign } from "@/components/Campaigns/CloneCampaign"; +import { EditButton } from "@/user/campaignList/EditButton"; +import { uiLabelsForCampaignFormat } from "@/util/campaign"; +import { stringFilterOperators } from "@/components/Datagrid/stringFilterOperators"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; import { MetricValue } from "./MetricValue"; -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; interface Props { advertiser?: AdvertiserCampaignsFragment | null; diff --git a/src/user/campaignList/EditButton.tsx b/src/user/campaignList/EditButton.tsx index b14bb383..ebf20f5f 100644 --- a/src/user/campaignList/EditButton.tsx +++ b/src/user/campaignList/EditButton.tsx @@ -1,5 +1,5 @@ -import { CampaignSummaryFragment } from "graphql/campaign.generated"; -import { CampaignFormat, CampaignSource } from "graphql/types"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; +import { CampaignFormat, CampaignSource } from "@/graphql/types"; import { Button, Tooltip } from "@mui/material"; import { Link as RouterLink } from "react-router-dom"; import EditIcon from "@mui/icons-material/Edit"; diff --git a/src/user/campaignList/MetricValue.tsx b/src/user/campaignList/MetricValue.tsx index 0813c42e..c7a1cf1e 100644 --- a/src/user/campaignList/MetricValue.tsx +++ b/src/user/campaignList/MetricValue.tsx @@ -1,6 +1,6 @@ import { Box, Skeleton } from "@mui/material"; import _ from "lodash"; -import { format } from "user/library/format"; +import { format } from "@/user/library/format"; interface Props { loading?: boolean; diff --git a/src/user/hooks/useAdvertiserCreatives.ts b/src/user/hooks/useAdvertiserCreatives.ts index 6e940bd6..450a8278 100644 --- a/src/user/hooks/useAdvertiserCreatives.ts +++ b/src/user/hooks/useAdvertiserCreatives.ts @@ -1,7 +1,7 @@ import { useFormikContext } from "formik"; -import { CampaignForm, Creative } from "user/views/adsManager/types"; +import { CampaignForm, Creative } from "@/user/views/adsManager/types"; import _ from "lodash"; -import { isCreativeTypeApplicableToCampaignFormat } from "user/library"; +import { isCreativeTypeApplicableToCampaignFormat } from "@/user/library"; export function useAdvertiserCreatives() { const { values } = useFormikContext(); diff --git a/src/user/hooks/useAdvertiserWithPrices.tsx b/src/user/hooks/useAdvertiserWithPrices.tsx index c88d9da2..6329f218 100644 --- a/src/user/hooks/useAdvertiserWithPrices.tsx +++ b/src/user/hooks/useAdvertiserWithPrices.tsx @@ -1,13 +1,13 @@ -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { AdvertiserPriceFragment, useAdvertiserPricesQuery, -} from "graphql/advertiser.generated"; +} from "@/graphql/advertiser.generated"; import { useState } from "react"; -import { IAdvertiser } from "auth/context/auth.interface"; +import { IAdvertiser } from "@/auth/context/auth.interface"; import _ from "lodash"; -import { BillingType } from "graphql/types"; -import { Billing } from "user/views/adsManager/types"; +import { BillingType } from "@/graphql/types"; +import { Billing } from "@/user/views/adsManager/types"; import { t } from "@lingui/macro"; export type AdvertiserPrice = Omit & { diff --git a/src/user/hooks/useGenerateApiKey.tsx b/src/user/hooks/useGenerateApiKey.tsx index bcb3d12b..7a52635b 100644 --- a/src/user/hooks/useGenerateApiKey.tsx +++ b/src/user/hooks/useGenerateApiKey.tsx @@ -1,6 +1,6 @@ -import { buildAdServerV2Endpoint } from "util/environment"; +import { buildAdServerV2Endpoint } from "@/util/environment"; import { useCallback, useState } from "react"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { t } from "@lingui/macro"; export function useGenerateApiKey() { diff --git a/src/user/library/index.test.ts b/src/user/library/index.test.ts index 39270507..13133b94 100644 --- a/src/user/library/index.test.ts +++ b/src/user/library/index.test.ts @@ -1,4 +1,4 @@ -import { CampaignFragment } from "graphql/campaign.generated"; +import { CampaignFragment } from "@/graphql/campaign.generated"; import { describe, expect, it } from "vitest"; import { editCampaignValues, @@ -13,12 +13,16 @@ import { CampaignType, ConfirmationType, PaymentType, -} from "graphql/types"; +} from "@/graphql/types"; import { produce } from "immer"; -import { AdSetForm, CampaignForm, Creative } from "user/views/adsManager/types"; +import { + AdSetForm, + CampaignForm, + Creative, +} from "@/user/views/adsManager/types"; import _ from "lodash"; -import { AdFragment, AdSetFragment } from "graphql/ad-set.generated"; -import { CreativeFragment } from "graphql/creative.generated"; +import { AdFragment, AdSetFragment } from "@/graphql/ad-set.generated"; +import { CreativeFragment } from "@/graphql/creative.generated"; import { DeepPartial } from "@apollo/client/utilities"; const BASE_CPM_CAMPAIGN_FRAGMENT: Readonly = { diff --git a/src/user/library/index.ts b/src/user/library/index.ts index 74236122..45616244 100644 --- a/src/user/library/index.ts +++ b/src/user/library/index.ts @@ -2,9 +2,9 @@ import { CampaignFormat, CreateCampaignInput, UpdateCampaignInput, -} from "graphql/types"; -import { CampaignFragment } from "graphql/campaign.generated"; -import { AdFragment, AdSetFragment } from "graphql/ad-set.generated"; +} from "@/graphql/types"; +import { CampaignFragment } from "@/graphql/campaign.generated"; +import { AdFragment, AdSetFragment } from "@/graphql/ad-set.generated"; import { AdSetForm, Billing, @@ -13,10 +13,10 @@ import { Creative, initialCreative, Segment, -} from "user/views/adsManager/types"; +} from "@/user/views/adsManager/types"; import _ from "lodash"; import BigNumber from "bignumber.js"; -import { CreativeFragment } from "graphql/creative.generated"; +import { CreativeFragment } from "@/graphql/creative.generated"; import { t } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/user/reporting/ReportMenu.tsx b/src/user/reporting/ReportMenu.tsx index 341ab52e..ffd94ffa 100644 --- a/src/user/reporting/ReportMenu.tsx +++ b/src/user/reporting/ReportMenu.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { useDownloadCSV } from "user/reporting/csv.library"; +import { useDownloadCSV } from "@/user/reporting/csv.library"; import { Alert, Button, diff --git a/src/user/reporting/csv.library.tsx b/src/user/reporting/csv.library.tsx index 8441f74a..3f24eb56 100644 --- a/src/user/reporting/csv.library.tsx +++ b/src/user/reporting/csv.library.tsx @@ -1,8 +1,8 @@ import { useCallback, useState } from "react"; -import { buildAdServerEndpoint } from "util/environment"; +import { buildAdServerEndpoint } from "@/util/environment"; import Papa from "papaparse"; import tweetnacl from "tweetnacl"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { t } from "@lingui/macro"; interface DownloadProps { diff --git a/src/user/settings/NewKeyPairModal.tsx b/src/user/settings/NewKeyPairModal.tsx index d93cd6f5..bd34ef60 100644 --- a/src/user/settings/NewKeyPairModal.tsx +++ b/src/user/settings/NewKeyPairModal.tsx @@ -6,12 +6,12 @@ import { TextField, Typography, } from "@mui/material"; -import { useUpdateAdvertiserMutation } from "graphql/advertiser.generated"; +import { useUpdateAdvertiserMutation } from "@/graphql/advertiser.generated"; import tweetnacl from "tweetnacl"; import { useRef, useState } from "react"; -import { IAdvertiser } from "auth/context/auth.interface"; -import { CardContainer } from "components/Card/CardContainer"; -import { modalStyles } from "theme"; +import { IAdvertiser } from "@/auth/context/auth.interface"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { modalStyles } from "@/theme"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/settings/Settings.tsx b/src/user/settings/Settings.tsx index 4f2f1a37..57f79d72 100644 --- a/src/user/settings/Settings.tsx +++ b/src/user/settings/Settings.tsx @@ -11,13 +11,13 @@ import { Stack, Typography, } from "@mui/material"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { setActiveAdvertiser } from "auth/util"; -import { CardContainer } from "components/Card/CardContainer"; -import { DraftContext } from "state/context"; -import { NewKeyPairModal } from "user/settings/NewKeyPairModal"; -import MiniSideBar from "components/Drawer/MiniSideBar"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { setActiveAdvertiser } from "@/auth/util"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { DraftContext } from "@/state/context"; +import { NewKeyPairModal } from "@/user/settings/NewKeyPairModal"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; const Settings = () => { diff --git a/src/user/settings/UserApiKey.tsx b/src/user/settings/UserApiKey.tsx index 324e5c42..9a8f19c9 100644 --- a/src/user/settings/UserApiKey.tsx +++ b/src/user/settings/UserApiKey.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Box, Button, @@ -13,8 +13,8 @@ import { Typography, } from "@mui/material"; import { LoadingButton } from "@mui/lab"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { useGenerateApiKey } from "user/hooks/useGenerateApiKey"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { useGenerateApiKey } from "@/user/hooks/useGenerateApiKey"; import ContentCopyOutlinedIcon from "@mui/icons-material/ContentCopyOutlined"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/settings/UserForm.tsx b/src/user/settings/UserForm.tsx index 99a5406d..f9a5ec11 100644 --- a/src/user/settings/UserForm.tsx +++ b/src/user/settings/UserForm.tsx @@ -1,15 +1,15 @@ import { Stack } from "@mui/material"; import { useState } from "react"; -import { useUser } from "auth/hooks/queries/useUser"; -import { CardContainer } from "components/Card/CardContainer"; +import { useUser } from "@/auth/hooks/queries/useUser"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Form, Formik, FormikValues } from "formik"; -import { FormikTextField } from "form/FormikHelpers"; -import { useUpdateUserMutation } from "graphql/user.generated"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { UserSchema } from "validation/UserSchema"; +import { FormikTextField } from "@/form/FormikHelpers"; +import { useUpdateUserMutation } from "@/graphql/user.generated"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { UserSchema } from "@/validation/UserSchema"; import _ from "lodash"; -import { FormikSubmitButton } from "form/FormikButton"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { FormikSubmitButton } from "@/form/FormikButton"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/types/index.ts b/src/user/views/adsManager/types/index.ts index b96e682f..9d33fba3 100644 --- a/src/user/views/adsManager/types/index.ts +++ b/src/user/views/adsManager/types/index.ts @@ -1,7 +1,7 @@ -import { CampaignFormat, CreativeInput, PaymentType } from "graphql/types"; -import { defaultEndDate, defaultStartDate } from "form/DateFieldHelpers"; -import { MIN_PER_CAMPAIGN } from "validation/CampaignSchema"; -import { AdvertiserWithPrices } from "user/hooks/useAdvertiserWithPrices"; +import { CampaignFormat, CreativeInput, PaymentType } from "@/graphql/types"; +import { defaultEndDate, defaultStartDate } from "@/form/DateFieldHelpers"; +import { MIN_PER_CAMPAIGN } from "@/validation/CampaignSchema"; +import { AdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; export type Billing = "cpm" | "cpc" | "cpsv"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx b/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx index caba1341..f3764bd9 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx @@ -1,19 +1,19 @@ import { PickerFields } from "./fields/PickerFields"; import { ConversionField } from "./fields/ConversionField"; -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { useHistory } from "react-router-dom"; -import { FormikTextField, useIsEdit } from "form/FormikHelpers"; -import { AdSetAds } from "user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds"; -import { adSetOnOffState } from "components/Datagrid/renderers"; +import { FormikTextField, useIsEdit } from "@/form/FormikHelpers"; +import { AdSetAds } from "@/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds"; +import { adSetOnOffState } from "@/components/Datagrid/renderers"; import { Stack, Typography } from "@mui/material"; import { useFormikContext } from "formik"; -import { CampaignForm } from "user/views/adsManager/types"; -import { CampaignSource } from "graphql/types"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { Status } from "components/Campaigns/Status"; -import { displayFromCampaignState } from "util/displayState"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { CampaignForm } from "@/user/views/adsManager/types"; +import { CampaignSource } from "@/graphql/types"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { Status } from "@/components/Campaigns/Status"; +import { displayFromCampaignState } from "@/util/displayState"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/NewAdSet.tsx b/src/user/views/adsManager/views/advanced/components/adSet/NewAdSet.tsx index 81083ad9..8b7517d3 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/NewAdSet.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/NewAdSet.tsx @@ -9,11 +9,11 @@ import { Typography, } from "@mui/material"; import { Link as RouterLink, useHistory } from "react-router-dom"; -import { CampaignForm, initialAdSet } from "user/views/adsManager/types"; +import { CampaignForm, initialAdSet } from "@/user/views/adsManager/types"; import { useRef } from "react"; import RemoveCircleOutlineIcon from "@mui/icons-material/RemoveCircleOutline"; -import { useAdvertiserCreatives } from "user/hooks/useAdvertiserCreatives"; -import { useTrackMatomoEvent } from "hooks/useTrackWithMatomo"; +import { useAdvertiserCreatives } from "@/user/hooks/useAdvertiserCreatives"; +import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx b/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx index 1ab37e73..a6964c91 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx @@ -1,17 +1,17 @@ -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Box, Modal, Typography } from "@mui/material"; -import { CampaignForm } from "user/views/adsManager/types"; +import { CampaignForm } from "@/user/views/adsManager/types"; import { useField, useFormikContext } from "formik"; -import { CreativeSelect } from "components/Creatives/CreativeSelect"; -import { isCreativeTypeApplicableToCampaignFormat } from "user/library"; -import { NewAd } from "user/ads/NewAd"; -import { AdsExistingAd } from "user/ads/AdsExistingAd"; -import { ShowAdsButton } from "user/ads/ShowAdsButton"; -import { CampaignFormat } from "graphql/types"; -import { NotificationAd } from "user/ads/NotificationAd"; -import { InlineContentAd } from "user/ads/InlineContentAd"; -import { modalStyles } from "theme"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { CreativeSelect } from "@/components/Creatives/CreativeSelect"; +import { isCreativeTypeApplicableToCampaignFormat } from "@/user/library"; +import { NewAd } from "@/user/ads/NewAd"; +import { AdsExistingAd } from "@/user/ads/AdsExistingAd"; +import { ShowAdsButton } from "@/user/ads/ShowAdsButton"; +import { CampaignFormat } from "@/graphql/types"; +import { NotificationAd } from "@/user/ads/NotificationAd"; +import { InlineContentAd } from "@/user/ads/InlineContentAd"; +import { modalStyles } from "@/theme"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; interface Props { diff --git a/src/user/views/adsManager/views/advanced/components/adSet/fields/ConversionField.tsx b/src/user/views/adsManager/views/advanced/components/adSet/fields/ConversionField.tsx index 1be5c4a1..06824fd6 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/fields/ConversionField.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/fields/ConversionField.tsx @@ -1,10 +1,10 @@ import { Button, Link, Stack, Typography } from "@mui/material"; -import { ConversionFields } from "components/Conversion/ConversionFields"; +import { ConversionFields } from "@/components/Conversion/ConversionFields"; import { FieldArray, FieldArrayRenderProps, useField } from "formik"; import { Conversion, initialConversion } from "../../../../../types"; -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Add } from "@mui/icons-material"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; interface Props { diff --git a/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx b/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx index 7daea681..c45cd315 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx @@ -1,12 +1,12 @@ import { Typography } from "@mui/material"; -import { SegmentPicker } from "components/Segment/SegmentPicker"; -import { PlatformPicker } from "components/Platform/PlatformPicker"; -import { CardContainer } from "components/Card/CardContainer"; +import { SegmentPicker } from "@/components/Segment/SegmentPicker"; +import { PlatformPicker } from "@/components/Platform/PlatformPicker"; +import { CardContainer } from "@/components/Card/CardContainer"; import { useField } from "formik"; -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; import { useEffect } from "react"; -import { SegmentFragment } from "graphql/common.generated"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { SegmentFragment } from "@/graphql/common.generated"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; interface Props { diff --git a/src/user/views/adsManager/views/advanced/components/campaign/CampaignSettings.tsx b/src/user/views/adsManager/views/advanced/components/campaign/CampaignSettings.tsx index 97dde550..668f5b40 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/CampaignSettings.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/CampaignSettings.tsx @@ -1,16 +1,16 @@ -import { FormikTextField, useIsEdit } from "form/FormikHelpers"; -import { CardContainer } from "components/Card/CardContainer"; -import { CampaignDateRange } from "components/Campaigns/CampaignDateRange"; +import { FormikTextField, useIsEdit } from "@/form/FormikHelpers"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { CampaignDateRange } from "@/components/Campaigns/CampaignDateRange"; import { Typography } from "@mui/material"; -import { FormatField } from "user/views/adsManager/views/advanced/components/campaign/fields/FormatField"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; -import { BudgetField } from "user/views/adsManager/views/advanced/components/campaign/fields/BudgetField"; -import { BillingModelSelect } from "user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect"; -import { CustomPriceSelect } from "user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; -import { LocationPicker } from "components/Location/LocationPicker"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { FormatField } from "@/user/views/adsManager/views/advanced/components/campaign/fields/FormatField"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; +import { BudgetField } from "@/user/views/adsManager/views/advanced/components/campaign/fields/BudgetField"; +import { BillingModelSelect } from "@/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect"; +import { CustomPriceSelect } from "@/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; +import { LocationPicker } from "@/components/Location/LocationPicker"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx b/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx index 1c72e091..0d9f06d5 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx @@ -1,13 +1,13 @@ import { List, ListItemButton, Stack, Typography } from "@mui/material"; -import { renderMonetaryAmount } from "components/Datagrid/renderers"; -import { useIsEdit } from "form/FormikHelpers"; +import { renderMonetaryAmount } from "@/components/Datagrid/renderers"; +import { useIsEdit } from "@/form/FormikHelpers"; import { useField } from "formik"; -import { CampaignFormat } from "graphql/types"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; -import { Billing } from "user/views/adsManager/types"; -import { uiLabelsForCampaignFormat } from "util/campaign"; -import { uiLabelsForBillingType } from "util/billingType"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { CampaignFormat } from "@/graphql/types"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; +import { Billing } from "@/user/views/adsManager/types"; +import { uiLabelsForCampaignFormat } from "@/util/campaign"; +import { uiLabelsForBillingType } from "@/util/billingType"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; export function BillingModelSelect(props: { prices: AdvertiserPrice[] }) { diff --git a/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx b/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx index c9c4a5dc..788909e8 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx @@ -2,11 +2,11 @@ import { FormikRadioControl, FormikTextField, useIsEdit, -} from "form/FormikHelpers"; +} from "@/form/FormikHelpers"; import { useField } from "formik"; -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; import { InputAdornment, Stack } from "@mui/material"; -import { uiLabelsForBillingType } from "util/billingType"; +import { uiLabelsForBillingType } from "@/util/billingType"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/BudgetField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/BudgetField.tsx index fefcb58a..9570e2f0 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/BudgetField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/BudgetField.tsx @@ -1,8 +1,8 @@ import { InputAdornment } from "@mui/material"; -import { FormikTextField, useIsEdit } from "form/FormikHelpers"; +import { FormikTextField, useIsEdit } from "@/form/FormikHelpers"; import { useFormikContext } from "formik"; import { CampaignForm } from "../../../../../types"; -import { useAdvertiserWithPrices } from "user/hooks/useAdvertiserWithPrices"; +import { useAdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx index 42448df4..7ebb179d 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx @@ -7,15 +7,15 @@ import { Stack, Typography, } from "@mui/material"; -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { useField } from "formik"; -import { CampaignFormat } from "graphql/types"; -import { useIsEdit } from "form/FormikHelpers"; -import { Billing } from "user/views/adsManager/types"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; +import { CampaignFormat } from "@/graphql/types"; +import { useIsEdit } from "@/form/FormikHelpers"; +import { Billing } from "@/user/views/adsManager/types"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; import ErrorIcon from "@mui/icons-material/Error"; -import { CustomTooltip } from "components/Tooltip/CustomTooltip"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { CustomTooltip } from "@/components/Tooltip/CustomTooltip"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { msg } from "@lingui/macro"; import { Trans, useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/LocationField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/LocationField.tsx index aef7d8d2..1a83f4aa 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/LocationField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/LocationField.tsx @@ -1,6 +1,6 @@ import { Typography } from "@mui/material"; -import { LocationPicker } from "components/Location/LocationPicker"; -import { CardContainer } from "components/Card/CardContainer"; +import { LocationPicker } from "@/components/Location/LocationPicker"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Trans } from "@lingui/macro"; export function LocationField() { diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx index e00a557c..e509d0dd 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx @@ -1,9 +1,9 @@ import { Stack, Typography } from "@mui/material"; -import { FormikRadioControl, useIsEdit } from "form/FormikHelpers"; -import { PaymentType } from "graphql/types"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { CardContainer } from "components/Card/CardContainer"; -import { LearnMoreButton } from "components/Button/LearnMoreButton"; +import { FormikRadioControl, useIsEdit } from "@/form/FormikHelpers"; +import { PaymentType } from "@/graphql/types"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; export function PaymentMethodField() { diff --git a/src/user/views/adsManager/views/advanced/components/completionForm/CompletionForm.tsx b/src/user/views/adsManager/views/advanced/components/completionForm/CompletionForm.tsx index 5604b727..2fa56db4 100644 --- a/src/user/views/adsManager/views/advanced/components/completionForm/CompletionForm.tsx +++ b/src/user/views/adsManager/views/advanced/components/completionForm/CompletionForm.tsx @@ -3,8 +3,8 @@ import { useState } from "react"; import { useParams, Link as RouterLink } from "react-router-dom"; import { Card, Container, Stack, Typography } from "@mui/material"; import { LoadingButton } from "@mui/lab"; -import { useValidatePaymentSession } from "checkout/hooks/useValidatePaymentSession"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useValidatePaymentSession } from "@/checkout/hooks/useValidatePaymentSession"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; interface Params { diff --git a/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx b/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx index c24a9a55..1c6af9f8 100644 --- a/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx @@ -1,21 +1,21 @@ import { Container, LinearProgress } from "@mui/material"; import { Formik } from "formik"; import { CampaignForm } from "../../../../types"; -import { CampaignSchema } from "validation/CampaignSchema"; -import { editCampaignValues, transformEditForm } from "user/library"; +import { CampaignSchema } from "@/validation/CampaignSchema"; +import { editCampaignValues, transformEditForm } from "@/user/library"; import { useLoadCampaignQuery, useUpdateCampaignMutation, -} from "graphql/campaign.generated"; +} from "@/graphql/campaign.generated"; import { useHistory, useParams } from "react-router-dom"; import { BaseForm } from "./components/BaseForm"; -import { useCreatePaymentSession } from "checkout/hooks/useCreatePaymentSession"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { refetchAdvertiserCampaignsQuery } from "graphql/advertiser.generated"; +import { useCreatePaymentSession } from "@/checkout/hooks/useCreatePaymentSession"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; import { useContext } from "react"; -import { FilterContext } from "state/context"; -import { useAdvertiserWithPrices } from "user/hooks/useAdvertiserWithPrices"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { FilterContext } from "@/state/context"; +import { useAdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx b/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx index ae912958..eda1cf1f 100644 --- a/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx @@ -2,21 +2,21 @@ import { Container, LinearProgress } from "@mui/material"; import { Formik } from "formik"; import { useContext, useState } from "react"; import { CampaignForm, initialCampaign } from "../../../../types"; -import { CampaignSchema } from "validation/CampaignSchema"; -import { transformNewForm } from "user/library"; -import { useCreateCampaignMutation } from "graphql/campaign.generated"; +import { CampaignSchema } from "@/validation/CampaignSchema"; +import { transformNewForm } from "@/user/library"; +import { useCreateCampaignMutation } from "@/graphql/campaign.generated"; import { useHistory, useParams } from "react-router-dom"; import { BaseForm } from "./components/BaseForm"; -import { PersistFormValues } from "form/PersistFormValues"; -import { DraftContext, FilterContext } from "state/context"; -import { useCreatePaymentSession } from "checkout/hooks/useCreatePaymentSession"; -import { PaymentType } from "graphql/types"; -import { useUser } from "auth/hooks/queries/useUser"; -import { refetchAdvertiserCampaignsQuery } from "graphql/advertiser.generated"; -import { useAdvertiserWithPrices } from "user/hooks/useAdvertiserWithPrices"; -import { ErrorDetail } from "components/Error/ErrorDetail"; +import { PersistFormValues } from "@/form/PersistFormValues"; +import { DraftContext, FilterContext } from "@/state/context"; +import { useCreatePaymentSession } from "@/checkout/hooks/useCreatePaymentSession"; +import { PaymentType } from "@/graphql/types"; +import { useUser } from "@/auth/hooks/queries/useUser"; +import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; +import { useAdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; import _ from "lodash"; -import { useTrackWithMatomo } from "hooks/useTrackWithMatomo"; +import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/form/components/BaseForm.tsx b/src/user/views/adsManager/views/advanced/components/form/components/BaseForm.tsx index c9c5cfc2..e7ecda42 100644 --- a/src/user/views/adsManager/views/advanced/components/form/components/BaseForm.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/components/BaseForm.tsx @@ -1,14 +1,14 @@ import { Form } from "formik"; import { Review } from "../../review/Review"; -import { CampaignSettings } from "user/views/adsManager/views/advanced/components/campaign/CampaignSettings"; -import { StepDrawer } from "components/Steps/StepDrawer"; -import { PaymentButton } from "user/views/adsManager/views/advanced/components/form/components/PaymentButton"; -import { AdSetFields } from "user/views/adsManager/views/advanced/components/adSet/AdSetFields"; -import { NewAdSet } from "user/views/adsManager/views/advanced/components/adSet/NewAdSet"; +import { CampaignSettings } from "@/user/views/adsManager/views/advanced/components/campaign/CampaignSettings"; +import { StepDrawer } from "@/components/Steps/StepDrawer"; +import { PaymentButton } from "@/user/views/adsManager/views/advanced/components/form/components/PaymentButton"; +import { AdSetFields } from "@/user/views/adsManager/views/advanced/components/adSet/AdSetFields"; +import { NewAdSet } from "@/user/views/adsManager/views/advanced/components/adSet/NewAdSet"; import { Route, Switch, useRouteMatch } from "react-router-dom"; -import { FormContext } from "state/context"; +import { FormContext } from "@/state/context"; import { useState } from "react"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; import { msg } from "@lingui/macro"; interface Props { diff --git a/src/user/views/adsManager/views/advanced/components/form/components/PaymentButton.tsx b/src/user/views/adsManager/views/advanced/components/form/components/PaymentButton.tsx index b908fb58..348bb131 100644 --- a/src/user/views/adsManager/views/advanced/components/form/components/PaymentButton.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/components/PaymentButton.tsx @@ -1,6 +1,6 @@ -import { useIsEdit } from "form/FormikHelpers"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { FormikSubmitButton } from "form/FormikButton"; +import { useIsEdit } from "@/form/FormikHelpers"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { FormikSubmitButton } from "@/form/FormikButton"; import { msg } from "@lingui/macro"; export function PaymentButton(props: { hasPaymentIntent: boolean }) { diff --git a/src/user/views/adsManager/views/advanced/components/review/Review.tsx b/src/user/views/adsManager/views/advanced/components/review/Review.tsx index e4a934ce..3a2329bc 100644 --- a/src/user/views/adsManager/views/advanced/components/review/Review.tsx +++ b/src/user/views/adsManager/views/advanced/components/review/Review.tsx @@ -4,8 +4,8 @@ import { Box, Typography } from "@mui/material"; import { useEffect } from "react"; import { CampaignReview } from "./components/CampaignReview"; import { AdSetReview } from "./components/AdSetReview"; -import { PaymentMethodField } from "user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { PaymentMethodField } from "@/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { Trans } from "@lingui/macro"; export function Review() { diff --git a/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx b/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx index 8b18d081..0c0914b9 100644 --- a/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx +++ b/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx @@ -1,11 +1,11 @@ import { AdSetForm, Creative, OS, Segment } from "../../../../../types"; import { FormikErrors } from "formik"; -import { ConversionDisplay } from "components/Conversion/ConversionDisplay"; +import { ConversionDisplay } from "@/components/Conversion/ConversionDisplay"; import { ReviewField } from "./ReviewField"; -import { ReviewContainer } from "user/views/adsManager/views/advanced/components/review/components/ReviewContainer"; -import { CampaignFormat } from "graphql/types"; -import { CreativeSpecificPreview } from "components/Creatives/CreativeSpecificPreview"; -import { segmentNameWithNoDash } from "util/segment"; +import { ReviewContainer } from "@/user/views/adsManager/views/advanced/components/review/components/ReviewContainer"; +import { CampaignFormat } from "@/graphql/types"; +import { CreativeSpecificPreview } from "@/components/Creatives/CreativeSpecificPreview"; +import { segmentNameWithNoDash } from "@/util/segment"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/review/components/CampaignReview.tsx b/src/user/views/adsManager/views/advanced/components/review/components/CampaignReview.tsx index 52e53ffe..3ca35cda 100644 --- a/src/user/views/adsManager/views/advanced/components/review/components/CampaignReview.tsx +++ b/src/user/views/adsManager/views/advanced/components/review/components/CampaignReview.tsx @@ -1,9 +1,9 @@ import { CampaignForm } from "../../../../../types"; import { FormikErrors } from "formik"; import { ReviewField } from "./ReviewField"; -import { ReviewContainer } from "user/views/adsManager/views/advanced/components/review/components/ReviewContainer"; -import { uiLabelsForBillingType } from "util/billingType"; -import { uiLabelsForCampaignFormat } from "util/campaign"; +import { ReviewContainer } from "@/user/views/adsManager/views/advanced/components/review/components/ReviewContainer"; +import { uiLabelsForBillingType } from "@/util/billingType"; +import { uiLabelsForCampaignFormat } from "@/util/campaign"; import { msg, Trans } from "@lingui/macro"; interface Props { diff --git a/src/user/views/adsManager/views/advanced/components/review/components/ReviewContainer.tsx b/src/user/views/adsManager/views/advanced/components/review/components/ReviewContainer.tsx index 0cc9ea91..2dfc7e57 100644 --- a/src/user/views/adsManager/views/advanced/components/review/components/ReviewContainer.tsx +++ b/src/user/views/adsManager/views/advanced/components/review/components/ReviewContainer.tsx @@ -1,6 +1,6 @@ import { PropsWithChildren, ReactNode } from "react"; import { useRouteMatch, Link as RouterLink } from "react-router-dom"; -import { CardContainer } from "components/Card/CardContainer"; +import { CardContainer } from "@/components/Card/CardContainer"; import { Button } from "@mui/material"; import { Trans } from "@lingui/macro"; diff --git a/src/user/views/user/AdDetailTable.tsx b/src/user/views/user/AdDetailTable.tsx index 9318cd08..a73fbaa4 100644 --- a/src/user/views/user/AdDetailTable.tsx +++ b/src/user/views/user/AdDetailTable.tsx @@ -1,7 +1,7 @@ -import { CampaignAdsFragment } from "graphql/campaign.generated"; -import { CampaignFormat } from "graphql/types"; -import { StatsMetric } from "user/analytics/analyticsOverview/types"; -import { renderStatsCell } from "user/analytics/renderers"; +import { CampaignAdsFragment } from "@/graphql/campaign.generated"; +import { CampaignFormat } from "@/graphql/types"; +import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; +import { renderStatsCell } from "@/user/analytics/renderers"; import { DataGrid, GridColDef, GridValidRowModel } from "@mui/x-data-grid"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; diff --git a/src/user/views/user/CampaignDetails.tsx b/src/user/views/user/CampaignDetails.tsx index 58b85734..a88543b3 100644 --- a/src/user/views/user/CampaignDetails.tsx +++ b/src/user/views/user/CampaignDetails.tsx @@ -1,14 +1,14 @@ import { useState } from "react"; import DatasetIcon from "@mui/icons-material/Dataset"; import LibraryBooksIcon from "@mui/icons-material/LibraryBooks"; -import { useLoadCampaignAdsQuery } from "graphql/campaign.generated"; +import { useLoadCampaignAdsQuery } from "@/graphql/campaign.generated"; import { useParams } from "react-router-dom"; -import { ErrorDetail } from "components/Error/ErrorDetail"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { Box, Skeleton, Tab, Tabs } from "@mui/material"; -import { AdSetList } from "user/adSet/AdSetList"; -import { AdList } from "user/ads/AdList"; -import { EngagementFragment } from "graphql/analytics-overview.generated"; -import { adEngagements } from "user/analytics/analyticsOverview/lib/ads.library"; +import { AdSetList } from "@/user/adSet/AdSetList"; +import { AdList } from "@/user/ads/AdList"; +import { EngagementFragment } from "@/graphql/analytics-overview.generated"; +import { adEngagements } from "@/user/analytics/analyticsOverview/lib/ads.library"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/user/CampaignReportViewSelector.tsx b/src/user/views/user/CampaignReportViewSelector.tsx index 5327d106..b1a538fc 100644 --- a/src/user/views/user/CampaignReportViewSelector.tsx +++ b/src/user/views/user/CampaignReportViewSelector.tsx @@ -1,9 +1,9 @@ import { Box, LinearProgress } from "@mui/material"; -import { AlwaysOnFormButton } from "components/Button/AlwaysOnFormButton"; -import { useLoadCampaignSummaryQuery } from "graphql/campaign.generated"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { AlwaysOnFormButton } from "@/components/Button/AlwaysOnFormButton"; +import { useLoadCampaignSummaryQuery } from "@/graphql/campaign.generated"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { useParams } from "react-router-dom"; -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; import { ConsultAccountManager } from "./reports/ConsultAccountManager"; import { OriginalCampaignReportView } from "./reports/OriginalCampaignReportView"; import { SearchCampaignReportView } from "./reports/SearchCampaignReportView"; diff --git a/src/user/views/user/CampaignView.tsx b/src/user/views/user/CampaignView.tsx index 14421cb0..bb216200 100644 --- a/src/user/views/user/CampaignView.tsx +++ b/src/user/views/user/CampaignView.tsx @@ -1,14 +1,14 @@ import { Box, Skeleton } from "@mui/material"; import { useContext } from "react"; -import { useAdvertiserCampaignsQuery } from "graphql/advertiser.generated"; -import { CampaignAgeFilter } from "components/Campaigns/CampaignAgeFilter"; -import { CampaignList } from "user/campaignList/CampaignList"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { CardContainer } from "components/Card/CardContainer"; -import MiniSideBar from "components/Drawer/MiniSideBar"; -import { useAdvertiser } from "auth/hooks/queries/useAdvertiser"; -import { FilterContext } from "state/context"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { useAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; +import { CampaignAgeFilter } from "@/components/Campaigns/CampaignAgeFilter"; +import { CampaignList } from "@/user/campaignList/CampaignList"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { CardContainer } from "@/components/Card/CardContainer"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; +import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; +import { FilterContext } from "@/state/context"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { Trans, msg } from "@lingui/macro"; export function CampaignView() { diff --git a/src/user/views/user/Profile.tsx b/src/user/views/user/Profile.tsx index d8726b69..e2fccd73 100644 --- a/src/user/views/user/Profile.tsx +++ b/src/user/views/user/Profile.tsx @@ -1,8 +1,8 @@ import { Container } from "@mui/material"; -import { UserForm } from "user/settings/UserForm"; -import { UserApiKey } from "user/settings/UserApiKey"; -import MiniSideBar from "components/Drawer/MiniSideBar"; -import { useTrackMatomoPageView } from "hooks/useTrackWithMatomo"; +import { UserForm } from "@/user/settings/UserForm"; +import { UserApiKey } from "@/user/settings/UserApiKey"; +import MiniSideBar from "@/components/Drawer/MiniSideBar"; +import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; export function Profile() { useTrackMatomoPageView({ documentTitle: "Advertiser Profile" }); diff --git a/src/user/views/user/reports/ConsultAccountManager.tsx b/src/user/views/user/reports/ConsultAccountManager.tsx index aba6a81b..260335a1 100644 --- a/src/user/views/user/reports/ConsultAccountManager.tsx +++ b/src/user/views/user/reports/ConsultAccountManager.tsx @@ -1,6 +1,6 @@ import { Alert } from "@mui/material"; import { Trans } from "@lingui/macro"; -import { DashboardButton } from "components/Button/DashboardButton"; +import { DashboardButton } from "@/components/Button/DashboardButton"; export function ConsultAccountManager() { return ( diff --git a/src/user/views/user/reports/OriginalCampaignReportView.tsx b/src/user/views/user/reports/OriginalCampaignReportView.tsx index ef19e5b9..3a9919c6 100644 --- a/src/user/views/user/reports/OriginalCampaignReportView.tsx +++ b/src/user/views/user/reports/OriginalCampaignReportView.tsx @@ -1,14 +1,14 @@ import { useState } from "react"; -import { useAnalyticOverviewQuery } from "graphql/analytics-overview.generated"; +import { useAnalyticOverviewQuery } from "@/graphql/analytics-overview.generated"; import { Box } from "@mui/material"; -import ReportUtils from "user/analytics/analyticsOverview/components/ReportUtils"; -import { EngagementsOverview } from "user/analytics/analyticsOverview/reports/campaign/EngagementsOverview"; -import { CampaignDetails } from "user/views/user/CampaignDetails"; -import { CollapseBox } from "components/Collapse/CollapseBox"; -import { OsOverview } from "user/analytics/analyticsOverview/reports/os/OsOverview"; +import ReportUtils from "@/user/analytics/analyticsOverview/components/ReportUtils"; +import { EngagementsOverview } from "@/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview"; +import { CampaignDetails } from "@/user/views/user/CampaignDetails"; +import { CollapseBox } from "@/components/Collapse/CollapseBox"; +import { OsOverview } from "@/user/analytics/analyticsOverview/reports/os/OsOverview"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import dayjs, { Dayjs } from "dayjs"; interface Props { diff --git a/src/user/views/user/reports/SearchCampaignReportView.tsx b/src/user/views/user/reports/SearchCampaignReportView.tsx index b8bc2a8b..023fa87c 100644 --- a/src/user/views/user/reports/SearchCampaignReportView.tsx +++ b/src/user/views/user/reports/SearchCampaignReportView.tsx @@ -1,19 +1,19 @@ import { Trans, msg } from "@lingui/macro"; import { Box, Stack, Typography } from "@mui/material"; -import { DashboardButton } from "components/Button/DashboardButton"; -import { Status } from "components/Campaigns/Status"; -import { CardContainer } from "components/Card/CardContainer"; -import { DateRangePicker } from "components/Date/DateRangePicker"; -import { ErrorDetail } from "components/Error/ErrorDetail"; -import { useFetchDailyMetricsForCampaignQuery } from "graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "graphql/campaign.generated"; -import { PerformanceFilter } from "graphql/types"; +import { DashboardButton } from "@/components/Button/DashboardButton"; +import { Status } from "@/components/Campaigns/Status"; +import { CardContainer } from "@/components/Card/CardContainer"; +import { DateRangePicker } from "@/components/Date/DateRangePicker"; +import { ErrorDetail } from "@/components/Error/ErrorDetail"; +import { useFetchDailyMetricsForCampaignQuery } from "@/graphql/analytics-overview.generated"; +import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; +import { PerformanceFilter } from "@/graphql/types"; import { useState } from "react"; -import { AdSetBreakdown } from "user/analytics/search/AdSetBreakdown"; -import { MetricsList } from "user/analytics/search/MetricsList"; -import { OverTimeGraph } from "user/analytics/search/OverTimeGraph"; -import { useMetricSelection } from "user/analytics/search/hooks"; -import { ReportMenu } from "user/reporting/ReportMenu"; +import { AdSetBreakdown } from "@/user/analytics/search/AdSetBreakdown"; +import { MetricsList } from "@/user/analytics/search/MetricsList"; +import { OverTimeGraph } from "@/user/analytics/search/OverTimeGraph"; +import { useMetricSelection } from "@/user/analytics/search/hooks"; +import { ReportMenu } from "@/user/reporting/ReportMenu"; import dayjs from "dayjs"; interface Props { diff --git a/src/util/campaign.ts b/src/util/campaign.ts index f74ec601..78225749 100644 --- a/src/util/campaign.ts +++ b/src/util/campaign.ts @@ -1,4 +1,4 @@ -import { CampaignFormat } from "graphql/types"; +import { CampaignFormat } from "@/graphql/types"; import { t } from "@lingui/macro"; export function uiLabelsForCampaignFormat(format: CampaignFormat): string { diff --git a/src/util/displayState.ts b/src/util/displayState.ts index 66ad135a..61f39204 100644 --- a/src/util/displayState.ts +++ b/src/util/displayState.ts @@ -1,4 +1,4 @@ -import { isDateInThePast, isDateInTheFuture } from "util/isAfterEndDate"; +import { isDateInThePast, isDateInTheFuture } from "@/util/isAfterEndDate"; export const displayFromCampaignState = (c: { campaignState: string; diff --git a/src/validation/CampaignSchema.test.ts b/src/validation/CampaignSchema.test.ts index d73cc97d..0adc2712 100644 --- a/src/validation/CampaignSchema.test.ts +++ b/src/validation/CampaignSchema.test.ts @@ -1,8 +1,8 @@ import { produce } from "immer"; -import { CampaignFormat, CampaignPacingStrategies } from "graphql/types"; +import { CampaignFormat, CampaignPacingStrategies } from "@/graphql/types"; import { CampaignSchema } from "./CampaignSchema"; import { describe } from "vitest"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; import dayjs from "dayjs"; const prices: AdvertiserPrice[] = [ diff --git a/src/validation/CampaignSchema.tsx b/src/validation/CampaignSchema.tsx index 29e1d283..1367823f 100644 --- a/src/validation/CampaignSchema.tsx +++ b/src/validation/CampaignSchema.tsx @@ -9,19 +9,19 @@ import { string, StringSchema, } from "yup"; -import { twoDaysOut } from "form/DateFieldHelpers"; +import { twoDaysOut } from "@/form/DateFieldHelpers"; import { HttpsRegex, NoSpacesRegex, SimpleUrlRegexp, TrailingAsteriskRegex, -} from "validation/regex"; -import { CreativeSchema } from "validation/CreativeSchema"; -import { CampaignFormat } from "graphql/types"; +} from "@/validation/regex"; +import { CreativeSchema } from "@/validation/CreativeSchema"; +import { CampaignFormat } from "@/graphql/types"; import BigNumber from "bignumber.js"; -import { AdvertiserPrice } from "user/hooks/useAdvertiserWithPrices"; -import { Billing } from "user/views/adsManager/types"; -import { uiLabelsForCampaignFormat } from "util/campaign"; +import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; +import { Billing } from "@/user/views/adsManager/types"; +import { uiLabelsForCampaignFormat } from "@/util/campaign"; import { t } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/validation/CreativeSchema.tsx b/src/validation/CreativeSchema.tsx index 3d117bbb..28159e12 100644 --- a/src/validation/CreativeSchema.tsx +++ b/src/validation/CreativeSchema.tsx @@ -4,7 +4,7 @@ import { NoSpacesRegex, PrivateCdnRegex, SimpleUrlRegexp, -} from "validation/regex"; +} from "@/validation/regex"; import _ from "lodash"; import * as Yup from "yup"; import { t } from "@lingui/macro"; diff --git a/src/validation/RegistrationSchema.test.ts b/src/validation/RegistrationSchema.test.ts index 1f6e6c23..67d0a595 100644 --- a/src/validation/RegistrationSchema.test.ts +++ b/src/validation/RegistrationSchema.test.ts @@ -1,6 +1,6 @@ import { produce } from "immer"; -import { RegistrationForm } from "auth/registration/types"; -import { RegistrationSchema } from "validation/RegistrationSchema"; +import { RegistrationForm } from "@/auth/registration/types"; +import { RegistrationSchema } from "@/validation/RegistrationSchema"; const validRegistration: RegistrationForm = { advertiser: { diff --git a/src/validation/RegistrationSchema.tsx b/src/validation/RegistrationSchema.tsx index cf5ae57b..f044d30e 100644 --- a/src/validation/RegistrationSchema.tsx +++ b/src/validation/RegistrationSchema.tsx @@ -1,6 +1,6 @@ import { object, string } from "yup"; import { t } from "@lingui/macro"; -import { UserSchema } from "validation/UserSchema"; +import { UserSchema } from "@/validation/UserSchema"; const SimpleUrlRegexp = /https:\/\/.+\.[a-zA-Z]{2,}\/?.*/g; const NoSpacesRegex = /^\S*$/; diff --git a/tsconfig.json b/tsconfig.json index c3cd729f..2be0b2f1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,8 @@ "lib": ["ESNext", "dom"], "isolatedModules": true, "types": ["vitest/globals"], - "baseUrl": "src" - }, - "include": ["src"] + "paths": { + "@/*": ["./src/*"] + } + } } From ccf560a5316c828a695ac70bc142406582e44099 Mon Sep 17 00:00:00 2001 From: Graham Tackley Date: Wed, 24 Apr 2024 11:15:01 +0100 Subject: [PATCH 3/6] chore: remove committed font files (#1171) We rely instead on packaged versions from @fontsource as has been the case for a long time. These are not used. --- src/assets/fonts/fonts.css | 52 ------------------ src/assets/fonts/muli/Muli Light.woff2 | Bin 11484 -> 0 bytes src/assets/fonts/muli/Muli-Bold.woff2 | Bin 11596 -> 0 bytes src/assets/fonts/muli/Muli-Regular.woff2 | Bin 11528 -> 0 bytes src/assets/fonts/poppins/Poppins-Light.otf | Bin 95240 -> 0 bytes src/assets/fonts/poppins/Poppins-Light.woff2 | Bin 7988 -> 0 bytes src/assets/fonts/poppins/Poppins-Medium.woff2 | Bin 7960 -> 0 bytes src/assets/fonts/poppins/Poppins-Regular.otf | Bin 95176 -> 0 bytes 8 files changed, 52 deletions(-) delete mode 100644 src/assets/fonts/fonts.css delete mode 100644 src/assets/fonts/muli/Muli Light.woff2 delete mode 100644 src/assets/fonts/muli/Muli-Bold.woff2 delete mode 100644 src/assets/fonts/muli/Muli-Regular.woff2 delete mode 100755 src/assets/fonts/poppins/Poppins-Light.otf delete mode 100644 src/assets/fonts/poppins/Poppins-Light.woff2 delete mode 100644 src/assets/fonts/poppins/Poppins-Medium.woff2 delete mode 100755 src/assets/fonts/poppins/Poppins-Regular.otf diff --git a/src/assets/fonts/fonts.css b/src/assets/fonts/fonts.css deleted file mode 100644 index 4d1cb040..00000000 --- a/src/assets/fonts/fonts.css +++ /dev/null @@ -1,52 +0,0 @@ -@font-face { - font-family: "Poppins"; - font-style: normal; - font-display: swap; - font-weight: 300; - src: url("./poppins/Poppins-Light.woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} - -@font-face { - font-family: "Poppins"; - font-display: swap; - font-style: normal; - font-weight: 400; - src: url("./poppins/Poppins-Regular.otf"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} - -@font-face { - font-family: "Poppins"; - font-display: swap; - font-style: normal; - font-weight: 500; - src: url("./poppins/Poppins-Medium.woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} - -@font-face { - font-family: "Muli"; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url("./muli/Muli-Regular.woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} -@font-face { - font-family: "Muli"; - font-style: normal; - font-weight: 700; - src: url("./muli/Muli-Bold.woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} diff --git a/src/assets/fonts/muli/Muli Light.woff2 b/src/assets/fonts/muli/Muli Light.woff2 deleted file mode 100644 index 35addf038431661f1ed65a5a1130fa9c675acb1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11484 zcmV<2EF;r*Pew8T0RR9104&@94gdfE0Ar*804#+70RR9100000000000000000000 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 diff --git a/src/assets/fonts/muli/Muli-Bold.woff2 b/src/assets/fonts/muli/Muli-Bold.woff2 deleted file mode 100644 index f04f28b946e7be246707b82254fd2b8fab3ba3f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11596 zcmV-SEwj>hPew8T0RR9104+=a4gdfE0AoY|04($X0RR9100000000000000000000 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 diff --git a/src/assets/fonts/poppins/Poppins-Light.otf b/src/assets/fonts/poppins/Poppins-Light.otf deleted file mode 100755 index fbf360e62af66686860e666e9a02326fc07a0063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95240 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

n>k*ujO_gHrPfvocc)3v&J) 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⪚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 I-hs~jH`cdqX#fBK diff --git a/src/assets/fonts/poppins/Poppins-Light.woff2 b/src/assets/fonts/poppins/Poppins-Light.woff2 deleted file mode 100644 index f0dad30bf8d8526484deac9f1791e8a73f87b902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7988 zcmV-4AIso(Pew8T0RR9103S2}4FCWD06xS303P800RR9100000000000000000000 z0000RARI6TU;u$s5eN$9D9~C9gEjyGHUcCAhG+yJ1%wI*gbN$oF|#8UY#a!H?9WaV zrHYbf|5bubhPpp!g-IO=ePis!&{{4aFhEJT)V?;dw9O!B_yT`95GKOGo5z_Wq%pBP z|NVZCuCwn80k~v5kxc;=IaGD2BvSPi5&#s!ctV$dhUd5We-JDtn439A%|eh=TDZWy zT%tv2!2oquOjoYm+;{bz&sDv->^FSj;#Do)=3Z3!{4ZVl|4Oox_ocY#QdF4~O}HpC zv)VnD`6x_k@9Gd>}sQ{o3*V`1KHvIOlH`>1-vd&pc2eM2g zd3|$xtlguPLh?*1PpYc|TxC)T0vX>X*-A+x3ZGv%)wDt7vxkAp=5Oi)k(l}Cf-JJQC?E^gkxzb$w}v@ zCdG{)abm(yOt|a=xOvNPX%TNkad8C9Cr`i}Y|0=Kl5!R%5)zq*6Nw9!<8Zjlg^B4) zakw_T$x@SE`CsmT*?aAe zyC*=)D^>8GLEwkM$yPlR6E}h4L_&mx9;oGQ;cV7JnJ0#Z$4yWiT$ZG5AR>*vL+PlX z{`f$eM-(4&V;?Wud7qWr%vvb)joA6LX5F{^U;lnWn|@lzj}JAUZ^YlGdmr^9haQtu zlzB|kOeAza2`LMHn5Jh*!<=L&PCJqZDa14#PBkH{Hg-B}XhhEkfss@rNnoD2`JE1A zJH%J^ z**5HOzFZ3uAn2MgJ5vIxH-) zCs0nI8HcZ{3mi*Uy|ywuJs%!85}s;y`5JYp!sIfq&?Vpvv+K08vO4m)f|6fqSr%zq z8i^~rKKUp0G@j~8qyq9QY*WijEHjtO^ zLGQU_S!~y&agSF(X=9LTy$!W{XoTR&m+83QpJ0}*yi&D`6AfpXY5Gi=_QrlCD=e!y z2qn$!-Y|qteRh$)YI(Zgd3`ZlJcpu6-R5$zqZf3%Ed;R(4;(3V7CWNUtLQ|#UUl+q@<0;PtmgDD$%k6ru4gP{0d)?{zg^qKLhDE8Y-oJS#yqJ#a+YrK;w*+ zOi!>m|4FfSr_v}YXlu{3k2U7@h7AnYnO1wab|fuu)RTsy2=zwXfp@LD4>KEQR`g(e z>D;O5V9M;~+0}3ue4SksSK=706V&B|^tp<#!V-bWuDk@CwEP2a5b^*`GB7&ue4(Y$ zQSTDuOAns%HVr9MzIXvTMA&y2D2@)!T`~<;u70j|)F8Ov;ceO5DJ2IMtupi+uX)|5 zTBv8)d!S(UO;9pam8&c?vR@0@-$D1Q@^>p&=V)l6>ElP)I9DQXJU1qrKYd!JO&9X} zgv1q@B!#sWCDh2SNp6+Ij|T9^E)8dZNsh&zSYHqRb_uW*-{|zBn>Ui7@#`hGp2OW7 zyGg%sT{aHgD!zUbbNUrzty31lI0&UZI{riW)!c2lC=_SNGcTY$*g8=0AJ#r0>zG{R zP-;t^Tf)`({or!5Q!&KM|7+pxUB@A~5oCpt8x%+C09?gx;+l3x!-nr#Hr?yD)ZUOs>a7Y>3E$rH0K+J4R; zPtrI=wkYN(X&r7nZ<4UmwIO+c($1|`bud~XFESk(rrNbuV2;PmUZ@Z1p5lwfL$|6XP0huZ8>cF+1n8Enjou;@{m3rMRW3 z#5N6T--N{&#)*lmjweh7snj1d$BBXSx%Tf^o9QqI$j#~O;?Q(I<9Q_vjNHo(MC+*@!4typ*eqc9_7mv=WkQfoUFgxFtLx#PSM+RPR)+~Tc9_$ z+YZjXf=>|O6C9mxpBu!zkQX0iCq}QY%K`gKv=f`

hXHJU+?zFU4g&YF-v%X|z0 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 diff --git a/src/assets/fonts/poppins/Poppins-Medium.woff2 b/src/assets/fonts/poppins/Poppins-Medium.woff2 deleted file mode 100644 index fcf632b49d3edb12100012bb60b18467bbea1f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7960 zcmV+zALrnAPew8T0RR9103R3t4FCWD06ruD03O8v0RR9100000000000000000000 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 OX7HbX(O4dhF2evwAzSGH diff --git a/src/assets/fonts/poppins/Poppins-Regular.otf b/src/assets/fonts/poppins/Poppins-Regular.otf deleted file mode 100755 index e5c4eee5a94853a6056b4f6785d0332ff2e6550d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95176 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

wdor)|lY$Op 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 DuN{d{ From 11b0bb279c988feff8bda661c5f44d902f82110a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 14:47:19 -0400 Subject: [PATCH 4/6] chore(deps): update all non-major dependencies (#1172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | Pending | |---|---|---|---|---|---|---|---|---| | [@mui/x-data-grid](https://mui.com/x/react-data-grid/) ([source](https://togithub.com/mui/mui-x/tree/HEAD/packages/x-data-grid)) | [`7.2.0` -> `7.3.0`](https://renovatebot.com/diffs/npm/@mui%2fx-data-grid/7.2.0/7.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@mui%2fx-data-grid/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@mui%2fx-data-grid/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@mui%2fx-data-grid/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@mui%2fx-data-grid/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | | [@types/react](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`18.2.78` -> `18.2.79`](https://renovatebot.com/diffs/npm/@types%2freact/18.2.78/18.2.79) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/18.2.79?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/18.2.79?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/18.2.78/18.2.79?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/18.2.78/18.2.79?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`7.6.0` -> `7.7.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/7.6.0/7.7.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/7.6.0/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/7.6.0/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | `7.7.1` | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`7.6.0` -> `7.7.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/7.6.0/7.7.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/7.6.0/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/7.6.0/7.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | `7.7.1` | | [actions/checkout](https://togithub.com/actions/checkout) | `v4.1.1` -> `v4.1.3` | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/actions%2fcheckout/v4.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/actions%2fcheckout/v4.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/actions%2fcheckout/v4.1.1/v4.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/actions%2fcheckout/v4.1.1/v4.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | action | patch | | | [github/codeql-action](https://togithub.com/github/codeql-action) | `v3.24.10` -> `v3.25.1` | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/github%2fcodeql-action/v3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/github%2fcodeql-action/v3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/github%2fcodeql-action/v3.24.10/v3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/github%2fcodeql-action/v3.24.10/v3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | action | minor | `v3.25.2` | | [vite](https://vitejs.dev) ([source](https://togithub.com/vitejs/vite/tree/HEAD/packages/vite)) | [`5.2.8` -> `5.2.10`](https://renovatebot.com/diffs/npm/vite/5.2.8/5.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/5.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/5.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.2.8/5.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.2.8/5.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | --- ### Release Notes

mui/mui-x (@​mui/x-data-grid) ### [`v7.3.0`](https://togithub.com/mui/mui-x/blob/HEAD/CHANGELOG.md#730) [Compare Source](https://togithub.com/mui/mui-x/compare/v7.2.0...v7.3.0) *Apr 18, 2024* We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨: - 📄 Support [unknown and estimated row count in server-side pagination](https://mui.com/x/react-data-grid/pagination/#index-based-pagination) ([#​12490](https://togithub.com/mui/mui-x/issues/12490)) [@​MBilalShafi](https://togithub.com/MBilalShafi) - 🎨 Support color scales in Charts ([#​12490](https://togithub.com/mui/mui-x/issues/12490)) [@​alexfauquette](https://togithub.com/alexfauquette) Add a [`colorMap` configuration](https://mui.com/x/react-charts/styling/#values-color) to an axis, and the chart will use it to select colors. Each impacted chart ([bar charts](https://mui.com/x/react-charts/bars/#color-scale), [line charts](https://mui.com/x/react-charts/lines/#color-scale), [scatter charts](https://mui.com/x/react-charts/scatter/#color-scale)) has a dedicated section explaining how this color map is impacting it. scatter chart with gradient along y-axis - 🌍 Improve Danish (da-DK) locale on the Data Grid - 🐞 Bugfixes - 📚 Documentation improvements ##### Data Grid ##### `@mui/x-data-grid@7.3.0` - \[DataGrid] Fix calling `onCellEditStop` on error ([#​12747](https://togithub.com/mui/mui-x/issues/12747)) [@​sai6855](https://togithub.com/sai6855) - \[DataGrid] Fix column resize ([#​12792](https://togithub.com/mui/mui-x/issues/12792)) [@​romgrk](https://togithub.com/romgrk) - \[DataGrid] Fix column separators ([#​12808](https://togithub.com/mui/mui-x/issues/12808)) [@​romgrk](https://togithub.com/romgrk) - \[DataGrid] Limit panel width to not exceed screen width ([#​12799](https://togithub.com/mui/mui-x/issues/12799)) [@​cherniavskii](https://togithub.com/cherniavskii) - \[DataGrid] Support advanced server-side pagination use cases ([#​12474](https://togithub.com/mui/mui-x/issues/12474)) [@​MBilalShafi](https://togithub.com/MBilalShafi) - \[DataGrid] Support state export and restore on grid density ([#​12671](https://togithub.com/mui/mui-x/issues/12671)) [@​MBilalShafi](https://togithub.com/MBilalShafi) - \[l10n] Improve Danish (da-DK) locale ([#​12784](https://togithub.com/mui/mui-x/issues/12784)) [@​EmilBahnsen](https://togithub.com/EmilBahnsen) ##### `@mui/x-data-grid-pro@7.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan") Same changes as in `@mui/x-data-grid@7.3.0`, plus: - \[DataGridPro] Implement header filter height ([#​12666](https://togithub.com/mui/mui-x/issues/12666)) [@​romgrk](https://togithub.com/romgrk) ##### `@mui/x-data-grid-premium@7.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan") Same changes as in `@mui/x-data-grid-pro@7.3.0`. ##### Charts ##### Breaking change A typo fix: ```diff - ContinuouseScaleName + ContinuousScaleName ``` ##### `@mui/x-charts@7.3.0` - \[charts] Add `dataIndex` to series `valueFormatter` ([#​12745](https://togithub.com/mui/mui-x/issues/12745)) [@​JCQuintas](https://togithub.com/JCQuintas) - \[charts] Add color scale ([#​12490](https://togithub.com/mui/mui-x/issues/12490)) [@​alexfauquette](https://togithub.com/alexfauquette) - \[charts] Do not document the usage of `DEFAULT_X_AXIS_KEY` and `DEFAULT_Y_AXIS_KEY` ([#​12780](https://togithub.com/mui/mui-x/issues/12780)) [@​alexfauquette](https://togithub.com/alexfauquette) - \[charts] Export more utils ([#​12744](https://togithub.com/mui/mui-x/issues/12744)) [@​alexfauquette](https://togithub.com/alexfauquette) - \[charts] Fix passing slot props down to `PieArcLabel` ([#​12806](https://togithub.com/mui/mui-x/issues/12806)) [@​JCQuintas](https://togithub.com/JCQuintas) ##### Tree View ##### `@mui/x-tree-view@7.3.0` - \[TreeView] Support `defaultMuiPrevented` on the `onFocus` prop of the root slot ([#​12813](https://togithub.com/mui/mui-x/issues/12813)) [@​flaviendelangle](https://togithub.com/flaviendelangle) ##### Docs - \[docs] Add grid cell display example to the migration guide ([#​12793](https://togithub.com/mui/mui-x/issues/12793)) [@​romgrk](https://togithub.com/romgrk) - \[docs] Use charts classes objects ([#​12781](https://togithub.com/mui/mui-x/issues/12781)) [@​alexfauquette](https://togithub.com/alexfauquette) - \[docs] Fix layout shift on demos ([#​12816](https://togithub.com/mui/mui-x/issues/12816)) [@​zanivan](https://togithub.com/zanivan) - \[test] Increase timeout for test that sometimes fail on `DateTimeRangePicker` ([#​12786](https://togithub.com/mui/mui-x/issues/12786)) [@​LukasTy](https://togithub.com/LukasTy) ##### Core - \[docs-infra] Prepare infra to document charts interfaces ([#​12653](https://togithub.com/mui/mui-x/issues/12653)) [@​alexfauquette](https://togithub.com/alexfauquette)
typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin) ### [`v7.7.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#770-2024-04-15) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.6.0...v7.7.0) ##### 🚀 Features - **eslint-plugin:** replace `no-new-symbol` with `no-new-native-nonconstructor` ##### ❤️ Thank You - Dave - Josh Goldberg ✨ You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
typescript-eslint/typescript-eslint (@​typescript-eslint/parser) ### [`v7.7.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#770-2024-04-15) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.6.0...v7.7.0) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
actions/checkout (actions/checkout) ### [`v4.1.3`](https://togithub.com/actions/checkout/releases/tag/v4.1.3) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.2...v4.1.3) #### What's Changed - Update `actions/checkout` version in `update-main-version.yml` by [@​jww3](https://togithub.com/jww3) in [https://github.com/actions/checkout/pull/1650](https://togithub.com/actions/checkout/pull/1650) - Check git version before attempting to disable `sparse-checkout` by [@​jww3](https://togithub.com/jww3) in [https://github.com/actions/checkout/pull/1656](https://togithub.com/actions/checkout/pull/1656) - Add SSH user parameter by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1685](https://togithub.com/actions/checkout/pull/1685) **Full Changelog**: https://github.com/actions/checkout/compare/v4.1.2...v4.1.3 ### [`v4.1.2`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v412) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.1...v4.1.2) - Fix: Disable sparse checkout whenever `sparse-checkout` option is not present [@​dscho](https://togithub.com/dscho) in [https://github.com/actions/checkout/pull/1598](https://togithub.com/actions/checkout/pull/1598)
github/codeql-action (github/codeql-action) ### [`v3.25.1`](https://togithub.com/github/codeql-action/compare/v3.25.0...v3.25.1) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.0...v3.25.1) ### [`v3.25.0`](https://togithub.com/github/codeql-action/compare/v3.24.10...v3.25.0) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.24.10...v3.25.0)
vitejs/vite (vite) ### [`v5.2.10`](https://togithub.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small5210-2024-04-20-small) [Compare Source](https://togithub.com/vitejs/vite/compare/v5.2.9...v5.2.10) - revert: perf: use workspace root for fs cache ([#​15712](https://togithub.com/vitejs/vite/issues/15712)) ([#​16476](https://togithub.com/vitejs/vite/issues/16476)) ([77e7359](https://togithub.com/vitejs/vite/commit/77e7359)), closes [#​15712](https://togithub.com/vitejs/vite/issues/15712) [#​16476](https://togithub.com/vitejs/vite/issues/16476) - fix: add base to virtual html ([#​16442](https://togithub.com/vitejs/vite/issues/16442)) ([721f94d](https://togithub.com/vitejs/vite/commit/721f94d)), closes [#​16442](https://togithub.com/vitejs/vite/issues/16442) - fix: adjust esm syntax judgment logic ([#​16436](https://togithub.com/vitejs/vite/issues/16436)) ([af72eab](https://togithub.com/vitejs/vite/commit/af72eab)), closes [#​16436](https://togithub.com/vitejs/vite/issues/16436) - fix: don't add outDirs to watch.ignored if emptyOutDir is false ([#​16453](https://togithub.com/vitejs/vite/issues/16453)) ([6a127d6](https://togithub.com/vitejs/vite/commit/6a127d6)), closes [#​16453](https://togithub.com/vitejs/vite/issues/16453) - fix(cspNonce): don't overwrite existing nonce values ([#​16415](https://togithub.com/vitejs/vite/issues/16415)) ([b872635](https://togithub.com/vitejs/vite/commit/b872635)), closes [#​16415](https://togithub.com/vitejs/vite/issues/16415) - feat: show warning if root is in build.outDir ([#​16454](https://togithub.com/vitejs/vite/issues/16454)) ([11444dc](https://togithub.com/vitejs/vite/commit/11444dc)), closes [#​16454](https://togithub.com/vitejs/vite/issues/16454) - feat: write cspNonce to style tags ([#​16419](https://togithub.com/vitejs/vite/issues/16419)) ([8e54bbd](https://togithub.com/vitejs/vite/commit/8e54bbd)), closes [#​16419](https://togithub.com/vitejs/vite/issues/16419) - chore(deps): update dependency eslint-plugin-n to v17 ([#​16381](https://togithub.com/vitejs/vite/issues/16381)) ([6cccef7](https://togithub.com/vitejs/vite/commit/6cccef7)), closes [#​16381](https://togithub.com/vitejs/vite/issues/16381) ### [`v5.2.9`](https://togithub.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small529-2024-04-15-small) [Compare Source](https://togithub.com/vitejs/vite/compare/v5.2.8...v5.2.9) - fix: `fsp.rm` removing files does not take effect ([#​16032](https://togithub.com/vitejs/vite/issues/16032)) ([b05c405](https://togithub.com/vitejs/vite/commit/b05c405)), closes [#​16032](https://togithub.com/vitejs/vite/issues/16032) - fix: fix accumulated stacks in error overlay ([#​16393](https://togithub.com/vitejs/vite/issues/16393)) ([102c2fd](https://togithub.com/vitejs/vite/commit/102c2fd)), closes [#​16393](https://togithub.com/vitejs/vite/issues/16393) - fix(deps): update all non-major dependencies ([#​16376](https://togithub.com/vitejs/vite/issues/16376)) ([58a2938](https://togithub.com/vitejs/vite/commit/58a2938)), closes [#​16376](https://togithub.com/vitejs/vite/issues/16376) - chore: update region comment ([#​16380](https://togithub.com/vitejs/vite/issues/16380)) ([77562c3](https://togithub.com/vitejs/vite/commit/77562c3)), closes [#​16380](https://togithub.com/vitejs/vite/issues/16380) - perf: reduce size of injected \__vite\_\_mapDeps code ([#​16184](https://togithub.com/vitejs/vite/issues/16184)) ([c0ec6be](https://togithub.com/vitejs/vite/commit/c0ec6be)), closes [#​16184](https://togithub.com/vitejs/vite/issues/16184) - perf(css): only replace empty chunk if imported ([#​16349](https://togithub.com/vitejs/vite/issues/16349)) ([e2658ad](https://togithub.com/vitejs/vite/commit/e2658ad)), closes [#​16349](https://togithub.com/vitejs/vite/issues/16349)
--- ### Configuration 📅 **Schedule**: Branch creation - "* 0-4 * * 3" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/brave/ads-ui). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 8 +- .github/workflows/deploy-to-production.yml | 2 +- .github/workflows/deploy-to-staging.yml | 2 +- .github/workflows/sanity-check.yml | 2 +- package-lock.json | 112 ++++++++++----------- package.json | 10 +- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 80df63eb..8efe82b3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,11 +38,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/init@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -53,7 +53,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/autobuild@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -67,4 +67,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/analyze@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 diff --git a/.github/workflows/deploy-to-production.yml b/.github/workflows/deploy-to-production.yml index 144b29d9..f15de6a7 100644 --- a/.github/workflows/deploy-to-production.yml +++ b/.github/workflows/deploy-to-production.yml @@ -12,7 +12,7 @@ jobs: url: https://ads.brave.com steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - name: Use Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/deploy-to-staging.yml b/.github/workflows/deploy-to-staging.yml index bb2107fe..2c664a47 100644 --- a/.github/workflows/deploy-to-staging.yml +++ b/.github/workflows/deploy-to-staging.yml @@ -13,7 +13,7 @@ jobs: url: https://ads.bravesoftware.com steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - name: Use Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/workflows/sanity-check.yml b/.github/workflows/sanity-check.yml index a469883c..cd36dd9e 100644 --- a/.github/workflows/sanity-check.yml +++ b/.github/workflows/sanity-check.yml @@ -12,7 +12,7 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - name: Use Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/package-lock.json b/package-lock.json index 3bd805a8..69f015c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@mui/icons-material": "5.15.15", "@mui/lab": "5.0.0-alpha.170", "@mui/material": "5.15.15", - "@mui/x-data-grid": "7.2.0", + "@mui/x-data-grid": "7.3.0", "@mui/x-date-pickers": "7.2.0", "bignumber.js": "9.1.2", "dayjs": "1.11.10", @@ -48,11 +48,11 @@ "@lingui/vite-plugin": "4.10.0", "@types/lodash": "4.17.0", "@types/papaparse": "5.3.14", - "@types/react": "18.2.78", + "@types/react": "18.2.79", "@types/react-dom": "18.2.25", "@types/react-router-dom": "5.3.3", - "@typescript-eslint/eslint-plugin": "7.6.0", - "@typescript-eslint/parser": "7.6.0", + "@typescript-eslint/eslint-plugin": "7.7.0", + "@typescript-eslint/parser": "7.7.0", "@vitejs/plugin-basic-ssl": "1.1.0", "@vitejs/plugin-react": "4.2.1", "babel-plugin-macros": "3.1.0", @@ -65,7 +65,7 @@ "npm-run-all2": "6.1.2", "prettier": "3.2.5", "typescript": "5.4.5", - "vite": "5.2.8", + "vite": "5.2.10", "vite-plugin-checker": "0.6.4", "vite-tsconfig-paths": "4.3.2", "vitest": "1.5.0" @@ -4336,9 +4336,9 @@ } }, "node_modules/@mui/x-data-grid": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-7.2.0.tgz", - "integrity": "sha512-WKmFo0eKhj3W7Fv8u5n2XP4UcdzuJ+mEYALiMUDAYsah/hPBH9mA1miXn9DjXF3i3dxgzrTjdJemTgTJxAQZKg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-7.3.0.tgz", + "integrity": "sha512-IIDS6Yvxe+1eRj65q8cgnJg5yF2aIJYuHrY00W/UaFyjxwj3xSzqg3bdEfbjE2gHGS7lEJJbXSenPNGybzW99A==", "dependencies": { "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", @@ -4833,9 +4833,9 @@ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { - "version": "18.2.78", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.78.tgz", - "integrity": "sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==", + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4908,16 +4908,16 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", - "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", + "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.6.0", - "@typescript-eslint/type-utils": "7.6.0", - "@typescript-eslint/utils": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/type-utils": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -4943,15 +4943,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", - "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.6.0", - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/typescript-estree": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4" }, "engines": { @@ -4971,13 +4971,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz", - "integrity": "sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", + "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0" + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4988,13 +4988,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", - "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", + "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.6.0", - "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/utils": "7.7.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5015,9 +5015,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", - "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", + "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5028,13 +5028,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", - "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", + "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5056,17 +5056,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", - "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", + "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.6.0", - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", "semver": "^7.6.0" }, "engines": { @@ -5081,12 +5081,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz", - "integrity": "sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", + "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/types": "7.7.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -12256,9 +12256,9 @@ } }, "node_modules/vite": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", - "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz", + "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==", "dev": true, "dependencies": { "esbuild": "^0.20.1", diff --git a/package.json b/package.json index fe5e5a03..2ac0b139 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@mui/icons-material": "5.15.15", "@mui/lab": "5.0.0-alpha.170", "@mui/material": "5.15.15", - "@mui/x-data-grid": "7.2.0", + "@mui/x-data-grid": "7.3.0", "@mui/x-date-pickers": "7.2.0", "bignumber.js": "9.1.2", "dayjs": "1.11.10", @@ -60,11 +60,11 @@ "@lingui/vite-plugin": "4.10.0", "@types/lodash": "4.17.0", "@types/papaparse": "5.3.14", - "@types/react": "18.2.78", + "@types/react": "18.2.79", "@types/react-dom": "18.2.25", "@types/react-router-dom": "5.3.3", - "@typescript-eslint/eslint-plugin": "7.6.0", - "@typescript-eslint/parser": "7.6.0", + "@typescript-eslint/eslint-plugin": "7.7.0", + "@typescript-eslint/parser": "7.7.0", "@vitejs/plugin-basic-ssl": "1.1.0", "@vitejs/plugin-react": "4.2.1", "babel-plugin-macros": "3.1.0", @@ -77,7 +77,7 @@ "npm-run-all2": "6.1.2", "prettier": "3.2.5", "typescript": "5.4.5", - "vite": "5.2.8", + "vite": "5.2.10", "vite-plugin-checker": "0.6.4", "vite-tsconfig-paths": "4.3.2", "vitest": "1.5.0" From c47e8973c5fd751fdcc4091e6e2e13932a980b3b Mon Sep 17 00:00:00 2001 From: Graham Tackley Date: Thu, 25 Apr 2024 09:54:06 +0100 Subject: [PATCH 5/6] refactor: switch to use graphqlcodegen client-preset (#1173) As we use on other internal projects, use the client-preset for codegen. This means we can more easily: - make use of other apollo operations like `useSuspenseQuery` - migrate code from internal codebases to here - in due course, move towards co-locating queries with their components, and [using fragment hiding](https://the-guild.dev/blog/unleash-the-power-of-fragments-with-graphql-codegen) to better track what needs to be queried I've tried to be mechanical about the changes here, limiting changes to just what was needed. --- .gitattributes | 1 + .prettierignore | 3 + codegen.ts | 29 +- package-lock.json | 378 ---- package.json | 4 - src/auth/components/AdvertiserAddress.tsx | 2 +- src/auth/components/AdvertiserDetailsForm.tsx | 15 +- src/auth/components/types.ts | 2 +- src/auth/context/auth.interface.ts | 2 +- src/auth/hooks/queries/useAdvertiser.ts | 2 +- src/auth/lib/index.ts | 8 +- src/components/Assets/AdvertiserAssets.tsx | 13 +- src/components/Assets/ImageAutocomplete.tsx | 5 +- src/components/Assets/UploadImage.tsx | 2 +- src/components/Assets/hooks/useUploadFile.ts | 15 +- src/components/Campaigns/CloneCampaign.tsx | 26 +- .../Creatives/CreateCreativeButton.tsx | 14 +- .../Creatives/CreativeCampaigns.tsx | 2 +- src/components/Creatives/CreativeForm.tsx | 11 +- src/components/Creatives/CreativeList.tsx | 11 +- src/components/Creatives/CreativeSelect.tsx | 2 +- .../Creatives/CreativeSpecificPreview.tsx | 2 +- .../Creatives/CreativeStatusSwitch.tsx | 47 +- src/components/Creatives/CreativeType.tsx | 2 +- src/components/Creatives/NewsPreview.tsx | 2 +- .../Creatives/NotificationPreview.tsx | 2 +- .../Creatives/hooks/useGetCreativeDetails.tsx | 6 +- .../Creatives/hooks/useSubmitCreative.tsx | 22 +- src/components/Datagrid/renderers.tsx | 39 +- src/components/Location/LocationPicker.tsx | 6 +- src/components/Segment/SegmentPicker.tsx | 5 +- src/components/Switch/OnOff.tsx | 2 +- src/components/Url/use-url-validation.ts | 7 +- src/form/fragmentUtil.ts | 9 +- src/graphql-client/gql.ts | 327 +++ src/graphql-client/graphql.ts | 1919 +++++++++++++++++ src/graphql-client/index.ts | 1 + src/graphql/ad-set.generated.tsx | 503 ----- src/graphql/advertiser.generated.tsx | 777 ------- src/graphql/analytics-overview.generated.tsx | 765 ------- src/graphql/campaign.generated.tsx | 876 -------- src/graphql/common.generated.tsx | 186 -- src/graphql/creative.generated.tsx | 678 ------ src/graphql/types.ts | 600 ------ src/graphql/url.generated.tsx | 108 - src/graphql/user.generated.tsx | 160 -- src/user/adSet/AdSetList.tsx | 5 +- src/user/ads/AdList.tsx | 10 +- src/user/ads/AdsExistingAd.tsx | 11 +- src/user/ads/NewAd.tsx | 2 +- .../components/EngagementHeader.tsx | 2 +- .../components/ReportUtils.tsx | 2 +- .../analyticsOverview/lib/ads.library.ts | 2 +- .../analyticsOverview/lib/os.library.ts | 2 +- .../analyticsOverview/lib/overview.library.ts | 2 +- .../reports/campaign/EngagementsOverview.tsx | 8 +- .../reports/os/OsOverview.tsx | 2 +- src/user/analytics/renderers/index.tsx | 6 +- src/user/analytics/search/AdSetBreakdown.tsx | 15 +- src/user/analytics/search/MetricSelector.tsx | 2 +- src/user/analytics/search/MetricsList.tsx | 6 +- src/user/analytics/search/OverTimeGraph.tsx | 2 +- src/user/analytics/search/metrics.ts | 6 +- src/user/analytics/search/series.test.ts | 2 +- src/user/analytics/search/series.ts | 2 +- src/user/campaignList/CampaignList.tsx | 17 +- src/user/campaignList/EditButton.tsx | 7 +- src/user/hooks/useAdvertiserWithPrices.tsx | 13 +- src/user/library/index.test.ts | 8 +- src/user/library/index.ts | 8 +- src/user/settings/NewKeyPairModal.tsx | 5 +- src/user/settings/UserForm.tsx | 5 +- src/user/views/adsManager/types/index.ts | 6 +- .../advanced/components/adSet/AdSetFields.tsx | 2 +- .../components/adSet/fields/AdSetAds.tsx | 2 +- .../components/adSet/fields/PickerFields.tsx | 3 +- .../components/BillingModelSelect.tsx | 2 +- .../campaign/components/CustomPriceSelect.tsx | 2 +- .../campaign/fields/FormatField.tsx | 2 +- .../campaign/fields/PaymentMethodField.tsx | 2 +- .../advanced/components/form/EditCampaign.tsx | 20 +- .../advanced/components/form/NewCampaign.tsx | 16 +- .../review/components/AdSetReview.tsx | 2 +- src/user/views/user/AdDetailTable.tsx | 3 +- src/user/views/user/CampaignDetails.tsx | 9 +- .../views/user/CampaignReportViewSelector.tsx | 9 +- src/user/views/user/CampaignView.tsx | 5 +- .../reports/OriginalCampaignReportView.tsx | 9 +- .../user/reports/SearchCampaignReportView.tsx | 11 +- src/util/campaign.ts | 2 +- src/validation/CampaignSchema.test.ts | 5 +- src/validation/CampaignSchema.tsx | 2 +- 92 files changed, 2579 insertions(+), 5285 deletions(-) create mode 100644 src/graphql-client/gql.ts create mode 100644 src/graphql-client/graphql.ts create mode 100644 src/graphql-client/index.ts delete mode 100644 src/graphql/ad-set.generated.tsx delete mode 100644 src/graphql/advertiser.generated.tsx delete mode 100644 src/graphql/analytics-overview.generated.tsx delete mode 100644 src/graphql/campaign.generated.tsx delete mode 100644 src/graphql/common.generated.tsx delete mode 100644 src/graphql/creative.generated.tsx delete mode 100644 src/graphql/types.ts delete mode 100644 src/graphql/url.generated.tsx delete mode 100644 src/graphql/user.generated.tsx diff --git a/.gitattributes b/.gitattributes index 1e23a0ed..f2b10959 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ *.generated.tsx linguist-generated src/graphql/types.ts linguist-generated +src/graphql-client/*.ts linguist-generated *.po linguist-generated diff --git a/.prettierignore b/.prettierignore index b8c8c9b3..0a34595e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,6 +2,9 @@ node_modules build src/locales/*.js +# these files are code generated +src/graphql-client/*.ts + # npm and prettier fight over a EOF on these files, let npm win: package.json package-lock.json diff --git a/codegen.ts b/codegen.ts index 21354686..dddc7545 100644 --- a/codegen.ts +++ b/codegen.ts @@ -2,8 +2,17 @@ import { CodegenConfig } from "@graphql-codegen/cli"; const config: CodegenConfig = { schema: "../ads-serve/src/graphql/schema.graphql", - documents: "./src/**/*.graphql", - hooks: { afterAllFileWrite: ["prettier --write"] }, + documents: ["src/**/*.ts", "src/**/*.tsx", "src/**/*.graphql"], + ignoreNoDocuments: true, + overwrite: true, + generates: { + "./src/graphql-client/": { + preset: "client", + presetConfig: { + fragmentMasking: false, + }, + }, + }, config: { strictScalars: true, useTypeImports: true, @@ -16,20 +25,6 @@ const config: CodegenConfig = { JSONObject: "object", }, }, - generates: { - "src/": { - preset: "near-operation-file", - presetConfig: { - extension: ".generated.tsx", - baseTypesPath: "graphql/types.ts", - }, - plugins: ["typescript-operations", "typescript-react-apollo"], - config: { withHooks: true, withRefetchFn: true, skipTypename: true }, - }, - "src/graphql/types.ts": { - plugins: ["typescript"], - config: { onlyOperationTypes: true }, - }, - }, }; + export default config; diff --git a/package-lock.json b/package-lock.json index 69f015c1..c21bcb77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,10 +40,6 @@ "devDependencies": { "@babel/core": "7.24.4", "@graphql-codegen/cli": "5.0.2", - "@graphql-codegen/near-operation-file-preset": "3.0.0", - "@graphql-codegen/typescript": "4.0.6", - "@graphql-codegen/typescript-operations": "4.2.0", - "@graphql-codegen/typescript-react-apollo": "4.3.0", "@lingui/cli": "4.10.0", "@lingui/vite-plugin": "4.10.0", "@types/lodash": "4.17.0", @@ -1897,55 +1893,6 @@ "resolved": "https://registry.npmjs.org/@fontsource/poppins/-/poppins-5.0.13.tgz", "integrity": "sha512-8G9odFoxH43oZpvq43fpGucm8iHm6iatu0M1LIshb+tx3/y6YBXenVED7CI4resvPz6hyDu8a2vHSh9vrpe+wQ==" }, - "node_modules/@graphql-codegen/add": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.3.tgz", - "integrity": "sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==", - "dev": true, - "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.1.1", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/add/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dev": true, - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/add/node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", - "dev": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/add/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, "node_modules/@graphql-codegen/cli": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.2.tgz", @@ -2184,175 +2131,6 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/near-operation-file-preset": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@graphql-codegen/near-operation-file-preset/-/near-operation-file-preset-3.0.0.tgz", - "integrity": "sha512-HRPaa7OsIAHQBFeGiTUVdjFcxzgvAs7uxSqcLEJgDpCr9cffpwnlgWP3gK79KnTiHsRkyb55U1K4YyrL00g1Cw==", - "dev": true, - "dependencies": { - "@graphql-codegen/add": "^3.2.1", - "@graphql-codegen/plugin-helpers": "^3.0.0", - "@graphql-codegen/visitor-plugin-common": "2.13.1", - "@graphql-tools/utils": "^10.0.0", - "parse-filepath": "^1.0.2", - "tslib": "~2.6.0" - }, - "engines": { - "node": ">= 16.0.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dev": true, - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers/node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", - "dev": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", - "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", - "dev": true, - "dependencies": { - "@graphql-codegen/plugin-helpers": "^2.7.2", - "@graphql-tools/optimize": "^1.3.0", - "@graphql-tools/relay-operation-optimizer": "^6.5.0", - "@graphql-tools/utils": "^8.8.0", - "auto-bind": "~4.0.0", - "change-case-all": "1.0.14", - "dependency-graph": "^0.11.0", - "graphql-tag": "^2.11.0", - "parse-filepath": "^1.0.2", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", - "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", - "dev": true, - "dependencies": { - "@graphql-tools/utils": "^8.8.0", - "change-case-all": "1.0.14", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", - "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", - "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", - "dev": true, - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/optimize": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", - "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/relay-operation-optimizer": { - "version": "6.5.18", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", - "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", - "dev": true, - "dependencies": { - "@ardatan/relay-compiler": "12.0.0", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", - "dev": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-codegen/plugin-helpers": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.3.tgz", @@ -2474,162 +2252,6 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/typescript-react-apollo": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-react-apollo/-/typescript-react-apollo-4.3.0.tgz", - "integrity": "sha512-h+IxCGrOTDD60/6ztYDQs81yKDZZq/8aHqM9HHrZ9FiZn145O48VnQNCmGm88I619G9rEET8cCOrtYkCt+ZSzA==", - "dev": true, - "dependencies": { - "@graphql-codegen/plugin-helpers": "^3.0.0", - "@graphql-codegen/visitor-plugin-common": "2.13.1", - "auto-bind": "~4.0.0", - "change-case-all": "1.0.15", - "tslib": "~2.6.0" - }, - "engines": { - "node": ">= 16.0.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", - "graphql-tag": "^2.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/plugin-helpers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", - "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", - "dev": true, - "dependencies": { - "@graphql-tools/utils": "^9.0.0", - "change-case-all": "1.0.15", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", - "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", - "dev": true, - "dependencies": { - "@graphql-codegen/plugin-helpers": "^2.7.2", - "@graphql-tools/optimize": "^1.3.0", - "@graphql-tools/relay-operation-optimizer": "^6.5.0", - "@graphql-tools/utils": "^8.8.0", - "auto-bind": "~4.0.0", - "change-case-all": "1.0.14", - "dependency-graph": "^0.11.0", - "graphql-tag": "^2.11.0", - "parse-filepath": "^1.0.2", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", - "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", - "dev": true, - "dependencies": { - "@graphql-tools/utils": "^8.8.0", - "change-case-all": "1.0.14", - "common-tags": "1.8.2", - "import-from": "4.0.0", - "lodash": "~4.17.0", - "tslib": "~2.4.0" - }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", - "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", - "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", - "dev": true, - "dependencies": { - "change-case": "^4.1.2", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lower-case": "^2.0.2", - "lower-case-first": "^2.0.2", - "sponge-case": "^1.0.1", - "swap-case": "^2.0.2", - "title-case": "^3.0.3", - "upper-case": "^2.0.2", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/optimize": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", - "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/relay-operation-optimizer": { - "version": "6.5.18", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", - "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", - "dev": true, - "dependencies": { - "@ardatan/relay-compiler": "12.0.0", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", - "dev": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-codegen/typescript/node_modules/@graphql-codegen/visitor-plugin-common": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.1.0.tgz", diff --git a/package.json b/package.json index 2ac0b139..76ae2408 100644 --- a/package.json +++ b/package.json @@ -52,10 +52,6 @@ "devDependencies": { "@babel/core": "7.24.4", "@graphql-codegen/cli": "5.0.2", - "@graphql-codegen/near-operation-file-preset": "3.0.0", - "@graphql-codegen/typescript": "4.0.6", - "@graphql-codegen/typescript-operations": "4.2.0", - "@graphql-codegen/typescript-react-apollo": "4.3.0", "@lingui/cli": "4.10.0", "@lingui/vite-plugin": "4.10.0", "@types/lodash": "4.17.0", diff --git a/src/auth/components/AdvertiserAddress.tsx b/src/auth/components/AdvertiserAddress.tsx index be54c63e..ea53111e 100644 --- a/src/auth/components/AdvertiserAddress.tsx +++ b/src/auth/components/AdvertiserAddress.tsx @@ -2,9 +2,9 @@ import { Box, Stack } from "@mui/material"; import { FormikTextField } from "@/form/FormikHelpers"; import { CountryPicker } from "@/components/Country/CountryPicker"; import { PropsWithChildren } from "react"; -import { AdvertiserBillingAddressFragment } from "@/graphql/advertiser.generated"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; +import { AdvertiserBillingAddressFragment } from "@/graphql-client/graphql"; interface Props { address: AdvertiserBillingAddressFragment["billingAddress"]; diff --git a/src/auth/components/AdvertiserDetailsForm.tsx b/src/auth/components/AdvertiserDetailsForm.tsx index 0ae2c15d..55551ed3 100644 --- a/src/auth/components/AdvertiserDetailsForm.tsx +++ b/src/auth/components/AdvertiserDetailsForm.tsx @@ -4,14 +4,14 @@ import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Form, Formik } from "formik"; import { AdvertiserAddress } from "@/auth/components/AdvertiserAddress"; import { useAuthContext } from "@/auth/context/auth.hook"; -import { - useAdvertiserBillingAddressQuery, - useUpdateAdvertiserMutation, -} from "@/graphql/advertiser.generated"; import { getUser } from "@/auth/lib"; import { AdvertiserForm, initialAdvertiserForm } from "@/auth/components/types"; import { useHistory } from "react-router-dom"; -import { PaymentType } from "@/graphql/types"; +import { + AdvertiserBillingAddressDocument, + PaymentType, + UpdateAdvertiserDocument, +} from "@/graphql-client/graphql"; import { AdvertiserAgreed } from "@/auth/components/AdvertiserAgreed"; import { FormikSubmitButton } from "@/form/FormikButton"; import { AdvertiserSchema } from "@/validation/AdvertiserSchema"; @@ -19,6 +19,7 @@ import { useState } from "react"; import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import _ from "lodash"; import { msg, Trans } from "@lingui/macro"; +import { useMutation, useQuery } from "@apollo/client"; export function AdvertiserDetailsForm() { const { trackMatomoEvent } = useTrackWithMatomo({ @@ -34,7 +35,7 @@ export function AdvertiserDetailsForm() { initialAdvertiserForm(!requiresPaymentAgree), ); - const [mutation] = useUpdateAdvertiserMutation({ + const [mutation] = useMutation(UpdateAdvertiserDocument, { async onCompleted() { const user = await getUser(); setSessionUser(user); @@ -46,7 +47,7 @@ export function AdvertiserDetailsForm() { }, }); - const { data, loading } = useAdvertiserBillingAddressQuery({ + const { data, loading } = useQuery(AdvertiserBillingAddressDocument, { variables: { id: advertiser.id }, onCompleted: (data) => { setInitial(initialAdvertiserForm(!requiresPaymentAgree, data.advertiser)); diff --git a/src/auth/components/types.ts b/src/auth/components/types.ts index 5c8db00f..73c8cef1 100644 --- a/src/auth/components/types.ts +++ b/src/auth/components/types.ts @@ -1,4 +1,4 @@ -import { AdvertiserBillingAddressFragment } from "@/graphql/advertiser.generated"; +import { AdvertiserBillingAddressFragment } from "@/graphql-client/graphql"; export type AdvertiserForm = { tracking: boolean; diff --git a/src/auth/context/auth.interface.ts b/src/auth/context/auth.interface.ts index cb52b02b..026982f1 100644 --- a/src/auth/context/auth.interface.ts +++ b/src/auth/context/auth.interface.ts @@ -1,6 +1,6 @@ import { ReactNode } from "react"; import { ResponseUser } from "../lib"; -import { PaymentType } from "@/graphql/types"; +import { PaymentType } from "@/graphql-client/graphql"; export type IAdvertiser = { id: string; diff --git a/src/auth/hooks/queries/useAdvertiser.ts b/src/auth/hooks/queries/useAdvertiser.ts index 990460b7..7e1c6ccf 100644 --- a/src/auth/hooks/queries/useAdvertiser.ts +++ b/src/auth/hooks/queries/useAdvertiser.ts @@ -1,6 +1,6 @@ import { useAuthContext } from "@/auth/context/auth.hook"; import { IAdvertiser } from "@/auth/context/auth.interface"; -import { PaymentType } from "@/graphql/types"; +import { PaymentType } from "@/graphql-client/graphql"; export function useAdvertiser(): { advertiser: IAdvertiser; diff --git a/src/auth/lib/index.ts b/src/auth/lib/index.ts index e5240bab..9c07a24b 100644 --- a/src/auth/lib/index.ts +++ b/src/auth/lib/index.ts @@ -1,6 +1,8 @@ -import { UserFragment } from "@/graphql/user.generated"; -import { AdvertiserFragment } from "@/graphql/advertiser.generated"; -import { PaymentType } from "@/graphql/types"; +import { + AdvertiserFragment, + PaymentType, + UserFragment, +} from "@/graphql-client/graphql"; import { buildAdServerEndpoint, buildAdServerV2Endpoint, diff --git a/src/components/Assets/AdvertiserAssets.tsx b/src/components/Assets/AdvertiserAssets.tsx index ddef2bfe..b912e360 100644 --- a/src/components/Assets/AdvertiserAssets.tsx +++ b/src/components/Assets/AdvertiserAssets.tsx @@ -1,24 +1,25 @@ -import { - AdvertiserImageFragment, - useAdvertiserImagesQuery, -} from "@/graphql/advertiser.generated"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { CardContainer } from "@/components/Card/CardContainer"; import { Grid, LinearProgress, Typography } from "@mui/material"; import MiniSideBar from "@/components/Drawer/MiniSideBar"; import { ImagePreview } from "@/components/Assets/ImagePreview"; -import { CampaignFormat } from "@/graphql/types"; +import { + AdvertiserImageFragment, + AdvertiserImagesDocument, + CampaignFormat, +} from "@/graphql-client/graphql"; import { RouteSelectionButton } from "@/components/Route/RouteSelectionButton"; import Box from "@mui/material/Box"; import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import dayjs from "dayjs"; +import { useQuery } from "@apollo/client"; export function AdvertiserAssets() { useTrackMatomoPageView({ documentTitle: "Advertiser Assets" }); const { advertiser } = useAdvertiser(); - const { data, loading, error } = useAdvertiserImagesQuery({ + const { data, loading, error } = useQuery(AdvertiserImagesDocument, { variables: { id: advertiser.id }, initialFetchPolicy: "cache-and-network", nextFetchPolicy: "cache-only", diff --git a/src/components/Assets/ImageAutocomplete.tsx b/src/components/Assets/ImageAutocomplete.tsx index c63c2ede..a63d606f 100644 --- a/src/components/Assets/ImageAutocomplete.tsx +++ b/src/components/Assets/ImageAutocomplete.tsx @@ -1,4 +1,3 @@ -import { useAdvertiserImagesQuery } from "@/graphql/advertiser.generated"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Autocomplete, createFilterOptions, TextField } from "@mui/material"; import { useEffect, useState } from "react"; @@ -6,6 +5,8 @@ import { useField } from "formik"; import { UploadImage } from "@/components/Assets/UploadImage"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; +import { AdvertiserImagesDocument } from "@/graphql-client/graphql"; type ImageOption = { label: string; image?: string }; @@ -18,7 +19,7 @@ export function ImageAutocomplete(props: { name: string }) { const showError = hasError && meta.touched; const { advertiser } = useAdvertiser(); const [options, setOptions] = useState(); - const { data, loading } = useAdvertiserImagesQuery({ + const { data, loading } = useQuery(AdvertiserImagesDocument, { variables: { id: advertiser.id }, }); const { _ } = useLingui(); diff --git a/src/components/Assets/UploadImage.tsx b/src/components/Assets/UploadImage.tsx index a14944ca..2ba920c1 100644 --- a/src/components/Assets/UploadImage.tsx +++ b/src/components/Assets/UploadImage.tsx @@ -14,7 +14,7 @@ import { StepLabel, Stepper, } from "@mui/material"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { useUploadFile } from "@/components/Assets/hooks/useUploadFile"; import { NewImageButton } from "@/components/Navigation/NewImageButton"; import { Trans } from "@lingui/macro"; diff --git a/src/components/Assets/hooks/useUploadFile.ts b/src/components/Assets/hooks/useUploadFile.ts index 7944c713..38cc52be 100644 --- a/src/components/Assets/hooks/useUploadFile.ts +++ b/src/components/Assets/hooks/useUploadFile.ts @@ -1,14 +1,15 @@ import { buildAdServerEndpoint, getEnvConfig } from "@/util/environment"; import { useCallback, useState } from "react"; import _ from "lodash"; -import { - refetchAdvertiserImagesQuery, - useUploadAdvertiserImageMutation, -} from "@/graphql/advertiser.generated"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; -import { CampaignFormat } from "@/graphql/types"; +import { + AdvertiserImagesDocument, + CampaignFormat, + UploadAdvertiserImageDocument, +} from "@/graphql-client/graphql"; import { UploadConfig } from "@/components/Assets/UploadImage"; import { t } from "@lingui/macro"; +import { useMutation } from "@apollo/client"; interface PutUploadResponse { // the pre-signed url to which the file should be uploaded to @@ -29,9 +30,9 @@ export const useUploadFile = ({ onComplete }: Props = {}) => { const [state, setState] = useState(); const [loading, setLoading] = useState(false); - const [mutate] = useUploadAdvertiserImageMutation({ + const [mutate] = useMutation(UploadAdvertiserImageDocument, { refetchQueries: [ - { ...refetchAdvertiserImagesQuery({ id: advertiser.id }) }, + { query: AdvertiserImagesDocument, variables: { id: advertiser.id } }, ], onError(e) { setError(e.message); diff --git a/src/components/Campaigns/CloneCampaign.tsx b/src/components/Campaigns/CloneCampaign.tsx index edcd14df..9ffc8503 100644 --- a/src/components/Campaigns/CloneCampaign.tsx +++ b/src/components/Campaigns/CloneCampaign.tsx @@ -9,22 +9,24 @@ import { LinearProgress, Tooltip, } from "@mui/material"; -import { - CampaignSummaryFragment, - useCreateCampaignMutation, - useLoadCampaignLazyQuery, -} from "@/graphql/campaign.generated"; import { useHistory } from "react-router-dom"; import { useContext, useState } from "react"; -import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; import { createCampaignFromFragment } from "@/form/fragmentUtil"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import { useUser } from "@/auth/hooks/queries/useUser"; import { FilterContext } from "@/state/context"; -import { CampaignFormat, CampaignSource } from "@/graphql/types"; +import { + AdvertiserCampaignsDocument, + CampaignFormat, + CampaignSource, + CampaignSummaryFragment, + CreateCampaignDocument, + LoadCampaignDocument, +} from "@/graphql-client/graphql"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { useLazyQuery, useMutation } from "@apollo/client"; interface Props { campaign?: CampaignSummaryFragment; @@ -40,14 +42,16 @@ export function CloneCampaign({ campaign, disabled }: Props) { const { _ } = useLingui(); const unableToClone = _(msg`Unable to clone campaign`); - const [getCampaign, { loading: getLoading }] = useLoadCampaignLazyQuery(); - const [copyCampaign, { loading }] = useCreateCampaignMutation({ + const [getCampaign, { loading: getLoading }] = + useLazyQuery(LoadCampaignDocument); + const [copyCampaign, { loading }] = useMutation(CreateCampaignDocument, { refetchQueries: [ { - ...refetchAdvertiserCampaignsQuery({ + query: AdvertiserCampaignsDocument, + variables: { id: advertiser.id, filter: { from: fromDate?.toISOString() }, - }), + }, }, ], onCompleted(data) { diff --git a/src/components/Creatives/CreateCreativeButton.tsx b/src/components/Creatives/CreateCreativeButton.tsx index c9cd5c6c..d84cbfbb 100644 --- a/src/components/Creatives/CreateCreativeButton.tsx +++ b/src/components/Creatives/CreateCreativeButton.tsx @@ -5,15 +5,16 @@ import { initialCreative, } from "@/user/views/adsManager/types"; import _ from "lodash"; -import { - refetchAdvertiserCreativesQuery, - useCreateCreativeMutation, -} from "@/graphql/creative.generated"; import { useField, useFormikContext } from "formik"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { LoadingButton } from "@mui/lab"; import { validCreativeFields } from "@/user/library"; import { Trans } from "@lingui/macro"; +import { useMutation } from "@apollo/client"; +import { + AdvertiserCreativesDocument, + CreateCreativeDocument, +} from "@/graphql-client/graphql"; export function CreateCreativeButton() { const { values, setFieldValue } = useFormikContext(); @@ -21,7 +22,7 @@ export function CreateCreativeButton() { const [, newMeta, newHelper] = useField("newCreative"); const { advertiser } = useAdvertiser(); - const [create, { loading }] = useCreateCreativeMutation({ + const [create, { loading }] = useMutation(CreateCreativeDocument, { async onCompleted(data) { newHelper.setValue(initialCreative); newHelper.setTouched(false); @@ -35,7 +36,8 @@ export function CreateCreativeButton() { }, refetchQueries: [ { - ...refetchAdvertiserCreativesQuery({ advertiserId: advertiser.id }), + query: AdvertiserCreativesDocument, + variables: { advertiserId: advertiser.id }, }, ], }); diff --git a/src/components/Creatives/CreativeCampaigns.tsx b/src/components/Creatives/CreativeCampaigns.tsx index 2f4bf704..204eee51 100644 --- a/src/components/Creatives/CreativeCampaigns.tsx +++ b/src/components/Creatives/CreativeCampaigns.tsx @@ -1,4 +1,3 @@ -import { CampaignsForCreativeQuery } from "@/graphql/creative.generated"; import { Link as RouterLink } from "react-router-dom"; import { Link, @@ -14,6 +13,7 @@ import _ from "lodash"; import { Status } from "@/components/Campaigns/Status"; import { ApolloError } from "@apollo/client"; import { msg, Trans } from "@lingui/macro"; +import { CampaignsForCreativeQuery } from "@/graphql-client/graphql"; interface Props { data?: CampaignsForCreativeQuery; diff --git a/src/components/Creatives/CreativeForm.tsx b/src/components/Creatives/CreativeForm.tsx index 8f3c1399..f32a7731 100644 --- a/src/components/Creatives/CreativeForm.tsx +++ b/src/components/Creatives/CreativeForm.tsx @@ -12,14 +12,17 @@ import { SubmitPanel } from "@/components/Button/SubmitPanel"; import { useGetCreativeDetails } from "@/components/Creatives/hooks/useGetCreativeDetails"; import { useSubmitCreative } from "@/components/Creatives/hooks/useSubmitCreative"; import CreativeCampaigns from "@/components/Creatives/CreativeCampaigns"; -import { useCampaignsForCreativeQuery } from "@/graphql/creative.generated"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; -import { CreativeInput } from "@/graphql/types"; -import { CampaignFragment } from "@/graphql/campaign.generated"; +import { + CampaignFragment, + CampaignsForCreativeDocument, + CreativeInput, +} from "@/graphql-client/graphql"; import _ from "lodash"; import { isReviewableState } from "@/util/displayState"; import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; interface Params { id: string; @@ -40,7 +43,7 @@ export function CreativeForm() { data: campaigns, loading: cLoading, error: cError, - } = useCampaignsForCreativeQuery({ + } = useQuery(CampaignsForCreativeDocument, { variables: { creativeId: id, advertiserId: advertiser.id }, skip: id === "new", }); diff --git a/src/components/Creatives/CreativeList.tsx b/src/components/Creatives/CreativeList.tsx index 5af19c5e..371fb5e0 100644 --- a/src/components/Creatives/CreativeList.tsx +++ b/src/components/Creatives/CreativeList.tsx @@ -1,7 +1,3 @@ -import { - CreativeFragment, - useAdvertiserCreativesQuery, -} from "@/graphql/creative.generated"; import { uiTextForCreativeTypeCode } from "@/user/library"; import { CardContainer } from "@/components/Card/CardContainer"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; @@ -18,13 +14,18 @@ import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { Trans, useLingui } from "@lingui/react"; import { MessageDescriptor } from "@lingui/core"; +import { useQuery } from "@apollo/client"; +import { + AdvertiserCreativesDocument, + CreativeFragment, +} from "@/graphql-client/graphql"; const ALLOWED_TYPES = ["notification_all_v1", "inline_content_all_v1"]; export function CreativeList() { useTrackMatomoPageView({ documentTitle: "Advertiser Creatives" }); const { advertiser } = useAdvertiser(); const { _ } = useLingui(); - const { data, error, loading } = useAdvertiserCreativesQuery({ + const { data, error, loading } = useQuery(AdvertiserCreativesDocument, { variables: { advertiserId: advertiser.id, }, diff --git a/src/components/Creatives/CreativeSelect.tsx b/src/components/Creatives/CreativeSelect.tsx index af78efc7..9c59db59 100644 --- a/src/components/Creatives/CreativeSelect.tsx +++ b/src/components/Creatives/CreativeSelect.tsx @@ -7,7 +7,7 @@ import _ from "lodash"; import { PropsWithChildren, useContext, useState } from "react"; import { FormContext } from "@/state/context"; import { useFormikContext } from "formik"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { ImagePreview } from "@/components/Assets/ImagePreview"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Creatives/CreativeSpecificPreview.tsx b/src/components/Creatives/CreativeSpecificPreview.tsx index 8b5548e8..1514a393 100644 --- a/src/components/Creatives/CreativeSpecificPreview.tsx +++ b/src/components/Creatives/CreativeSpecificPreview.tsx @@ -1,4 +1,4 @@ -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { BoxContainer } from "@/components/Box/BoxContainer"; import { NotificationPreview } from "@/components/Creatives/NotificationPreview"; import { Stack, Typography } from "@mui/material"; diff --git a/src/components/Creatives/CreativeStatusSwitch.tsx b/src/components/Creatives/CreativeStatusSwitch.tsx index 0fe3ac66..bdea667b 100644 --- a/src/components/Creatives/CreativeStatusSwitch.tsx +++ b/src/components/Creatives/CreativeStatusSwitch.tsx @@ -1,10 +1,3 @@ -import { - CreativeFragment, - refetchAdvertiserCreativesQuery, - refetchCampaignsForCreativeQuery, - useCampaignsForCreativeLazyQuery, - useUpdateCreativeMutation, -} from "@/graphql/creative.generated"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Box, @@ -23,6 +16,13 @@ import _ from "lodash"; import { validCreativeFields } from "@/user/library"; import { isReviewableState } from "@/util/displayState"; import { Trans } from "@lingui/macro"; +import { + AdvertiserCreativesDocument, + CampaignsForCreativeDocument, + CreativeFragment, + UpdateCreativeDocument, +} from "@/graphql-client/graphql"; +import { useLazyQuery, useMutation } from "@apollo/client"; interface Props { creative: CreativeFragment; @@ -40,19 +40,28 @@ export function CreativeStatusSwitch({ creative }: Props) { [], ); const [creativeState, setCreativeState] = useState(input.state); - const [update, { loading: updateLoading }] = useUpdateCreativeMutation({ - refetchQueries: [ - refetchAdvertiserCreativesQuery({ advertiserId: advertiser.id }), - refetchCampaignsForCreativeQuery({ - creativeId: creative.id, - advertiserId: advertiser.id, - }), - ], - onCompleted() { - setRelatedCampaigns([]); + const [update, { loading: updateLoading }] = useMutation( + UpdateCreativeDocument, + { + refetchQueries: [ + { + query: AdvertiserCreativesDocument, + variables: { advertiserId: advertiser.id }, + }, + { + query: CampaignsForCreativeDocument, + variables: { + creativeId: creative.id, + advertiserId: advertiser.id, + }, + }, + ], + onCompleted() { + setRelatedCampaigns([]); + }, }, - }); - const [campaigns, { loading }] = useCampaignsForCreativeLazyQuery({ + ); + const [campaigns, { loading }] = useLazyQuery(CampaignsForCreativeDocument, { variables: { creativeId: creative.id, advertiserId: advertiser.id }, }); diff --git a/src/components/Creatives/CreativeType.tsx b/src/components/Creatives/CreativeType.tsx index 88db52ea..8200f8ab 100644 --- a/src/components/Creatives/CreativeType.tsx +++ b/src/components/Creatives/CreativeType.tsx @@ -1,6 +1,6 @@ import { Box, ListItemButton, List, Typography, Stack } from "@mui/material"; import { useFormikContext } from "formik"; -import { CreativeInput } from "@/graphql/types"; +import { CreativeInput } from "@/graphql-client/graphql"; import { FormatHelp } from "@/components/Button/FormatHelp"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; diff --git a/src/components/Creatives/NewsPreview.tsx b/src/components/Creatives/NewsPreview.tsx index c5da7443..a8d93ed5 100644 --- a/src/components/Creatives/NewsPreview.tsx +++ b/src/components/Creatives/NewsPreview.tsx @@ -2,7 +2,7 @@ import { Box, Card, Typography } from "@mui/material"; import { ImagePreview } from "@/components/Assets/ImagePreview"; import { useField, useFormikContext } from "formik"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; -import { CreativeInput } from "@/graphql/types"; +import { CreativeInput } from "@/graphql-client/graphql"; import { Trans } from "@lingui/macro"; export function NewsPreview() { diff --git a/src/components/Creatives/NotificationPreview.tsx b/src/components/Creatives/NotificationPreview.tsx index dd60c44c..9ecc9ffa 100644 --- a/src/components/Creatives/NotificationPreview.tsx +++ b/src/components/Creatives/NotificationPreview.tsx @@ -1,7 +1,7 @@ import { Box, Paper, Stack, Typography } from "@mui/material"; import logo from "@/assets/images/brave_logo_icon.png"; import { useField, useFormikContext } from "formik"; -import { CreativeInput } from "@/graphql/types"; +import { CreativeInput } from "@/graphql-client/graphql"; import { Trans } from "@lingui/macro"; export function NotificationPreview(props: { diff --git a/src/components/Creatives/hooks/useGetCreativeDetails.tsx b/src/components/Creatives/hooks/useGetCreativeDetails.tsx index d5a5fb8f..15688991 100644 --- a/src/components/Creatives/hooks/useGetCreativeDetails.tsx +++ b/src/components/Creatives/hooks/useGetCreativeDetails.tsx @@ -1,13 +1,13 @@ -import { useLoadCreativeQuery } from "@/graphql/creative.generated"; -import { CreativeInput } from "@/graphql/types"; +import { CreativeInput, LoadCreativeDocument } from "@/graphql-client/graphql"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; export function useGetCreativeDetails(props: { id: string }) { const { advertiser } = useAdvertiser(); const isNew = props.id === "new"; - const { data, loading, error } = useLoadCreativeQuery({ + const { data, loading, error } = useQuery(LoadCreativeDocument, { variables: { id: props.id }, skip: isNew, }); diff --git a/src/components/Creatives/hooks/useSubmitCreative.tsx b/src/components/Creatives/hooks/useSubmitCreative.tsx index b01f29c1..3b2057b0 100644 --- a/src/components/Creatives/hooks/useSubmitCreative.tsx +++ b/src/components/Creatives/hooks/useSubmitCreative.tsx @@ -1,15 +1,16 @@ -import { - refetchAdvertiserCreativesQuery, - useCreateCreativeMutation, - useUpdateCreativeMutation, -} from "@/graphql/creative.generated"; import { useCallback } from "react"; -import { CreativeInput } from "@/graphql/types"; +import { + AdvertiserCreativesDocument, + CreateCreativeDocument, + CreativeInput, + UpdateCreativeDocument, +} from "@/graphql-client/graphql"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { useHistory } from "react-router-dom"; import { validCreativeFields } from "@/user/library"; import _ from "lodash"; import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; +import { useMutation } from "@apollo/client"; export function useSubmitCreative(props: { id: string }) { const { trackMatomoEvent } = useTrackMatomoEvent(); @@ -17,7 +18,10 @@ export function useSubmitCreative(props: { id: string }) { const isNew = props.id === "new"; const { advertiser } = useAdvertiser(); const refetchQueries = [ - refetchAdvertiserCreativesQuery({ advertiserId: advertiser.id }), + { + query: AdvertiserCreativesDocument, + variables: { advertiserId: advertiser.id }, + }, ]; const onCompleted = () => { trackMatomoEvent("creative", isNew ? "creation-success" : "update-success"); @@ -28,14 +32,14 @@ export function useSubmitCreative(props: { id: string }) { }; const [createCreative, { error: createError, loading: createLoading }] = - useCreateCreativeMutation({ + useMutation(CreateCreativeDocument, { refetchQueries, onCompleted, onError, }); const [updateCreative, { error: updateError, loading: updateLoading }] = - useUpdateCreativeMutation({ + useMutation(UpdateCreativeDocument, { refetchQueries, onCompleted, onError, diff --git a/src/components/Datagrid/renderers.tsx b/src/components/Datagrid/renderers.tsx index 5e8bb5a5..6d5b5d5b 100644 --- a/src/components/Datagrid/renderers.tsx +++ b/src/components/Datagrid/renderers.tsx @@ -1,23 +1,25 @@ import { Box, Tooltip } from "@mui/material"; import _ from "lodash"; import { ReactElement, ReactNode, useContext } from "react"; -import { - CampaignSummaryFragment, - refetchLoadCampaignAdsQuery, - refetchLoadCampaignQuery, - useUpdateCampaignMutation, -} from "@/graphql/campaign.generated"; -import { useUpdateAdSetMutation } from "@/graphql/ad-set.generated"; + import { OnOff } from "@/components/Switch/OnOff"; import { displayFromCampaignState } from "@/util/displayState"; import { CampaignExtras } from "@/user/adSet/AdSetList"; import { FilterContext } from "@/state/context"; -import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; -import { UpdateAdSetInput } from "@/graphql/types"; +import { + AdvertiserCampaignsDocument, + CampaignSummaryFragment, + LoadCampaignAdsDocument, + LoadCampaignDocument, + UpdateAdSetInput, + UpdateCampaignDocument, +} from "@/graphql-client/graphql"; import { toLocaleString } from "@/util/bignumber"; import BigNumber from "bignumber.js"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; +import { useMutation } from "@apollo/client"; +import { UpdateAdSetDocument } from "@/graphql-client/graphql"; export type CellValueRenderer = (value: any) => ReactNode; const ADS_DEFAULT_TIMEZONE = "America/New_York"; @@ -84,13 +86,14 @@ export function campaignOnOffState( c: CampaignSummaryFragment & { advertiserId: string }, ): ReactNode { const { fromDate } = useContext(FilterContext); - const [updateCampaign, { loading }] = useUpdateCampaignMutation({ + const [updateCampaign, { loading }] = useMutation(UpdateCampaignDocument, { refetchQueries: [ { - ...refetchAdvertiserCampaignsQuery({ + query: AdvertiserCampaignsDocument, + variables: { id: c.advertiserId, filter: { from: fromDate?.toISOString() }, - }), + }, }, ], }); @@ -115,10 +118,16 @@ export function adSetOnOffState( c: Omit & CampaignExtras, isInline?: boolean, ): ReactNode { - const [updateAdSet, { loading }] = useUpdateAdSetMutation({ + const [updateAdSet, { loading }] = useMutation(UpdateAdSetDocument, { refetchQueries: [ - refetchLoadCampaignAdsQuery({ id: c.campaignId }), - refetchLoadCampaignQuery({ id: c.campaignId }), + { + query: LoadCampaignAdsDocument, + variables: { id: c.campaignId }, + }, + { + query: LoadCampaignDocument, + variables: { id: c.campaignId }, + }, ], }); diff --git a/src/components/Location/LocationPicker.tsx b/src/components/Location/LocationPicker.tsx index ceb28de2..286533f5 100644 --- a/src/components/Location/LocationPicker.tsx +++ b/src/components/Location/LocationPicker.tsx @@ -3,16 +3,16 @@ import CheckBoxIcon from "@mui/icons-material/CheckBox"; import { Autocomplete, Checkbox, TextField } from "@mui/material"; import { useField } from "formik"; import _ from "lodash"; -import { useActiveGeocodesQuery } from "@/graphql/common.generated"; -import { GeocodeInput } from "@/graphql/types"; +import { ActiveGeocodesDocument, GeocodeInput } from "@/graphql-client/graphql"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; const icon = ; const checkedIcon = ; export const LocationPicker = () => { - const { data } = useActiveGeocodesQuery(); + const { data } = useQuery(ActiveGeocodesDocument); const sorted = _.sortBy(data?.geocodes ?? [], "code"); const [formProps, meta, helper] = useField("geoTargets"); const errorMessage = meta.error; diff --git a/src/components/Segment/SegmentPicker.tsx b/src/components/Segment/SegmentPicker.tsx index b804a4cd..4edc53e4 100644 --- a/src/components/Segment/SegmentPicker.tsx +++ b/src/components/Segment/SegmentPicker.tsx @@ -3,12 +3,13 @@ import CheckBoxIcon from "@mui/icons-material/CheckBox"; import { Autocomplete, Box, Checkbox, TextField } from "@mui/material"; import { useField } from "formik"; import _ from "lodash"; -import { SegmentFragment, useSegmentsQuery } from "@/graphql/common.generated"; import { useEffect } from "react"; import { FormikSwitch } from "@/form/FormikHelpers"; import { segmentNameWithNoDash } from "@/util/segment"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; +import { SegmentFragment, SegmentsDocument } from "@/graphql-client/graphql"; const icon = ; const checkedIcon = ; @@ -18,7 +19,7 @@ interface Props { } export const SegmentPicker = ({ idx }: Props) => { - const { data } = useSegmentsQuery(); + const { data } = useQuery(SegmentsDocument); const activeSegments = [...(data?.segments?.data ?? [])].sort((a, b) => { if (a.name === "Untargeted" || b.name === "Untargeted") return 1; return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); diff --git a/src/components/Switch/OnOff.tsx b/src/components/Switch/OnOff.tsx index b82bd224..ec1d23c6 100644 --- a/src/components/Switch/OnOff.tsx +++ b/src/components/Switch/OnOff.tsx @@ -1,5 +1,5 @@ import { Switch, Tooltip, Typography } from "@mui/material"; -import { CampaignSource } from "@/graphql/types"; +import { CampaignSource } from "@/graphql-client/graphql"; import { Trans } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/components/Url/use-url-validation.ts b/src/components/Url/use-url-validation.ts index d25f4b22..a435236e 100644 --- a/src/components/Url/use-url-validation.ts +++ b/src/components/Url/use-url-validation.ts @@ -1,7 +1,8 @@ import { - useValidateTargetUrlLazyQuery, + ValidateTargetUrlDocument, ValidateTargetUrlQuery, -} from "@/graphql/url.generated"; +} from "@/graphql-client/graphql"; +import { useLazyQuery } from "@apollo/client"; import _ from "lodash"; import { useEffect, useMemo, useState } from "react"; @@ -29,7 +30,7 @@ export function useUrlValidation(url: string): UrlValidationResult { const [response, setResponse] = useState(); const [error, setError] = useState(); - const [validateUrl] = useValidateTargetUrlLazyQuery({ + const [validateUrl] = useLazyQuery(ValidateTargetUrlDocument, { fetchPolicy: "no-cache", }); diff --git a/src/form/fragmentUtil.ts b/src/form/fragmentUtil.ts index a2fc109f..20832452 100644 --- a/src/form/fragmentUtil.ts +++ b/src/form/fragmentUtil.ts @@ -1,6 +1,9 @@ -import { CreateAdSetInput, CreateCampaignInput } from "@/graphql/types"; -import { CampaignFragment } from "@/graphql/campaign.generated"; -import { AdSetFragment } from "@/graphql/ad-set.generated"; +import { + AdSetFragment, + CampaignFragment, + CreateAdSetInput, + CreateCampaignInput, +} from "@/graphql-client/graphql"; import dayjs from "dayjs"; export function createCampaignFromFragment( diff --git a/src/graphql-client/gql.ts b/src/graphql-client/gql.ts new file mode 100644 index 00000000..ffdfe1df --- /dev/null +++ b/src/graphql-client/gql.ts @@ -0,0 +1,327 @@ +/* eslint-disable */ +import * as types from './graphql'; +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + */ +const documents = { + "\n fragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n }\n \n": types.AdFragmentDoc, + "\n fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n }\n \n": types.AdSetFragmentDoc, + "\n fragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n }\n \n": types.AdSetWithDeletedAdsFragmentDoc, + "\n mutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n }\n \n": types.CreateAdSetDocument, + "\n mutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n }\n \n": types.UpdateAdSetDocument, + "fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n}\n\nfragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n}\n\nfragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n}\n\nmutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n}\n\nmutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n}": types.AdSetFragmentDoc, + "\n fragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n }\n": types.AdvertiserBillingAddressFragmentDoc, + "\n fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n }\n": types.AdvertiserSummaryFragmentDoc, + "\n fragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n }\n \n": types.AdvertiserFragmentDoc, + "\n fragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n }\n \n": types.AdvertiserCampaignsFragmentDoc, + "\n fragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n }\n": types.AdvertiserImageFragmentDoc, + "\n fragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n }\n": types.AdvertiserPriceFragmentDoc, + "\n query advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n }\n": types.AdvertiserDocument, + "\n mutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n }\n": types.UpdateAdvertiserDocument, + "\n query advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n }\n \n": types.AdvertiserCampaignsDocument, + "\n query advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n }\n \n": types.AdvertiserImagesDocument, + "\n query advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n }\n \n": types.AdvertiserPricesDocument, + "\n query advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n }\n \n": types.AdvertiserBillingAddressDocument, + "\n mutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n }\n": types.UploadAdvertiserImageDocument, + "fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n}\n\nfragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n}\n\nfragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n}\n\nquery advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n}\n\nmutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n}\n\nfragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n}\n\nquery advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n}\n\nfragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n}\n\nfragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n}\n\nquery advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n}\n\nquery advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n}\n\nquery advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n}\n\nmutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n}": types.AdvertiserSummaryFragmentDoc, + "\n fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n }\n": types.EngagementFragmentDoc, + "\n fragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n }\n \n": types.CampaignWithEngagementsFragmentDoc, + "\n fragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n }\n": types.CampaignMetricSummaryValuesFragmentDoc, + "\n fragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n }\n": types.CampaignMetricDetailValuesFragmentDoc, + "\n fragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n": types.DailyValuesFragmentDoc, + "\n fragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n": types.AdSetValuesFragmentDoc, + "\n query analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n }\n \n": types.AnalyticOverviewDocument, + "\n query campaignMetrics($campaignIds: [String!]!) {\n performance(filter: { campaignIds: $campaignIds }) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n }\n \n": types.CampaignMetricsDocument, + "\n query fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n }\n \n \n": types.FetchDailyMetricsForCampaignDocument, + "\n query fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n }\n \n": types.FetchAdSetMetricsForCampaignDocument, + "fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n}\n\nfragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n}\n\nquery analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n}\n\nfragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n}\n\nquery campaignMetrics($campaignIds: [String!]!) {\n performance(filter: {campaignIds: $campaignIds}) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n}\n\nfragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n}\n\nfragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n}\n\nfragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n}": types.EngagementFragmentDoc, + "\n fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n }\n \n": types.CampaignFragmentDoc, + "\n fragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n }\n": types.CampaignSummaryFragmentDoc, + "\n fragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n }\n \n": types.CampaignAdsFragmentDoc, + "\n query LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n }\n \n": types.LoadCampaignDocument, + "\n query LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n }\n \n": types.LoadCampaignAdsDocument, + "\n query LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n }\n \n": types.LoadCampaignSummaryDocument, + "\n mutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n }\n": types.CreateCampaignDocument, + "\n mutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n }\n": types.UpdateCampaignDocument, + "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nquery LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}": types.CampaignFragmentDoc, + "\n fragment Geocode on Geocode {\n code\n name\n }\n": types.GeocodeFragmentDoc, + "\n fragment Segment on SegmentsEntry {\n code\n name\n }\n": types.SegmentFragmentDoc, + "\n query ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n }\n \n": types.ActiveGeocodesDocument, + "\n query Segments {\n segments {\n data {\n ...Segment\n }\n }\n }\n \n": types.SegmentsDocument, + "fragment Geocode on Geocode {\n code\n name\n}\n\nfragment Segment on SegmentsEntry {\n code\n name\n}\n\nquery ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n}\n\nquery Segments {\n segments {\n data {\n ...Segment\n }\n }\n}": types.GeocodeFragmentDoc, + "\n fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n }\n": types.CreativeFragmentDoc, + "\n query advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n }\n \n": types.AdvertiserCreativesDocument, + "\n mutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n }\n \n": types.CreateCreativeDocument, + "\n mutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n }\n \n": types.UpdateCreativeDocument, + "\n query loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n }\n \n": types.LoadCreativeDocument, + "\n query campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n }\n": types.CampaignsForCreativeDocument, + "fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n}\n\nquery advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n}\n\nmutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n}\n\nmutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n}\n\nquery loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n}\n\nquery campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n}": types.CreativeFragmentDoc, + "\n query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n }\n": types.ValidateTargetUrlDocument, + "query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n}": types.ValidateTargetUrlDocument, + "\n fragment User on User {\n email\n fullName\n id\n role\n }\n": types.UserFragmentDoc, + "\n query LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n }\n \n": types.LoadUserDocument, + "\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n }\n \n": types.UpdateUserDocument, + "fragment User on User {\n email\n fullName\n id\n role\n}\n\nquery LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n}\n\nmutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n}": types.UserFragmentDoc, +}; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +export function graphql(source: string): unknown; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n }\n \n"): (typeof documents)["\n fragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n }\n \n"): (typeof documents)["\n fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n }\n \n"): (typeof documents)["\n fragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n }\n \n"): (typeof documents)["\n mutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n }\n \n"): (typeof documents)["\n mutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n}\n\nfragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n}\n\nfragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n}\n\nmutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n}\n\nmutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n}"): (typeof documents)["fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n}\n\nfragment Ad on Ad {\n id\n state\n price\n priceType\n creative {\n ...Creative\n }\n}\n\nfragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n}\n\nmutation createAdSet($createAdSetInput: CreateAdSetInput!) {\n createAdSet(createAdSetInput: $createAdSetInput) {\n ...AdSet\n }\n}\n\nmutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) {\n updateAdSet(updateAdSetInput: $updateAdSetInput) {\n ...AdSet\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n }\n"): (typeof documents)["\n fragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n }\n"): (typeof documents)["\n fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n }\n \n"): (typeof documents)["\n fragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n }\n \n"): (typeof documents)["\n fragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n }\n"): (typeof documents)["\n fragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n }\n"): (typeof documents)["\n fragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n }\n"): (typeof documents)["\n query advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n }\n"): (typeof documents)["\n mutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n }\n \n"): (typeof documents)["\n query advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n }\n \n"): (typeof documents)["\n query advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n }\n \n"): (typeof documents)["\n query advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n }\n \n"): (typeof documents)["\n query advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n }\n"): (typeof documents)["\n mutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n}\n\nfragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n}\n\nfragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n}\n\nquery advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n}\n\nmutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n}\n\nfragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n}\n\nquery advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n}\n\nfragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n}\n\nfragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n}\n\nquery advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n}\n\nquery advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n}\n\nquery advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n}\n\nmutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n}"): (typeof documents)["fragment AdvertiserSummary on Advertiser {\n id\n name\n state\n billingEmail\n additionalBillingEmails\n createdAt\n modifiedAt\n publicKey\n}\n\nfragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n}\n\nfragment Advertiser on Advertiser {\n ...AdvertiserSummary\n referrer\n phone\n selfServiceManageCampaign\n selfServiceSetPrice\n}\n\nquery advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n}\n\nmutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) {\n updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) {\n id\n publicKey\n }\n}\n\nfragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n}\n\nquery advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n}\n\nfragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n}\n\nfragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n}\n\nquery advertiserImages($id: String!) {\n advertiser(id: $id) {\n images {\n ...AdvertiserImage\n }\n }\n}\n\nquery advertiserPrices($id: String!) {\n advertiser(id: $id) {\n prices {\n ...AdvertiserPrice\n }\n }\n}\n\nquery advertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n}\n\nmutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n name\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n }\n"): (typeof documents)["\n fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n }\n \n"): (typeof documents)["\n fragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n }\n"): (typeof documents)["\n fragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n }\n"): (typeof documents)["\n fragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n"): (typeof documents)["\n fragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n"): (typeof documents)["\n fragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n }\n \n"): (typeof documents)["\n query analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query campaignMetrics($campaignIds: [String!]!) {\n performance(filter: { campaignIds: $campaignIds }) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n }\n \n"): (typeof documents)["\n query campaignMetrics($campaignIds: [String!]!) {\n performance(filter: { campaignIds: $campaignIds }) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n }\n \n \n"): (typeof documents)["\n query fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n }\n \n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n }\n \n"): (typeof documents)["\n query fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n}\n\nfragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n}\n\nquery analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n}\n\nfragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n}\n\nquery campaignMetrics($campaignIds: [String!]!) {\n performance(filter: {campaignIds: $campaignIds}) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n}\n\nfragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n}\n\nfragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n}\n\nfragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n}"): (typeof documents)["fragment Engagement on Engagement {\n creativeinstanceid\n createdat\n type\n pricetype\n creativesetname\n creativesetid\n creativename\n creativeid\n creativestate\n creativepayload\n view\n click\n viewthroughConversion\n clickthroughConversion\n conversion\n dismiss\n downvote\n landed\n spend\n upvote\n downvote\n price\n android\n ios\n linux\n macos\n windows\n}\n\nfragment CampaignWithEngagements on Campaign {\n id\n name\n state\n budget\n spent\n currency\n createdAt\n startAt\n endAt\n currency\n pacingIndex\n format\n adSets {\n id\n conversions {\n id\n type\n extractExternalId\n }\n }\n engagements {\n ...Engagement\n }\n}\n\nquery analyticOverview($id: String!) {\n campaign(id: $id) {\n ...CampaignWithEngagements\n }\n}\n\nfragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n}\n\nquery campaignMetrics($campaignIds: [String!]!) {\n performance(filter: {campaignIds: $campaignIds}) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n}\n\nfragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n}\n\nfragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n}\n\nfragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n }\n \n"): (typeof documents)["\n fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n }\n"): (typeof documents)["\n fragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n }\n \n"): (typeof documents)["\n fragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n }\n \n"): (typeof documents)["\n query LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n }\n \n"): (typeof documents)["\n query LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n }\n \n"): (typeof documents)["\n query LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n }\n"): (typeof documents)["\n mutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n }\n"): (typeof documents)["\n mutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nquery LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"): (typeof documents)["fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n paymentType\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nquery LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignSummary\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Geocode on Geocode {\n code\n name\n }\n"): (typeof documents)["\n fragment Geocode on Geocode {\n code\n name\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Segment on SegmentsEntry {\n code\n name\n }\n"): (typeof documents)["\n fragment Segment on SegmentsEntry {\n code\n name\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n }\n \n"): (typeof documents)["\n query ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query Segments {\n segments {\n data {\n ...Segment\n }\n }\n }\n \n"): (typeof documents)["\n query Segments {\n segments {\n data {\n ...Segment\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment Geocode on Geocode {\n code\n name\n}\n\nfragment Segment on SegmentsEntry {\n code\n name\n}\n\nquery ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n}\n\nquery Segments {\n segments {\n data {\n ...Segment\n }\n }\n}"): (typeof documents)["fragment Geocode on Geocode {\n code\n name\n}\n\nfragment Segment on SegmentsEntry {\n code\n name\n}\n\nquery ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n}\n\nquery Segments {\n segments {\n data {\n ...Segment\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n }\n"): (typeof documents)["\n fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n }\n \n"): (typeof documents)["\n query advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n }\n \n"): (typeof documents)["\n mutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n }\n \n"): (typeof documents)["\n mutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n }\n \n"): (typeof documents)["\n query loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n }\n"): (typeof documents)["\n query campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n}\n\nquery advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n}\n\nmutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n}\n\nmutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n}\n\nquery loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n}\n\nquery campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n}"): (typeof documents)["fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n}\n\nquery advertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n}\n\nmutation createCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n}\n\nmutation updateCreative($id: String!, $input: CreativeInput!) {\n updateCreative(id: $id, creative: $input) {\n ...Creative\n }\n}\n\nquery loadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n}\n\nquery campaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n }\n"): (typeof documents)["\n query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n}"): (typeof documents)["query validateTargetUrl($url: String!) {\n validateTargetUrl(targetUrl: $url) {\n isValid\n redirects {\n url\n violations {\n summary\n detail\n }\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n fragment User on User {\n email\n fullName\n id\n role\n }\n"): (typeof documents)["\n fragment User on User {\n email\n fullName\n id\n role\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n }\n \n"): (typeof documents)["\n query LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n }\n \n"): (typeof documents)["\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n }\n \n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "fragment User on User {\n email\n fullName\n id\n role\n}\n\nquery LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n}\n\nmutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n}"): (typeof documents)["fragment User on User {\n email\n fullName\n id\n role\n}\n\nquery LoadUser($id: String!) {\n user(id: $id) {\n ...User\n }\n}\n\nmutation UpdateUser($input: UpdateUserInput!) {\n updateUser(updateUserInput: $input) {\n ...User\n }\n}"]; + +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/src/graphql-client/graphql.ts b/src/graphql-client/graphql.ts new file mode 100644 index 00000000..1b2afdbc --- /dev/null +++ b/src/graphql-client/graphql.ts @@ -0,0 +1,1919 @@ +/* eslint-disable */ +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } + /** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */ + DateTime: { input: string; output: string; } + /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ + JSONObject: { input: object; output: object; } + /** The `Numeric` datatype represents a fixed-precision number, which does not suffer from the rounding errors of a javascript floating point number. It's always returned as a string, but for input types either a string or number can be used, though strings are preferred to avoid risk of inaccuracy. */ + Numeric: { input: string | number; output: string; } +}; + +export type ActiveGeocodesEntry = { + __typename?: 'ActiveGeocodesEntry'; + code: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type ActiveGeocodesQueryDto = { + __typename?: 'ActiveGeocodesQueryDTO'; + data: Array; +}; + +export type Ad = { + __typename?: 'Ad'; + creative: Creative; + id: Scalars['String']['output']; + /** @deprecated price configuration has been moved to ad set */ + price: Scalars['Numeric']['output']; + priceType: ConfirmationType; + /** @deprecated rewardPaymentTokenValue has been moved to ad set */ + rewardPaymentTokenValue: Scalars['Numeric']['output']; + state: Scalars['String']['output']; + webhooks: Array; +}; + +export type AdSet = { + __typename?: 'AdSet'; + ads: Array; + /** @deprecated has been moved to campaign level */ + bannedKeywords?: Maybe>; + billingType?: Maybe; + brandedDesktopPrice?: Maybe; + brandedMobilePrice?: Maybe; + conversions: Array; + createdAt: Scalars['DateTime']['output']; + externalId?: Maybe; + /** @deprecated price changes are now allowed */ + hasConfirmations: Scalars['Boolean']['output']; + id: Scalars['String']['output']; + keywordSimilarity?: Maybe; + keywords?: Maybe>; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; + negativeKeywords?: Maybe>; + negativeTriggerUrls?: Maybe>; + nonBrandedDesktopPrice?: Maybe; + nonBrandedMobilePrice?: Maybe; + optimized?: Maybe; + oses: Array; + perDay: Scalars['Float']['output']; + price: Scalars['Numeric']['output']; + rewardPaymentTokenValue: Scalars['Numeric']['output']; + segments: Array; + state: Scalars['String']['output']; + targetingTerms?: Maybe>; + totalMax: Scalars['Float']['output']; + triggerUrls?: Maybe>; +}; + + +export type AdSetAdsArgs = { + includeDeleted?: InputMaybe; +}; + +export type Address = { + __typename?: 'Address'; + city: Scalars['String']['output']; + country: Scalars['String']['output']; + createdAt: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + state: Scalars['String']['output']; + street1: Scalars['String']['output']; + street2?: Maybe; + zipcode: Scalars['String']['output']; +}; + +export type Advertiser = { + __typename?: 'Advertiser'; + accountManager?: Maybe; + additionalBillingEmails?: Maybe>; + agreed: Scalars['Boolean']['output']; + billingAddress?: Maybe
; + billingEmail?: Maybe; + campaigns: Array; + createdAt: Scalars['DateTime']['output']; + createdSource: AdvertiserSource; + creatives: Array; + description?: Maybe; + id: Scalars['String']['output']; + images: Array; + marketingChannel?: Maybe; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; + phone?: Maybe; + prices: Array; + publicKey?: Maybe; + referrer?: Maybe; + selfServiceManageCampaign: Scalars['Boolean']['output']; + selfServiceSetPrice: Scalars['Boolean']['output']; + state: Scalars['String']['output']; + url?: Maybe; + users: Array; +}; + +export type AdvertiserCampaignFilter = { + /** exclude all campaigns whose time range is completely before this time */ + from?: InputMaybe; + /** include ads */ + includeAds?: InputMaybe; + /** include creative sets */ + includeCreativeSets?: InputMaybe; +}; + +export type AdvertiserFilter = { + state?: InputMaybe; +}; + +export type AdvertiserImage = { + __typename?: 'AdvertiserImage'; + createdAt: Scalars['DateTime']['output']; + format: CampaignFormat; + id: Scalars['String']['output']; + imageUrl: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type AdvertiserPrice = { + __typename?: 'AdvertiserPrice'; + billingModelPrice: Scalars['Numeric']['output']; + billingType: BillingType; + format: CampaignFormat; + isDefault: Scalars['Boolean']['output']; +}; + +export type AdvertiserPriceInput = { + billingModelPrice: Scalars['Numeric']['input']; + billingType: BillingType; + format: CampaignFormat; +}; + +export enum AdvertiserSource { + Managed = 'MANAGED', + SelfServe = 'SELF_SERVE' +} + +export type ApproveCampaignInput = { + campaignId: Scalars['String']['input']; +}; + +export enum BillingType { + Cpc = 'CPC', + Cpm = 'CPM', + Cpsv = 'CPSV' +} + +export type Campaign = { + __typename?: 'Campaign'; + accountManager?: Maybe; + adSets: Array; + advertiser: Advertiser; + /** For Search campaigns, keywords the campaign must not be shown against */ + bannedKeywords?: Maybe>; + /** + * For Search campaigns, the keyword that matches the 'brand' + * @deprecated use brandedKeywords instead + */ + brandedKeyword?: Maybe; + /** For Search campaigns, the keywords that match the 'brand' */ + brandedKeywords?: Maybe>; + budget: Scalars['Float']['output']; + comments: Array; + confirmationsSummary: ConfirmationsSummaryQueryDto; + createdAt: Scalars['DateTime']['output']; + currency: Scalars['String']['output']; + dailyBudget: Scalars['Float']['output']; + dailyCap: Scalars['Float']['output']; + dailyPacingIndex: Scalars['Float']['output']; + dailySpend: Scalars['Float']['output']; + dayPartings: Array; + /** For NTP SI campaigns, the proportion of day allocated from 0 (none) to 1 (dedicated) */ + dayProportion?: Maybe; + endAt: Scalars['DateTime']['output']; + engagements: Array; + engagementsByCountry: Array; + externalId?: Maybe; + format: CampaignFormat; + geoTargets: Array; + hasPaymentIntent: Scalars['Boolean']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; + pacingIndex?: Maybe; + pacingOverride: Scalars['Boolean']['output']; + pacingStrategy: CampaignPacingStrategies; + passThroughRate: Scalars['Float']['output']; + paymentType: PaymentType; + performance: PerformanceResults; + priority: Scalars['Float']['output']; + radomPaymentId?: Maybe; + rate: Scalars['Float']['output']; + source: CampaignSource; + spent: Scalars['Float']['output']; + startAt: Scalars['DateTime']['output']; + state: Scalars['String']['output']; + stripePaymentId?: Maybe; + type: CampaignType; +}; + + +export type CampaignPerformanceArgs = { + filter?: CampaignPerformanceFilter; +}; + +export type CampaignComment = { + __typename?: 'CampaignComment'; + createdAt: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + note: Scalars['String']['output']; + user: User; +}; + +export type CampaignFilter = { + /** only include campaigns for this format */ + format?: InputMaybe; + /** exclude all campaigns whose time range is completely before this time */ + from?: InputMaybe; + /** only include campaigns with this source */ + source?: InputMaybe; + /** only include campaigns with this state */ + state?: InputMaybe; + /** exclude all campaigns whose time range is completely after this time */ + to?: InputMaybe; +}; + +export enum CampaignFormat { + NewsDisplayAd = 'NEWS_DISPLAY_AD', + NtpSi = 'NTP_SI', + PushNotification = 'PUSH_NOTIFICATION', + Search = 'SEARCH', + SearchHomepage = 'SEARCH_HOMEPAGE' +} + +export enum CampaignPacingStrategies { + ModelV1 = 'MODEL_V1', + Original = 'ORIGINAL' +} + +export type CampaignPerformanceFilter = { + /** include only metrics for responses for all these countries */ + country?: InputMaybe>; + /** include metrics starting from this time (inclusive) */ + from?: InputMaybe; + /** include only metrics for responses for all these operating systems */ + os?: InputMaybe>; + /** include only metrics for responses for all these segments */ + segment?: InputMaybe>; + /** include metrics before this time (inclusive) */ + to?: InputMaybe; +}; + +export enum CampaignRejection { + InappropriateContent = 'INAPPROPRIATE_CONTENT', + InvalidLandingPage = 'INVALID_LANDING_PAGE', + Other = 'OTHER', + ProhibitedCategory = 'PROHIBITED_CATEGORY' +} + +export enum CampaignSource { + Direct = 'DIRECT', + Managed = 'MANAGED', + Network = 'NETWORK', + SelfServe = 'SELF_SERVE' +} + +export enum CampaignType { + Barter = 'BARTER', + Cause = 'CAUSE', + Fixed = 'FIXED', + Free = 'FREE', + House = 'HOUSE', + MakeGood = 'MAKE_GOOD', + Paid = 'PAID', + Preemptive = 'PREEMPTIVE', + Trial = 'TRIAL' +} + +export type CampaignsPerCountryEntry = { + __typename?: 'CampaignsPerCountryEntry'; + count: Scalars['Int']['output']; + country: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type CampaignsPerCountryQueryDto = { + __typename?: 'CampaignsPerCountryQueryDTO'; + data: Array; +}; + +export type CampaignsPerCurrencyEntry = { + __typename?: 'CampaignsPerCurrencyEntry'; + count: Scalars['Int']['output']; + currency: Scalars['String']['output']; +}; + +export type CampaignsPerCurrencyQueryDto = { + __typename?: 'CampaignsPerCurrencyQueryDTO'; + data: Array; +}; + +export type Change = { + __typename?: 'Change'; + createdAt: Scalars['DateTime']['output']; + currentValue?: Maybe; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + previousValue?: Maybe; + referenceColumnName: Scalars['String']['output']; + referenceId: Scalars['String']['output']; + referenceTableName: Scalars['String']['output']; + user: User; + userId: Scalars['String']['output']; +}; + +export type ChangeFilter = { + /** exclude all changes whose time range is completely before this time */ + createdAfter?: InputMaybe; + /** include changes made by system user */ + includeSystemUser?: InputMaybe; + /** limit the amount of results returned */ + limit?: InputMaybe; + /** only include changes for this reference id */ + referenceId?: InputMaybe; + /** only include changes for this set of reference ids */ + referenceIds?: InputMaybe>; +}; + +export enum ConfirmationType { + Bookmark = 'BOOKMARK', + Click = 'CLICK', + ClientView = 'CLIENT_VIEW', + Conversion = 'CONVERSION', + Dismiss = 'DISMISS', + Downvote = 'DOWNVOTE', + Flag = 'FLAG', + Land30 = 'LAND30', + Land60 = 'LAND60', + Landclick = 'LANDCLICK', + Landed = 'LANDED', + Media_25 = 'MEDIA_25', + Media_100 = 'MEDIA_100', + MediaPlay = 'MEDIA_PLAY', + Upvote = 'UPVOTE', + View = 'VIEW' +} + +export type ConfirmationsSummaryEntry = { + __typename?: 'ConfirmationsSummaryEntry'; + android: Scalars['Int']['output']; + date: Scalars['DateTime']['output']; + iOS: Scalars['Int']['output']; + linux: Scalars['Int']['output']; + macOS: Scalars['Int']['output']; + other: Scalars['Int']['output']; + type: Scalars['String']['output']; + windows: Scalars['Int']['output']; +}; + +export type ConfirmationsSummaryQueryDto = { + __typename?: 'ConfirmationsSummaryQueryDTO'; + data: Array; +}; + +export type Conversion = { + __typename?: 'Conversion'; + createdAt: Scalars['DateTime']['output']; + extractExternalId: Scalars['Boolean']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + observationWindow: Scalars['Float']['output']; + trailingAsteriskNotRequired: Scalars['Boolean']['output']; + type: Scalars['String']['output']; + urlPattern: Scalars['String']['output']; +}; + +export type CountryEngagement = { + __typename?: 'CountryEngagement'; + click: Scalars['Float']['output']; + conversion: Scalars['Float']['output']; + country: Scalars['String']['output']; + dismiss: Scalars['Float']['output']; + landed: Scalars['Float']['output']; + spend?: Maybe; + view: Scalars['Float']['output']; +}; + +export type CreateAdInput = { + creative?: InputMaybe; + creativeId?: InputMaybe; + creativeSetId?: InputMaybe; + id?: InputMaybe; + webhooks?: InputMaybe>; +}; + +export type CreateAdSetInput = { + ads?: InputMaybe>; + bannedKeywords?: InputMaybe>; + billingType: Scalars['String']['input']; + brandedDesktopPrice?: InputMaybe; + brandedMobilePrice?: InputMaybe; + campaignId?: InputMaybe; + conversions?: InputMaybe>; + externalId?: InputMaybe; + keywordSimilarity?: InputMaybe; + keywords?: InputMaybe>; + name?: InputMaybe; + negativeKeywords?: InputMaybe>; + negativeTriggerUrls?: InputMaybe>; + nonBrandedDesktopPrice?: InputMaybe; + nonBrandedMobilePrice?: InputMaybe; + oses?: InputMaybe>; + perDay: Scalars['Float']['input']; + /** The price in the owning campaign's currency for each single confirmation of the priceType specified. Note therefore that the caller is responsible for dividing cost-per-mille by 1000. */ + price: Scalars['Numeric']['input']; + segments: Array; + splitTestGroup?: InputMaybe; + state?: InputMaybe; + targetingTerms?: InputMaybe>; + totalMax: Scalars['Float']['input']; + triggerUrls?: InputMaybe>; +}; + +export type CreateAddressInput = { + city: Scalars['String']['input']; + country: Scalars['String']['input']; + state: Scalars['String']['input']; + street1: Scalars['String']['input']; + street2?: InputMaybe; + zipcode: Scalars['String']['input']; +}; + +export type CreateAdvertiserImageInput = { + advertiserId: Scalars['String']['input']; + format: CampaignFormat; + imageUrl: Scalars['String']['input']; + name: Scalars['String']['input']; +}; + +export type CreateAdvertiserInput = { + accountManagerId?: InputMaybe; + additionalBillingEmails?: InputMaybe>; + billingAddress?: InputMaybe; + billingEmail?: InputMaybe; + billingModelPrices?: InputMaybe>; + description?: InputMaybe; + marketingChannel?: InputMaybe; + name: Scalars['String']['input']; + phone?: InputMaybe; + referrer?: InputMaybe; + selfServiceManageCampaign?: InputMaybe; + state?: InputMaybe; + url?: InputMaybe; + userId?: InputMaybe; +}; + +export type CreateCampaignInput = { + accountManagerId?: InputMaybe; + adSets?: InputMaybe>; + advertiserId: Scalars['String']['input']; + bannedKeywords?: InputMaybe>; + brandedKeyword?: InputMaybe; + brandedKeywords?: InputMaybe>; + budget: Scalars['Numeric']['input']; + currency?: Scalars['String']['input']; + dailyBudget?: InputMaybe; + dailyCap?: Scalars['Float']['input']; + dayPartings?: InputMaybe>; + dayProportion?: InputMaybe; + endAt: Scalars['DateTime']['input']; + externalId?: InputMaybe; + format: CampaignFormat; + geoTargets: Array; + name: Scalars['String']['input']; + pacingStrategy?: InputMaybe; + paymentType?: InputMaybe; + priority?: InputMaybe; + source: Scalars['String']['input']; + startAt: Scalars['DateTime']['input']; + state: Scalars['String']['input']; + type?: CampaignType; + userId?: InputMaybe; +}; + +export type CreateCommentInput = { + campaignId: Scalars['String']['input']; + note: Scalars['String']['input']; +}; + +export type CreateConversionInput = { + extractExternalId?: InputMaybe; + observationWindow: Scalars['Float']['input']; + trailingAsteriskNotRequired?: InputMaybe; + type: Scalars['String']['input']; + urlPattern: Scalars['String']['input']; +}; + +export type CreateInPageCreativeInput = { + advertiserId: Scalars['String']['input']; + endAt?: InputMaybe; + name: Scalars['String']['input']; + payload: InPagePayloadInput; + startAt?: InputMaybe; + state: Scalars['String']['input']; + type: CreateTypeInput; + userId?: InputMaybe; +}; + +export type CreateNewTabPageCreativeInput = { + advertiserId: Scalars['String']['input']; + endAt?: InputMaybe; + name: Scalars['String']['input']; + payload: NewTabPagePayloadInput; + startAt?: InputMaybe; + state: Scalars['String']['input']; + type: CreateTypeInput; +}; + +export type CreateNotificationCreativeInput = { + advertiserId: Scalars['String']['input']; + endAt?: InputMaybe; + name: Scalars['String']['input']; + payload: NotificationPayloadInput; + startAt?: InputMaybe; + state: Scalars['String']['input']; + type: CreateTypeInput; + userId?: InputMaybe; +}; + +export type CreateOsInput = { + code: Scalars['String']['input']; + name: Scalars['String']['input']; +}; + +export type CreateSegmentInput = { + code: Scalars['String']['input']; + name: Scalars['String']['input']; +}; + +export type CreateTypeInput = { + code: Scalars['String']['input']; + name?: InputMaybe; +}; + +export type CreateUserInput = { + email: Scalars['String']['input']; + emailVerified: Scalars['Boolean']['input']; + fullName: Scalars['String']['input']; + password?: InputMaybe; + role: Scalars['String']['input']; +}; + +export type Creative = { + __typename?: 'Creative'; + advertiser: Advertiser; + createdAt: Scalars['DateTime']['output']; + endAt?: Maybe; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; + /** @deprecated use one of the specific payload types instead */ + payload: Payload; + /** populated for in_page creatives only */ + payloadInPage?: Maybe; + /** populated for inline_content creatives only */ + payloadInlineContent?: Maybe; + /** populated for new_tab_page creatives only */ + payloadNewTabPage?: Maybe; + /** populated for notification creatives only */ + payloadNotification?: Maybe; + /** populated for promoted_content creatives only */ + payloadPromotedContent?: Maybe; + /** populated for search SERP creatives only */ + payloadSearch?: Maybe; + /** populated for search homepage creatives only */ + payloadSearchHomepage?: Maybe; + startAt?: Maybe; + state: Scalars['String']['output']; + type: CreativeType; +}; + +export type CreativeFilter = { + /** only include creatives with this state */ + state?: InputMaybe; +}; + +export type CreativeInput = { + advertiserId: Scalars['String']['input']; + endAt?: InputMaybe; + name: Scalars['String']['input']; + payloadInPage?: InputMaybe; + payloadInlineContent?: InputMaybe; + payloadNewTabPage?: InputMaybe; + payloadNotification?: InputMaybe; + payloadPromotedContent?: InputMaybe; + payloadSearch?: InputMaybe; + payloadSearchHomepage?: InputMaybe; + startAt?: InputMaybe; + state: Scalars['String']['input']; + type: CreateTypeInput; +}; + +export type CreativeType = { + __typename?: 'CreativeType'; + code: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type CreativeTypeInput = { + code: Scalars['String']['input']; + name: Scalars['String']['input']; +}; + +export type DayParting = { + __typename?: 'DayParting'; + dow: Scalars['String']['output']; + endMinute: Scalars['Float']['output']; + startMinute: Scalars['Float']['output']; +}; + +export type DayPartingInput = { + dow: Scalars['String']['input']; + endMinute: Scalars['Float']['input']; + startMinute: Scalars['Float']['input']; +}; + +export type DeleteAdInput = { + id: Scalars['String']['input']; +}; + +export type Dimensions = { + __typename?: 'Dimensions'; + ad: Ad; + adSet: AdSet; + campaign: Campaign; + country: Scalars['String']['output']; + day: Scalars['DateTime']['output']; + hour: Scalars['DateTime']['output']; + os: Scalars['String']['output']; + segment?: Maybe; +}; + +export type Engagement = { + __typename?: 'Engagement'; + android: Scalars['Float']['output']; + click: Scalars['Numeric']['output']; + clickthroughConversion: Scalars['Numeric']['output']; + conversion: Scalars['Numeric']['output']; + cost: Scalars['Float']['output']; + count: Scalars['Float']['output']; + createdat: Scalars['DateTime']['output']; + creativeid: Scalars['String']['output']; + creativeinstanceid: Scalars['String']['output']; + creativename: Scalars['String']['output']; + creativepayload: Scalars['String']['output']; + creativesetid: Scalars['String']['output']; + creativesetname?: Maybe; + creativestate: Scalars['String']['output']; + currency: Scalars['String']['output']; + dismiss: Scalars['Numeric']['output']; + downvote: Scalars['Numeric']['output']; + ios: Scalars['Float']['output']; + landed: Scalars['Numeric']['output']; + linux: Scalars['Float']['output']; + macos: Scalars['Float']['output']; + other: Scalars['Float']['output']; + price: Scalars['Float']['output']; + pricetype: Scalars['String']['output']; + spend: Scalars['Numeric']['output']; + type: Scalars['String']['output']; + upvote: Scalars['Numeric']['output']; + view: Scalars['Numeric']['output']; + viewthroughConversion: Scalars['Numeric']['output']; + windows: Scalars['Float']['output']; +}; + +export type EngagementOverview = { + __typename?: 'EngagementOverview'; + campaignId: Scalars['String']['output']; + click: Scalars['Float']['output']; + date: Scalars['DateTime']['output']; + landed: Scalars['Float']['output']; + spend?: Maybe; + view: Scalars['Float']['output']; +}; + +export type FocalPoint = { + __typename?: 'FocalPoint'; + x: Scalars['Float']['output']; + y: Scalars['Float']['output']; +}; + +export type FocalPointInput = { + x: Scalars['Float']['input']; + y: Scalars['Float']['input']; +}; + +export type Geocode = { + __typename?: 'Geocode'; + code: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type GeocodeInput = { + code: Scalars['String']['input']; + name?: InputMaybe; +}; + +export type InPagePayload = { + __typename?: 'InPagePayload'; + creativeUrl: Scalars['String']['output']; + /** size of the creative, e.g. 1024x768 */ + size: Scalars['String']['output']; + targetUrl: Scalars['String']['output']; +}; + +export type InPagePayloadInput = { + creativeUrl: Scalars['String']['input']; + /** size of the creative, e.g. 1024x768 */ + size: Scalars['String']['input']; + targetUrl: Scalars['String']['input']; +}; + +export type InlineContentPayload = { + __typename?: 'InlineContentPayload'; + ctaText: Scalars['String']['output']; + description: Scalars['String']['output']; + dimensions: Scalars['String']['output']; + imageUrl: Scalars['String']['output']; + targetUrl: Scalars['String']['output']; + title: Scalars['String']['output']; +}; + +export type InlineContentPayloadInput = { + ctaText: Scalars['String']['input']; + description: Scalars['String']['input']; + dimensions: Scalars['String']['input']; + imageUrl: Scalars['String']['input']; + targetUrl: Scalars['String']['input']; + title: Scalars['String']['input']; +}; + +export type Logo = { + __typename?: 'Logo'; + alt: Scalars['String']['output']; + companyName: Scalars['String']['output']; + destinationUrl: Scalars['String']['output']; + imageUrl: Scalars['String']['output']; +}; + +export type LogoInput = { + alt: Scalars['String']['input']; + companyName: Scalars['String']['input']; + destinationUrl: Scalars['String']['input']; + imageUrl: Scalars['String']['input']; +}; + +/** Rates calculated from metrics. Multiply by 100 to see as a percentage. */ +export type MetricRates = { + __typename?: 'MetricRates'; + /** Number of clicks for every impression */ + clickThrough: Scalars['Numeric']['output']; + /** Number of conversions for every click */ + clickToConversion: Scalars['Numeric']['output']; + /** Number of site vists for every click */ + clickToSiteVisit: Scalars['Numeric']['output']; + /** Spend for every impression */ + costPerAcquisition: Scalars['Numeric']['output']; + /** Number of dismissals for every impression */ + impressionToDismiss: Scalars['Numeric']['output']; + /** Number of site vists for every impression */ + impressionToSiteVisit: Scalars['Numeric']['output']; +}; + +export type Metrics = { + __typename?: 'Metrics'; + click: Scalars['Numeric']['output']; + clickThroughConversion: Scalars['Numeric']['output']; + conversion: Scalars['Numeric']['output']; + dismiss: Scalars['Numeric']['output']; + downvote: Scalars['Numeric']['output']; + impression: Scalars['Numeric']['output']; + /** @deprecated use siteVisit instead */ + land: Scalars['Numeric']['output']; + nominalSpendUsd: Scalars['Numeric']['output']; + rates: MetricRates; + siteVisit: Scalars['Numeric']['output']; + spendUsd: Scalars['Numeric']['output']; + upvote: Scalars['Numeric']['output']; + /** @deprecated use impression instead */ + view: Scalars['Numeric']['output']; + viewThroughConversion: Scalars['Numeric']['output']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + approveAdvertiser: Advertiser; + approveAdvertiserRegistration: Advertiser; + approveCampaign: Campaign; + createAdSet: AdSet; + createAdvertiser: Advertiser; + createAdvertiserImage: AdvertiserImage; + createCampaign: Campaign; + createComment: CampaignComment; + createCreative: Creative; + /** @deprecated use createCreative instead */ + createInPageCreative: Creative; + /** @deprecated use createCreative instead */ + createNewTabPageCreative: Creative; + createNotificationCreative: Creative; + createUser: User; + /** Logically deletes the ad */ + deleteAd: Ad; + rejectAdvertiser: Advertiser; + rejectAdvertiserRegistration: Registration; + rejectCampaign: Campaign; + rejectCreative: Creative; + /** @deprecated This actually updates the state of the creative, not the ad as its name suggests! */ + updateAd: Ad; + updateAdSet: AdSet; + updateAdvertiser: Advertiser; + updateCampaign: Campaign; + updateCreative: Creative; + updateNotificationCreative: Creative; + updateUser: User; +}; + + +export type MutationApproveAdvertiserArgs = { + id: Scalars['String']['input']; +}; + + +export type MutationApproveAdvertiserRegistrationArgs = { + id: Scalars['String']['input']; +}; + + +export type MutationApproveCampaignArgs = { + approveCampaignInput: ApproveCampaignInput; +}; + + +export type MutationCreateAdSetArgs = { + createAdSetInput: CreateAdSetInput; +}; + + +export type MutationCreateAdvertiserArgs = { + createAdvertiserInput: CreateAdvertiserInput; +}; + + +export type MutationCreateAdvertiserImageArgs = { + createImageInput: CreateAdvertiserImageInput; +}; + + +export type MutationCreateCampaignArgs = { + createCampaignInput: CreateCampaignInput; +}; + + +export type MutationCreateCommentArgs = { + createCommentInput: CreateCommentInput; +}; + + +export type MutationCreateCreativeArgs = { + creative: CreativeInput; +}; + + +export type MutationCreateInPageCreativeArgs = { + createInPageCreativeInput: CreateInPageCreativeInput; +}; + + +export type MutationCreateNewTabPageCreativeArgs = { + createNewTabPageCreativeInput: CreateNewTabPageCreativeInput; +}; + + +export type MutationCreateNotificationCreativeArgs = { + createNotificationCreativeInput: CreateNotificationCreativeInput; +}; + + +export type MutationCreateUserArgs = { + createUserInput: CreateUserInput; +}; + + +export type MutationDeleteAdArgs = { + deleteAdInput: DeleteAdInput; +}; + + +export type MutationRejectAdvertiserArgs = { + id: Scalars['String']['input']; + reason: Scalars['String']['input']; +}; + + +export type MutationRejectAdvertiserRegistrationArgs = { + id: Scalars['String']['input']; + ignore?: Scalars['Boolean']['input']; + reason: Scalars['String']['input']; +}; + + +export type MutationRejectCampaignArgs = { + rejectCampaignInput: RejectCampaignInput; +}; + + +export type MutationRejectCreativeArgs = { + id: Scalars['String']['input']; + reason: Scalars['String']['input']; +}; + + +export type MutationUpdateAdArgs = { + updateAdInput: UpdateAdInput; +}; + + +export type MutationUpdateAdSetArgs = { + updateAdSetInput: UpdateAdSetInput; +}; + + +export type MutationUpdateAdvertiserArgs = { + updateAdvertiserInput: UpdateAdvertiserInput; +}; + + +export type MutationUpdateCampaignArgs = { + updateCampaignInput: UpdateCampaignInput; +}; + + +export type MutationUpdateCreativeArgs = { + creative: CreativeInput; + id: Scalars['String']['input']; +}; + + +export type MutationUpdateNotificationCreativeArgs = { + updateNotificationCreativeInput: UpdateNotificationCreativeInput; +}; + + +export type MutationUpdateUserArgs = { + updateUserInput: UpdateUserInput; +}; + +export type NewTabPagePayload = { + __typename?: 'NewTabPagePayload'; + logo?: Maybe; + wallpapers?: Maybe>; +}; + +export type NewTabPagePayloadInput = { + logo?: InputMaybe; + wallpapers?: InputMaybe>; +}; + +export type NotificationPayload = { + __typename?: 'NotificationPayload'; + body: Scalars['String']['output']; + targetUrl: Scalars['String']['output']; + title: Scalars['String']['output']; +}; + +export type NotificationPayloadInput = { + body: Scalars['String']['input']; + targetUrl: Scalars['String']['input']; + title: Scalars['String']['input']; +}; + +export type Os = { + __typename?: 'OS'; + code: Scalars['String']['output']; + createdAt: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; +}; + +export type Payload = { + __typename?: 'Payload'; + body?: Maybe; + creativeUrl?: Maybe; + logo?: Maybe; + size?: Maybe; + targetUrl?: Maybe; + title?: Maybe; + wallpapers?: Maybe>; +}; + +export enum PaymentType { + ManualBat = 'MANUAL_BAT', + Netsuite = 'NETSUITE', + Radom = 'RADOM', + Stripe = 'STRIPE' +} + +/** For NTT campaigns, metric values are ranged with min and max values. In this case, metrics is equivalent to `min`, though the min-max range should usually be shown in preference. For other campaign formats, `metrics` `min` and `max` are all set to the same values. */ +export type Performance = { + __typename?: 'Performance'; + dimensions: Dimensions; + max: Metrics; + metrics: Metrics; + min: Metrics; +}; + +export type PerformanceFilter = { + /** include metrics for all these advertisers' campaigns */ + advertiserIds?: InputMaybe>; + /** include metrics for all these campaigns */ + campaignIds?: InputMaybe>; + /** include only metrics for responses for all these countries */ + country?: InputMaybe>; + /** include metrics starting from this time (inclusive) */ + from?: InputMaybe; + /** include only metrics for responses for all these operating systems */ + os?: InputMaybe>; + /** include only metrics for responses for all these segments */ + segment?: InputMaybe>; + /** include metrics before this time (inclusive) */ + to?: InputMaybe; +}; + +export type PerformanceResults = { + __typename?: 'PerformanceResults'; + total: PerformanceValues; + values: Array; +}; + +export type PerformanceValues = { + __typename?: 'PerformanceValues'; + max: Metrics; + metrics: Metrics; + min: Metrics; +}; + +export type PromotedContentPayload = { + __typename?: 'PromotedContentPayload'; + category: Scalars['String']['output']; + contentType: Scalars['String']['output']; + description: Scalars['String']['output']; + domain?: Maybe; + feed: Scalars['String']['output']; + ogImages: Scalars['Boolean']['output']; + title: Scalars['String']['output']; +}; + +export type PromotedContentPayloadInput = { + category: Scalars['String']['input']; + contentType: Scalars['String']['input']; + description: Scalars['String']['input']; + domain?: InputMaybe; + feed: Scalars['String']['input']; + ogImages: Scalars['Boolean']['input']; + title: Scalars['String']['input']; +}; + +export type Query = { + __typename?: 'Query'; + /** @deprecated use geocodes instead */ + activeGeocodes: ActiveGeocodesQueryDto; + ad?: Maybe; + adSet?: Maybe; + advertiser?: Maybe; + advertiserCampaigns?: Maybe; + advertiserCount: Scalars['Float']['output']; + advertisers: Array; + campaign?: Maybe; + campaignCount: Scalars['Int']['output']; + campaigns: Array; + campaignsPerCountry: CampaignsPerCountryQueryDto; + campaignsPerCurrency: CampaignsPerCurrencyQueryDto; + changes: Array; + confirmationCount: Scalars['Float']['output']; + creative?: Maybe; + creativeCampaigns: Array; + creatives: Array; + creativesCount: Scalars['Int']['output']; + engagementsOverview?: Maybe>; + geocodes: Array; + performance: PerformanceResults; + registrations: Registrations; + searchProspects: SearchProspects; + segments: SegmentsQueryDto; + targetingTerms: Array; + user: User; + userCount: Scalars['Int']['output']; + users: Array; + validateTargetUrl: TargetUrlValidation; +}; + + +export type QueryAdArgs = { + id: Scalars['String']['input']; + includeDeleted?: InputMaybe; +}; + + +export type QueryAdSetArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryAdvertiserArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryAdvertiserCampaignsArgs = { + filter?: InputMaybe; + id: Scalars['String']['input']; +}; + + +export type QueryAdvertiserCountArgs = { + filter?: InputMaybe; + state?: InputMaybe; +}; + + +export type QueryAdvertisersArgs = { + filter?: InputMaybe; +}; + + +export type QueryCampaignArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryCampaignCountArgs = { + filter?: InputMaybe; +}; + + +export type QueryCampaignsArgs = { + filter?: InputMaybe; +}; + + +export type QueryChangesArgs = { + filter: ChangeFilter; +}; + + +export type QueryCreativeArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryCreativeCampaignsArgs = { + advertiserId: Scalars['String']['input']; + creativeId: Scalars['String']['input']; +}; + + +export type QueryCreativesArgs = { + filter?: InputMaybe; +}; + + +export type QueryCreativesCountArgs = { + filter?: InputMaybe; +}; + + +export type QueryEngagementsOverviewArgs = { + advertiserId?: InputMaybe; + campaignIds?: InputMaybe>; + filter?: InputMaybe; +}; + + +export type QueryPerformanceArgs = { + filter?: PerformanceFilter; +}; + + +export type QueryUserArgs = { + id: Scalars['String']['input']; +}; + + +export type QueryValidateTargetUrlArgs = { + targetUrl: Scalars['String']['input']; +}; + +export type Redirect = { + __typename?: 'Redirect'; + /** @deprecated use violations and warnings instead */ + errors: Array; + url: Scalars['String']['output']; + violations: Array; + warnings: Array; +}; + +export type Registration = { + __typename?: 'Registration'; + businessName: Scalars['String']['output']; + createdAt: Scalars['DateTime']['output']; + description: Scalars['String']['output']; + email: Scalars['String']['output']; + fullName: Scalars['String']['output']; + id: Scalars['String']['output']; + marketingChannel?: Maybe; + state: RegistrationState; + url: Scalars['String']['output']; +}; + +export type RegistrationFilter = { + state?: InputMaybe; +}; + +export enum RegistrationState { + Approved = 'APPROVED', + Denied = 'DENIED', + UnderReview = 'UNDER_REVIEW' +} + +export type Registrations = { + __typename?: 'Registrations'; + all: Array; + count: Scalars['Float']['output']; +}; + + +export type RegistrationsAllArgs = { + filter?: InputMaybe; +}; + + +export type RegistrationsCountArgs = { + filter?: InputMaybe; +}; + +export type RejectCampaignInput = { + campaignId: Scalars['String']['input']; + message?: InputMaybe; + option: CampaignRejection; +}; + +export type SearchDomain = { + __typename?: 'SearchDomain'; + country: Scalars['String']['output']; + domain: Scalars['String']['output']; +}; + +export type SearchDomainEligibility = { + __typename?: 'SearchDomainEligibility'; + entries: Scalars['String']['output']; + estimatedClicks: Scalars['String']['output']; + estimatedQpw: Scalars['String']['output']; + status: Scalars['String']['output']; + trialBudget: Scalars['String']['output']; +}; + +export type SearchHomepagePayload = { + __typename?: 'SearchHomepagePayload'; + body: Scalars['String']['output']; + ctaText: Scalars['String']['output']; + imageDarkModeUrl?: Maybe; + imageUrl: Scalars['String']['output']; + targetUrl: Scalars['String']['output']; + title: Scalars['String']['output']; +}; + +export type SearchHomepagePayloadInput = { + body: Scalars['String']['input']; + ctaText?: Scalars['String']['input']; + imageDarkModeUrl?: InputMaybe; + imageUrl: Scalars['String']['input']; + targetUrl: Scalars['String']['input']; + title: Scalars['String']['input']; +}; + +export type SearchLandingPage = { + __typename?: 'SearchLandingPage'; + country: Scalars['String']['output']; + creatives: Array; + domain: Scalars['String']['output']; + queries: Array; + url: Scalars['String']['output']; +}; + +export type SearchLandingPageCreative = { + __typename?: 'SearchLandingPageCreative'; + body?: Maybe; + count: Scalars['Numeric']['output']; + lastSeen: Scalars['DateTime']['output']; + rank: Scalars['Numeric']['output']; + title: Scalars['String']['output']; +}; + +export type SearchLandingPageQuery = { + __typename?: 'SearchLandingPageQuery'; + count: Scalars['Numeric']['output']; + lastSeen: Scalars['DateTime']['output']; + query: Scalars['String']['output']; + rank: Scalars['Numeric']['output']; +}; + +export type SearchLandingPageWithStats = { + __typename?: 'SearchLandingPageWithStats'; + count: Scalars['Numeric']['output']; + country: Scalars['String']['output']; + creatives: Array; + domain: Scalars['String']['output']; + lastSeen: Scalars['DateTime']['output']; + queries: Array; + rank: Scalars['Numeric']['output']; + url: Scalars['String']['output']; +}; + +export type SearchPayload = { + __typename?: 'SearchPayload'; + body: Scalars['String']['output']; + /** ad-hoc parameters passed to search */ + meta?: Maybe; + /** optionally, how this creative should be rendered with the SERP */ + style?: Maybe; + targetUrl: Scalars['String']['output']; + title: Scalars['String']['output']; +}; + +export type SearchPayloadInput = { + body: Scalars['String']['input']; + /** ad-hoc parameters passed to search */ + meta?: InputMaybe; + /** optionally, how this creative should be rendered with the SERP */ + style?: InputMaybe; + targetUrl: Scalars['String']['input']; + title: Scalars['String']['input']; +}; + +export type SearchProspects = { + __typename?: 'SearchProspects'; + domains: Array; + eligibilityStats: SearchDomainEligibility; + landingPage: SearchLandingPage; + landingPages: Array; + landingPagesWithStats: Array; +}; + + +export type SearchProspectsDomainsArgs = { + country: Scalars['String']['input']; + limit?: InputMaybe; + offset?: InputMaybe; + partialDomain: Scalars['String']['input']; +}; + + +export type SearchProspectsEligibilityStatsArgs = { + country: Scalars['String']['input']; + domain: Scalars['String']['input']; +}; + + +export type SearchProspectsLandingPageArgs = { + country: Scalars['String']['input']; + domain: Scalars['String']['input']; + url: Scalars['String']['input']; +}; + + +export type SearchProspectsLandingPagesArgs = { + country: Scalars['String']['input']; + domain: Scalars['String']['input']; + urls: Array; +}; + + +export type SearchProspectsLandingPagesWithStatsArgs = { + country: Scalars['String']['input']; + domain: Scalars['String']['input']; + limit?: Scalars['Float']['input']; + offset?: Scalars['Float']['input']; +}; + +export type Segment = { + __typename?: 'Segment'; + code: Scalars['String']['output']; + createdAt: Scalars['DateTime']['output']; + id: Scalars['String']['output']; + modifiedAt: Scalars['DateTime']['output']; + name: Scalars['String']['output']; +}; + +export type SegmentsEntry = { + __typename?: 'SegmentsEntry'; + code: Scalars['String']['output']; + name: Scalars['String']['output']; +}; + +export type SegmentsQueryDto = { + __typename?: 'SegmentsQueryDTO'; + data: Array; +}; + +export type TargetUrlValidation = { + __typename?: 'TargetUrlValidation'; + /** @deprecated use redirects.violations and redirects.warnings instead */ + errors: Array; + isValid: Scalars['Boolean']['output']; + redirects: Array; +}; + +export type UpdateAdInput = { + creativeId?: InputMaybe; + creativeSetId?: InputMaybe; + id?: InputMaybe; + state?: InputMaybe; + webhooks?: InputMaybe>; +}; + +export type UpdateAdSetInput = { + ads?: InputMaybe>; + bannedKeywords?: InputMaybe>; + billingType?: InputMaybe; + brandedDesktopPrice?: InputMaybe; + brandedMobilePrice?: InputMaybe; + campaignId?: InputMaybe; + conversions?: InputMaybe>; + externalId?: InputMaybe; + id?: InputMaybe; + keywordSimilarity?: InputMaybe; + keywords?: InputMaybe>; + name?: InputMaybe; + negativeKeywords?: InputMaybe>; + negativeTriggerUrls?: InputMaybe>; + nonBrandedDesktopPrice?: InputMaybe; + nonBrandedMobilePrice?: InputMaybe; + optimized?: InputMaybe; + oses?: InputMaybe>; + perDay?: InputMaybe; + /** The price in the owning campaign's currency for each single confirmation of the priceType specified. Note therefore that the caller is responsible for dividing cost-per-mille by 1000. */ + price?: InputMaybe; + segments?: InputMaybe>; + splitTestGroup?: InputMaybe; + state?: InputMaybe; + targetingTerms?: InputMaybe>; + totalMax?: InputMaybe; + triggerUrls?: InputMaybe>; +}; + +export type UpdateAddressInput = { + city?: InputMaybe; + country?: InputMaybe; + /** Temporarily nullable so the frontend does not break */ + id?: InputMaybe; + state?: InputMaybe; + street1?: InputMaybe; + street2?: InputMaybe; + zipcode?: InputMaybe; +}; + +export type UpdateAdvertiserInput = { + accountManagerId?: InputMaybe; + additionalBillingEmails?: InputMaybe>; + /** Agreed to Terms And Conditions - Advertiser Facing Dashboard */ + agreed?: InputMaybe; + billingAddress?: InputMaybe; + billingEmail?: InputMaybe; + billingModelPrices?: InputMaybe>; + description?: InputMaybe; + id: Scalars['String']['input']; + marketingChannel?: InputMaybe; + name?: InputMaybe; + phone?: InputMaybe; + publicKey?: InputMaybe; + referrer?: InputMaybe; + selfServiceManageCampaign?: InputMaybe; + state?: InputMaybe; + url?: InputMaybe; + userId?: InputMaybe; + users?: InputMaybe>; +}; + +export type UpdateCampaignInput = { + accountManagerId?: InputMaybe; + adSets?: InputMaybe>; + advertiserId?: InputMaybe; + bannedKeywords?: InputMaybe>; + brandedKeyword?: InputMaybe; + brandedKeywords?: InputMaybe>; + budget?: InputMaybe; + currency?: InputMaybe; + dailyBudget?: InputMaybe; + dailyCap?: InputMaybe; + dayPartings?: InputMaybe>; + dayProportion?: InputMaybe; + endAt?: InputMaybe; + externalId?: InputMaybe; + geoTargets?: InputMaybe>; + id: Scalars['String']['input']; + name?: InputMaybe; + pacingOverride?: InputMaybe; + pacingStrategy?: InputMaybe; + passThroughRate?: InputMaybe; + paymentType?: InputMaybe; + priority?: InputMaybe; + startAt?: InputMaybe; + state?: InputMaybe; + stripePaymentId?: InputMaybe; + type?: InputMaybe; +}; + +export type UpdateConversionsInput = { + extractExternalId?: InputMaybe; + id?: InputMaybe; + observationWindow?: InputMaybe; + trailingAsteriskNotRequired?: InputMaybe; + type?: InputMaybe; + urlPattern?: InputMaybe; +}; + +export type UpdateNotificationCreativeInput = { + advertiserId?: InputMaybe; + creativeId?: InputMaybe; + endAt?: InputMaybe; + name?: InputMaybe; + payload?: InputMaybe; + startAt?: InputMaybe; + state?: InputMaybe; + type?: InputMaybe; + userId?: InputMaybe; +}; + +export type UpdateOSesInput = { + code?: InputMaybe; + name?: InputMaybe; +}; + +export type UpdateSegmentInput = { + code?: InputMaybe; + name?: InputMaybe; +}; + +export type UpdateUserInput = { + email?: InputMaybe; + emailVerified?: InputMaybe; + fullName?: InputMaybe; + id?: InputMaybe; + password?: InputMaybe; + role?: InputMaybe; +}; + +export type User = { + __typename?: 'User'; + advertisers: Array; + createdAt: Scalars['String']['output']; + email: Scalars['String']['output']; + emailVerified: Scalars['Boolean']['output']; + fullName: Scalars['String']['output']; + id: Scalars['String']['output']; + role: Scalars['String']['output']; +}; + +export type ValidationDetail = { + __typename?: 'ValidationDetail'; + detail: Scalars['String']['output']; + summary: Scalars['String']['output']; +}; + +export type Wallpaper = { + __typename?: 'Wallpaper'; + focalPoint: FocalPoint; + imageUrl: Scalars['String']['output']; +}; + +export type WallpaperInput = { + focalPoint: FocalPointInput; + imageUrl: Scalars['String']['input']; +}; + +export type Webhook = { + __typename?: 'Webhook'; + type: Scalars['String']['output']; + url: Scalars['String']['output']; +}; + +export type CreateWebhookInput = { + type: Scalars['String']['input']; + url: Scalars['String']['input']; +}; + +export type AdFragment = { __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }; + +export type AdSetFragment = { __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: string, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }; + +export type AdSetWithDeletedAdsFragment = { __typename?: 'AdSet', id: string, createdAt: string, name: string, state: string, billingType?: string | null, oses: Array<{ __typename?: 'OS', code: string, name: string }>, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }; + +export type CreateAdSetMutationVariables = Exact<{ + createAdSetInput: CreateAdSetInput; +}>; + + +export type CreateAdSetMutation = { __typename?: 'Mutation', createAdSet: { __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: string, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> } }; + +export type UpdateAdSetMutationVariables = Exact<{ + updateAdSetInput: UpdateAdSetInput; +}>; + + +export type UpdateAdSetMutation = { __typename?: 'Mutation', updateAdSet: { __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: string, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> } }; + +export type AdvertiserBillingAddressFragment = { __typename?: 'Advertiser', billingAddress?: { __typename?: 'Address', id: string, street1: string, street2?: string | null, city: string, country: string, state: string, zipcode: string } | null }; + +export type AdvertiserSummaryFragment = { __typename?: 'Advertiser', id: string, name: string, state: string, billingEmail?: string | null, additionalBillingEmails?: Array | null, createdAt: string, modifiedAt: string, publicKey?: string | null }; + +export type AdvertiserFragment = { __typename?: 'Advertiser', referrer?: string | null, phone?: string | null, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, id: string, name: string, state: string, billingEmail?: string | null, additionalBillingEmails?: Array | null, createdAt: string, modifiedAt: string, publicKey?: string | null }; + +export type AdvertiserCampaignsFragment = { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null }> }; + +export type AdvertiserImageFragment = { __typename?: 'AdvertiserImage', name: string, imageUrl: string, format: CampaignFormat, id: string, createdAt: string }; + +export type AdvertiserPriceFragment = { __typename?: 'AdvertiserPrice', billingModelPrice: string, billingType: BillingType, format: CampaignFormat }; + +export type AdvertiserQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type AdvertiserQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', id: string, publicKey?: string | null } | null }; + +export type UpdateAdvertiserMutationVariables = Exact<{ + updateAdvertiserInput: UpdateAdvertiserInput; +}>; + + +export type UpdateAdvertiserMutation = { __typename?: 'Mutation', updateAdvertiser: { __typename?: 'Advertiser', id: string, publicKey?: string | null } }; + +export type AdvertiserCampaignsQueryVariables = Exact<{ + id: Scalars['String']['input']; + filter?: InputMaybe; +}>; + + +export type AdvertiserCampaignsQuery = { __typename?: 'Query', advertiserCampaigns?: { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null }> } | null }; + +export type AdvertiserImagesQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type AdvertiserImagesQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', images: Array<{ __typename?: 'AdvertiserImage', name: string, imageUrl: string, format: CampaignFormat, id: string, createdAt: string }> } | null }; + +export type AdvertiserPricesQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type AdvertiserPricesQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', prices: Array<{ __typename?: 'AdvertiserPrice', billingModelPrice: string, billingType: BillingType, format: CampaignFormat }> } | null }; + +export type AdvertiserBillingAddressQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type AdvertiserBillingAddressQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', id: string, billingAddress?: { __typename?: 'Address', id: string, street1: string, street2?: string | null, city: string, country: string, state: string, zipcode: string } | null } | null }; + +export type UploadAdvertiserImageMutationVariables = Exact<{ + input: CreateAdvertiserImageInput; +}>; + + +export type UploadAdvertiserImageMutation = { __typename?: 'Mutation', createAdvertiserImage: { __typename?: 'AdvertiserImage', name: string } }; + +export type EngagementFragment = { __typename?: 'Engagement', creativeinstanceid: string, createdat: string, type: string, pricetype: string, creativesetname?: string | null, creativesetid: string, creativename: string, creativeid: string, creativestate: string, creativepayload: string, view: string, click: string, viewthroughConversion: string, clickthroughConversion: string, conversion: string, dismiss: string, downvote: string, landed: string, spend: string, upvote: string, price: number, android: number, ios: number, linux: number, macos: number, windows: number }; + +export type CampaignWithEngagementsFragment = { __typename?: 'Campaign', id: string, name: string, state: string, budget: number, spent: number, currency: string, createdAt: string, startAt: string, endAt: string, pacingIndex?: number | null, format: CampaignFormat, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, extractExternalId: boolean }> }>, engagements: Array<{ __typename?: 'Engagement', creativeinstanceid: string, createdat: string, type: string, pricetype: string, creativesetname?: string | null, creativesetid: string, creativename: string, creativeid: string, creativestate: string, creativepayload: string, view: string, click: string, viewthroughConversion: string, clickthroughConversion: string, conversion: string, dismiss: string, downvote: string, landed: string, spend: string, upvote: string, price: number, android: number, ios: number, linux: number, macos: number, windows: number }> }; + +export type CampaignMetricSummaryValuesFragment = { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string } }; + +export type CampaignMetricDetailValuesFragment = { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } }; + +export type DailyValuesFragment = { __typename?: 'Performance', dimensions: { __typename?: 'Dimensions', day: string }, metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } } }; + +export type AdSetValuesFragment = { __typename?: 'Performance', dimensions: { __typename?: 'Dimensions', adSet: { __typename?: 'AdSet', id: string, name: string, state: string, billingType?: string | null } }, metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } } }; + +export type AnalyticOverviewQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type AnalyticOverviewQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: string, budget: number, spent: number, currency: string, createdAt: string, startAt: string, endAt: string, pacingIndex?: number | null, format: CampaignFormat, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, extractExternalId: boolean }> }>, engagements: Array<{ __typename?: 'Engagement', creativeinstanceid: string, createdat: string, type: string, pricetype: string, creativesetname?: string | null, creativesetid: string, creativename: string, creativeid: string, creativestate: string, creativepayload: string, view: string, click: string, viewthroughConversion: string, clickthroughConversion: string, conversion: string, dismiss: string, downvote: string, landed: string, spend: string, upvote: string, price: number, android: number, ios: number, linux: number, macos: number, windows: number }> } | null }; + +export type CampaignMetricsQueryVariables = Exact<{ + campaignIds: Array | Scalars['String']['input']; +}>; + + +export type CampaignMetricsQuery = { __typename?: 'Query', performance: { __typename?: 'PerformanceResults', values: Array<{ __typename?: 'Performance', dimensions: { __typename?: 'Dimensions', campaign: { __typename?: 'Campaign', id: string } }, metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string } } }> } }; + +export type FetchDailyMetricsForCampaignQueryVariables = Exact<{ + filter: PerformanceFilter; +}>; + + +export type FetchDailyMetricsForCampaignQuery = { __typename?: 'Query', performance: { __typename?: 'PerformanceResults', values: Array<{ __typename?: 'Performance', dimensions: { __typename?: 'Dimensions', day: string }, metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } } }>, total: { __typename?: 'PerformanceValues', metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } } } } }; + +export type FetchAdSetMetricsForCampaignQueryVariables = Exact<{ + filter: PerformanceFilter; +}>; + + +export type FetchAdSetMetricsForCampaignQuery = { __typename?: 'Query', performance: { __typename?: 'PerformanceResults', values: Array<{ __typename?: 'Performance', dimensions: { __typename?: 'Dimensions', adSet: { __typename?: 'AdSet', id: string, name: string, state: string, billingType?: string | null } }, metrics: { __typename?: 'Metrics', click: string, impression: string, siteVisit: string, conversion: string, dismiss: string, spendUsd: string, rates: { __typename?: 'MetricRates', clickThrough: string, clickToConversion: string, costPerAcquisition: string } } }> } }; + +export type CampaignFragment = { __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, paymentType: PaymentType, dayProportion?: number | null, stripePaymentId?: string | null, hasPaymentIntent: boolean, dayPartings: Array<{ __typename?: 'DayParting', dow: string, startMinute: number, endMinute: number }>, geoTargets: Array<{ __typename?: 'Geocode', code: string, name: string }>, adSets: Array<{ __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: string, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }>, advertiser: { __typename?: 'Advertiser', id: string } }; + +export type CampaignSummaryFragment = { __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null }; + +export type CampaignAdsFragment = { __typename?: 'Campaign', id: string, name: string, state: string, startAt: string, endAt: string, source: CampaignSource, currency: string, format: CampaignFormat, advertiser: { __typename?: 'Advertiser', id: string }, adSets: Array<{ __typename?: 'AdSet', id: string, createdAt: string, name: string, state: string, billingType?: string | null, oses: Array<{ __typename?: 'OS', code: string, name: string }>, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }> }; + +export type LoadCampaignQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type LoadCampaignQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, paymentType: PaymentType, dayProportion?: number | null, stripePaymentId?: string | null, hasPaymentIntent: boolean, dayPartings: Array<{ __typename?: 'DayParting', dow: string, startMinute: number, endMinute: number }>, geoTargets: Array<{ __typename?: 'Geocode', code: string, name: string }>, adSets: Array<{ __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: string, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }>, advertiser: { __typename?: 'Advertiser', id: string } } | null }; + +export type LoadCampaignAdsQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type LoadCampaignAdsQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: string, startAt: string, endAt: string, source: CampaignSource, currency: string, format: CampaignFormat, advertiser: { __typename?: 'Advertiser', id: string }, adSets: Array<{ __typename?: 'AdSet', id: string, createdAt: string, name: string, state: string, billingType?: string | null, oses: Array<{ __typename?: 'OS', code: string, name: string }>, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, price: string, priceType: ConfirmationType, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }> } | null }; + +export type LoadCampaignSummaryQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type LoadCampaignSummaryQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: string, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null } | null }; + +export type CreateCampaignMutationVariables = Exact<{ + input: CreateCampaignInput; +}>; + + +export type CreateCampaignMutation = { __typename?: 'Mutation', createCampaign: { __typename?: 'Campaign', id: string, paymentType: PaymentType } }; + +export type UpdateCampaignMutationVariables = Exact<{ + input: UpdateCampaignInput; +}>; + + +export type UpdateCampaignMutation = { __typename?: 'Mutation', updateCampaign: { __typename?: 'Campaign', id: string, paymentType: PaymentType, stripePaymentId?: string | null } }; + +export type GeocodeFragment = { __typename?: 'Geocode', code: string, name: string }; + +export type SegmentFragment = { __typename?: 'SegmentsEntry', code: string, name: string }; + +export type ActiveGeocodesQueryVariables = Exact<{ [key: string]: never; }>; + + +export type ActiveGeocodesQuery = { __typename?: 'Query', geocodes: Array<{ __typename?: 'Geocode', code: string, name: string }> }; + +export type SegmentsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type SegmentsQuery = { __typename?: 'Query', segments: { __typename?: 'SegmentsQueryDTO', data: Array<{ __typename?: 'SegmentsEntry', code: string, name: string }> } }; + +export type CreativeFragment = { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null }; + +export type AdvertiserCreativesQueryVariables = Exact<{ + advertiserId: Scalars['String']['input']; +}>; + + +export type AdvertiserCreativesQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', id: string, creatives: Array<{ __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null }> } | null }; + +export type CreateCreativeMutationVariables = Exact<{ + input: CreativeInput; +}>; + + +export type CreateCreativeMutation = { __typename?: 'Mutation', createCreative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }; + +export type UpdateCreativeMutationVariables = Exact<{ + id: Scalars['String']['input']; + input: CreativeInput; +}>; + + +export type UpdateCreativeMutation = { __typename?: 'Mutation', updateCreative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }; + +export type LoadCreativeQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type LoadCreativeQuery = { __typename?: 'Query', creative?: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } | null }; + +export type CampaignsForCreativeQueryVariables = Exact<{ + creativeId: Scalars['String']['input']; + advertiserId: Scalars['String']['input']; +}>; + + +export type CampaignsForCreativeQuery = { __typename?: 'Query', creativeCampaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: string, format: CampaignFormat }> }; + +export type ValidateTargetUrlQueryVariables = Exact<{ + url: Scalars['String']['input']; +}>; + + +export type ValidateTargetUrlQuery = { __typename?: 'Query', validateTargetUrl: { __typename?: 'TargetUrlValidation', isValid: boolean, redirects: Array<{ __typename?: 'Redirect', url: string, violations: Array<{ __typename?: 'ValidationDetail', summary: string, detail: string }> }> } }; + +export type UserFragment = { __typename?: 'User', email: string, fullName: string, id: string, role: string }; + +export type LoadUserQueryVariables = Exact<{ + id: Scalars['String']['input']; +}>; + + +export type LoadUserQuery = { __typename?: 'Query', user: { __typename?: 'User', email: string, fullName: string, id: string, role: string } }; + +export type UpdateUserMutationVariables = Exact<{ + input: UpdateUserInput; +}>; + + +export type UpdateUserMutation = { __typename?: 'Mutation', updateUser: { __typename?: 'User', email: string, fullName: string, id: string, role: string } }; + +export const AdvertiserBillingAddressFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserBillingAddress"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingAddress"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"street1"}},{"kind":"Field","name":{"kind":"Name","value":"street2"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"country"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"zipcode"}}]}}]}}]} as unknown as DocumentNode; +export const AdvertiserSummaryFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingEmail"}},{"kind":"Field","name":{"kind":"Name","value":"additionalBillingEmails"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]} as unknown as DocumentNode; +export const AdvertiserFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Advertiser"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserSummary"}},{"kind":"Field","name":{"kind":"Name","value":"referrer"}},{"kind":"Field","name":{"kind":"Name","value":"phone"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingEmail"}},{"kind":"Field","name":{"kind":"Name","value":"additionalBillingEmails"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]} as unknown as DocumentNode; +export const CampaignSummaryFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}}]}}]} as unknown as DocumentNode; +export const AdvertiserCampaignsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}}]}}]} as unknown as DocumentNode; +export const AdvertiserImageFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserImage"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserImage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode; +export const AdvertiserPriceFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserPrice"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserPrice"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingModelPrice"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"format"}}]}}]} as unknown as DocumentNode; +export const EngagementFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Engagement"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Engagement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"creativeinstanceid"}},{"kind":"Field","name":{"kind":"Name","value":"createdat"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"pricetype"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetname"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetid"}},{"kind":"Field","name":{"kind":"Name","value":"creativename"}},{"kind":"Field","name":{"kind":"Name","value":"creativeid"}},{"kind":"Field","name":{"kind":"Name","value":"creativestate"}},{"kind":"Field","name":{"kind":"Name","value":"creativepayload"}},{"kind":"Field","name":{"kind":"Name","value":"view"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"viewthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"landed"}},{"kind":"Field","name":{"kind":"Name","value":"spend"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"android"}},{"kind":"Field","name":{"kind":"Name","value":"ios"}},{"kind":"Field","name":{"kind":"Name","value":"linux"}},{"kind":"Field","name":{"kind":"Name","value":"macos"}},{"kind":"Field","name":{"kind":"Name","value":"windows"}}]}}]} as unknown as DocumentNode; +export const CampaignWithEngagementsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignWithEngagements"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"pacingIndex"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"engagements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Engagement"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Engagement"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Engagement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"creativeinstanceid"}},{"kind":"Field","name":{"kind":"Name","value":"createdat"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"pricetype"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetname"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetid"}},{"kind":"Field","name":{"kind":"Name","value":"creativename"}},{"kind":"Field","name":{"kind":"Name","value":"creativeid"}},{"kind":"Field","name":{"kind":"Name","value":"creativestate"}},{"kind":"Field","name":{"kind":"Name","value":"creativepayload"}},{"kind":"Field","name":{"kind":"Name","value":"view"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"viewthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"landed"}},{"kind":"Field","name":{"kind":"Name","value":"spend"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"android"}},{"kind":"Field","name":{"kind":"Name","value":"ios"}},{"kind":"Field","name":{"kind":"Name","value":"linux"}},{"kind":"Field","name":{"kind":"Name","value":"macos"}},{"kind":"Field","name":{"kind":"Name","value":"windows"}}]}}]} as unknown as DocumentNode; +export const CampaignMetricSummaryValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricSummaryValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}}]}}]}}]} as unknown as DocumentNode; +export const CampaignMetricDetailValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricDetailValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode; +export const DailyValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DailyValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"day"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricDetailValues"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricDetailValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode; +export const AdSetValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSetValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adSet"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricDetailValues"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricDetailValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode; +export const CreativeFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const AdFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const AdSetFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSet"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalMax"}},{"kind":"Field","name":{"kind":"Name","value":"perDay"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"urlPattern"}},{"kind":"Field","name":{"kind":"Name","value":"observationWindow"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}}]} as unknown as DocumentNode; +export const CampaignFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Campaign"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"stripePaymentId"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"hasPaymentIntent"}},{"kind":"Field","name":{"kind":"Name","value":"dayPartings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dow"}},{"kind":"Field","name":{"kind":"Name","value":"startMinute"}},{"kind":"Field","name":{"kind":"Name","value":"endMinute"}}]}},{"kind":"Field","name":{"kind":"Name","value":"geoTargets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSet"}}]}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSet"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalMax"}},{"kind":"Field","name":{"kind":"Name","value":"perDay"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"urlPattern"}},{"kind":"Field","name":{"kind":"Name","value":"observationWindow"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}}]} as unknown as DocumentNode; +export const AdSetWithDeletedAdsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSetWithDeletedAds"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"includeDeleted"},"value":{"kind":"BooleanValue","value":true}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}}]} as unknown as DocumentNode; +export const CampaignAdsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignAds"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSetWithDeletedAds"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSetWithDeletedAds"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"includeDeleted"},"value":{"kind":"BooleanValue","value":true}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}}]} as unknown as DocumentNode; +export const GeocodeFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Geocode"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Geocode"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode; +export const SegmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Segment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SegmentsEntry"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode; +export const UserFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"User"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"User"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}}]} as unknown as DocumentNode; +export const CreateAdSetDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"createAdSet"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"createAdSetInput"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateAdSetInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createAdSet"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"createAdSetInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"createAdSetInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSet"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSet"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalMax"}},{"kind":"Field","name":{"kind":"Name","value":"perDay"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"urlPattern"}},{"kind":"Field","name":{"kind":"Name","value":"observationWindow"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}}]} as unknown as DocumentNode; +export const UpdateAdSetDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"updateAdSet"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"updateAdSetInput"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateAdSetInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateAdSet"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"updateAdSetInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"updateAdSetInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSet"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSet"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalMax"}},{"kind":"Field","name":{"kind":"Name","value":"perDay"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"urlPattern"}},{"kind":"Field","name":{"kind":"Name","value":"observationWindow"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}}]} as unknown as DocumentNode; +export const AdvertiserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]}}]} as unknown as DocumentNode; +export const UpdateAdvertiserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"updateAdvertiser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"updateAdvertiserInput"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateAdvertiserInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateAdvertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"updateAdvertiserInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"updateAdvertiserInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]}}]} as unknown as DocumentNode; +export const AdvertiserCampaignsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiserCampaigns"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserCampaignFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiserCampaigns"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserCampaigns"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}}]} as unknown as DocumentNode; +export const AdvertiserImagesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiserImages"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"images"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserImage"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserImage"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserImage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode; +export const AdvertiserPricesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiserPrices"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserPrice"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserPrice"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserPrice"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingModelPrice"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"format"}}]}}]} as unknown as DocumentNode; +export const AdvertiserBillingAddressDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiserBillingAddress"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserBillingAddress"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserBillingAddress"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingAddress"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"street1"}},{"kind":"Field","name":{"kind":"Name","value":"street2"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"country"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"zipcode"}}]}}]}}]} as unknown as DocumentNode; +export const UploadAdvertiserImageDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"uploadAdvertiserImage"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateAdvertiserImageInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createAdvertiserImage"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"createImageInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode; +export const AnalyticOverviewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"analyticOverview"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignWithEngagements"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Engagement"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Engagement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"creativeinstanceid"}},{"kind":"Field","name":{"kind":"Name","value":"createdat"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"pricetype"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetname"}},{"kind":"Field","name":{"kind":"Name","value":"creativesetid"}},{"kind":"Field","name":{"kind":"Name","value":"creativename"}},{"kind":"Field","name":{"kind":"Name","value":"creativeid"}},{"kind":"Field","name":{"kind":"Name","value":"creativestate"}},{"kind":"Field","name":{"kind":"Name","value":"creativepayload"}},{"kind":"Field","name":{"kind":"Name","value":"view"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"viewthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickthroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"landed"}},{"kind":"Field","name":{"kind":"Name","value":"spend"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"android"}},{"kind":"Field","name":{"kind":"Name","value":"ios"}},{"kind":"Field","name":{"kind":"Name","value":"linux"}},{"kind":"Field","name":{"kind":"Name","value":"macos"}},{"kind":"Field","name":{"kind":"Name","value":"windows"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignWithEngagements"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"pacingIndex"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"engagements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Engagement"}}]}}]}}]} as unknown as DocumentNode; +export const CampaignMetricsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"campaignMetrics"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"campaignIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"performance"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"campaignIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"campaignIds"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricSummaryValues"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricSummaryValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}}]}}]}}]} as unknown as DocumentNode; +export const FetchDailyMetricsForCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"fetchDailyMetricsForCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PerformanceFilter"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"performance"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"DailyValues"}}]}},{"kind":"Field","name":{"kind":"Name","value":"total"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricDetailValues"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricDetailValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DailyValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"day"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricDetailValues"}}]}}]}}]} as unknown as DocumentNode; +export const FetchAdSetMetricsForCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"fetchAdSetMetricsForCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PerformanceFilter"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"performance"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSetValues"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricDetailValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSetValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adSet"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignMetricDetailValues"}}]}}]}}]} as unknown as DocumentNode; +export const LoadCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Campaign"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSet"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalMax"}},{"kind":"Field","name":{"kind":"Name","value":"perDay"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"urlPattern"}},{"kind":"Field","name":{"kind":"Name","value":"observationWindow"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Campaign"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"stripePaymentId"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"hasPaymentIntent"}},{"kind":"Field","name":{"kind":"Name","value":"dayPartings"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dow"}},{"kind":"Field","name":{"kind":"Name","value":"startMinute"}},{"kind":"Field","name":{"kind":"Name","value":"endMinute"}}]}},{"kind":"Field","name":{"kind":"Name","value":"geoTargets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSet"}}]}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; +export const LoadCampaignAdsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadCampaignAds"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignAds"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Ad"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ad"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"price"}},{"kind":"Field","name":{"kind":"Name","value":"priceType"}},{"kind":"Field","name":{"kind":"Name","value":"creative"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdSetWithDeletedAds"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdSet"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"oses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"ads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"includeDeleted"},"value":{"kind":"BooleanValue","value":true}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Ad"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignAds"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdSetWithDeletedAds"}}]}}]}}]} as unknown as DocumentNode; +export const LoadCampaignSummaryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadCampaignSummary"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"spent"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}}]}}]} as unknown as DocumentNode; +export const CreateCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateCampaignInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCampaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"createCampaignInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}}]}}]}}]} as unknown as DocumentNode; +export const UpdateCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateCampaignInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCampaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"updateCampaignInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"stripePaymentId"}}]}}]}}]} as unknown as DocumentNode; +export const ActiveGeocodesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ActiveGeocodes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"geocodes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Geocode"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Geocode"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Geocode"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode; +export const SegmentsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Segment"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Segment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SegmentsEntry"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode; +export const AdvertiserCreativesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"advertiserCreatives"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"advertiserId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"advertiserId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"creatives"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const CreateCreativeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"createCreative"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreativeInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCreative"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"creative"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const UpdateCreativeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"updateCreative"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreativeInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCreative"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"creative"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const LoadCreativeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"loadCreative"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"creative"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"Creative"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"Creative"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Creative"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"type"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"code"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNewTabPage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"alt"}},{"kind":"Field","name":{"kind":"Name","value":"companyName"}},{"kind":"Field","name":{"kind":"Name","value":"destinationUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"wallpapers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"focalPoint"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadInlineContent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"dimensions"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadNotification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearch"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"payloadSearchHomepage"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"imageDarkModeUrl"}},{"kind":"Field","name":{"kind":"Name","value":"targetUrl"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"ctaText"}}]}}]}}]} as unknown as DocumentNode; +export const CampaignsForCreativeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"campaignsForCreative"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"creativeId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"advertiserId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"creativeCampaigns"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"creativeId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"creativeId"}}},{"kind":"Argument","name":{"kind":"Name","value":"advertiserId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"advertiserId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"format"}}]}}]}}]} as unknown as DocumentNode; +export const ValidateTargetUrlDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"validateTargetUrl"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"url"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"validateTargetUrl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"targetUrl"},"value":{"kind":"Variable","name":{"kind":"Name","value":"url"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"isValid"}},{"kind":"Field","name":{"kind":"Name","value":"redirects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"violations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"summary"}},{"kind":"Field","name":{"kind":"Name","value":"detail"}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const LoadUserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadUser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"User"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"User"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"User"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}}]} as unknown as DocumentNode; +export const UpdateUserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateUser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateUserInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateUser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"updateUserInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"User"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"User"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"User"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/src/graphql-client/index.ts b/src/graphql-client/index.ts new file mode 100644 index 00000000..af783993 --- /dev/null +++ b/src/graphql-client/index.ts @@ -0,0 +1 @@ +export * from "./gql"; \ No newline at end of file diff --git a/src/graphql/ad-set.generated.tsx b/src/graphql/ad-set.generated.tsx deleted file mode 100644 index f6614263..00000000 --- a/src/graphql/ad-set.generated.tsx +++ /dev/null @@ -1,503 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import { CreativeFragmentDoc } from "./creative.generated"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type AdSetFragment = { - id: string; - price: string; - createdAt: string; - billingType?: string | null; - name: string; - totalMax: number; - perDay: number; - state: string; - segments: Array<{ code: string; name: string }>; - oses: Array<{ code: string; name: string }>; - conversions: Array<{ - id: string; - type: string; - urlPattern: string; - observationWindow: number; - }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; -}; - -export type AdFragment = { - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; -}; - -export type AdSetWithDeletedAdsFragment = { - id: string; - createdAt: string; - name: string; - state: string; - billingType?: string | null; - oses: Array<{ code: string; name: string }>; - segments: Array<{ code: string; name: string }>; - conversions: Array<{ id: string }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; -}; - -export type CreateAdSetMutationVariables = Types.Exact<{ - createAdSetInput: Types.CreateAdSetInput; -}>; - -export type CreateAdSetMutation = { - createAdSet: { - id: string; - price: string; - createdAt: string; - billingType?: string | null; - name: string; - totalMax: number; - perDay: number; - state: string; - segments: Array<{ code: string; name: string }>; - oses: Array<{ code: string; name: string }>; - conversions: Array<{ - id: string; - type: string; - urlPattern: string; - observationWindow: number; - }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }; -}; - -export type UpdateAdSetMutationVariables = Types.Exact<{ - updateAdSetInput: Types.UpdateAdSetInput; -}>; - -export type UpdateAdSetMutation = { - updateAdSet: { - id: string; - price: string; - createdAt: string; - billingType?: string | null; - name: string; - totalMax: number; - perDay: number; - state: string; - segments: Array<{ code: string; name: string }>; - oses: Array<{ code: string; name: string }>; - conversions: Array<{ - id: string; - type: string; - urlPattern: string; - observationWindow: number; - }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }; -}; - -export const AdFragmentDoc = gql` - fragment Ad on Ad { - id - state - price - priceType - creative { - ...Creative - } - } - ${CreativeFragmentDoc} -`; -export const AdSetFragmentDoc = gql` - fragment AdSet on AdSet { - id - price - createdAt - billingType - name - totalMax - perDay - state - segments { - code - name - } - oses { - code - name - } - conversions { - id - type - urlPattern - observationWindow - } - ads { - ...Ad - } - } - ${AdFragmentDoc} -`; -export const AdSetWithDeletedAdsFragmentDoc = gql` - fragment AdSetWithDeletedAds on AdSet { - id - createdAt - name - state - billingType - oses { - code - name - } - segments { - code - name - } - conversions { - id - } - ads(includeDeleted: true) { - ...Ad - } - } - ${AdFragmentDoc} -`; -export const CreateAdSetDocument = gql` - mutation createAdSet($createAdSetInput: CreateAdSetInput!) { - createAdSet(createAdSetInput: $createAdSetInput) { - ...AdSet - } - } - ${AdSetFragmentDoc} -`; -export type CreateAdSetMutationFn = Apollo.MutationFunction< - CreateAdSetMutation, - CreateAdSetMutationVariables ->; - -/** - * __useCreateAdSetMutation__ - * - * To run a mutation, you first call `useCreateAdSetMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateAdSetMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createAdSetMutation, { data, loading, error }] = useCreateAdSetMutation({ - * variables: { - * createAdSetInput: // value for 'createAdSetInput' - * }, - * }); - */ -export function useCreateAdSetMutation( - baseOptions?: Apollo.MutationHookOptions< - CreateAdSetMutation, - CreateAdSetMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation( - CreateAdSetDocument, - options, - ); -} -export type CreateAdSetMutationHookResult = ReturnType< - typeof useCreateAdSetMutation ->; -export type CreateAdSetMutationResult = - Apollo.MutationResult; -export type CreateAdSetMutationOptions = Apollo.BaseMutationOptions< - CreateAdSetMutation, - CreateAdSetMutationVariables ->; -export const UpdateAdSetDocument = gql` - mutation updateAdSet($updateAdSetInput: UpdateAdSetInput!) { - updateAdSet(updateAdSetInput: $updateAdSetInput) { - ...AdSet - } - } - ${AdSetFragmentDoc} -`; -export type UpdateAdSetMutationFn = Apollo.MutationFunction< - UpdateAdSetMutation, - UpdateAdSetMutationVariables ->; - -/** - * __useUpdateAdSetMutation__ - * - * To run a mutation, you first call `useUpdateAdSetMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateAdSetMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateAdSetMutation, { data, loading, error }] = useUpdateAdSetMutation({ - * variables: { - * updateAdSetInput: // value for 'updateAdSetInput' - * }, - * }); - */ -export function useUpdateAdSetMutation( - baseOptions?: Apollo.MutationHookOptions< - UpdateAdSetMutation, - UpdateAdSetMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation( - UpdateAdSetDocument, - options, - ); -} -export type UpdateAdSetMutationHookResult = ReturnType< - typeof useUpdateAdSetMutation ->; -export type UpdateAdSetMutationResult = - Apollo.MutationResult; -export type UpdateAdSetMutationOptions = Apollo.BaseMutationOptions< - UpdateAdSetMutation, - UpdateAdSetMutationVariables ->; diff --git a/src/graphql/advertiser.generated.tsx b/src/graphql/advertiser.generated.tsx deleted file mode 100644 index 544918c6..00000000 --- a/src/graphql/advertiser.generated.tsx +++ /dev/null @@ -1,777 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import { CampaignSummaryFragmentDoc } from "./campaign.generated"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type AdvertiserSummaryFragment = { - id: string; - name: string; - state: string; - billingEmail?: string | null; - additionalBillingEmails?: Array | null; - createdAt: string; - modifiedAt: string; - publicKey?: string | null; -}; - -export type AdvertiserBillingAddressFragment = { - billingAddress?: { - id: string; - street1: string; - street2?: string | null; - city: string; - country: string; - state: string; - zipcode: string; - } | null; -}; - -export type AdvertiserFragment = { - referrer?: string | null; - phone?: string | null; - selfServiceManageCampaign: boolean; - selfServiceSetPrice: boolean; - id: string; - name: string; - state: string; - billingEmail?: string | null; - additionalBillingEmails?: Array | null; - createdAt: string; - modifiedAt: string; - publicKey?: string | null; -}; - -export type AdvertiserQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type AdvertiserQuery = { - advertiser?: { id: string; publicKey?: string | null } | null; -}; - -export type UpdateAdvertiserMutationVariables = Types.Exact<{ - updateAdvertiserInput: Types.UpdateAdvertiserInput; -}>; - -export type UpdateAdvertiserMutation = { - updateAdvertiser: { id: string; publicKey?: string | null }; -}; - -export type AdvertiserCampaignsFragment = { - id: string; - name: string; - selfServiceManageCampaign: boolean; - selfServiceSetPrice: boolean; - campaigns: Array<{ - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - paymentType: Types.PaymentType; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - dayProportion?: number | null; - }>; -}; - -export type AdvertiserCampaignsQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; - filter?: Types.InputMaybe; -}>; - -export type AdvertiserCampaignsQuery = { - advertiserCampaigns?: { - id: string; - name: string; - selfServiceManageCampaign: boolean; - selfServiceSetPrice: boolean; - campaigns: Array<{ - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - paymentType: Types.PaymentType; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - dayProportion?: number | null; - }>; - } | null; -}; - -export type AdvertiserImageFragment = { - name: string; - imageUrl: string; - format: Types.CampaignFormat; - id: string; - createdAt: string; -}; - -export type AdvertiserPriceFragment = { - billingModelPrice: string; - billingType: Types.BillingType; - format: Types.CampaignFormat; -}; - -export type AdvertiserImagesQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type AdvertiserImagesQuery = { - advertiser?: { - images: Array<{ - name: string; - imageUrl: string; - format: Types.CampaignFormat; - id: string; - createdAt: string; - }>; - } | null; -}; - -export type AdvertiserPricesQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type AdvertiserPricesQuery = { - advertiser?: { - prices: Array<{ - billingModelPrice: string; - billingType: Types.BillingType; - format: Types.CampaignFormat; - }>; - } | null; -}; - -export type AdvertiserBillingAddressQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type AdvertiserBillingAddressQuery = { - advertiser?: { - id: string; - billingAddress?: { - id: string; - street1: string; - street2?: string | null; - city: string; - country: string; - state: string; - zipcode: string; - } | null; - } | null; -}; - -export type UploadAdvertiserImageMutationVariables = Types.Exact<{ - input: Types.CreateAdvertiserImageInput; -}>; - -export type UploadAdvertiserImageMutation = { - createAdvertiserImage: { name: string }; -}; - -export const AdvertiserBillingAddressFragmentDoc = gql` - fragment AdvertiserBillingAddress on Advertiser { - billingAddress { - id - street1 - street2 - city - country - state - zipcode - } - } -`; -export const AdvertiserSummaryFragmentDoc = gql` - fragment AdvertiserSummary on Advertiser { - id - name - state - billingEmail - additionalBillingEmails - createdAt - modifiedAt - publicKey - } -`; -export const AdvertiserFragmentDoc = gql` - fragment Advertiser on Advertiser { - ...AdvertiserSummary - referrer - phone - selfServiceManageCampaign - selfServiceSetPrice - } - ${AdvertiserSummaryFragmentDoc} -`; -export const AdvertiserCampaignsFragmentDoc = gql` - fragment AdvertiserCampaigns on Advertiser { - id - name - selfServiceManageCampaign - selfServiceSetPrice - campaigns { - ...CampaignSummary - } - } - ${CampaignSummaryFragmentDoc} -`; -export const AdvertiserImageFragmentDoc = gql` - fragment AdvertiserImage on AdvertiserImage { - name - imageUrl - format - id - createdAt - } -`; -export const AdvertiserPriceFragmentDoc = gql` - fragment AdvertiserPrice on AdvertiserPrice { - billingModelPrice - billingType - format - } -`; -export const AdvertiserDocument = gql` - query advertiser($id: String!) { - advertiser(id: $id) { - id - publicKey - } - } -`; - -/** - * __useAdvertiserQuery__ - * - * To run a query within a React component, call `useAdvertiserQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAdvertiserQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserQuery, - AdvertiserQueryVariables - > & - ( - | { variables: AdvertiserQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - AdvertiserDocument, - options, - ); -} -export function useAdvertiserLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserQuery, - AdvertiserQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - AdvertiserDocument, - options, - ); -} -export function useAdvertiserSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserQuery, - AdvertiserQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery( - AdvertiserDocument, - options, - ); -} -export type AdvertiserQueryHookResult = ReturnType; -export type AdvertiserLazyQueryHookResult = ReturnType< - typeof useAdvertiserLazyQuery ->; -export type AdvertiserSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserSuspenseQuery ->; -export type AdvertiserQueryResult = Apollo.QueryResult< - AdvertiserQuery, - AdvertiserQueryVariables ->; -export function refetchAdvertiserQuery(variables: AdvertiserQueryVariables) { - return { query: AdvertiserDocument, variables: variables }; -} -export const UpdateAdvertiserDocument = gql` - mutation updateAdvertiser($updateAdvertiserInput: UpdateAdvertiserInput!) { - updateAdvertiser(updateAdvertiserInput: $updateAdvertiserInput) { - id - publicKey - } - } -`; -export type UpdateAdvertiserMutationFn = Apollo.MutationFunction< - UpdateAdvertiserMutation, - UpdateAdvertiserMutationVariables ->; - -/** - * __useUpdateAdvertiserMutation__ - * - * To run a mutation, you first call `useUpdateAdvertiserMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateAdvertiserMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateAdvertiserMutation, { data, loading, error }] = useUpdateAdvertiserMutation({ - * variables: { - * updateAdvertiserInput: // value for 'updateAdvertiserInput' - * }, - * }); - */ -export function useUpdateAdvertiserMutation( - baseOptions?: Apollo.MutationHookOptions< - UpdateAdvertiserMutation, - UpdateAdvertiserMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - UpdateAdvertiserMutation, - UpdateAdvertiserMutationVariables - >(UpdateAdvertiserDocument, options); -} -export type UpdateAdvertiserMutationHookResult = ReturnType< - typeof useUpdateAdvertiserMutation ->; -export type UpdateAdvertiserMutationResult = - Apollo.MutationResult; -export type UpdateAdvertiserMutationOptions = Apollo.BaseMutationOptions< - UpdateAdvertiserMutation, - UpdateAdvertiserMutationVariables ->; -export const AdvertiserCampaignsDocument = gql` - query advertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) { - advertiserCampaigns(id: $id, filter: $filter) { - ...AdvertiserCampaigns - } - } - ${AdvertiserCampaignsFragmentDoc} -`; - -/** - * __useAdvertiserCampaignsQuery__ - * - * To run a query within a React component, call `useAdvertiserCampaignsQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserCampaignsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserCampaignsQuery({ - * variables: { - * id: // value for 'id' - * filter: // value for 'filter' - * }, - * }); - */ -export function useAdvertiserCampaignsQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - > & - ( - | { variables: AdvertiserCampaignsQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - >(AdvertiserCampaignsDocument, options); -} -export function useAdvertiserCampaignsLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - >(AdvertiserCampaignsDocument, options); -} -export function useAdvertiserCampaignsSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables - >(AdvertiserCampaignsDocument, options); -} -export type AdvertiserCampaignsQueryHookResult = ReturnType< - typeof useAdvertiserCampaignsQuery ->; -export type AdvertiserCampaignsLazyQueryHookResult = ReturnType< - typeof useAdvertiserCampaignsLazyQuery ->; -export type AdvertiserCampaignsSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserCampaignsSuspenseQuery ->; -export type AdvertiserCampaignsQueryResult = Apollo.QueryResult< - AdvertiserCampaignsQuery, - AdvertiserCampaignsQueryVariables ->; -export function refetchAdvertiserCampaignsQuery( - variables: AdvertiserCampaignsQueryVariables, -) { - return { query: AdvertiserCampaignsDocument, variables: variables }; -} -export const AdvertiserImagesDocument = gql` - query advertiserImages($id: String!) { - advertiser(id: $id) { - images { - ...AdvertiserImage - } - } - } - ${AdvertiserImageFragmentDoc} -`; - -/** - * __useAdvertiserImagesQuery__ - * - * To run a query within a React component, call `useAdvertiserImagesQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserImagesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserImagesQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAdvertiserImagesQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables - > & - ( - | { variables: AdvertiserImagesQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - AdvertiserImagesDocument, - options, - ); -} -export function useAdvertiserImagesLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables - >(AdvertiserImagesDocument, options); -} -export function useAdvertiserImagesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables - >(AdvertiserImagesDocument, options); -} -export type AdvertiserImagesQueryHookResult = ReturnType< - typeof useAdvertiserImagesQuery ->; -export type AdvertiserImagesLazyQueryHookResult = ReturnType< - typeof useAdvertiserImagesLazyQuery ->; -export type AdvertiserImagesSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserImagesSuspenseQuery ->; -export type AdvertiserImagesQueryResult = Apollo.QueryResult< - AdvertiserImagesQuery, - AdvertiserImagesQueryVariables ->; -export function refetchAdvertiserImagesQuery( - variables: AdvertiserImagesQueryVariables, -) { - return { query: AdvertiserImagesDocument, variables: variables }; -} -export const AdvertiserPricesDocument = gql` - query advertiserPrices($id: String!) { - advertiser(id: $id) { - prices { - ...AdvertiserPrice - } - } - } - ${AdvertiserPriceFragmentDoc} -`; - -/** - * __useAdvertiserPricesQuery__ - * - * To run a query within a React component, call `useAdvertiserPricesQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserPricesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserPricesQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAdvertiserPricesQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables - > & - ( - | { variables: AdvertiserPricesQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - AdvertiserPricesDocument, - options, - ); -} -export function useAdvertiserPricesLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables - >(AdvertiserPricesDocument, options); -} -export function useAdvertiserPricesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables - >(AdvertiserPricesDocument, options); -} -export type AdvertiserPricesQueryHookResult = ReturnType< - typeof useAdvertiserPricesQuery ->; -export type AdvertiserPricesLazyQueryHookResult = ReturnType< - typeof useAdvertiserPricesLazyQuery ->; -export type AdvertiserPricesSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserPricesSuspenseQuery ->; -export type AdvertiserPricesQueryResult = Apollo.QueryResult< - AdvertiserPricesQuery, - AdvertiserPricesQueryVariables ->; -export function refetchAdvertiserPricesQuery( - variables: AdvertiserPricesQueryVariables, -) { - return { query: AdvertiserPricesDocument, variables: variables }; -} -export const AdvertiserBillingAddressDocument = gql` - query advertiserBillingAddress($id: String!) { - advertiser(id: $id) { - id - ...AdvertiserBillingAddress - } - } - ${AdvertiserBillingAddressFragmentDoc} -`; - -/** - * __useAdvertiserBillingAddressQuery__ - * - * To run a query within a React component, call `useAdvertiserBillingAddressQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserBillingAddressQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserBillingAddressQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAdvertiserBillingAddressQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - > & - ( - | { variables: AdvertiserBillingAddressQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - >(AdvertiserBillingAddressDocument, options); -} -export function useAdvertiserBillingAddressLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - >(AdvertiserBillingAddressDocument, options); -} -export function useAdvertiserBillingAddressSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables - >(AdvertiserBillingAddressDocument, options); -} -export type AdvertiserBillingAddressQueryHookResult = ReturnType< - typeof useAdvertiserBillingAddressQuery ->; -export type AdvertiserBillingAddressLazyQueryHookResult = ReturnType< - typeof useAdvertiserBillingAddressLazyQuery ->; -export type AdvertiserBillingAddressSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserBillingAddressSuspenseQuery ->; -export type AdvertiserBillingAddressQueryResult = Apollo.QueryResult< - AdvertiserBillingAddressQuery, - AdvertiserBillingAddressQueryVariables ->; -export function refetchAdvertiserBillingAddressQuery( - variables: AdvertiserBillingAddressQueryVariables, -) { - return { query: AdvertiserBillingAddressDocument, variables: variables }; -} -export const UploadAdvertiserImageDocument = gql` - mutation uploadAdvertiserImage($input: CreateAdvertiserImageInput!) { - createAdvertiserImage(createImageInput: $input) { - name - } - } -`; -export type UploadAdvertiserImageMutationFn = Apollo.MutationFunction< - UploadAdvertiserImageMutation, - UploadAdvertiserImageMutationVariables ->; - -/** - * __useUploadAdvertiserImageMutation__ - * - * To run a mutation, you first call `useUploadAdvertiserImageMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUploadAdvertiserImageMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [uploadAdvertiserImageMutation, { data, loading, error }] = useUploadAdvertiserImageMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useUploadAdvertiserImageMutation( - baseOptions?: Apollo.MutationHookOptions< - UploadAdvertiserImageMutation, - UploadAdvertiserImageMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - UploadAdvertiserImageMutation, - UploadAdvertiserImageMutationVariables - >(UploadAdvertiserImageDocument, options); -} -export type UploadAdvertiserImageMutationHookResult = ReturnType< - typeof useUploadAdvertiserImageMutation ->; -export type UploadAdvertiserImageMutationResult = - Apollo.MutationResult; -export type UploadAdvertiserImageMutationOptions = Apollo.BaseMutationOptions< - UploadAdvertiserImageMutation, - UploadAdvertiserImageMutationVariables ->; diff --git a/src/graphql/analytics-overview.generated.tsx b/src/graphql/analytics-overview.generated.tsx deleted file mode 100644 index 87ceb18d..00000000 --- a/src/graphql/analytics-overview.generated.tsx +++ /dev/null @@ -1,765 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type EngagementFragment = { - creativeinstanceid: string; - createdat: string; - type: string; - pricetype: string; - creativesetname?: string | null; - creativesetid: string; - creativename: string; - creativeid: string; - creativestate: string; - creativepayload: string; - view: string; - click: string; - viewthroughConversion: string; - clickthroughConversion: string; - conversion: string; - dismiss: string; - downvote: string; - landed: string; - spend: string; - upvote: string; - price: number; - android: number; - ios: number; - linux: number; - macos: number; - windows: number; -}; - -export type CampaignWithEngagementsFragment = { - id: string; - name: string; - state: string; - budget: number; - spent: number; - currency: string; - createdAt: string; - startAt: string; - endAt: string; - pacingIndex?: number | null; - format: Types.CampaignFormat; - adSets: Array<{ - id: string; - conversions: Array<{ - id: string; - type: string; - extractExternalId: boolean; - }>; - }>; - engagements: Array<{ - creativeinstanceid: string; - createdat: string; - type: string; - pricetype: string; - creativesetname?: string | null; - creativesetid: string; - creativename: string; - creativeid: string; - creativestate: string; - creativepayload: string; - view: string; - click: string; - viewthroughConversion: string; - clickthroughConversion: string; - conversion: string; - dismiss: string; - downvote: string; - landed: string; - spend: string; - upvote: string; - price: number; - android: number; - ios: number; - linux: number; - macos: number; - windows: number; - }>; -}; - -export type AnalyticOverviewQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type AnalyticOverviewQuery = { - campaign?: { - id: string; - name: string; - state: string; - budget: number; - spent: number; - currency: string; - createdAt: string; - startAt: string; - endAt: string; - pacingIndex?: number | null; - format: Types.CampaignFormat; - adSets: Array<{ - id: string; - conversions: Array<{ - id: string; - type: string; - extractExternalId: boolean; - }>; - }>; - engagements: Array<{ - creativeinstanceid: string; - createdat: string; - type: string; - pricetype: string; - creativesetname?: string | null; - creativesetid: string; - creativename: string; - creativeid: string; - creativestate: string; - creativepayload: string; - view: string; - click: string; - viewthroughConversion: string; - clickthroughConversion: string; - conversion: string; - dismiss: string; - downvote: string; - landed: string; - spend: string; - upvote: string; - price: number; - android: number; - ios: number; - linux: number; - macos: number; - windows: number; - }>; - } | null; -}; - -export type CampaignMetricSummaryValuesFragment = { - click: string; - impression: string; - siteVisit: string; - spendUsd: string; - rates: { clickThrough: string }; -}; - -export type CampaignMetricsQueryVariables = Types.Exact<{ - campaignIds: - | Array - | Types.Scalars["String"]["input"]; -}>; - -export type CampaignMetricsQuery = { - performance: { - values: Array<{ - dimensions: { campaign?: { id: string } | null }; - metrics: { - click: string; - impression: string; - siteVisit: string; - spendUsd: string; - rates: { clickThrough: string }; - }; - }>; - }; -}; - -export type CampaignMetricDetailValuesFragment = { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; -}; - -export type DailyValuesFragment = { - dimensions: { day?: string | null }; - metrics: { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; - }; -}; - -export type FetchDailyMetricsForCampaignQueryVariables = Types.Exact<{ - filter: Types.PerformanceFilter; -}>; - -export type FetchDailyMetricsForCampaignQuery = { - performance: { - values: Array<{ - dimensions: { day?: string | null }; - metrics: { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; - }; - }>; - total: { - metrics: { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; - }; - }; - }; -}; - -export type AdSetValuesFragment = { - dimensions: { - adSet?: { - id: string; - name: string; - state: string; - billingType?: string | null; - } | null; - }; - metrics: { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; - }; -}; - -export type FetchAdSetMetricsForCampaignQueryVariables = Types.Exact<{ - filter: Types.PerformanceFilter; -}>; - -export type FetchAdSetMetricsForCampaignQuery = { - performance: { - values: Array<{ - dimensions: { - adSet?: { - id: string; - name: string; - state: string; - billingType?: string | null; - } | null; - }; - metrics: { - click: string; - impression: string; - siteVisit: string; - conversion: string; - dismiss: string; - spendUsd: string; - rates: { - clickThrough: string; - clickToConversion: string; - costPerAcquisition: string; - }; - }; - }>; - }; -}; - -export const EngagementFragmentDoc = gql` - fragment Engagement on Engagement { - creativeinstanceid - createdat - type - pricetype - creativesetname - creativesetid - creativename - creativeid - creativestate - creativepayload - view - click - viewthroughConversion - clickthroughConversion - conversion - dismiss - downvote - landed - spend - upvote - downvote - price - android - ios - linux - macos - windows - } -`; -export const CampaignWithEngagementsFragmentDoc = gql` - fragment CampaignWithEngagements on Campaign { - id - name - state - budget - spent - currency - createdAt - startAt - endAt - currency - pacingIndex - format - adSets { - id - conversions { - id - type - extractExternalId - } - } - engagements { - ...Engagement - } - } - ${EngagementFragmentDoc} -`; -export const CampaignMetricSummaryValuesFragmentDoc = gql` - fragment CampaignMetricSummaryValues on Metrics { - click - impression - siteVisit - spendUsd - rates { - clickThrough - } - } -`; -export const CampaignMetricDetailValuesFragmentDoc = gql` - fragment CampaignMetricDetailValues on Metrics { - click - impression - siteVisit - conversion - dismiss - spendUsd - rates { - clickThrough - clickToConversion - costPerAcquisition - } - } -`; -export const DailyValuesFragmentDoc = gql` - fragment DailyValues on Performance { - dimensions { - day - } - metrics { - ...CampaignMetricDetailValues - } - } - ${CampaignMetricDetailValuesFragmentDoc} -`; -export const AdSetValuesFragmentDoc = gql` - fragment AdSetValues on Performance { - dimensions { - adSet { - id - name - state - billingType - } - } - metrics { - ...CampaignMetricDetailValues - } - } - ${CampaignMetricDetailValuesFragmentDoc} -`; -export const AnalyticOverviewDocument = gql` - query analyticOverview($id: String!) { - campaign(id: $id) { - ...CampaignWithEngagements - } - } - ${CampaignWithEngagementsFragmentDoc} -`; - -/** - * __useAnalyticOverviewQuery__ - * - * To run a query within a React component, call `useAnalyticOverviewQuery` and pass it any options that fit your needs. - * When your component renders, `useAnalyticOverviewQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAnalyticOverviewQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAnalyticOverviewQuery( - baseOptions: Apollo.QueryHookOptions< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables - > & - ( - | { variables: AnalyticOverviewQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - AnalyticOverviewDocument, - options, - ); -} -export function useAnalyticOverviewLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables - >(AnalyticOverviewDocument, options); -} -export function useAnalyticOverviewSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables - >(AnalyticOverviewDocument, options); -} -export type AnalyticOverviewQueryHookResult = ReturnType< - typeof useAnalyticOverviewQuery ->; -export type AnalyticOverviewLazyQueryHookResult = ReturnType< - typeof useAnalyticOverviewLazyQuery ->; -export type AnalyticOverviewSuspenseQueryHookResult = ReturnType< - typeof useAnalyticOverviewSuspenseQuery ->; -export type AnalyticOverviewQueryResult = Apollo.QueryResult< - AnalyticOverviewQuery, - AnalyticOverviewQueryVariables ->; -export function refetchAnalyticOverviewQuery( - variables: AnalyticOverviewQueryVariables, -) { - return { query: AnalyticOverviewDocument, variables: variables }; -} -export const CampaignMetricsDocument = gql` - query campaignMetrics($campaignIds: [String!]!) { - performance(filter: { campaignIds: $campaignIds }) { - values { - dimensions { - campaign { - id - } - } - metrics { - ...CampaignMetricSummaryValues - } - } - } - } - ${CampaignMetricSummaryValuesFragmentDoc} -`; - -/** - * __useCampaignMetricsQuery__ - * - * To run a query within a React component, call `useCampaignMetricsQuery` and pass it any options that fit your needs. - * When your component renders, `useCampaignMetricsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useCampaignMetricsQuery({ - * variables: { - * campaignIds: // value for 'campaignIds' - * }, - * }); - */ -export function useCampaignMetricsQuery( - baseOptions: Apollo.QueryHookOptions< - CampaignMetricsQuery, - CampaignMetricsQueryVariables - > & - ( - | { variables: CampaignMetricsQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - CampaignMetricsDocument, - options, - ); -} -export function useCampaignMetricsLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - CampaignMetricsQuery, - CampaignMetricsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - CampaignMetricsQuery, - CampaignMetricsQueryVariables - >(CampaignMetricsDocument, options); -} -export function useCampaignMetricsSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - CampaignMetricsQuery, - CampaignMetricsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - CampaignMetricsQuery, - CampaignMetricsQueryVariables - >(CampaignMetricsDocument, options); -} -export type CampaignMetricsQueryHookResult = ReturnType< - typeof useCampaignMetricsQuery ->; -export type CampaignMetricsLazyQueryHookResult = ReturnType< - typeof useCampaignMetricsLazyQuery ->; -export type CampaignMetricsSuspenseQueryHookResult = ReturnType< - typeof useCampaignMetricsSuspenseQuery ->; -export type CampaignMetricsQueryResult = Apollo.QueryResult< - CampaignMetricsQuery, - CampaignMetricsQueryVariables ->; -export function refetchCampaignMetricsQuery( - variables: CampaignMetricsQueryVariables, -) { - return { query: CampaignMetricsDocument, variables: variables }; -} -export const FetchDailyMetricsForCampaignDocument = gql` - query fetchDailyMetricsForCampaign($filter: PerformanceFilter!) { - performance(filter: $filter) { - values { - ...DailyValues - } - total { - metrics { - ...CampaignMetricDetailValues - } - } - } - } - ${DailyValuesFragmentDoc} - ${CampaignMetricDetailValuesFragmentDoc} -`; - -/** - * __useFetchDailyMetricsForCampaignQuery__ - * - * To run a query within a React component, call `useFetchDailyMetricsForCampaignQuery` and pass it any options that fit your needs. - * When your component renders, `useFetchDailyMetricsForCampaignQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useFetchDailyMetricsForCampaignQuery({ - * variables: { - * filter: // value for 'filter' - * }, - * }); - */ -export function useFetchDailyMetricsForCampaignQuery( - baseOptions: Apollo.QueryHookOptions< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - > & - ( - | { - variables: FetchDailyMetricsForCampaignQueryVariables; - skip?: boolean; - } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - >(FetchDailyMetricsForCampaignDocument, options); -} -export function useFetchDailyMetricsForCampaignLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - >(FetchDailyMetricsForCampaignDocument, options); -} -export function useFetchDailyMetricsForCampaignSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables - >(FetchDailyMetricsForCampaignDocument, options); -} -export type FetchDailyMetricsForCampaignQueryHookResult = ReturnType< - typeof useFetchDailyMetricsForCampaignQuery ->; -export type FetchDailyMetricsForCampaignLazyQueryHookResult = ReturnType< - typeof useFetchDailyMetricsForCampaignLazyQuery ->; -export type FetchDailyMetricsForCampaignSuspenseQueryHookResult = ReturnType< - typeof useFetchDailyMetricsForCampaignSuspenseQuery ->; -export type FetchDailyMetricsForCampaignQueryResult = Apollo.QueryResult< - FetchDailyMetricsForCampaignQuery, - FetchDailyMetricsForCampaignQueryVariables ->; -export function refetchFetchDailyMetricsForCampaignQuery( - variables: FetchDailyMetricsForCampaignQueryVariables, -) { - return { query: FetchDailyMetricsForCampaignDocument, variables: variables }; -} -export const FetchAdSetMetricsForCampaignDocument = gql` - query fetchAdSetMetricsForCampaign($filter: PerformanceFilter!) { - performance(filter: $filter) { - values { - ...AdSetValues - } - } - } - ${AdSetValuesFragmentDoc} -`; - -/** - * __useFetchAdSetMetricsForCampaignQuery__ - * - * To run a query within a React component, call `useFetchAdSetMetricsForCampaignQuery` and pass it any options that fit your needs. - * When your component renders, `useFetchAdSetMetricsForCampaignQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useFetchAdSetMetricsForCampaignQuery({ - * variables: { - * filter: // value for 'filter' - * }, - * }); - */ -export function useFetchAdSetMetricsForCampaignQuery( - baseOptions: Apollo.QueryHookOptions< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - > & - ( - | { - variables: FetchAdSetMetricsForCampaignQueryVariables; - skip?: boolean; - } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - >(FetchAdSetMetricsForCampaignDocument, options); -} -export function useFetchAdSetMetricsForCampaignLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - >(FetchAdSetMetricsForCampaignDocument, options); -} -export function useFetchAdSetMetricsForCampaignSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables - >(FetchAdSetMetricsForCampaignDocument, options); -} -export type FetchAdSetMetricsForCampaignQueryHookResult = ReturnType< - typeof useFetchAdSetMetricsForCampaignQuery ->; -export type FetchAdSetMetricsForCampaignLazyQueryHookResult = ReturnType< - typeof useFetchAdSetMetricsForCampaignLazyQuery ->; -export type FetchAdSetMetricsForCampaignSuspenseQueryHookResult = ReturnType< - typeof useFetchAdSetMetricsForCampaignSuspenseQuery ->; -export type FetchAdSetMetricsForCampaignQueryResult = Apollo.QueryResult< - FetchAdSetMetricsForCampaignQuery, - FetchAdSetMetricsForCampaignQueryVariables ->; -export function refetchFetchAdSetMetricsForCampaignQuery( - variables: FetchAdSetMetricsForCampaignQueryVariables, -) { - return { query: FetchAdSetMetricsForCampaignDocument, variables: variables }; -} diff --git a/src/graphql/campaign.generated.tsx b/src/graphql/campaign.generated.tsx deleted file mode 100644 index 43b45247..00000000 --- a/src/graphql/campaign.generated.tsx +++ /dev/null @@ -1,876 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import { - AdSetFragmentDoc, - AdSetWithDeletedAdsFragmentDoc, -} from "./ad-set.generated"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type CampaignFragment = { - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - paymentType: Types.PaymentType; - dayProportion?: number | null; - stripePaymentId?: string | null; - hasPaymentIntent: boolean; - dayPartings: Array<{ dow: string; startMinute: number; endMinute: number }>; - geoTargets: Array<{ code: string; name: string }>; - adSets: Array<{ - id: string; - price: string; - createdAt: string; - billingType?: string | null; - name: string; - totalMax: number; - perDay: number; - state: string; - segments: Array<{ code: string; name: string }>; - oses: Array<{ code: string; name: string }>; - conversions: Array<{ - id: string; - type: string; - urlPattern: string; - observationWindow: number; - }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }>; - advertiser: { id: string }; -}; - -export type CampaignSummaryFragment = { - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - paymentType: Types.PaymentType; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - dayProportion?: number | null; -}; - -export type CampaignAdsFragment = { - id: string; - name: string; - state: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - currency: string; - format: Types.CampaignFormat; - advertiser: { id: string }; - adSets: Array<{ - id: string; - createdAt: string; - name: string; - state: string; - billingType?: string | null; - oses: Array<{ code: string; name: string }>; - segments: Array<{ code: string; name: string }>; - conversions: Array<{ id: string }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }>; -}; - -export type LoadCampaignQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type LoadCampaignQuery = { - campaign?: { - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - paymentType: Types.PaymentType; - dayProportion?: number | null; - stripePaymentId?: string | null; - hasPaymentIntent: boolean; - dayPartings: Array<{ dow: string; startMinute: number; endMinute: number }>; - geoTargets: Array<{ code: string; name: string }>; - adSets: Array<{ - id: string; - price: string; - createdAt: string; - billingType?: string | null; - name: string; - totalMax: number; - perDay: number; - state: string; - segments: Array<{ code: string; name: string }>; - oses: Array<{ code: string; name: string }>; - conversions: Array<{ - id: string; - type: string; - urlPattern: string; - observationWindow: number; - }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }>; - advertiser: { id: string }; - } | null; -}; - -export type LoadCampaignAdsQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type LoadCampaignAdsQuery = { - campaign?: { - id: string; - name: string; - state: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - currency: string; - format: Types.CampaignFormat; - advertiser: { id: string }; - adSets: Array<{ - id: string; - createdAt: string; - name: string; - state: string; - billingType?: string | null; - oses: Array<{ code: string; name: string }>; - segments: Array<{ code: string; name: string }>; - conversions: Array<{ id: string }>; - ads: Array<{ - id: string; - state: string; - price: string; - priceType: Types.ConfirmationType; - creative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; - }>; - }>; - } | null; -}; - -export type LoadCampaignSummaryQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type LoadCampaignSummaryQuery = { - campaign?: { - id: string; - name: string; - state: string; - dailyCap: number; - priority: number; - passThroughRate: number; - pacingOverride: boolean; - pacingStrategy: Types.CampaignPacingStrategies; - externalId?: string | null; - currency: string; - budget: number; - paymentType: Types.PaymentType; - spent: number; - createdAt: string; - startAt: string; - endAt: string; - source: Types.CampaignSource; - type: Types.CampaignType; - format: Types.CampaignFormat; - dayProportion?: number | null; - } | null; -}; - -export type CreateCampaignMutationVariables = Types.Exact<{ - input: Types.CreateCampaignInput; -}>; - -export type CreateCampaignMutation = { - createCampaign: { id: string; paymentType: Types.PaymentType }; -}; - -export type UpdateCampaignMutationVariables = Types.Exact<{ - input: Types.UpdateCampaignInput; -}>; - -export type UpdateCampaignMutation = { - updateCampaign: { - id: string; - paymentType: Types.PaymentType; - stripePaymentId?: string | null; - }; -}; - -export const CampaignFragmentDoc = gql` - fragment Campaign on Campaign { - id - name - state - dailyCap - priority - passThroughRate - pacingOverride - pacingStrategy - externalId - currency - budget - spent - createdAt - startAt - endAt - source - type - format - paymentType - dayProportion - stripePaymentId - paymentType - hasPaymentIntent - dayPartings { - dow - startMinute - endMinute - } - geoTargets { - code - name - } - adSets { - ...AdSet - } - advertiser { - id - } - } - ${AdSetFragmentDoc} -`; -export const CampaignSummaryFragmentDoc = gql` - fragment CampaignSummary on Campaign { - id - name - state - dailyCap - priority - passThroughRate - pacingOverride - pacingStrategy - externalId - currency - budget - paymentType - spent - createdAt - startAt - endAt - source - type - format - paymentType - dayProportion - } -`; -export const CampaignAdsFragmentDoc = gql` - fragment CampaignAds on Campaign { - id - name - state - startAt - endAt - source - currency - format - advertiser { - id - } - adSets { - ...AdSetWithDeletedAds - } - } - ${AdSetWithDeletedAdsFragmentDoc} -`; -export const LoadCampaignDocument = gql` - query LoadCampaign($id: String!) { - campaign(id: $id) { - ...Campaign - } - } - ${CampaignFragmentDoc} -`; - -/** - * __useLoadCampaignQuery__ - * - * To run a query within a React component, call `useLoadCampaignQuery` and pass it any options that fit your needs. - * When your component renders, `useLoadCampaignQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoadCampaignQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useLoadCampaignQuery( - baseOptions: Apollo.QueryHookOptions< - LoadCampaignQuery, - LoadCampaignQueryVariables - > & - ( - | { variables: LoadCampaignQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - LoadCampaignDocument, - options, - ); -} -export function useLoadCampaignLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - LoadCampaignQuery, - LoadCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - LoadCampaignDocument, - options, - ); -} -export function useLoadCampaignSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - LoadCampaignQuery, - LoadCampaignQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery( - LoadCampaignDocument, - options, - ); -} -export type LoadCampaignQueryHookResult = ReturnType< - typeof useLoadCampaignQuery ->; -export type LoadCampaignLazyQueryHookResult = ReturnType< - typeof useLoadCampaignLazyQuery ->; -export type LoadCampaignSuspenseQueryHookResult = ReturnType< - typeof useLoadCampaignSuspenseQuery ->; -export type LoadCampaignQueryResult = Apollo.QueryResult< - LoadCampaignQuery, - LoadCampaignQueryVariables ->; -export function refetchLoadCampaignQuery( - variables: LoadCampaignQueryVariables, -) { - return { query: LoadCampaignDocument, variables: variables }; -} -export const LoadCampaignAdsDocument = gql` - query LoadCampaignAds($id: String!) { - campaign(id: $id) { - ...CampaignAds - } - } - ${CampaignAdsFragmentDoc} -`; - -/** - * __useLoadCampaignAdsQuery__ - * - * To run a query within a React component, call `useLoadCampaignAdsQuery` and pass it any options that fit your needs. - * When your component renders, `useLoadCampaignAdsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoadCampaignAdsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useLoadCampaignAdsQuery( - baseOptions: Apollo.QueryHookOptions< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables - > & - ( - | { variables: LoadCampaignAdsQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - LoadCampaignAdsDocument, - options, - ); -} -export function useLoadCampaignAdsLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables - >(LoadCampaignAdsDocument, options); -} -export function useLoadCampaignAdsSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables - >(LoadCampaignAdsDocument, options); -} -export type LoadCampaignAdsQueryHookResult = ReturnType< - typeof useLoadCampaignAdsQuery ->; -export type LoadCampaignAdsLazyQueryHookResult = ReturnType< - typeof useLoadCampaignAdsLazyQuery ->; -export type LoadCampaignAdsSuspenseQueryHookResult = ReturnType< - typeof useLoadCampaignAdsSuspenseQuery ->; -export type LoadCampaignAdsQueryResult = Apollo.QueryResult< - LoadCampaignAdsQuery, - LoadCampaignAdsQueryVariables ->; -export function refetchLoadCampaignAdsQuery( - variables: LoadCampaignAdsQueryVariables, -) { - return { query: LoadCampaignAdsDocument, variables: variables }; -} -export const LoadCampaignSummaryDocument = gql` - query LoadCampaignSummary($id: String!) { - campaign(id: $id) { - ...CampaignSummary - } - } - ${CampaignSummaryFragmentDoc} -`; - -/** - * __useLoadCampaignSummaryQuery__ - * - * To run a query within a React component, call `useLoadCampaignSummaryQuery` and pass it any options that fit your needs. - * When your component renders, `useLoadCampaignSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoadCampaignSummaryQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useLoadCampaignSummaryQuery( - baseOptions: Apollo.QueryHookOptions< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - > & - ( - | { variables: LoadCampaignSummaryQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - >(LoadCampaignSummaryDocument, options); -} -export function useLoadCampaignSummaryLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - >(LoadCampaignSummaryDocument, options); -} -export function useLoadCampaignSummarySuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables - >(LoadCampaignSummaryDocument, options); -} -export type LoadCampaignSummaryQueryHookResult = ReturnType< - typeof useLoadCampaignSummaryQuery ->; -export type LoadCampaignSummaryLazyQueryHookResult = ReturnType< - typeof useLoadCampaignSummaryLazyQuery ->; -export type LoadCampaignSummarySuspenseQueryHookResult = ReturnType< - typeof useLoadCampaignSummarySuspenseQuery ->; -export type LoadCampaignSummaryQueryResult = Apollo.QueryResult< - LoadCampaignSummaryQuery, - LoadCampaignSummaryQueryVariables ->; -export function refetchLoadCampaignSummaryQuery( - variables: LoadCampaignSummaryQueryVariables, -) { - return { query: LoadCampaignSummaryDocument, variables: variables }; -} -export const CreateCampaignDocument = gql` - mutation CreateCampaign($input: CreateCampaignInput!) { - createCampaign(createCampaignInput: $input) { - id - paymentType - } - } -`; -export type CreateCampaignMutationFn = Apollo.MutationFunction< - CreateCampaignMutation, - CreateCampaignMutationVariables ->; - -/** - * __useCreateCampaignMutation__ - * - * To run a mutation, you first call `useCreateCampaignMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateCampaignMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createCampaignMutation, { data, loading, error }] = useCreateCampaignMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useCreateCampaignMutation( - baseOptions?: Apollo.MutationHookOptions< - CreateCampaignMutation, - CreateCampaignMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - CreateCampaignMutation, - CreateCampaignMutationVariables - >(CreateCampaignDocument, options); -} -export type CreateCampaignMutationHookResult = ReturnType< - typeof useCreateCampaignMutation ->; -export type CreateCampaignMutationResult = - Apollo.MutationResult; -export type CreateCampaignMutationOptions = Apollo.BaseMutationOptions< - CreateCampaignMutation, - CreateCampaignMutationVariables ->; -export const UpdateCampaignDocument = gql` - mutation UpdateCampaign($input: UpdateCampaignInput!) { - updateCampaign(updateCampaignInput: $input) { - id - paymentType - stripePaymentId - } - } -`; -export type UpdateCampaignMutationFn = Apollo.MutationFunction< - UpdateCampaignMutation, - UpdateCampaignMutationVariables ->; - -/** - * __useUpdateCampaignMutation__ - * - * To run a mutation, you first call `useUpdateCampaignMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateCampaignMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateCampaignMutation, { data, loading, error }] = useUpdateCampaignMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useUpdateCampaignMutation( - baseOptions?: Apollo.MutationHookOptions< - UpdateCampaignMutation, - UpdateCampaignMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - UpdateCampaignMutation, - UpdateCampaignMutationVariables - >(UpdateCampaignDocument, options); -} -export type UpdateCampaignMutationHookResult = ReturnType< - typeof useUpdateCampaignMutation ->; -export type UpdateCampaignMutationResult = - Apollo.MutationResult; -export type UpdateCampaignMutationOptions = Apollo.BaseMutationOptions< - UpdateCampaignMutation, - UpdateCampaignMutationVariables ->; diff --git a/src/graphql/common.generated.tsx b/src/graphql/common.generated.tsx deleted file mode 100644 index 206a6e28..00000000 --- a/src/graphql/common.generated.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type GeocodeFragment = { code: string; name: string }; - -export type SegmentFragment = { code: string; name: string }; - -export type ActiveGeocodesQueryVariables = Types.Exact<{ - [key: string]: never; -}>; - -export type ActiveGeocodesQuery = { - geocodes: Array<{ code: string; name: string }>; -}; - -export type SegmentsQueryVariables = Types.Exact<{ [key: string]: never }>; - -export type SegmentsQuery = { - segments: { data: Array<{ code: string; name: string }> }; -}; - -export const GeocodeFragmentDoc = gql` - fragment Geocode on Geocode { - code - name - } -`; -export const SegmentFragmentDoc = gql` - fragment Segment on SegmentsEntry { - code - name - } -`; -export const ActiveGeocodesDocument = gql` - query ActiveGeocodes { - geocodes { - ...Geocode - } - } - ${GeocodeFragmentDoc} -`; - -/** - * __useActiveGeocodesQuery__ - * - * To run a query within a React component, call `useActiveGeocodesQuery` and pass it any options that fit your needs. - * When your component renders, `useActiveGeocodesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useActiveGeocodesQuery({ - * variables: { - * }, - * }); - */ -export function useActiveGeocodesQuery( - baseOptions?: Apollo.QueryHookOptions< - ActiveGeocodesQuery, - ActiveGeocodesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - ActiveGeocodesDocument, - options, - ); -} -export function useActiveGeocodesLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - ActiveGeocodesQuery, - ActiveGeocodesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - ActiveGeocodesDocument, - options, - ); -} -export function useActiveGeocodesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - ActiveGeocodesQuery, - ActiveGeocodesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - ActiveGeocodesQuery, - ActiveGeocodesQueryVariables - >(ActiveGeocodesDocument, options); -} -export type ActiveGeocodesQueryHookResult = ReturnType< - typeof useActiveGeocodesQuery ->; -export type ActiveGeocodesLazyQueryHookResult = ReturnType< - typeof useActiveGeocodesLazyQuery ->; -export type ActiveGeocodesSuspenseQueryHookResult = ReturnType< - typeof useActiveGeocodesSuspenseQuery ->; -export type ActiveGeocodesQueryResult = Apollo.QueryResult< - ActiveGeocodesQuery, - ActiveGeocodesQueryVariables ->; -export function refetchActiveGeocodesQuery( - variables?: ActiveGeocodesQueryVariables, -) { - return { query: ActiveGeocodesDocument, variables: variables }; -} -export const SegmentsDocument = gql` - query Segments { - segments { - data { - ...Segment - } - } - } - ${SegmentFragmentDoc} -`; - -/** - * __useSegmentsQuery__ - * - * To run a query within a React component, call `useSegmentsQuery` and pass it any options that fit your needs. - * When your component renders, `useSegmentsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useSegmentsQuery({ - * variables: { - * }, - * }); - */ -export function useSegmentsQuery( - baseOptions?: Apollo.QueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - SegmentsDocument, - options, - ); -} -export function useSegmentsLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - SegmentsQuery, - SegmentsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - SegmentsDocument, - options, - ); -} -export function useSegmentsSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - SegmentsQuery, - SegmentsQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery( - SegmentsDocument, - options, - ); -} -export type SegmentsQueryHookResult = ReturnType; -export type SegmentsLazyQueryHookResult = ReturnType< - typeof useSegmentsLazyQuery ->; -export type SegmentsSuspenseQueryHookResult = ReturnType< - typeof useSegmentsSuspenseQuery ->; -export type SegmentsQueryResult = Apollo.QueryResult< - SegmentsQuery, - SegmentsQueryVariables ->; -export function refetchSegmentsQuery(variables?: SegmentsQueryVariables) { - return { query: SegmentsDocument, variables: variables }; -} diff --git a/src/graphql/creative.generated.tsx b/src/graphql/creative.generated.tsx deleted file mode 100644 index cfbdc4ad..00000000 --- a/src/graphql/creative.generated.tsx +++ /dev/null @@ -1,678 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type CreativeFragment = { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; -}; - -export type AdvertiserCreativesQueryVariables = Types.Exact<{ - advertiserId: Types.Scalars["String"]["input"]; -}>; - -export type AdvertiserCreativesQuery = { - advertiser?: { - id: string; - creatives: Array<{ - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }>; - } | null; -}; - -export type CreateCreativeMutationVariables = Types.Exact<{ - input: Types.CreativeInput; -}>; - -export type CreateCreativeMutation = { - createCreative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; -}; - -export type UpdateCreativeMutationVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; - input: Types.CreativeInput; -}>; - -export type UpdateCreativeMutation = { - updateCreative: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - }; -}; - -export type LoadCreativeQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type LoadCreativeQuery = { - creative?: { - id: string; - createdAt: string; - modifiedAt: string; - name: string; - state: string; - type: { code: string }; - payloadNotification?: { - body: string; - title: string; - targetUrl: string; - } | null; - payloadNewTabPage?: { - logo?: { - imageUrl: string; - alt: string; - companyName: string; - destinationUrl: string; - } | null; - wallpapers?: Array<{ - imageUrl: string; - focalPoint: { x: number; y: number }; - }> | null; - } | null; - payloadInlineContent?: { - title: string; - ctaText: string; - imageUrl: string; - targetUrl: string; - dimensions: string; - description: string; - } | null; - payloadSearch?: { body: string; title: string; targetUrl: string } | null; - payloadSearchHomepage?: { - body: string; - imageUrl: string; - imageDarkModeUrl?: string | null; - targetUrl: string; - title: string; - ctaText: string; - } | null; - } | null; -}; - -export type CampaignsForCreativeQueryVariables = Types.Exact<{ - creativeId: Types.Scalars["String"]["input"]; - advertiserId: Types.Scalars["String"]["input"]; -}>; - -export type CampaignsForCreativeQuery = { - creativeCampaigns: Array<{ - id: string; - name: string; - state: string; - format: Types.CampaignFormat; - }>; -}; - -export const CreativeFragmentDoc = gql` - fragment Creative on Creative { - id - createdAt - modifiedAt - name - state - type { - code - } - payloadNotification { - body - title - targetUrl - } - payloadNewTabPage { - logo { - imageUrl - alt - companyName - destinationUrl - } - wallpapers { - imageUrl - focalPoint { - x - y - } - } - } - payloadInlineContent { - title - ctaText - imageUrl - targetUrl - dimensions - description - } - payloadNotification { - body - title - targetUrl - } - payloadSearch { - body - title - targetUrl - } - payloadSearchHomepage { - body - imageUrl - imageDarkModeUrl - targetUrl - title - ctaText - } - } -`; -export const AdvertiserCreativesDocument = gql` - query advertiserCreatives($advertiserId: String!) { - advertiser(id: $advertiserId) { - id - creatives { - ...Creative - } - } - } - ${CreativeFragmentDoc} -`; - -/** - * __useAdvertiserCreativesQuery__ - * - * To run a query within a React component, call `useAdvertiserCreativesQuery` and pass it any options that fit your needs. - * When your component renders, `useAdvertiserCreativesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAdvertiserCreativesQuery({ - * variables: { - * advertiserId: // value for 'advertiserId' - * }, - * }); - */ -export function useAdvertiserCreativesQuery( - baseOptions: Apollo.QueryHookOptions< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - > & - ( - | { variables: AdvertiserCreativesQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - >(AdvertiserCreativesDocument, options); -} -export function useAdvertiserCreativesLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - >(AdvertiserCreativesDocument, options); -} -export function useAdvertiserCreativesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables - >(AdvertiserCreativesDocument, options); -} -export type AdvertiserCreativesQueryHookResult = ReturnType< - typeof useAdvertiserCreativesQuery ->; -export type AdvertiserCreativesLazyQueryHookResult = ReturnType< - typeof useAdvertiserCreativesLazyQuery ->; -export type AdvertiserCreativesSuspenseQueryHookResult = ReturnType< - typeof useAdvertiserCreativesSuspenseQuery ->; -export type AdvertiserCreativesQueryResult = Apollo.QueryResult< - AdvertiserCreativesQuery, - AdvertiserCreativesQueryVariables ->; -export function refetchAdvertiserCreativesQuery( - variables: AdvertiserCreativesQueryVariables, -) { - return { query: AdvertiserCreativesDocument, variables: variables }; -} -export const CreateCreativeDocument = gql` - mutation createCreative($input: CreativeInput!) { - createCreative(creative: $input) { - ...Creative - } - } - ${CreativeFragmentDoc} -`; -export type CreateCreativeMutationFn = Apollo.MutationFunction< - CreateCreativeMutation, - CreateCreativeMutationVariables ->; - -/** - * __useCreateCreativeMutation__ - * - * To run a mutation, you first call `useCreateCreativeMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateCreativeMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createCreativeMutation, { data, loading, error }] = useCreateCreativeMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useCreateCreativeMutation( - baseOptions?: Apollo.MutationHookOptions< - CreateCreativeMutation, - CreateCreativeMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - CreateCreativeMutation, - CreateCreativeMutationVariables - >(CreateCreativeDocument, options); -} -export type CreateCreativeMutationHookResult = ReturnType< - typeof useCreateCreativeMutation ->; -export type CreateCreativeMutationResult = - Apollo.MutationResult; -export type CreateCreativeMutationOptions = Apollo.BaseMutationOptions< - CreateCreativeMutation, - CreateCreativeMutationVariables ->; -export const UpdateCreativeDocument = gql` - mutation updateCreative($id: String!, $input: CreativeInput!) { - updateCreative(id: $id, creative: $input) { - ...Creative - } - } - ${CreativeFragmentDoc} -`; -export type UpdateCreativeMutationFn = Apollo.MutationFunction< - UpdateCreativeMutation, - UpdateCreativeMutationVariables ->; - -/** - * __useUpdateCreativeMutation__ - * - * To run a mutation, you first call `useUpdateCreativeMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateCreativeMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateCreativeMutation, { data, loading, error }] = useUpdateCreativeMutation({ - * variables: { - * id: // value for 'id' - * input: // value for 'input' - * }, - * }); - */ -export function useUpdateCreativeMutation( - baseOptions?: Apollo.MutationHookOptions< - UpdateCreativeMutation, - UpdateCreativeMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation< - UpdateCreativeMutation, - UpdateCreativeMutationVariables - >(UpdateCreativeDocument, options); -} -export type UpdateCreativeMutationHookResult = ReturnType< - typeof useUpdateCreativeMutation ->; -export type UpdateCreativeMutationResult = - Apollo.MutationResult; -export type UpdateCreativeMutationOptions = Apollo.BaseMutationOptions< - UpdateCreativeMutation, - UpdateCreativeMutationVariables ->; -export const LoadCreativeDocument = gql` - query loadCreative($id: String!) { - creative(id: $id) { - ...Creative - } - } - ${CreativeFragmentDoc} -`; - -/** - * __useLoadCreativeQuery__ - * - * To run a query within a React component, call `useLoadCreativeQuery` and pass it any options that fit your needs. - * When your component renders, `useLoadCreativeQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoadCreativeQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useLoadCreativeQuery( - baseOptions: Apollo.QueryHookOptions< - LoadCreativeQuery, - LoadCreativeQueryVariables - > & - ( - | { variables: LoadCreativeQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - LoadCreativeDocument, - options, - ); -} -export function useLoadCreativeLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - LoadCreativeQuery, - LoadCreativeQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - LoadCreativeDocument, - options, - ); -} -export function useLoadCreativeSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - LoadCreativeQuery, - LoadCreativeQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery( - LoadCreativeDocument, - options, - ); -} -export type LoadCreativeQueryHookResult = ReturnType< - typeof useLoadCreativeQuery ->; -export type LoadCreativeLazyQueryHookResult = ReturnType< - typeof useLoadCreativeLazyQuery ->; -export type LoadCreativeSuspenseQueryHookResult = ReturnType< - typeof useLoadCreativeSuspenseQuery ->; -export type LoadCreativeQueryResult = Apollo.QueryResult< - LoadCreativeQuery, - LoadCreativeQueryVariables ->; -export function refetchLoadCreativeQuery( - variables: LoadCreativeQueryVariables, -) { - return { query: LoadCreativeDocument, variables: variables }; -} -export const CampaignsForCreativeDocument = gql` - query campaignsForCreative($creativeId: String!, $advertiserId: String!) { - creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) { - id - name - state - format - } - } -`; - -/** - * __useCampaignsForCreativeQuery__ - * - * To run a query within a React component, call `useCampaignsForCreativeQuery` and pass it any options that fit your needs. - * When your component renders, `useCampaignsForCreativeQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useCampaignsForCreativeQuery({ - * variables: { - * creativeId: // value for 'creativeId' - * advertiserId: // value for 'advertiserId' - * }, - * }); - */ -export function useCampaignsForCreativeQuery( - baseOptions: Apollo.QueryHookOptions< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - > & - ( - | { variables: CampaignsForCreativeQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - >(CampaignsForCreativeDocument, options); -} -export function useCampaignsForCreativeLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - >(CampaignsForCreativeDocument, options); -} -export function useCampaignsForCreativeSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables - >(CampaignsForCreativeDocument, options); -} -export type CampaignsForCreativeQueryHookResult = ReturnType< - typeof useCampaignsForCreativeQuery ->; -export type CampaignsForCreativeLazyQueryHookResult = ReturnType< - typeof useCampaignsForCreativeLazyQuery ->; -export type CampaignsForCreativeSuspenseQueryHookResult = ReturnType< - typeof useCampaignsForCreativeSuspenseQuery ->; -export type CampaignsForCreativeQueryResult = Apollo.QueryResult< - CampaignsForCreativeQuery, - CampaignsForCreativeQueryVariables ->; -export function refetchCampaignsForCreativeQuery( - variables: CampaignsForCreativeQueryVariables, -) { - return { query: CampaignsForCreativeDocument, variables: variables }; -} diff --git a/src/graphql/types.ts b/src/graphql/types.ts deleted file mode 100644 index 25807c58..00000000 --- a/src/graphql/types.ts +++ /dev/null @@ -1,600 +0,0 @@ -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { - [K in keyof T]: T[K]; -}; -export type MakeOptional = Omit & { - [SubKey in K]?: Maybe; -}; -export type MakeMaybe = Omit & { - [SubKey in K]: Maybe; -}; -export type MakeEmpty< - T extends { [key: string]: unknown }, - K extends keyof T, -> = { [_ in K]?: never }; -export type Incremental = - | T - | { - [P in keyof T]?: P extends " $fragmentName" | "__typename" ? T[P] : never; - }; -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: { input: string; output: string }; - String: { input: string; output: string }; - Boolean: { input: boolean; output: boolean }; - Int: { input: number; output: number }; - Float: { input: number; output: number }; - /** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */ - DateTime: { input: string; output: string }; - /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ - JSONObject: { input: object; output: object }; - /** The `Numeric` datatype represents a fixed-precision number, which does not suffer from the rounding errors of a javascript floating point number. It's always returned as a string, but for input types either a string or number can be used, though strings are preferred to avoid risk of inaccuracy. */ - Numeric: { input: string | number; output: string }; -}; - -export type AdvertiserCampaignFilter = { - /** exclude all campaigns whose time range is completely before this time */ - from?: InputMaybe; - /** include ads */ - includeAds?: InputMaybe; - /** include creative sets */ - includeCreativeSets?: InputMaybe; -}; - -export type AdvertiserPriceInput = { - billingModelPrice: Scalars["Numeric"]["input"]; - billingType: BillingType; - format: CampaignFormat; -}; - -export enum AdvertiserSource { - Managed = "MANAGED", - SelfServe = "SELF_SERVE", -} - -export type ApproveCampaignInput = { - campaignId: Scalars["String"]["input"]; -}; - -export enum BillingType { - Cpc = "CPC", - Cpm = "CPM", - Cpsv = "CPSV", -} - -export type CampaignFilter = { - /** only include campaigns for this format */ - format?: InputMaybe; - /** exclude all campaigns whose time range is completely before this time */ - from?: InputMaybe; - /** only include campaigns with this source */ - source?: InputMaybe; - /** only include campaigns with this state */ - state?: InputMaybe; - /** exclude all campaigns whose time range is completely after this time */ - to?: InputMaybe; -}; - -export enum CampaignFormat { - NewsDisplayAd = "NEWS_DISPLAY_AD", - NtpSi = "NTP_SI", - PushNotification = "PUSH_NOTIFICATION", - Search = "SEARCH", - SearchHomepage = "SEARCH_HOMEPAGE", -} - -export enum CampaignPacingStrategies { - ModelV1 = "MODEL_V1", - Original = "ORIGINAL", -} - -export type CampaignPerformanceFilter = { - /** include metrics starting from this time (inclusive) */ - from?: InputMaybe; - /** include metrics before this time (inclusive) */ - to?: InputMaybe; -}; - -export enum CampaignRejection { - InappropriateContent = "INAPPROPRIATE_CONTENT", - InvalidLandingPage = "INVALID_LANDING_PAGE", - Other = "OTHER", - ProhibitedCategory = "PROHIBITED_CATEGORY", -} - -export enum CampaignSource { - Direct = "DIRECT", - Managed = "MANAGED", - Network = "NETWORK", - SelfServe = "SELF_SERVE", -} - -export enum CampaignType { - Barter = "BARTER", - Cause = "CAUSE", - Fixed = "FIXED", - Free = "FREE", - House = "HOUSE", - MakeGood = "MAKE_GOOD", - Paid = "PAID", - Preemptive = "PREEMPTIVE", - Trial = "TRIAL", -} - -export type ChangeFilter = { - /** exclude all changes whose time range is completely before this time */ - createdAfter?: InputMaybe; - /** include changes made by system user */ - includeSystemUser?: InputMaybe; - /** limit the amount of results returned */ - limit?: InputMaybe; - /** only include changes for this reference id */ - referenceId?: InputMaybe; - /** only include changes for this set of reference ids */ - referenceIds?: InputMaybe>; -}; - -export enum ConfirmationType { - Bookmark = "BOOKMARK", - Click = "CLICK", - ClientView = "CLIENT_VIEW", - Conversion = "CONVERSION", - Dismiss = "DISMISS", - Downvote = "DOWNVOTE", - Flag = "FLAG", - Land30 = "LAND30", - Land60 = "LAND60", - Landclick = "LANDCLICK", - Landed = "LANDED", - Upvote = "UPVOTE", - View = "VIEW", -} - -export type CreateAdInput = { - creative?: InputMaybe; - creativeId?: InputMaybe; - creativeSetId?: InputMaybe; - id?: InputMaybe; - webhooks?: InputMaybe>; -}; - -export type CreateAdSetInput = { - ads?: InputMaybe>; - bannedKeywords?: InputMaybe>; - billingType: Scalars["String"]["input"]; - brandedDesktopPrice?: InputMaybe; - brandedMobilePrice?: InputMaybe; - campaignId?: InputMaybe; - conversions?: InputMaybe>; - externalId?: InputMaybe; - keywordSimilarity?: InputMaybe; - keywords?: InputMaybe>; - name?: InputMaybe; - negativeKeywords?: InputMaybe>; - negativeTriggerUrls?: InputMaybe>; - nonBrandedDesktopPrice?: InputMaybe; - nonBrandedMobilePrice?: InputMaybe; - oses?: InputMaybe>; - perDay: Scalars["Float"]["input"]; - /** The price in the owning campaign's currency for each single confirmation of the priceType specified. Note therefore that the caller is responsible for dividing cost-per-mille by 1000. */ - price: Scalars["Numeric"]["input"]; - segments: Array; - splitTestGroup?: InputMaybe; - state?: InputMaybe; - targetingTerms?: InputMaybe>; - totalMax: Scalars["Float"]["input"]; - triggerUrls?: InputMaybe>; -}; - -export type CreateAddressInput = { - city: Scalars["String"]["input"]; - country: Scalars["String"]["input"]; - state: Scalars["String"]["input"]; - street1: Scalars["String"]["input"]; - street2?: InputMaybe; - zipcode: Scalars["String"]["input"]; -}; - -export type CreateAdvertiserImageInput = { - advertiserId: Scalars["String"]["input"]; - format: CampaignFormat; - imageUrl: Scalars["String"]["input"]; - name: Scalars["String"]["input"]; -}; - -export type CreateAdvertiserInput = { - accountManagerId?: InputMaybe; - additionalBillingEmails?: InputMaybe>; - billingAddress?: InputMaybe; - billingEmail?: InputMaybe; - billingModelPrices?: InputMaybe>; - description?: InputMaybe; - marketingChannel?: InputMaybe; - name: Scalars["String"]["input"]; - phone?: InputMaybe; - referrer?: InputMaybe; - selfServiceManageCampaign?: InputMaybe; - state?: InputMaybe; - url?: InputMaybe; - userId?: InputMaybe; -}; - -export type CreateCampaignInput = { - accountManagerId?: InputMaybe; - adSets?: InputMaybe>; - advertiserId: Scalars["String"]["input"]; - bannedKeywords?: InputMaybe>; - brandedKeyword?: InputMaybe; - brandedKeywords?: InputMaybe>; - budget: Scalars["Float"]["input"]; - currency?: Scalars["String"]["input"]; - dailyBudget?: InputMaybe; - dailyCap: Scalars["Float"]["input"]; - dayPartings?: InputMaybe>; - dayProportion?: InputMaybe; - endAt: Scalars["DateTime"]["input"]; - externalId?: InputMaybe; - format: CampaignFormat; - geoTargets: Array; - name: Scalars["String"]["input"]; - pacingStrategy?: InputMaybe; - paymentType?: InputMaybe; - priority?: InputMaybe; - source: Scalars["String"]["input"]; - startAt: Scalars["DateTime"]["input"]; - state: Scalars["String"]["input"]; - type?: CampaignType; - userId?: InputMaybe; -}; - -export type CreateCommentInput = { - campaignId: Scalars["String"]["input"]; - note: Scalars["String"]["input"]; -}; - -export type CreateConversionInput = { - extractExternalId?: InputMaybe; - observationWindow: Scalars["Float"]["input"]; - trailingAsteriskNotRequired?: InputMaybe; - type: Scalars["String"]["input"]; - urlPattern: Scalars["String"]["input"]; -}; - -export type CreateInPageCreativeInput = { - advertiserId: Scalars["String"]["input"]; - endAt?: InputMaybe; - name: Scalars["String"]["input"]; - payload: InPagePayloadInput; - startAt?: InputMaybe; - state: Scalars["String"]["input"]; - type: CreateTypeInput; - userId?: InputMaybe; -}; - -export type CreateNewTabPageCreativeInput = { - advertiserId: Scalars["String"]["input"]; - endAt?: InputMaybe; - name: Scalars["String"]["input"]; - payload: NewTabPagePayloadInput; - startAt?: InputMaybe; - state: Scalars["String"]["input"]; - type: CreateTypeInput; -}; - -export type CreateNotificationCreativeInput = { - advertiserId: Scalars["String"]["input"]; - endAt?: InputMaybe; - name: Scalars["String"]["input"]; - payload: NotificationPayloadInput; - startAt?: InputMaybe; - state: Scalars["String"]["input"]; - type: CreateTypeInput; - userId?: InputMaybe; -}; - -export type CreateOsInput = { - code: Scalars["String"]["input"]; - name: Scalars["String"]["input"]; -}; - -export type CreateSegmentInput = { - code: Scalars["String"]["input"]; - name: Scalars["String"]["input"]; -}; - -export type CreateTypeInput = { - code: Scalars["String"]["input"]; - name?: InputMaybe; -}; - -export type CreateUserInput = { - email: Scalars["String"]["input"]; - emailVerified: Scalars["Boolean"]["input"]; - fullName: Scalars["String"]["input"]; - password?: InputMaybe; - role: Scalars["String"]["input"]; -}; - -export type CreativeFilter = { - /** only include creatives with this state */ - state?: InputMaybe; -}; - -export type CreativeInput = { - advertiserId: Scalars["String"]["input"]; - endAt?: InputMaybe; - name: Scalars["String"]["input"]; - payloadInPage?: InputMaybe; - payloadInlineContent?: InputMaybe; - payloadNewTabPage?: InputMaybe; - payloadNotification?: InputMaybe; - payloadPromotedContent?: InputMaybe; - payloadSearch?: InputMaybe; - payloadSearchHomepage?: InputMaybe; - startAt?: InputMaybe; - state: Scalars["String"]["input"]; - type: CreateTypeInput; -}; - -export type CreativeTypeInput = { - code: Scalars["String"]["input"]; - name: Scalars["String"]["input"]; -}; - -export type DayPartingInput = { - dow: Scalars["String"]["input"]; - endMinute: Scalars["Float"]["input"]; - startMinute: Scalars["Float"]["input"]; -}; - -export type DeleteAdInput = { - id: Scalars["String"]["input"]; -}; - -export type FocalPointInput = { - x: Scalars["Float"]["input"]; - y: Scalars["Float"]["input"]; -}; - -export type GeocodeInput = { - code: Scalars["String"]["input"]; - name?: InputMaybe; -}; - -export type InPagePayloadInput = { - creativeUrl: Scalars["String"]["input"]; - /** size of the creative, e.g. 1024x768 */ - size: Scalars["String"]["input"]; - targetUrl: Scalars["String"]["input"]; -}; - -export type InlineContentPayloadInput = { - ctaText: Scalars["String"]["input"]; - description: Scalars["String"]["input"]; - dimensions: Scalars["String"]["input"]; - imageUrl: Scalars["String"]["input"]; - targetUrl: Scalars["String"]["input"]; - title: Scalars["String"]["input"]; -}; - -export type LogoInput = { - alt: Scalars["String"]["input"]; - companyName: Scalars["String"]["input"]; - destinationUrl: Scalars["String"]["input"]; - imageUrl: Scalars["String"]["input"]; -}; - -export type NewTabPagePayloadInput = { - logo?: InputMaybe; - wallpapers?: InputMaybe>; -}; - -export type NotificationPayloadInput = { - body: Scalars["String"]["input"]; - targetUrl: Scalars["String"]["input"]; - title: Scalars["String"]["input"]; -}; - -export enum PaymentType { - ManualBat = "MANUAL_BAT", - Netsuite = "NETSUITE", - Radom = "RADOM", - Stripe = "STRIPE", -} - -export type PerformanceFilter = { - /** include metrics for all these advertisers' campaigns */ - advertiserIds?: InputMaybe>; - /** include metrics for all these campaigns */ - campaignIds?: InputMaybe>; - /** include metrics starting from this time (inclusive) */ - from?: InputMaybe; - /** include metrics before this time (inclusive) */ - to?: InputMaybe; -}; - -export type PromotedContentPayloadInput = { - category: Scalars["String"]["input"]; - contentType: Scalars["String"]["input"]; - description: Scalars["String"]["input"]; - domain?: InputMaybe; - feed: Scalars["String"]["input"]; - ogImages: Scalars["Boolean"]["input"]; - title: Scalars["String"]["input"]; -}; - -export type RejectCampaignInput = { - campaignId: Scalars["String"]["input"]; - message?: InputMaybe; - option: CampaignRejection; -}; - -export type SearchHomepagePayloadInput = { - body: Scalars["String"]["input"]; - ctaText?: Scalars["String"]["input"]; - imageDarkModeUrl?: InputMaybe; - imageUrl: Scalars["String"]["input"]; - targetUrl: Scalars["String"]["input"]; - title: Scalars["String"]["input"]; -}; - -export type SearchPayloadInput = { - body: Scalars["String"]["input"]; - /** ad-hoc parameters passed to search */ - meta?: InputMaybe; - /** optionally, how this creative should be rendered with the SERP */ - style?: InputMaybe; - targetUrl: Scalars["String"]["input"]; - title: Scalars["String"]["input"]; -}; - -export type UpdateAdInput = { - creativeId?: InputMaybe; - creativeSetId?: InputMaybe; - id?: InputMaybe; - state?: InputMaybe; - webhooks?: InputMaybe>; -}; - -export type UpdateAdSetInput = { - ads?: InputMaybe>; - bannedKeywords?: InputMaybe>; - billingType?: InputMaybe; - brandedDesktopPrice?: InputMaybe; - brandedMobilePrice?: InputMaybe; - campaignId?: InputMaybe; - conversions?: InputMaybe>; - externalId?: InputMaybe; - id?: InputMaybe; - keywordSimilarity?: InputMaybe; - keywords?: InputMaybe>; - name?: InputMaybe; - negativeKeywords?: InputMaybe>; - negativeTriggerUrls?: InputMaybe>; - nonBrandedDesktopPrice?: InputMaybe; - nonBrandedMobilePrice?: InputMaybe; - optimized?: InputMaybe; - oses?: InputMaybe>; - perDay?: InputMaybe; - /** The price in the owning campaign's currency for each single confirmation of the priceType specified. Note therefore that the caller is responsible for dividing cost-per-mille by 1000. */ - price?: InputMaybe; - segments?: InputMaybe>; - splitTestGroup?: InputMaybe; - state?: InputMaybe; - targetingTerms?: InputMaybe>; - totalMax?: InputMaybe; - triggerUrls?: InputMaybe>; -}; - -export type UpdateAddressInput = { - city?: InputMaybe; - country?: InputMaybe; - /** Temporarily nullable so the frontend does not break */ - id?: InputMaybe; - state?: InputMaybe; - street1?: InputMaybe; - street2?: InputMaybe; - zipcode?: InputMaybe; -}; - -export type UpdateAdvertiserInput = { - accountManagerId?: InputMaybe; - additionalBillingEmails?: InputMaybe>; - /** Agreed to Terms And Conditions - Advertiser Facing Dashboard */ - agreed?: InputMaybe; - billingAddress?: InputMaybe; - billingEmail?: InputMaybe; - billingModelPrices?: InputMaybe>; - description?: InputMaybe; - id: Scalars["String"]["input"]; - marketingChannel?: InputMaybe; - name?: InputMaybe; - phone?: InputMaybe; - publicKey?: InputMaybe; - referrer?: InputMaybe; - selfServiceManageCampaign?: InputMaybe; - state?: InputMaybe; - url?: InputMaybe; - userId?: InputMaybe; - users?: InputMaybe>; -}; - -export type UpdateCampaignInput = { - accountManagerId?: InputMaybe; - adSets?: InputMaybe>; - advertiserId?: InputMaybe; - bannedKeywords?: InputMaybe>; - brandedKeyword?: InputMaybe; - brandedKeywords?: InputMaybe>; - budget?: InputMaybe; - currency?: InputMaybe; - dailyBudget?: InputMaybe; - dailyCap?: InputMaybe; - dayPartings?: InputMaybe>; - dayProportion?: InputMaybe; - endAt?: InputMaybe; - externalId?: InputMaybe; - geoTargets?: InputMaybe>; - id: Scalars["String"]["input"]; - name?: InputMaybe; - pacingOverride?: InputMaybe; - pacingStrategy?: InputMaybe; - passThroughRate?: InputMaybe; - paymentType?: InputMaybe; - priority?: InputMaybe; - startAt?: InputMaybe; - state?: InputMaybe; - stripePaymentId?: InputMaybe; - type?: InputMaybe; -}; - -export type UpdateConversionsInput = { - extractExternalId?: InputMaybe; - id?: InputMaybe; - observationWindow?: InputMaybe; - trailingAsteriskNotRequired?: InputMaybe; - type?: InputMaybe; - urlPattern?: InputMaybe; -}; - -export type UpdateNotificationCreativeInput = { - advertiserId?: InputMaybe; - creativeId?: InputMaybe; - endAt?: InputMaybe; - name?: InputMaybe; - payload?: InputMaybe; - startAt?: InputMaybe; - state?: InputMaybe; - type?: InputMaybe; - userId?: InputMaybe; -}; - -export type UpdateOSesInput = { - code?: InputMaybe; - name?: InputMaybe; -}; - -export type UpdateSegmentInput = { - code?: InputMaybe; - name?: InputMaybe; -}; - -export type UpdateUserInput = { - email?: InputMaybe; - emailVerified?: InputMaybe; - fullName?: InputMaybe; - id?: InputMaybe; - password?: InputMaybe; - role?: InputMaybe; -}; - -export type WallpaperInput = { - focalPoint: FocalPointInput; - imageUrl: Scalars["String"]["input"]; -}; - -export type CreateWebhookInput = { - type: Scalars["String"]["input"]; - url: Scalars["String"]["input"]; -}; diff --git a/src/graphql/url.generated.tsx b/src/graphql/url.generated.tsx deleted file mode 100644 index e4565bdf..00000000 --- a/src/graphql/url.generated.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type ValidateTargetUrlQueryVariables = Types.Exact<{ - url: Types.Scalars["String"]["input"]; -}>; - -export type ValidateTargetUrlQuery = { - validateTargetUrl: { - isValid: boolean; - redirects: Array<{ - url: string; - violations: Array<{ summary: string; detail: string }>; - }>; - }; -}; - -export const ValidateTargetUrlDocument = gql` - query validateTargetUrl($url: String!) { - validateTargetUrl(targetUrl: $url) { - isValid - redirects { - url - violations { - summary - detail - } - } - } - } -`; - -/** - * __useValidateTargetUrlQuery__ - * - * To run a query within a React component, call `useValidateTargetUrlQuery` and pass it any options that fit your needs. - * When your component renders, `useValidateTargetUrlQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useValidateTargetUrlQuery({ - * variables: { - * url: // value for 'url' - * }, - * }); - */ -export function useValidateTargetUrlQuery( - baseOptions: Apollo.QueryHookOptions< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - > & - ( - | { variables: ValidateTargetUrlQueryVariables; skip?: boolean } - | { skip: boolean } - ), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - >(ValidateTargetUrlDocument, options); -} -export function useValidateTargetUrlLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - >(ValidateTargetUrlDocument, options); -} -export function useValidateTargetUrlSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables - >(ValidateTargetUrlDocument, options); -} -export type ValidateTargetUrlQueryHookResult = ReturnType< - typeof useValidateTargetUrlQuery ->; -export type ValidateTargetUrlLazyQueryHookResult = ReturnType< - typeof useValidateTargetUrlLazyQuery ->; -export type ValidateTargetUrlSuspenseQueryHookResult = ReturnType< - typeof useValidateTargetUrlSuspenseQuery ->; -export type ValidateTargetUrlQueryResult = Apollo.QueryResult< - ValidateTargetUrlQuery, - ValidateTargetUrlQueryVariables ->; -export function refetchValidateTargetUrlQuery( - variables: ValidateTargetUrlQueryVariables, -) { - return { query: ValidateTargetUrlDocument, variables: variables }; -} diff --git a/src/graphql/user.generated.tsx b/src/graphql/user.generated.tsx deleted file mode 100644 index 3aaeabe5..00000000 --- a/src/graphql/user.generated.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import type * as Types from "./types"; - -import { gql } from "@apollo/client"; -import * as Apollo from "@apollo/client"; -const defaultOptions = {} as const; -export type UserFragment = { - email: string; - fullName: string; - id: string; - role: string; -}; - -export type LoadUserQueryVariables = Types.Exact<{ - id: Types.Scalars["String"]["input"]; -}>; - -export type LoadUserQuery = { - user: { email: string; fullName: string; id: string; role: string }; -}; - -export type UpdateUserMutationVariables = Types.Exact<{ - input: Types.UpdateUserInput; -}>; - -export type UpdateUserMutation = { - updateUser: { email: string; fullName: string; id: string; role: string }; -}; - -export const UserFragmentDoc = gql` - fragment User on User { - email - fullName - id - role - } -`; -export const LoadUserDocument = gql` - query LoadUser($id: String!) { - user(id: $id) { - ...User - } - } - ${UserFragmentDoc} -`; - -/** - * __useLoadUserQuery__ - * - * To run a query within a React component, call `useLoadUserQuery` and pass it any options that fit your needs. - * When your component renders, `useLoadUserQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoadUserQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useLoadUserQuery( - baseOptions: Apollo.QueryHookOptions & - ({ variables: LoadUserQueryVariables; skip?: boolean } | { skip: boolean }), -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery( - LoadUserDocument, - options, - ); -} -export function useLoadUserLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions< - LoadUserQuery, - LoadUserQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery( - LoadUserDocument, - options, - ); -} -export function useLoadUserSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions< - LoadUserQuery, - LoadUserQueryVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery( - LoadUserDocument, - options, - ); -} -export type LoadUserQueryHookResult = ReturnType; -export type LoadUserLazyQueryHookResult = ReturnType< - typeof useLoadUserLazyQuery ->; -export type LoadUserSuspenseQueryHookResult = ReturnType< - typeof useLoadUserSuspenseQuery ->; -export type LoadUserQueryResult = Apollo.QueryResult< - LoadUserQuery, - LoadUserQueryVariables ->; -export function refetchLoadUserQuery(variables: LoadUserQueryVariables) { - return { query: LoadUserDocument, variables: variables }; -} -export const UpdateUserDocument = gql` - mutation UpdateUser($input: UpdateUserInput!) { - updateUser(updateUserInput: $input) { - ...User - } - } - ${UserFragmentDoc} -`; -export type UpdateUserMutationFn = Apollo.MutationFunction< - UpdateUserMutation, - UpdateUserMutationVariables ->; - -/** - * __useUpdateUserMutation__ - * - * To run a mutation, you first call `useUpdateUserMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateUserMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateUserMutation, { data, loading, error }] = useUpdateUserMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useUpdateUserMutation( - baseOptions?: Apollo.MutationHookOptions< - UpdateUserMutation, - UpdateUserMutationVariables - >, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation( - UpdateUserDocument, - options, - ); -} -export type UpdateUserMutationHookResult = ReturnType< - typeof useUpdateUserMutation ->; -export type UpdateUserMutationResult = - Apollo.MutationResult; -export type UpdateUserMutationOptions = Apollo.BaseMutationOptions< - UpdateUserMutation, - UpdateUserMutationVariables ->; diff --git a/src/user/adSet/AdSetList.tsx b/src/user/adSet/AdSetList.tsx index 9c89fc82..28e5c0b0 100644 --- a/src/user/adSet/AdSetList.tsx +++ b/src/user/adSet/AdSetList.tsx @@ -2,10 +2,8 @@ import { Chip } from "@mui/material"; import { Status } from "@/components/Campaigns/Status"; import _ from "lodash"; import { adSetOnOffState } from "@/components/Datagrid/renderers"; -import { CampaignAdsFragment } from "@/graphql/campaign.generated"; -import { CampaignSource } from "@/graphql/types"; +import { CampaignAdsFragment, CampaignSource } from "@/graphql-client/graphql"; import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; -import { AdSetWithDeletedAdsFragment } from "@/graphql/ad-set.generated"; import { AdDetailTable } from "@/user/views/user/AdDetailTable"; import { displayFromCampaignState } from "@/util/displayState"; import { uiLabelsForBillingType } from "@/util/billingType"; @@ -13,6 +11,7 @@ import { GridColDef } from "@mui/x-data-grid"; import { segmentNameWithNoDash } from "@/util/segment"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; +import { AdSetWithDeletedAdsFragment } from "@/graphql-client/graphql"; interface Props { loading: boolean; diff --git a/src/user/ads/AdList.tsx b/src/user/ads/AdList.tsx index 8b6a81dd..a6a97050 100644 --- a/src/user/ads/AdList.tsx +++ b/src/user/ads/AdList.tsx @@ -1,12 +1,14 @@ import _ from "lodash"; import { isDateInThePast } from "@/util/isAfterEndDate"; -import { AdFragment } from "@/graphql/ad-set.generated"; -import { CampaignSource } from "@/graphql/types"; -import { CampaignAdsFragment } from "@/graphql/campaign.generated"; +import { + AdFragment, + CampaignAdsFragment, + CampaignSource, + CreativeFragment, +} from "@/graphql-client/graphql"; import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; import { AdDetailTable } from "@/user/views/user/AdDetailTable"; import { GridColDef } from "@mui/x-data-grid"; -import { CreativeFragment } from "@/graphql/creative.generated"; import { Box } from "@mui/material"; import { useLingui } from "@lingui/react"; import { msg, Trans } from "@lingui/macro"; diff --git a/src/user/ads/AdsExistingAd.tsx b/src/user/ads/AdsExistingAd.tsx index b82f95a3..f0d82062 100644 --- a/src/user/ads/AdsExistingAd.tsx +++ b/src/user/ads/AdsExistingAd.tsx @@ -8,12 +8,12 @@ import { Modal, } from "@mui/material"; import { useFormikContext } from "formik"; -import { CampaignFormat } from "@/graphql/types"; -import _ from "lodash"; import { + AdvertiserCreativesDocument, + CampaignFormat, CreativeFragment, - useAdvertiserCreativesQuery, -} from "@/graphql/creative.generated"; +} from "@/graphql-client/graphql"; +import _ from "lodash"; import { isCreativeTypeApplicableToCampaignFormat } from "@/user/library"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { CampaignForm } from "@/user/views/adsManager/types"; @@ -25,6 +25,7 @@ import { useAdvertiserCreatives } from "@/user/hooks/useAdvertiserCreatives"; import { modalStyles } from "@/theme"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { useQuery } from "@apollo/client"; function filterCreativesBasedOnCampaignFormat( creatives: CreativeFragment[], @@ -45,7 +46,7 @@ export function AdsExistingAd() { const { advertiser } = useAdvertiser(); const original = useRef([]); const [options, setOptions] = useState(); - const { loading } = useAdvertiserCreativesQuery({ + const { loading } = useQuery(AdvertiserCreativesDocument, { variables: { advertiserId: advertiser.id }, onCompleted(data) { const creativeOptionList = _.orderBy( diff --git a/src/user/ads/NewAd.tsx b/src/user/ads/NewAd.tsx index c0c46b07..370eef9b 100644 --- a/src/user/ads/NewAd.tsx +++ b/src/user/ads/NewAd.tsx @@ -10,7 +10,7 @@ import { initialCreative, } from "@/user/views/adsManager/types"; import { FormContext } from "@/state/context"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { Trans } from "@lingui/macro"; export function NewAd() { diff --git a/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx b/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx index 7e035d5b..70a981ec 100644 --- a/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx +++ b/src/user/analytics/analyticsOverview/components/EngagementHeader.tsx @@ -1,9 +1,9 @@ import { Box, Button, Stack, Typography } from "@mui/material"; import { Status } from "@/components/Campaigns/Status"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { MessageDescriptor } from "@lingui/core"; import { msg } from "@lingui/macro"; import { Trans } from "@lingui/react"; +import { CampaignSummaryFragment } from "@/graphql-client/graphql"; interface HeaderProps { onSetGroup: (s: string) => void; diff --git a/src/user/analytics/analyticsOverview/components/ReportUtils.tsx b/src/user/analytics/analyticsOverview/components/ReportUtils.tsx index c8659847..1fbf053f 100644 --- a/src/user/analytics/analyticsOverview/components/ReportUtils.tsx +++ b/src/user/analytics/analyticsOverview/components/ReportUtils.tsx @@ -1,7 +1,7 @@ import { Box } from "@mui/material"; import { DateRangePicker } from "@/components/Date/DateRangePicker"; import { DashboardButton } from "@/components/Button/DashboardButton"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import _ from "lodash"; import { ReportMenu } from "@/user/reporting/ReportMenu"; import { Dayjs } from "dayjs"; diff --git a/src/user/analytics/analyticsOverview/lib/ads.library.ts b/src/user/analytics/analyticsOverview/lib/ads.library.ts index 425bba95..b60d205d 100644 --- a/src/user/analytics/analyticsOverview/lib/ads.library.ts +++ b/src/user/analytics/analyticsOverview/lib/ads.library.ts @@ -1,7 +1,7 @@ import _ from "lodash"; -import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; import { processStats } from "@/user/analytics/analyticsOverview/lib/overview.library"; +import { EngagementFragment } from "@/graphql-client/graphql"; export function adEngagements( engagements: EngagementFragment[], diff --git a/src/user/analytics/analyticsOverview/lib/os.library.ts b/src/user/analytics/analyticsOverview/lib/os.library.ts index fc5cc129..d207ad2e 100644 --- a/src/user/analytics/analyticsOverview/lib/os.library.ts +++ b/src/user/analytics/analyticsOverview/lib/os.library.ts @@ -1,6 +1,6 @@ import { calculateMetric } from "./overview.library"; -import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { OS, OSMetric } from "../types"; +import { EngagementFragment } from "@/graphql-client/graphql"; export function processOs(engagements: EngagementFragment[]) { const stats: OSMetric = { diff --git a/src/user/analytics/analyticsOverview/lib/overview.library.ts b/src/user/analytics/analyticsOverview/lib/overview.library.ts index 8096fb97..170071cd 100644 --- a/src/user/analytics/analyticsOverview/lib/overview.library.ts +++ b/src/user/analytics/analyticsOverview/lib/overview.library.ts @@ -6,10 +6,10 @@ import { StatsMetric, Tooltip, } from "@/user/analytics/analyticsOverview/types"; -import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import BigNumber from "bignumber.js"; import { t } from "@lingui/macro"; import dayjs from "dayjs"; +import { EngagementFragment } from "@/graphql-client/graphql"; type MetricDataSet = { metric1DataSet: number[][]; diff --git a/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx b/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx index ba1d774e..93ce0c78 100644 --- a/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx +++ b/src/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview.tsx @@ -1,9 +1,5 @@ import { Alert, Box, Divider, Skeleton } from "@mui/material"; import { useState } from "react"; -import { - CampaignWithEngagementsFragment, - EngagementFragment, -} from "@/graphql/analytics-overview.generated"; import { prepareChart, processData, @@ -17,6 +13,10 @@ import { ApolloError } from "@apollo/client"; import { usePersistMetricFilter } from "@/user/analytics/analyticsOverview/hooks/usePersistMetricFilter"; import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; import { msg, Trans } from "@lingui/macro"; +import { + CampaignWithEngagementsFragment, + EngagementFragment, +} from "@/graphql-client/graphql"; interface Props { loading: boolean; diff --git a/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx b/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx index 15330a28..7de3db7b 100644 --- a/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx +++ b/src/user/analytics/analyticsOverview/reports/os/OsOverview.tsx @@ -1,8 +1,8 @@ import { Box, Stack } from "@mui/material"; -import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { mapOsStats, processOs } from "../../lib/os.library"; import { OsPieChart } from "./components/OsPieChart"; import { OsBarChart } from "./components/OsBarChart"; +import { EngagementFragment } from "@/graphql-client/graphql"; interface Props { engagements: EngagementFragment[]; diff --git a/src/user/analytics/renderers/index.tsx b/src/user/analytics/renderers/index.tsx index bfc1059f..85e01777 100644 --- a/src/user/analytics/renderers/index.tsx +++ b/src/user/analytics/renderers/index.tsx @@ -1,7 +1,9 @@ import { Box, Skeleton, Typography } from "@mui/material"; import { renderMonetaryAmount } from "@/components/Datagrid/renderers"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; -import { CampaignFormat } from "@/graphql/types"; +import { + CampaignFormat, + CampaignSummaryFragment, +} from "@/graphql-client/graphql"; import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; import { toLocaleString } from "@/util/bignumber"; diff --git a/src/user/analytics/search/AdSetBreakdown.tsx b/src/user/analytics/search/AdSetBreakdown.tsx index 804a77a0..41e71977 100644 --- a/src/user/analytics/search/AdSetBreakdown.tsx +++ b/src/user/analytics/search/AdSetBreakdown.tsx @@ -2,18 +2,19 @@ import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; import { DataGrid, GridColDef } from "@mui/x-data-grid"; import { Status } from "@/components/Campaigns/Status"; -import { - AdSetValuesFragment, - useFetchAdSetMetricsForCampaignQuery, -} from "@/graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { uiLabelsForBillingType } from "@/util/billingType"; import { displayFromCampaignState } from "@/util/displayState"; import { MetricDefinition, getMetricListForCampaign } from "./metrics"; import { RenderMetric } from "./RenderMetric"; import { i18n } from "@lingui/core"; import lodash from "lodash"; -import { PerformanceFilter } from "@/graphql/types"; +import { + AdSetValuesFragment, + CampaignSummaryFragment, + FetchAdSetMetricsForCampaignDocument, + PerformanceFilter, +} from "@/graphql-client/graphql"; +import { useQuery } from "@apollo/client"; function getColumnDefinitionForMetric(metric: MetricDefinition): GridColDef { return { @@ -37,7 +38,7 @@ interface Props { export function AdSetBreakdown({ campaignSummary, filter }: Props) { const { _ } = useLingui(); - const { data, loading } = useFetchAdSetMetricsForCampaignQuery({ + const { data, loading } = useQuery(FetchAdSetMetricsForCampaignDocument, { variables: { filter, }, diff --git a/src/user/analytics/search/MetricSelector.tsx b/src/user/analytics/search/MetricSelector.tsx index cff9991b..9bccbbe0 100644 --- a/src/user/analytics/search/MetricSelector.tsx +++ b/src/user/analytics/search/MetricSelector.tsx @@ -2,8 +2,8 @@ import { Box, Switch, Tooltip, Typography, switchClasses } from "@mui/material"; import { MetricDefinition } from "./metrics"; import { RenderMetric } from "./RenderMetric"; import { useMetricSelection } from "./hooks"; -import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; import { Trans } from "@lingui/react"; +import { CampaignMetricDetailValuesFragment } from "@/graphql-client/graphql"; interface Props { metricDefinition: MetricDefinition; diff --git a/src/user/analytics/search/MetricsList.tsx b/src/user/analytics/search/MetricsList.tsx index eb7d1404..dd30cd7e 100644 --- a/src/user/analytics/search/MetricsList.tsx +++ b/src/user/analytics/search/MetricsList.tsx @@ -1,7 +1,9 @@ +import { + CampaignSummaryFragment, + CampaignMetricDetailValuesFragment, +} from "@/graphql-client/graphql"; import { getMetricListForCampaign } from "./metrics"; import { MetricSelector } from "./MetricSelector"; -import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; interface Props { campaign: CampaignSummaryFragment; diff --git a/src/user/analytics/search/OverTimeGraph.tsx b/src/user/analytics/search/OverTimeGraph.tsx index 3d5e9e00..0cf0541d 100644 --- a/src/user/analytics/search/OverTimeGraph.tsx +++ b/src/user/analytics/search/OverTimeGraph.tsx @@ -1,4 +1,4 @@ -import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; +import { DailyValuesFragment } from "@/graphql-client/graphql"; import { useMetricSelection } from "./hooks"; import { makeLineChartSeries } from "./series"; import { HighchartsWrapper } from "@/user/analytics/analyticsOverview/components/HighchartsWrapper"; diff --git a/src/user/analytics/search/metrics.ts b/src/user/analytics/search/metrics.ts index d41d00ae..fe69bb64 100644 --- a/src/user/analytics/search/metrics.ts +++ b/src/user/analytics/search/metrics.ts @@ -1,8 +1,10 @@ import { msg } from "@lingui/macro"; import BigNumber from "bignumber.js"; -import { CampaignMetricDetailValuesFragment } from "@/graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { MessageDescriptor } from "@lingui/core"; +import { + CampaignMetricDetailValuesFragment, + CampaignSummaryFragment, +} from "@/graphql-client/graphql"; export type MetricType = "number" | "rate" | "usd"; diff --git a/src/user/analytics/search/series.test.ts b/src/user/analytics/search/series.test.ts index bbaad4e5..3d9925e7 100644 --- a/src/user/analytics/search/series.test.ts +++ b/src/user/analytics/search/series.test.ts @@ -2,8 +2,8 @@ import { getMetricDefinition } from "./metrics"; import { makeLineChartSeries } from "./series"; import assert from "node:assert"; import { DeepPartial } from "@apollo/client/utilities"; -import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; import dayjs from "dayjs"; +import { DailyValuesFragment } from "@/graphql-client/graphql"; it("should populate zero values for missing days in the date range", () => { // why? we show a line graph. If there are missing days, the graph will draw the line diff --git a/src/user/analytics/search/series.ts b/src/user/analytics/search/series.ts index 7c233e2a..c64fd3b8 100644 --- a/src/user/analytics/search/series.ts +++ b/src/user/analytics/search/series.ts @@ -1,9 +1,9 @@ import { MetricDefinition } from "./metrics"; import { SeriesSplineOptions, SeriesTooltipOptionsObject } from "highcharts"; import BigNumber from "bignumber.js"; -import { DailyValuesFragment } from "@/graphql/analytics-overview.generated"; import { i18n } from "@lingui/core"; import dayjs from "dayjs"; +import { DailyValuesFragment } from "@/graphql-client/graphql"; function populateZeroValues(data: [number, number][]): [number, number][] { if (data.length === 0) { diff --git a/src/user/campaignList/CampaignList.tsx b/src/user/campaignList/CampaignList.tsx index 560fcf18..1bb40ed0 100644 --- a/src/user/campaignList/CampaignList.tsx +++ b/src/user/campaignList/CampaignList.tsx @@ -8,12 +8,6 @@ import { import { Link as RouterLink } from "react-router-dom"; import { Status } from "@/components/Campaigns/Status"; import { isDateInThePast } from "@/util/isAfterEndDate"; -import { AdvertiserCampaignsFragment } from "@/graphql/advertiser.generated"; -import { - CampaignMetricSummaryValuesFragment, - useCampaignMetricsQuery, -} from "@/graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; import { DataGrid, GridColDef } from "@mui/x-data-grid"; import { CustomToolbar } from "@/components/Datagrid/CustomToolbar"; import { CloneCampaign } from "@/components/Campaigns/CloneCampaign"; @@ -23,7 +17,14 @@ import { stringFilterOperators } from "@/components/Datagrid/stringFilterOperato import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; import { MetricValue } from "./MetricValue"; -import { CampaignFormat } from "@/graphql/types"; +import { + AdvertiserCampaignsFragment, + CampaignFormat, + CampaignMetricSummaryValuesFragment, + CampaignMetricsDocument, + CampaignSummaryFragment, +} from "@/graphql-client/graphql"; +import { useQuery } from "@apollo/client"; interface Props { advertiser?: AdvertiserCampaignsFragment | null; @@ -33,7 +34,7 @@ export function CampaignList({ advertiser }: Props) { const { _: lingui } = useLingui(); const [selectedCampaign, setSelectedCampaign] = useState(); - const { data, loading } = useCampaignMetricsQuery({ + const { data, loading } = useQuery(CampaignMetricsDocument, { variables: { campaignIds: (advertiser?.campaigns ?? []) .filter((c) => c.format !== CampaignFormat.NtpSi) diff --git a/src/user/campaignList/EditButton.tsx b/src/user/campaignList/EditButton.tsx index ebf20f5f..67f09f7e 100644 --- a/src/user/campaignList/EditButton.tsx +++ b/src/user/campaignList/EditButton.tsx @@ -1,5 +1,8 @@ -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; -import { CampaignFormat, CampaignSource } from "@/graphql/types"; +import { + CampaignFormat, + CampaignSource, + CampaignSummaryFragment, +} from "@/graphql-client/graphql"; import { Button, Tooltip } from "@mui/material"; import { Link as RouterLink } from "react-router-dom"; import EditIcon from "@mui/icons-material/Edit"; diff --git a/src/user/hooks/useAdvertiserWithPrices.tsx b/src/user/hooks/useAdvertiserWithPrices.tsx index 6329f218..adb83348 100644 --- a/src/user/hooks/useAdvertiserWithPrices.tsx +++ b/src/user/hooks/useAdvertiserWithPrices.tsx @@ -1,14 +1,15 @@ import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; -import { - AdvertiserPriceFragment, - useAdvertiserPricesQuery, -} from "@/graphql/advertiser.generated"; import { useState } from "react"; import { IAdvertiser } from "@/auth/context/auth.interface"; import _ from "lodash"; -import { BillingType } from "@/graphql/types"; +import { + AdvertiserPriceFragment, + AdvertiserPricesDocument, + BillingType, +} from "@/graphql-client/graphql"; import { Billing } from "@/user/views/adsManager/types"; import { t } from "@lingui/macro"; +import { useQuery } from "@apollo/client"; export type AdvertiserPrice = Omit & { billingType: Billing; @@ -29,7 +30,7 @@ export function useAdvertiserWithPrices(params: Params = {}) { }); const [error, setError] = useState(); - const { loading } = useAdvertiserPricesQuery({ + const { loading } = useQuery(AdvertiserPricesDocument, { variables: { id: advertiser.id }, onCompleted(data) { const prices = data.advertiser?.prices ?? []; diff --git a/src/user/library/index.test.ts b/src/user/library/index.test.ts index 13133b94..5828bd70 100644 --- a/src/user/library/index.test.ts +++ b/src/user/library/index.test.ts @@ -1,4 +1,3 @@ -import { CampaignFragment } from "@/graphql/campaign.generated"; import { describe, expect, it } from "vitest"; import { editCampaignValues, @@ -8,12 +7,14 @@ import { } from "."; import { CampaignFormat, + CampaignFragment, CampaignPacingStrategies, CampaignSource, CampaignType, ConfirmationType, + CreativeFragment, PaymentType, -} from "@/graphql/types"; +} from "@/graphql-client/graphql"; import { produce } from "immer"; import { AdSetForm, @@ -21,8 +22,7 @@ import { Creative, } from "@/user/views/adsManager/types"; import _ from "lodash"; -import { AdFragment, AdSetFragment } from "@/graphql/ad-set.generated"; -import { CreativeFragment } from "@/graphql/creative.generated"; +import { AdFragment, AdSetFragment } from "@/graphql-client/graphql"; import { DeepPartial } from "@apollo/client/utilities"; const BASE_CPM_CAMPAIGN_FRAGMENT: Readonly = { diff --git a/src/user/library/index.ts b/src/user/library/index.ts index 45616244..c9e4fb29 100644 --- a/src/user/library/index.ts +++ b/src/user/library/index.ts @@ -1,10 +1,11 @@ import { CampaignFormat, + CampaignFragment, CreateCampaignInput, + CreativeFragment, UpdateCampaignInput, -} from "@/graphql/types"; -import { CampaignFragment } from "@/graphql/campaign.generated"; -import { AdFragment, AdSetFragment } from "@/graphql/ad-set.generated"; +} from "@/graphql-client/graphql"; +import { AdFragment, AdSetFragment } from "@/graphql-client/graphql"; import { AdSetForm, Billing, @@ -16,7 +17,6 @@ import { } from "@/user/views/adsManager/types"; import _ from "lodash"; import BigNumber from "bignumber.js"; -import { CreativeFragment } from "@/graphql/creative.generated"; import { t } from "@lingui/macro"; import dayjs from "dayjs"; diff --git a/src/user/settings/NewKeyPairModal.tsx b/src/user/settings/NewKeyPairModal.tsx index bd34ef60..6772e8db 100644 --- a/src/user/settings/NewKeyPairModal.tsx +++ b/src/user/settings/NewKeyPairModal.tsx @@ -6,7 +6,6 @@ import { TextField, Typography, } from "@mui/material"; -import { useUpdateAdvertiserMutation } from "@/graphql/advertiser.generated"; import tweetnacl from "tweetnacl"; import { useRef, useState } from "react"; import { IAdvertiser } from "@/auth/context/auth.interface"; @@ -14,6 +13,8 @@ import { CardContainer } from "@/components/Card/CardContainer"; import { modalStyles } from "@/theme"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { useMutation } from "@apollo/client"; +import { UpdateAdvertiserDocument } from "@/graphql-client/graphql"; interface Props { advertiser: IAdvertiser; @@ -31,7 +32,7 @@ export function NewKeyPairModal({ advertiser }: Props) { const [newKeypairModalState, setNewKeypairModalState] = useState("disclaimer"); - const [updateAdvertiser] = useUpdateAdvertiserMutation({ + const [updateAdvertiser] = useMutation(UpdateAdvertiserDocument, { variables: { updateAdvertiserInput: { id: advertiser.id, diff --git a/src/user/settings/UserForm.tsx b/src/user/settings/UserForm.tsx index f9a5ec11..66ef7e67 100644 --- a/src/user/settings/UserForm.tsx +++ b/src/user/settings/UserForm.tsx @@ -4,7 +4,6 @@ import { useUser } from "@/auth/hooks/queries/useUser"; import { CardContainer } from "@/components/Card/CardContainer"; import { Form, Formik, FormikValues } from "formik"; import { FormikTextField } from "@/form/FormikHelpers"; -import { useUpdateUserMutation } from "@/graphql/user.generated"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { UserSchema } from "@/validation/UserSchema"; import _ from "lodash"; @@ -12,6 +11,8 @@ import { FormikSubmitButton } from "@/form/FormikButton"; import { useTrackMatomoEvent } from "@/hooks/useTrackWithMatomo"; import { msg, Trans } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { UpdateUserDocument } from "@/graphql-client/graphql"; +import { useMutation } from "@apollo/client"; export function UserForm() { const user = useUser(); @@ -24,7 +25,7 @@ export function UserForm() { return ; } - const [updateUser] = useUpdateUserMutation({ + const [updateUser] = useMutation(UpdateUserDocument, { onCompleted(user) { trackMatomoEvent("user", "update"); setInitialVals(user.updateUser); diff --git a/src/user/views/adsManager/types/index.ts b/src/user/views/adsManager/types/index.ts index 9d33fba3..9acc440e 100644 --- a/src/user/views/adsManager/types/index.ts +++ b/src/user/views/adsManager/types/index.ts @@ -1,4 +1,8 @@ -import { CampaignFormat, CreativeInput, PaymentType } from "@/graphql/types"; +import { + CampaignFormat, + CreativeInput, + PaymentType, +} from "@/graphql-client/graphql"; import { defaultEndDate, defaultStartDate } from "@/form/DateFieldHelpers"; import { MIN_PER_CAMPAIGN } from "@/validation/CampaignSchema"; import { AdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx b/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx index f3764bd9..2c41a07e 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/AdSetFields.tsx @@ -8,7 +8,7 @@ import { adSetOnOffState } from "@/components/Datagrid/renderers"; import { Stack, Typography } from "@mui/material"; import { useFormikContext } from "formik"; import { CampaignForm } from "@/user/views/adsManager/types"; -import { CampaignSource } from "@/graphql/types"; +import { CampaignSource } from "@/graphql-client/graphql"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { Status } from "@/components/Campaigns/Status"; import { displayFromCampaignState } from "@/util/displayState"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx b/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx index a6964c91..c30c5097 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/fields/AdSetAds.tsx @@ -7,7 +7,7 @@ import { isCreativeTypeApplicableToCampaignFormat } from "@/user/library"; import { NewAd } from "@/user/ads/NewAd"; import { AdsExistingAd } from "@/user/ads/AdsExistingAd"; import { ShowAdsButton } from "@/user/ads/ShowAdsButton"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { NotificationAd } from "@/user/ads/NotificationAd"; import { InlineContentAd } from "@/user/ads/InlineContentAd"; import { modalStyles } from "@/theme"; diff --git a/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx b/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx index c45cd315..a29b8efd 100644 --- a/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx +++ b/src/user/views/adsManager/views/advanced/components/adSet/fields/PickerFields.tsx @@ -3,9 +3,8 @@ import { SegmentPicker } from "@/components/Segment/SegmentPicker"; import { PlatformPicker } from "@/components/Platform/PlatformPicker"; import { CardContainer } from "@/components/Card/CardContainer"; import { useField } from "formik"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat, SegmentFragment } from "@/graphql-client/graphql"; import { useEffect } from "react"; -import { SegmentFragment } from "@/graphql/common.generated"; import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; import { Trans } from "@lingui/macro"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx b/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx index 0d9f06d5..19766b5e 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/components/BillingModelSelect.tsx @@ -2,7 +2,7 @@ import { List, ListItemButton, Stack, Typography } from "@mui/material"; import { renderMonetaryAmount } from "@/components/Datagrid/renderers"; import { useIsEdit } from "@/form/FormikHelpers"; import { useField } from "formik"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; import { Billing } from "@/user/views/adsManager/types"; import { uiLabelsForCampaignFormat } from "@/util/campaign"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx b/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx index 788909e8..1344cda5 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/components/CustomPriceSelect.tsx @@ -4,7 +4,7 @@ import { useIsEdit, } from "@/form/FormikHelpers"; import { useField } from "formik"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { InputAdornment, Stack } from "@mui/material"; import { uiLabelsForBillingType } from "@/util/billingType"; import { useLingui } from "@lingui/react"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx index 7ebb179d..f96421f2 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/FormatField.tsx @@ -9,7 +9,7 @@ import { } from "@mui/material"; import { CardContainer } from "@/components/Card/CardContainer"; import { useField } from "formik"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { useIsEdit } from "@/form/FormikHelpers"; import { Billing } from "@/user/views/adsManager/types"; import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx index e509d0dd..47bcba01 100644 --- a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx +++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx @@ -1,6 +1,6 @@ import { Stack, Typography } from "@mui/material"; import { FormikRadioControl, useIsEdit } from "@/form/FormikHelpers"; -import { PaymentType } from "@/graphql/types"; +import { PaymentType } from "@/graphql-client/graphql"; import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { CardContainer } from "@/components/Card/CardContainer"; import { LearnMoreButton } from "@/components/Button/LearnMoreButton"; diff --git a/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx b/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx index 1c6af9f8..7fc7fac0 100644 --- a/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/EditCampaign.tsx @@ -3,21 +3,22 @@ import { Formik } from "formik"; import { CampaignForm } from "../../../../types"; import { CampaignSchema } from "@/validation/CampaignSchema"; import { editCampaignValues, transformEditForm } from "@/user/library"; -import { - useLoadCampaignQuery, - useUpdateCampaignMutation, -} from "@/graphql/campaign.generated"; import { useHistory, useParams } from "react-router-dom"; import { BaseForm } from "./components/BaseForm"; import { useCreatePaymentSession } from "@/checkout/hooks/useCreatePaymentSession"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; -import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; import { useContext } from "react"; import { FilterContext } from "@/state/context"; import { useAdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { + AdvertiserCampaignsDocument, + LoadCampaignDocument, + UpdateCampaignDocument, +} from "@/graphql-client/graphql"; +import { useMutation, useQuery } from "@apollo/client"; interface Params { campaignId: string; @@ -42,13 +43,13 @@ export function EditCampaign() { data: initialData, loading: qLoading, error, - } = useLoadCampaignQuery({ + } = useQuery(LoadCampaignDocument, { variables: { id: params.campaignId }, fetchPolicy: "cache-and-network", }); const hasPaymentIntent = initialData?.campaign?.hasPaymentIntent; - const [mutation] = useUpdateCampaignMutation({ + const [mutation] = useMutation(UpdateCampaignDocument, { onCompleted(data) { trackMatomoEvent("campaign", "update-success"); if (hasPaymentIntent) { @@ -65,10 +66,11 @@ export function EditCampaign() { }, refetchQueries: [ { - ...refetchAdvertiserCampaignsQuery({ + query: AdvertiserCampaignsDocument, + variables: { id: data.id, filter: { from: fromDate?.toISOString() }, - }), + }, }, ], }); diff --git a/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx b/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx index eda1cf1f..bfa7a56e 100644 --- a/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx +++ b/src/user/views/adsManager/views/advanced/components/form/NewCampaign.tsx @@ -4,21 +4,24 @@ import { useContext, useState } from "react"; import { CampaignForm, initialCampaign } from "../../../../types"; import { CampaignSchema } from "@/validation/CampaignSchema"; import { transformNewForm } from "@/user/library"; -import { useCreateCampaignMutation } from "@/graphql/campaign.generated"; import { useHistory, useParams } from "react-router-dom"; import { BaseForm } from "./components/BaseForm"; import { PersistFormValues } from "@/form/PersistFormValues"; import { DraftContext, FilterContext } from "@/state/context"; import { useCreatePaymentSession } from "@/checkout/hooks/useCreatePaymentSession"; -import { PaymentType } from "@/graphql/types"; +import { + AdvertiserCampaignsDocument, + CreateCampaignDocument, + PaymentType, +} from "@/graphql-client/graphql"; import { useUser } from "@/auth/hooks/queries/useUser"; -import { refetchAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; import { useAdvertiserWithPrices } from "@/user/hooks/useAdvertiserWithPrices"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; import _ from "lodash"; import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { useMutation } from "@apollo/client"; interface Params { draftId: string; @@ -47,7 +50,7 @@ export function NewCampaign() { }, }); - const [mutation] = useCreateCampaignMutation({ + const [mutation] = useMutation(CreateCampaignDocument, { onCompleted(data) { trackMatomoEvent("campaign", "creation-success"); const campaign = data.createCampaign; @@ -68,10 +71,11 @@ export function NewCampaign() { }, refetchQueries: [ { - ...refetchAdvertiserCampaignsQuery({ + query: AdvertiserCampaignsDocument, + variables: { id: data.id, filter: { from: fromDate?.toISOString() }, - }), + }, }, ], }); diff --git a/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx b/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx index 0c0914b9..55b08586 100644 --- a/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx +++ b/src/user/views/adsManager/views/advanced/components/review/components/AdSetReview.tsx @@ -3,7 +3,7 @@ import { FormikErrors } from "formik"; import { ConversionDisplay } from "@/components/Conversion/ConversionDisplay"; import { ReviewField } from "./ReviewField"; import { ReviewContainer } from "@/user/views/adsManager/views/advanced/components/review/components/ReviewContainer"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { CreativeSpecificPreview } from "@/components/Creatives/CreativeSpecificPreview"; import { segmentNameWithNoDash } from "@/util/segment"; import { msg } from "@lingui/macro"; diff --git a/src/user/views/user/AdDetailTable.tsx b/src/user/views/user/AdDetailTable.tsx index a73fbaa4..0da92e28 100644 --- a/src/user/views/user/AdDetailTable.tsx +++ b/src/user/views/user/AdDetailTable.tsx @@ -1,5 +1,4 @@ -import { CampaignAdsFragment } from "@/graphql/campaign.generated"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignAdsFragment, CampaignFormat } from "@/graphql-client/graphql"; import { StatsMetric } from "@/user/analytics/analyticsOverview/types"; import { renderStatsCell } from "@/user/analytics/renderers"; import { DataGrid, GridColDef, GridValidRowModel } from "@mui/x-data-grid"; diff --git a/src/user/views/user/CampaignDetails.tsx b/src/user/views/user/CampaignDetails.tsx index a88543b3..4315372a 100644 --- a/src/user/views/user/CampaignDetails.tsx +++ b/src/user/views/user/CampaignDetails.tsx @@ -1,16 +1,19 @@ import { useState } from "react"; import DatasetIcon from "@mui/icons-material/Dataset"; import LibraryBooksIcon from "@mui/icons-material/LibraryBooks"; -import { useLoadCampaignAdsQuery } from "@/graphql/campaign.generated"; import { useParams } from "react-router-dom"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; import { Box, Skeleton, Tab, Tabs } from "@mui/material"; import { AdSetList } from "@/user/adSet/AdSetList"; import { AdList } from "@/user/ads/AdList"; -import { EngagementFragment } from "@/graphql/analytics-overview.generated"; import { adEngagements } from "@/user/analytics/analyticsOverview/lib/ads.library"; import { msg } from "@lingui/macro"; import { useLingui } from "@lingui/react"; +import { + EngagementFragment, + LoadCampaignAdsDocument, +} from "@/graphql-client/graphql"; +import { useQuery } from "@apollo/client"; interface Params { campaignId: string; @@ -24,7 +27,7 @@ interface Props { export function CampaignDetails({ engagements, engagementLoading }: Props) { const params = useParams(); const { _ } = useLingui(); - const { data, loading, error } = useLoadCampaignAdsQuery({ + const { data, loading, error } = useQuery(LoadCampaignAdsDocument, { variables: { id: params.campaignId }, fetchPolicy: "cache-and-network", }); diff --git a/src/user/views/user/CampaignReportViewSelector.tsx b/src/user/views/user/CampaignReportViewSelector.tsx index b1a538fc..4d54e704 100644 --- a/src/user/views/user/CampaignReportViewSelector.tsx +++ b/src/user/views/user/CampaignReportViewSelector.tsx @@ -1,12 +1,15 @@ import { Box, LinearProgress } from "@mui/material"; import { AlwaysOnFormButton } from "@/components/Button/AlwaysOnFormButton"; -import { useLoadCampaignSummaryQuery } from "@/graphql/campaign.generated"; import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { useParams } from "react-router-dom"; -import { CampaignFormat } from "@/graphql/types"; +import { + CampaignFormat, + LoadCampaignSummaryDocument, +} from "@/graphql-client/graphql"; import { ConsultAccountManager } from "./reports/ConsultAccountManager"; import { OriginalCampaignReportView } from "./reports/OriginalCampaignReportView"; import { SearchCampaignReportView } from "./reports/SearchCampaignReportView"; +import { useQuery } from "@apollo/client"; interface Params { campaignId: string; @@ -20,7 +23,7 @@ export function CampaignReportViewSelector() { const { campaignId } = useParams(); - const { data } = useLoadCampaignSummaryQuery({ + const { data } = useQuery(LoadCampaignSummaryDocument, { variables: { id: campaignId, }, diff --git a/src/user/views/user/CampaignView.tsx b/src/user/views/user/CampaignView.tsx index bb216200..c5b91e79 100644 --- a/src/user/views/user/CampaignView.tsx +++ b/src/user/views/user/CampaignView.tsx @@ -1,6 +1,5 @@ import { Box, Skeleton } from "@mui/material"; import { useContext } from "react"; -import { useAdvertiserCampaignsQuery } from "@/graphql/advertiser.generated"; import { CampaignAgeFilter } from "@/components/Campaigns/CampaignAgeFilter"; import { CampaignList } from "@/user/campaignList/CampaignList"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; @@ -10,13 +9,15 @@ import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser"; import { FilterContext } from "@/state/context"; import { useTrackMatomoPageView } from "@/hooks/useTrackWithMatomo"; import { Trans, msg } from "@lingui/macro"; +import { AdvertiserCampaignsDocument } from "@/graphql-client/graphql"; +import { useQuery } from "@apollo/client"; export function CampaignView() { useTrackMatomoPageView({ documentTitle: "Advertiser Campaigns" }); const { advertiser } = useAdvertiser(); const { fromDate } = useContext(FilterContext); - const { loading, data, error } = useAdvertiserCampaignsQuery({ + const { loading, data, error } = useQuery(AdvertiserCampaignsDocument, { variables: { id: advertiser.id, filter: { from: fromDate?.toISOString() }, diff --git a/src/user/views/user/reports/OriginalCampaignReportView.tsx b/src/user/views/user/reports/OriginalCampaignReportView.tsx index 3a9919c6..64b2cbec 100644 --- a/src/user/views/user/reports/OriginalCampaignReportView.tsx +++ b/src/user/views/user/reports/OriginalCampaignReportView.tsx @@ -1,5 +1,4 @@ import { useState } from "react"; -import { useAnalyticOverviewQuery } from "@/graphql/analytics-overview.generated"; import { Box } from "@mui/material"; import ReportUtils from "@/user/analytics/analyticsOverview/components/ReportUtils"; import { EngagementsOverview } from "@/user/analytics/analyticsOverview/reports/campaign/EngagementsOverview"; @@ -8,8 +7,12 @@ import { CollapseBox } from "@/components/Collapse/CollapseBox"; import { OsOverview } from "@/user/analytics/analyticsOverview/reports/os/OsOverview"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; +import { + AnalyticOverviewDocument, + CampaignSummaryFragment, +} from "@/graphql-client/graphql"; import dayjs, { Dayjs } from "dayjs"; +import { useQuery } from "@apollo/client"; interface Props { campaignSummary: CampaignSummaryFragment; @@ -29,7 +32,7 @@ export function OriginalCampaignReportView({ campaignSummary }: Props) { } }; - const { loading, data, error } = useAnalyticOverviewQuery({ + const { loading, data, error } = useQuery(AnalyticOverviewDocument, { variables: { id: campaignSummary.id, }, diff --git a/src/user/views/user/reports/SearchCampaignReportView.tsx b/src/user/views/user/reports/SearchCampaignReportView.tsx index 023fa87c..dcdae0b6 100644 --- a/src/user/views/user/reports/SearchCampaignReportView.tsx +++ b/src/user/views/user/reports/SearchCampaignReportView.tsx @@ -5,9 +5,11 @@ import { Status } from "@/components/Campaigns/Status"; import { CardContainer } from "@/components/Card/CardContainer"; import { DateRangePicker } from "@/components/Date/DateRangePicker"; import { ErrorDetail } from "@/components/Error/ErrorDetail"; -import { useFetchDailyMetricsForCampaignQuery } from "@/graphql/analytics-overview.generated"; -import { CampaignSummaryFragment } from "@/graphql/campaign.generated"; -import { PerformanceFilter } from "@/graphql/types"; +import { + PerformanceFilter, + CampaignSummaryFragment, + FetchDailyMetricsForCampaignDocument, +} from "@/graphql-client/graphql"; import { useState } from "react"; import { AdSetBreakdown } from "@/user/analytics/search/AdSetBreakdown"; import { MetricsList } from "@/user/analytics/search/MetricsList"; @@ -15,6 +17,7 @@ import { OverTimeGraph } from "@/user/analytics/search/OverTimeGraph"; import { useMetricSelection } from "@/user/analytics/search/hooks"; import { ReportMenu } from "@/user/reporting/ReportMenu"; import dayjs from "dayjs"; +import { useQuery } from "@apollo/client"; interface Props { campaignSummary: CampaignSummaryFragment; @@ -33,7 +36,7 @@ export function SearchCampaignReportView({ campaignSummary }: Props) { to: endDate.toISOString(), }; - const { data, error } = useFetchDailyMetricsForCampaignQuery({ + const { data, error } = useQuery(FetchDailyMetricsForCampaignDocument, { variables: { filter, }, diff --git a/src/util/campaign.ts b/src/util/campaign.ts index 78225749..64372716 100644 --- a/src/util/campaign.ts +++ b/src/util/campaign.ts @@ -1,4 +1,4 @@ -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import { t } from "@lingui/macro"; export function uiLabelsForCampaignFormat(format: CampaignFormat): string { diff --git a/src/validation/CampaignSchema.test.ts b/src/validation/CampaignSchema.test.ts index 0adc2712..15338995 100644 --- a/src/validation/CampaignSchema.test.ts +++ b/src/validation/CampaignSchema.test.ts @@ -1,5 +1,8 @@ import { produce } from "immer"; -import { CampaignFormat, CampaignPacingStrategies } from "@/graphql/types"; +import { + CampaignFormat, + CampaignPacingStrategies, +} from "@/graphql-client/graphql"; import { CampaignSchema } from "./CampaignSchema"; import { describe } from "vitest"; import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; diff --git a/src/validation/CampaignSchema.tsx b/src/validation/CampaignSchema.tsx index 1367823f..c4910b29 100644 --- a/src/validation/CampaignSchema.tsx +++ b/src/validation/CampaignSchema.tsx @@ -17,7 +17,7 @@ import { TrailingAsteriskRegex, } from "@/validation/regex"; import { CreativeSchema } from "@/validation/CreativeSchema"; -import { CampaignFormat } from "@/graphql/types"; +import { CampaignFormat } from "@/graphql-client/graphql"; import BigNumber from "bignumber.js"; import { AdvertiserPrice } from "@/user/hooks/useAdvertiserWithPrices"; import { Billing } from "@/user/views/adsManager/types"; From ba18aa4c94b2adba2e7e95cc2285ab6b2fed2ef3 Mon Sep 17 00:00:00 2001 From: Graham Tackley Date: Thu, 25 Apr 2024 09:54:22 +0100 Subject: [PATCH 6/6] fix: minor layout fixes after data grid update (#1174) The new version of data grid stopped cells automatically being display: "flex" for layout performance reasons. Enforce this for those cells that need it. Before: Screenshot 2024-04-24 at 15 01 19 After: Screenshot 2024-04-24 at 15 02 50 Before: Screenshot 2024-04-24 at 15 40 07 After: Screenshot 2024-04-24 at 15 38 29 --- src/components/Creatives/CreativeList.tsx | 1 + src/user/analytics/search/AdSetBreakdown.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/Creatives/CreativeList.tsx b/src/components/Creatives/CreativeList.tsx index 371fb5e0..f4b09f36 100644 --- a/src/components/Creatives/CreativeList.tsx +++ b/src/components/Creatives/CreativeList.tsx @@ -73,6 +73,7 @@ export function CreativeList() { valueGetter: (_value, row) => creativeValuesGetter(row), renderCell: ({ row }) => , flex: 1, + display: "flex", sortable: false, }, { diff --git a/src/user/analytics/search/AdSetBreakdown.tsx b/src/user/analytics/search/AdSetBreakdown.tsx index 41e71977..11caff9a 100644 --- a/src/user/analytics/search/AdSetBreakdown.tsx +++ b/src/user/analytics/search/AdSetBreakdown.tsx @@ -23,6 +23,7 @@ function getColumnDefinitionForMetric(metric: MetricDefinition): GridColDef { type: "number", align: "right", headerAlign: "right", + display: "flex", width: 100, renderCell: ({ value }) => (