Upgrade frontend toolchain to latest majors
Bump React 19.2, Relay 21, React Router 8, Vite 8 with @vitejs/plugin-react 6, ESLint 10, GraphQL 17, TypeScript 6, @types/node 24, and Tailwind 4.3 across the workspaces. vite-plugin-react 6 (Vite 8) no longer runs Babel, so the Relay tagged-template transform now runs through @rolldown/plugin-babel in the console and trust Vite configs. Relay 21 ships first-party types and enables the ambiguous-alias check by default; disable that flag to preserve existing queries and add explicit usePreloadedQuery type arguments where the new types no longer infer the operation. TypeScript 6 deprecations and stricter inference are addressed in tsconfigs and call sites. Keep n8n-node on ESLint 9 and eslint-plugin-react on 7.37.5, the newest releases compatible with their toolchains. Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
// PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
import { formatDate, formatError, type GraphQLError, sprintf } from "@probo/helpers";
|
||||
import { formatDate, formatError, sprintf } from "@probo/helpers";
|
||||
import { useList } from "@probo/hooks";
|
||||
import { useTranslate } from "@probo/i18n";
|
||||
import {
|
||||
@@ -199,7 +199,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
const organizationId = useOrganizationId();
|
||||
const navigate = useNavigate();
|
||||
const environment = useRelayEnvironment();
|
||||
const data = usePreloadedQuery(campaignDetailPageQuery, queryRef);
|
||||
const data = usePreloadedQuery<CampaignDetailPageQuery>(campaignDetailPageQuery, queryRef);
|
||||
|
||||
if (data.node.__typename !== "AccessReviewCampaign") {
|
||||
throw new Error("Campaign not found");
|
||||
@@ -269,7 +269,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to start campaign"),
|
||||
errors as GraphQLError[],
|
||||
errors,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -286,7 +286,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to start campaign"),
|
||||
error as GraphQLError,
|
||||
error,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -315,7 +315,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to delete campaign"),
|
||||
errors as GraphQLError[],
|
||||
errors,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -335,7 +335,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to delete campaign"),
|
||||
error as GraphQLError,
|
||||
error,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -368,7 +368,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to complete campaign"),
|
||||
errors as GraphQLError[],
|
||||
errors,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -387,7 +387,7 @@ export default function CampaignDetailPage({ queryRef }: Props) {
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to complete campaign"),
|
||||
error as GraphQLError,
|
||||
error,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -524,7 +524,7 @@ function CampaignSourceCard({ source, isPendingActions }: { source: CampaignSour
|
||||
input: {
|
||||
decisions: selection.map(id => ({
|
||||
accessReviewEntryId: id,
|
||||
decision: "APPROVED" as AccessReviewEntryDecision,
|
||||
decision: "APPROVED",
|
||||
})),
|
||||
},
|
||||
},
|
||||
@@ -534,7 +534,7 @@ function CampaignSourceCard({ source, isPendingActions }: { source: CampaignSour
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to record decisions"),
|
||||
errors as GraphQLError[],
|
||||
errors,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -552,7 +552,7 @@ function CampaignSourceCard({ source, isPendingActions }: { source: CampaignSour
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to record decisions"),
|
||||
error as GraphQLError,
|
||||
error,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -877,7 +877,7 @@ function CampaignSourceCard({ source, isPendingActions }: { source: CampaignSour
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to record decisions"),
|
||||
errors as GraphQLError[],
|
||||
errors,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
@@ -898,7 +898,7 @@ function CampaignSourceCard({ source, isPendingActions }: { source: CampaignSour
|
||||
title: __("Error"),
|
||||
description: formatError(
|
||||
__("Failed to record decisions"),
|
||||
error as GraphQLError,
|
||||
error,
|
||||
),
|
||||
variant: "error",
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user