mirror of
https://github.com/element-hq/matrix-authentication-service.git
synced 2026-10-22 12:12:33 +00:00
Bump most frontend dependencies (#4678)
This commit is contained in:
7 files changed
+1059
-896
No files matched your search
@@ -5,24 +5,23 @@
|
||||
* Mock Service Worker.
|
||||
* @see https://github.com/mswjs/msw
|
||||
* - Please do NOT modify this file.
|
||||
* - Please do NOT serve this file on production.
|
||||
*/
|
||||
|
||||
const PACKAGE_VERSION = '2.8.7'
|
||||
const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f'
|
||||
const PACKAGE_VERSION = '2.10.2'
|
||||
const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'
|
||||
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
|
||||
const activeClientIds = new Set()
|
||||
|
||||
self.addEventListener('install', function () {
|
||||
addEventListener('install', function () {
|
||||
self.skipWaiting()
|
||||
})
|
||||
|
||||
self.addEventListener('activate', function (event) {
|
||||
addEventListener('activate', function (event) {
|
||||
event.waitUntil(self.clients.claim())
|
||||
})
|
||||
|
||||
self.addEventListener('message', async function (event) {
|
||||
const clientId = event.source.id
|
||||
addEventListener('message', async function (event) {
|
||||
const clientId = Reflect.get(event.source || {}, 'id')
|
||||
|
||||
if (!clientId || !self.clients) {
|
||||
return
|
||||
@@ -94,17 +93,18 @@ self.addEventListener('message', async function (event) {
|
||||
}
|
||||
})
|
||||
|
||||
self.addEventListener('fetch', function (event) {
|
||||
const { request } = event
|
||||
|
||||
addEventListener('fetch', function (event) {
|
||||
// Bypass navigation requests.
|
||||
if (request.mode === 'navigate') {
|
||||
if (event.request.mode === 'navigate') {
|
||||
return
|
||||
}
|
||||
|
||||
// Opening the DevTools triggers the "only-if-cached" request
|
||||
// that cannot be handled by the worker. Bypass such requests.
|
||||
if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
|
||||
if (
|
||||
event.request.cache === 'only-if-cached' &&
|
||||
event.request.mode !== 'same-origin'
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -115,48 +115,62 @@ self.addEventListener('fetch', function (event) {
|
||||
return
|
||||
}
|
||||
|
||||
// Generate unique request ID.
|
||||
const requestId = crypto.randomUUID()
|
||||
event.respondWith(handleRequest(event, requestId))
|
||||
})
|
||||
|
||||
/**
|
||||
* @param {FetchEvent} event
|
||||
* @param {string} requestId
|
||||
*/
|
||||
async function handleRequest(event, requestId) {
|
||||
const client = await resolveMainClient(event)
|
||||
const requestCloneForEvents = event.request.clone()
|
||||
const response = await getResponse(event, client, requestId)
|
||||
|
||||
// Send back the response clone for the "response:*" life-cycle events.
|
||||
// Ensure MSW is active and ready to handle the message, otherwise
|
||||
// this message will pend indefinitely.
|
||||
if (client && activeClientIds.has(client.id)) {
|
||||
;(async function () {
|
||||
const responseClone = response.clone()
|
||||
const serializedRequest = await serializeRequest(requestCloneForEvents)
|
||||
|
||||
sendToClient(
|
||||
client,
|
||||
{
|
||||
type: 'RESPONSE',
|
||||
payload: {
|
||||
requestId,
|
||||
isMockedResponse: IS_MOCKED_RESPONSE in response,
|
||||
// Clone the response so both the client and the library could consume it.
|
||||
const responseClone = response.clone()
|
||||
|
||||
sendToClient(
|
||||
client,
|
||||
{
|
||||
type: 'RESPONSE',
|
||||
payload: {
|
||||
isMockedResponse: IS_MOCKED_RESPONSE in response,
|
||||
request: {
|
||||
id: requestId,
|
||||
...serializedRequest,
|
||||
},
|
||||
response: {
|
||||
type: responseClone.type,
|
||||
status: responseClone.status,
|
||||
statusText: responseClone.statusText,
|
||||
body: responseClone.body,
|
||||
headers: Object.fromEntries(responseClone.headers.entries()),
|
||||
body: responseClone.body,
|
||||
},
|
||||
},
|
||||
[responseClone.body],
|
||||
)
|
||||
})()
|
||||
},
|
||||
responseClone.body ? [serializedRequest.body, responseClone.body] : [],
|
||||
)
|
||||
}
|
||||
|
||||
return response
|
||||
}
|
||||
|
||||
// Resolve the main client for the given event.
|
||||
// Client that issues a request doesn't necessarily equal the client
|
||||
// that registered the worker. It's with the latter the worker should
|
||||
// communicate with during the response resolving phase.
|
||||
/**
|
||||
* Resolve the main client for the given event.
|
||||
* Client that issues a request doesn't necessarily equal the client
|
||||
* that registered the worker. It's with the latter the worker should
|
||||
* communicate with during the response resolving phase.
|
||||
* @param {FetchEvent} event
|
||||
* @returns {Promise<Client | undefined>}
|
||||
*/
|
||||
async function resolveMainClient(event) {
|
||||
const client = await self.clients.get(event.clientId)
|
||||
|
||||
@@ -184,12 +198,16 @@ async function resolveMainClient(event) {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {FetchEvent} event
|
||||
* @param {Client | undefined} client
|
||||
* @param {string} requestId
|
||||
* @returns {Promise<Response>}
|
||||
*/
|
||||
async function getResponse(event, client, requestId) {
|
||||
const { request } = event
|
||||
|
||||
// Clone the request because it might've been already used
|
||||
// (i.e. its body has been read and sent to the client).
|
||||
const requestClone = request.clone()
|
||||
const requestClone = event.request.clone()
|
||||
|
||||
function passthrough() {
|
||||
// Cast the request headers to a new Headers instance
|
||||
@@ -230,29 +248,17 @@ async function getResponse(event, client, requestId) {
|
||||
}
|
||||
|
||||
// Notify the client that a request has been intercepted.
|
||||
const requestBuffer = await request.arrayBuffer()
|
||||
const serializedRequest = await serializeRequest(event.request)
|
||||
const clientMessage = await sendToClient(
|
||||
client,
|
||||
{
|
||||
type: 'REQUEST',
|
||||
payload: {
|
||||
id: requestId,
|
||||
url: request.url,
|
||||
mode: request.mode,
|
||||
method: request.method,
|
||||
headers: Object.fromEntries(request.headers.entries()),
|
||||
cache: request.cache,
|
||||
credentials: request.credentials,
|
||||
destination: request.destination,
|
||||
integrity: request.integrity,
|
||||
redirect: request.redirect,
|
||||
referrer: request.referrer,
|
||||
referrerPolicy: request.referrerPolicy,
|
||||
body: requestBuffer,
|
||||
keepalive: request.keepalive,
|
||||
...serializedRequest,
|
||||
},
|
||||
},
|
||||
[requestBuffer],
|
||||
[serializedRequest.body],
|
||||
)
|
||||
|
||||
switch (clientMessage.type) {
|
||||
@@ -268,6 +274,12 @@ async function getResponse(event, client, requestId) {
|
||||
return passthrough()
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Client} client
|
||||
* @param {any} message
|
||||
* @param {Array<Transferable>} transferrables
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
function sendToClient(client, message, transferrables = []) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const channel = new MessageChannel()
|
||||
@@ -280,14 +292,18 @@ function sendToClient(client, message, transferrables = []) {
|
||||
resolve(event.data)
|
||||
}
|
||||
|
||||
client.postMessage(
|
||||
message,
|
||||
[channel.port2].concat(transferrables.filter(Boolean)),
|
||||
)
|
||||
client.postMessage(message, [
|
||||
channel.port2,
|
||||
...transferrables.filter(Boolean),
|
||||
])
|
||||
})
|
||||
}
|
||||
|
||||
async function respondWithMock(response) {
|
||||
/**
|
||||
* @param {Response} response
|
||||
* @returns {Response}
|
||||
*/
|
||||
function respondWithMock(response) {
|
||||
// Setting response status code to 0 is a no-op.
|
||||
// However, when responding with a "Response.error()", the produced Response
|
||||
// instance will have status code set to 0. Since it's not possible to create
|
||||
@@ -305,3 +321,24 @@ async function respondWithMock(response) {
|
||||
|
||||
return mockedResponse
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Request} request
|
||||
*/
|
||||
async function serializeRequest(request) {
|
||||
return {
|
||||
url: request.url,
|
||||
mode: request.mode,
|
||||
method: request.method,
|
||||
headers: Object.fromEntries(request.headers.entries()),
|
||||
cache: request.cache,
|
||||
credentials: request.credentials,
|
||||
destination: request.destination,
|
||||
integrity: request.integrity,
|
||||
redirect: request.redirect,
|
||||
referrer: request.referrer,
|
||||
referrerPolicy: request.referrerPolicy,
|
||||
body: await request.arrayBuffer(),
|
||||
keepalive: request.keepalive,
|
||||
}
|
||||
}
|
||||
@@ -6,17 +6,10 @@
|
||||
import type { KnipConfig } from "knip";
|
||||
|
||||
export default {
|
||||
entry: [
|
||||
"src/main.tsx",
|
||||
"src/swagger.ts",
|
||||
"src/routes/*",
|
||||
"i18next-parser.config.ts",
|
||||
],
|
||||
entry: ["src/main.tsx", "src/swagger.ts", "src/routes/*"],
|
||||
ignore: ["src/gql/*", "src/routeTree.gen.ts", ".storybook/locales.ts"],
|
||||
ignoreDependencies: [
|
||||
// This is used by the tailwind PostCSS plugin, but not detected by knip
|
||||
"postcss-nesting",
|
||||
// We're using @storybook/addon-essentials to simplify upgrades, but knip doesn't detect them
|
||||
"@storybook/addon-*",
|
||||
],
|
||||
} satisfies KnipConfig;
|
||||
Generated
+930
-806
File diff suppressed because it is too large.
Load diff
+20
-20
@@ -20,12 +20,12 @@
|
||||
"dependencies": {
|
||||
"@fontsource/inconsolata": "^5.2.6",
|
||||
"@fontsource/inter": "^5.2.6",
|
||||
"@radix-ui/react-collapsible": "^1.1.8",
|
||||
"@radix-ui/react-dialog": "^1.1.11",
|
||||
"@tanstack/react-query": "^5.80.6",
|
||||
"@tanstack/react-router": "^1.121.0",
|
||||
"@vector-im/compound-design-tokens": "4.0.2",
|
||||
"@vector-im/compound-web": "^7.12.0",
|
||||
"@radix-ui/react-collapsible": "^1.1.11",
|
||||
"@radix-ui/react-dialog": "^1.1.14",
|
||||
"@tanstack/react-query": "^5.80.7",
|
||||
"@tanstack/react-router": "^1.121.2",
|
||||
"@vector-im/compound-design-tokens": "4.0.4",
|
||||
"@vector-im/compound-web": "^8.0.0",
|
||||
"@zxcvbn-ts/core": "^3.0.4",
|
||||
"@zxcvbn-ts/language-common": "^3.0.4",
|
||||
"classnames": "^2.5.1",
|
||||
@@ -34,7 +34,7 @@
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
"react-i18next": "^15.5.2",
|
||||
"swagger-ui-dist": "^5.22.0",
|
||||
"swagger-ui-dist": "^5.24.1",
|
||||
"valibot": "^1.1.0",
|
||||
"vaul": "^1.1.2"
|
||||
},
|
||||
@@ -45,18 +45,18 @@
|
||||
"@browser-logos/safari": "^2.1.0",
|
||||
"@codecov/vite-plugin": "^1.9.1",
|
||||
"@graphql-codegen/cli": "^5.0.7",
|
||||
"@graphql-codegen/client-preset": "^4.8.0",
|
||||
"@graphql-codegen/client-preset": "^4.8.2",
|
||||
"@graphql-codegen/typescript-msw": "^3.0.1",
|
||||
"@storybook/addon-docs": "^9.0.8",
|
||||
"@storybook/react-vite": "^9.0.8",
|
||||
"@tanstack/react-query-devtools": "^5.80.6",
|
||||
"@tanstack/react-router-devtools": "^1.121.0",
|
||||
"@tanstack/router-plugin": "^1.121.0",
|
||||
"@tanstack/react-query-devtools": "^5.80.7",
|
||||
"@tanstack/react-router-devtools": "^1.121.5",
|
||||
"@tanstack/router-plugin": "^1.121.4",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@testing-library/user-event": "^14.6.1",
|
||||
"@types/node": "^24.0.0",
|
||||
"@types/react": "19.1.7",
|
||||
"@types/node": "^24.0.1",
|
||||
"@types/react": "19.1.8",
|
||||
"@types/react-dom": "19.1.6",
|
||||
"@types/swagger-ui-dist": "^3.30.5",
|
||||
"@vitejs/plugin-react": "^4.5.2",
|
||||
@@ -64,24 +64,24 @@
|
||||
"autoprefixer": "^10.4.21",
|
||||
"browserslist-to-esbuild": "^2.1.1",
|
||||
"graphql": "^16.11.0",
|
||||
"happy-dom": "^17.6.3",
|
||||
"happy-dom": "^18.0.1",
|
||||
"i18next-parser": "^9.3.0",
|
||||
"knip": "^5.59.1",
|
||||
"msw": "^2.8.7",
|
||||
"knip": "^5.61.0",
|
||||
"msw": "^2.10.2",
|
||||
"msw-storybook-addon": "^2.0.5",
|
||||
"postcss": "^8.5.4",
|
||||
"postcss": "^8.5.5",
|
||||
"postcss-import": "^16.1.0",
|
||||
"postcss-nesting": "^13.0.1",
|
||||
"postcss-nesting": "^13.0.2",
|
||||
"rimraf": "^6.0.1",
|
||||
"storybook": "^9.0.1",
|
||||
"storybook-react-i18next": "^4.0.4",
|
||||
"storybook-react-i18next": "4.0.7",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "6.3.5",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-graphql-codegen": "^3.6.1",
|
||||
"vite-plugin-manifest-sri": "^0.2.0",
|
||||
"vitest": "^3.1.2"
|
||||
"vitest": "^3.2.3"
|
||||
},
|
||||
"msw": {
|
||||
"workerDirectory": [
|
||||
|
||||
+6
-3
@@ -33,7 +33,8 @@ exports[`<CompatSessionDetail> > renders a compatability session details 1`] = `
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«r3»"
|
||||
class="_icon-button_m2erp_8"
|
||||
class="_icon-button_1pz9o_8"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
@@ -329,7 +330,8 @@ exports[`<CompatSessionDetail> > renders a compatability session without an ssoL
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«rf»"
|
||||
class="_icon-button_m2erp_8"
|
||||
class="_icon-button_1pz9o_8"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
@@ -611,7 +613,8 @@ exports[`<CompatSessionDetail> > renders a finished compatability session detail
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«rr»"
|
||||
class="_icon-button_m2erp_8"
|
||||
class="_icon-button_1pz9o_8"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
|
||||
+4
-2
@@ -33,7 +33,8 @@ exports[`<OAuth2SessionDetail> > renders a finished session details 1`] = `
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«rf»"
|
||||
class="_icon-button_m2erp_8"
|
||||
class="_icon-button_1pz9o_8"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
@@ -343,7 +344,8 @@ exports[`<OAuth2SessionDetail> > renders session details 1`] = `
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«r3»"
|
||||
class="_icon-button_m2erp_8"
|
||||
class="_icon-button_1pz9o_8"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
|
||||
@@ -340,7 +340,8 @@ exports[`Account home page > renders the page 1`] = `
|
||||
aria-expanded="false"
|
||||
aria-haspopup="dialog"
|
||||
aria-labelledby="«r3»"
|
||||
class="_icon-button_m2erp_8 _editButton_0d9d49"
|
||||
class="_icon-button_1pz9o_8 _editButton_0d9d49"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: var(--cpd-space-6x);"
|
||||
@@ -423,7 +424,8 @@ exports[`Account home page > renders the page 1`] = `
|
||||
aria-controls="radix-«ra»"
|
||||
aria-expanded="true"
|
||||
aria-labelledby="«rb»"
|
||||
class="_icon-button_m2erp_8 _triggerIcon_a44bb3"
|
||||
class="_icon-button_1pz9o_8 _triggerIcon_a44bb3"
|
||||
data-kind="primary"
|
||||
data-state="open"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: 32px;"
|
||||
@@ -543,7 +545,8 @@ exports[`Account home page > renders the page 1`] = `
|
||||
aria-controls="radix-«rr»"
|
||||
aria-expanded="true"
|
||||
aria-labelledby="«rs»"
|
||||
class="_icon-button_m2erp_8 _triggerIcon_a44bb3"
|
||||
class="_icon-button_1pz9o_8 _triggerIcon_a44bb3"
|
||||
data-kind="primary"
|
||||
data-state="open"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: 32px;"
|
||||
@@ -638,7 +641,8 @@ exports[`Account home page > renders the page 1`] = `
|
||||
aria-controls="radix-«r15»"
|
||||
aria-expanded="false"
|
||||
aria-labelledby="«r16»"
|
||||
class="_icon-button_m2erp_8 _triggerIcon_a44bb3"
|
||||
class="_icon-button_1pz9o_8 _triggerIcon_a44bb3"
|
||||
data-kind="primary"
|
||||
data-state="closed"
|
||||
role="button"
|
||||
style="--cpd-icon-button-size: 32px;"
|
||||
|
||||
Reference in new issue
Block a user