chore: release 2.2.69 (PageSpeed optimizations)
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 27s
Build & Deploy / 🚀 Deploy (push) Successful in 34s
Build & Deploy / 🧪 QA (push) Successful in 1m46s
Build & Deploy / 🏗️ Build (push) Successful in 3m38s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 1m19s
Build & Deploy / 🔔 Notify (push) Successful in 5s
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 27s
Build & Deploy / 🚀 Deploy (push) Successful in 34s
Build & Deploy / 🧪 QA (push) Successful in 1m46s
Build & Deploy / 🏗️ Build (push) Successful in 3m38s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 1m19s
Build & Deploy / 🔔 Notify (push) Successful in 5s
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as Sentry from '@sentry/nextjs';
|
|
||||||
import Error from 'next/error';
|
import Error from 'next/error';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
@@ -10,7 +9,9 @@ export default function GlobalError({
|
|||||||
error: Error & { digest?: string };
|
error: Error & { digest?: string };
|
||||||
}) {
|
}) {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Sentry.captureException(error);
|
import('@sentry/nextjs').then((Sentry) => {
|
||||||
|
Sentry.captureException(error);
|
||||||
|
});
|
||||||
}, [error]);
|
}, [error]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
48
bundle-stats.json
Normal file
48
bundle-stats.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
.next/static/chunks/0b521531212fbb38.js
|
||||||
|
.next/static/chunks/0c4bd4931d57e66a.js
|
||||||
|
.next/static/chunks/114976d6e8233fa6.js
|
||||||
|
.next/static/chunks/163f657a16afbe5e.js
|
||||||
|
.next/static/chunks/1c2f1bc547a6b6db.js
|
||||||
|
.next/static/chunks/2583fa7802927c7b.js
|
||||||
|
.next/static/chunks/30da1bf4e9770388.js
|
||||||
|
.next/static/chunks/38b815a6d50481c3.js
|
||||||
|
.next/static/chunks/3dc2f63532eb2144.js
|
||||||
|
.next/static/chunks/3e327b4e2347bc0f.js
|
||||||
|
.next/static/chunks/3ef3cefd2dae1060.js
|
||||||
|
.next/static/chunks/45499dd88f8aa0be.js
|
||||||
|
.next/static/chunks/4b9828b23c1decfd.js
|
||||||
|
.next/static/chunks/4c801febc70daa53.js
|
||||||
|
.next/static/chunks/4d5ea13dba62fe42.js
|
||||||
|
.next/static/chunks/4dffe404993f353e.js
|
||||||
|
.next/static/chunks/4f185d0c413fdb9e.js
|
||||||
|
.next/static/chunks/4f69e8e09eeae4d6.js
|
||||||
|
.next/static/chunks/4fa8be7f170d31f3.js
|
||||||
|
.next/static/chunks/583b451485662887.js
|
||||||
|
.next/static/chunks/5e1e2d5c357c1b57.js
|
||||||
|
.next/static/chunks/6216b234a7a88a60.js
|
||||||
|
.next/static/chunks/651fbbae0062342b.js
|
||||||
|
.next/static/chunks/66a1b90666fc2830.js
|
||||||
|
.next/static/chunks/6c0ddf2fd63ab912.js
|
||||||
|
.next/static/chunks/72cf73de45fde6cf.js
|
||||||
|
.next/static/chunks/75ea3a278c540e05.js
|
||||||
|
.next/static/chunks/77a84d4dc662b7cf.js
|
||||||
|
.next/static/chunks/7c603cfd5a61abd1.js
|
||||||
|
.next/static/chunks/84ddf763fbc98e13.js
|
||||||
|
.next/static/chunks/885c97d656f95ebd.js
|
||||||
|
.next/static/chunks/8d6ae249fcc5e38f.js
|
||||||
|
.next/static/chunks/920f860e909b2eb8.js
|
||||||
|
.next/static/chunks/951d03271d663d8a.js
|
||||||
|
.next/static/chunks/a094276392fca24a.js
|
||||||
|
.next/static/chunks/a2e7fbe3f294caac.js
|
||||||
|
.next/static/chunks/a6c9d757034eb86a.js
|
||||||
|
.next/static/chunks/a6dc76eec9924929.js
|
||||||
|
.next/static/chunks/c3f21c4df538784a.js
|
||||||
|
.next/static/chunks/c641ee8514fa0552.js
|
||||||
|
.next/static/chunks/d8c0ef20e0ad9790.js
|
||||||
|
.next/static/chunks/e60e6d615bf7d2f5.js
|
||||||
|
.next/static/chunks/e714b6ccaf8d5f12.js
|
||||||
|
.next/static/chunks/eeebcf8c8de1a29a.js
|
||||||
|
.next/static/chunks/f0b47c1f19d25fd2.js
|
||||||
|
.next/static/chunks/f8d5b1a2accefb4c.js
|
||||||
|
.next/static/chunks/fa18a72fd9fb11d5.js
|
||||||
|
.next/static/chunks/turbopack-2aac2a40101e9988.js
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
import React, { useEffect, useState, useCallback, useRef } from 'react';
|
import React, { useEffect, useState, useCallback, useRef } from 'react';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
import { m, LazyMotion, AnimatePresence } from 'framer-motion';
|
import { m, AnimatePresence, LazyMotion } from 'framer-motion';
|
||||||
import { useRouter, useSearchParams, usePathname } from 'next/navigation';
|
import { useRouter, useSearchParams, usePathname } from 'next/navigation';
|
||||||
|
|
||||||
interface LightboxProps {
|
interface LightboxProps {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useState, useEffect, useMemo } from "react";
|
import { useState, useEffect, useMemo } from "react";
|
||||||
import { AnimatePresence, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { AnimatePresence, m } from 'framer-motion';
|
||||||
import { MessageSquare, X, Check, Image as ImageIcon, Type, StickyNote, Download, Trash2, List } from "lucide-react";
|
import { MessageSquare, X, Check, Image as ImageIcon, Type, StickyNote, Download, Trash2, List } from "lucide-react";
|
||||||
import { clsx, type ClassValue } from "clsx";
|
import { clsx, type ClassValue } from "clsx";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation, Variants } from 'framer-motion';
|
import { m, Variants } from 'framer-motion';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
import { LogoArcs } from '@/components/ui/LogoArcs';
|
import { LogoArcs } from '@/components/ui/LogoArcs';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { Container } from '@/components/ui/Container';
|
import { Container } from '@/components/ui/Container';
|
||||||
import { Button } from '@/components/ui/Button';
|
import { Button } from '@/components/ui/Button';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { useScroll, useTransform, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useScroll, useTransform, m } from 'framer-motion';
|
||||||
import { Building2, Compass, Layers, ArrowDownToLine, Wrench, Factory, Zap, MapPin, CheckCircle2 } from 'lucide-react';
|
import { Building2, Compass, Layers, ArrowDownToLine, Wrench, Factory, Zap, MapPin, CheckCircle2 } from 'lucide-react';
|
||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { Button } from '@/components/ui/Button';
|
import { Button } from '@/components/ui/Button';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import React, { Suspense } from 'react';
|
|||||||
import { Section, Container } from '@/components/ui';
|
import { Section, Container } from '@/components/ui';
|
||||||
import { ContactForm } from '@/components/forms/ContactForm';
|
import { ContactForm } from '@/components/forms/ContactForm';
|
||||||
import dynamic from 'next/dynamic';
|
import dynamic from 'next/dynamic';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
|
|
||||||
const ContactMap = dynamic(() => import('@/components/ContactMap'), {
|
const ContactMap = dynamic(() => import('@/components/ContactMap'), {
|
||||||
ssr: false,
|
ssr: false,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { useLocale } from 'next-intl';
|
import { useLocale } from 'next-intl';
|
||||||
|
|
||||||
export function DataGridPulse() {
|
export function DataGridPulse() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useRef } from 'react';
|
import React, { useRef } from 'react';
|
||||||
import { useScroll, useTransform, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useScroll, useTransform, m } from 'framer-motion';
|
||||||
import { useLocale } from 'next-intl';
|
import { useLocale } from 'next-intl';
|
||||||
|
|
||||||
export function DeepDrillAnimation() {
|
export function DeepDrillAnimation() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
|
|
||||||
export function GrowthChart() {
|
export function GrowthChart() {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { Badge, Container, Heading } from '@/components/ui';
|
import { Badge, Container, Heading } from '@/components/ui';
|
||||||
import { Button } from '@/components/ui/Button';
|
import { Button } from '@/components/ui/Button';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useState, useRef, useCallback, useMemo } from 'react';
|
import React, { useState, useRef, useCallback, useMemo } from 'react';
|
||||||
import { m, LazyMotion, domAnimation, AnimatePresence } from 'framer-motion';
|
import { m, AnimatePresence } from 'framer-motion';
|
||||||
import { MapPin, CheckCircle2, ArrowUpRight } from 'lucide-react';
|
import { MapPin, CheckCircle2, ArrowUpRight } from 'lucide-react';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import React from 'react';
|
|||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { Button } from '@/components/ui/Button';
|
import { Button } from '@/components/ui/Button';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
|
|
||||||
export interface JobListingBlockProps {
|
export interface JobListingBlockProps {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
@@ -127,7 +127,7 @@ export function ReferencesSlider(props: ReferencesSliderProps) {
|
|||||||
<div className="absolute right-0 top-0 bottom-0 w-16 bg-gradient-to-l from-neutral-dark to-transparent z-20 pointer-events-none" />
|
<div className="absolute right-0 top-0 bottom-0 w-16 bg-gradient-to-l from-neutral-dark to-transparent z-20 pointer-events-none" />
|
||||||
|
|
||||||
{/* Carousel: centered first card with peek on both sides */}
|
{/* Carousel: centered first card with peek on both sides */}
|
||||||
<LazyMotion features={domAnimation}>
|
|
||||||
<div
|
<div
|
||||||
ref={containerRef}
|
ref={containerRef}
|
||||||
onMouseDown={onMouseDown}
|
onMouseDown={onMouseDown}
|
||||||
@@ -189,7 +189,7 @@ export function ReferencesSlider(props: ReferencesSliderProps) {
|
|||||||
})}
|
})}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</LazyMotion>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="container relative z-10 mt-4 flex justify-center">
|
<div className="container relative z-10 mt-4 flex justify-center">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useRef } from 'react';
|
import React, { useRef } from 'react';
|
||||||
import { useScroll, useTransform, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useScroll, useTransform, m } from 'framer-motion';
|
||||||
import { useLocale } from 'next-intl';
|
import { useLocale } from 'next-intl';
|
||||||
|
|
||||||
export function ScaleOfImpact() {
|
export function ScaleOfImpact() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation, Variants } from 'framer-motion';
|
import { m, Variants } from 'framer-motion';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
|
|
||||||
export interface ServicePanelData {
|
export interface ServicePanelData {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation, Variants } from 'framer-motion';
|
import { m, Variants } from 'framer-motion';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import TrackedLink from '@/components/analytics/TrackedLink';
|
import TrackedLink from '@/components/analytics/TrackedLink';
|
||||||
import { getButtonClasses, ButtonOverlay } from '@/components/ui/Button';
|
import { getButtonClasses, ButtonOverlay } from '@/components/ui/Button';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
|
|
||||||
export interface SupportCTAProps {
|
export interface SupportCTAProps {
|
||||||
title: string;
|
title: string;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useRef, useEffect } from 'react';
|
import React, { useRef, useEffect } from 'react';
|
||||||
import { useScroll, useTransform, useSpring, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useScroll, useTransform, useSpring, m } from 'framer-motion';
|
||||||
import { LogoArcs } from '@/components/ui/LogoArcs';
|
import { LogoArcs } from '@/components/ui/LogoArcs';
|
||||||
|
|
||||||
function MagneticRing({
|
function MagneticRing({
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
|
|
||||||
export function EUFundingBadge() {
|
export function EUFundingBadge() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { m, LazyMotion, domAnimation } from 'framer-motion';
|
import { m } from 'framer-motion';
|
||||||
import { Button } from '@/components/ui/Button';
|
import { Button } from '@/components/ui/Button';
|
||||||
import { sendContactFormAction } from '@/app/actions/contact';
|
import { sendContactFormAction } from '@/app/actions/contact';
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { TransitionLink } from '@/components/ui/TransitionLink';
|
import { TransitionLink } from '@/components/ui/TransitionLink';
|
||||||
import { Home, Layers, Star, Mail, Menu } from 'lucide-react';
|
import { Home, Layers, Star, Mail, Menu } from 'lucide-react';
|
||||||
import { m, LazyMotion, domAnimation, AnimatePresence } from 'framer-motion';
|
import { m, AnimatePresence } from 'framer-motion';
|
||||||
|
|
||||||
export interface NavLink {
|
export interface NavLink {
|
||||||
label: string;
|
label: string;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { m, LazyMotion, domAnimation, AnimatePresence } from 'framer-motion';
|
import { m, AnimatePresence } from 'framer-motion';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { m, LazyMotion, domAnimation, AnimatePresence } from 'framer-motion';
|
import { m, AnimatePresence } from 'framer-motion';
|
||||||
import { useTransition } from './TransitionProvider';
|
import { useTransition } from './TransitionProvider';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { useMotionValue, useTransform, animate, useInView, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useMotionValue, useTransform, animate, useInView, m } from 'framer-motion';
|
||||||
|
|
||||||
interface AnimatedCounterProps {
|
interface AnimatedCounterProps {
|
||||||
value: number;
|
value: number;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useInView, m, LazyMotion, domAnimation } from 'framer-motion';
|
import { useInView, m } from 'framer-motion';
|
||||||
import { useRef } from 'react';
|
import { useRef } from 'react';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import withMintelConfig from '@mintel/next-config';
|
import { baseNextConfig } from '@mintel/next-config';
|
||||||
import withBundleAnalyzer from '@next/bundle-analyzer';
|
import withBundleAnalyzer from '@next/bundle-analyzer';
|
||||||
import { withSentryConfig } from '@sentry/nextjs';
|
import { withSentryConfig } from '@sentry/nextjs';
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@ const nextConfig = {
|
|||||||
pagesBufferLength: 2,
|
pagesBufferLength: 2,
|
||||||
},
|
},
|
||||||
experimental: {
|
experimental: {
|
||||||
|
optimizeCss: true,
|
||||||
staleTimes: {
|
staleTimes: {
|
||||||
dynamic: 0,
|
dynamic: 0,
|
||||||
static: 30,
|
static: 30,
|
||||||
@@ -547,14 +548,68 @@ const withAnalyzer = withBundleAnalyzer({
|
|||||||
enabled: process.env.ANALYZE === 'true',
|
enabled: process.env.ANALYZE === 'true',
|
||||||
});
|
});
|
||||||
|
|
||||||
// withMintelConfig internally sets output:'standalone' and wraps with withSentryConfig.
|
|
||||||
// In dev mode, standalone triggers @vercel/nft file tracing on every compile through
|
// In dev mode, standalone triggers @vercel/nft file tracing on every compile through
|
||||||
// VirtioFS, which hammers CPU. Strip it for dev.
|
// VirtioFS, which hammers CPU. Strip it for dev.
|
||||||
const withMDX = createMDX({});
|
const withMDX = createMDX({});
|
||||||
let resolvedConfig = withMDX(withAnalyzer(withMintelConfig(nextConfig)));
|
let resolvedConfig = withMDX(withAnalyzer(nextConfig));
|
||||||
|
|
||||||
|
// Apply next-intl manually (bypassing withMintelConfig to control Sentry)
|
||||||
|
import createNextIntlPlugin from 'next-intl/plugin';
|
||||||
|
const withNextIntl = createNextIntlPlugin();
|
||||||
|
resolvedConfig = withNextIntl(resolvedConfig);
|
||||||
|
|
||||||
|
resolvedConfig = withSentryConfig(
|
||||||
|
resolvedConfig,
|
||||||
|
{
|
||||||
|
silent: !process.env.CI,
|
||||||
|
treeshake: { removeDebugLogging: true },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disableClientWebpackPlugin: true,
|
||||||
|
autoInstrumentServerFunctions: false,
|
||||||
|
autoInstrumentMiddleware: false,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Manually merge baseNextConfig properties
|
||||||
|
const finalConfig = {
|
||||||
|
...baseNextConfig,
|
||||||
|
...resolvedConfig,
|
||||||
|
images: {
|
||||||
|
...baseNextConfig.images,
|
||||||
|
...(resolvedConfig.images || {}),
|
||||||
|
remotePatterns: [
|
||||||
|
...(baseNextConfig.images?.remotePatterns || []),
|
||||||
|
...(resolvedConfig.images?.remotePatterns || [])
|
||||||
|
]
|
||||||
|
},
|
||||||
|
rewrites: async () => {
|
||||||
|
let baseRewrites = [];
|
||||||
|
if (typeof baseNextConfig.rewrites === 'function') {
|
||||||
|
baseRewrites = await baseNextConfig.rewrites();
|
||||||
|
}
|
||||||
|
let configRewrites = { beforeFiles: [], fallback: [], afterFiles: [] };
|
||||||
|
if (typeof resolvedConfig.rewrites === 'function') {
|
||||||
|
const res = await resolvedConfig.rewrites();
|
||||||
|
if (Array.isArray(res)) {
|
||||||
|
configRewrites.fallback = res;
|
||||||
|
} else {
|
||||||
|
configRewrites = res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
beforeFiles: configRewrites.beforeFiles || [],
|
||||||
|
fallback: [
|
||||||
|
...(configRewrites.fallback || []),
|
||||||
|
...baseRewrites
|
||||||
|
],
|
||||||
|
afterFiles: configRewrites.afterFiles || []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (!isProd) {
|
if (!isProd) {
|
||||||
delete resolvedConfig.output;
|
delete finalConfig.output;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default resolvedConfig;
|
export default finalConfig;
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
"prepare": "husky",
|
"prepare": "husky",
|
||||||
"preinstall": "npx only-allow pnpm"
|
"preinstall": "npx only-allow pnpm"
|
||||||
},
|
},
|
||||||
"version": "2.2.68",
|
"version": "2.2.69",
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
"@parcel/watcher",
|
"@parcel/watcher",
|
||||||
|
|||||||
Reference in New Issue
Block a user