mirror of
https://github.com/element-hq/matrix-authentication-service.git
synced 2026-06-06 13:22:30 +00:00
Bump most frontend dependencies (#5699)
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@actions/github-script": "github:actions/github-script",
|
||||
"typescript": "^5.9.3"
|
||||
"typescript": "^6.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
+38
-38
@@ -22,64 +22,64 @@
|
||||
"@fontsource/inter": "^5.2.8",
|
||||
"@radix-ui/react-collapsible": "^1.1.12",
|
||||
"@radix-ui/react-dialog": "^1.1.15",
|
||||
"@tanstack/react-query": "^5.97.0",
|
||||
"@tanstack/react-router": "^1.168.10",
|
||||
"@tanstack/react-query": "^5.100.14",
|
||||
"@tanstack/react-router": "^1.170.8",
|
||||
"@vector-im/compound-design-tokens": "6.10.1",
|
||||
"@vector-im/compound-web": "^8.3.5",
|
||||
"@zxcvbn-ts/core": "^3.0.4",
|
||||
"@zxcvbn-ts/language-common": "^3.0.4",
|
||||
"classnames": "^2.5.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"i18next": "^26.0.4",
|
||||
"react": "^19.2.4",
|
||||
"react-dom": "^19.2.4",
|
||||
"react-i18next": "^17.0.2",
|
||||
"swagger-ui-dist": "^5.31.0",
|
||||
"valibot": "^1.2.0",
|
||||
"date-fns": "^4.3.0",
|
||||
"i18next": "^26.2.0",
|
||||
"react": "^19.2.6",
|
||||
"react-dom": "^19.2.6",
|
||||
"react-i18next": "^17.0.8",
|
||||
"swagger-ui-dist": "^5.32.6",
|
||||
"valibot": "^1.4.0",
|
||||
"vaul": "^1.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^2.4.2",
|
||||
"@biomejs/biome": "^2.4.15",
|
||||
"@browser-logos/chrome": "^2.0.0",
|
||||
"@browser-logos/firefox": "^3.0.10",
|
||||
"@browser-logos/safari": "^2.1.0",
|
||||
"@graphql-codegen/cli": "^6.2.1",
|
||||
"@graphql-codegen/client-preset": "^5.2.3",
|
||||
"@graphql-codegen/typescript-msw": "^4.0.0",
|
||||
"@graphql-codegen/cli": "^7.0.0",
|
||||
"@graphql-codegen/client-preset": "^6.0.0",
|
||||
"@graphql-codegen/typescript-msw": "^4.0.1",
|
||||
"@graphql-typed-document-node/core": "^3.2.0",
|
||||
"@storybook/addon-docs": "^10.3.5",
|
||||
"@storybook/react-vite": "^10.3.5",
|
||||
"@tanstack/react-query-devtools": "^5.97.0",
|
||||
"@tanstack/react-router-devtools": "^1.166.11",
|
||||
"@tanstack/router-plugin": "^1.167.12",
|
||||
"@storybook/addon-docs": "^10.4.1",
|
||||
"@storybook/react-vite": "^10.4.1",
|
||||
"@tanstack/react-query-devtools": "^5.100.14",
|
||||
"@tanstack/react-router-devtools": "^1.167.0",
|
||||
"@tanstack/router-plugin": "^1.168.11",
|
||||
"@testing-library/jest-dom": "^6.9.1",
|
||||
"@testing-library/react": "^16.3.1",
|
||||
"@testing-library/react": "^16.3.2",
|
||||
"@testing-library/user-event": "^14.6.1",
|
||||
"@types/node": "^25.3.0",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/node": "^25.9.1",
|
||||
"@types/react": "19.2.15",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@types/swagger-ui-dist": "^3.30.6",
|
||||
"@vitejs/plugin-react": "^6.0.1",
|
||||
"@vitest/coverage-v8": "^4.1.3",
|
||||
"autoprefixer": "^10.4.23",
|
||||
"@vitejs/plugin-react": "^6.0.2",
|
||||
"@vitest/coverage-v8": "^4.1.7",
|
||||
"autoprefixer": "^10.5.0",
|
||||
"browserslist-to-esbuild": "^2.1.1",
|
||||
"graphql": "^16.12.0",
|
||||
"happy-dom": "^20.8.9",
|
||||
"i18next-cli": "^1.51.7",
|
||||
"knip": "^5.81.0",
|
||||
"msw": "^2.12.8",
|
||||
"msw-storybook-addon": "^2.0.6",
|
||||
"postcss": "^8.5.12",
|
||||
"graphql": "^16.14.0",
|
||||
"happy-dom": "^20.9.0",
|
||||
"i18next-cli": "^1.58.0",
|
||||
"knip": "^6.14.2",
|
||||
"msw": "^2.14.6",
|
||||
"msw-storybook-addon": "^2.0.7",
|
||||
"postcss": "^8.5.15",
|
||||
"postcss-import": "^16.1.1",
|
||||
"postcss-nesting": "^14.0.0",
|
||||
"rimraf": "^6.1.2",
|
||||
"storybook": "^10.1.11",
|
||||
"rimraf": "^6.1.3",
|
||||
"storybook": "^10.4.1",
|
||||
"tailwindcss": "^3.4.19",
|
||||
"tinyglobby": "^0.2.15",
|
||||
"typescript": "^5.9.3",
|
||||
"vite": "8.0.0",
|
||||
"vite-plugin-graphql-codegen": "^3.8.0",
|
||||
"vitest": "^4.0.15"
|
||||
"tinyglobby": "^0.2.16",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "8.0.14",
|
||||
"vite-plugin-graphql-codegen": "^3.9.1",
|
||||
"vitest": "^4.1.7"
|
||||
},
|
||||
"msw": {
|
||||
"workerDirectory": [
|
||||
|
||||
@@ -22,6 +22,7 @@ describe("<OAuth2ClientDetail>", () => {
|
||||
clientName: "Test Client",
|
||||
clientUri: "https://client.org/logo.png",
|
||||
tosUri: "https://client.org/tos",
|
||||
logoUri: null,
|
||||
policyUri: "https://client.org/policy",
|
||||
redirectUris: ["https://client.org/"],
|
||||
};
|
||||
@@ -38,7 +39,7 @@ describe("<OAuth2ClientDetail>", () => {
|
||||
const data = makeFragmentData(
|
||||
{
|
||||
...baseClient,
|
||||
tosUri: undefined,
|
||||
tosUri: null,
|
||||
},
|
||||
OAUTH2_CLIENT_FRAGMENT,
|
||||
);
|
||||
@@ -52,7 +53,7 @@ describe("<OAuth2ClientDetail>", () => {
|
||||
const data = makeFragmentData(
|
||||
{
|
||||
...baseClient,
|
||||
logoUri: undefined,
|
||||
logoUri: null,
|
||||
},
|
||||
OAUTH2_CLIENT_FRAGMENT,
|
||||
);
|
||||
|
||||
@@ -17,7 +17,11 @@ describe("<CompatSession />", () => {
|
||||
id: "session-id",
|
||||
deviceId: "abcd1234",
|
||||
createdAt: "2023-06-29T03:35:17.451292+00:00",
|
||||
finishedAt: null,
|
||||
lastActiveIp: "1.2.3.4",
|
||||
lastActiveAt: null,
|
||||
humanName: null,
|
||||
userAgent: null,
|
||||
ssoLogin: {
|
||||
id: "test-id",
|
||||
redirectUri: "https://element.io/",
|
||||
|
||||
@@ -11,9 +11,9 @@ import { makeFragmentData } from "../../gql";
|
||||
import Footer, { FRAGMENT } from "./Footer";
|
||||
|
||||
const Template: React.FC<{
|
||||
tosUri?: string;
|
||||
policyUri?: string;
|
||||
imprint?: string;
|
||||
tosUri: string | null;
|
||||
policyUri: string | null;
|
||||
imprint: string | null;
|
||||
}> = ({ tosUri, policyUri, imprint }) => (
|
||||
<Footer
|
||||
siteConfig={makeFragmentData(
|
||||
|
||||
@@ -19,12 +19,17 @@ describe("<OAuth2Session />", () => {
|
||||
scope:
|
||||
"openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:abcd1234",
|
||||
createdAt: "2023-06-29T03:35:17.451292+00:00",
|
||||
finishedAt: null,
|
||||
lastActiveIp: "1.2.3.4",
|
||||
lastActiveAt: null,
|
||||
userAgent: null,
|
||||
humanName: null,
|
||||
client: {
|
||||
id: "test-id",
|
||||
clientId: "test-client-id",
|
||||
clientName: "Element",
|
||||
clientUri: "https://element.io",
|
||||
logoUri: null,
|
||||
applicationType: "WEB" as Oauth2ApplicationType,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -22,6 +22,7 @@ describe("<CompatSessionDetail>", () => {
|
||||
lastActiveIp: "1.2.3.4",
|
||||
lastActiveAt: "2023-07-29T03:35:17.451292+00:00",
|
||||
userAgent: null,
|
||||
humanName: null,
|
||||
ssoLogin: {
|
||||
id: "test-id",
|
||||
redirectUri: "https://element.io",
|
||||
|
||||
@@ -23,6 +23,7 @@ describe("<OAuth2SessionDetail>", () => {
|
||||
lastActiveAt: "2023-07-29T03:35:17.451292+00:00",
|
||||
lastActiveIp: "1.2.3.4",
|
||||
userAgent: null,
|
||||
humanName: null,
|
||||
client: {
|
||||
id: "test-id",
|
||||
clientId: "test-client-id",
|
||||
|
||||
@@ -12,7 +12,7 @@ import UserGreeting, { CONFIG_FRAGMENT, FRAGMENT } from "./UserGreeting";
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
const Template: React.FC<{
|
||||
displayName?: string;
|
||||
displayName: string | null;
|
||||
mxid: string;
|
||||
displayNameChangeAllowed: boolean;
|
||||
}> = ({ displayName, mxid, displayNameChangeAllowed }) => {
|
||||
|
||||
+127
-1663
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,6 @@
|
||||
// You should NOT make any changes in this file as it will be overwritten.
|
||||
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
||||
|
||||
import type { CreateFileRoute, FileRoutesByPath } from '@tanstack/react-router'
|
||||
|
||||
import { Route as rootRouteImport } from './routes/__root'
|
||||
import { Route as ResetCrossSigningRouteImport } from './routes/reset-cross-signing'
|
||||
import { Route as AccountRouteImport } from './routes/_account'
|
||||
@@ -365,160 +363,6 @@ declare module '@tanstack/react-router' {
|
||||
}
|
||||
}
|
||||
|
||||
declare module './routes/_account' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/_account',
|
||||
FileRoutesByPath['/_account']['parentRoute'],
|
||||
FileRoutesByPath['/_account']['id'],
|
||||
FileRoutesByPath['/_account']['path'],
|
||||
FileRoutesByPath['/_account']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/reset-cross-signing' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/reset-cross-signing',
|
||||
FileRoutesByPath['/reset-cross-signing']['parentRoute'],
|
||||
FileRoutesByPath['/reset-cross-signing']['id'],
|
||||
FileRoutesByPath['/reset-cross-signing']['path'],
|
||||
FileRoutesByPath['/reset-cross-signing']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/clients.$id' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/clients/$id',
|
||||
FileRoutesByPath['/clients/$id']['parentRoute'],
|
||||
FileRoutesByPath['/clients/$id']['id'],
|
||||
FileRoutesByPath['/clients/$id']['path'],
|
||||
FileRoutesByPath['/clients/$id']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/devices.$' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/devices/$',
|
||||
FileRoutesByPath['/devices/$']['parentRoute'],
|
||||
FileRoutesByPath['/devices/$']['id'],
|
||||
FileRoutesByPath['/devices/$']['path'],
|
||||
FileRoutesByPath['/devices/$']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/reset-cross-signing.cancelled' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/reset-cross-signing/cancelled',
|
||||
FileRoutesByPath['/reset-cross-signing/cancelled']['parentRoute'],
|
||||
FileRoutesByPath['/reset-cross-signing/cancelled']['id'],
|
||||
FileRoutesByPath['/reset-cross-signing/cancelled']['path'],
|
||||
FileRoutesByPath['/reset-cross-signing/cancelled']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/reset-cross-signing.success' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/reset-cross-signing/success',
|
||||
FileRoutesByPath['/reset-cross-signing/success']['parentRoute'],
|
||||
FileRoutesByPath['/reset-cross-signing/success']['id'],
|
||||
FileRoutesByPath['/reset-cross-signing/success']['path'],
|
||||
FileRoutesByPath['/reset-cross-signing/success']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/sessions.$id' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/sessions/$id',
|
||||
FileRoutesByPath['/sessions/$id']['parentRoute'],
|
||||
FileRoutesByPath['/sessions/$id']['id'],
|
||||
FileRoutesByPath['/sessions/$id']['path'],
|
||||
FileRoutesByPath['/sessions/$id']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/_account.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/_account/',
|
||||
FileRoutesByPath['/_account/']['parentRoute'],
|
||||
FileRoutesByPath['/_account/']['id'],
|
||||
FileRoutesByPath['/_account/']['path'],
|
||||
FileRoutesByPath['/_account/']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/reset-cross-signing.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/reset-cross-signing/',
|
||||
FileRoutesByPath['/reset-cross-signing/']['parentRoute'],
|
||||
FileRoutesByPath['/reset-cross-signing/']['id'],
|
||||
FileRoutesByPath['/reset-cross-signing/']['path'],
|
||||
FileRoutesByPath['/reset-cross-signing/']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/_account.sessions.browsers' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/_account/sessions/browsers',
|
||||
FileRoutesByPath['/_account/sessions/browsers']['parentRoute'],
|
||||
FileRoutesByPath['/_account/sessions/browsers']['id'],
|
||||
FileRoutesByPath['/_account/sessions/browsers']['path'],
|
||||
FileRoutesByPath['/_account/sessions/browsers']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/emails.$id.in-use' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/emails/$id/in-use',
|
||||
FileRoutesByPath['/emails/$id/in-use']['parentRoute'],
|
||||
FileRoutesByPath['/emails/$id/in-use']['id'],
|
||||
FileRoutesByPath['/emails/$id/in-use']['path'],
|
||||
FileRoutesByPath['/emails/$id/in-use']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/emails.$id.verify' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/emails/$id/verify',
|
||||
FileRoutesByPath['/emails/$id/verify']['parentRoute'],
|
||||
FileRoutesByPath['/emails/$id/verify']['id'],
|
||||
FileRoutesByPath['/emails/$id/verify']['path'],
|
||||
FileRoutesByPath['/emails/$id/verify']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/password.change.success' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/password/change/success',
|
||||
FileRoutesByPath['/password/change/success']['parentRoute'],
|
||||
FileRoutesByPath['/password/change/success']['id'],
|
||||
FileRoutesByPath['/password/change/success']['path'],
|
||||
FileRoutesByPath['/password/change/success']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/_account.plan.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/_account/plan/',
|
||||
FileRoutesByPath['/_account/plan/']['parentRoute'],
|
||||
FileRoutesByPath['/_account/plan/']['id'],
|
||||
FileRoutesByPath['/_account/plan/']['path'],
|
||||
FileRoutesByPath['/_account/plan/']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/_account.sessions.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/_account/sessions/',
|
||||
FileRoutesByPath['/_account/sessions/']['parentRoute'],
|
||||
FileRoutesByPath['/_account/sessions/']['id'],
|
||||
FileRoutesByPath['/_account/sessions/']['path'],
|
||||
FileRoutesByPath['/_account/sessions/']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/password.change.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/password/change/',
|
||||
FileRoutesByPath['/password/change/']['parentRoute'],
|
||||
FileRoutesByPath['/password/change/']['id'],
|
||||
FileRoutesByPath['/password/change/']['path'],
|
||||
FileRoutesByPath['/password/change/']['fullPath']
|
||||
>
|
||||
}
|
||||
declare module './routes/password.recovery.index' {
|
||||
const createFileRoute: CreateFileRoute<
|
||||
'/password/recovery/',
|
||||
FileRoutesByPath['/password/recovery/']['parentRoute'],
|
||||
FileRoutesByPath['/password/recovery/']['id'],
|
||||
FileRoutesByPath['/password/recovery/']['path'],
|
||||
FileRoutesByPath['/password/recovery/']['fullPath']
|
||||
>
|
||||
}
|
||||
|
||||
interface AccountRouteChildren {
|
||||
AccountIndexRoute: typeof AccountIndexRoute
|
||||
AccountSessionsBrowsersRoute: typeof AccountSessionsBrowsersRoute
|
||||
|
||||
@@ -40,8 +40,8 @@ export const Route = createRootRouteWithContext<{
|
||||
</>
|
||||
),
|
||||
|
||||
loader({ context }) {
|
||||
context.queryClient.ensureQueryData(query);
|
||||
async loader({ context }) {
|
||||
await context.queryClient.prefetchQuery(query);
|
||||
},
|
||||
|
||||
errorComponent: ErrorComponent,
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound, redirect, useNavigate } from "@tanstack/react-router";
|
||||
import {
|
||||
createFileRoute,
|
||||
notFound,
|
||||
redirect,
|
||||
useNavigate,
|
||||
} from "@tanstack/react-router";
|
||||
import IconSignOut from "@vector-im/compound-design-tokens/assets/web/icons/sign-out";
|
||||
import { Button, Text } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -100,7 +105,7 @@ const actionSchema = v.variant("action", [
|
||||
),
|
||||
]);
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/_account/")({
|
||||
validateSearch: actionSchema,
|
||||
|
||||
beforeLoad({ search }) {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { Navigate, redirect } from "@tanstack/react-router";
|
||||
import { createFileRoute, Navigate, redirect } from "@tanstack/react-router";
|
||||
import { useCallback, useEffect, useMemo, useRef } from "react";
|
||||
import { preload } from "react-dom";
|
||||
import { graphql } from "../gql";
|
||||
@@ -23,7 +23,7 @@ export const query = queryOptions({
|
||||
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/_account/plan/")({
|
||||
loader: async ({ context }) => {
|
||||
const {
|
||||
siteConfig: { planManagementIframeUri },
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound } from "@tanstack/react-router";
|
||||
import { H5 } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import * as v from "valibot";
|
||||
@@ -93,7 +93,7 @@ const searchSchema = v.intersect([
|
||||
anyPaginationSchema,
|
||||
]);
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/_account/sessions/browsers")({
|
||||
validateSearch: searchSchema,
|
||||
|
||||
loaderDeps: ({ search: { inactive, ...pagination } }) => ({
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound } from "@tanstack/react-router";
|
||||
import IconInfo from "@vector-im/compound-design-tokens/assets/web/icons/info";
|
||||
import { Alert, H3, H4, Tooltip } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -122,7 +122,7 @@ const searchSchema = v.intersect([
|
||||
anyPaginationSchema,
|
||||
]);
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/_account/sessions/")({
|
||||
validateSearch: searchSchema,
|
||||
|
||||
loaderDeps: ({ search: { inactive, ...pagination } }) => ({
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound, Outlet } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound, Outlet } from "@tanstack/react-router";
|
||||
import { Heading, Tooltip } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Layout from "../components/Layout";
|
||||
@@ -44,7 +44,7 @@ const query = queryOptions({
|
||||
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/_account")({
|
||||
loader: ({ context }) => context.queryClient.ensureQueryData(query),
|
||||
component: Account,
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound } from "@tanstack/react-router";
|
||||
import OAuth2ClientDetail from "../components/Client/OAuth2ClientDetail";
|
||||
import Layout from "../components/Layout";
|
||||
import { graphql } from "../gql";
|
||||
@@ -26,7 +26,7 @@ const query = (id: string) =>
|
||||
graphqlRequest({ query: QUERY, variables: { id }, signal }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/clients/$id")({
|
||||
loader: ({ context, params }) =>
|
||||
context.queryClient.ensureQueryData(query(params.id)),
|
||||
component: ClientDetail,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions } from "@tanstack/react-query";
|
||||
import { notFound, redirect } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound, redirect } from "@tanstack/react-router";
|
||||
import { Alert } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Layout from "../components/Layout";
|
||||
@@ -55,7 +55,7 @@ const query = (deviceId: string, userId: string) =>
|
||||
}),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/devices/$")({
|
||||
async loader({ context, params }) {
|
||||
const data = await context.queryClient.fetchQuery(currentViewerQuery);
|
||||
if (data.viewer.__typename !== "User")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound, redirect } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound, redirect } from "@tanstack/react-router";
|
||||
import IconArrowLeft from "@vector-im/compound-design-tokens/assets/web/icons/arrow-left";
|
||||
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -13,7 +13,7 @@ import Layout from "../components/Layout";
|
||||
import PageHeading from "../components/PageHeading";
|
||||
import { query } from "./emails.$id.verify";
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/emails/$id/in-use")({
|
||||
async loader({ context, params }): Promise<void> {
|
||||
const data = await context.queryClient.ensureQueryData(query(params.id));
|
||||
if (!data.userEmailAuthentication) {
|
||||
|
||||
@@ -10,7 +10,12 @@ import {
|
||||
useQueryClient,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import { notFound, redirect, useNavigate } from "@tanstack/react-router";
|
||||
import {
|
||||
createFileRoute,
|
||||
notFound,
|
||||
redirect,
|
||||
useNavigate,
|
||||
} from "@tanstack/react-router";
|
||||
import IconArrowLeft from "@vector-im/compound-design-tokens/assets/web/icons/arrow-left";
|
||||
import IconSend from "@vector-im/compound-design-tokens/assets/web/icons/send-solid";
|
||||
import { Alert, Button, Form } from "@vector-im/compound-web";
|
||||
@@ -56,7 +61,7 @@ export const query = (id: string) =>
|
||||
graphqlRequest({ query: QUERY, signal, variables: { id } }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/emails/$id/verify")({
|
||||
async loader({ context, params }): Promise<void> {
|
||||
const data = await context.queryClient.ensureQueryData(query(params.id));
|
||||
if (!data.userEmailAuthentication) {
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
useMutation,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import { notFound, useRouter } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound, useRouter } from "@tanstack/react-router";
|
||||
import IconLockSolid from "@vector-im/compound-design-tokens/assets/web/icons/lock-solid";
|
||||
import { Alert, Form } from "@vector-im/compound-web";
|
||||
import { type FormEvent, useRef } from "react";
|
||||
@@ -62,7 +62,7 @@ const query = queryOptions({
|
||||
queryFn: ({ signal }) => graphqlRequest({ query: QUERY, signal }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/password/change/")({
|
||||
loader: ({ context }) => context.queryClient.ensureQueryData(query),
|
||||
component: ChangePassword,
|
||||
});
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import IconCheckCircle from "@vector-im/compound-design-tokens/assets/web/icons/check-circle-solid";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { ButtonLink } from "../components/ButtonLink";
|
||||
import Layout from "../components/Layout";
|
||||
import PageHeading from "../components/PageHeading";
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/password/change/success")({
|
||||
component: ChangePasswordSuccess,
|
||||
});
|
||||
|
||||
|
||||
@@ -9,7 +9,12 @@ import {
|
||||
useMutation,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import { notFound, useNavigate, useSearch } from "@tanstack/react-router";
|
||||
import {
|
||||
createFileRoute,
|
||||
notFound,
|
||||
useNavigate,
|
||||
useSearch,
|
||||
} from "@tanstack/react-router";
|
||||
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
|
||||
import IconLockSolid from "@vector-im/compound-design-tokens/assets/web/icons/lock-solid";
|
||||
import { Alert, Button, Form } from "@vector-im/compound-web";
|
||||
@@ -81,7 +86,7 @@ const schema = v.object({
|
||||
ticket: v.string(),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/password/recovery/")({
|
||||
validateSearch: schema,
|
||||
|
||||
loaderDeps: ({ search: { ticket } }) => ({ ticket }),
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import IconKeyOffSolid from "@vector-im/compound-design-tokens/assets/web/icons/key-off-solid";
|
||||
import { Text } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import PageHeading from "../components/PageHeading";
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/reset-cross-signing/cancelled")({
|
||||
component: () => {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
useMutation,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import { notFound } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound } from "@tanstack/react-router";
|
||||
import IconCheck from "@vector-im/compound-design-tokens/assets/web/icons/check";
|
||||
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
|
||||
import IconInfo from "@vector-im/compound-design-tokens/assets/web/icons/info";
|
||||
@@ -46,7 +46,7 @@ const currentViewerQuery = queryOptions({
|
||||
}),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/reset-cross-signing/")({
|
||||
loader: ({ context }) =>
|
||||
context.queryClient.ensureQueryData(currentViewerQuery),
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import IconCheckCircleSolid from "@vector-im/compound-design-tokens/assets/web/icons/check-circle-solid";
|
||||
import { Text } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -12,7 +13,7 @@ import PageHeading from "../components/PageHeading";
|
||||
// https://github.com/element-hq/synapse/blob/34b758644611721911a223814a7b35d8e14067e6/synapse/rest/admin/users.py#L1335
|
||||
const CROSS_SIGNING_REPLACEMENT_PERIOD_MS = 10 * 60 * 1000; // 10 minutes
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/reset-cross-signing/success")({
|
||||
component: () => {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
|
||||
@@ -3,7 +3,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { type ErrorComponentProps, Outlet } from "@tanstack/react-router";
|
||||
import {
|
||||
createFileRoute,
|
||||
type ErrorComponentProps,
|
||||
Outlet,
|
||||
} from "@tanstack/react-router";
|
||||
import IconErrorSolid from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
|
||||
import { Button, Text } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -15,7 +19,7 @@ const searchSchema = v.object({
|
||||
deepLink: v.optional(v.boolean()),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/reset-cross-signing")({
|
||||
validateSearch: searchSchema,
|
||||
component: () => (
|
||||
<Layout>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { notFound } from "@tanstack/react-router";
|
||||
import { createFileRoute, notFound } from "@tanstack/react-router";
|
||||
import { Alert } from "@vector-im/compound-web";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Layout from "../components/Layout";
|
||||
@@ -41,7 +41,7 @@ const query = (id: string) =>
|
||||
graphqlRequest({ query: QUERY, signal, variables: { id } }),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute({
|
||||
export const Route = createFileRoute("/sessions/$id")({
|
||||
loader: ({ context, params }) =>
|
||||
context.queryClient.ensureQueryData(query(params.id)),
|
||||
notFoundComponent: NotFound,
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
.cpd-text-control:focus,
|
||||
/* This is set to auto by tailwind, we need to reset this */
|
||||
.cpd-text-control:focus-visible {
|
||||
.cpd-text-control:focus-visible {
|
||||
outline: 2px solid var(--cpd-color-border-focused);
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
@@ -82,12 +82,16 @@ export const handlers = [
|
||||
),
|
||||
),
|
||||
|
||||
siteConfig: makeFragmentData(
|
||||
{
|
||||
displayNameChangeAllowed: true,
|
||||
},
|
||||
USER_GREETING_CONFIG_FRAGMENT,
|
||||
),
|
||||
siteConfig: {
|
||||
planManagementIframeUri: null,
|
||||
sessionLimit: null,
|
||||
...makeFragmentData(
|
||||
{
|
||||
displayNameChangeAllowed: true,
|
||||
},
|
||||
USER_GREETING_CONFIG_FRAGMENT,
|
||||
),
|
||||
},
|
||||
},
|
||||
}),
|
||||
),
|
||||
|
||||
@@ -556,6 +556,43 @@ exports[`Reset cross signing > renders the success page 1`] = `
|
||||
>
|
||||
The identity reset has been approved for the next 10 minutes. You can close this window and go back to the app to continue.
|
||||
</p>
|
||||
<footer
|
||||
class="_legalFooter_acfd2c"
|
||||
>
|
||||
<nav>
|
||||
<a
|
||||
class="_link_1v5rz_8"
|
||||
data-kind="primary"
|
||||
data-size="medium"
|
||||
href="https://matrix.org/policy"
|
||||
rel="noreferrer noopener"
|
||||
title="Link to the service privacy policy"
|
||||
>
|
||||
Privacy Policy
|
||||
</a>
|
||||
<div
|
||||
aria-hidden="true"
|
||||
class="_separator_acfd2c"
|
||||
>
|
||||
•
|
||||
</div>
|
||||
<a
|
||||
class="_link_1v5rz_8"
|
||||
data-kind="primary"
|
||||
data-size="medium"
|
||||
href="https://matrix.org/tos"
|
||||
rel="noreferrer noopener"
|
||||
title="Link to the service terms and conditions"
|
||||
>
|
||||
Terms & Conditions
|
||||
</a>
|
||||
</nav>
|
||||
<p
|
||||
class="_imprint_acfd2c"
|
||||
>
|
||||
All Rights Reserved. The Super Chat name, logo and device are registered trade marks of BigCorp Ltd.
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
@@ -598,6 +635,43 @@ exports[`Reset cross signing > renders the success page 2`] = `
|
||||
>
|
||||
The identity reset has been approved for the next 10 minutes. You can close this window and go back to the app to continue.
|
||||
</p>
|
||||
<footer
|
||||
class="_legalFooter_acfd2c"
|
||||
>
|
||||
<nav>
|
||||
<a
|
||||
class="_link_1v5rz_8"
|
||||
data-kind="primary"
|
||||
data-size="medium"
|
||||
href="https://matrix.org/policy"
|
||||
rel="noreferrer noopener"
|
||||
title="Link to the service privacy policy"
|
||||
>
|
||||
Privacy Policy
|
||||
</a>
|
||||
<div
|
||||
aria-hidden="true"
|
||||
class="_separator_acfd2c"
|
||||
>
|
||||
•
|
||||
</div>
|
||||
<a
|
||||
class="_link_1v5rz_8"
|
||||
data-kind="primary"
|
||||
data-size="medium"
|
||||
href="https://matrix.org/tos"
|
||||
rel="noreferrer noopener"
|
||||
title="Link to the service terms and conditions"
|
||||
>
|
||||
Terms & Conditions
|
||||
</a>
|
||||
</nav>
|
||||
<p
|
||||
class="_imprint_acfd2c"
|
||||
>
|
||||
All Rights Reserved. The Super Chat name, logo and device are registered trade marks of BigCorp Ltd.
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
@@ -37,7 +37,6 @@ describe("Account home page", () => {
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
setDisplayName: {
|
||||
__typename: "SetDisplayNamePayload",
|
||||
status: "SET",
|
||||
},
|
||||
},
|
||||
@@ -105,7 +104,6 @@ describe("Account home page", () => {
|
||||
HttpResponse.json({
|
||||
data: {
|
||||
setDisplayName: {
|
||||
__typename: "SetDisplayNamePayload",
|
||||
status: "INVALID",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
"types": ["vite/client", "vitest/importMeta"],
|
||||
"allowJs": false,
|
||||
"skipLibCheck": true,
|
||||
"esModuleInterop": false,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "matrix-authentication-service",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@11.1.0+sha512.0c44e842e5686b2c061a81adda8b2258bd8818e9704b2cf2c63d56b931a7b2e910092e085027003b96ca3911ab56a07f6df5abaed2be9925034cdd686a535b14",
|
||||
"packageManager": "pnpm@11.3.0+sha512.2c403d6594527287672b1f7056343a1f7c3634036a67ffabfcc2b3d7595d843768f8787148d1b57cf7956c90606bbd192857c363af19e96d2d0ec9ec5741d215",
|
||||
"devDependencies": {
|
||||
"@localazy/cli": "^2.0.10",
|
||||
"semver": "^7.8.0"
|
||||
"semver": "^7.8.1"
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+2557
-2233
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,10 @@ trustPolicyExclude:
|
||||
# @actions/github-script bundles @actions/http-client which pulls in
|
||||
# undici@5.29.0 — older 5.x releases were published with provenance.
|
||||
- "undici@5.29.0"
|
||||
# They switched to npm staged publishing, which for some reason npm flags
|
||||
# from being a release with a trusted publisher (GH actions) and provenance
|
||||
# to one with only provenance.
|
||||
- "tinyexec@1.2.2"
|
||||
|
||||
# Fail the install if any dependency has a build script that isn't explicitly
|
||||
# allowed. Add entries to `allowBuilds` (package name pattern -> bool) to
|
||||
|
||||
Reference in New Issue
Block a user