-
-
Save gajus/ff6099064fc094c65e82fbe8ebe71e9f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable import/no-extraneous-dependencies */ | |
import { default as react } from '@vitejs/plugin-react'; | |
import path from 'path'; | |
// @ts-expect-error missing typings | |
import istanbul from 'rollup-plugin-istanbul'; | |
import { visualizer } from 'rollup-plugin-visualizer'; | |
import { defineConfig } from 'vite'; | |
import { default as viteCompression } from 'vite-plugin-compression'; | |
import dynamicImport from 'vite-plugin-dynamic-import'; | |
import { default as ssr } from 'vite-plugin-ssr/plugin'; | |
import { configDefaults, type UserConfig } from 'vitest/config'; | |
/** | |
* This is a temporary workaround until we figure out why experimentalMinChunkSize is not merging small chunks. | |
* Generated by inspecting Rollup bundle and trying to determine which chunks are safe to merge. | |
* | |
* The process is: | |
* 1. set DEBUG_ROLLUP_BUILD=true | |
* 3. serve the production build (pnpm run build && pnpm run start) | |
* 4. run playwright script (https://gist.github.com/gajus/f7e22934fa9340e4a5a3de3079cbd580) | |
*/ | |
const smallModuleIds = [ | |
'/apps/contra-web-app/src/__generated__/AvatarImageFragment.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/components/Icons/ChevronDown.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/ChevronUp.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/ContraLogoSuspenseLoader.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/ContraLogoTitleBlackOnWhite.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/Move.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/NavbarLock.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/OnboardingPlaceholder.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/Plus.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/ProgressTrackerCheck.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/SolidCheck.tsx', | |
'/apps/contra-web-app/src/__generated__/components/Icons/VerifiedGradient.tsx', | |
'/apps/contra-web-app/src/__generated__/ProjectCoverWrapper_portfolioProjectCover.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/StripeContextProviderFragment.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useOnboardingSuccessAddUIFlagMutation.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useSendAnalyticEventMutationPortfolioProjectViewEventMutation.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useSendAnalyticEventMutationProductizedServiceViewEventMutation.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useSendAnalyticEventMutationProfileViewEventMutation.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useUserAvailabilityModalMutation.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useUserAvailabilityModalQuery.graphql.ts', | |
'/apps/contra-web-app/src/__generated__/useUserInterfaceFlags_fragment.graphql.ts', | |
'/apps/contra-web-app/src/components/AddVerticalFades/AddVerticalFades.tsx', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/Avatar.tsx', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/AvatarImage.tsx', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/AvatarImageFragment.ts', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/AvatarPlaceholder.tsx', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/constants.ts', | |
'/apps/contra-web-app/src/components/Avatars/Avatar/utils.ts', | |
'/apps/contra-web-app/src/components/Avatars/AvatarGroup/AvatarGroup.tsx', | |
'/apps/contra-web-app/src/components/Avatars/AvatarGroup/MoreIndicator.tsx', | |
'/apps/contra-web-app/src/components/Avatars/AvatarWithDetails/AvatarWithDetails.tsx', | |
'/apps/contra-web-app/src/components/BlogCategoriesList/BlogCategoriesList.tsx', | |
'/apps/contra-web-app/src/components/BlogCategoriesList/util.ts', | |
'/apps/contra-web-app/src/components/Card/src/Card.tsx', | |
'/apps/contra-web-app/src/components/CategoryTag/CategoryTag.styles.ts', | |
'/apps/contra-web-app/src/components/CategoryTag/CategoryTag.tsx', | |
'/apps/contra-web-app/src/components/CategoryTag/constants.ts', | |
'/apps/contra-web-app/src/components/CategoryTag/util.ts', | |
'/apps/contra-web-app/src/components/CharacterCounter/CharacterCounter.tsx', | |
'/apps/contra-web-app/src/components/ContextualBanner/ContextualBanner.styles.ts', | |
'/apps/contra-web-app/src/components/ContextualBanner/ContextualBanner.tsx', | |
'/apps/contra-web-app/src/components/Controls/src/Checkbox.tsx', | |
'/apps/contra-web-app/src/components/Controls/src/Radio.tsx', | |
'/apps/contra-web-app/src/components/CurrencyInput/CurrencyInput.tsx', | |
'/apps/contra-web-app/src/components/DraftResourceCallout/DraftResourceCallout.styles.ts', | |
'/apps/contra-web-app/src/components/DraftResourceCallout/ProjectDraftCallout.tsx', | |
'/apps/contra-web-app/src/components/DraftResourceTag/DraftResourceTag.styles.ts', | |
'/apps/contra-web-app/src/components/Drawer/Drawer.styles.tsx', | |
'/apps/contra-web-app/src/components/Drawer/Drawer.tsx', | |
'/apps/contra-web-app/src/components/Drawer/hooks/useDrawer.ts', | |
'/apps/contra-web-app/src/components/Drawer/NavDrawer/NavDrawer.styles.ts', | |
'/apps/contra-web-app/src/components/Drawer/NavDrawer/NavDrawer.tsx', | |
'/apps/contra-web-app/src/components/Drawer/SlideUpDrawer/SlideUpDrawer.styles.tsx', | |
'/apps/contra-web-app/src/components/Drawer/SlideUpDrawer/SlideUpDrawer.tsx', | |
'/apps/contra-web-app/src/components/Drawer/SlideUpDrawerV2/SlideUpDrawerV2.styles.tsx', | |
'/apps/contra-web-app/src/components/Drawer/SlideUpDrawerV2/SlideUpDrawerV2.tsx', | |
'/apps/contra-web-app/src/components/EditableAvatar/EditableAvatar.styles.tsx', | |
'/apps/contra-web-app/src/components/EditableAvatar/EditableAvatar.tsx', | |
'/apps/contra-web-app/src/components/EditableHeadline/EditableHeadline.tsx', | |
'/apps/contra-web-app/src/components/ExperimentalImage/constants.ts', | |
'/apps/contra-web-app/src/components/ExperimentalImage/Image.styles.ts', | |
'/apps/contra-web-app/src/components/ExperimentalImage/Image.tsx', | |
'/apps/contra-web-app/src/components/ExperimentalImage/utils.ts', | |
'/apps/contra-web-app/src/components/ExternalRedirect/index.tsx', | |
'/apps/contra-web-app/src/components/Footer/constants.tsx', | |
'/apps/contra-web-app/src/components/Footer/Footer.tsx', | |
'/apps/contra-web-app/src/components/GetStartedPage/utils/getOnboardingFlowType.ts', | |
'/apps/contra-web-app/src/components/HelpCard/HelpCard.tsx', | |
'/apps/contra-web-app/src/components/Image/Image.tsx', | |
'/apps/contra-web-app/src/components/IndyPortfolioIconLink/IndyPortfolioIconLink.styles.ts', | |
'/apps/contra-web-app/src/components/IndyPortfolioIconLink/IndyPortfolioIconLink.tsx', | |
'/apps/contra-web-app/src/components/InlineEditContainer/InlineEditContainer.tsx', | |
'/apps/contra-web-app/src/components/InlineFormElement/HoverToEdit.tsx', | |
'/apps/contra-web-app/src/components/InlineFormElement/InlineFormElement.styles.ts', | |
'/apps/contra-web-app/src/components/InlineFormElement/InlineFormElement.tsx', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/components/Col/Col.styles.ts', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/components/Col/Col.tsx', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/components/Row/Row.styles.ts', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/components/Row/Row.tsx', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/constants.ts', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/context.ts', | |
'/apps/contra-web-app/src/components/Layout/components/Flex/Flex.tsx', | |
'/apps/contra-web-app/src/components/Link/index.tsx', | |
'/apps/contra-web-app/src/components/Loader/Loader.tsx', | |
'/apps/contra-web-app/src/components/LocationText/LocationText.styles.ts', | |
'/apps/contra-web-app/src/components/LocationText/LocationText.tsx', | |
'/apps/contra-web-app/src/components/Menu/context.tsx', | |
'/apps/contra-web-app/src/components/Menu/Menu.tsx', | |
'/apps/contra-web-app/src/components/Menu/MenuItem.tsx', | |
'/apps/contra-web-app/src/components/Menu/MenuPanel.tsx', | |
'/apps/contra-web-app/src/components/Menu/MenuReference.tsx', | |
'/apps/contra-web-app/src/components/MountedPortal/MountedPortal.tsx', | |
'/apps/contra-web-app/src/components/Navbar/constants.ts', | |
'/apps/contra-web-app/src/components/Navbar/MobileMenuButton/MobileMenuButton.tsx', | |
'/apps/contra-web-app/src/components/NotFound/NotFound.tsx', | |
'/apps/contra-web-app/src/components/Onboarding/animUtil.ts', | |
'/apps/contra-web-app/src/components/Onboarding/src/OnboardingForm.tsx', | |
'/apps/contra-web-app/src/components/Onboarding/src/OnboardingFormContainer.tsx', | |
'/apps/contra-web-app/src/components/Onboarding/src/OnboardingFormContainerContent.tsx', | |
'/apps/contra-web-app/src/components/Onboarding/src/OnboardingFormContainerHeader.tsx', | |
'/apps/contra-web-app/src/components/OnboardingSuccess/constants.ts', | |
'/apps/contra-web-app/src/components/OnboardingTooltip/OnboardingTooltip.styles.ts', | |
'/apps/contra-web-app/src/components/OnboardingTooltip/OnboardingTooltip.tsx', | |
'/apps/contra-web-app/src/components/OrganizationLogoEmptyState/OrganizationLogoEmptyState.tsx', | |
'/apps/contra-web-app/src/components/OrganizationsList/OrganizationsList.tsx', | |
'/apps/contra-web-app/src/components/PortfolioRedirect/PortfolioRedirect.tsx', | |
'/apps/contra-web-app/src/components/ProfileExternalLink/ProfileExternalLink.tsx', | |
'/apps/contra-web-app/src/components/ProfileExternalLink/ProfileExternalLinkEdit.tsx', | |
'/apps/contra-web-app/src/components/ProfileImageCropper/context/actionTypes.ts', | |
'/apps/contra-web-app/src/components/ProfileImageCropper/HoverCropperButton.tsx', | |
'/apps/contra-web-app/src/components/ProgressTracker/ProgressTracker.styles.ts', | |
'/apps/contra-web-app/src/components/ProgressTracker/ProgressTrackerSection.tsx', | |
'/apps/contra-web-app/src/components/ProjectCover/constants.ts', | |
'/apps/contra-web-app/src/components/ProjectCover/ProjectCover.styles.tsx', | |
'/apps/contra-web-app/src/components/ProjectCover/ProjectCover.tsx', | |
'/apps/contra-web-app/src/components/ProjectCover/ProjectCoverWrapper.tsx', | |
'/apps/contra-web-app/src/components/ProjectCover/utils/getBackgroundStyles.ts', | |
'/apps/contra-web-app/src/components/ProjectServicePublished/hooks/useProjectServicePublished.ts', | |
'/apps/contra-web-app/src/components/ProjectServicePublished/hooks/utils.ts', | |
'/apps/contra-web-app/src/components/ProjectServicePublished/ProjectServicePublished.tsx', | |
'/apps/contra-web-app/src/components/ProjectSquareCard/ProjectSquareCard.tsx', | |
'/apps/contra-web-app/src/components/Redirect/index.tsx', | |
'/apps/contra-web-app/src/components/RedirectToOnboardingModal/useOnboardingRedirection.tsx', | |
'/apps/contra-web-app/src/components/RolesList/RolesList.tsx', | |
'/apps/contra-web-app/src/components/Shapes/Circle.tsx', | |
'/apps/contra-web-app/src/components/Shapes/Cloud.tsx', | |
'/apps/contra-web-app/src/components/Shapes/Rect.tsx', | |
'/apps/contra-web-app/src/components/Shapes/SquareRounded.tsx', | |
'/apps/contra-web-app/src/components/Shapes/Stairs.tsx', | |
'/apps/contra-web-app/src/components/ShareButton/ShareButton.tsx', | |
'/apps/contra-web-app/src/components/SocialMediaIconBanner/SocialMediaIconBanner.tsx', | |
'/apps/contra-web-app/src/components/SocialMediaLink/SocialMediaLinkWithTooltip.tsx', | |
'/apps/contra-web-app/src/components/SortableListView/hooks/actionTypes.ts', | |
'/apps/contra-web-app/src/components/SortableListView/hooks/reducer.ts', | |
'/apps/contra-web-app/src/components/SortableListView/hooks/useSortableListView.ts', | |
'/apps/contra-web-app/src/components/SortableListView/SortableListView.tsx', | |
'/apps/contra-web-app/src/components/SvgGradient/SvgGradient.tsx', | |
'/apps/contra-web-app/src/components/Table/Table.tsx', | |
'/apps/contra-web-app/src/components/Tabs/components/TabButton.tsx', | |
'/apps/contra-web-app/src/components/Tabs/components/TabItem.tsx', | |
'/apps/contra-web-app/src/components/Tabs/components/TabLink.tsx', | |
'/apps/contra-web-app/src/components/Tabs/components/TabList.tsx', | |
'/apps/contra-web-app/src/components/Tabs/context/TabsContext.tsx', | |
'/apps/contra-web-app/src/components/Tabs/hooks/useTabsContext.ts', | |
'/apps/contra-web-app/src/components/Tabs/Tabs.styles.ts', | |
'/apps/contra-web-app/src/components/Tabs/Tabs.tsx', | |
'/apps/contra-web-app/src/components/TextLink/TextLink.styles.tsx', | |
'/apps/contra-web-app/src/components/TextLink/TextLink.tsx', | |
'/apps/contra-web-app/src/components/ThreeColumnForm/PageBackground.tsx', | |
'/apps/contra-web-app/src/components/ThreeColumnForm/Section.tsx', | |
'/apps/contra-web-app/src/components/ThreeColumnForm/ThreeColumnFormLayout.styles.ts', | |
'/apps/contra-web-app/src/components/Toasts/hooks/useDismissToast.ts', | |
'/apps/contra-web-app/src/components/ToolsList/OverflowToolsMenu.tsx', | |
'/apps/contra-web-app/src/components/ToolsList/ToolsList.tsx', | |
'/apps/contra-web-app/src/components/Tooltip/Tooltip.styles.ts', | |
'/apps/contra-web-app/src/components/Tooltip/Tooltip.tsx', | |
'/apps/contra-web-app/src/components/UserAvailabilityModal/hooks/useUserAvailabilityModal.tsx', | |
'/apps/contra-web-app/src/components/YupErrorMessage/YupErrorMessage.tsx', | |
'/apps/contra-web-app/src/constants/company.ts', | |
'/apps/contra-web-app/src/constants/independentPortfolios.ts', | |
'/apps/contra-web-app/src/constants/profile.ts', | |
'/apps/contra-web-app/src/contexts/LastLocationContext/LastLocationContext.tsx', | |
'/apps/contra-web-app/src/contexts/PageContextContext/PageContextContext.tsx', | |
'/apps/contra-web-app/src/contexts/StripeContext/StripeContext.tsx', | |
'/apps/contra-web-app/src/contexts/WindowDimensionsContext/WindowDimensionsContext.tsx', | |
'/apps/contra-web-app/src/features/app/contexts/AppPreloadContext.ts', | |
'/apps/contra-web-app/src/features/paidProjects/components/NewProjectButton/NewProjectButton.tsx', | |
'/apps/contra-web-app/src/features/profile/components/BlankCardMessage/BlankCardMessage.tsx', | |
'/apps/contra-web-app/src/features/profile/components/CreateCard/CreateCard.styles.ts', | |
'/apps/contra-web-app/src/features/profile/components/CreateCard/CreateCard.tsx', | |
'/apps/contra-web-app/src/features/profile/components/NewProfileSidebar/index.ts', | |
'/apps/contra-web-app/src/features/profile/components/TooltipContainer.tsx', | |
'/apps/contra-web-app/src/features/project/components/AuthorBlock/AuthorBlock.tsx', | |
'/apps/contra-web-app/src/features/project/utils/projectCover.ts', | |
'/apps/contra-web-app/src/hooks/useAnalytics.ts', | |
'/apps/contra-web-app/src/hooks/useClickAway.ts', | |
'/apps/contra-web-app/src/hooks/useContraMutation.ts', | |
'/apps/contra-web-app/src/hooks/useCopyToClipboard.ts', | |
'/apps/contra-web-app/src/hooks/useCurrentUser.ts', | |
'/apps/contra-web-app/src/hooks/useDebounceValue.ts', | |
'/apps/contra-web-app/src/hooks/useExactMatch.ts', | |
'/apps/contra-web-app/src/hooks/useFeatureFlag.ts', | |
'/apps/contra-web-app/src/hooks/useHasCompletedProfile.ts', | |
'/apps/contra-web-app/src/hooks/useHasOnboarded.ts', | |
'/apps/contra-web-app/src/hooks/useHasSidebarEnabled.ts', | |
'/apps/contra-web-app/src/hooks/useHasUserGroups.ts', | |
'/apps/contra-web-app/src/hooks/useHasUserInterfaceFlags.ts', | |
'/apps/contra-web-app/src/hooks/useImage.ts', | |
'/apps/contra-web-app/src/hooks/useInteractionTimer.ts', | |
'/apps/contra-web-app/src/hooks/useIsElementVisible.ts', | |
'/apps/contra-web-app/src/hooks/useIsInternalTraffic.ts', | |
'/apps/contra-web-app/src/hooks/useIsMediumScreen.ts', | |
'/apps/contra-web-app/src/hooks/useIsMobile.ts', | |
'/apps/contra-web-app/src/hooks/useIsSmallScreen.ts', | |
'/apps/contra-web-app/src/hooks/useLastLocation.ts', | |
'/apps/contra-web-app/src/hooks/useLinearGradientDetails.ts', | |
'/apps/contra-web-app/src/hooks/useLocation.ts', | |
'/apps/contra-web-app/src/hooks/useMount.ts', | |
'/apps/contra-web-app/src/hooks/useMountedPortal.ts', | |
'/apps/contra-web-app/src/hooks/useOnboardingProgress.ts', | |
'/apps/contra-web-app/src/hooks/useOnElementViewed.ts', | |
'/apps/contra-web-app/src/hooks/usePageContext.ts', | |
'/apps/contra-web-app/src/hooks/usePortfolioLink.ts', | |
'/apps/contra-web-app/src/hooks/useQueryPolling.ts', | |
'/apps/contra-web-app/src/hooks/useRafState.ts', | |
'/apps/contra-web-app/src/hooks/useRegisterAnalyticEvent.ts', | |
'/apps/contra-web-app/src/hooks/useRouteParameter.ts', | |
'/apps/contra-web-app/src/hooks/useRouter.ts', | |
'/apps/contra-web-app/src/hooks/useRoutes.ts', | |
'/apps/contra-web-app/src/hooks/useSearchParameter.ts', | |
'/apps/contra-web-app/src/hooks/useSendAnalyticEventMutation.ts', | |
'/apps/contra-web-app/src/hooks/useStartProjectCopy.ts', | |
'/apps/contra-web-app/src/hooks/useToggle.ts', | |
'/apps/contra-web-app/src/hooks/useTrackInput.ts', | |
'/apps/contra-web-app/src/hooks/useTwistFlow.ts', | |
'/apps/contra-web-app/src/hooks/useUnmount.ts', | |
'/apps/contra-web-app/src/hooks/useUpload.ts', | |
'/apps/contra-web-app/src/hooks/useUserInterfaceFlags.ts', | |
'/apps/contra-web-app/src/hooks/useWindowSize.ts', | |
'/apps/contra-web-app/src/services/file.ts', | |
'/apps/contra-web-app/src/services/storage.ts', | |
'/apps/contra-web-app/src/theme/index.ts', | |
'/apps/contra-web-app/src/theme/theme.ts', | |
'/apps/contra-web-app/src/theme/themeV2.ts', | |
'/apps/contra-web-app/src/types/utils.ts', | |
'/apps/contra-web-app/src/utilities/animation.ts', | |
'/apps/contra-web-app/src/utilities/areArraysEqual.ts', | |
'/apps/contra-web-app/src/utilities/copyToClipboard.ts', | |
'/apps/contra-web-app/src/utilities/experimentalGetContraImageUrl/constants.ts', | |
'/apps/contra-web-app/src/utilities/experimentalGetContraImageUrl/getContraImageUrl.ts', | |
'/apps/contra-web-app/src/utilities/experimentalGetContraImageUrl/utils.ts', | |
'/apps/contra-web-app/src/utilities/formatName.ts', | |
'/apps/contra-web-app/src/utilities/formatUrl.ts', | |
'/apps/contra-web-app/src/utilities/getContraImageUrl.ts', | |
'/apps/contra-web-app/src/utilities/getDefaultFeatureFlags.ts', | |
'/apps/contra-web-app/src/utilities/getIndependentPortfolioUrl.ts', | |
'/apps/contra-web-app/src/utilities/getMutationResponsePayloadErrors.ts', | |
'/apps/contra-web-app/src/utilities/getNextItemsInCyclicalList.ts', | |
'/apps/contra-web-app/src/utilities/hasValidationError.ts', | |
'/apps/contra-web-app/src/utilities/isSlateContent.ts', | |
'/apps/contra-web-app/src/utilities/isTruthy.ts', | |
'/apps/contra-web-app/src/utilities/isValidEmail.ts', | |
'/apps/contra-web-app/src/utilities/isValidPublicUrl.ts', | |
'/apps/contra-web-app/src/utilities/normalizeUsername.ts', | |
'/apps/contra-web-app/src/utilities/removeSearchParameter.ts', | |
'/apps/contra-web-app/src/utilities/shouldRedirectToOnboarding.ts', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@babel/runtime/helpers/esm/extends.js', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js', | |
'/node_modules/.pnpm/@[email protected]_zf7ga3u4zrffjlingb6kh5ipva/node_modules/@hookform/error-message/dist/index.esm.js', | |
'/node_modules/.pnpm/@[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/@react-hookz/web/esm/useClickOutside/useClickOutside.js', | |
'/node_modules/.pnpm/@[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/@react-hookz/web/esm/useIsMounted/useIsMounted.js', | |
'/node_modules/.pnpm/@[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/@react-hookz/web/esm/useSafeState/useSafeState.js', | |
'/node_modules/.pnpm/@[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/@react-hookz/web/esm/useSyncedRef/useSyncedRef.js', | |
'/node_modules/.pnpm/@[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/@react-hookz/web/esm/util/misc.js', | |
'/node_modules/.pnpm/@[email protected]_weqjxr3p5t2q35nshpdpqrergy/node_modules/@stripe/react-stripe-js/dist/react-stripe.esm.js', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@stripe/stripe-js/dist/pure.js', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@stripe/stripe-js/dist/pure.js?commonjs-exports', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@stripe/stripe-js/pure.js', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@stripe/stripe-js/pure.js?commonjs-es-import', | |
'/node_modules/.pnpm/@[email protected]/node_modules/@stripe/stripe-js/pure.js?commonjs-module', | |
'/node_modules/.pnpm/[email protected]/node_modules/classnames/index.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/classnames/index.js?commonjs-module', | |
'/node_modules/.pnpm/[email protected]/node_modules/clsx/dist/clsx.m.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/fast-safe-stringify/index.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/fast-safe-stringify/index.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/invariant/browser.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/invariant/browser.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/load-script/index.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_baseGetTag.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_baseTrim.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_freeGlobal.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_getRawTag.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_objectToString.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_root.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_Symbol.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/_trimmedEndIndex.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/debounce.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/debounce.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/isObject.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/isObjectLike.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/isSymbol.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/now.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/lodash/toNumber.js', | |
'/node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/react-helmet-async/lib/index.module.js', | |
'/node_modules/.pnpm/[email protected]_3stiutgnnbnfnf3uowm5cip22i/node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/react/index.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/relay-runtime/index.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/serialize-error/index.js', | |
'/node_modules/.pnpm/[email protected]/node_modules/serialize-error/index.js?commonjs-es-import', | |
'/node_modules/.pnpm/[email protected]/node_modules/tslib/tslib.es6.js', | |
'/node_modules/.pnpm/[email protected][email protected]/node_modules/use-composed-ref/dist/use-composed-ref.esm.js', | |
'/node_modules/.pnpm/[email protected]_3stiutgnnbnfnf3uowm5cip22i/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js', | |
'/node_modules/.pnpm/[email protected]_3stiutgnnbnfnf3uowm5cip22i/node_modules/use-latest/dist/use-latest.esm.js', | |
'/packages/ui-kit/dist/__generated__/emojis/LightbulbEmoji.js', | |
'/packages/ui-kit/dist/__generated__/emojis/SparklesEmoji.js', | |
'/packages/ui-kit/dist/__generated__/icons/AddIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/AlertCircleIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/AlertTriangleIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ArrowLeftIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ArrowRightIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CalendarIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CameraIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CancelIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CheckIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ChevronDownIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ChevronLeftIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ChevronUpIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ClockIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CloseIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/CopyIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/EditIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ExternalLinkAltIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/EyeOffIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/FilterIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/HeartOutlineIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/HeartSolidIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ImageIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/JobOutlineIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/LinkIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/LocationIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/LockSolidIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/MoreIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/MoveIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/OpportunityOutlineIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/PreferenceIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ProjectOutlineIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SearchIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ServiceOutlineIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/ShareAltIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialInstagramIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialPinterestIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialTiktokIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialTwitterIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialUnidentifiedToolIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SocialYoutubeIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/SparklesIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/TrashIcon.js', | |
'/packages/ui-kit/dist/__generated__/icons/UploadIcon.js', | |
'/packages/ui-kit/dist/__generated__/primitives/colorPrimitives.js', | |
'/packages/ui-kit/dist/__generated__/primitives/textStyles.js', | |
'/packages/ui-kit/dist/theme/breakpoints.js', | |
'/packages/ui-kit/dist/theme/colors.js', | |
'/packages/ui-kit/dist/theme/fonts.js', | |
'/packages/ui-kit/dist/theme/mediaQueries.js', | |
'/packages/ui-kit/dist/theme/theme.js', | |
'/packages/ui-kit/dist/theme/utils.js', | |
]; | |
const { | |
COVERAGE_INSTRUMENT, | |
CWA_BASE_ASSETS_URL, | |
CWA_BASE_SERVER_URL, | |
GENERATE_SOURCEMAP, | |
NODE_ENV, | |
VITEST, | |
} = process.env; | |
if (!NODE_ENV) { | |
throw new Error('Have to set explicit NODE_ENV'); | |
} | |
const DEBUG_ROLLUP_BUILD = process.env.DEBUG_ROLLUP_BUILD === 'true'; | |
if ( | |
NODE_ENV !== 'production' && | |
NODE_ENV !== 'development' && | |
NODE_ENV !== 'test' | |
) { | |
throw new Error( | |
'NODE_ENV value has to be either "production", "development" or "test"', | |
); | |
} | |
export default defineConfig(({ ssrBuild }) => { | |
const plugins = [ | |
dynamicImport({ | |
loose: false, | |
onFiles: (files) => { | |
return files.filter((file) => { | |
return !file.includes('.test.'); | |
}); | |
}, | |
}), | |
react({ | |
babel: { | |
plugins: ['relay'], | |
}, | |
fastRefresh: NODE_ENV === 'development', | |
}), | |
]; | |
if (VITEST !== 'true') { | |
// eslint-disable-next-line no-console | |
console.log('overriding VPS configuration', { | |
baseAssets: CWA_BASE_ASSETS_URL, | |
baseServer: CWA_BASE_SERVER_URL, | |
}); | |
plugins.push( | |
viteCompression({ | |
// This is used mostly to speed up the integration tests. | |
algorithm: 'brotliCompress', | |
}), | |
ssr({ | |
baseAssets: CWA_BASE_ASSETS_URL, | |
baseServer: CWA_BASE_SERVER_URL, | |
}), | |
); | |
} | |
const test: UserConfig['test'] = { | |
clearMocks: true, | |
coverage: { | |
all: true, | |
exclude: [ | |
...configDefaults.exclude, | |
'src/**/__tests__/**', | |
'src/**/__generated__/**', | |
'src/**/types/**', | |
'src/**/constants/**', | |
'src/**/mutations/**', | |
'src/utilities/**.test.ts', | |
'src/config/**', | |
'src/utilities/animation.ts', | |
'src/utilities/testRenderer.tsx', | |
'**/__mocks__/**', | |
'src/createRelayEnvironment.ts', | |
'src/serverRouter.ts', | |
'.eslintrc.js', | |
], | |
include: ['src/**'], | |
provider: 'istanbul', | |
reporter: ['text-summary', 'lcov'], | |
reportsDirectory: './__generated__/coverage', | |
}, | |
// TODO we want to disable this, but currently there are some unhandled errors causing flakiness | |
dangerouslyIgnoreUnhandledErrors: true, | |
environment: 'jsdom', | |
include: [ | |
'./src/**/__tests__/**/*.{js,jsx,ts,tsx}', | |
'./src/**/*.test.{js,jsx,ts,tsx}', | |
], | |
outputFile: './src/__generated__/vitest/results.xml', | |
reporters: ['verbose', 'junit'], | |
setupFiles: './src/setupTests.ts', | |
}; | |
return { | |
build: { | |
commonjsOptions: { | |
include: [/packages/, /node_modules/], | |
strictRequires: true, | |
}, | |
emptyOutDir: true, | |
manifest: true, | |
minify: !DEBUG_ROLLUP_BUILD, | |
modulePreload: { | |
polyfill: false, | |
resolveDependencies: () => { | |
return []; | |
}, | |
}, | |
rollupOptions: { | |
onwarn: (warning) => { | |
if (warning.code === 'CYCLIC_CROSS_CHUNK_REEXPORT') { | |
process.exitCode = 1; | |
} | |
// eslint-disable-next-line no-console | |
console.error('Rollup Warning: ' + warning.message); | |
}, | |
output: { | |
banner: DEBUG_ROLLUP_BUILD | |
? (chunk) => { | |
// This banner helps to identify what gets bundled into each chunk. | |
// https://github.com/rollup/rollup/issues/4850#issuecomment-1429657718 | |
return ( | |
`// @preserve name ${chunk.name}\n` + | |
`// @preserve facadeModuleId ${chunk.facadeModuleId}\n` + | |
chunk.moduleIds | |
.map((moduleId) => { | |
return ( | |
'// @preserve module ' + | |
moduleId | |
.replaceAll( | |
// eslint-disable-next-line no-control-regex | |
/[\u0000-\u001F\u007F-\u009F]/g, | |
'', | |
) | |
.trim() | |
.replace(path.resolve(__dirname, '../..'), '@') | |
); | |
}) | |
.join('\n') | |
); | |
} | |
: undefined, | |
chunkFileNames: (chunk) => { | |
if (chunk.name === 'index' && chunk.moduleIds.length) { | |
const lastModuleId = chunk.moduleIds[chunk.moduleIds.length - 1]; | |
const parentDirectoryName = | |
lastModuleId.match(/\/([^/]+)\/index\./u)?.[1]; | |
// Adding parent directory name to the chunk to make it easier to understand where the chunk originates from. | |
if (parentDirectoryName) { | |
return 'chunk-' + parentDirectoryName + '-[name].[hash].js'; | |
} | |
} | |
return 'chunk-[name].[hash].js'; | |
}, | |
entryFileNames: ssrBuild ? '[name].js' : 'entry-[name].[hash].js', | |
hoistTransitiveImports: !DEBUG_ROLLUP_BUILD, | |
manualChunks: (id) => { | |
for (const smallModuleId of smallModuleIds) { | |
if (id.includes(smallModuleId)) { | |
return 'main'; | |
} | |
} | |
return undefined; | |
}, | |
sourcemap: GENERATE_SOURCEMAP === 'true', | |
}, | |
plugins: [ | |
visualizer({ | |
filename: '__generated__/graph.json', | |
template: 'raw-data', | |
}), | |
...(COVERAGE_INSTRUMENT === 'true' | |
? [ | |
istanbul({ | |
exclude: [ | |
'**/constants/**', | |
'**/types/**', | |
'**/mutations/**', | |
], | |
include: ['src/features/**/**', 'src/pages/**/**'], | |
}), | |
] | |
: []), | |
], | |
treeshake: { | |
preset: 'recommended', | |
}, | |
}, | |
sourcemap: GENERATE_SOURCEMAP === 'true', | |
}, | |
mode: NODE_ENV === 'production' ? 'production' : 'development', | |
optimizeDeps: { | |
include: ['@contra/utilities/hasOwnPropertyAlt', '@contra/money'], | |
}, | |
plugins, | |
resolve: { | |
alias: { | |
'@': path.resolve(__dirname, './src/'), | |
}, | |
}, | |
test, | |
}; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment