diff --git a/.nvmrc b/.nvmrc index 21cff1f..c32828c 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -14.18.1 \ No newline at end of file +lts/hydrogen \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 791e9b6..76c0b79 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,5 +12,6 @@ node_modules .gitignore .gitkeep .github/CODEOWNERS +.nvmrc *.svg *.zip diff --git a/packages/example-vue/package.json b/packages/example-vue/package.json index 724fc18..17d8d1b 100644 --- a/packages/example-vue/package.json +++ b/packages/example-vue/package.json @@ -18,8 +18,8 @@ }, "devDependencies": { "@playwright/test": "^1.30.0", - "@vitejs/plugin-vue": "^4.0.0", - "msw": "1.0.0", + "@vitejs/plugin-vue": "^4.5.0", + "msw": "2.0.8", "playwright-msw": "workspace:*", "typescript": "4.9.5", "vite": "4.1.1", diff --git a/packages/example-vue/src/main.ts b/packages/example-vue/src/main.ts index ce45c04..b527e37 100644 --- a/packages/example-vue/src/main.ts +++ b/packages/example-vue/src/main.ts @@ -1,7 +1,7 @@ import { testHandlers } from './mocks/handler'; import { createApp } from 'vue'; import App from './App.vue'; -import { setupWorker } from 'msw'; +import { setupWorker } from 'msw/browser'; const worker = setupWorker(...testHandlers); @@ -11,7 +11,8 @@ async function prepare() { return worker.start({}).then(() => { console.groupCollapsed('[MSW] Loaded with handlers 🎉'); - worker.printHandlers(); + const handlers = worker.listHandlers(); + handlers.forEach((handler) => console.log(handler.info.header)); console.groupEnd(); return null; }); diff --git a/packages/example-vue/src/mocks/handler.ts b/packages/example-vue/src/mocks/handler.ts index 347a5b0..971807f 100644 --- a/packages/example-vue/src/mocks/handler.ts +++ b/packages/example-vue/src/mocks/handler.ts @@ -1,11 +1,16 @@ -import { rest } from 'msw'; +import { http, delay, HttpResponse } from 'msw'; export const testHandlers = [ - rest.get('/api/users', async (_, response, context) => { - return response( - context.status(200), - context.delay(500), - context.json([{ name: 'Harry' }, { name: 'Ron' }, { name: 'Hermione' }]) - ); - }), + http.get( + '/api/users', + + async () => { + await delay(); + return HttpResponse.json([ + { name: 'Harry' }, + { name: 'Ron' }, + { name: 'Hermione' }, + ]); + } + ), ]; diff --git a/packages/example-vue/test/specs/rest.spec.ts b/packages/example-vue/test/specs/http.spec.ts similarity index 65% rename from packages/example-vue/test/specs/rest.spec.ts rename to packages/example-vue/test/specs/http.spec.ts index 04cb9ba..db58d67 100644 --- a/packages/example-vue/test/specs/rest.spec.ts +++ b/packages/example-vue/test/specs/http.spec.ts @@ -1,7 +1,7 @@ -import { rest } from 'msw'; +import { delay, http, HttpResponse } from 'msw'; import { expect, test } from '../test'; -test.describe.parallel('REST', () => { +test.describe.parallel('HTTP', () => { test('should use the default handlers without requiring handlers to be specified on a per-test basis', async ({ page, }) => { @@ -14,13 +14,10 @@ test.describe.parallel('REST', () => { worker, }) => { await worker.use( - rest.get('/api/users', (_, response, context) => - response( - context.delay(250), - context.status(200), - context.json([{ name: 'Custom User' }]) - ) - ) + http.get('/api/users', async () => { + await delay(250); + return HttpResponse.json([{ name: 'Custom User' }]); + }) ); await page.goto('/users'); await expect(page.locator('text="Custom User"')).toBeVisible(); diff --git a/packages/example/README.md b/packages/example/README.md index 115c9ce..9aabf4a 100644 --- a/packages/example/README.md +++ b/packages/example/README.md @@ -35,8 +35,8 @@ The React SPA utilises [React Router](https://reactrouter.com/en/main) to serve | Route | Component | Test | Description | | ---------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [/login](http://127.0.0.1:5173/login) | [LoginForm](./src/components/login-form.tsx) | [cookies.spec.ts](./tests/playwright/specs/cookies.spec.ts) | An example login form that's used to test the behaviour of cookies. It makes sure that cookies are passed to the MSW handlers and are not unexpectedly leaked across test runs. | -| [/users](http://127.0.0.1:5173/users) | [UsersList](./src/components//users-list.tsx) | [rest.spec.ts](./tests/playwright/specs/rest.spec.ts) | A simple list of users which is used to test the behaviour of REST handlers. It utilises [ReactQuery](https://tanstack.com/query) to perform the API calls. | -| [/users/:userId](http://127.0.0.1:5173/users/b44e89e4-3254-415e-b14a-441166616b20) | [UserProfile](./src/components/user-profile.tsx) | [rest.spec.ts](./tests/playwright/specs/rest.spec.ts) | A simple user page that shows more details about the user than the `UserList`. It is used to make sure that [Route parameters](https://expressjs.com/en/guide/routing.html#route-parameters) work as expected. | +| [/users](http://127.0.0.1:5173/users) | [UsersList](./src/components//users-list.tsx) | [http.spec.ts](./tests/playwright/specs/http.spec.ts) | A simple list of users which is used to test the behaviour of REST handlers. It utilises [ReactQuery](https://tanstack.com/query) to perform the API calls. | +| [/users/:userId](http://127.0.0.1:5173/users/b44e89e4-3254-415e-b14a-441166616b20) | [UserProfile](./src/components/user-profile.tsx) | [http.spec.ts](./tests/playwright/specs/http.spec.ts) | A simple user page that shows more details about the user than the `UserList`. It is used to make sure that [Route parameters](https://expressjs.com/en/guide/routing.html#route-parameters) work as expected. | | [/settings](http://127.0.0.1:5173/settings) | [SettingsForm](./src/components/settings-form.tsx) | [graphql.spec.ts](./tests/playwright/specs/graphql.ts) | A basic settings page to make sure that GraphQL queries and mutations work. It utilises [Apollo Client](https://www.apollographql.com/docs/react/) to perform the API calls. | | [/documents](http://127.0.0.1:5173/documents) | [Documents](./src/components/documents.tsx) | [handler-priority.spec.ts](./tests/playwright/specs/handler-priority.ts) | A list of documents which is used to test the order in which handlers are processed when there are multiple matching handlers for a single route. | | [/search](http://127.0.0.1:5173/search) | [Search](./src/components/search.tsx) | [query-parameters.spec.ts](./tests/playwright/specs/query-parameters.ts) | A basic search engine page that allows the behaviour of query parameters to be tested. | diff --git a/packages/example/mockServiceWorker.js b/packages/example/mockServiceWorker.js index 2a26545..688939e 100644 --- a/packages/example/mockServiceWorker.js +++ b/packages/example/mockServiceWorker.js @@ -2,13 +2,14 @@ /* tslint:disable */ /** - * Mock Service Worker (0.47.4). + * Mock Service Worker (2.0.8). * @see https://github.com/mswjs/msw * - Please do NOT modify this file. * - Please do NOT serve this file on production. */ -const INTEGRITY_CHECKSUM = 'b3066ef78c2f9090b4ce87e874965995'; +const INTEGRITY_CHECKSUM = '0877fcdc026242810f5bfde0d7178db4'; +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse'); const activeClientIds = new Set(); self.addEventListener('install', function () { @@ -86,12 +87,6 @@ self.addEventListener('message', async function (event) { self.addEventListener('fetch', function (event) { const { request } = event; - const accept = request.headers.get('accept') || ''; - - // Bypass server-sent events. - if (accept.includes('text/event-stream')) { - return; - } // Bypass navigation requests. if (request.mode === 'navigate') { @@ -112,29 +107,8 @@ self.addEventListener('fetch', function (event) { } // Generate unique request ID. - const requestId = Math.random().toString(16).slice(2); - - event.respondWith( - handleRequest(event, requestId).catch((error) => { - if (error.name === 'NetworkError') { - console.warn( - '[MSW] Successfully emulated a network error for the "%s %s" request.', - request.method, - request.url - ); - return; - } - - // At this point, any exception indicates an issue with the original request/response. - console.error( - `\ - [MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`, - request.method, - request.url, - `${error.name}: ${error.message}` - ); - }) - ); + const requestId = crypto.randomUUID(); + event.respondWith(handleRequest(event, requestId)); }); async function handleRequest(event, requestId) { @@ -146,21 +120,29 @@ async function handleRequest(event, requestId) { // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { (async function () { - const clonedResponse = response.clone(); - sendToClient(client, { - type: 'RESPONSE', - payload: { - requestId, - type: clonedResponse.type, - ok: clonedResponse.ok, - status: clonedResponse.status, - statusText: clonedResponse.statusText, - body: - clonedResponse.body === null ? null : await clonedResponse.text(), - headers: Object.fromEntries(clonedResponse.headers.entries()), - redirected: clonedResponse.redirected, + const responseClone = response.clone(); + // When performing original requests, response body will + // always be a ReadableStream, even for 204 responses. + // But when creating a new Response instance on the client, + // the body for a 204 response must be null. + const responseBody = response.status === 204 ? null : responseClone.body; + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseBody, + headers: Object.fromEntries(responseClone.headers.entries()), + }, }, - }); + [responseBody] + ); })(); } @@ -174,7 +156,7 @@ async function handleRequest(event, requestId) { async function resolveMainClient(event) { const client = await self.clients.get(event.clientId); - if (client.frameType === 'top-level') { + if (client?.frameType === 'top-level') { return client; } @@ -196,20 +178,20 @@ async function resolveMainClient(event) { async function getResponse(event, client, requestId) { const { request } = event; - const clonedRequest = request.clone(); + + // 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(); function passthrough() { - // Clone the request because it might've been already used - // (i.e. its body has been read and sent to the client). - const headers = Object.fromEntries(clonedRequest.headers.entries()); + const headers = Object.fromEntries(requestClone.headers.entries()); - // Remove MSW-specific request headers so the bypassed requests - // comply with the server's CORS preflight check. - // Operate with the headers as an object because request "Headers" - // are immutable. - delete headers['x-msw-bypass']; + // Remove internal MSW request header so the passthrough request + // complies with any potential CORS preflight checks on the server. + // Some servers forbid unknown request headers. + delete headers['x-msw-intention']; - return fetch(clonedRequest, { headers }); + return fetch(requestClone, { headers }); } // Bypass mocking when the client is not active. @@ -227,31 +209,36 @@ async function getResponse(event, client, requestId) { // Bypass requests with the explicit bypass header. // Such requests can be issued by "ctx.fetch()". - if (request.headers.get('x-msw-bypass') === 'true') { + const mswIntention = request.headers.get('x-msw-intention'); + if (['bypass', 'passthrough'].includes(mswIntention)) { return passthrough(); } // Notify the client that a request has been intercepted. - const clientMessage = await sendToClient(client, { - type: 'REQUEST', - payload: { - id: requestId, - url: request.url, - method: request.method, - headers: Object.fromEntries(request.headers.entries()), - cache: request.cache, - mode: request.mode, - credentials: request.credentials, - destination: request.destination, - integrity: request.integrity, - redirect: request.redirect, - referrer: request.referrer, - referrerPolicy: request.referrerPolicy, - body: await request.text(), - bodyUsed: request.bodyUsed, - keepalive: request.keepalive, + const requestBuffer = await request.arrayBuffer(); + 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, + }, }, - }); + [requestBuffer] + ); switch (clientMessage.type) { case 'MOCK_RESPONSE': { @@ -261,21 +248,12 @@ async function getResponse(event, client, requestId) { case 'MOCK_NOT_FOUND': { return passthrough(); } - - case 'NETWORK_ERROR': { - const { name, message } = clientMessage.data; - const networkError = new Error(message); - networkError.name = name; - - // Rejecting a "respondWith" promise emulates a network error. - throw networkError; - } } return passthrough(); } -function sendToClient(client, message) { +function sendToClient(client, message, transferrables = []) { return new Promise((resolve, reject) => { const channel = new MessageChannel(); @@ -287,17 +265,28 @@ function sendToClient(client, message) { resolve(event.data); }; - client.postMessage(message, [channel.port2]); + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)) + ); }); } -function sleep(timeMs) { - return new Promise((resolve) => { - setTimeout(resolve, timeMs); +async 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 + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error(); + } + + const mockedResponse = new Response(response.body, response); + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, }); -} -async function respondWithMock(response) { - await sleep(response.delay); - return new Response(response.body, response); + return mockedResponse; } diff --git a/packages/example/package.json b/packages/example/package.json index 5b10c5f..b60ff71 100755 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -11,23 +11,23 @@ "install:browsers": "yarn playwright install" }, "dependencies": { - "@apollo/client": "^3.7.7", + "@apollo/client": "^3.8.7", "buffer": "^6.0.3", - "graphql": "^16.6.0", - "msw": "1.0.0", + "graphql": "^16.8.1", + "msw": "2.0.8", "react": "^18.2.0", "react-dom": "^18.2.0", "react-query": "^3.39.3", - "react-router-dom": "^6.8.0" + "react-router-dom": "^6.19.0" }, "devDependencies": { "@playwright/test": "^1.30.0", - "@types/node": "^18.11.18", - "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", - "@vitejs/plugin-react": "^3.1.0", + "@types/node": "^18.18.9", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", + "@vitejs/plugin-react": "^4.2.0", "playwright-msw": "workspace:*", "typescript": "4.9.5", - "vite": "^4.1.1" + "vite": "^5.0.0" } } diff --git a/packages/example/src/main.tsx b/packages/example/src/main.tsx index d864bb4..0da821b 100644 --- a/packages/example/src/main.tsx +++ b/packages/example/src/main.tsx @@ -2,7 +2,7 @@ import { Buffer as BufferPolyfill } from 'buffer'; import React from 'react'; import { createRoot } from 'react-dom/client'; import App from './App'; -import { setupWorker } from 'msw'; +import { setupWorker } from 'msw/browser'; import handlers from './mocks/handlers'; // Polyfill buffer so we can base64 encode/decode within mocks in browser (via dev server) & node @@ -16,7 +16,7 @@ async function prepare() { return worker.start({}).then(() => { console.groupCollapsed('[MSW] Loaded with handlers 🎉'); - worker.printHandlers(); + worker.listHandlers(); console.groupEnd(); return null; }); diff --git a/packages/example/src/mocks/handlers/documents.ts b/packages/example/src/mocks/handlers/documents.ts index b8db663..6c09e79 100644 --- a/packages/example/src/mocks/handlers/documents.ts +++ b/packages/example/src/mocks/handlers/documents.ts @@ -1,44 +1,40 @@ -import { rest } from 'msw'; +import { http, HttpResponse, delay } from 'msw'; import { GetDocumentsResponse, GetDocumentsParams, } from '../../types/documents'; export default [ - rest.get( + http.get( '/api/documents/months', - (_, response, context) => - response( - context.delay(50), - context.status(200), - context.json([ - { - id: '9ef0aeb6-60bb-11ed-9b6a-0242ac120002', - title: 'january.pdf', - }, - { - id: 'aed3c728-60bb-11ed-9b6a-0242ac120002', - title: 'february.pdf', - }, - { - id: 'b60a4418-60bb-11ed-9b6a-0242ac120002 ', - title: 'march.pdf', - }, - ]) - ) + async () => { + await delay(); + return HttpResponse.json([ + { + id: '9ef0aeb6-60bb-11ed-9b6a-0242ac120002', + title: 'january.pdf', + }, + { + id: 'aed3c728-60bb-11ed-9b6a-0242ac120002', + title: 'february.pdf', + }, + { + id: 'b60a4418-60bb-11ed-9b6a-0242ac120002 ', + title: 'march.pdf', + }, + ]); + } ), - rest.get( + http.get( '/api/documents/:slug', - (request, response, context) => - response( - context.delay(50), - context.status(200), - context.json( - new Array(3).fill(null).map((_, index) => ({ - id: `${request.params.slug}-${index + 1}`, - title: `${request.params.slug}-document-${index + 1}.pdf`, - })) - ) - ) + async ({ params }) => { + await delay(); + return HttpResponse.json( + new Array(3).fill(null).map((_, index) => ({ + id: `${params.slug}-${index + 1}`, + title: `${params.slug}-document-${index + 1}.pdf`, + })) + ); + } ), ]; diff --git a/packages/example/src/mocks/handlers/search.ts b/packages/example/src/mocks/handlers/search.ts index 94a7bf6..a0bb215 100644 --- a/packages/example/src/mocks/handlers/search.ts +++ b/packages/example/src/mocks/handlers/search.ts @@ -1,4 +1,4 @@ -import { rest } from 'msw'; +import { http, HttpResponse } from 'msw'; import { SearchResult } from '../../types/search'; const movies: SearchResult<'movies'>[] = [ @@ -57,8 +57,8 @@ const allItems = [...movies, ...songs, ...books]; const categoryItemsMap = { movies, songs, books }; export default [ - rest.get('/api/search', (request, response, context) => { - const { searchParams } = request.url; + http.get('/api/search', async ({ request }) => { + const { searchParams } = new URL(request.url); const cat = searchParams.get('c') as SearchResult['category']; const q = searchParams.get('q'); const items = cat ? categoryItemsMap[cat] ?? [] : allItems; @@ -68,6 +68,7 @@ export default [ title.toLocaleLowerCase().includes(q.toLocaleLowerCase()) ) : items; - return response(context.status(200), context.json(searchResults)); + + return HttpResponse.json(searchResults); }), ]; diff --git a/packages/example/src/mocks/handlers/session.ts b/packages/example/src/mocks/handlers/session.ts index 9db1463..3007514 100644 --- a/packages/example/src/mocks/handlers/session.ts +++ b/packages/example/src/mocks/handlers/session.ts @@ -3,10 +3,9 @@ import { GetSessionParams, GetSessionResponse, PostSessionRequestBody, - PostSessionParams, PostSessionResponse, } from '../../types/session'; -import { rest } from 'msw'; +import { http, HttpResponse, delay } from 'msw'; const VALID_USERNAME = 'peter'; const VALID_PASSWORD = 'secret'; @@ -17,13 +16,15 @@ const sessionData: SessionData = { }; const encodeSessionCookie = (username: string, password: string) => - // This isn't secure, please don't do this in production code 😇 Buffer.from(`${username}:${password}`).toString('base64'); const decodeSessionCookie = ( cookie: string ): { username: string; password: string } => { - const [username, password] = Buffer.from(cookie ?? '', 'base64') + const [username, password] = Buffer.from( + (cookie ?? '').split(',')[0], + 'base64' + ) .toString() .split(':'); return { @@ -41,43 +42,54 @@ const isValidSession = (cookie: string): boolean => { }; export default [ - rest.get( + http.get( '/api/session', - async (request, response, context) => { + async (request) => { + await delay(150); const sessionCookie = request.cookies[SESSION_COOKIE_KEY]; return isValidSession(sessionCookie) - ? response( - context.delay(150), - context.status(200), - context.json(sessionData) - ) - : response(context.delay(150), context.status(401)); + ? HttpResponse.json(sessionData, { + status: 200, + }) + : HttpResponse.json(null, { + status: 401, + }); } ), - rest.post( + http.post( '/api/session', - async (request, response, context) => { + async ({ request }) => { + await delay(500); const { username, password } = - await request.json(); + (await request.json()) as unknown as PostSessionRequestBody; if (isValidCredentials(username, password)) { - return response( - context.delay(500), - context.status(200), - context.cookie( - SESSION_COOKIE_KEY, - encodeSessionCookie(username, password) - ), - context.json(sessionData) - ); + return HttpResponse.json(sessionData, { + status: 200, + headers: { + 'Set-Cookie': `${SESSION_COOKIE_KEY}=${encodeSessionCookie( + username, + password + )}`, + }, + }); } - return response(context.delay(500), context.status(401)); + return HttpResponse.json(null, { + status: 401, + }); } ), - rest.delete('/api/session', async (request, response, context) => { - const sessionCookie = request.cookies[SESSION_COOKIE_KEY]; + http.delete('/api/session', async ({ cookies }) => { + const sessionCookie = cookies[SESSION_COOKIE_KEY]; return isValidSession(sessionCookie) - ? response(context.status(200), context.cookie(SESSION_COOKIE_KEY, '')) - : response(context.status(401)); + ? HttpResponse.json(null, { + status: 200, + headers: { + 'Set-Cookie': `${SESSION_COOKIE_KEY}=; Max-Age=0`, + }, + }) + : HttpResponse.json(null, { + status: 401, + }); }), ]; diff --git a/packages/example/src/mocks/handlers/settings.ts b/packages/example/src/mocks/handlers/settings.ts index 3a87531..665c8b3 100644 --- a/packages/example/src/mocks/handlers/settings.ts +++ b/packages/example/src/mocks/handlers/settings.ts @@ -1,4 +1,4 @@ -import { graphql } from 'msw'; +import { graphql, HttpResponse } from 'msw'; import { Settings } from '../../types/settings'; import { SettingsMutationData, @@ -12,22 +12,18 @@ const DEFAULT_SETTINGS: Settings = { }; export default [ - graphql.query('GetSettings', (_, response, context) => - response( - context.status(200), - context.data({ + graphql.query('GetSettings', () => + HttpResponse.json({ + data: { settings: DEFAULT_SETTINGS, - }) - ) + }, + }) ), graphql.mutation( 'MutateSettings', - (request, response, context) => - response( - context.status(200), - context.data({ - mutateSettings: { ...DEFAULT_SETTINGS, ...request.variables }, - }) - ) + ({ variables }) => + HttpResponse.json({ + data: { mutateSettings: { ...DEFAULT_SETTINGS, ...variables } }, + }) ), ]; diff --git a/packages/example/src/mocks/handlers/users.ts b/packages/example/src/mocks/handlers/users.ts index a45aeef..a5c89ac 100644 --- a/packages/example/src/mocks/handlers/users.ts +++ b/packages/example/src/mocks/handlers/users.ts @@ -1,4 +1,4 @@ -import { rest } from 'msw'; +import { http, HttpResponse, delay } from 'msw'; import { GetUsersItemApiParams, GetUsersItemApiResponse, @@ -39,28 +39,37 @@ const users: GetUsersItemApiResponse[] = [ ]; export default [ - rest.get( + http.get( '/api/users', - (_, response, context) => - response( - context.delay(500), - context.status(200), - context.json( - users.map(({ id, firstName, lastName }) => ({ - id, - firstName, - lastName, - })) - ) - ) + async () => { + await delay(500); + return HttpResponse.json( + users.map(({ id, firstName, lastName }) => ({ + id, + firstName, + lastName, + })), + { + status: 200, + headers: { + 'Content-Type': 'application/json', + }, + } + ); + } ), - rest.get( + http.get( '/api/users/:userId', - (request, response, context) => { - const user = users.find((user) => user.id === request.params.userId); + async ({ params }) => { + await delay(100); + const user = users.find((user) => user.id === params.userId); return user - ? response(context.delay(100), context.status(200), context.json(user)) - : response(context.delay(100), context.status(404)); + ? HttpResponse.json(user, { + status: 200, + }) + : HttpResponse.json(null, { + status: 404, + }); } ), ]; diff --git a/packages/example/tests/playwright/specs/cookies.spec.ts b/packages/example/tests/playwright/specs/cookies.spec.ts index b574295..57d9a3b 100644 --- a/packages/example/tests/playwright/specs/cookies.spec.ts +++ b/packages/example/tests/playwright/specs/cookies.spec.ts @@ -1,3 +1,4 @@ +import { delay } from 'msw'; import { LoginForm } from '../models/login-form'; import { test } from '../test'; @@ -19,6 +20,8 @@ test.describe.parallel('cookies', () => { const loginForm = new LoginForm(page); await loginForm.loginWithValidCredentials(); + await delay(500); + // Reload the page await page.reload(); diff --git a/packages/example/tests/playwright/specs/cross-origin.spec.ts b/packages/example/tests/playwright/specs/cross-origin.spec.ts index 100eb9c..c90ca83 100644 --- a/packages/example/tests/playwright/specs/cross-origin.spec.ts +++ b/packages/example/tests/playwright/specs/cross-origin.spec.ts @@ -1,6 +1,6 @@ import { SearchEngine } from '../models/search-engine'; import { test } from '../test'; -import { rest } from 'msw'; +import { http, HttpResponse } from 'msw'; test.describe.parallel('cross-origin mocking', () => { test('should allow request to be intercepted from a different backend server with a wildcard origin', async ({ @@ -8,17 +8,14 @@ test.describe.parallel('cross-origin mocking', () => { worker, }) => { await worker.resetHandlers( - rest.get('*/api/search', (_, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Wildcard cross-domain result', - href: 'https://fake.domain.com/', - category: 'books', - }, - ]) - ) + http.get('*/api/search', () => + HttpResponse.json([ + { + title: 'Wildcard cross-domain result', + href: 'https://fake.domain.com/', + category: 'books', + }, + ]) ) ); @@ -38,17 +35,14 @@ test.describe.parallel('cross-origin mocking', () => { worker, }) => { await worker.resetHandlers( - rest.get('http://localhost:8080/api/search', (_, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Explicit cross-domain result', - href: 'https://fake.domain.com/', - category: 'books', - }, - ]) - ) + http.get('http://localhost:8080/api/search', () => + HttpResponse.json([ + { + title: 'Explicit cross-domain result', + href: 'https://fake.domain.com/', + category: 'books', + }, + ]) ) ); diff --git a/packages/example/tests/playwright/specs/delay.spec.ts b/packages/example/tests/playwright/specs/delay.spec.ts index cba2511..3b112b7 100644 --- a/packages/example/tests/playwright/specs/delay.spec.ts +++ b/packages/example/tests/playwright/specs/delay.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '../test'; -import { rest } from 'msw'; +import { delay, http, HttpResponse } from 'msw'; test.describe.parallel('delay', () => { test('should send mock response after specified delay in the handler', async ({ @@ -7,18 +7,16 @@ test.describe.parallel('delay', () => { worker, }) => { await worker.use( - rest.get('/api/users', (_, response, context) => - response( - context.delay(5000), - context.json([ - { - id: 'fake', - firstName: 'Delayed', - lastName: 'Response', - }, - ]) - ) - ) + http.get('/api/users', async () => { + await delay(5000); + return HttpResponse.json([ + { + id: 'fake', + firstName: 'Delayed', + lastName: 'Response', + }, + ]); + }) ); await page.goto('/users'); @@ -43,17 +41,15 @@ test.describe.parallel('delay', () => { worker, }) => { await worker.use( - rest.get('/api/users', (_, response, context) => - response( - context.json([ - { - id: 'fake', - firstName: 'Instant', - lastName: 'Response', - }, - ]) - ) - ) + http.get('/api/users', async () => { + return HttpResponse.json([ + { + id: 'fake', + firstName: 'Instant', + lastName: 'Response', + }, + ]); + }) ); await page.goto('/users', { waitUntil: 'networkidle' }); diff --git a/packages/example/tests/playwright/specs/handler-priority.spec.ts b/packages/example/tests/playwright/specs/handler-priority.spec.ts index 1d6849c..549d294 100644 --- a/packages/example/tests/playwright/specs/handler-priority.spec.ts +++ b/packages/example/tests/playwright/specs/handler-priority.spec.ts @@ -1,21 +1,11 @@ import { DocumentsList } from '../models/documents-list'; import { test } from '../test'; -import { rest } from 'msw'; +import { http, HttpResponse } from 'msw'; test.describe.parallel('handler priority', () => { test('should process initial handlers in the order in which they are defined where index 0 is processed first', async ({ page, }) => { - /** - * The expected behaviour is that we render documents with explicit month names. The reason - * why we expect this is because within `../../../src/mocks/handlers/documents.ts`, there are - * two handlers that are defined in the following order: - * - * 1. `/api/documents/months` that returns an array of documents with explicit month names - * 2. `/api/documents/:slug` that returns a generated array of 3 elements with format: `${slug}-document-${index}.pdf` - * - * When MSW is running in a browser, an API call to `/api/documents/months` should be handled by the first handler. - */ await page.goto('/documents'); const documentsList = new DocumentsList(page); await documentsList.selectSlug('months'); @@ -29,31 +19,25 @@ test.describe.parallel('handler priority', () => { worker, }) => { await worker.use( - rest.get('/api/documents/secret', (request, response, context) => - response( - context.status(200), - context.json([ - { - id: 'a', - title: 'goat', - }, - { - id: 'b', - title: 'camel', - }, - ]) - ) + http.get('/api/documents/secret', () => + HttpResponse.json([ + { + id: 'a', + title: 'goat', + }, + { + id: 'b', + title: 'camel', + }, + ]) ), - rest.get('/api/documents/:slug', (request, response, context) => - response( - context.status(200), - context.json([ - { - id: 'slug', - title: 'Sluggymcslugface', - }, - ]) - ) + http.get('/api/documents/:slug', () => + HttpResponse.json([ + { + id: 'slug', + title: 'Sluggymcslugface', + }, + ]) ) ); @@ -69,31 +53,25 @@ test.describe.parallel('handler priority', () => { worker, }) => { await worker.resetHandlers( - rest.get('/api/documents/test', (request, response, context) => - response( - context.status(200), - context.json([ - { - id: 'a', - title: 'apple', - }, - { - id: 'o', - title: 'orange', - }, - ]) - ) + http.get('/api/documents/test', () => + HttpResponse.json([ + { + id: 'a', + title: 'apple', + }, + { + id: 'o', + title: 'orange', + }, + ]) ), - rest.get('/api/documents/:slug', (request, response, context) => - response( - context.status(200), - context.json([ - { - id: 'p', - title: 'potato', - }, - ]) - ) + http.get('/api/documents/:slug', () => + HttpResponse.json([ + { + id: 'p', + title: 'potato', + }, + ]) ) ); diff --git a/packages/example/tests/playwright/specs/rest.spec.ts b/packages/example/tests/playwright/specs/http.spec.ts similarity index 56% rename from packages/example/tests/playwright/specs/rest.spec.ts rename to packages/example/tests/playwright/specs/http.spec.ts index 7d1cd9f..2851502 100644 --- a/packages/example/tests/playwright/specs/rest.spec.ts +++ b/packages/example/tests/playwright/specs/http.spec.ts @@ -1,7 +1,7 @@ -import { rest } from 'msw'; +import { http, HttpResponse, delay } from 'msw'; import { expect, test } from '../test'; -test.describe.parallel('REST example: users list', () => { +test.describe.parallel('HTTP example: users list', () => { test('should use the default handlers without requiring handlers to be specified on a per-test basis', async ({ page, }) => { @@ -14,9 +14,12 @@ test.describe.parallel('REST example: users list', () => { worker, }) => { await worker.use( - rest.get('/api/users', (_, response, context) => - response(context.delay(250), context.status(403)) - ) + http.get('/api/users', async () => { + await delay(250); + return new HttpResponse(null, { + status: 403, + }); + }) ); await page.goto('/users'); await expect(page.locator('text="Failed to load users"')).toBeVisible(); @@ -26,9 +29,12 @@ test.describe.parallel('REST example: users list', () => { test('should allow mock handlers to be reset', async ({ page, worker }) => { // Set the status code to 500 temporarily await worker.use( - rest.get('/api/users', (_, response, context) => - response(context.delay(250), context.status(500)) - ) + http.get('/api/users', async () => { + await delay(250); + return HttpResponse.json(null, { + status: 500, + }); + }) ); // Reset the handlers so that we go back to using the default ones @@ -43,27 +49,22 @@ test.describe.parallel('REST example: users list', () => { worker, }) => { await worker.use( - rest.put('/api/users', (_, response, context) => - response(context.status(200)) + http.put('/api/users', () => + HttpResponse.json(null, { + status: 200, + }) ), - rest.get('/api/users', (_, response, context) => - response( - context.status(200), - context.json([ - { - id: 'fake', - firstName: 'Potato', - lastName: 'McTaterson', - }, - ]) - ) + http.get('/api/users', () => + HttpResponse.json([ + { + id: 'fake', + firstName: 'Potato', + lastName: 'McTaterson', + }, + ]) ), - rest.patch('/api/users', (_, response, context) => - response(context.status(200)) - ), - rest.delete('/api/users', (_, response, context) => - response(context.status(200)) - ) + http.patch('/api/users', () => HttpResponse.json(null, { status: 200 })), + http.delete('/api/users', () => HttpResponse.json(null, { status: 200 })) ); await page.goto('/users'); @@ -75,17 +76,14 @@ test.describe.parallel('REST example: users list', () => { worker, }) => { await worker.use( - rest.get(/\/a.{1}i\/us[a-z]{2}s/, (_, response, context) => - response( - context.status(200), - context.json([ - { - id: 'regex', - firstName: 'Regular', - lastName: 'Expression', - }, - ]) - ) + http.get(/\/a.{1}i\/us[a-z]{2}s/, () => + HttpResponse.json([ + { + id: 'regex', + firstName: 'Regular', + lastName: 'Expression', + }, + ]) ) ); @@ -107,19 +105,16 @@ test.describe.parallel('REST example: users list', () => { worker, }) => { await worker.use( - rest.get('/api/users/:userId', (_, response, context) => - response( - context.status(200), - context.json({ - id: 'testmytestface', - firstName: 'Testy', - lastName: 'Mctestface', - dob: '1969-6-9', - email: 'test.mc@test.face', - address: '111 Testy Way', - phoneNumber: '(123) 456-7890', - }) - ) + http.get('/api/users/:userId', () => + HttpResponse.json({ + id: 'testmytestface', + firstName: 'Testy', + lastName: 'Mctestface', + dob: '1969-6-9', + email: 'test.mc@test.face', + address: '111 Testy Way', + phoneNumber: '(123) 456-7890', + }) ) ); await page.goto('/users/testmytestface'); diff --git a/packages/example/tests/playwright/specs/page-load.spec.ts b/packages/example/tests/playwright/specs/page-load.spec.ts index 167fd7a..b42298a 100644 --- a/packages/example/tests/playwright/specs/page-load.spec.ts +++ b/packages/example/tests/playwright/specs/page-load.spec.ts @@ -1,4 +1,4 @@ -import { rest } from 'msw'; +import { http, HttpResponse } from 'msw'; import { SearchEngine } from '../models/search-engine'; import { testFactory, expect } from '../test'; @@ -11,17 +11,14 @@ testWaitForPageLoadTrue.describe('waitForPageLoad set to true', () => { 'should bypass initial page load requests (i.e. static assets)', async ({ page, worker }) => { await worker.resetHandlers( - rest.get('*/search', (_, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Explicit cross-domain result', - href: 'https://fake.domain.com/', - category: 'books', - }, - ]) - ) + http.get('*/search', () => + HttpResponse.json([ + { + title: 'Explicit cross-domain result', + href: 'https://fake.domain.com/', + category: 'books', + }, + ]) ) ); @@ -36,17 +33,14 @@ testWaitForPageLoadTrue.describe('waitForPageLoad set to true', () => { 'should mock subsequent requests immediately after page load (i.e. API calls)', async ({ page, worker }) => { await worker.resetHandlers( - rest.get('*/users', (_, response, context) => - response( - context.status(200), - context.json([ - { - id: 'fake', - firstName: '🥔', - lastName: 'Emoji', - }, - ]) - ) + http.get('*/users', () => + HttpResponse.json([ + { + id: 'fake', + firstName: '🥔', + lastName: 'Emoji', + }, + ]) ) ); @@ -60,17 +54,14 @@ testWaitForPageLoadTrue.describe('waitForPageLoad set to true', () => { 'should mock delayed requests after page load (i.e. API calls)', async ({ page, worker }) => { await worker.resetHandlers( - rest.get('*/search', (_, response, context) => - response( - context.status(200), - context.json([ - { - title: '🍆', - href: 'https://eggplant.domain.com/', - category: 'books', - }, - ]) - ) + http.get('*/search', () => + HttpResponse.json([ + { + title: '🍆', + href: 'https://eggplant.domain.com/', + category: 'books', + }, + ]) ) ); @@ -80,7 +71,6 @@ testWaitForPageLoadTrue.describe('waitForPageLoad set to true', () => { page.getByRole('heading', { name: 'Search engine' }) ).toBeVisible(); - // Add arbitrary delay await page.waitForTimeout(2000); const searchEngine = new SearchEngine(page); @@ -101,11 +91,8 @@ testWaitForPageLoadFalse.describe('waitForPageLoad set to false', () => { 'should not bypass initial page load requests (i.e. static assets)', async ({ page, worker }) => { await worker.resetHandlers( - rest.get('*/search', (_, response, context) => - response( - context.status(200), - context.json({ message: 'Mocked static resource call' }) - ) + http.get('*/search', () => + HttpResponse.json({ message: 'Mocked static resource call' }) ) ); diff --git a/packages/example/tests/playwright/specs/query-parameters.spec.ts b/packages/example/tests/playwright/specs/query-parameters.spec.ts index a923cc2..059f9d5 100644 --- a/packages/example/tests/playwright/specs/query-parameters.spec.ts +++ b/packages/example/tests/playwright/specs/query-parameters.spec.ts @@ -1,6 +1,6 @@ import { SearchEngine } from '../models/search-engine'; import { test } from '../test'; -import { rest } from 'msw'; +import { http, HttpResponse } from 'msw'; test.describe.parallel('query parameters', () => { test('should allow API calls that have query params to be handled by initial handlers', async ({ @@ -24,17 +24,14 @@ test.describe.parallel('query parameters', () => { worker, }) => { await worker.use( - rest.get('/api/search', (request, response, context) => - response( - context.status(200), - context.json([ - { - title: 'The Potato', - href: 'https://fake.domain.com', - category: 'books', - }, - ]) - ) + http.get('/api/search', () => + HttpResponse.json([ + { + title: 'The Potato', + href: 'https://fake.domain.com', + category: 'books', + }, + ]) ) ); @@ -51,29 +48,23 @@ test.describe.parallel('query parameters', () => { worker, }) => { await worker.use( - rest.get('/api/search?q=ignoredQuery', (request, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Pineapple', - href: 'https://fake.domain.com', - category: 'songs', - }, - ]) - ) + http.get('/api/search?q=ignoredQuery', () => + HttpResponse.json([ + { + title: 'Pineapple', + href: 'https://fake.domain.com', + category: 'songs', + }, + ]) ), - rest.get('/api/search', (request, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Pine Tree', - href: 'https://fake.domain.com', - category: 'songs', - }, - ]) - ) + http.get('/api/search', () => + HttpResponse.json([ + { + title: 'Pine Tree', + href: 'https://fake.domain.com', + category: 'songs', + }, + ]) ) ); @@ -82,7 +73,6 @@ test.describe.parallel('query parameters', () => { await searchEngine.setQuery('pine'); await searchEngine.submit(); await searchEngine.assertSearchResultCount(1); - // Like the official MSW, the first handler should have handled it because its query parameters will get ignored await searchEngine.assertSearchResultVisible('Pineapple'); }); @@ -92,17 +82,14 @@ test.describe.parallel('query parameters', () => { }) => { const endpointWithTrailingSlash = '/api/search/'; await worker.resetHandlers( - rest.get(endpointWithTrailingSlash, (_, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Trailing slash', - href: 'https://fake.domain.com/', - category: 'books', - }, - ]) - ) + http.get(endpointWithTrailingSlash, () => + HttpResponse.json([ + { + title: 'Trailing slash', + href: 'https://fake.domain.com/', + category: 'books', + }, + ]) ) ); @@ -120,17 +107,14 @@ test.describe.parallel('query parameters', () => { worker, }) => { await worker.resetHandlers( - rest.get('/api/:potato/', (_, response, context) => - response( - context.status(200), - context.json([ - { - title: 'Trailing slash and route parameters', - href: 'https://fake.domain.com/', - category: 'books', - }, - ]) - ) + http.get('/api/:potato/', () => + HttpResponse.json([ + { + title: 'Trailing slash and route parameters', + href: 'https://fake.domain.com/', + category: 'books', + }, + ]) ) ); diff --git a/packages/example/tests/playwright/test.ts b/packages/example/tests/playwright/test.ts index 1e2c632..510caa8 100644 --- a/packages/example/tests/playwright/test.ts +++ b/packages/example/tests/playwright/test.ts @@ -1,5 +1,5 @@ import { test as base, expect } from '@playwright/test'; -import { rest } from 'msw'; +import { http } from 'msw'; import type { MockServiceWorker, Config } from 'playwright-msw'; import { createWorkerFixture } from 'playwright-msw'; import handlers from '../../src/mocks/handlers'; @@ -7,10 +7,10 @@ import handlers from '../../src/mocks/handlers'; const testFactory = (config?: Config) => base.extend<{ worker: MockServiceWorker; - rest: typeof rest; + http: typeof http; }>({ worker: createWorkerFixture(handlers, config), - rest, + http, }); const test = testFactory(); diff --git a/packages/playwright-msw/README.md b/packages/playwright-msw/README.md index c2c1c98..3b3910a 100644 --- a/packages/playwright-msw/README.md +++ b/packages/playwright-msw/README.md @@ -18,7 +18,9 @@ ## Announcement -Version 2 introduced a minor breaking change to the [createWorkerFixture](#createworkerfixture) function. To upgrade, please refer to the [V2 migration guide](#v2-migration-guide). +As of version 3, `playwright-msw` has been updated to utilize MSW 2.x. In order to utilize the latest version of `playwright-msw`, you must update your tests to use the new syntax. Please follow MSW's amazing [Migration Guide](https://mswjs.io/docs/migrations/1.x-to-2.x). Apart from updating your tests to use MSW's new syntax, the API for `playwright-msw` itself remains unchanged. + +If you're not ready to update your tests, please continue to use version 2.x of `playwright-msw`. ## Getting started @@ -46,15 +48,14 @@ yarn add playwright-msw --dev If you haven't already done so, [create some mock handlers](https://mswjs.io/docs/getting-started/mocks) for API calls that your app will perform. e.g. within a [handlers.ts](https://github.com/valendres/playwright-msw/blob/main/packages/example/src/mocks/handlers.ts) file: ```typescript -import { rest } from 'msw'; +import { http, delay, HttpResponse } from 'msw'; /** A collection of handlers to be used by default for all tests. */ export default [ - rest.get('/api/users', (_, response, context) => - response( - context.delay(500), - context.status(200), - context.json([ + http.get('/api/users', async () => { + await delay(500); + return HttpResponse.json( + [ { id: 'bcff5c0e-10b6-407b-94d1-90d741363885', firstName: 'Rhydian', @@ -70,9 +71,12 @@ export default [ firstName: 'Erika', lastName: 'Richards', }, - ]) - ) - ), + ], + { + status: 200, + } + ); + }), ]; ``` @@ -102,10 +106,10 @@ export { test, expect }; ### Use the custom test fixture -The final step is to use the extended `test` implementation within your playwright tests. e.g. within a [rest.spec.ts](https://github.com/valendres/playwright-msw/blob/main/packages/example/tests/playwright/specs/rest.spec.ts) file: +The final step is to use the extended `test` implementation within your playwright tests. e.g. within a [http.spec.ts](https://github.com/valendres/playwright-msw/blob/main/packages/example/tests/playwright/specs/http.spec.ts) file: ```typescript -import { rest } from 'msw'; +import { http, delay, HttpResponse } from 'msw'; import { expect, test } from '../test'; test.describe.parallel("A demo of playwright-msw's functionality", () => { @@ -121,9 +125,12 @@ test.describe.parallel("A demo of playwright-msw's functionality", () => { worker, }) => { await worker.use( - rest.get('/api/users', (_, response, context) => - response(context.delay(250), context.status(403)) - ) + http.get('/api/users', async () => { + await delay(250); + return new HttpResponse(null, { + status: 403, + }); + }) ); await page.goto('/'); await expect(page.locator('text="Alessandro Metcalfe"')).toBeHidden(); @@ -208,20 +215,6 @@ The `MockServiceWorker` instance returned by [createWorker](#createworker) or ex This library tests itself to make sure the integration between MSW and Playwright is working as expected. For real examples of how it can be used, please refer to: [packages/example/README.md](../example/README.md) -## v2 migration guide - -`playwright-msw@2` introduced a very minor breaking change to the [createWorkerFixture](#createworkerfixture) function. Previously it accepted handlers via rest parameters, but now the first argument must be an array of handlers. This change was made to facilitate providing an optional configuration object as the second argument. - -```diff -public class Hello1 -const test = base.extend<{ - worker: MockServiceWorker; -}>({ -- worker: createWorkerFixture(...handlers), -+ worker: createWorkerFixture(handlers), -}); -``` - ## Acknowledgements This library does not seek to steal any thunder, it merely unifies two amazing tools that have already been built: diff --git a/packages/playwright-msw/mocks/msw.ts b/packages/playwright-msw/mocks/msw.ts index 3e0898c..b320303 100644 --- a/packages/playwright-msw/mocks/msw.ts +++ b/packages/playwright-msw/mocks/msw.ts @@ -1,5 +1,7 @@ /* istanbul ignore file */ -import { ResponseResolver } from 'msw'; +import { ResponseResolver, HttpResponse } from 'msw'; -export const successResolver: ResponseResolver = (_, response, context) => - response(context.status(200)); +export const successResolver: ResponseResolver = () => + new HttpResponse(null, { + status: 200, + }); diff --git a/packages/playwright-msw/package.json b/packages/playwright-msw/package.json index 6d16eb9..6a5e87c 100755 --- a/packages/playwright-msw/package.json +++ b/packages/playwright-msw/package.json @@ -7,7 +7,7 @@ "lib" ], "engines": { - "node": ">=14" + "node": ">=18" }, "repository": { "type": "git", @@ -24,15 +24,16 @@ "build": "tsc", "clean": "rimraf lib", "prepack": "yarn clean && yarn build", - "test": "jest" + "test": "jest", + "typecheck": "tsc --noEmit" }, "peerDependencies": { "@playwright/test": ">=1.20.0", - "msw": ">=0.47.3" + "msw": "^2.0.0" }, "dependencies": { - "@mswjs/cookies": "^0.2.2", - "strict-event-emitter": "^0.4.4" + "@mswjs/cookies": "^1.1.0", + "strict-event-emitter": "^0.5.0" }, "devDependencies": { "@babel/core": "^7.20.12", @@ -43,11 +44,11 @@ "@types/babel__core": "^7.20.0", "@types/babel__preset-env": "^7.9.2", "@types/jest": "^29.4.0", - "@types/node": "^18.11.18", + "@types/node": "^18.18.9", "@types/rimraf": "3.0.2", "babel-jest": "^29.4.1", "jest": "^29.4.1", - "msw": "1.0.0", + "msw": "2.0.8", "rimraf": "3.0.2", "typescript": "4.9.5" }, diff --git a/packages/playwright-msw/src/handler.ts b/packages/playwright-msw/src/handler.ts index 59aa271..65de107 100644 --- a/packages/playwright-msw/src/handler.ts +++ b/packages/playwright-msw/src/handler.ts @@ -1,10 +1,11 @@ import type { Route } from '@playwright/test'; -import type { MockedResponse, RequestHandler } from 'msw'; -import { handleRequest, MockedRequest } from 'msw'; -import { Emitter, EventMap } from 'strict-event-emitter'; -import { wait } from './utils'; +import { randomUUID } from 'crypto'; +import type { RequestHandler, LifeCycleEventsMap } from 'msw'; +import { handleRequest } from 'msw'; +import { Emitter } from 'strict-event-emitter'; +import { objectifyHeaders, readableStreamToBuffer } from './utils'; -const emitter = new Emitter(); +const emitter = new Emitter(); export const handleRoute = async (route: Route, handlers: RequestHandler[]) => { const request = route.request(); @@ -13,33 +14,14 @@ export const handleRoute = async (route: Route, handlers: RequestHandler[]) => { const headers = await request.allHeaders(); const postData = request.postData(); - const mockedRequest = new MockedRequest(url, { - method, - headers, - body: postData ? Buffer.from(postData) : undefined, - }); - - const handleMockResponse = async ({ - status, - headers, - body, - delay, - }: MockedResponse) => { - if (delay) { - await wait(delay); - } - - return route.fulfill({ - status, - body: body ?? undefined, - contentType: headers.get('content-type') ?? undefined, - headers: headers.all(), - }); - }; - try { await handleRequest( - mockedRequest, + new Request(url, { + method, + headers, + body: postData ? Buffer.from(postData) : undefined, + }), + randomUUID(), // Reverse array so that handlers that were most recently appended are processed first handlers.slice().reverse(), { @@ -54,9 +36,22 @@ export const handleRoute = async (route: Route, handlers: RequestHandler[]) => { */ baseUrl: url.origin, }, - onMockedResponse: handleMockResponse, - // @ts-expect-error -- for compatibility with MSW < 0.47.1 - onMockedResponseSent: handleMockResponse, + onMockedResponse: async ({ + status, + headers: rawHeaders, + body: rawBody, + }) => { + const contentType = rawHeaders.get('content-type') ?? undefined; + const headers = objectifyHeaders(rawHeaders); + const body = await readableStreamToBuffer(contentType, rawBody); + + return route.fulfill({ + status, + body, + contentType, + headers, + }); + }, } ); } catch { diff --git a/packages/playwright-msw/src/router.test.ts b/packages/playwright-msw/src/router.test.ts index 9cf3f02..a1fe5c1 100644 --- a/packages/playwright-msw/src/router.test.ts +++ b/packages/playwright-msw/src/router.test.ts @@ -5,7 +5,7 @@ jest.mock('./handler', () => ({ import { RouteHandler, Router } from './router'; import { handleRoute } from './handler'; -import { rest, graphql, Path } from 'msw'; +import { http, graphql, Path } from 'msw'; import { mockPage, mockRoute, mockRequest } from '../mocks/playwright'; import { successResolver } from '../mocks/msw'; import { Page } from '@playwright/test'; @@ -26,7 +26,7 @@ describe('router', () => { jest.mocked(handleRoute).mockReset(); }); - describe('rest', () => { + describe('http', () => { describe('initialisation', () => { test('should allow a router to be created without any handlers', async () => { const page = mockPage(); @@ -36,8 +36,8 @@ describe('router', () => { test('should register a route for each of the initial handlers', async () => { const requestHandlers = [ - rest.get('/profile', successResolver), - rest.get('/friends', successResolver), + http.get('/profile', successResolver), + http.get('/friends', successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); @@ -57,8 +57,8 @@ describe('router', () => { test('should register a single route for multiple handlers with the same route, but different methods', async () => { const requestHandlers = [ - rest.get('/profile', successResolver), - rest.put('/profile', successResolver), + http.get('/profile', successResolver), + http.put('/profile', successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); @@ -71,8 +71,8 @@ describe('router', () => { test('should include all of the corresponding initial handlers when calling handleRoute', async () => { const userPath = '/user'; const requestHandlers = [ - rest.put(userPath, successResolver), - rest.get(userPath, successResolver), + http.put(userPath, successResolver), + http.get(userPath, successResolver), ]; const page = mockPage(); @@ -92,8 +92,8 @@ describe('router', () => { test('should include all of the corresponding initial handlers and subsequently added handlers when calling handleRoute', async () => { const userPath = '/user'; - const initialUserHandler = rest.get(userPath, successResolver); - const subsequentUserHandler = rest.get(userPath, successResolver); + const initialUserHandler = http.get(userPath, successResolver); + const subsequentUserHandler = http.get(userPath, successResolver); const page = mockPage(); const router = new Router(page, [initialUserHandler]); @@ -110,8 +110,8 @@ describe('router', () => { test('should include all of the corresponding subsequently added handlers (without having provided initial handlers) when calling handleRoute', async () => { const userPath = '/user'; - const subsequentUserHandler1 = rest.get(userPath, successResolver); - const subsequentUserHandler2 = rest.get(userPath, successResolver); + const subsequentUserHandler1 = http.get(userPath, successResolver); + const subsequentUserHandler2 = http.get(userPath, successResolver); const page = mockPage(); const router = new Router(page); @@ -129,13 +129,13 @@ describe('router', () => { test('should not include handlers from other routes when calling handleRoute', async () => { const userPath = '/user'; const userHandlers = [ - rest.get(userPath, successResolver), - rest.put(userPath, successResolver), + http.get(userPath, successResolver), + http.put(userPath, successResolver), ]; const friendPath = '/friend'; const friendHandlers = [ - rest.get(friendPath, successResolver), - rest.patch(friendPath, successResolver), + http.get(friendPath, successResolver), + http.patch(friendPath, successResolver), ]; const requestHandlers = [...userHandlers, ...friendHandlers]; @@ -156,10 +156,10 @@ describe('router', () => { test('should not include handlers from subsequently added handlers that were reset', async () => { const userPath = '/user'; - const initialUserHandler1 = rest.get(userPath, successResolver); - const initialUserHandler2 = rest.get(userPath, successResolver); - const subsequentUserHandler1 = rest.get(userPath, successResolver); - const subsequentUserHandler2 = rest.get(userPath, successResolver); + const initialUserHandler1 = http.get(userPath, successResolver); + const initialUserHandler2 = http.get(userPath, successResolver); + const subsequentUserHandler1 = http.get(userPath, successResolver); + const subsequentUserHandler2 = http.get(userPath, successResolver); const page = mockPage(); const router = new Router(page, [ @@ -192,8 +192,8 @@ describe('router', () => { test('should not attempt to unroute at all if there are initial handlers, but no custom handlers', async () => { const requestHandlers = [ - rest.get('/profile', successResolver), - rest.get('/friends', successResolver), + http.get('/profile', successResolver), + http.get('/friends', successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); @@ -205,14 +205,14 @@ describe('router', () => { test('should not attempt to unroute the initial handlers when resetting', async () => { const requestHandlers = [ - rest.get('/profile', successResolver), - rest.get('/friends', successResolver), + http.get('/profile', successResolver), + http.get('/friends', successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); await router.start(); - await router.use(rest.get('/potato', successResolver)); + await router.use(http.get('/potato', successResolver)); await router.resetHandlers(); @@ -226,14 +226,14 @@ describe('router', () => { test('should not attempt to unroute if the extra handler matches one of the initial handlers', async () => { const requestHandlers = [ - rest.get('/profile', successResolver), - rest.get('/friends', successResolver), + http.get('/profile', successResolver), + http.get('/friends', successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); await router.start(); - await router.use(rest.get('/profile', successResolver)); + await router.use(http.get('/profile', successResolver)); await router.resetHandlers(); @@ -244,8 +244,8 @@ describe('router', () => { const page = mockPage(); const router = new Router(page); - await router.use(rest.get('/goat', successResolver)); - await router.use(rest.get('/camel', successResolver)); + await router.use(http.get('/goat', successResolver)); + await router.use(http.get('/camel', successResolver)); await router.resetHandlers(); @@ -266,7 +266,7 @@ describe('router', () => { const page = mockPage(); const router = new Router(page); - await router.use(rest.get('/apple', successResolver)); + await router.use(http.get('/apple', successResolver)); await router.resetHandlers(); @@ -288,7 +288,7 @@ describe('router', () => { const router = new Router(page); // First handler - await router.use(rest.get('/car', successResolver)); + await router.use(http.get('/car', successResolver)); await router.resetHandlers(); expect(page.unroute).toHaveBeenCalledTimes(1); expect(page.unroute).toHaveBeenNthCalledWith( @@ -298,7 +298,7 @@ describe('router', () => { ); // Second handler - await router.use(rest.get('/plane', successResolver)); + await router.use(http.get('/plane', successResolver)); await router.resetHandlers(); expect(page.unroute).toHaveBeenCalledTimes(2); expect(page.unroute).toHaveBeenNthCalledWith( @@ -312,8 +312,8 @@ describe('router', () => { const profilePath = '/profile'; const settingsPath = '/settings'; const requestHandlers = [ - rest.get(profilePath, successResolver), - rest.get(settingsPath, successResolver), + http.get(profilePath, successResolver), + http.get(settingsPath, successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); @@ -328,7 +328,7 @@ describe('router', () => { await router.resetHandlers( // URL that was present in initial handlers - rest.get(profilePath, successResolver) + http.get(profilePath, successResolver) // Note the omission of `settingsPath` here ); @@ -347,7 +347,7 @@ describe('router', () => { const profilePath = '/profile'; const settingsPath = '/settings'; const requestHandlers = [ - rest.get(profilePath, successResolver), + http.get(profilePath, successResolver), // Note the omission of `settingsPath` here ]; const page = mockPage(); @@ -359,8 +359,8 @@ describe('router', () => { jest.mocked(page.unroute).mockReset(); await router.resetHandlers( - rest.get(profilePath, successResolver), - rest.get(settingsPath, successResolver) + http.get(profilePath, successResolver), + http.get(settingsPath, successResolver) ); // Should not have unrouted anything @@ -378,10 +378,10 @@ describe('router', () => { const profilePath = '/profile'; const settingsPath = '/settings'; const requestHandlers = [ - rest.get(profilePath, successResolver), - rest.delete(profilePath, successResolver), - rest.get(settingsPath, successResolver), - rest.patch(settingsPath, successResolver), + http.get(profilePath, successResolver), + http.delete(profilePath, successResolver), + http.get(settingsPath, successResolver), + http.patch(settingsPath, successResolver), ]; const page = mockPage(); const router = new Router(page, requestHandlers); @@ -392,8 +392,8 @@ describe('router', () => { jest.mocked(page.unroute).mockReset(); await router.resetHandlers( - rest.get(profilePath, successResolver), - rest.get(settingsPath, successResolver) + http.get(profilePath, successResolver), + http.get(settingsPath, successResolver) ); expect(page.unroute).toHaveBeenCalledTimes(0); @@ -412,8 +412,8 @@ describe('router', () => { jest.mocked(page.unroute).mockReset(); await router.resetHandlers( - rest.get(profilePath, successResolver), - rest.get(settingsPath, successResolver) + http.get(profilePath, successResolver), + http.get(settingsPath, successResolver) ); // Should not have unrouted anything diff --git a/packages/playwright-msw/src/utils.test.ts b/packages/playwright-msw/src/utils.test.ts index 0a652e6..2a42efd 100644 --- a/packages/playwright-msw/src/utils.test.ts +++ b/packages/playwright-msw/src/utils.test.ts @@ -5,12 +5,14 @@ import { SerializedPath, deserializePath, } from './utils'; -import { rest, graphql, ResponseResolver, Path } from 'msw'; +import { http, graphql, ResponseResolver, Path, HttpResponse } from 'msw'; import { describe, it, expect } from '@jest/globals'; import { convertMswPathToPlaywrightUrl } from './utils'; -const successResolver: ResponseResolver = (_, response, context) => - response(context.status(200)); +const successResolver: ResponseResolver = () => + new HttpResponse(null, { + status: 200, + }); describe('utils', () => { describe('serializePath', () => { @@ -53,10 +55,10 @@ describe('utils', () => { describe('getHandlerType', () => { it.each(['get', 'post', 'put', 'delete', 'patch'] as const)( - 'should return "rest" if a REST "%s" handler is provided', + 'should return "http" if a http "%s" handler is provided', (method) => { - const handler = rest[method]('abc', successResolver); - expect(getHandlerType(handler)).toBe('rest'); + const handler = http[method]('abc', successResolver); + expect(getHandlerType(handler)).toBe('http'); } ); it.each(['query', 'mutation'] as const)( @@ -74,7 +76,7 @@ describe('utils', () => { ${'/api/users'} | ${'/api/users'} ${/^\/api\/.*/} | ${/^\/api\/.*/} `('return "$expected" when path is "$path"', ({ path, expected }) => { - expect(getHandlerPath(rest.get(path, successResolver), {})).toStrictEqual( + expect(getHandlerPath(http.get(path, successResolver), {})).toStrictEqual( expected ); }); diff --git a/packages/playwright-msw/src/utils.ts b/packages/playwright-msw/src/utils.ts index 7b6c4c4..1fc6891 100644 --- a/packages/playwright-msw/src/utils.ts +++ b/packages/playwright-msw/src/utils.ts @@ -1,4 +1,4 @@ -import { Path, RequestHandler, RestHandler } from 'msw'; +import { Path, RequestHandler } from 'msw'; import { Config } from './config'; export type SerializedPathType = 'regexp' | 'string'; @@ -18,8 +18,8 @@ export const deserializePath = (serializedPath: SerializedPath): Path => { return type === 'regexp' ? new RegExp(path) : path; }; -export const getHandlerType = (handler: RequestHandler): 'rest' | 'graphql' => - 'path' in handler.info ? 'rest' : 'graphql'; +export const getHandlerType = (handler: RequestHandler): 'http' | 'graphql' => + 'path' in handler.info ? 'http' : 'graphql'; export const getHandlerPath = ( handler: RequestHandler, @@ -34,7 +34,8 @@ export const getHandlerPath = ( } return graphqlUrl; } - return (handler).info.path; + // TODO: use correct type + return (handler.info as any).path; }; export const convertMswPathToPlaywrightUrl = (path: Path): RegExp => { @@ -66,8 +67,47 @@ export const convertMswPathToPlaywrightUrl = (path: Path): RegExp => { ); }; -export const wait = (delay: number): Promise => { - return new Promise((resolve) => { - setTimeout(resolve, delay); - }); -}; +export function objectifyHeaders(headers: Headers): Record { + const result: Record = {}; + headers.forEach((value, key) => (result[key] = value)); + return result; +} + +export async function readableStreamToBuffer( + contentType: string | undefined, + body: ReadableStream | null +): Promise { + if (!body) return undefined; + + const reader = body.getReader(); + const chunks: Uint8Array[] = []; + let done = false; + + while (!done) { + const { value, done: readDone } = await reader.read(); + if (value) { + chunks.push(value); + } + done = readDone; + } + + // Calculate the total length of all chunks + const totalLength = chunks.reduce((acc, val) => acc + val.length, 0); + + // Combine the chunks into a single Uint8Array + const combinedChunks = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks) { + combinedChunks.set(chunk, offset); + offset += chunk.length; + } + + if (contentType?.includes('application/json')) { + return new TextDecoder().decode(combinedChunks); + } else if (contentType?.includes('text')) { + return new TextDecoder().decode(combinedChunks); + } else { + // For binary data, return as Buffer + return Buffer.from(combinedChunks); + } +} diff --git a/packages/playwright-msw/src/worker.test.ts b/packages/playwright-msw/src/worker.test.ts index b12ed7f..f5ab952 100644 --- a/packages/playwright-msw/src/worker.test.ts +++ b/packages/playwright-msw/src/worker.test.ts @@ -3,7 +3,7 @@ import { mockPage } from '../mocks/playwright'; import { successResolver } from '../mocks/msw'; import { Router } from './router'; import { createWorker } from './worker'; -import { rest } from 'msw'; +import { http } from 'msw'; describe('worker', () => { beforeEach(() => { @@ -17,7 +17,7 @@ describe('worker', () => { }); it('should start the router with the provided initialHandlers', async () => { - const requestHandlers = [rest.get('/api/users', successResolver)]; + const requestHandlers = [http.get('/api/users', successResolver)]; const page = mockPage(); await createWorker(page, requestHandlers); expect(Router.prototype.start).toBeCalledTimes(1); @@ -33,8 +33,8 @@ describe('worker', () => { it('should proxy the "use" function to the router', async () => { const handlers = [ - rest.get('/api/potato', successResolver), - rest.get('/api/eggplant', successResolver), + http.get('/api/potato', successResolver), + http.get('/api/eggplant', successResolver), ]; const page = mockPage(); const worker = await createWorker(page); diff --git a/yarn.lock b/yarn.lock index 0d59b87..0e8030d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,17 +15,27 @@ __metadata: languageName: node linkType: hard -"@apollo/client@npm:^3.7.7": - version: 3.7.7 - resolution: "@apollo/client@npm:3.7.7" +"@ampproject/remapping@npm:^2.2.0": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: e15fecbf3b54c988c8b4fdea8ef514ab482537e8a080b2978cc4b47ccca7140577ca7b65ad3322dcce65bc73ee6e5b90cbfe0bbd8c766dad04d5c62ec9634c42 + languageName: node + linkType: hard + +"@apollo/client@npm:^3.8.7": + version: 3.8.7 + resolution: "@apollo/client@npm:3.8.7" dependencies: "@graphql-typed-document-node/core": "npm:^3.1.1" - "@wry/context": "npm:^0.7.0" - "@wry/equality": "npm:^0.5.0" - "@wry/trie": "npm:^0.3.0" + "@wry/context": "npm:^0.7.3" + "@wry/equality": "npm:^0.5.6" + "@wry/trie": "npm:^0.4.3" graphql-tag: "npm:^2.12.6" hoist-non-react-statics: "npm:^3.3.2" - optimism: "npm:^0.16.1" + optimism: "npm:^0.17.5" prop-types: "npm:^15.7.2" response-iterator: "npm:^0.2.6" symbol-observable: "npm:^4.0.0" @@ -47,7 +57,7 @@ __metadata: optional: true subscriptions-transport-ws: optional: true - checksum: d9d23fcb272eb5d869c2763a86ca6fd11cb7bf9c07ef2d0e33ddc936ab48545a9cfa91919cf0bf3f481d104acbda6a9e02e43a1a469872809a3a8e6de72a8a75 + checksum: 143aeb8b045ea63eaff2a26a9e7f33074251bde0023cdab99ac708657179b28de4c6af3c7cffb468528c758867e5feb079dbac8923455c0588c29938876e244f languageName: node linkType: hard @@ -69,6 +79,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": "npm:^7.22.13" + chalk: "npm:^2.4.2" + checksum: bf6ae6ba3a510adfda6a211b4a89b0f1c98ca1352b745c077d113f3b568141e0d44ce750b9ac2a80143ba5c8c4080c50fcfc1aa11d86e194ea6785f62520eb5a + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.0": version: 7.20.0 resolution: "@babel/compat-data@npm:7.20.0" @@ -97,6 +117,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.22.9": + version: 7.23.3 + resolution: "@babel/compat-data@npm:7.23.3" + checksum: a3d6c728150c8eb124a77227176723dfd7fd807e731c5bd01d041ae9e6a4efce32f88e6479ad17df9883bb296e181e650aa0034df7e42a3ea130df4c9b0a26fa + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": version: 7.19.6 resolution: "@babel/core@npm:7.19.6" @@ -143,6 +170,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/core@npm:7.23.3" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.22.13" + "@babel/generator": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.2" + "@babel/parser": "npm:^7.23.3" + "@babel/template": "npm:^7.22.15" + "@babel/traverse": "npm:^7.23.3" + "@babel/types": "npm:^7.23.3" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: f9e7016b62842d23f78c98dc31daa3bd9161c5770c1e9df0557f78186ed75fd2cfc8e7161975fe8c6ad147665b1881790139da91de34ec03cf8b9f6a256d86eb + languageName: node + linkType: hard + "@babel/generator@npm:^7.19.3": version: 7.19.3 resolution: "@babel/generator@npm:7.19.3" @@ -176,6 +226,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/generator@npm:7.23.3" + dependencies: + "@babel/types": "npm:^7.23.3" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 0f815d275cb3de97ec4724b959b3c7a67b1cde1861eda6612b50c6ba22565f12536d1f004dd48e7bad5e059751950265c6ff546ef48b7a719a11d7b512f1e29d + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" @@ -238,6 +300,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" + dependencies: + "@babel/compat-data": "npm:^7.22.9" + "@babel/helper-validator-option": "npm:^7.22.15" + browserslist: "npm:^4.21.9" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 9706decaa1591cf44511b6f3447eb9653b50ca3538215fe2e5387a8598c258c062f4622da5b95e61f0415706534deee619bbf53a2889f9bd967949b8f6024e0e + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.19.0" @@ -290,6 +365,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" @@ -309,6 +391,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 7b2ae024cd7a09f19817daf99e0153b3bf2bc4ab344e197e8d13623d5e36117ed0b110914bc248faa64e8ccd3e97971ec7b41cc6fd6163a2b980220c58dcdf6d + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" @@ -318,6 +410,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" @@ -336,6 +437,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": "npm:^7.22.15" + checksum: 5ecf9345a73b80c28677cfbe674b9f567bb0d079e37dcba9055e36cb337db24ae71992a58e1affa9d14a60d3c69907d30fe1f80aea105184501750a58d15c81c + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6": version: 7.19.6 resolution: "@babel/helper-module-transforms@npm:7.19.6" @@ -368,6 +478,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 583fa580f8e50e6f45c4f46aa76a8e49c2528deb84e25f634d66461b9a0e2420e13979b0a607b67aef67eaf8db8668eb9edc038b4514b16e3879fe09e8fd294b + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" @@ -391,6 +516,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: ab220db218089a2aadd0582f5833fd17fa300245999f5f8784b10f5a75267c4e808592284a29438a0da365e702f05acb369f99e1c915c02f9f9210ec60eab8ea + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" @@ -436,6 +568,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 7d5430eecf880937c27d1aed14245003bd1c7383ae07d652b3932f450f60bfcf8f2c1270c593ab063add185108d26198c69d1aca0e6fb7c6fdada4bcf72ab5b7 + languageName: node + linkType: hard + "@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": version: 7.20.0 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" @@ -454,6 +595,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.18.10": version: 7.18.10 resolution: "@babel/helper-string-parser@npm:7.18.10" @@ -468,6 +618,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 7f275a7f1a9504da06afc33441e219796352a4a3d0288a961bc14d1e30e06833a71621b33c3e60ee3ac1ff3c502d55e392bcbc0665f6f9d2629809696fab7cdd + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" @@ -475,6 +632,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: df882d2675101df2d507b95b195ca2f86a3ef28cb711c84f37e79ca23178e13b9f0d8b522774211f51e40168bf5142be4c1c9776a150cddb61a0d5bf3e95750b + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-option@npm:7.18.6" @@ -482,6 +646,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.18.9": version: 7.19.0 resolution: "@babel/helper-wrap-function@npm:7.19.0" @@ -516,6 +687,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.23.2": + version: 7.23.2 + resolution: "@babel/helpers@npm:7.23.2" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/traverse": "npm:^7.23.2" + "@babel/types": "npm:^7.23.0" + checksum: d66d949d41513f19e62e43a9426e283d46bc9a3c72f1e3dd136568542382edd411047403458aaa0ae3adf7c14d23e0e9a1126092bb56e72ba796a6dd7e4c082a + languageName: node + linkType: hard + "@babel/highlight@npm:^7.18.6": version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" @@ -527,6 +709,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + checksum: 1aabc95b2cb7f67adc26c7049554306f1435bfedb76b9731c36ff3d7cdfcb32bd65a6dd06985644124eb2100bd911721d9e5c4f5ac40b7f0da2995a61bf8da92 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.19.6, @babel/parser@npm:^7.20.0": version: 7.20.0 resolution: "@babel/parser@npm:7.20.0" @@ -554,6 +747,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/parser@npm:7.23.3" + bin: + parser: ./bin/babel-parser.js + checksum: 284c22ec1d939df66fb94929959d2160c30df1ba5778f212668dfb2f4aa8ac176f628c6073a2c9ea7ab2a1701d2ebdafb0dfb173dc737db9dc6708d5d2f49e0a + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" @@ -1252,25 +1454,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.18.6" +"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7d24e29c63869bb23495c163a92678c1c3341ecf74db420a20c6d3db74cbf5000fe908943f6106494e7225c0168945c150e528162274fd8fc7721966ad26930a + checksum: 882bf56bc932d015c2d83214133939ddcf342e5bcafa21f1a93b19f2e052145115e1e0351730897fd66e5f67cad7875b8a8d81ceb12b6e2a886ad0102cb4eb1f languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" +"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.19.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 + checksum: 92287fb797e522d99bdc77eaa573ce79ff0ad9f1cf4e7df374645e28e51dce0adad129f6f075430b129b5bac8dad843f65021970e12e992d6d6671f0d65bb1e0 languageName: node linkType: hard @@ -1542,6 +1744,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" + dependencies: + "@babel/code-frame": "npm:^7.22.13" + "@babel/parser": "npm:^7.22.15" + "@babel/types": "npm:^7.22.15" + checksum: 21e768e4eed4d1da2ce5d30aa51db0f4d6d8700bc1821fec6292587df7bba2fe1a96451230de8c64b989740731888ebf1141138bfffb14cacccf4d05c66ad93f + languageName: node + linkType: hard + "@babel/traverse@npm:^7.19.0": version: 7.19.3 resolution: "@babel/traverse@npm:7.19.3" @@ -1596,6 +1809,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/traverse@npm:7.23.3" + dependencies: + "@babel/code-frame": "npm:^7.22.13" + "@babel/generator": "npm:^7.23.3" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.23.3" + "@babel/types": "npm:^7.23.3" + debug: "npm:^4.1.0" + globals: "npm:^11.1.0" + checksum: 522ef8eefe1ed31cd392129efb2f8794ca25bd54b1ad7c3bfa7f46d20c47ef0e392d5c1654ddee3454eed5e546d04c9bfa38b04b82e47144aa545f87ba55572d + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.4, @babel/types@npm:^7.20.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.20.0 resolution: "@babel/types@npm:7.20.0" @@ -1640,6 +1871,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/types@npm:7.23.3" + dependencies: + "@babel/helper-string-parser": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" + to-fast-properties: "npm:^2.0.0" + checksum: 05ec1527d0468aa6f3e30fa821625322794055fb572c131aaa8befdf24d174407e2e5954c2b0a292a5456962e23383e36cf9d7cbb01318146d6140ce2128d000 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1647,6 +1889,33 @@ __metadata: languageName: node linkType: hard +"@bundled-es-modules/cookie@npm:^2.0.0": + version: 2.0.0 + resolution: "@bundled-es-modules/cookie@npm:2.0.0" + dependencies: + cookie: "npm:^0.5.0" + checksum: c8ef02aa5d3f6c786cfa407e1c93b4af29c600eb09990973f47a7a49e4771c1bec37c8f8e567638bb9cbc41f4e38d065ff1d8eaf9bf91f0c3613a6d60bc82c8c + languageName: node + linkType: hard + +"@bundled-es-modules/js-levenshtein@npm:^2.0.1": + version: 2.0.1 + resolution: "@bundled-es-modules/js-levenshtein@npm:2.0.1" + dependencies: + js-levenshtein: "npm:^1.1.6" + checksum: 13d0cbd2b00e563e09a797559dcff8c7e208c1f71e1787535a3d248f7e3d33ef3f0809b9f498d41788ab5fd399882dcca79917d70d97921b7dde94a282c1b7d8 + languageName: node + linkType: hard + +"@bundled-es-modules/statuses@npm:^1.0.1": + version: 1.0.1 + resolution: "@bundled-es-modules/statuses@npm:1.0.1" + dependencies: + statuses: "npm:^2.0.1" + checksum: 9bf6a2bcf040a66fb805da0e1446041fd9def7468bb5da29c5ce02adf121a3f7cec123664308059a62a46fcaee666add83094b76df6dce72e5cafa8e6bebe60d + languageName: node + linkType: hard + "@chevrotain/types@npm:^9.1.0": version: 9.1.0 resolution: "@chevrotain/types@npm:9.1.0" @@ -1874,6 +2143,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-arm64@npm:0.19.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm@npm:0.16.17" @@ -1881,6 +2157,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-arm@npm:0.19.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-x64@npm:0.16.17" @@ -1888,6 +2171,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-x64@npm:0.19.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-arm64@npm:0.16.17" @@ -1895,6 +2185,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/darwin-arm64@npm:0.19.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-x64@npm:0.16.17" @@ -1902,6 +2199,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/darwin-x64@npm:0.19.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-arm64@npm:0.16.17" @@ -1909,6 +2213,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/freebsd-arm64@npm:0.19.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-x64@npm:0.16.17" @@ -1916,6 +2227,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/freebsd-x64@npm:0.19.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm64@npm:0.16.17" @@ -1923,6 +2241,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-arm64@npm:0.19.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm@npm:0.16.17" @@ -1930,6 +2255,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-arm@npm:0.19.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ia32@npm:0.16.17" @@ -1937,6 +2269,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-ia32@npm:0.19.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-loong64@npm:0.16.17" @@ -1944,6 +2283,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-loong64@npm:0.19.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-mips64el@npm:0.16.17" @@ -1951,6 +2297,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-mips64el@npm:0.19.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ppc64@npm:0.16.17" @@ -1958,6 +2311,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-ppc64@npm:0.19.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-riscv64@npm:0.16.17" @@ -1965,6 +2325,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-riscv64@npm:0.19.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-s390x@npm:0.16.17" @@ -1972,6 +2339,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-s390x@npm:0.19.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-x64@npm:0.16.17" @@ -1979,6 +2353,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-x64@npm:0.19.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/netbsd-x64@npm:0.16.17" @@ -1986,6 +2367,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/netbsd-x64@npm:0.19.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/openbsd-x64@npm:0.16.17" @@ -1993,6 +2381,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/openbsd-x64@npm:0.19.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/sunos-x64@npm:0.16.17" @@ -2000,6 +2395,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/sunos-x64@npm:0.19.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-arm64@npm:0.16.17" @@ -2007,6 +2409,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-arm64@npm:0.19.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-ia32@npm:0.16.17" @@ -2014,6 +2423,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-ia32@npm:0.19.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-x64@npm:0.16.17" @@ -2021,6 +2437,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-x64@npm:0.19.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.4.1": version: 1.4.1 resolution: "@eslint/eslintrc@npm:1.4.1" @@ -2371,6 +2794,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.0": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": "npm:^1.0.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 072ace159c39ab85944bdabe017c3de15c5e046a4a4a772045b00ff05e2ebdcfa3840b88ae27e897d473eb4d4845b37be3c78e28910c779f5aeeeae2fb7f0cc2 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.2 resolution: "@jridgewell/gen-mapping@npm:0.3.2" @@ -2389,6 +2823,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: 64d59df8ae1a4e74315eb1b61e012f1c7bc8aac47a3a1e683f6fe7008eab07bc512a742b7aa7c0405685d1421206de58c9c2e6adbfe23832f8bd69408ffc183e + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -2396,13 +2837,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 26e768fae6045481a983e48aa23d8fcd23af5da70ebd74b0649000e815e7fbb01ea2bc088c9176b3fffeb9bec02184e58f46125ef3320b30eaa1f4094cfefa38 languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -2423,6 +2871,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.17": + version: 0.3.20 + resolution: "@jridgewell/trace-mapping@npm:0.3.20" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 683117e4e6707ef50c725d6d0ec4234687ff751f36fa46c2b3068931eb6a86b49af374d3030200777666579a992b7470d1bd1c591e9bf64d764dda5295f33093 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.15 resolution: "@jridgewell/trace-mapping@npm:0.3.15" @@ -2577,29 +3035,24 @@ __metadata: languageName: node linkType: hard -"@mswjs/cookies@npm:^0.2.2": - version: 0.2.2 - resolution: "@mswjs/cookies@npm:0.2.2" - dependencies: - "@types/set-cookie-parser": "npm:^2.4.0" - set-cookie-parser: "npm:^2.4.6" - checksum: f1b3b82a6821219494390d77d86383febc5f9d5bc21b0f47cc4d57d11af08cac1952d845011d8842ec6448a95e49efd0f35f6d56650c76a98848d70d9c78466d +"@mswjs/cookies@npm:^1.1.0": + version: 1.1.0 + resolution: "@mswjs/cookies@npm:1.1.0" + checksum: 168ed1966e579a4f454e6d2af5a015150cca570ac4c660f5b656e7bc021afacbf0b3d4ed3d03e9293550f3965c28ce1e293fa7037c6cf46ed7e268e21a1053a4 languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.17.5": - version: 0.17.7 - resolution: "@mswjs/interceptors@npm:0.17.7" +"@mswjs/interceptors@npm:^0.25.11": + version: 0.25.12 + resolution: "@mswjs/interceptors@npm:0.25.12" dependencies: - "@open-draft/until": "npm:^1.0.3" - "@types/debug": "npm:^4.1.7" - "@xmldom/xmldom": "npm:^0.8.3" - debug: "npm:^4.3.3" - headers-polyfill: "npm:^3.1.0" + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/logger": "npm:^0.3.0" + "@open-draft/until": "npm:^2.0.0" + is-node-process: "npm:^1.2.0" outvariant: "npm:^1.2.1" - strict-event-emitter: "npm:^0.2.4" - web-encoding: "npm:^1.1.5" - checksum: 06871c27a240c817c86e58de0364db700621b02194290c36e22b5610eb0273c7b08cceabdb36a5bf1a441392a7ebdbba540eb1bf40fca811b075ef5a6d009117 + strict-event-emitter: "npm:^0.5.1" + checksum: e8c71cbf46eb12d20c19a0efc323e3a447bdfc2c003787c4af815e6c928c01718af851f7d95cd924342ef157c7b95174e2fe1791b1352b02414463d9da63a8e5 languageName: node linkType: hard @@ -2650,10 +3103,27 @@ __metadata: languageName: node linkType: hard -"@open-draft/until@npm:^1.0.3": - version: 1.0.3 - resolution: "@open-draft/until@npm:1.0.3" - checksum: 323e92ebef0150ed0f8caedc7d219b68cdc50784fa4eba0377eef93533d3f46514eb2400ced83dda8c51bddc3d2c7b8e9cf95e5ec85ab7f62dfc015d174f62f2 +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: bc3bb1668a555bb87b33383cafcf207d9561e17d2ca0d9e61b7ce88e82b66e36a333d3676c1d39eb5848022c03c8145331fcdc828ba297f88cb1de9c5cef6c19 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 7a280f170bcd4e91d3eedbefe628efd10c3bd06dd2461d06a7fdbced89ef457a38785847f88cc630fb4fd7dfa176d6f77aed17e5a9b08000baff647433b5ff78 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 622be42950afc8e89715d0fd6d56cbdcd13e36625e23b174bd3d9f06f80e25f9adf75d6698af93bca1e1bf465b9ce00ec05214a12189b671fb9da0f58215b6f4 languageName: node linkType: hard @@ -2669,10 +3139,94 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.3.1": - version: 1.3.1 - resolution: "@remix-run/router@npm:1.3.1" - checksum: c992e73b037ff25a2952bc6c5a3110a024bd24107b8069d29eee0904f912d06b911a15f2b5e581faeadef4f8f9a637a732f026db388833f006944d39eede83be +"@remix-run/router@npm:1.12.0": + version: 1.12.0 + resolution: "@remix-run/router@npm:1.12.0" + checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.4.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-android-arm64@npm:4.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.4.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.4.1" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2806,6 +3360,19 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.20.4": + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 01e1b5f0a2109bde99093c2148a6ca73890dd8d4050734288cd46c9d170ab072a082a99486960051d3d76630673f117d574ebe6b880b5359114c70ae1dfb75b1 + languageName: node + linkType: hard + "@types/babel__generator@npm:*": version: 7.6.4 resolution: "@types/babel__generator@npm:7.6.4" @@ -2886,15 +3453,6 @@ __metadata: languageName: node linkType: hard -"@types/debug@npm:^4.1.7": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "npm:*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - "@types/emscripten@npm:^1.38.0": version: 1.39.6 resolution: "@types/emscripten@npm:1.39.6" @@ -3024,13 +3582,6 @@ __metadata: languageName: node linkType: hard -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: 6647b295fb2a5b8347c35efabaaed1777221f094be9941d387b4bf11df0eeacb3f8a4e495b8b66ce0e4c00593bc53ab5fc25f01ebb274cd989a834ae578099de - languageName: node - linkType: hard - "@types/node@npm:*": version: 18.8.2 resolution: "@types/node@npm:18.8.2" @@ -3045,10 +3596,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.11.18": - version: 18.11.18 - resolution: "@types/node@npm:18.11.18" - checksum: da05cf3a0036ef05cd695ac4cb265948593acbe723ba818f0ca0ce466b13ba99e1aac3a363086d6b8c7ea8f30c9233478e0293ac878a6f4b1d5515b10c392257 +"@types/node@npm:^18.18.9": + version: 18.18.9 + resolution: "@types/node@npm:18.18.9" + dependencies: + undici-types: "npm:~5.26.4" + checksum: ebd98b117c868edc597807cd0dab214b6110b9cd5ee406632641d0cf5b8bd7cb199caaac657a046d9203c441dbcfb3c71154ffa2d615ec89f80e6972143e6ec8 languageName: node linkType: hard @@ -3080,12 +3633,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.10": - version: 18.0.10 - resolution: "@types/react-dom@npm:18.0.10" +"@types/react-dom@npm:^18.2.15": + version: 18.2.15 + resolution: "@types/react-dom@npm:18.2.15" dependencies: "@types/react": "npm:*" - checksum: fbc4ea2eb2e5fff8716bd323f850904f3aec1cbb257bf0799a23111b6d98b83c5b7e58b96c4bdd11033004668424672fd29f7412160bb0cdf2305066de1ce300 + checksum: 57ea7e9e210d95fa18fde82fc585cb6252c9118c8793a38b37b07ccbba05d09d14f88cf76af46eecda41c430b4400f789a4bbc505eec459a15cbaf13f56f887a languageName: node linkType: hard @@ -3100,14 +3653,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.0.27": - version: 18.0.27 - resolution: "@types/react@npm:18.0.27" +"@types/react@npm:^18.2.37": + version: 18.2.37 + resolution: "@types/react@npm:18.2.37" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 41660220fc54a7309155f00c1a121ad72179ebd902ba1bbe21690dab6738b07aff48bab625183112ce17f185933e2a46a71887147d4b7559e539740ba3e0fedb + checksum: fab3a5960e710aad6c16ffe57f48a470c6bbbe9e6363f70accf114191ea3192a204e33b5657324f14e64b2095986327db6b728fc15156e05f7d30b6dca0d66a3 languageName: node linkType: hard @@ -3151,15 +3704,6 @@ __metadata: languageName: node linkType: hard -"@types/set-cookie-parser@npm:^2.4.0": - version: 2.4.2 - resolution: "@types/set-cookie-parser@npm:2.4.2" - dependencies: - "@types/node": "npm:*" - checksum: c31bf04eb9620829dc3c91bced74ac934ad039d20d20893fb5acac0f08769cbd4eef3bf7502a0289c7be59c3e9cfa456147b4e88bff47dd1b9efb4995ba5d5a3 - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" @@ -3167,6 +3711,13 @@ __metadata: languageName: node linkType: hard +"@types/statuses@npm:^2.0.1": + version: 2.0.4 + resolution: "@types/statuses@npm:2.0.4" + checksum: 3a806c3b96d1845e3e7441fbf0839037e95f717334760ddb7c29223c9a34a7206b68e2998631f89f1a1e3ef5b67b15652f6e8fa14987ebd7f6d38587c1bffd18 + languageName: node + linkType: hard + "@types/treeify@npm:^1.0.0": version: 1.0.0 resolution: "@types/treeify@npm:1.0.0" @@ -3311,28 +3862,28 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:^3.1.0": - version: 3.1.0 - resolution: "@vitejs/plugin-react@npm:3.1.0" +"@vitejs/plugin-react@npm:^4.2.0": + version: 4.2.0 + resolution: "@vitejs/plugin-react@npm:4.2.0" dependencies: - "@babel/core": "npm:^7.20.12" - "@babel/plugin-transform-react-jsx-self": "npm:^7.18.6" - "@babel/plugin-transform-react-jsx-source": "npm:^7.19.6" - magic-string: "npm:^0.27.0" + "@babel/core": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" + "@types/babel__core": "npm:^7.20.4" react-refresh: "npm:^0.14.0" peerDependencies: - vite: ^4.1.0-beta.0 - checksum: 54baf15170faed08c5c050ed6ac3b071e743d703f2c26ae685bf362bbaa2d8a733a98af0639f0662d474d95a6d91d008da9de8f3a51cc3e6660c4e642399cf2c + vite: ^4.2.0 || ^5.0.0 + checksum: 989d465f92588ed16902b822e1efe5c33bb13594b25d8d9d2ec4e7b23dd54847ff232b4318c0309c08acf38e1f27c182774bccf37122a4d04d0cba41c2ef7e67 languageName: node linkType: hard -"@vitejs/plugin-vue@npm:^4.0.0": - version: 4.0.0 - resolution: "@vitejs/plugin-vue@npm:4.0.0" +"@vitejs/plugin-vue@npm:^4.5.0": + version: 4.5.0 + resolution: "@vitejs/plugin-vue@npm:4.5.0" peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 - checksum: 8547661acff1612890a4caa3efdf4cc9d2aada69469825cba9e9f1f3d23da7009b3d955075938fc2abc3ee13cc09a50355ae88a78899a820f9166fb2283e4a41 + checksum: 15be17e5792eb7cfcf0ab0439eb40f53c0b6248ac32dbd01a2b1a315deb74724232ece7f607e1c2cd36241f6e2e9bdfc96dfdb495bfac8d272926e28e841a5ab languageName: node linkType: hard @@ -3502,15 +4053,6 @@ __metadata: languageName: node linkType: hard -"@wry/context@npm:^0.6.0": - version: 0.6.1 - resolution: "@wry/context@npm:0.6.1" - dependencies: - tslib: "npm:^2.3.0" - checksum: ff9c3ddd651dffb65ef84dba6038acec6051356833742b17d3dd4c14b136d1eed0bdfde784f263125e5802dde7638ffe3b3a09143f96c6fc6a4af5f5d83ffc7a - languageName: node - linkType: hard - "@wry/context@npm:^0.7.0": version: 0.7.0 resolution: "@wry/context@npm:0.7.0" @@ -3520,28 +4062,30 @@ __metadata: languageName: node linkType: hard -"@wry/equality@npm:^0.5.0": - version: 0.5.3 - resolution: "@wry/equality@npm:0.5.3" +"@wry/context@npm:^0.7.3": + version: 0.7.4 + resolution: "@wry/context@npm:0.7.4" dependencies: tslib: "npm:^2.3.0" - checksum: d2a0743a940ee30711fda60131ad98916ecb61466a45f8fbd7128ed311511faaa2b2533e3901210488de51aa9ec9de9c801266f88224bb6f185880f1256f33c2 + checksum: 70d648949a97a035b2be2d6ddb716d4162113e850ab2c4c86331b2da94a7e826204080ce04eee2a95665bd3a0b245bf2ea3aae9adfa57b004ae0d2d49bdb5c8f languageName: node linkType: hard -"@wry/trie@npm:^0.3.0": - version: 0.3.2 - resolution: "@wry/trie@npm:0.3.2" +"@wry/equality@npm:^0.5.6": + version: 0.5.7 + resolution: "@wry/equality@npm:0.5.7" dependencies: tslib: "npm:^2.3.0" - checksum: 151d06b519e1ff1c3acf6ee6846161b1d7d50bbecd4c48e5cd1b05f9e37c30602aff02e88f20105f6e6c54ae4123f9c4eb7715044d7fd927d4ba4ec3e755cd36 + checksum: 69dccf33c0c41fd7ec5550f5703b857c6484a949412ad747001da941270ea436648c3ab988a2091765304249585ac30c7b417fad8be9a7ce19c1221f71548e35 languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.8.3": - version: 0.8.6 - resolution: "@xmldom/xmldom@npm:0.8.6" - checksum: f2fd5c1a966d2bdd9cad8b7316dead4fb4832c44a102360c593287b2e10e357a5d162145ab13fa8efe8b07172d058b2a7550f07ca0fa0bee11e54a6d9d22f899 +"@wry/trie@npm:^0.4.3": + version: 0.4.3 + resolution: "@wry/trie@npm:0.4.3" + dependencies: + tslib: "npm:^2.3.0" + checksum: 106e021125cfafd22250a6631a0438a6a3debae7bd73f6db87fe42aa0757fe67693db0dfbe200ae1f60ba608c3e09ddb8a4e2b3527d56ed0a7e02aa0ee4c94e1 languageName: node linkType: hard @@ -4080,13 +4624,6 @@ __metadata: languageName: node linkType: hard -"@zxing/text-encoding@npm:0.9.0": - version: 0.9.0 - resolution: "@zxing/text-encoding@npm:0.9.0" - checksum: 268e4ef64b8eaa32b990240bdfd1f7b3e2b501a6ed866a565f7c9747f04ac884fbe0537fe12bb05d9241b98fb111270c0fd0023ef0a02d23a6619b4589e98f6b - languageName: node - linkType: hard - "JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -4346,13 +4883,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 4d4d5e86ea0425696f40717882f66a570647b94ac8d273ddc7549a9b61e5da099e149bf431530ccbd776bd74e02039eb8b5edf426e3e2211ee61af16698a9064 - languageName: node - linkType: hard - "axios@npm:^1.3.2": version: 1.3.3 resolution: "axios@npm:1.3.3" @@ -4573,6 +5103,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.21.9": + version: 4.22.1 + resolution: "browserslist@npm:4.22.1" + dependencies: + caniuse-lite: "npm:^1.0.30001541" + electron-to-chromium: "npm:^1.4.535" + node-releases: "npm:^2.0.13" + update-browserslist-db: "npm:^1.0.13" + bin: + browserslist: cli.js + checksum: 4a515168e0589c7b1ccbf13a93116ce0418cc5e65d228ec036022cf0e08773fdfb732e2abbf1e1188b96d19ecd4dd707504e75b6d393cba2782fc7d6a7fdefe8 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -4657,7 +5201,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": +"call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" dependencies: @@ -4706,17 +5250,14 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.1": - version: 4.1.1 - resolution: "chalk@npm:4.1.1" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: ae5031f4963fe47cd924a3b01fbdefba248b9f0be5444c0d843a591a229b1c8ee278b9b2dd87e788dcd6ab3395618262cbd05197fcc92175637c39b3257767fc +"caniuse-lite@npm:^1.0.30001541": + version: 1.0.30001563 + resolution: "caniuse-lite@npm:1.0.30001563" + checksum: dab23d85ddba75c4230348a1e491bb95bb9978f6b9dd78df6445cce9aede18ef97a2a24ce54d02aff3c67169a021221aaa04711f13d469ab4f72a487aa36205c languageName: node linkType: hard -"chalk@npm:^2.0.0": +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -4737,7 +5278,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -5109,10 +5650,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.4.2": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: 2e1de9fdedca54881eab3c0477aeb067f281f3155d9cfee9d28dfb252210d09e85e9d175c0a60689661feb9e35e588515352f2456bc1f8e8db4267e05fd70137 +"cookie@npm:^0.5.0": + version: 0.5.0 + resolution: "cookie@npm:0.5.0" + checksum: aae7911ddc5f444a9025fbd979ad1b5d60191011339bce48e555cb83343d0f98b865ff5c4d71fecdfb8555a5cafdc65632f6fce172f32aaf6936830a883a0380 languageName: node linkType: hard @@ -5277,7 +5818,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": +"define-properties@npm:^1.1.4": version: 1.1.4 resolution: "define-properties@npm:1.1.4" dependencies: @@ -5391,6 +5932,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.4.535": + version: 1.4.588 + resolution: "electron-to-chromium@npm:1.4.588" + checksum: a6b972d961416acbc2075c59760ba79b193d266d47deca8d04bbec44e6fc23b60a969d4ed6d1110f85fac05c96803e70e7c961da2146a4a92e31025bf031a51d + languageName: node + linkType: hard + "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" @@ -5471,49 +6019,6 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": - version: 1.20.3 - resolution: "es-abstract@npm:1.20.3" - dependencies: - call-bind: "npm:^1.0.2" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - function.prototype.name: "npm:^1.1.5" - get-intrinsic: "npm:^1.1.3" - get-symbol-description: "npm:^1.0.0" - has: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.3" - is-callable: "npm:^1.2.6" - is-negative-zero: "npm:^2.0.2" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - is-string: "npm:^1.0.7" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.12.2" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.4.3" - safe-regex-test: "npm:^1.0.0" - string.prototype.trimend: "npm:^1.0.5" - string.prototype.trimstart: "npm:^1.0.5" - unbox-primitive: "npm:^1.0.2" - checksum: ded429e3c75b89e7f2c90eaeced46b3607e515dd29c61e1d80eb639e392c0eadfeda6d70922bb6423c79947cdc793d20e1a206491875bd3798dbf14c5bc37ee5 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b - languageName: node - linkType: hard - "esbuild@npm:^0.16.14": version: 0.16.17 resolution: "esbuild@npm:0.16.17" @@ -5591,6 +6096,83 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.19.3": + version: 0.19.5 + resolution: "esbuild@npm:0.19.5" + dependencies: + "@esbuild/android-arm": "npm:0.19.5" + "@esbuild/android-arm64": "npm:0.19.5" + "@esbuild/android-x64": "npm:0.19.5" + "@esbuild/darwin-arm64": "npm:0.19.5" + "@esbuild/darwin-x64": "npm:0.19.5" + "@esbuild/freebsd-arm64": "npm:0.19.5" + "@esbuild/freebsd-x64": "npm:0.19.5" + "@esbuild/linux-arm": "npm:0.19.5" + "@esbuild/linux-arm64": "npm:0.19.5" + "@esbuild/linux-ia32": "npm:0.19.5" + "@esbuild/linux-loong64": "npm:0.19.5" + "@esbuild/linux-mips64el": "npm:0.19.5" + "@esbuild/linux-ppc64": "npm:0.19.5" + "@esbuild/linux-riscv64": "npm:0.19.5" + "@esbuild/linux-s390x": "npm:0.19.5" + "@esbuild/linux-x64": "npm:0.19.5" + "@esbuild/netbsd-x64": "npm:0.19.5" + "@esbuild/openbsd-x64": "npm:0.19.5" + "@esbuild/sunos-x64": "npm:0.19.5" + "@esbuild/win32-arm64": "npm:0.19.5" + "@esbuild/win32-ia32": "npm:0.19.5" + "@esbuild/win32-x64": "npm:0.19.5" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: f8ffe0cbab8a80ec63b6962b7d722da9e3dbe79a57d3cd998e107e35792068facd6f63e58ae19e919891456ed6cb73114a9777f0e7353ec8613b4fc75571d56d + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -5806,21 +6388,14 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be - languageName: node - linkType: hard - "example-vue@workspace:packages/example-vue": version: 0.0.0-use.local resolution: "example-vue@workspace:packages/example-vue" dependencies: "@playwright/test": "npm:^1.30.0" - "@vitejs/plugin-vue": "npm:^4.0.0" + "@vitejs/plugin-vue": "npm:^4.5.0" axios: "npm:^1.3.2" - msw: "npm:1.0.0" + msw: "npm:2.0.8" playwright-msw: "workspace:*" typescript: "npm:4.9.5" vite: "npm:4.1.1" @@ -5833,22 +6408,22 @@ __metadata: version: 0.0.0-use.local resolution: "example@workspace:packages/example" dependencies: - "@apollo/client": "npm:^3.7.7" + "@apollo/client": "npm:^3.8.7" "@playwright/test": "npm:^1.30.0" - "@types/node": "npm:^18.11.18" - "@types/react": "npm:^18.0.27" - "@types/react-dom": "npm:^18.0.10" - "@vitejs/plugin-react": "npm:^3.1.0" + "@types/node": "npm:^18.18.9" + "@types/react": "npm:^18.2.37" + "@types/react-dom": "npm:^18.2.15" + "@vitejs/plugin-react": "npm:^4.2.0" buffer: "npm:^6.0.3" - graphql: "npm:^16.6.0" - msw: "npm:1.0.0" + graphql: "npm:^16.8.1" + msw: "npm:2.0.8" playwright-msw: "workspace:*" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" react-query: "npm:^3.39.3" - react-router-dom: "npm:^6.8.0" + react-router-dom: "npm:^6.19.0" typescript: "npm:4.9.5" - vite: "npm:^4.1.1" + vite: "npm:^5.0.0" languageName: unknown linkType: soft @@ -6070,15 +6645,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 - languageName: node - linkType: hard - "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -6134,38 +6700,38 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" +"fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: "npm:latest" + checksum: 4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 conditions: os=darwin languageName: node linkType: hard -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: d83f2968030678f0b8c3f2183d63dcd969344eb8b55b4eb826a94ccac6de8b87c95bebffda37a6386c74f152284eb02956ff2c496897f35d32bdc2628ac68ac5 +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" +"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - functions-have-names: "npm:^1.2.2" - checksum: 5d426e5a38ac41747bcfce6191e0ec818ed18678c16cfc36b5d1ca87f56ff98c4ce958ee2c1ea2a18dc3da989844a37b1065311e2d2ae4cf12da8f82418b686b + node-gyp: "npm:latest" + conditions: os=darwin languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: d83f2968030678f0b8c3f2183d63dcd969344eb8b55b4eb826a94ccac6de8b87c95bebffda37a6386c74f152284eb02956ff2c496897f35d32bdc2628ac68ac5 languageName: node linkType: hard @@ -6199,7 +6765,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1": version: 1.1.3 resolution: "get-intrinsic@npm:1.1.3" dependencies: @@ -6233,16 +6799,6 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 7e5f298afe0f0872747dce4a949ce490ebc5d6dd6aefbbe5044543711c9b19a4dfaebdbc627aee99e1299d58a435b2fbfa083458c1d58be6dc03a3bada24d359 - languageName: node - linkType: hard - "git-raw-commits@npm:^2.0.0": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11" @@ -6405,10 +6961,10 @@ __metadata: languageName: node linkType: hard -"graphql@npm:^15.0.0 || ^16.0.0, graphql@npm:^16.6.0": - version: 16.6.0 - resolution: "graphql@npm:16.6.0" - checksum: f2ce5fdd5e1d8f66b40143b791e1063efe50b17071e0b06b30b8cd597a7fc08135d606586935db7e65dbd5ebbf207cd2f9b56c9c5cf4ad818f080d98f47282a4 +"graphql@npm:^16.8.1": + version: 16.8.1 + resolution: "graphql@npm:16.8.1" + checksum: 7a09d3ec5f75061afe2bd2421a2d53cf37273d2ecaad8f34febea1f1ac205dfec2834aec3419fa0a10fcc9fb345863b2f893562fb07ea825da2ae82f6392893c languageName: node linkType: hard @@ -6437,13 +6993,6 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b - languageName: node - linkType: hard - "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -6467,22 +7016,13 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: 464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 95546e7132efc895a9ae64a8a7cf52588601fc3d52e0304ed228f336992cdf0baaba6f3519d2655e560467db35a1ed79f6420c286cc91a13aa0647a31ed92570 - languageName: node - linkType: hard - "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -6508,10 +7048,10 @@ __metadata: languageName: node linkType: hard -"headers-polyfill@npm:^3.1.0": - version: 3.1.2 - resolution: "headers-polyfill@npm:3.1.2" - checksum: 8d61105d66dda2413941268d866845559b44df85aa72823530175ae108c738cf6458e1dc34e52a7d268024e0ea851f6ca8ad7a0e1a2f782108e1d7e46353b443 +"headers-polyfill@npm:^4.0.1": + version: 4.0.2 + resolution: "headers-polyfill@npm:4.0.2" + checksum: 70b53abf48a1d50760150624d6c7ca974a0d286ba102e411538f6dad6687ce51ce7cc60197e326df96f844548d6ff77d900e28c3cdbc0ba1fe09a05eae47156a languageName: node linkType: hard @@ -6739,31 +7279,10 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: "npm:^1.1.0" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 1c6d22f7977b325e51387191a992a553bf7c380db548a32c09bbb4563a799d739d3ef629841234290a032dc555ca7e89178e8a35404dad77b55f2676be8a1ba2 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: 1270b11e534a466fb4cf4426cbcc3a907c429389f7f4e4e3b288b42823562e88d6a509ceda8141a507de147ca506141f745005c0aa144569d94cf24a54eb52bc - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: 1270b11e534a466fb4cf4426cbcc3a907c429389f7f4e4e3b288b42823562e88d6a509ceda8141a507de147ca506141f745005c0aa144569d94cf24a54eb52bc languageName: node linkType: hard @@ -6774,15 +7293,6 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: "npm:^1.0.1" - checksum: cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -6792,17 +7302,7 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.1.5, is-callable@npm:^1.2.6": +"is-callable@npm:^1.1.5": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 @@ -6818,15 +7318,6 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -6855,15 +7346,6 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -6887,26 +7369,10 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: edbec1a9e6454d68bf595a114c3a72343d2d0be7761d8173dae46c0b73d05bb8fe9398c85d121e7794a66467d2f40b4a610b0be84cd804262d234fc634c86131 - languageName: node - linkType: hard - -"is-node-process@npm:^1.0.1": - version: 1.0.1 - resolution: "is-node-process@npm:1.0.1" - checksum: a50a45c60608b323fb4a5a2a57f3021e3af4286347ef2f5ce33e83c7e380a743e2ee18f90cb1f8434cb911a7f0b4536862c5a806c93b169855dbfbca68a86c56 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 930765cdc6d81ab8f1bbecbea4a8d35c7c6d88a3ff61f3630e0fc7f22d624d7661c1df05c58547d0eb6a639dfa9304682c8e342c4113a6ed51472b704cee2928 languageName: node linkType: hard @@ -6938,25 +7404,6 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 23d82259d6cd6dbb7c4ff3e4efeff0c30dbc6b7f88698498c17f9821cb3278d17d2b6303a5341cbd638ab925a28f3f086a6c79b3df70ac986cc526c725d43b4f - languageName: node - linkType: hard - "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -6980,24 +7427,6 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 - languageName: node - linkType: hard - "is-text-path@npm:^1.0.1": version: 1.0.1 resolution: "is-text-path@npm:1.0.1" @@ -7007,19 +7436,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "is-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - es-abstract: "npm:^1.20.0" - for-each: "npm:^0.3.3" - has-tostringtag: "npm:^1.0.0" - checksum: 6ad6f9d5f12f328d68c1a25af5932f9d5465f3440dda4296fffd5c9edf6557b178642adc386ec65b4375e0c5f06db855ba78e0535b7fdf3ffa10aa09b16f15b6 - languageName: node - linkType: hard - "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -7027,15 +7443,6 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 - languageName: node - linkType: hard - "is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -7731,7 +8138,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.1, json5@npm:^2.2.2": +"json5@npm:^2.2.1, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -8048,15 +8455,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.27.0": - version: 0.27.0 - resolution: "magic-string@npm:0.27.0" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.13" - checksum: 10a18a48d22fb14467d6cb4204aba58d6790ae7ba023835dc7a65e310cf216f042a17fab1155ba43e47117310a9b7c3fd3bb79f40be40f5124d6b1af9e96399b - languageName: node - linkType: hard - "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -8405,37 +8803,39 @@ __metadata: languageName: node linkType: hard -"msw@npm:1.0.0": - version: 1.0.0 - resolution: "msw@npm:1.0.0" +"msw@npm:2.0.8": + version: 2.0.8 + resolution: "msw@npm:2.0.8" dependencies: - "@mswjs/cookies": "npm:^0.2.2" - "@mswjs/interceptors": "npm:^0.17.5" - "@open-draft/until": "npm:^1.0.3" + "@bundled-es-modules/cookie": "npm:^2.0.0" + "@bundled-es-modules/js-levenshtein": "npm:^2.0.1" + "@bundled-es-modules/statuses": "npm:^1.0.1" + "@mswjs/cookies": "npm:^1.1.0" + "@mswjs/interceptors": "npm:^0.25.11" + "@open-draft/until": "npm:^2.1.0" "@types/cookie": "npm:^0.4.1" "@types/js-levenshtein": "npm:^1.1.1" - chalk: "npm:4.1.1" + "@types/statuses": "npm:^2.0.1" + chalk: "npm:^4.1.2" chokidar: "npm:^3.4.2" - cookie: "npm:^0.4.2" - graphql: "npm:^15.0.0 || ^16.0.0" - headers-polyfill: "npm:^3.1.0" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:^4.0.1" inquirer: "npm:^8.2.0" - is-node-process: "npm:^1.0.1" + is-node-process: "npm:^1.2.0" js-levenshtein: "npm:^1.1.6" - node-fetch: "npm:^2.6.7" - outvariant: "npm:^1.3.0" + outvariant: "npm:^1.4.0" path-to-regexp: "npm:^6.2.0" - strict-event-emitter: "npm:^0.4.3" + strict-event-emitter: "npm:^0.5.0" type-fest: "npm:^2.19.0" yargs: "npm:^17.3.1" peerDependencies: - typescript: ">= 4.4.x <= 4.9.x" + typescript: ">= 4.7.x <= 5.2.x" peerDependenciesMeta: typescript: optional: true bin: msw: cli/index.js - checksum: 19711f0c712cd30e91dd704921a1a63889248519a98060dd4e20fd0ad95f1e0e8e0ae34edf2ff9842b6c51b96ae4b8939ec7aeca6552d004bd947d88ef876500 + checksum: fdcc44c57f7739d746a5333bf1fb0c7aa68ec8fc49596cdf8f83f2fd31463fb0206caa6b0395cc76fe84c2f594df68c1a72a323aa1b72196af3ff6ca40830cae languageName: node linkType: hard @@ -8478,6 +8878,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.6": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -8506,20 +8915,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 4bc9245383db92c35601a798c9a992fdf38d99920ceac11e0e6512ef3014d188b3807ccb060bc6c4bdb57a145030c73f5b5fd6730f665979f9264bc43ca3afea - languageName: node - linkType: hard - "node-gyp@npm:latest": version: 9.2.0 resolution: "node-gyp@npm:9.2.0" @@ -8547,6 +8942,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.13": + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: c9bb813aab2717ff8b3015ecd4c7c5670a5546e9577699a7c84e8d69230cd3b1ce8f863f8e9b50f18b19a5ffa4b9c1a706bbbfe4c378de955fedbab04488a338 + languageName: node + linkType: hard + "node-releases@npm:^2.0.6": version: 2.0.6 resolution: "node-releases@npm:2.0.6" @@ -8650,7 +9052,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.12.2": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" checksum: aa11100d45fa919b36448347d4f7c8a78b0247886881db56a2026b512c4042a9749e64894519b00a4db8c6e2b713a965b5ceaa3b59324aeb3da007c54a33bc58 @@ -8664,7 +9066,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.0": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -8719,13 +9121,14 @@ __metadata: languageName: node linkType: hard -"optimism@npm:^0.16.1": - version: 0.16.1 - resolution: "optimism@npm:0.16.1" +"optimism@npm:^0.17.5": + version: 0.17.5 + resolution: "optimism@npm:0.17.5" dependencies: - "@wry/context": "npm:^0.6.0" - "@wry/trie": "npm:^0.3.0" - checksum: d1d49d546e022677e2967dbd4c474bccd87513c2e739b5b26d94ab91ac8783ccd396ef9661b6732ce3ee94f0dab00c89a105e38eb7027b2c99424e9d99175fb9 + "@wry/context": "npm:^0.7.0" + "@wry/trie": "npm:^0.4.3" + tslib: "npm:^2.3.0" + checksum: a56bff5b9c483752f13858a72d79dfbd4d54b969522a5c7809573b10f4a971af34a039b726acda97fdad67465ca150c24b9668df0f86072c54b519e24e82317f languageName: node linkType: hard @@ -8767,13 +9170,20 @@ __metadata: languageName: node linkType: hard -"outvariant@npm:^1.2.1, outvariant@npm:^1.3.0": +"outvariant@npm:^1.2.1": version: 1.3.0 resolution: "outvariant@npm:1.3.0" checksum: 92221c200550c6d9e5060da82a0ed256013f7b3d4d0cadfc2caff9cdfe08057189aa4f42eccd4c159527f195ae275cac38b2f99704a469d4fc584eac0cb92c5e languageName: node linkType: hard +"outvariant@npm:^1.4.0": + version: 1.4.0 + resolution: "outvariant@npm:1.4.0" + checksum: 07b9bcb9b3a2ff1b3db02af6b07d70e663082b30ddc08ff475d7c85fc623fdcc4433a4ab5b88f6902b62dbb284eef1be386aa537e14cef0519fad887ec483054 + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -8977,22 +9387,22 @@ __metadata: "@babel/preset-env": "npm:^7.20.2" "@babel/preset-typescript": "npm:^7.18.6" "@jest/globals": "npm:^29.4.1" - "@mswjs/cookies": "npm:^0.2.2" + "@mswjs/cookies": "npm:^1.1.0" "@playwright/test": "npm:^1.30.0" "@types/babel__core": "npm:^7.20.0" "@types/babel__preset-env": "npm:^7.9.2" "@types/jest": "npm:^29.4.0" - "@types/node": "npm:^18.11.18" + "@types/node": "npm:^18.18.9" "@types/rimraf": "npm:3.0.2" babel-jest: "npm:^29.4.1" jest: "npm:^29.4.1" - msw: "npm:1.0.0" + msw: "npm:2.0.8" rimraf: "npm:3.0.2" - strict-event-emitter: "npm:^0.4.4" + strict-event-emitter: "npm:^0.5.0" typescript: "npm:4.9.5" peerDependencies: "@playwright/test": ">=1.20.0" - msw: ">=0.47.3" + msw: ^2.0.0 languageName: unknown linkType: soft @@ -9014,6 +9424,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.31": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" + dependencies: + nanoid: "npm:^3.3.6" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 1a6653e72105907377f9d4f2cd341d8d90e3fde823a5ddea1e2237aaa56933ea07853f0f2758c28892a1d70c53bbaca200eb8b80f8ed55f13093003dbec5afa0 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -9251,27 +9672,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.8.0": - version: 6.8.0 - resolution: "react-router-dom@npm:6.8.0" +"react-router-dom@npm:^6.19.0": + version: 6.19.0 + resolution: "react-router-dom@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.3.1" - react-router: "npm:6.8.0" + "@remix-run/router": "npm:1.12.0" + react-router: "npm:6.19.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 7eb0be6a5df786a21c4546819ce17ad8694e2a53de7a637570d663784e22892a1b4f9d649e833007d0ccd76468036efec50df24c0e3109b94bbfbf14b4e06954 + checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab languageName: node linkType: hard -"react-router@npm:6.8.0": - version: 6.8.0 - resolution: "react-router@npm:6.8.0" +"react-router@npm:6.19.0": + version: 6.19.0 + resolution: "react-router@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.3.1" + "@remix-run/router": "npm:1.12.0" peerDependencies: react: ">=16.8" - checksum: 160e0f97126ebb9ec5a151af4ea23d33f53824ee1bdf53327d9e8fec144ff8f8e75afbe9093805507d3361371b2817b7ecaff058ab7baef312165232c87b69f3 + checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 languageName: node linkType: hard @@ -9383,17 +9804,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - functions-have-names: "npm:^1.2.2" - checksum: 3cde7cd22f0cf9d04db0b77c825b14824c6e7d2ec77e17e8dba707ad1b3c70bb3f2ac5b4cad3c0932045ba61cb2fd1b8ef84a49140e952018bdae065cc001670 - languageName: node - linkType: hard - "regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" @@ -9598,6 +10008,56 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.2.0": + version: 4.4.1 + resolution: "rollup@npm:4.4.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.4.1" + "@rollup/rollup-android-arm64": "npm:4.4.1" + "@rollup/rollup-darwin-arm64": "npm:4.4.1" + "@rollup/rollup-darwin-x64": "npm:4.4.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.4.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.4.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.4.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.4.1" + "@rollup/rollup-linux-x64-musl": "npm:4.4.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.4.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.4.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.4.1" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 128667d4af7703797eab63b802f538f65dcffda7ec9f03709b36d03969738a61d660119fc3e42a01cf420b87039159b09095b4c46382f02fbc94c72b1cfe51e2 + languageName: node + linkType: hard + "root@workspace:.": version: 0.0.0-use.local resolution: "root@workspace:." @@ -9657,13 +10117,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 - languageName: node - linkType: hard - "safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -9671,14 +10124,10 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-regex: "npm:^1.1.4" - checksum: c7248dfa07891aa634c8b9c55da696e246f8589ca50e7fd14b22b154a106e83209ddf061baf2fa45ebfbd485b094dc7297325acfc50724de6afe7138451b42a9 +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 languageName: node linkType: hard @@ -9727,6 +10176,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e + languageName: node + linkType: hard + "semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": version: 7.3.7 resolution: "semver@npm:7.3.7" @@ -9745,13 +10203,6 @@ __metadata: languageName: node linkType: hard -"set-cookie-parser@npm:^2.4.6": - version: 2.5.1 - resolution: "set-cookie-parser@npm:2.5.1" - checksum: affa51ad3a4c21e947e4aa58a7b2c84661126b972b7ef84a95ffa36c4c3c8ff0f35d031e8c4a3239c5729778a0edaf5a9cad5eeb46d46721fa0584e9ba3d57ef - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -9768,17 +10219,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: c4998d9fc530b0e75a7fd791ad868fdc42846f072734f9080ff55cc8dc7d3899abcda24fd896aa6648c3ab7021b4bb478073eb4f44dfd55bce9714bc1a7c5d45 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -9977,6 +10417,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:^2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + languageName: node + linkType: hard + "stream-buffers@npm:^3.0.2": version: 3.0.2 resolution: "stream-buffers@npm:3.0.2" @@ -10004,19 +10451,10 @@ __metadata: languageName: node linkType: hard -"strict-event-emitter@npm:^0.2.4": - version: 0.2.8 - resolution: "strict-event-emitter@npm:0.2.8" - dependencies: - events: "npm:^3.3.0" - checksum: 6ac06fe72a6ee6ae64d20f1dd42838ea67342f1b5f32b03b3050d73ee6ecee44b4d5c4ed2965a7154b47991e215f373d4e789e2b2be2769cd80e356126c2ca53 - languageName: node - linkType: hard - -"strict-event-emitter@npm:^0.4.3, strict-event-emitter@npm:^0.4.4": - version: 0.4.4 - resolution: "strict-event-emitter@npm:0.4.4" - checksum: 1d115f02b4dfbdf0ed5dc18335c6a14f6bbfb2f248787a34ae631b4553047c268560c111b04cd39502d0648061dfec8669048e1de6244387e80e5de393b95cf9 +"strict-event-emitter@npm:^0.5.0, strict-event-emitter@npm:^0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 25c84d88be85940d3547db665b871bfecea4ea0bedfeb22aae8db48126820cfb2b0bc2fba695392592a09b1aa36b686d6eede499e1ecd151593c03fe5a50d512 languageName: node linkType: hard @@ -10059,28 +10497,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.19.5" - checksum: 14e660a4bda6a2a2280ea9bb1ca445aaeeb7a88c08272b107d13b98a4322b62954de47bb3f7cea46f281b6028fb8581e83d3e61ef14999127848834e31b4168c - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.19.5" - checksum: 194a07b04a651ab1a31efa2ae8a7681270d3cc76f2566fe593d94cc6c89130d32c5972ee53cdf7cd5f9801f519874cb265b3c971a7342dfdd674a3a3908143f2 - languageName: node - linkType: hard - "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -10309,13 +10725,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 8f1f5aa6cb232f9e1bdc86f485f916b7aa38caee8a778b378ffec0b70d9307873f253f5cbadbe2955ece2ac5c83d0dc14a77513166ccd0a0c7fe197e21396695 - languageName: node - linkType: hard - "treeify@npm:^1.1.0": version: 1.1.0 resolution: "treeify@npm:1.1.0" @@ -10537,15 +10946,10 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 0097779d94bc0fd26f0418b3a05472410408877279141ded2bd449167be1aed7ea5b76f756562cb3586a07f251b90799bab22d9019ceba49c037c76445f7cddd languageName: node linkType: hard @@ -10615,6 +11019,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" + dependencies: + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 9074b4ef34d2ed931f27d390aafdd391ee7c45ad83c508e8fed6aaae1eb68f81999a768ed8525c6f88d4001a4fbf1b8c0268f099d0e8e72088ec5945ac796acf + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.9": version: 1.0.9 resolution: "update-browserslist-db@npm:1.0.9" @@ -10645,20 +11063,6 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.3": - version: 0.12.4 - resolution: "util@npm:0.12.4" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - safe-buffer: "npm:^5.1.2" - which-typed-array: "npm:^1.1.2" - checksum: 8287e2fdff2a98997a3436663535856e6be76ca1c7b6ed167b89a3dd6fbaf6934338ca2e34a189bcd6c6cf415680d20472381ac681bff07d33ef98c6f7126296 - languageName: node - linkType: hard - "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -10687,7 +11091,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:4.1.1, vite@npm:^4.1.1": +"vite@npm:4.1.1": version: 4.1.1 resolution: "vite@npm:4.1.1" dependencies: @@ -10725,6 +11129,46 @@ __metadata: languageName: node linkType: hard +"vite@npm:^5.0.0": + version: 5.0.0 + resolution: "vite@npm:5.0.0" + dependencies: + esbuild: "npm:^0.19.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.31" + rollup: "npm:^4.2.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 9a247a5657330ede5c131e782f2fb2adda77d493db2d528524378706108c1560ca4fe9ec0a865e5250978f5e2649c4da690834d2aab4dbf6175f1782cff6bd03 + languageName: node + linkType: hard + "vue-template-compiler@npm:^2.7.14": version: 2.7.14 resolution: "vue-template-compiler@npm:2.7.14" @@ -10780,63 +11224,6 @@ __metadata: languageName: node linkType: hard -"web-encoding@npm:^1.1.5": - version: 1.1.5 - resolution: "web-encoding@npm:1.1.5" - dependencies: - "@zxing/text-encoding": "npm:0.9.0" - util: "npm:^0.12.3" - dependenciesMeta: - "@zxing/text-encoding": - optional: true - checksum: 243518cfa8388ac05eeb4041bd330d38c599476ff9a93239b386d1ba2af130089a2fcefb0cf65b385f989105ff460ae69dca7e42236f4d98dc776b04e558cdb5 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: b65b9f8d6854572a84a5c69615152b63371395f0c5dcd6729c45789052296df54314db2bc3e977df41705eacb8bc79c247cee139a63fa695192f95816ed528ad - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: f95adbc1e80820828b45cc671d97da7cd5e4ef9deb426c31bcd5ab00dc7103042291613b3ef3caec0a2335ed09e0d5ed026c940755dbb6d404e2b27f940fdf07 - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2": - version: 1.1.8 - resolution: "which-typed-array@npm:1.1.8" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - es-abstract: "npm:^1.20.0" - for-each: "npm:^0.3.3" - has-tostringtag: "npm:^1.0.0" - is-typed-array: "npm:^1.1.9" - checksum: 5277b539400cfa72638046bd9d31bc3e9a0eca8cd43b24433e05dd09a34f1fffa9bbcc353e8d89d21e28e151e001881be38b2a31b7cc80cc574a74658cb948c8 - languageName: node - linkType: hard - "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2"