From 01a87c14263cd077fe4b57b5c5bc76d58982cce7 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Wed, 15 Jan 2025 17:24:16 +0900 Subject: [PATCH 01/21] add storybook testing setup for client --- packages/client/.eslintrc.js | 6 +- packages/client/.gitignore | 3 + packages/client/.storybook/main.ts | 38 + packages/client/.storybook/preview-head.html | 18 + packages/client/.storybook/preview.tsx | 29 + packages/client/package.json | 20 +- packages/client/public/mockServiceWorker.js | 307 ++++++++ .../client/src/stories/Workqueue.stories.tsx | 46 ++ .../src/v2-events/features/events/fixtures.ts | 48 +- packages/client/tsconfig.json | 2 +- .../fixtures/tennis-club-membership-event.ts | 28 +- yarn.lock | 704 +++++++++++++++++- 12 files changed, 1196 insertions(+), 53 deletions(-) create mode 100644 packages/client/.storybook/main.ts create mode 100644 packages/client/.storybook/preview-head.html create mode 100644 packages/client/.storybook/preview.tsx create mode 100644 packages/client/public/mockServiceWorker.js create mode 100644 packages/client/src/stories/Workqueue.stories.tsx diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js index 7378d925d4b..98b6363df3d 100644 --- a/packages/client/.eslintrc.js +++ b/packages/client/.eslintrc.js @@ -9,11 +9,7 @@ * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ module.exports = { - extends: [ - '../../.eslintrc.js', - 'eslint-config-react-app', - 'plugin:react/recommended' - ], + extends: ['../../.eslintrc.js', 'eslint-config-react-app', 'plugin:react/recommended', 'plugin:storybook/recommended', 'plugin:storybook/recommended'], plugins: ['react', 'formatjs'], env: { es6: true, diff --git a/packages/client/.gitignore b/packages/client/.gitignore index 25bda6de491..a82cd0e2739 100644 --- a/packages/client/.gitignore +++ b/packages/client/.gitignore @@ -31,3 +31,6 @@ src/i18n/locales/en.csv graphql.schema.json .lh .idea + +*storybook.log +storybook-static \ No newline at end of file diff --git a/packages/client/.storybook/main.ts b/packages/client/.storybook/main.ts new file mode 100644 index 00000000000..c942fbcdb2b --- /dev/null +++ b/packages/client/.storybook/main.ts @@ -0,0 +1,38 @@ +import type { StorybookConfig } from '@storybook/react-vite' + +import { join, dirname } from 'path' + +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))) +} +const config: StorybookConfig = { + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@chromatic-com/storybook'), + getAbsolutePath('@storybook/addon-interactions') + ], + framework: { + name: getAbsolutePath('@storybook/react-vite'), + options: {} + }, + viteFinal: (config) => { + delete (config.resolve?.alias as any)?.crypto + config.plugins = config.plugins?.filter((plugins) => { + const list = Array.isArray(plugins) ? plugins : [plugins] + return !list + .filter( + (plugin): plugin is Plugin => + typeof plugin === 'object' && plugin !== null && 'name' in plugin + ) + .some((plugin) => plugin.name.startsWith('vite-plugin-pwa')) + }) + return config + } +} +export default config diff --git a/packages/client/.storybook/preview-head.html b/packages/client/.storybook/preview-head.html new file mode 100644 index 00000000000..21cf63ee3d8 --- /dev/null +++ b/packages/client/.storybook/preview-head.html @@ -0,0 +1,18 @@ + diff --git a/packages/client/.storybook/preview.tsx b/packages/client/.storybook/preview.tsx new file mode 100644 index 00000000000..7b0bcadef42 --- /dev/null +++ b/packages/client/.storybook/preview.tsx @@ -0,0 +1,29 @@ +import type { Preview } from '@storybook/react' +import React from 'react' +import { MemoryRouter } from 'react-router-dom' +import { I18nContainer } from '../src/i18n/components/I18nContainer' +import { Provider } from 'react-redux' +import { createStore } from '../src/store' +import { ThemeProvider } from 'styled-components' +import { getTheme } from '@opencrvs/components/lib/theme' + +const { store } = createStore() + +const preview: Preview = { + parameters: {}, + decorators: [ + (Story) => ( + + + + + + + + + + ) + ] +} + +export default preview diff --git a/packages/client/package.json b/packages/client/package.json index 4f3230b97a0..479411df27a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -19,7 +19,10 @@ "test:compilation": "tsc --noEmit", "extract:translations": "bash extract-translations.sh", "generate-gateway-types": "NODE_OPTIONS=--dns-result-order=ipv4first graphql-codegen --config codegen.ts && prettier --write src/utils/gateway.ts", - "build:clean": "rm -rf build" + "build:clean": "rm -rf build", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", + "chromatic": "npx chromatic --project-token=chpt_00979ecfbf44023" }, "lint-staged": { "src/**/*.{ts,tsx}": [ @@ -116,11 +119,19 @@ "zustand": "^5.0.2" }, "devDependencies": { + "@chromatic-com/storybook": "^3.2.3", "@graphql-codegen/add": "^5.0.0", "@graphql-codegen/cli": "^5.0.0", "@graphql-codegen/introspection": "^3.0.0", "@graphql-codegen/typescript": "^3.0.0", "@graphql-codegen/typescript-operations": "^3.0.0", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-onboarding": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/react": "^8.4.7", + "@storybook/react-vite": "^8.4.7", + "@storybook/test": "^8.4.7", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.1.0", "@types/browser-image-compression": "^1.0.13", @@ -148,6 +159,7 @@ "@vitest/coverage-c8": "^0.25.5", "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", "chalk": "^2.4.1", + "crypto-js": "^4.2.0", "csv-stringify": "^6.4.6", "csv2json": "^2.0.2", "enzyme": "^3.4.4", @@ -161,14 +173,18 @@ "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react": "^7.13.0", "eslint-plugin-react-hooks": "^4.0.8", + "eslint-plugin-storybook": "^0.11.2", "fetch-mock": "^10.0.0", "glob": "^7.1.2", + "isomorphic-fetch": "^3.0.0", "jsonwebtoken": "^9.0.0", - "msw": "^2.6.8", + "msw": "^2.7.0", + "msw-trpc": "^2.0.0-beta.1", "opener": "^1.5.1", "prettier": "2.8.8", "qrcode": "^1.5.1", "serve": "^14.2.0", + "storybook": "^8.4.7", "stylelint": "^14.11.0", "stylelint-config-recommended": "^9.0.0", "stylelint-config-styled-components": "^0.1.1", diff --git a/packages/client/public/mockServiceWorker.js b/packages/client/public/mockServiceWorker.js new file mode 100644 index 00000000000..815bc3e3b88 --- /dev/null +++ b/packages/client/public/mockServiceWorker.js @@ -0,0 +1,307 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '' +const INTEGRITY_CHECKSUM = '' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window' + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE' + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM + } + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType + } + } + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()) + } + }, + [responseClone.body] + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window' + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get('accept') + if (acceptHeader) { + const values = acceptHeader.split(',').map((value) => value.trim()) + const filteredValues = values.filter( + (value) => value !== 'msw/passthrough' + ) + + if (filteredValues.length > 0) { + headers.set('accept', filteredValues.join(', ')) + } else { + headers.delete('accept') + } + } + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + 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': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)) + ) + }) +} + +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 + }) + + return mockedResponse +} diff --git a/packages/client/src/stories/Workqueue.stories.tsx b/packages/client/src/stories/Workqueue.stories.tsx new file mode 100644 index 00000000000..a1e9614310f --- /dev/null +++ b/packages/client/src/stories/Workqueue.stories.tsx @@ -0,0 +1,46 @@ +import { + tennisClubMembershipEvent, + tennisClubMembershipEventIndex +} from '@client/v2-events/features/events/fixtures' +import { WorkqueueIndex } from '@client/v2-events/features/workqueues/Workqueue' +import { TRPCProvider } from '@client/v2-events/trpc' +import { AppRouter } from '@gateway/v2-events/events/router' +import type { Meta, StoryObj } from '@storybook/react' +import { createTRPCMsw } from 'msw-trpc' +import { setupWorker } from 'msw/browser' +import React from 'react' +import superjson from 'superjson' + +const trpcMsw = createTRPCMsw({ + baseUrl: '/api/events', + transformer: { input: superjson, output: superjson } +}) + +const worker = setupWorker( + trpcMsw.config.get.query(() => { + return [tennisClubMembershipEvent] + }), + trpcMsw.events.get.query(() => { + return [tennisClubMembershipEventIndex] + }) +) + +const meta: Meta = { + title: 'Workqueue', + component: WorkqueueIndex, + loaders: [ + async () => { + await worker.start() + } + ], + decorators: [ + (Story) => ( + + + + ) + ] +} + +export default meta +export const Default: StoryObj = {} diff --git a/packages/client/src/v2-events/features/events/fixtures.ts b/packages/client/src/v2-events/features/events/fixtures.ts index 9fedb20ee0c..6eaf73bb3d5 100644 --- a/packages/client/src/v2-events/features/events/fixtures.ts +++ b/packages/client/src/v2-events/features/events/fixtures.ts @@ -8,7 +8,8 @@ * * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ -import { EventConfig, FormConfig } from '@opencrvs/commons/client' +import { v4 as uuid } from 'uuid' +import { EventConfig, EventIndex, FormConfig } from '@opencrvs/commons/client' export const DEFAULT_FORM = { label: { @@ -157,16 +158,36 @@ export const tennisClubMembershipEvent = { }, fields: [ { - id: 'applicant.firstname' + id: 'applicant.firstname', + label: { + defaultMessage: 'First name', + description: 'Label for the gien field from form.', + id: 'event.tennis-club-membership.summary.field.firstname.label' + } }, { - id: 'event.type' + id: 'event.type', + label: { + defaultMessage: 'Type', + description: 'Label for type', + id: 'event.tennis-club-membership.workqueue.in-progress.field.type.label' + } }, { - id: 'event.createdAt' + id: 'event.createdAt', + label: { + defaultMessage: 'Created at', + description: 'Label for created at', + id: 'event.tennis-club-membership.workqueue.in-progress.field.createdAt.label' + } }, { - id: 'event.modifiedAt' + id: 'event.modifiedAt', + label: { + defaultMessage: 'Modified at', + description: 'Label for modified at', + id: 'event.tennis-club-membership.workqueue.in-progress.field.modifiedAt.label' + } } ], filters: [ @@ -263,3 +284,20 @@ export const tennisClubMembershipEvent = { } ] } satisfies EventConfig + +export const tennisClubMembershipEventIndex: EventIndex = { + id: uuid(), + type: 'TENNIS_CLUB_MEMBERSHIP', + status: 'CREATED', + createdAt: '2023-03-01T00:00:00.000Z', + createdBy: uuid(), + createdAtLocation: uuid(), + modifiedAt: '2023-03-01T00:00:00.000Z', + assignedTo: null, + updatedBy: 'system', + data: { + 'applicant.firstname': 'John', + 'applicant.surname': 'Doe', + 'applicant.dob': '1990-01-01' + } +} diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index b26905d8a24..84902681645 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -18,6 +18,6 @@ "noFallthroughCasesInSwitch": true, "types": ["vitest/globals", "fhir"] }, - "include": ["src", "typings", "codegen.ts", "vite.config.ts"], + "include": ["src", "typings", "codegen.ts", "vite.config.ts", ".storybook"], "extends": "./tsconfig.paths.json" } diff --git a/packages/commons/src/fixtures/tennis-club-membership-event.ts b/packages/commons/src/fixtures/tennis-club-membership-event.ts index 2c2041257c5..0dd6d80202a 100644 --- a/packages/commons/src/fixtures/tennis-club-membership-event.ts +++ b/packages/commons/src/fixtures/tennis-club-membership-event.ts @@ -44,16 +44,36 @@ export const tennisClubMembershipEvent = defineConfig({ }, fields: [ { - id: 'applicant.firstname' + id: 'applicant.firstname', + label: { + defaultMessage: 'First name', + description: 'Label for first name', + id: 'event.tennis-club-membership.workqueue.in-progress.field.firstname.label' + } }, { - id: 'event.type' + id: 'event.type', + label: { + defaultMessage: 'Type', + description: 'Label for type', + id: 'event.tennis-club-membership.workqueue.in-progress.field.type.label' + } }, { - id: 'event.createdAt' + id: 'event.createdAt', + label: { + defaultMessage: 'Created at', + description: 'Label for created at', + id: 'event.tennis-club-membership.workqueue.in-progress.field.createdAt.label' + } }, { - id: 'event.modifiedAt' + id: 'event.modifiedAt', + label: { + defaultMessage: 'Modified at', + description: 'Label for modified at', + id: 'event.tennis-club-membership.workqueue.in-progress.field.modifiedAt.label' + } } ], filters: [ diff --git a/yarn.lock b/yarn.lock index 2dc5a1aba20..44209c32d38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adobe/css-tools@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.1.tgz#2447a230bfe072c1659e6815129c03cf170710e3" + integrity sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" @@ -3392,6 +3397,17 @@ "@types/tough-cookie" "^4.0.5" tough-cookie "^4.1.4" +"@chromatic-com/storybook@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@chromatic-com/storybook/-/storybook-3.2.3.tgz#0f4d167ac80fcb38293a92c230c43446049b6758" + integrity sha512-3+hfANx79kIjP1qrOSLxpoAXOiYUA0S7A0WI0A24kASrv7USFNNW8etR5TjUilMb0LmqKUn3wDwUK2h6aceQ9g== + dependencies: + chromatic "^11.15.0" + filesize "^10.0.12" + jsonfile "^6.1.0" + react-confetti "^6.1.0" + strip-ansi "^7.1.0" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" @@ -3585,6 +3601,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c" integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw== +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" @@ -3600,6 +3621,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0" integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w== +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + "@esbuild/android-arm@0.15.18": version "0.15.18" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" @@ -3620,6 +3646,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810" integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew== +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + "@esbuild/android-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" @@ -3635,6 +3666,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705" integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ== +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + "@esbuild/darwin-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" @@ -3650,6 +3686,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd" integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw== +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + "@esbuild/darwin-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" @@ -3665,6 +3706,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107" integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA== +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + "@esbuild/freebsd-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" @@ -3680,6 +3726,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7" integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA== +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + "@esbuild/freebsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" @@ -3695,6 +3746,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93" integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ== +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + "@esbuild/linux-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" @@ -3710,6 +3766,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75" integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g== +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + "@esbuild/linux-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" @@ -3725,6 +3786,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d" integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw== +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + "@esbuild/linux-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" @@ -3740,6 +3806,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb" integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA== +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + "@esbuild/linux-loong64@0.15.18": version "0.15.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" @@ -3760,6 +3831,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c" integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g== +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + "@esbuild/linux-mips64el@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" @@ -3775,6 +3851,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3" integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA== +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + "@esbuild/linux-ppc64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" @@ -3790,6 +3871,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e" integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ== +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + "@esbuild/linux-riscv64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" @@ -3805,6 +3891,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25" integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw== +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + "@esbuild/linux-s390x@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" @@ -3820,6 +3911,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319" integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g== +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz" @@ -3835,6 +3931,16 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef" integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA== +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + "@esbuild/netbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" @@ -3850,11 +3956,21 @@ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c" integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg== +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + "@esbuild/openbsd-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2" integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg== +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + "@esbuild/openbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" @@ -3870,6 +3986,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf" integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q== +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + "@esbuild/sunos-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" @@ -3885,6 +4006,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4" integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA== +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + "@esbuild/win32-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" @@ -3900,6 +4026,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b" integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA== +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + "@esbuild/win32-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" @@ -3915,6 +4046,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103" integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw== +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + "@esbuild/win32-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" @@ -3930,6 +4066,18 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244" integrity sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA== +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== + +"@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" @@ -5623,6 +5771,14 @@ magic-string "^0.27.0" react-docgen-typescript "^2.2.2" +"@joshwooding/vite-plugin-react-docgen-typescript@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.4.2.tgz#c2591d2d7b02160341672d6bf3cc248dd60f2530" + integrity sha512-feQ+ntr+8hbVudnsTUapiMN9q8T90XA1d5jn9QzY09sNoj4iD9wi0PY1vsBFTda4ZjEaxRK9S81oarR2nj7TFQ== + dependencies: + magic-string "^0.27.0" + react-docgen-typescript "^2.2.2" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" @@ -5791,6 +5947,13 @@ "@types/mdx" "^2.0.0" "@types/react" ">=16" +"@mdx-js/react@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed" + integrity sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ== + dependencies: + "@types/mdx" "^2.0.0" + "@mongodb-js/saslprep@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz" @@ -7545,6 +7708,17 @@ polished "^4.2.2" uuid "^9.0.0" +"@storybook/addon-actions@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.4.7.tgz#210c6bb5a7e17c3664c300b4b69b6243ec34b9cd" + integrity sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA== + dependencies: + "@storybook/global" "^5.0.0" + "@types/uuid" "^9.0.1" + dequal "^2.0.2" + polished "^4.2.2" + uuid "^9.0.0" + "@storybook/addon-backgrounds@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.20.tgz#a84758c07b236181f2d67966a7c159d0b3bc1abb" @@ -7554,6 +7728,15 @@ memoizerific "^1.11.3" ts-dedent "^2.0.0" +"@storybook/addon-backgrounds@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.7.tgz#56856bdafc5a2ba18cc19422320883c9e8f66c1c" + integrity sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ== + dependencies: + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + ts-dedent "^2.0.0" + "@storybook/addon-controls@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.6.20.tgz#5487064259a71f10b0aab04a4b7745ecf948e4cc" @@ -7563,6 +7746,15 @@ lodash "^4.17.21" ts-dedent "^2.0.0" +"@storybook/addon-controls@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.4.7.tgz#0c2ace0c7056248577f08f90471f29e861b485be" + integrity sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA== + dependencies: + "@storybook/global" "^5.0.0" + dequal "^2.0.2" + ts-dedent "^2.0.0" + "@storybook/addon-docs@7.6.20", "@storybook/addon-docs@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.6.20.tgz#0bff85bdbdca58c9535384a4ded69dadb2fe7e4e" @@ -7588,6 +7780,19 @@ remark-slug "^6.0.0" ts-dedent "^2.0.0" +"@storybook/addon-docs@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.4.7.tgz#556515da1049f97023427301e11ecb52d0b9dbe7" + integrity sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w== + dependencies: + "@mdx-js/react" "^3.0.0" + "@storybook/blocks" "8.4.7" + "@storybook/csf-plugin" "8.4.7" + "@storybook/react-dom-shim" "8.4.7" + react "^16.8.0 || ^17.0.0 || ^18.0.0" + react-dom "^16.8.0 || ^17.0.0 || ^18.0.0" + ts-dedent "^2.0.0" + "@storybook/addon-essentials@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.6.20.tgz#149c22b51a7abd8977acaaf2e1941c5b5dcb2fd5" @@ -7608,6 +7813,22 @@ "@storybook/preview-api" "7.6.20" ts-dedent "^2.0.0" +"@storybook/addon-essentials@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.4.7.tgz#381c74230d1b1a209d5fdc017d241c016b98affe" + integrity sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw== + dependencies: + "@storybook/addon-actions" "8.4.7" + "@storybook/addon-backgrounds" "8.4.7" + "@storybook/addon-controls" "8.4.7" + "@storybook/addon-docs" "8.4.7" + "@storybook/addon-highlight" "8.4.7" + "@storybook/addon-measure" "8.4.7" + "@storybook/addon-outline" "8.4.7" + "@storybook/addon-toolbars" "8.4.7" + "@storybook/addon-viewport" "8.4.7" + ts-dedent "^2.0.0" + "@storybook/addon-highlight@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.6.20.tgz#d118e4cce549238d866bbbe4d49b9509afda01a7" @@ -7615,6 +7836,24 @@ dependencies: "@storybook/global" "^5.0.0" +"@storybook/addon-highlight@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz#06b9752977e38884007e9446f9a2b0c04c873229" + integrity sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/addon-interactions@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz#d34545db5ea6f03a5499ad6742c3317fb9e02d55" + integrity sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ== + dependencies: + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "8.4.7" + "@storybook/test" "8.4.7" + polished "^4.2.2" + ts-dedent "^2.2.0" + "@storybook/addon-links@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.6.20.tgz#c6bedc7bdc0112ce4cb3f1bfc701445df696598d" @@ -7632,6 +7871,21 @@ "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" +"@storybook/addon-measure@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.4.7.tgz#9d556ba34b57c13ad8d00bd953b27ec405a64d23" + integrity sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw== + dependencies: + "@storybook/global" "^5.0.0" + tiny-invariant "^1.3.1" + +"@storybook/addon-onboarding@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-onboarding/-/addon-onboarding-8.4.7.tgz#212a5e27db1ee8440a2dd0d5c67ac29f0e6efda5" + integrity sha512-FdC2NV60VNYeMxf6DVe0qV9ucSBAzMh1//C0Qqwq8CcjthMbmKlVZ7DqbVsbIHKnFaSCaUC88eR5olAfMaauCQ== + dependencies: + react-confetti "^6.1.0" + "@storybook/addon-outline@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.6.20.tgz#0ebe829b6d8d269f691a110f3b34884b1df8ee74" @@ -7640,11 +7894,24 @@ "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" +"@storybook/addon-outline@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.4.7.tgz#8a35fe519dd639bb287a370da2222e6ffdce4020" + integrity sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA== + dependencies: + "@storybook/global" "^5.0.0" + ts-dedent "^2.0.0" + "@storybook/addon-toolbars@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.6.20.tgz#c1cd31c6a8f98d3ec4853157134ca143d065d31a" integrity sha512-5Btg4i8ffWTDHsU72cqxC8nIv9N3E3ObJAc6k0llrmPBG/ybh3jxmRfs8fNm44LlEXaZ5qrK/petsXX3UbpIFg== +"@storybook/addon-toolbars@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz#b898d4deaf6f5a58f3b70bd8d136cd4ec2844b79" + integrity sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw== + "@storybook/addon-viewport@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.6.20.tgz#882571f4b0f405e1cf2cfad9a1f74b30d22f9a93" @@ -7652,6 +7919,13 @@ dependencies: memoizerific "^1.11.3" +"@storybook/addon-viewport@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz#e65c53608f52149c06347b395487960605fc4805" + integrity sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ== + dependencies: + memoizerific "^1.11.3" + "@storybook/blocks@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.6.20.tgz#1cc142f1c238616f0f3a9f900965c651e7ee7c52" @@ -7681,6 +7955,15 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" +"@storybook/blocks@8.4.7", "@storybook/blocks@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.4.7.tgz#ee17f59dd52d11c97c39b0f6b03957085a80ad95" + integrity sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA== + dependencies: + "@storybook/csf" "^0.1.11" + "@storybook/icons" "^1.2.12" + ts-dedent "^2.0.0" + "@storybook/builder-manager@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.6.20.tgz#d550a3f209012e4e383e61320ea756cddfdb416e" @@ -7725,6 +8008,15 @@ magic-string "^0.30.0" rollup "^2.25.0 || ^3.3.0" +"@storybook/builder-vite@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-8.4.7.tgz#3d6d542fa1f46fce5ee7a159dc8491cb4421254d" + integrity sha512-LovyXG5VM0w7CovI/k56ZZyWCveQFVDl0m7WwetpmMh2mmFJ+uPQ35BBsgTvTfc8RHi+9Q3F58qP1MQSByXi9g== + dependencies: + "@storybook/csf-plugin" "8.4.7" + browser-assert "^1.2.1" + ts-dedent "^2.0.0" + "@storybook/channels@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.6.20.tgz#33d8292b1b16d7f504bf751c57a792477d1c3a9e" @@ -7826,6 +8118,11 @@ use-resize-observer "^9.1.0" util-deprecate "^1.0.2" +"@storybook/components@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.4.7.tgz#09eeffa07aa672ad3966ca1764a43003731b1d30" + integrity sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g== + "@storybook/core-client@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.6.20.tgz#831681d64194e4d604a859ed3eb452981f6824c5" @@ -7916,6 +8213,23 @@ watchpack "^2.2.0" ws "^8.2.3" +"@storybook/core@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-8.4.7.tgz#af9cbb3f26f0b6c98c679a134ce776c202570d66" + integrity sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA== + dependencies: + "@storybook/csf" "^0.1.11" + better-opn "^3.0.2" + browser-assert "^1.2.1" + esbuild "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0" + esbuild-register "^3.5.0" + jsdoc-type-pratt-parser "^4.0.0" + process "^0.11.10" + recast "^0.23.5" + semver "^7.6.2" + util "^0.12.5" + ws "^8.2.3" + "@storybook/csf-plugin@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.6.20.tgz#0e79e58d5ed47dfb472b1dc202b0e754c21ec33b" @@ -7924,6 +8238,13 @@ "@storybook/csf-tools" "7.6.20" unplugin "^1.3.1" +"@storybook/csf-plugin@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.4.7.tgz#0117c872b05bf033eec089ab0224e0fab01da810" + integrity sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g== + dependencies: + unplugin "^1.3.1" + "@storybook/csf-tools@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.6.20.tgz#fdd9fa9459720a627e83e31d3839721dbc655f22" @@ -7939,6 +8260,13 @@ recast "^0.23.1" ts-dedent "^2.0.0" +"@storybook/csf@^0.1.11": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.13.tgz#c8a9bea2ae518a3d9700546748fa30a8b07f7f80" + integrity sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q== + dependencies: + type-fest "^2.19.0" + "@storybook/csf@^0.1.2": version "0.1.11" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.11.tgz#ad685a4fe564a47a6b73571c2e7c07b526f4f71b" @@ -7969,6 +8297,19 @@ resolved "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== +"@storybook/icons@^1.2.12": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.3.0.tgz#a5c1460fb15a7260e0b638ab86163f7347a0061e" + integrity sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A== + +"@storybook/instrumenter@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.4.7.tgz#5a37876fee8f828241a1e7fd76891c6effc1805a" + integrity sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg== + dependencies: + "@storybook/global" "^5.0.0" + "@vitest/utils" "^2.1.1" + "@storybook/manager-api@7.6.20", "@storybook/manager-api@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.6.20.tgz#225ff7dea3dbdb2e82bb5568babdaace4071c32e" @@ -7989,6 +8330,11 @@ telejson "^7.2.0" ts-dedent "^2.0.0" +"@storybook/manager-api@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.4.7.tgz#4e13debf645c9300d7d6d49195e720d0c7ecd261" + integrity sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ== + "@storybook/manager@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.6.20.tgz#eb619fe8d33446e581a7b1c3050644c196364d39" @@ -8029,6 +8375,11 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" +"@storybook/preview-api@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.4.7.tgz#85e01a97f4182b974581765d725f6c7a7d190013" + integrity sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg== + "@storybook/preview@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.6.20.tgz#df39739dce6e183efaf06a8c15a9459f019e631b" @@ -8039,6 +8390,11 @@ resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.6.20.tgz#20b902663474b731c22b211ec29c7fd0e86b4b7f" integrity sha512-SRvPDr9VWcS24ByQOVmbfZ655y5LvjXRlsF1I6Pr9YZybLfYbu3L5IicfEHT4A8lMdghzgbPFVQaJez46DTrkg== +"@storybook/react-dom-shim@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz#f0dd5bbf2fc185def72d9d08a11c8de22f152c2a" + integrity sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg== + "@storybook/react-vite@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-7.6.20.tgz#98031189f9be7c982f33a7a56975a4b3ea86053b" @@ -8052,6 +8408,21 @@ magic-string "^0.30.0" react-docgen "^7.0.0" +"@storybook/react-vite@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-8.4.7.tgz#1a755596d65551c77850361da76df47027687664" + integrity sha512-iiY9iLdMXhDnilCEVxU6vQsN72pW3miaf0WSenOZRyZv3HdbpgOxI0qapOS0KCyRUnX9vTlmrSPTMchY4cAeOg== + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript" "0.4.2" + "@rollup/pluginutils" "^5.0.2" + "@storybook/builder-vite" "8.4.7" + "@storybook/react" "8.4.7" + find-up "^5.0.0" + magic-string "^0.30.0" + react-docgen "^7.0.0" + resolve "^1.22.8" + tsconfig-paths "^4.2.0" + "@storybook/react@7.6.20", "@storybook/react@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.6.20.tgz#e326969851b96e9a6bea6fdd81f624de052ddbb6" @@ -8079,6 +8450,18 @@ type-fest "~2.19" util-deprecate "^1.0.2" +"@storybook/react@8.4.7", "@storybook/react@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.4.7.tgz#e2cf62b3c1d8e4bfe5eff82ced07ec473d4e4fd1" + integrity sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw== + dependencies: + "@storybook/components" "8.4.7" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "8.4.7" + "@storybook/preview-api" "8.4.7" + "@storybook/react-dom-shim" "8.4.7" + "@storybook/theming" "8.4.7" + "@storybook/router@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.6.20.tgz#ffa6a3ba1790e86f1d2364c27d3511f7975742a6" @@ -8102,6 +8485,20 @@ fs-extra "^11.1.0" read-pkg-up "^7.0.1" +"@storybook/test@8.4.7", "@storybook/test@^8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.4.7.tgz#7f58f2cdf3a6d810bf3ff4e0e2fee634040c678f" + integrity sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ== + dependencies: + "@storybook/csf" "^0.1.11" + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "8.4.7" + "@testing-library/dom" "10.4.0" + "@testing-library/jest-dom" "6.5.0" + "@testing-library/user-event" "14.5.2" + "@vitest/expect" "2.0.5" + "@vitest/spy" "2.0.5" + "@storybook/theming@7.6.20", "@storybook/theming@^7.6.17": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.6.20.tgz#c932cd82c27314979d22d0e7867268e301f5f97c" @@ -8112,6 +8509,11 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" +"@storybook/theming@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.4.7.tgz#c308f6a883999bd35e87826738ab8a76515932b5" + integrity sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw== + "@storybook/types@7.6.20": version "7.6.20" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.6.20.tgz#b8d62b30914b35e6750b1f4937da532432f02890" @@ -8279,7 +8681,7 @@ dependencies: testcontainers "^10.15.0" -"@testing-library/dom@^10.4.0": +"@testing-library/dom@10.4.0", "@testing-library/dom@^10.4.0": version "10.4.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== @@ -8293,6 +8695,19 @@ lz-string "^1.5.0" pretty-format "^27.0.2" +"@testing-library/jest-dom@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz#50484da3f80fb222a853479f618a9ce5c47bfe54" + integrity sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA== + dependencies: + "@adobe/css-tools" "^4.4.0" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" + redent "^3.0.0" + "@testing-library/react@^16.1.0": version "16.1.0" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.1.0.tgz#aa0c61398bac82eaf89776967e97de41ac742d71" @@ -8300,6 +8715,11 @@ dependencies: "@babel/runtime" "^7.12.5" +"@testing-library/user-event@14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== + "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz" @@ -9619,6 +10039,14 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" +"@typescript-eslint/scope-manager@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz#aaf4198b509fb87a6527c02cfbfaf8901179e75c" + integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw== + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + "@typescript-eslint/types@4.33.0": version "4.33.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" @@ -9629,6 +10057,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.0.tgz#794760b9037ee4154c09549ef5a96599621109c5" integrity sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA== +"@typescript-eslint/types@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.20.0.tgz#487de5314b5415dee075e95568b87a75a3e730cf" + integrity sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA== + "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" @@ -9655,6 +10088,30 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz#658cea07b7e5981f19bce5cf1662cb70ad59f26b" + integrity sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA== + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.0.0" + +"@typescript-eslint/utils@^8.8.1": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" + integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" @@ -9671,6 +10128,14 @@ "@typescript-eslint/types" "5.45.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz#2df6e24bc69084b81f06aaaa48d198b10d382bed" + integrity sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA== + dependencies: + "@typescript-eslint/types" "8.20.0" + eslint-visitor-keys "^4.2.0" + "@vitejs/plugin-react@^3.0.1": version "3.1.0" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" @@ -9701,6 +10166,16 @@ c8 "^7.12.0" vitest "0.25.8" +"@vitest/expect@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.0.5.tgz#f3745a6a2c18acbea4d39f5935e913f40d26fa86" + integrity sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA== + dependencies: + "@vitest/spy" "2.0.5" + "@vitest/utils" "2.0.5" + chai "^5.1.1" + tinyrainbow "^1.2.0" + "@vitest/expect@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.5.tgz#5a6afa6314cae7a61847927bb5bc038212ca7381" @@ -9720,6 +10195,13 @@ estree-walker "^3.0.3" magic-string "^0.30.12" +"@vitest/pretty-format@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.0.5.tgz#91d2e6d3a7235c742e1a6cc50e7786e2f2979b1e" + integrity sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ== + dependencies: + tinyrainbow "^1.2.0" + "@vitest/pretty-format@2.1.5", "@vitest/pretty-format@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.5.tgz#bc79b8826d4a63dc04f2a75d2944694039fa50aa" @@ -9727,6 +10209,13 @@ dependencies: tinyrainbow "^1.2.0" +"@vitest/pretty-format@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.8.tgz#88f47726e5d0cf4ba873d50c135b02e4395e2bca" + integrity sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ== + dependencies: + tinyrainbow "^1.2.0" + "@vitest/runner@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.5.tgz#4d5e2ba2dfc0af74e4b0f9f3f8be020559b26ea9" @@ -9744,6 +10233,13 @@ magic-string "^0.30.12" pathe "^1.1.2" +"@vitest/spy@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.0.5.tgz#590fc07df84a78b8e9dd976ec2090920084a2b9f" + integrity sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA== + dependencies: + tinyspy "^3.0.0" + "@vitest/spy@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.5.tgz#f790d1394a5030644217ce73562e92465e83147e" @@ -9751,6 +10247,16 @@ dependencies: tinyspy "^3.0.2" +"@vitest/utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.0.5.tgz#6f8307a4b6bc6ceb9270007f73c67c915944e926" + integrity sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ== + dependencies: + "@vitest/pretty-format" "2.0.5" + estree-walker "^3.0.3" + loupe "^3.1.1" + tinyrainbow "^1.2.0" + "@vitest/utils@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.5.tgz#0e19ce677c870830a1573d33ee86b0d6109e9546" @@ -9760,6 +10266,15 @@ loupe "^3.1.2" tinyrainbow "^1.2.0" +"@vitest/utils@^2.1.1": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.8.tgz#f8ef85525f3362ebd37fd25d268745108d6ae388" + integrity sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA== + dependencies: + "@vitest/pretty-format" "2.1.8" + loupe "^3.1.2" + tinyrainbow "^1.2.0" + "@whatwg-node/events@^0.0.3": version "0.0.3" resolved "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz" @@ -10401,6 +10916,11 @@ aria-query@5.3.0: dependencies: dequal "^2.0.3" +aria-query@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + aria-query@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -11643,7 +12163,7 @@ chai@^4.3.6, chai@^4.3.7: pathval "^1.1.1" type-detect "^4.0.8" -chai@^5.1.2: +chai@^5.1.1, chai@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== @@ -11694,6 +12214,14 @@ chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" @@ -11813,6 +12341,11 @@ chownr@^2.0.0: resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chromatic@^11.15.0: + version "11.24.0" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.24.0.tgz#8cb6f07833651d98559fd72116b14fe525be62a9" + integrity sha512-IocIxnxera27bRA51HHtfV9/Daqgj0E4BWYV12/nlf7qPJW1T82raQ5ypxZDJA4bXQywxOzpG2e6WWYvz/AwHA== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" @@ -12680,7 +13213,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-js@^4.0.0: +crypto-js@^4.0.0, crypto-js@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== @@ -12730,6 +13263,11 @@ css-what@^6.1.0: resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" @@ -13369,6 +13907,11 @@ dom-accessibility-api@^0.5.9: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dom-helpers@^3.4.0: version "3.4.0" resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz" @@ -14285,6 +14828,37 @@ esbuild@^0.18.0, esbuild@^0.18.10: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" + esbuild@^0.21.3, esbuild@~0.21.5: version "0.21.5" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" @@ -14544,6 +15118,15 @@ eslint-plugin-react@^7.13.0: semver "^6.3.1" string.prototype.matchall "^4.0.10" +eslint-plugin-storybook@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.2.tgz#a46f8fa2b87d15f66251e832a10d5481fc73a028" + integrity sha512-0Z4DUklJrC+GHjCRXa7PYfPzWC15DaVnwaOYenpgXiCEijXPZkLKCms+rHhtoRcWccP7Z8DpOOaP1gc3P9oOwg== + dependencies: + "@storybook/csf" "^0.1.11" + "@typescript-eslint/utils" "^8.8.1" + ts-dedent "^2.2.0" + eslint-plugin-styled-components-a11y@^2.0.0: version "2.1.32" resolved "https://registry.yarnpkg.com/eslint-plugin-styled-components-a11y/-/eslint-plugin-styled-components-a11y-2.1.32.tgz#6dac878dbc3cd231f784891144d38ea8a3b03cd2" @@ -14584,11 +15167,16 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + eslint@7.x.x, eslint@^7.11.0: version "7.32.0" resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" @@ -15189,6 +15777,11 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" +filesize@^10.0.12: + version "10.1.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.6.tgz#31194da825ac58689c0bce3948f33ce83aabd361" + integrity sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -16909,6 +17502,13 @@ is-core-module@^2.15.1: dependencies: hasown "^2.0.2" +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-data-view@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" @@ -17329,6 +17929,14 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + isomorphic-ws@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz" @@ -17926,6 +18534,11 @@ jscodeshift@^0.15.1: temp "^0.8.4" write-file-atomic "^2.3.0" +jsdoc-type-pratt-parser@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" + integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== + jsdom-worker@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/jsdom-worker/-/jsdom-worker-0.3.0.tgz#aff32ec089d17f56a5a344a426b6fb2f56e7de54" @@ -18088,7 +18701,7 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: +jsonfile@^6.0.1, jsonfile@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== @@ -18731,7 +19344,7 @@ loupe@^2.3.6: dependencies: get-func-name "^2.0.1" -loupe@^3.1.0, loupe@^3.1.2: +loupe@^3.1.0, loupe@^3.1.1, loupe@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== @@ -19594,6 +20207,11 @@ msgpackr@^1.6.2: optionalDependencies: msgpackr-extract "^3.0.2" +msw-trpc@^2.0.0-beta.1: + version "2.0.0-beta.1" + resolved "https://registry.yarnpkg.com/msw-trpc/-/msw-trpc-2.0.0-beta.1.tgz#d77ac70e88ae33959d5d543513b82e47cb072b17" + integrity sha512-v6KA1ZYfk99c+nVYN32ltZziMaJUHuffloY6AwePL21wpTWopagMuaC8Ju/Wn4j4wOpZBodiMJoQ9xKr1e4QKg== + msw@0.22.0: version "0.22.0" resolved "https://registry.npmjs.org/msw/-/msw-0.22.0.tgz" @@ -19637,30 +20255,6 @@ msw@^1.3.2: type-fest "^2.19.0" yargs "^17.3.1" -msw@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.6.8.tgz#0cc4d92526444f958829f3fb263ab55ca7437b1d" - integrity sha512-nxXxnH6WALZ9a7rsQp4HU2AaD4iGAiouMmE/MY4al7pXTibgA6OZOuKhmN2WBIM6w9qMKwRtX8p2iOb45B2M/Q== - dependencies: - "@bundled-es-modules/cookie" "^2.0.1" - "@bundled-es-modules/statuses" "^1.0.1" - "@bundled-es-modules/tough-cookie" "^0.1.6" - "@inquirer/confirm" "^5.0.0" - "@mswjs/interceptors" "^0.37.0" - "@open-draft/deferred-promise" "^2.2.0" - "@open-draft/until" "^2.1.0" - "@types/cookie" "^0.6.0" - "@types/statuses" "^2.0.4" - chalk "^4.1.2" - graphql "^16.8.1" - headers-polyfill "^4.0.2" - is-node-process "^1.2.0" - outvariant "^1.4.3" - path-to-regexp "^6.3.0" - strict-event-emitter "^0.5.1" - type-fest "^4.26.1" - yargs "^17.7.2" - msw@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/msw/-/msw-2.7.0.tgz#d13ff87f7e018fc4c359800ff72ba5017033fb56" @@ -21694,6 +22288,13 @@ react-colorful@^5.1.2: resolved "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz" integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== +react-confetti@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/react-confetti/-/react-confetti-6.2.2.tgz#b72888889b10b6707a91adca919dd35c653f4bb2" + integrity sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA== + dependencies: + tween-functions "^1.2.0" + react-docgen-typescript@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz" @@ -21715,7 +22316,7 @@ react-docgen@^7.0.0: resolve "^1.22.1" strip-indent "^4.0.0" -react-dom@18.3.1: +react-dom@18.3.1, "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0": version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -21981,7 +22582,7 @@ react-transition-group@^4.2.1, react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@18.3.1: +react@18.3.1, "react@^16.8.0 || ^17.0.0 || ^18.0.0": version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -22140,7 +22741,7 @@ real-require@^0.1.0: resolved "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== -recast@^0.23.1, recast@^0.23.3: +recast@^0.23.1, recast@^0.23.3, recast@^0.23.5: version "0.23.9" resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b" integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q== @@ -22490,6 +23091,15 @@ resolve@^1.1.5, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" @@ -22807,7 +23417,7 @@ seedrandom@3.x.x: resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.x, semver@^7.6.3: +semver@7.x, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -23520,6 +24130,13 @@ storybook@^7.6.17: dependencies: "@storybook/cli" "7.6.20" +storybook@^8.4.7: + version "8.4.7" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.4.7.tgz#a3068787a58074cec1b4197eed1c4427ec644b3f" + integrity sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw== + dependencies: + "@storybook/core" "8.4.7" + stream-chopper@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/stream-chopper/-/stream-chopper-3.0.1.tgz" @@ -24428,7 +25045,7 @@ tinyspy@^1.0.2: resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz" integrity sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g== -tinyspy@^3.0.2: +tinyspy@^3.0.0, tinyspy@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== @@ -24583,6 +25200,11 @@ triple-beam@^1.3.0: resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz" integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== +ts-api-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900" + integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ== + ts-dedent@^2.0.0, ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" @@ -24709,7 +25331,7 @@ tsconfig-paths@^3.13.0, tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2: +tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== @@ -24788,6 +25410,11 @@ tuf-js@^2.2.1: debug "^4.3.4" make-fetch-happen "^13.0.1" +tween-functions@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff" + integrity sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA== + tweetnacl@^0.14.3: version "0.14.5" resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" @@ -25729,6 +26356,11 @@ whatwg-fetch@^2.0.4: resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== +whatwg-fetch@^3.4.1: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" From 1ae11ecb355696b2de9f4e8676cc73c36cffa96a Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 16:08:00 +0900 Subject: [PATCH 02/21] add an example of testing a legacy component in storybook, CI job --- .github/workflows/lint-and-test.yml | 34 + packages/client/.storybook/main.ts | 1 - packages/client/.storybook/preview.tsx | 1175 ++++++++++++++++- packages/client/package.json | 4 +- .../client/src/tests/mock-offline-data.ts | 20 +- .../workqueues}/Workqueue.stories.tsx | 35 +- .../views/OfficeHome/OfficeHome.stories.tsx | 138 ++ .../src/views/OfficeHome/OfficeHome.tsx | 1 - packages/client/vite.config.ts | 2 +- packages/components/src/Spinner/Spinner.tsx | 1 + yarn.lock | 744 ++++++++++- 11 files changed, 2084 insertions(+), 71 deletions(-) rename packages/client/src/{stories => v2-events/features/workqueues}/Workqueue.stories.tsx (66%) create mode 100644 packages/client/src/views/OfficeHome/OfficeHome.stories.tsx diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 06945267a0f..c83a9746801 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -268,6 +268,40 @@ jobs: - name: Run linting run: cd packages/client && yarn lint + run-visual-tests: + name: Run visual tests + needs: prepare-client-tests + runs-on: ubuntu-22.04 + + steps: + - name: Download filesystem artifact + uses: actions/download-artifact@v4.1.8 + with: + name: client + path: . + + - name: Use Node.js from .nvmrc + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + + - name: Cache Node.js dependencies + uses: actions/cache@v4 + with: + path: | + **/node_modules + ~/.cache/yarn/v6 + key: node-${{ hashFiles('**/yarn.lock', format('{0}/{1}','packages/client','package.json')) }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install dependencies + run: CI="" yarn install --frozen-lockfile + + - name: Run Chromatic + uses: chromaui/action@latest + with: + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} test-client: name: Test client diff --git a/packages/client/.storybook/main.ts b/packages/client/.storybook/main.ts index c942fbcdb2b..a9f1014537d 100644 --- a/packages/client/.storybook/main.ts +++ b/packages/client/.storybook/main.ts @@ -22,7 +22,6 @@ const config: StorybookConfig = { options: {} }, viteFinal: (config) => { - delete (config.resolve?.alias as any)?.crypto config.plugins = config.plugins?.filter((plugins) => { const list = Array.isArray(plugins) ? plugins : [plugins] return !list diff --git a/packages/client/.storybook/preview.tsx b/packages/client/.storybook/preview.tsx index 7b0bcadef42..e587a57e892 100644 --- a/packages/client/.storybook/preview.tsx +++ b/packages/client/.storybook/preview.tsx @@ -1,27 +1,1184 @@ +import { getTheme } from '@opencrvs/components/lib/theme' import type { Preview } from '@storybook/react' -import React from 'react' +import { graphql, http, HttpResponse } from 'msw' +import { initialize, mswLoader } from 'msw-storybook-addon' +import React, { useEffect } from 'react' +import { Provider } from 'react-redux' import { MemoryRouter } from 'react-router-dom' +import { ThemeProvider } from 'styled-components' +import { Page } from '../src/components/Page' import { I18nContainer } from '../src/i18n/components/I18nContainer' -import { Provider } from 'react-redux' +import { refreshOfflineData } from '../src/offline/actions' import { createStore } from '../src/store' -import { ThemeProvider } from 'styled-components' -import { getTheme } from '@opencrvs/components/lib/theme' +import forms from '../src/tests/forms.json' +import { mockOfflineData } from '../src/tests/mock-offline-data' +import { useApolloClient } from '../src/utils/apolloClient' +import { ApolloProvider } from '../src/utils/ApolloProvider' + +// Initialize MSW +initialize({ + onUnhandledRequest(req, print) { + if ( + new URL(req.url).pathname.startsWith('/src/') || + new URL(req.url).pathname.startsWith('/@fs') || + new URL(req.url).pathname.startsWith('/node_modules') || + new URL(req.url).pathname.startsWith('/images') + ) { + return + } + + print.warning() + } +}) const { store } = createStore() -const preview: Preview = { - parameters: {}, - decorators: [ - (Story) => ( +interface WrapperProps { + children: React.ReactNode + store: ReturnType['store'] +} + +function Wrapper({ children, store }: WrapperProps) { + const { client } = useApolloClient(store) + useEffect(() => { + store.dispatch(refreshOfflineData()) + }, []) + return ( + - + {children} + + ) +} + +export const parameters = { + msw: { + handlers: { + registrationHome: [ + graphql.query('registrationHome', (req, res, ctx) => { + return HttpResponse.json({ + data: { + inProgressTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + notificationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + reviewTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + rejectTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + approvalTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + externalValidationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + printTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + issueTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + } + } + }) + }) + ], + corrections: [ + graphql.query('getTotalCorrections', (req, res, ctx) => { + return HttpResponse.json({ + data: { + getTotalCorrections: [] + } + }) + }) + ], + metrics: [ + graphql.query('getTotalMetrics', (req, res, ctx) => { + return HttpResponse.json({ + data: { + getTotalMetrics: { + estimated: { + totalEstimation: 0, + maleEstimation: 0, + femaleEstimation: 0, + locationId: null, + locationLevel: null, + __typename: 'EstimatedMetrics' + }, + results: [], + __typename: 'TotalMetrics' + } + } + }) + }) + ], + systemRoles: [ + graphql.query('getSystemRoles', (req, res, ctx) => { + return HttpResponse.json({ + data: { + getSystemRoles: [ + { + id: '677e3de85315af4a26542652', + value: 'FIELD_AGENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b55', + labels: [ + { + lang: 'en', + label: 'Field Agent', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Agent de terrain', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b56', + labels: [ + { + lang: 'en', + label: 'Police Officer', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Officier de police', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b57', + labels: [ + { + lang: 'en', + label: 'Social Worker', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Travailleur social', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b58', + labels: [ + { + lang: 'en', + label: 'Healthcare Worker', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Personnel de santé', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b59', + labels: [ + { + lang: 'en', + label: 'Local Leader', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Leader local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542653', + value: 'REGISTRATION_AGENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b5f', + labels: [ + { + lang: 'en', + label: 'Registration Agent', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: "Agent d'enregistrement", + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542655', + value: 'LOCAL_SYSTEM_ADMIN', + roles: [ + { + _id: '677e3eb03a423676c3af1b68', + labels: [ + { + lang: 'en', + label: 'Local System Admin', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Administrateur système local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542656', + value: 'NATIONAL_SYSTEM_ADMIN', + roles: [ + { + _id: '677e3eb03a423676c3af1b6f', + labels: [ + { + lang: 'en', + label: 'National System Admin', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Administrateur système national', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542657', + value: 'PERFORMANCE_MANAGEMENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b71', + labels: [ + { + lang: 'en', + label: 'Performance Manager', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Gestion des performances', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542654', + value: 'LOCAL_REGISTRAR', + roles: [ + { + _id: '677e3eb03a423676c3af1b73', + labels: [ + { + lang: 'en', + label: 'Local Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542658', + value: 'NATIONAL_REGISTRAR', + roles: [ + { + _id: '677e3eb03a423676c3af1b79', + labels: [ + { + lang: 'en', + label: 'National Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire national', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + } + ] + } + }) + }) + ], + locationsStatistics: [ + graphql.query('getLocationStatistics', (req, res, ctx) => { + return HttpResponse.json({ + data: { + getLocationStatistics: { + population: 0, + offices: [], + registrars: [], + __typename: 'LocationStatistics' + }, + fetchRegistrationCountByStatus: { + results: [], + total: 0, + __typename: 'RegistrationCountByStatus' + } + } + }) + }) + ], + user: [ + graphql.query('fetchUser', (req, res, ctx) => { + return HttpResponse.json({ + data: { + getUser: { + id: '677e3eb93a423676c3af1b93', + userMgntUserID: '677e3eb93a423676c3af1b93', + creationDate: '1736326841514', + username: 'k.mweene', + practitionerId: 'ccf4ca3f-9099-44a0-816c-c27d23df0c83', + mobile: '+260933333333', + email: 'kalushabwalya1.7@gmail.com', + systemRole: 'LOCAL_REGISTRAR', + role: { + _id: '677e3eb03a423676c3af1b73', + labels: [ + { + lang: 'en', + label: 'Local Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + status: 'active', + name: [ + { + use: 'en', + firstNames: 'Kennedy', + familyName: 'Mweene', + __typename: 'HumanName' + } + ], + primaryOffice: { + id: '028d2c85-ca31-426d-b5d1-2cef545a4902', + name: 'Ibombo District Office', + alias: ['Ibombo District Office'], + status: 'active', + __typename: 'Location' + }, + localRegistrar: { + name: [ + { + use: 'en', + firstNames: 'Kennedy', + familyName: 'Mweene', + __typename: 'HumanName' + } + ], + role: 'LOCAL_REGISTRAR', + signature: null, + __typename: 'LocalRegistrar' + }, + avatar: null, + searches: [], + __typename: 'User' + } + } + }) + }) + ], + locations: [ + http.get('http://localhost:7070/location', (req, res, ctx) => { + return HttpResponse.json({ + resourceType: 'Bundle', + id: '109636d2-09f0-4444-b42c-e22edce0539e', + meta: { lastUpdated: '2025-01-17T05:18:12.105+00:00' }, + type: 'searchset', + total: 17, + link: [ + { + relation: 'self', + url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0' + }, + { + relation: 'next', + url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0&_getpagesoffset=0' + } + ], + entry: [ + { + fullUrl: + 'http://config:2021/location/92ab695b-9362-4682-a861-ddce87a3a905/_history/f11c3af0-b945-4082-8902-c66e4f9b43da', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_2OKicPQMNI' + } + ], + name: 'HQ Office', + alias: ['HQ Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:11:38.743+00:00', + versionId: 'f11c3af0-b945-4082-8902-c66e4f9b43da' + }, + id: '92ab695b-9362-4682-a861-ddce87a3a905' + }, + request: { + method: 'PUT', + url: 'Location/92ab695b-9362-4682-a861-ddce87a3a905' + } + }, + { + fullUrl: + 'http://config:2021/location/6c0bde80-100b-446d-9a6e-8587761bf4c4/_history/19cdc852-1360-4e03-90dc-82155581d927', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_JEhYJ82xRI' + } + ], + name: 'Isamba District Office', + alias: ['Isamba District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/b2991802-bd06-4e0c-9ec3-b6069f0cfc73' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.915+00:00', + versionId: '19cdc852-1360-4e03-90dc-82155581d927' + }, + id: '6c0bde80-100b-446d-9a6e-8587761bf4c4' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/028d2c85-ca31-426d-b5d1-2cef545a4902/_history/eadfd8c3-d869-4394-8d74-b1fc4ea620a3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_JWMRGwDBXK' + } + ], + name: 'Ibombo District Office', + alias: ['Ibombo District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/e76fbe62-bd35-44cf-ad0b-9242db1d3085' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-15T08:04:40.311+00:00', + versionId: 'eadfd8c3-d869-4394-8d74-b1fc4ea620a3' + }, + id: '028d2c85-ca31-426d-b5d1-2cef545a4902' + }, + request: { + method: 'PUT', + url: 'Location/028d2c85-ca31-426d-b5d1-2cef545a4902' + } + }, + { + fullUrl: + 'http://config:2021/location/27614343-3709-41a7-bf2e-e81356322980/_history/af06e089-462b-4a55-8396-a6d9056d39b0', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_HKASqwkASD' + } + ], + name: 'Itambo District Office', + alias: ['Itambo District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/7e136ce5-4912-4263-a905-a49856b73db4' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.921+00:00', + versionId: 'af06e089-462b-4a55-8396-a6d9056d39b0' + }, + id: '27614343-3709-41a7-bf2e-e81356322980' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/8b1f31e3-f119-4844-9566-2cba2fa55b9a/_history/f164ccd8-4a7f-4b7e-9b39-99407f330825', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_eaBXhNiLMp' + } + ], + name: 'Ezhi District Office', + alias: ['Ezhi District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/a4095970-285b-43c8-9f42-cca6d15c8b13' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.924+00:00', + versionId: 'f164ccd8-4a7f-4b7e-9b39-99407f330825' + }, + id: '8b1f31e3-f119-4844-9566-2cba2fa55b9a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/c5545f76-1888-49e1-8147-71f3c316f6dd/_history/88ff674b-987e-4ada-aec7-f59a4d7ae6f5', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_okQp4uKCz0' + } + ], + name: 'Ilanga District Office', + alias: ['Ilanga District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/20ecc580-1f66-4489-8aea-08e386af624b' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.926+00:00', + versionId: '88ff674b-987e-4ada-aec7-f59a4d7ae6f5' + }, + id: 'c5545f76-1888-49e1-8147-71f3c316f6dd' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/a83da9a2-16af-416c-ab44-cf4f60b5603a/_history/76072e03-8c51-43f3-a02a-f7ed2ac6407f', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_R5n2eHaSpB' + } + ], + name: 'Irundu District Office', + alias: ['Irundu District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/a97af8a8-a531-4229-bf5e-c30b78c31561' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.928+00:00', + versionId: '76072e03-8c51-43f3-a02a-f7ed2ac6407f' + }, + id: 'a83da9a2-16af-416c-ab44-cf4f60b5603a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/eaeb093d-e548-4848-b7d6-bc8fd029a8c1/_history/ebfbd22d-cbbe-4486-9624-c94e899ab3b3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_GzanivmNaP' + } + ], + name: 'Zobwe District Office', + alias: ['Zobwe District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/d16d86dc-019d-46a4-9904-53775c16f6ae' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.930+00:00', + versionId: 'ebfbd22d-cbbe-4486-9624-c94e899ab3b3' + }, + id: 'eaeb093d-e548-4848-b7d6-bc8fd029a8c1' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/72e3de8d-cb9c-4f92-833e-d6889eac1d72/_history/b697a197-49e2-4aea-aa2a-5dab80195f7a', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_2stAtvOCwl' + } + ], + name: 'Afue District Office', + alias: ['Afue District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/67ad6b78-2419-4bb1-bc05-28498a72ea03' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.932+00:00', + versionId: 'b697a197-49e2-4aea-aa2a-5dab80195f7a' + }, + id: '72e3de8d-cb9c-4f92-833e-d6889eac1d72' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/6510890e-610d-4805-94da-82164ceadc42/_history/cef5fa77-229c-4260-8b34-930ab82a9d40', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_p9TC08l373' + } + ], + name: 'Embe District Office', + alias: ['Embe District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.934+00:00', + versionId: 'cef5fa77-229c-4260-8b34-930ab82a9d40' + }, + id: '6510890e-610d-4805-94da-82164ceadc42' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/9f764b20-ad33-4714-a572-a7731b24b183/_history/44fbdc19-0de1-4953-b453-2470b8467229', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_Hal1YwlBw7' + } + ], + name: 'Ienge District Office', + alias: ['Ienge District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/0a25463f-675c-4600-a685-c090ebd8ce0e' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.936+00:00', + versionId: '44fbdc19-0de1-4953-b453-2470b8467229' + }, + id: '9f764b20-ad33-4714-a572-a7731b24b183' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/79738b3f-f31a-40d1-8b55-63e08ceb213c/_history/39e25b27-fd98-4e12-8186-502ada7a6f93', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_OgMqVlKHoN' + } + ], + name: 'Funabuli District Office', + alias: ['Funabuli District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/2ad5e894-0a25-4fc6-b0a1-a0ac35be7c5d' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.938+00:00', + versionId: '39e25b27-fd98-4e12-8186-502ada7a6f93' + }, + id: '79738b3f-f31a-40d1-8b55-63e08ceb213c' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/9ec401ec-0de1-4bec-96bc-a2846a61419a/_history/22705052-e7d5-4b52-b519-1120fd3a3ed3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_FHTLilSEgD' + } + ], + name: 'Pili District Office', + alias: ['Pili District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/4c6cbac1-7b94-4dcb-b8ba-4c69cd474e6a' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.940+00:00', + versionId: '22705052-e7d5-4b52-b519-1120fd3a3ed3' + }, + id: '9ec401ec-0de1-4bec-96bc-a2846a61419a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/db07dc32-2280-4705-8b5f-54044b29f8b2/_history/d88c3572-ad7f-42d9-a0ed-eff8019744eb', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_jMEPmtRKQ9' + } + ], + name: 'Ama District Office', + alias: ['Ama District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/6ae4ce7e-3a50-4813-af7e-66da42a0c96e' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.942+00:00', + versionId: 'd88c3572-ad7f-42d9-a0ed-eff8019744eb' + }, + id: 'db07dc32-2280-4705-8b5f-54044b29f8b2' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/8eefa8d1-c13d-4a56-9965-bdc73b263432/_history/366ddcd7-2174-487b-8469-fc7289051421', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_hfFdA2JI3T' + } + ], + name: 'Nsali District Office', + alias: ['Nsali District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/6cb00437-29d7-44a8-ad8a-15a2866fef03' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.945+00:00', + versionId: '366ddcd7-2174-487b-8469-fc7289051421' + }, + id: '8eefa8d1-c13d-4a56-9965-bdc73b263432' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/97151a9d-3223-449f-8115-f4361fc1a6f2/_history/3128d669-3a4b-441e-8667-054da265e503', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_mNCAv7oKj8' + } + ], + name: 'Soka District Office', + alias: ['Soka District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/dc249283-09d7-47f4-bfeb-df366cfc1d04' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.947+00:00', + versionId: '3128d669-3a4b-441e-8667-054da265e503' + }, + id: '97151a9d-3223-449f-8115-f4361fc1a6f2' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/e8d52f39-6792-4f61-b247-9a1177fe074c/_history/93cf6fea-ac50-45e5-8314-292b299bb165', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_H0EaOnzz0a' + } + ], + name: 'Chibiya District Office', + alias: ['Chibiya District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/678fe2f7-c77c-4681-9348-681ab2351162' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.949+00:00', + versionId: '93cf6fea-ac50-45e5-8314-292b299bb165' + }, + id: 'e8d52f39-6792-4f61-b247-9a1177fe074c' + }, + request: { method: 'POST', url: 'Location' } + } + ] + }) + }) + ], + modules: [ + http.get('http://localhost:3040/conditionals.js', (req, res, ctx) => { + return HttpResponse.text('', { status: 404 }) + }), + http.get('http://localhost:3040/handlebars.js', (req, res, ctx) => { + return HttpResponse.text('', { status: 404 }) + }), + http.get('http://localhost:3040/validators.js', (req, res, ctx) => { + return HttpResponse.text('export function noop() {}', { + status: 200, + headers: { + 'content-type': 'application/javascript' + } + }) + }) + ], + config: [ + http.get('http://localhost:2021/config', (req, res, ctx) => { + return HttpResponse.json({ + systems: [], + config: mockOfflineData.config, + certificates: [] + }) + }) + ], + localisations: [ + http.get('http://localhost:3040/content/client', (req, res, ctx) => { + return HttpResponse.json({ + languages: [ + { + lang: 'en', + messages: {} + }, + { + lang: 'fr', + messages: {} + } + ] + }) + }) + ], + forms: [ + http.get('http://localhost:2021/forms', (req, res, ctx) => { + return HttpResponse.json(forms.forms) + }) + ] + } + } +} + +const preview: Preview = { + loaders: [mswLoader], + beforeEach: async () => { + window.localStorage.setItem( + 'opencrvs', + 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYWRtaW4iLCJpYXQiOjE1MzMxOTUyMjgsImV4cCI6MTU0MzE5NTIyNywiYXVkIjpbImdhdGV3YXkiXSwic3ViIjoiMSJ9.G4KzkaIsW8fTkkF-O8DI0qESKeBI332UFlTXRis3vJ6daisu06W5cZsgYhmxhx_n0Q27cBYt2OSOnjgR72KGA5IAAfMbAJifCul8ib57R4VJN8I90RWqtvA0qGjV-sPndnQdmXzCJx-RTumzvr_vKPgNDmHzLFNYpQxcmQHA-N8li-QHMTzBHU4s9y8_5JOCkudeoTMOd_1021EDAQbrhonji5V1EOSY2woV5nMHhmq166I1L0K_29ngmCqQZYi1t6QBonsIowlXJvKmjOH5vXHdCCJIFnmwHmII4BK-ivcXeiVOEM_ibfxMWkAeTRHDshOiErBFeEvqd6VWzKvbKAH0UY-Rvnbh4FbprmO4u4_6Yd2y2HnbweSo-v76dVNcvUS0GFLFdVBt0xTay-mIeDy8CKyzNDOWhmNUvtVi9mhbXYfzzEkwvi9cWwT1M8ZrsWsvsqqQbkRCyBmey_ysvVb5akuabenpPsTAjiR8-XU2mdceTKqJTwbMU5gz-8fgulbTB_9TNJXqQlH7tyYXMWHUY3uiVHWg2xgjRiGaXGTiDgZd01smYsxhVnPAddQOhqZYCrAgVcT1GBFVvhO7CC-rhtNlLl21YThNNZNpJHsCgg31WA9gMQ_2qAJmw2135fAyylO8q7ozRUvx46EezZiPzhCkPMeELzLhQMEIqjo' + ) + }, + decorators: [ + (Story) => ( + + + ) ] } diff --git a/packages/client/package.json b/packages/client/package.json index 479411df27a..9b09643ce48 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -22,7 +22,7 @@ "build:clean": "rm -rf build", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", - "chromatic": "npx chromatic --project-token=chpt_00979ecfbf44023" + "test-storybook": "test-storybook" }, "lint-staged": { "src/**/*.{ts,tsx}": [ @@ -83,6 +83,7 @@ "jwt-decode": "^3.0.0", "localforage": "^1.7.2", "lodash": "^4.17.10", + "msw-storybook-addon": "^2.0.4", "patch-package": "^6.1.2", "pdfmake": "^0.2.5", "postinstall-postinstall": "^2.0.0", @@ -132,6 +133,7 @@ "@storybook/react": "^8.4.7", "@storybook/react-vite": "^8.4.7", "@storybook/test": "^8.4.7", + "@storybook/test-runner": "^0.21.0", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.1.0", "@types/browser-image-compression": "^1.0.13", diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index 93f6e2bf063..e77793a3085 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -8,14 +8,15 @@ * * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ -import { readFileSync } from 'fs' -import { join } from 'path' import { System, SystemStatus, SystemType } from '@client/utils/gateway' import type { Facility, CRVSOffice, AdminStructure } from '@client/offline/reducer' +import forms from './forms.json' +import languages from './languages.json' +import templates from './templates.json' export const validImageB64String = 'iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAYAAABllJ3tAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAXSURBVAiZY1RWVv7PgAcw4ZNkYGBgAABYyAFsic1CfAAAAABJRU5ErkJggg==' @@ -54,11 +55,8 @@ const systems: System[] = [ ] export const mockOfflineData = { - forms: JSON.parse(readFileSync(join(__dirname, './forms.json')).toString()) - .forms, - userForms: JSON.parse( - readFileSync(join(__dirname, './forms.json')).toString() - ).userForm, + forms: forms.forms, + userForms: forms.userForm, facilities: { '627fc0cc-e0e2-4c09-804d-38a9fa1807ee': { id: '627fc0cc-e0e2-4c09-804d-38a9fa1807ee', @@ -401,12 +399,8 @@ export const mockOfflineData = { type: 'ADMIN_STRUCTURE' } } satisfies Record, - languages: JSON.parse( - readFileSync(join(__dirname, './languages.json')).toString() - ).data, - templates: JSON.parse( - readFileSync(join(__dirname, './templates.json')).toString() - ), + languages: languages.data, + templates: templates, assets: { logo: `data:image;base64,${validImageB64String}` }, diff --git a/packages/client/src/stories/Workqueue.stories.tsx b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx similarity index 66% rename from packages/client/src/stories/Workqueue.stories.tsx rename to packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx index a1e9614310f..6ef4018bc93 100644 --- a/packages/client/src/stories/Workqueue.stories.tsx +++ b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx @@ -7,32 +7,18 @@ import { TRPCProvider } from '@client/v2-events/trpc' import { AppRouter } from '@gateway/v2-events/events/router' import type { Meta, StoryObj } from '@storybook/react' import { createTRPCMsw } from 'msw-trpc' -import { setupWorker } from 'msw/browser' import React from 'react' import superjson from 'superjson' -const trpcMsw = createTRPCMsw({ +const tRPCMsw = createTRPCMsw({ baseUrl: '/api/events', transformer: { input: superjson, output: superjson } }) -const worker = setupWorker( - trpcMsw.config.get.query(() => { - return [tennisClubMembershipEvent] - }), - trpcMsw.events.get.query(() => { - return [tennisClubMembershipEventIndex] - }) -) - const meta: Meta = { title: 'Workqueue', component: WorkqueueIndex, - loaders: [ - async () => { - await worker.start() - } - ], + decorators: [ (Story) => ( @@ -43,4 +29,19 @@ const meta: Meta = { } export default meta -export const Default: StoryObj = {} +export const Default: StoryObj = { + parameters: { + msw: { + handlers: { + events: [ + tRPCMsw.config.get.query(() => { + return [tennisClubMembershipEvent] + }), + tRPCMsw.events.get.query(() => { + return [tennisClubMembershipEventIndex] + }) + ] + } + } + } +} diff --git a/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx new file mode 100644 index 00000000000..9e5df83e4cb --- /dev/null +++ b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx @@ -0,0 +1,138 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * OpenCRVS is also distributed under the terms of the Civil Registration + * & Healthcare Disclaimer located at http://opencrvs.org/license. + * + * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. + */ + +import type { Meta, StoryObj } from '@storybook/react' +import { graphql, HttpResponse } from 'msw' +import React from 'react' +import { OfficeHome } from './OfficeHome' + +const meta: Meta = { + title: 'OfficeHome', + component: OfficeHome, + decorators: [(Story) => ] +} + +export default meta + +type Story = StoryObj + +export const WithData: Story = { + parameters: { + msw: { + handlers: { + registrationHome: [ + graphql.query('registrationHome', (req, res, ctx) => { + return HttpResponse.json({ + data: { + inProgressTab: { + totalItems: 1, + results: [ + { + id: '54df1180-8eda-4ba2-955e-91511b42924b', + type: 'death', + registration: { + status: 'IN_PROGRESS', + contactRelationship: 'GRANDSON', + contactNumber: null, + trackingId: 'DLK5DGE', + eventLocationId: null, + registrationNumber: null, + registeredLocationId: + '028d2c85-ca31-426d-b5d1-2cef545a4902', + duplicates: null, + createdAt: '1736928593176', + modifiedAt: '1736928603287', + assignment: { + practitionerId: + '6eca185f-7ec5-4f20-ae40-d9234a459a73', + firstName: 'Felix', + lastName: 'Katongo', + officeName: 'Ibombo District Office', + avatarURL: + 'https://eu.ui-avatars.com/api/?background=DEE5F2&color=222&name=Felix Katongo', + __typename: 'AssignmentData' + }, + __typename: 'RegistrationSearchSet' + }, + operationHistories: [ + { + operationType: 'IN_PROGRESS', + operatedOn: '2025-01-15T08:09:52.768Z', + __typename: 'OperationHistorySearchSet' + } + ], + dateOfDeath: null, + deceasedName: [ + { + firstNames: 'Joshua', + middleName: '', + familyName: null, + use: 'en', + __typename: 'HumanName' + }, + { + firstNames: '', + middleName: '', + familyName: null, + use: 'fr', + __typename: 'HumanName' + } + ], + __typename: 'DeathEventSearchSet' + } + ], + __typename: 'EventSearchResultSet' + }, + notificationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + reviewTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + rejectTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + approvalTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + externalValidationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + printTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + issueTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + } + } + }) + }) + ] + } + } + } +} + +export const WithoutData: Story = {} diff --git a/packages/client/src/views/OfficeHome/OfficeHome.tsx b/packages/client/src/views/OfficeHome/OfficeHome.tsx index b1276d38283..63e1599e184 100644 --- a/packages/client/src/views/OfficeHome/OfficeHome.tsx +++ b/packages/client/src/views/OfficeHome/OfficeHome.tsx @@ -466,7 +466,6 @@ class OfficeHomeView extends React.Component< /> - {this.state.showCertificateToast && ( { }, resolve: { alias: { - crypto: 'crypto-js' + crypto: require.resolve('crypto-js') } }, plugins: [ diff --git a/packages/components/src/Spinner/Spinner.tsx b/packages/components/src/Spinner/Spinner.tsx index 6757b450572..44b9428a9ad 100644 --- a/packages/components/src/Spinner/Spinner.tsx +++ b/packages/components/src/Spinner/Spinner.tsx @@ -63,6 +63,7 @@ export const Spinner = ({ id, className, baseColor, size }: ISpinner) => ( className={className} baseColor={baseColor} size={size ? size : 48} + data-testid="spinner" > diff --git a/yarn.lock b/yarn.lock index 44209c32d38..61612d4d8d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -904,7 +904,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.23.9": +"@babel/core@^7.22.5", "@babel/core@^7.23.9", "@babel/core@^7.7.5": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== @@ -986,6 +986,17 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.22.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" + integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== + dependencies: + "@babel/parser" "^7.26.5" + "@babel/types" "^7.26.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/generator@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" @@ -1767,6 +1778,13 @@ dependencies: "@babel/types" "^7.25.6" +"@babel/parser@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.5.tgz#6fec9aebddef25ca57a935c86dbb915ae2da3e1f" + integrity sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw== + dependencies: + "@babel/types" "^7.26.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" @@ -3360,6 +3378,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.5.tgz#7a1e1c01d28e26d1fe7f8ec9567b3b92b9d07747" + integrity sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz" @@ -5593,6 +5619,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + "@jest/environment@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" @@ -8485,6 +8518,31 @@ fs-extra "^11.1.0" read-pkg-up "^7.0.1" +"@storybook/test-runner@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@storybook/test-runner/-/test-runner-0.21.0.tgz#31e7a6878e15a3f4d5555c57a135dd4d13fce9c4" + integrity sha512-aG2QvKXSIjMN1CA9PJK/esnidZWgt1gAkfo9Kqf8+NqBSsmP/2GyL5vxu1lkRFO/4qCv5JenNZ5Uj6ie4b2oag== + dependencies: + "@babel/core" "^7.22.5" + "@babel/generator" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + "@jest/types" "^29.6.3" + "@storybook/csf" "^0.1.11" + "@swc/core" "^1.5.22" + "@swc/jest" "^0.2.23" + expect-playwright "^0.8.0" + jest "^29.6.4" + jest-circus "^29.6.4" + jest-environment-node "^29.6.4" + jest-junit "^16.0.0" + jest-playwright-preset "^4.0.0" + jest-runner "^29.6.4" + jest-serializer-html "^7.1.0" + jest-watch-typeahead "^2.0.0" + nyc "^15.1.0" + playwright "^1.14.0" + "@storybook/test@8.4.7", "@storybook/test@^8.4.7": version "8.4.7" resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.4.7.tgz#7f58f2cdf3a6d810bf3ff4e0e2fee634040c678f" @@ -8617,6 +8675,80 @@ "@svgr/hast-util-to-babel-ast" "^6.5.1" svg-parser "^2.0.4" +"@swc/core-darwin-arm64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.7.tgz#ff727de61faabfbdfe062747e47305ee3472298e" + integrity sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ== + +"@swc/core-darwin-x64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.7.tgz#a276d5ee56e7c9fb03201c92c620143f8df6b52e" + integrity sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ== + +"@swc/core-linux-arm-gnueabihf@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.7.tgz#8f2041b818691e7535bc275d32659e77b5f2fecc" + integrity sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg== + +"@swc/core-linux-arm64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.7.tgz#c185499f7db12ee95fdceb4c00fb503ed398cf1d" + integrity sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw== + +"@swc/core-linux-arm64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.7.tgz#20732c402ba44fbd708e9871aaa10df5597a3d01" + integrity sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog== + +"@swc/core-linux-x64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.7.tgz#d6310152dd154c0796d1c0d99eb89fc26957c8f6" + integrity sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA== + +"@swc/core-linux-x64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.7.tgz#e03d4ec66f4234323887774151d1034339d0d7af" + integrity sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA== + +"@swc/core-win32-arm64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.7.tgz#f1a8c3149e2671d477af4ca39c761d6ade342d4c" + integrity sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ== + +"@swc/core-win32-ia32-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.7.tgz#133f3168fee9910566a874eb1d422dc79eb17d54" + integrity sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw== + +"@swc/core-win32-x64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.7.tgz#84d6ed82b2f19bc00b868c9747f03ea6661d8023" + integrity sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q== + +"@swc/core@^1.5.22": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.10.7.tgz#736a5bbf0db7628cb2de3eac871e331f9a27e60b" + integrity sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.17" + optionalDependencies: + "@swc/core-darwin-arm64" "1.10.7" + "@swc/core-darwin-x64" "1.10.7" + "@swc/core-linux-arm-gnueabihf" "1.10.7" + "@swc/core-linux-arm64-gnu" "1.10.7" + "@swc/core-linux-arm64-musl" "1.10.7" + "@swc/core-linux-x64-gnu" "1.10.7" + "@swc/core-linux-x64-musl" "1.10.7" + "@swc/core-win32-arm64-msvc" "1.10.7" + "@swc/core-win32-ia32-msvc" "1.10.7" + "@swc/core-win32-x64-msvc" "1.10.7" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + "@swc/helpers@^0.5.11": version "0.5.15" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" @@ -8624,6 +8756,22 @@ dependencies: tslib "^2.8.0" +"@swc/jest@^0.2.23": + version "0.2.37" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.37.tgz#9c2aaf22c87682aa968016e3e4843d1a25cae6bd" + integrity sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ== + dependencies: + "@jest/create-cache-key-function" "^29.7.0" + "@swc/counter" "^0.1.3" + jsonc-parser "^3.2.0" + +"@swc/types@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.17.tgz#bd1d94e73497f27341bf141abdf4c85230d41e7c" + integrity sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ== + dependencies: + "@swc/counter" "^0.1.3" + "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" @@ -9734,7 +9882,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@18.3.1", "@types/react@>=16", "@types/react@^16": +"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@18.3.1", "@types/react@>=16": version "18.3.1" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e" integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== @@ -9742,6 +9890,15 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@^16": + version "16.14.62" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.62.tgz#449e4e81caaf132d0c2c390644e577702db1dd9e" + integrity sha512-BWf7hqninZav6nerxXj+NeZT/mTpDeG6Lk2zREHAy63CrnXoOGPGtNqTFYFN/sqpSaREDP5otVV88axIXmKfGA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "^0.16" + csstype "^3.0.2" + "@types/readdir-glob@*": version "1.1.3" resolved "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.3.tgz" @@ -9810,6 +9967,11 @@ dependencies: htmlparser2 "^8.0.0" +"@types/scheduler@^0.16": + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + "@types/semver@^7.3.4": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" @@ -9925,6 +10087,13 @@ resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz" integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== +"@types/wait-on@^5.2.0": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@types/wait-on/-/wait-on-5.3.4.tgz#5ee270b3e073fb01073f9f044922c6893de8c4d2" + integrity sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw== + dependencies: + "@types/node" "*" + "@types/webfontloader@^1.6.34": version "1.6.38" resolved "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.38.tgz" @@ -10659,6 +10828,11 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: dependencies: type-fest "^0.21.3" +ansi-escapes@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.1.tgz#76c54ce9b081dad39acec4b5d53377913825fb0f" + integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== + ansi-escapes@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" @@ -10778,6 +10952,13 @@ app-root-dir@^1.0.2: resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== + dependencies: + default-require-extensions "^3.0.0" + "aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" @@ -10872,6 +11053,11 @@ archiver@^7.0.1: tar-stream "^3.0.0" zip-stream "^6.0.1" +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + are-we-there-yet@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" @@ -11306,6 +11492,15 @@ axios@^1.6.0, axios@^1.7.2: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.6.1: + version "1.7.9" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" @@ -12054,6 +12249,16 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" + call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" @@ -12222,7 +12427,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@~4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -12235,6 +12440,11 @@ chalk@^5.0.1, chalk@~5.3.0: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== +chalk@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + change-case-all@1.0.15: version "1.0.15" resolved "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz" @@ -12274,6 +12484,11 @@ char-regex@^1.0.2: resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +char-regex@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.2.tgz#81385bb071af4df774bff8721d0ca15ef29ea0bb" + integrity sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" @@ -12661,11 +12876,21 @@ commander@^10.0.0: resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== +commander@^12.1.0, commander@~12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + commander@^4.0.0: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" @@ -12681,11 +12906,6 @@ commander@^9.1.0: resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -commander@~12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - common-tags@1.8.2, common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" @@ -12932,7 +13152,7 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -13342,6 +13562,14 @@ currency-symbol-map@~2: resolved "https://registry.npmjs.org/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz" integrity sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA== +cwd@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" + integrity sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA== + dependencies: + find-pkg "^0.1.2" + fs-exists-sync "^0.1.0" + "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" @@ -13665,6 +13893,13 @@ default-browser-id@3.0.0: bplist-parser "^0.2.0" untildify "^4.0.0" +default-require-extensions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" + integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== + dependencies: + strip-bom "^4.0.0" + defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" @@ -13838,6 +14073,13 @@ diff@^3.1.0: resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diffable-html@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/diffable-html/-/diffable-html-4.1.0.tgz#e7a2d1de187c4e23a59751b4e4c17483a058c696" + integrity sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g== + dependencies: + htmlparser2 "^3.9.2" + dijkstrajs@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz" @@ -13927,6 +14169,14 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" @@ -13936,7 +14186,12 @@ dom-serializer@^2.0.0: domhandler "^5.0.2" entities "^4.2.0" -domelementtype@^2.3.0: +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -13948,6 +14203,13 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" @@ -13955,6 +14217,14 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + domutils@^3.0.1: version "3.1.0" resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" @@ -14245,6 +14515,16 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" @@ -14619,6 +14899,11 @@ es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: esniff "^2.0.1" next-tick "^1.1.0" +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -15408,6 +15693,18 @@ exit@^0.1.2: resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== + dependencies: + os-homedir "^1.0.1" + +expect-playwright@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/expect-playwright/-/expect-playwright-0.8.0.tgz#6d4ebe0bdbdd3c1693d880d97153b96a129ae4e8" + integrity sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg== + expect-type@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75" @@ -15666,7 +15963,14 @@ fast-url-parser@1.1.3, fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" -fast-xml-parser@4.2.5, fast-xml-parser@4.4.1, fast-xml-parser@^4.1.3, fast-xml-parser@^4.2.2: +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + +fast-xml-parser@^4.1.3, fast-xml-parser@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== @@ -15835,7 +16139,7 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.0.0, find-cache-dir@^3.3.2: +find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -15844,6 +16148,30 @@ find-cache-dir@^3.0.0, find-cache-dir@^3.3.2: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A== + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw== + dependencies: + find-file-up "^0.1.2" + +find-process@^1.4.4: + version "1.4.10" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.10.tgz#006af3349d8debdb9fb79fb1e859959350307c02" + integrity sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg== + dependencies: + chalk "~4.1.2" + commander "^12.1.0" + loglevel "^1.9.2" + find-rc@4.x.x: version "4.0.1" resolved "https://registry.npmjs.org/find-rc/-/find-rc-4.0.1.tgz" @@ -16049,11 +16377,21 @@ fresh@0.5.2: resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== + fs-extra@11.1.1, fs-extra@^11.1.0: version "11.1.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" @@ -16119,6 +16457,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -16491,6 +16834,14 @@ glob@^9.2.0: minipass "^4.2.4" path-scurry "^1.6.1" +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" @@ -16498,6 +16849,16 @@ global-modules@^2.0.0: dependencies: global-prefix "^3.0.0" +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" @@ -16839,6 +17200,14 @@ has@^1.0.0, has@^1.0.1, has@^1.0.3: resolved "https://registry.npmjs.org/has/-/has-1.0.4.tgz" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + hasown@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" @@ -16915,6 +17284,13 @@ hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react- dependencies: react-is "^16.7.0" +homedir-polyfill@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" @@ -16988,6 +17364,18 @@ html-to-pdfmake@^2.5.13: resolved "https://registry.yarnpkg.com/html-to-pdfmake/-/html-to-pdfmake-2.5.14.tgz#4ff8b865b4aa8678ca9f18b16d5bf3014566c8ec" integrity sha512-0mwRkI2NHmY8rE7bHESglmeUsgFPSatvyTWZIeeU7FIXXxUEMRx704xMyKxWo1XBsGqmWAI7nhomrciiy1sWtw== +htmlparser2@^3.9.2: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + htmlparser2@^8.0.0, htmlparser2@^8.0.1: version "8.0.2" resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" @@ -17271,7 +17659,7 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.2, ini@^1.3.5, ini@^1.3.8, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@^1.3.8, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -17666,7 +18054,7 @@ is-nil@^1.0.0: resolved "https://registry.npmjs.org/is-nil/-/is-nil-1.0.1.tgz" integrity sha512-m2Rm8PhUFDNNhgvwZJjJG74a9h5CHU0fkA8WT+WGlCjyEbZ2jPwgb+ZxHu4np284EqNVyOsgppReK4qy/TwEwg== -is-node-process@^1.2.0: +is-node-process@^1.0.1, is-node-process@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz" integrity sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw== @@ -17843,6 +18231,11 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + is-unc-path@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz" @@ -17887,7 +18280,12 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" -is-windows@^1.0.1: +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== + +is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -17947,6 +18345,23 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" @@ -17969,6 +18384,18 @@ istanbul-lib-instrument@^6.0.0: istanbul-lib-coverage "^3.2.0" semver "^7.5.4" +istanbul-lib-processinfo@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.3" + istanbul-lib-coverage "^3.2.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^8.3.2" + istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" @@ -17987,7 +18414,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.1.3: +istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: version "3.1.7" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== @@ -18056,7 +18483,7 @@ jest-changed-files@^29.7.0: jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@^29.7.0: +jest-circus@^29.6.4, jest-circus@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== @@ -18165,7 +18592,7 @@ jest-each@^29.7.0: jest-util "^29.7.0" pretty-format "^29.7.0" -jest-environment-node@^29.7.0: +jest-environment-node@^29.6.4, jest-environment-node@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== @@ -18214,6 +18641,16 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" +jest-junit@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-16.0.0.tgz#d838e8c561cf9fdd7eb54f63020777eee4136785" + integrity sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^6.0.1" + uuid "^8.3.2" + xml "^1.0.1" + jest-leak-detector@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" @@ -18256,12 +18693,40 @@ jest-mock@^29.7.0: "@types/node" "*" jest-util "^29.7.0" +jest-playwright-preset@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jest-playwright-preset/-/jest-playwright-preset-4.0.0.tgz#c3d60cf039b48209cfd2234e6c7694d7ecb1cc7f" + integrity sha512-+dGZ1X2KqtwXaabVjTGxy0a3VzYfvYsWaRcuO8vMhyclHSOpGSI1+5cmlqzzCwQ3+fv0EjkTc7I5aV9lo08dYw== + dependencies: + expect-playwright "^0.8.0" + jest-process-manager "^0.4.0" + nyc "^15.1.0" + playwright-core ">=1.2.0" + rimraf "^3.0.2" + uuid "^8.3.2" + jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.6.3: +jest-process-manager@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/jest-process-manager/-/jest-process-manager-0.4.0.tgz#fb05c8e09ad400fd038436004815653bb98f4e8b" + integrity sha512-80Y6snDyb0p8GG83pDxGI/kQzwVTkCxc7ep5FPe/F6JYdvRDhwr6RzRmPSP7SEwuLhxo80lBS/NqOdUIbHIfhw== + dependencies: + "@types/wait-on" "^5.2.0" + chalk "^4.1.0" + cwd "^0.10.0" + exit "^0.1.2" + find-process "^1.4.4" + prompts "^2.4.1" + signal-exit "^3.0.3" + spawnd "^5.0.0" + tree-kill "^1.2.2" + wait-on "^7.0.0" + +jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== @@ -18289,7 +18754,7 @@ jest-resolve@^29.7.0: resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.7.0: +jest-runner@^29.6.4, jest-runner@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== @@ -18344,6 +18809,13 @@ jest-runtime@^29.7.0: slash "^3.0.0" strip-bom "^4.0.0" +jest-serializer-html@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer-html/-/jest-serializer-html-7.1.0.tgz#0cfea8a03b9b82bc420fd2cb969bd76713a87c08" + integrity sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA== + dependencies: + diffable-html "^4.1.0" + jest-snapshot@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" @@ -18406,7 +18878,20 @@ jest-validate@^29.7.0: leven "^3.1.0" pretty-format "^29.7.0" -jest-watcher@^29.7.0: +jest-watch-typeahead@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-2.2.2.tgz#5516d3cd006485caa5cfc9bd1de40f1f8b136abf" + integrity sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ== + dependencies: + ansi-escapes "^6.0.0" + chalk "^5.2.0" + jest-regex-util "^29.0.0" + jest-watcher "^29.0.0" + slash "^5.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^29.0.0, jest-watcher@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== @@ -18430,7 +18915,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@29.7.0: +jest@29.7.0, jest@^29.6.4: version "29.7.0" resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -18450,6 +18935,17 @@ jiti@^1.18.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +joi@^17.11.0: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + joi@^17.2.1, joi@^17.3.0, joi@^17.5.0, joi@^17.7.0: version "17.13.0" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.0.tgz#b6f340b8029ee7af2397f821d17a4f03bf34b043" @@ -18694,6 +19190,11 @@ jsonc-parser@3.2.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +jsonc-parser@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" @@ -19325,6 +19826,11 @@ loglevel@^1.6.8: resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== +loglevel@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" + integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== + long@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz" @@ -19487,7 +19993,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -19886,7 +20392,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -20207,6 +20713,13 @@ msgpackr@^1.6.2: optionalDependencies: msgpackr-extract "^3.0.2" +msw-storybook-addon@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/msw-storybook-addon/-/msw-storybook-addon-2.0.4.tgz#ff1f583c95aef5f8c2014299f235e13cdd34dc1b" + integrity sha512-rstO8+r01sRMg6PPP7OxM8LG5/6r4+wmp2uapHeHvm9TQQRHvpPXOU/Y9/Somysz8Oi4Ea1aummXH3JlnP2LIA== + dependencies: + is-node-process "^1.0.1" + msw-trpc@^2.0.0-beta.1: version "2.0.0-beta.1" resolved "https://registry.yarnpkg.com/msw-trpc/-/msw-trpc-2.0.0-beta.1.tgz#d77ac70e88ae33959d5d543513b82e47cb072b17" @@ -20484,6 +20997,13 @@ node-match-path@^0.5.2: resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.5.2.tgz" integrity sha512-/qMS+TTZ4ZQzP+YvLkjzHHH3aSk2HXaNByMN3l7/nZNna3AzsEWgBIDsPyqdNiYznDGFGb+l+9fMiY96Xrd8fA== +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" + node-releases@^2.0.13: version "2.0.13" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" @@ -20813,6 +21333,39 @@ nx@19.0.5, "nx@>=17.1.2 < 20": "@nx/nx-win32-arm64-msvc" "19.0.5" "@nx/nx-win32-x64-msvc" "19.0.5" +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== + dependencies: + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" + nypm@^0.3.8: version "0.3.12" resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.12.tgz#37541bec0af3a37d3acd81d6662c6666e650b22e" @@ -21126,6 +21679,11 @@ original-url@^1.2.3: dependencies: forwarded-parse "^2.1.0" +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" @@ -21217,6 +21775,13 @@ p-map@4.0.0, p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" @@ -21259,6 +21824,16 @@ p-waterfall@2.1.1: dependencies: p-reduce "^2.0.0" +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + package-json-from-dist@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" @@ -21335,6 +21910,11 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + parse-path@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz" @@ -21749,6 +22329,20 @@ pkg-up@3.x.x, pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +playwright-core@1.49.1, playwright-core@>=1.2.0: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015" + integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg== + +playwright@^1.14.0: + version "1.49.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c" + integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA== + dependencies: + playwright-core "1.49.1" + optionalDependencies: + fsevents "2.3.2" + png-js@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz" @@ -21910,6 +22504,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-on-spawn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.1.0.tgz#9d5999ba87b3bf0a8acb05322d69f2f5aa4fb763" + integrity sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q== + dependencies: + fromentries "^1.2.0" + process-warning@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz" @@ -21957,7 +22558,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@^2.0.1, prompts@^2.4.0: +prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -22971,6 +23572,13 @@ relay-runtime@12.0.0: fbjs "^3.0.0" invariant "^2.2.4" +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== + dependencies: + es6-error "^4.0.1" + remark-external-links@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" @@ -23052,6 +23660,14 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" @@ -23741,6 +24357,11 @@ slash@^2.0.0: resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" @@ -23925,6 +24546,28 @@ spawn-command@0.0.2: resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + +spawnd@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-5.0.0.tgz#ea72200bdc468998e84e1c3e7b914ce85fc1c32c" + integrity sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA== + dependencies: + exit "^0.1.2" + signal-exit "^3.0.3" + tree-kill "^1.2.2" + wait-port "^0.2.9" + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" @@ -24210,6 +24853,14 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + string-natural-compare@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" @@ -25469,7 +26120,7 @@ type-fest@^0.6.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -25580,6 +26231,13 @@ typed-array-length@^1.0.5, typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" @@ -26243,6 +26901,26 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" +wait-on@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" + integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== + dependencies: + axios "^1.6.1" + joi "^17.11.0" + lodash "^4.17.21" + minimist "^1.2.8" + rxjs "^7.8.1" + +wait-port@^0.2.9: + version "0.2.14" + resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.14.tgz#6df40629be2c95aa4073ceb895abef7d872b28c6" + integrity sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ== + dependencies: + chalk "^2.4.2" + commander "^3.0.2" + debug "^4.1.1" + walker@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" @@ -26479,7 +27157,7 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.9, which@^1.3.1: +which@^1.2.12, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -26801,6 +27479,16 @@ write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write-file-atomic@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" @@ -27004,7 +27692,7 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.3.1: +yargs@^15.0.2, yargs@^15.3.1: version "15.4.1" resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== From ee66373ca71a895a65521c254a759de00179afae Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 16:08:37 +0900 Subject: [PATCH 03/21] Update packages/client/src/v2-events/features/events/fixtures.ts Co-authored-by: Markus Laurila --- packages/client/src/v2-events/features/events/fixtures.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/v2-events/features/events/fixtures.ts b/packages/client/src/v2-events/features/events/fixtures.ts index 6eaf73bb3d5..b10e4c67277 100644 --- a/packages/client/src/v2-events/features/events/fixtures.ts +++ b/packages/client/src/v2-events/features/events/fixtures.ts @@ -161,7 +161,7 @@ export const tennisClubMembershipEvent = { id: 'applicant.firstname', label: { defaultMessage: 'First name', - description: 'Label for the gien field from form.', + description: 'Label for the given field on form.', id: 'event.tennis-club-membership.summary.field.firstname.label' } }, From dbc3f20bd15c615fd14df43eb4407b2edfa751bf Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 16:16:22 +0900 Subject: [PATCH 04/21] add missing license headers --- license-config.json | 3 +++ packages/client/.storybook/main.ts | 11 +++++++++++ packages/client/.storybook/preview.tsx | 11 +++++++++++ .../features/workqueues/Workqueue.stories.tsx | 11 +++++++++++ 4 files changed, 36 insertions(+) diff --git a/license-config.json b/license-config.json index 070cafca13d..090aadeea3d 100644 --- a/license-config.json +++ b/license-config.json @@ -17,6 +17,7 @@ "backups", "**/coverage", "packages/client/public/robots.txt", + "packages/client/public/mockServiceWorker.js", "packages/login/public/robots.txt", ".env*", ".vs", @@ -36,6 +37,8 @@ "packages/components/.storybook/preview.jsx", "packages/components/.storybook/manager-head.html", "grafana", + "packages/client/storybook-static", + "packages/client/.storybook/preview-head.html", "packages/scheduler/start.sh", "packages/scheduler/crontab", "packages/scheduler/jobs/*", diff --git a/packages/client/.storybook/main.ts b/packages/client/.storybook/main.ts index a9f1014537d..f6ad4208c56 100644 --- a/packages/client/.storybook/main.ts +++ b/packages/client/.storybook/main.ts @@ -1,3 +1,14 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * OpenCRVS is also distributed under the terms of the Civil Registration + * & Healthcare Disclaimer located at http://opencrvs.org/license. + * + * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. + */ + import type { StorybookConfig } from '@storybook/react-vite' import { join, dirname } from 'path' diff --git a/packages/client/.storybook/preview.tsx b/packages/client/.storybook/preview.tsx index e587a57e892..b15b26a4978 100644 --- a/packages/client/.storybook/preview.tsx +++ b/packages/client/.storybook/preview.tsx @@ -1,3 +1,14 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * OpenCRVS is also distributed under the terms of the Civil Registration + * & Healthcare Disclaimer located at http://opencrvs.org/license. + * + * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. + */ + import { getTheme } from '@opencrvs/components/lib/theme' import type { Preview } from '@storybook/react' import { graphql, http, HttpResponse } from 'msw' diff --git a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx index 6ef4018bc93..b995caad3d7 100644 --- a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx +++ b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx @@ -1,3 +1,14 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * OpenCRVS is also distributed under the terms of the Civil Registration + * & Healthcare Disclaimer located at http://opencrvs.org/license. + * + * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. + */ + import { tennisClubMembershipEvent, tennisClubMembershipEventIndex From 743b37b47559839cffa7c2591a82bf3ed9f9570d Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 16:18:04 +0900 Subject: [PATCH 05/21] fix storybook path --- .github/workflows/lint-and-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index c83a9746801..7d6177affa8 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -301,6 +301,7 @@ jobs: - name: Run Chromatic uses: chromaui/action@latest with: + storybookBaseDir: packages/client projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} test-client: From 65b0f0684f17ab0d0295c932072f7c05e4b8b93c Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 16:23:46 +0900 Subject: [PATCH 06/21] use different option --- .github/workflows/lint-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 7d6177affa8..033d8a46692 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -301,7 +301,7 @@ jobs: - name: Run Chromatic uses: chromaui/action@latest with: - storybookBaseDir: packages/client + workingDir: packages/client projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} test-client: From 657fdd6075cbfc635422ff057d0cec2e3612fdbd Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:05:06 +0900 Subject: [PATCH 07/21] make visual tests its own separate testing phase --- .github/workflows/lint-and-test.yml | 67 +- .../.storybook/default-request-handlers.ts | 1137 +++++++++++++++++ packages/client/.storybook/preview.tsx | 1115 +--------------- .../features/workqueues/Workqueue.stories.tsx | 26 +- 4 files changed, 1174 insertions(+), 1171 deletions(-) create mode 100644 packages/client/.storybook/default-request-handlers.ts diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 033d8a46692..f1793aa6265 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -161,6 +161,38 @@ jobs: if: matrix.package != 'packages/client' && steps.check-scripts.outputs.skip != 'true' && steps.check-scripts.outputs.skip-test != 'true' run: cd ${{ matrix.package }} && yarn test + run-visual-tests: + name: Run visual tests + runs-on: ubuntu-22.04 + + steps: + - name: Checking out git repo + uses: actions/checkout@v4 + + - name: Use Node.js from .nvmrc + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + + - name: Cache Node.js dependencies + uses: actions/cache@v4 + with: + path: | + **/node_modules + ~/.cache/yarn/v6 + key: node-${{ hashFiles('**/yarn.lock', format('{0}/{1}','packages/client','package.json')) }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install dependencies + run: CI="" yarn install --frozen-lockfile + + - name: Run Chromatic + uses: chromaui/action@latest + with: + workingDir: packages/client + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + prepare-client-tests: name: Prepare client tests runs-on: ubuntu-22.04 @@ -268,41 +300,6 @@ jobs: - name: Run linting run: cd packages/client && yarn lint - run-visual-tests: - name: Run visual tests - needs: prepare-client-tests - runs-on: ubuntu-22.04 - - steps: - - name: Download filesystem artifact - uses: actions/download-artifact@v4.1.8 - with: - name: client - path: . - - - name: Use Node.js from .nvmrc - uses: actions/setup-node@v4 - with: - node-version-file: .nvmrc - - - name: Cache Node.js dependencies - uses: actions/cache@v4 - with: - path: | - **/node_modules - ~/.cache/yarn/v6 - key: node-${{ hashFiles('**/yarn.lock', format('{0}/{1}','packages/client','package.json')) }} - restore-keys: | - ${{ runner.os }}-node- - - - name: Install dependencies - run: CI="" yarn install --frozen-lockfile - - - name: Run Chromatic - uses: chromaui/action@latest - with: - workingDir: packages/client - projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} test-client: name: Test client diff --git a/packages/client/.storybook/default-request-handlers.ts b/packages/client/.storybook/default-request-handlers.ts new file mode 100644 index 00000000000..8a70cb53d05 --- /dev/null +++ b/packages/client/.storybook/default-request-handlers.ts @@ -0,0 +1,1137 @@ +import { http } from 'msw' + +import { graphql, HttpResponse } from 'msw' +import { mockOfflineData } from '../src/tests/mock-offline-data' +import forms from '../src/tests/forms.json' +import superjson from 'superjson' +import { AppRouter } from '@gateway/v2-events/events/router' +import { createTRPCMsw } from 'msw-trpc' +import { + tennisClubMembershipEvent, + tennisClubMembershipEventIndex +} from '../src/v2-events/features/events/fixtures' + +const tRPCMsw = createTRPCMsw({ + baseUrl: '/api/events', + transformer: { input: superjson, output: superjson } +}) +console.log( + tRPCMsw.config.get.query(() => { + return [tennisClubMembershipEvent] + }) +) + +export const handlers = { + events: [ + tRPCMsw.event.config.get.query(() => { + return [tennisClubMembershipEvent] + }), + tRPCMsw.events.get.query(() => { + return [tennisClubMembershipEventIndex] + }), + tRPCMsw.event.list.query(() => { + return [] + }) + ], + registrationHome: [ + graphql.query('registrationHome', () => { + return HttpResponse.json({ + data: { + inProgressTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + notificationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + reviewTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + rejectTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + approvalTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + externalValidationTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + printTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + }, + issueTab: { + totalItems: 0, + results: [], + __typename: 'EventSearchResultSet' + } + } + }) + }) + ], + corrections: [ + graphql.query('getTotalCorrections', () => { + return HttpResponse.json({ + data: { + getTotalCorrections: [] + } + }) + }) + ], + metrics: [ + graphql.query('getTotalMetrics', () => { + return HttpResponse.json({ + data: { + getTotalMetrics: { + estimated: { + totalEstimation: 0, + maleEstimation: 0, + femaleEstimation: 0, + locationId: null, + locationLevel: null, + __typename: 'EstimatedMetrics' + }, + results: [], + __typename: 'TotalMetrics' + } + } + }) + }) + ], + systemRoles: [ + graphql.query('getSystemRoles', () => { + return HttpResponse.json({ + data: { + getSystemRoles: [ + { + id: '677e3de85315af4a26542652', + value: 'FIELD_AGENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b55', + labels: [ + { + lang: 'en', + label: 'Field Agent', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Agent de terrain', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b56', + labels: [ + { + lang: 'en', + label: 'Police Officer', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Officier de police', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b57', + labels: [ + { + lang: 'en', + label: 'Social Worker', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Travailleur social', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b58', + labels: [ + { + lang: 'en', + label: 'Healthcare Worker', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Personnel de santé', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + { + _id: '677e3eb03a423676c3af1b59', + labels: [ + { + lang: 'en', + label: 'Local Leader', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Leader local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542653', + value: 'REGISTRATION_AGENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b5f', + labels: [ + { + lang: 'en', + label: 'Registration Agent', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: "Agent d'enregistrement", + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542655', + value: 'LOCAL_SYSTEM_ADMIN', + roles: [ + { + _id: '677e3eb03a423676c3af1b68', + labels: [ + { + lang: 'en', + label: 'Local System Admin', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Administrateur système local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542656', + value: 'NATIONAL_SYSTEM_ADMIN', + roles: [ + { + _id: '677e3eb03a423676c3af1b6f', + labels: [ + { + lang: 'en', + label: 'National System Admin', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Administrateur système national', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542657', + value: 'PERFORMANCE_MANAGEMENT', + roles: [ + { + _id: '677e3eb03a423676c3af1b71', + labels: [ + { + lang: 'en', + label: 'Performance Manager', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Gestion des performances', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542654', + value: 'LOCAL_REGISTRAR', + roles: [ + { + _id: '677e3eb03a423676c3af1b73', + labels: [ + { + lang: 'en', + label: 'Local Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + }, + { + id: '677e3de85315af4a26542658', + value: 'NATIONAL_REGISTRAR', + roles: [ + { + _id: '677e3eb03a423676c3af1b79', + labels: [ + { + lang: 'en', + label: 'National Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire national', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + } + ], + __typename: 'SystemRole' + } + ] + } + }) + }) + ], + locationsStatistics: [ + graphql.query('getLocationStatistics', () => { + return HttpResponse.json({ + data: { + getLocationStatistics: { + population: 0, + offices: [], + registrars: [], + __typename: 'LocationStatistics' + }, + fetchRegistrationCountByStatus: { + results: [], + total: 0, + __typename: 'RegistrationCountByStatus' + } + } + }) + }) + ], + user: [ + graphql.query('fetchUser', () => { + return HttpResponse.json({ + data: { + getUser: { + id: '677e3eb93a423676c3af1b93', + userMgntUserID: '677e3eb93a423676c3af1b93', + creationDate: '1736326841514', + username: 'k.mweene', + practitionerId: 'ccf4ca3f-9099-44a0-816c-c27d23df0c83', + mobile: '+260933333333', + email: 'kalushabwalya1.7@gmail.com', + systemRole: 'LOCAL_REGISTRAR', + role: { + _id: '677e3eb03a423676c3af1b73', + labels: [ + { + lang: 'en', + label: 'Local Registrar', + __typename: 'RoleLabel' + }, + { + lang: 'fr', + label: 'Registraire local', + __typename: 'RoleLabel' + } + ], + __typename: 'Role' + }, + status: 'active', + name: [ + { + use: 'en', + firstNames: 'Kennedy', + familyName: 'Mweene', + __typename: 'HumanName' + } + ], + primaryOffice: { + id: '028d2c85-ca31-426d-b5d1-2cef545a4902', + name: 'Ibombo District Office', + alias: ['Ibombo District Office'], + status: 'active', + __typename: 'Location' + }, + localRegistrar: { + name: [ + { + use: 'en', + firstNames: 'Kennedy', + familyName: 'Mweene', + __typename: 'HumanName' + } + ], + role: 'LOCAL_REGISTRAR', + signature: null, + __typename: 'LocalRegistrar' + }, + avatar: null, + searches: [], + __typename: 'User' + } + } + }) + }) + ], + locations: [ + http.get('http://localhost:7070/location', () => { + return HttpResponse.json({ + resourceType: 'Bundle', + id: '109636d2-09f0-4444-b42c-e22edce0539e', + meta: { lastUpdated: '2025-01-17T05:18:12.105+00:00' }, + type: 'searchset', + total: 17, + link: [ + { + relation: 'self', + url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0' + }, + { + relation: 'next', + url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0&_getpagesoffset=0' + } + ], + entry: [ + { + fullUrl: + 'http://config:2021/location/92ab695b-9362-4682-a861-ddce87a3a905/_history/f11c3af0-b945-4082-8902-c66e4f9b43da', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_2OKicPQMNI' + } + ], + name: 'HQ Office', + alias: ['HQ Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:11:38.743+00:00', + versionId: 'f11c3af0-b945-4082-8902-c66e4f9b43da' + }, + id: '92ab695b-9362-4682-a861-ddce87a3a905' + }, + request: { + method: 'PUT', + url: 'Location/92ab695b-9362-4682-a861-ddce87a3a905' + } + }, + { + fullUrl: + 'http://config:2021/location/6c0bde80-100b-446d-9a6e-8587761bf4c4/_history/19cdc852-1360-4e03-90dc-82155581d927', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_JEhYJ82xRI' + } + ], + name: 'Isamba District Office', + alias: ['Isamba District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/b2991802-bd06-4e0c-9ec3-b6069f0cfc73' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.915+00:00', + versionId: '19cdc852-1360-4e03-90dc-82155581d927' + }, + id: '6c0bde80-100b-446d-9a6e-8587761bf4c4' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/028d2c85-ca31-426d-b5d1-2cef545a4902/_history/eadfd8c3-d869-4394-8d74-b1fc4ea620a3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_JWMRGwDBXK' + } + ], + name: 'Ibombo District Office', + alias: ['Ibombo District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/e76fbe62-bd35-44cf-ad0b-9242db1d3085' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-15T08:04:40.311+00:00', + versionId: 'eadfd8c3-d869-4394-8d74-b1fc4ea620a3' + }, + id: '028d2c85-ca31-426d-b5d1-2cef545a4902' + }, + request: { + method: 'PUT', + url: 'Location/028d2c85-ca31-426d-b5d1-2cef545a4902' + } + }, + { + fullUrl: + 'http://config:2021/location/27614343-3709-41a7-bf2e-e81356322980/_history/af06e089-462b-4a55-8396-a6d9056d39b0', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_HKASqwkASD' + } + ], + name: 'Itambo District Office', + alias: ['Itambo District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/7e136ce5-4912-4263-a905-a49856b73db4' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.921+00:00', + versionId: 'af06e089-462b-4a55-8396-a6d9056d39b0' + }, + id: '27614343-3709-41a7-bf2e-e81356322980' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/8b1f31e3-f119-4844-9566-2cba2fa55b9a/_history/f164ccd8-4a7f-4b7e-9b39-99407f330825', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_eaBXhNiLMp' + } + ], + name: 'Ezhi District Office', + alias: ['Ezhi District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/a4095970-285b-43c8-9f42-cca6d15c8b13' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.924+00:00', + versionId: 'f164ccd8-4a7f-4b7e-9b39-99407f330825' + }, + id: '8b1f31e3-f119-4844-9566-2cba2fa55b9a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/c5545f76-1888-49e1-8147-71f3c316f6dd/_history/88ff674b-987e-4ada-aec7-f59a4d7ae6f5', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_okQp4uKCz0' + } + ], + name: 'Ilanga District Office', + alias: ['Ilanga District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/20ecc580-1f66-4489-8aea-08e386af624b' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.926+00:00', + versionId: '88ff674b-987e-4ada-aec7-f59a4d7ae6f5' + }, + id: 'c5545f76-1888-49e1-8147-71f3c316f6dd' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/a83da9a2-16af-416c-ab44-cf4f60b5603a/_history/76072e03-8c51-43f3-a02a-f7ed2ac6407f', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_R5n2eHaSpB' + } + ], + name: 'Irundu District Office', + alias: ['Irundu District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/a97af8a8-a531-4229-bf5e-c30b78c31561' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.928+00:00', + versionId: '76072e03-8c51-43f3-a02a-f7ed2ac6407f' + }, + id: 'a83da9a2-16af-416c-ab44-cf4f60b5603a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/eaeb093d-e548-4848-b7d6-bc8fd029a8c1/_history/ebfbd22d-cbbe-4486-9624-c94e899ab3b3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_GzanivmNaP' + } + ], + name: 'Zobwe District Office', + alias: ['Zobwe District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/d16d86dc-019d-46a4-9904-53775c16f6ae' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.930+00:00', + versionId: 'ebfbd22d-cbbe-4486-9624-c94e899ab3b3' + }, + id: 'eaeb093d-e548-4848-b7d6-bc8fd029a8c1' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/72e3de8d-cb9c-4f92-833e-d6889eac1d72/_history/b697a197-49e2-4aea-aa2a-5dab80195f7a', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_2stAtvOCwl' + } + ], + name: 'Afue District Office', + alias: ['Afue District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/67ad6b78-2419-4bb1-bc05-28498a72ea03' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.932+00:00', + versionId: 'b697a197-49e2-4aea-aa2a-5dab80195f7a' + }, + id: '72e3de8d-cb9c-4f92-833e-d6889eac1d72' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/6510890e-610d-4805-94da-82164ceadc42/_history/cef5fa77-229c-4260-8b34-930ab82a9d40', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_p9TC08l373' + } + ], + name: 'Embe District Office', + alias: ['Embe District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.934+00:00', + versionId: 'cef5fa77-229c-4260-8b34-930ab82a9d40' + }, + id: '6510890e-610d-4805-94da-82164ceadc42' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/9f764b20-ad33-4714-a572-a7731b24b183/_history/44fbdc19-0de1-4953-b453-2470b8467229', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_Hal1YwlBw7' + } + ], + name: 'Ienge District Office', + alias: ['Ienge District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/0a25463f-675c-4600-a685-c090ebd8ce0e' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.936+00:00', + versionId: '44fbdc19-0de1-4953-b453-2470b8467229' + }, + id: '9f764b20-ad33-4714-a572-a7731b24b183' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/79738b3f-f31a-40d1-8b55-63e08ceb213c/_history/39e25b27-fd98-4e12-8186-502ada7a6f93', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_OgMqVlKHoN' + } + ], + name: 'Funabuli District Office', + alias: ['Funabuli District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/2ad5e894-0a25-4fc6-b0a1-a0ac35be7c5d' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.938+00:00', + versionId: '39e25b27-fd98-4e12-8186-502ada7a6f93' + }, + id: '79738b3f-f31a-40d1-8b55-63e08ceb213c' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/9ec401ec-0de1-4bec-96bc-a2846a61419a/_history/22705052-e7d5-4b52-b519-1120fd3a3ed3', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_FHTLilSEgD' + } + ], + name: 'Pili District Office', + alias: ['Pili District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/4c6cbac1-7b94-4dcb-b8ba-4c69cd474e6a' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.940+00:00', + versionId: '22705052-e7d5-4b52-b519-1120fd3a3ed3' + }, + id: '9ec401ec-0de1-4bec-96bc-a2846a61419a' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/db07dc32-2280-4705-8b5f-54044b29f8b2/_history/d88c3572-ad7f-42d9-a0ed-eff8019744eb', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_jMEPmtRKQ9' + } + ], + name: 'Ama District Office', + alias: ['Ama District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/6ae4ce7e-3a50-4813-af7e-66da42a0c96e' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.942+00:00', + versionId: 'd88c3572-ad7f-42d9-a0ed-eff8019744eb' + }, + id: 'db07dc32-2280-4705-8b5f-54044b29f8b2' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/8eefa8d1-c13d-4a56-9965-bdc73b263432/_history/366ddcd7-2174-487b-8469-fc7289051421', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_hfFdA2JI3T' + } + ], + name: 'Nsali District Office', + alias: ['Nsali District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/6cb00437-29d7-44a8-ad8a-15a2866fef03' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.945+00:00', + versionId: '366ddcd7-2174-487b-8469-fc7289051421' + }, + id: '8eefa8d1-c13d-4a56-9965-bdc73b263432' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/97151a9d-3223-449f-8115-f4361fc1a6f2/_history/3128d669-3a4b-441e-8667-054da265e503', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_mNCAv7oKj8' + } + ], + name: 'Soka District Office', + alias: ['Soka District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/dc249283-09d7-47f4-bfeb-df366cfc1d04' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.947+00:00', + versionId: '3128d669-3a4b-441e-8667-054da265e503' + }, + id: '97151a9d-3223-449f-8115-f4361fc1a6f2' + }, + request: { method: 'POST', url: 'Location' } + }, + { + fullUrl: + 'http://config:2021/location/e8d52f39-6792-4f61-b247-9a1177fe074c/_history/93cf6fea-ac50-45e5-8314-292b299bb165', + resource: { + resourceType: 'Location', + identifier: [ + { + system: 'http://opencrvs.org/specs/id/internal-id', + value: 'CRVS_OFFICE_H0EaOnzz0a' + } + ], + name: 'Chibiya District Office', + alias: ['Chibiya District Office'], + status: 'active', + mode: 'instance', + partOf: { + reference: 'Location/678fe2f7-c77c-4681-9348-681ab2351162' + }, + type: { + coding: [ + { + system: 'http://opencrvs.org/specs/location-type', + code: 'CRVS_OFFICE' + } + ] + }, + physicalType: { + coding: [{ code: 'bu', display: 'Building' }] + }, + meta: { + lastUpdated: '2025-01-08T09:00:36.949+00:00', + versionId: '93cf6fea-ac50-45e5-8314-292b299bb165' + }, + id: 'e8d52f39-6792-4f61-b247-9a1177fe074c' + }, + request: { method: 'POST', url: 'Location' } + } + ] + }) + }) + ], + modules: [ + http.get('http://localhost:3040/conditionals.js', () => { + return HttpResponse.text('', { status: 404 }) + }), + http.get('http://localhost:3040/handlebars.js', () => { + return HttpResponse.text('', { status: 404 }) + }), + http.get('http://localhost:3040/validators.js', () => { + return HttpResponse.text('export function noop() {}', { + status: 200, + headers: { + 'content-type': 'application/javascript' + } + }) + }) + ], + config: [ + http.get('http://localhost:2021/config', () => { + return HttpResponse.json({ + systems: [], + config: mockOfflineData.config, + certificates: [] + }) + }) + ], + localisations: [ + http.get('http://localhost:3040/content/client', () => { + return HttpResponse.json({ + languages: [ + { + lang: 'en', + messages: {} + }, + { + lang: 'fr', + messages: {} + } + ] + }) + }) + ], + forms: [ + http.get('http://localhost:2021/forms', () => { + return HttpResponse.json(forms.forms) + }) + ] +} diff --git a/packages/client/.storybook/preview.tsx b/packages/client/.storybook/preview.tsx index b15b26a4978..8944b8f2a54 100644 --- a/packages/client/.storybook/preview.tsx +++ b/packages/client/.storybook/preview.tsx @@ -11,20 +11,17 @@ import { getTheme } from '@opencrvs/components/lib/theme' import type { Preview } from '@storybook/react' -import { graphql, http, HttpResponse } from 'msw' import { initialize, mswLoader } from 'msw-storybook-addon' -import React, { useEffect } from 'react' +import React from 'react' import { Provider } from 'react-redux' import { MemoryRouter } from 'react-router-dom' import { ThemeProvider } from 'styled-components' import { Page } from '../src/components/Page' import { I18nContainer } from '../src/i18n/components/I18nContainer' -import { refreshOfflineData } from '../src/offline/actions' import { createStore } from '../src/store' -import forms from '../src/tests/forms.json' -import { mockOfflineData } from '../src/tests/mock-offline-data' import { useApolloClient } from '../src/utils/apolloClient' import { ApolloProvider } from '../src/utils/ApolloProvider' +import { handlers } from './default-request-handlers' // Initialize MSW initialize({ @@ -51,9 +48,7 @@ interface WrapperProps { function Wrapper({ children, store }: WrapperProps) { const { client } = useApolloClient(store) - useEffect(() => { - store.dispatch(refreshOfflineData()) - }, []) + return ( @@ -71,1109 +66,7 @@ function Wrapper({ children, store }: WrapperProps) { export const parameters = { msw: { - handlers: { - registrationHome: [ - graphql.query('registrationHome', (req, res, ctx) => { - return HttpResponse.json({ - data: { - inProgressTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - notificationTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - reviewTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - rejectTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - approvalTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - externalValidationTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - printTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - }, - issueTab: { - totalItems: 0, - results: [], - __typename: 'EventSearchResultSet' - } - } - }) - }) - ], - corrections: [ - graphql.query('getTotalCorrections', (req, res, ctx) => { - return HttpResponse.json({ - data: { - getTotalCorrections: [] - } - }) - }) - ], - metrics: [ - graphql.query('getTotalMetrics', (req, res, ctx) => { - return HttpResponse.json({ - data: { - getTotalMetrics: { - estimated: { - totalEstimation: 0, - maleEstimation: 0, - femaleEstimation: 0, - locationId: null, - locationLevel: null, - __typename: 'EstimatedMetrics' - }, - results: [], - __typename: 'TotalMetrics' - } - } - }) - }) - ], - systemRoles: [ - graphql.query('getSystemRoles', (req, res, ctx) => { - return HttpResponse.json({ - data: { - getSystemRoles: [ - { - id: '677e3de85315af4a26542652', - value: 'FIELD_AGENT', - roles: [ - { - _id: '677e3eb03a423676c3af1b55', - labels: [ - { - lang: 'en', - label: 'Field Agent', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Agent de terrain', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - }, - { - _id: '677e3eb03a423676c3af1b56', - labels: [ - { - lang: 'en', - label: 'Police Officer', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Officier de police', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - }, - { - _id: '677e3eb03a423676c3af1b57', - labels: [ - { - lang: 'en', - label: 'Social Worker', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Travailleur social', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - }, - { - _id: '677e3eb03a423676c3af1b58', - labels: [ - { - lang: 'en', - label: 'Healthcare Worker', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Personnel de santé', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - }, - { - _id: '677e3eb03a423676c3af1b59', - labels: [ - { - lang: 'en', - label: 'Local Leader', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Leader local', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542653', - value: 'REGISTRATION_AGENT', - roles: [ - { - _id: '677e3eb03a423676c3af1b5f', - labels: [ - { - lang: 'en', - label: 'Registration Agent', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: "Agent d'enregistrement", - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542655', - value: 'LOCAL_SYSTEM_ADMIN', - roles: [ - { - _id: '677e3eb03a423676c3af1b68', - labels: [ - { - lang: 'en', - label: 'Local System Admin', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Administrateur système local', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542656', - value: 'NATIONAL_SYSTEM_ADMIN', - roles: [ - { - _id: '677e3eb03a423676c3af1b6f', - labels: [ - { - lang: 'en', - label: 'National System Admin', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Administrateur système national', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542657', - value: 'PERFORMANCE_MANAGEMENT', - roles: [ - { - _id: '677e3eb03a423676c3af1b71', - labels: [ - { - lang: 'en', - label: 'Performance Manager', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Gestion des performances', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542654', - value: 'LOCAL_REGISTRAR', - roles: [ - { - _id: '677e3eb03a423676c3af1b73', - labels: [ - { - lang: 'en', - label: 'Local Registrar', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Registraire local', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - }, - { - id: '677e3de85315af4a26542658', - value: 'NATIONAL_REGISTRAR', - roles: [ - { - _id: '677e3eb03a423676c3af1b79', - labels: [ - { - lang: 'en', - label: 'National Registrar', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Registraire national', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - } - ], - __typename: 'SystemRole' - } - ] - } - }) - }) - ], - locationsStatistics: [ - graphql.query('getLocationStatistics', (req, res, ctx) => { - return HttpResponse.json({ - data: { - getLocationStatistics: { - population: 0, - offices: [], - registrars: [], - __typename: 'LocationStatistics' - }, - fetchRegistrationCountByStatus: { - results: [], - total: 0, - __typename: 'RegistrationCountByStatus' - } - } - }) - }) - ], - user: [ - graphql.query('fetchUser', (req, res, ctx) => { - return HttpResponse.json({ - data: { - getUser: { - id: '677e3eb93a423676c3af1b93', - userMgntUserID: '677e3eb93a423676c3af1b93', - creationDate: '1736326841514', - username: 'k.mweene', - practitionerId: 'ccf4ca3f-9099-44a0-816c-c27d23df0c83', - mobile: '+260933333333', - email: 'kalushabwalya1.7@gmail.com', - systemRole: 'LOCAL_REGISTRAR', - role: { - _id: '677e3eb03a423676c3af1b73', - labels: [ - { - lang: 'en', - label: 'Local Registrar', - __typename: 'RoleLabel' - }, - { - lang: 'fr', - label: 'Registraire local', - __typename: 'RoleLabel' - } - ], - __typename: 'Role' - }, - status: 'active', - name: [ - { - use: 'en', - firstNames: 'Kennedy', - familyName: 'Mweene', - __typename: 'HumanName' - } - ], - primaryOffice: { - id: '028d2c85-ca31-426d-b5d1-2cef545a4902', - name: 'Ibombo District Office', - alias: ['Ibombo District Office'], - status: 'active', - __typename: 'Location' - }, - localRegistrar: { - name: [ - { - use: 'en', - firstNames: 'Kennedy', - familyName: 'Mweene', - __typename: 'HumanName' - } - ], - role: 'LOCAL_REGISTRAR', - signature: null, - __typename: 'LocalRegistrar' - }, - avatar: null, - searches: [], - __typename: 'User' - } - } - }) - }) - ], - locations: [ - http.get('http://localhost:7070/location', (req, res, ctx) => { - return HttpResponse.json({ - resourceType: 'Bundle', - id: '109636d2-09f0-4444-b42c-e22edce0539e', - meta: { lastUpdated: '2025-01-17T05:18:12.105+00:00' }, - type: 'searchset', - total: 17, - link: [ - { - relation: 'self', - url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0' - }, - { - relation: 'next', - url: 'http://config:2021/location?type=CRVS_OFFICE&_count=0&_getpagesoffset=0' - } - ], - entry: [ - { - fullUrl: - 'http://config:2021/location/92ab695b-9362-4682-a861-ddce87a3a905/_history/f11c3af0-b945-4082-8902-c66e4f9b43da', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_2OKicPQMNI' - } - ], - name: 'HQ Office', - alias: ['HQ Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:11:38.743+00:00', - versionId: 'f11c3af0-b945-4082-8902-c66e4f9b43da' - }, - id: '92ab695b-9362-4682-a861-ddce87a3a905' - }, - request: { - method: 'PUT', - url: 'Location/92ab695b-9362-4682-a861-ddce87a3a905' - } - }, - { - fullUrl: - 'http://config:2021/location/6c0bde80-100b-446d-9a6e-8587761bf4c4/_history/19cdc852-1360-4e03-90dc-82155581d927', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_JEhYJ82xRI' - } - ], - name: 'Isamba District Office', - alias: ['Isamba District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/b2991802-bd06-4e0c-9ec3-b6069f0cfc73' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.915+00:00', - versionId: '19cdc852-1360-4e03-90dc-82155581d927' - }, - id: '6c0bde80-100b-446d-9a6e-8587761bf4c4' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/028d2c85-ca31-426d-b5d1-2cef545a4902/_history/eadfd8c3-d869-4394-8d74-b1fc4ea620a3', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_JWMRGwDBXK' - } - ], - name: 'Ibombo District Office', - alias: ['Ibombo District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/e76fbe62-bd35-44cf-ad0b-9242db1d3085' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-15T08:04:40.311+00:00', - versionId: 'eadfd8c3-d869-4394-8d74-b1fc4ea620a3' - }, - id: '028d2c85-ca31-426d-b5d1-2cef545a4902' - }, - request: { - method: 'PUT', - url: 'Location/028d2c85-ca31-426d-b5d1-2cef545a4902' - } - }, - { - fullUrl: - 'http://config:2021/location/27614343-3709-41a7-bf2e-e81356322980/_history/af06e089-462b-4a55-8396-a6d9056d39b0', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_HKASqwkASD' - } - ], - name: 'Itambo District Office', - alias: ['Itambo District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/7e136ce5-4912-4263-a905-a49856b73db4' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.921+00:00', - versionId: 'af06e089-462b-4a55-8396-a6d9056d39b0' - }, - id: '27614343-3709-41a7-bf2e-e81356322980' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/8b1f31e3-f119-4844-9566-2cba2fa55b9a/_history/f164ccd8-4a7f-4b7e-9b39-99407f330825', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_eaBXhNiLMp' - } - ], - name: 'Ezhi District Office', - alias: ['Ezhi District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/a4095970-285b-43c8-9f42-cca6d15c8b13' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.924+00:00', - versionId: 'f164ccd8-4a7f-4b7e-9b39-99407f330825' - }, - id: '8b1f31e3-f119-4844-9566-2cba2fa55b9a' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/c5545f76-1888-49e1-8147-71f3c316f6dd/_history/88ff674b-987e-4ada-aec7-f59a4d7ae6f5', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_okQp4uKCz0' - } - ], - name: 'Ilanga District Office', - alias: ['Ilanga District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/20ecc580-1f66-4489-8aea-08e386af624b' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.926+00:00', - versionId: '88ff674b-987e-4ada-aec7-f59a4d7ae6f5' - }, - id: 'c5545f76-1888-49e1-8147-71f3c316f6dd' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/a83da9a2-16af-416c-ab44-cf4f60b5603a/_history/76072e03-8c51-43f3-a02a-f7ed2ac6407f', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_R5n2eHaSpB' - } - ], - name: 'Irundu District Office', - alias: ['Irundu District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/a97af8a8-a531-4229-bf5e-c30b78c31561' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.928+00:00', - versionId: '76072e03-8c51-43f3-a02a-f7ed2ac6407f' - }, - id: 'a83da9a2-16af-416c-ab44-cf4f60b5603a' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/eaeb093d-e548-4848-b7d6-bc8fd029a8c1/_history/ebfbd22d-cbbe-4486-9624-c94e899ab3b3', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_GzanivmNaP' - } - ], - name: 'Zobwe District Office', - alias: ['Zobwe District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/d16d86dc-019d-46a4-9904-53775c16f6ae' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.930+00:00', - versionId: 'ebfbd22d-cbbe-4486-9624-c94e899ab3b3' - }, - id: 'eaeb093d-e548-4848-b7d6-bc8fd029a8c1' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/72e3de8d-cb9c-4f92-833e-d6889eac1d72/_history/b697a197-49e2-4aea-aa2a-5dab80195f7a', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_2stAtvOCwl' - } - ], - name: 'Afue District Office', - alias: ['Afue District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/67ad6b78-2419-4bb1-bc05-28498a72ea03' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.932+00:00', - versionId: 'b697a197-49e2-4aea-aa2a-5dab80195f7a' - }, - id: '72e3de8d-cb9c-4f92-833e-d6889eac1d72' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/6510890e-610d-4805-94da-82164ceadc42/_history/cef5fa77-229c-4260-8b34-930ab82a9d40', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_p9TC08l373' - } - ], - name: 'Embe District Office', - alias: ['Embe District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/890bda15-bb14-4575-93c2-e23cad0233e2' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.934+00:00', - versionId: 'cef5fa77-229c-4260-8b34-930ab82a9d40' - }, - id: '6510890e-610d-4805-94da-82164ceadc42' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/9f764b20-ad33-4714-a572-a7731b24b183/_history/44fbdc19-0de1-4953-b453-2470b8467229', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_Hal1YwlBw7' - } - ], - name: 'Ienge District Office', - alias: ['Ienge District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/0a25463f-675c-4600-a685-c090ebd8ce0e' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.936+00:00', - versionId: '44fbdc19-0de1-4953-b453-2470b8467229' - }, - id: '9f764b20-ad33-4714-a572-a7731b24b183' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/79738b3f-f31a-40d1-8b55-63e08ceb213c/_history/39e25b27-fd98-4e12-8186-502ada7a6f93', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_OgMqVlKHoN' - } - ], - name: 'Funabuli District Office', - alias: ['Funabuli District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/2ad5e894-0a25-4fc6-b0a1-a0ac35be7c5d' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.938+00:00', - versionId: '39e25b27-fd98-4e12-8186-502ada7a6f93' - }, - id: '79738b3f-f31a-40d1-8b55-63e08ceb213c' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/9ec401ec-0de1-4bec-96bc-a2846a61419a/_history/22705052-e7d5-4b52-b519-1120fd3a3ed3', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_FHTLilSEgD' - } - ], - name: 'Pili District Office', - alias: ['Pili District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/4c6cbac1-7b94-4dcb-b8ba-4c69cd474e6a' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.940+00:00', - versionId: '22705052-e7d5-4b52-b519-1120fd3a3ed3' - }, - id: '9ec401ec-0de1-4bec-96bc-a2846a61419a' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/db07dc32-2280-4705-8b5f-54044b29f8b2/_history/d88c3572-ad7f-42d9-a0ed-eff8019744eb', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_jMEPmtRKQ9' - } - ], - name: 'Ama District Office', - alias: ['Ama District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/6ae4ce7e-3a50-4813-af7e-66da42a0c96e' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.942+00:00', - versionId: 'd88c3572-ad7f-42d9-a0ed-eff8019744eb' - }, - id: 'db07dc32-2280-4705-8b5f-54044b29f8b2' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/8eefa8d1-c13d-4a56-9965-bdc73b263432/_history/366ddcd7-2174-487b-8469-fc7289051421', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_hfFdA2JI3T' - } - ], - name: 'Nsali District Office', - alias: ['Nsali District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/6cb00437-29d7-44a8-ad8a-15a2866fef03' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.945+00:00', - versionId: '366ddcd7-2174-487b-8469-fc7289051421' - }, - id: '8eefa8d1-c13d-4a56-9965-bdc73b263432' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/97151a9d-3223-449f-8115-f4361fc1a6f2/_history/3128d669-3a4b-441e-8667-054da265e503', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_mNCAv7oKj8' - } - ], - name: 'Soka District Office', - alias: ['Soka District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/dc249283-09d7-47f4-bfeb-df366cfc1d04' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.947+00:00', - versionId: '3128d669-3a4b-441e-8667-054da265e503' - }, - id: '97151a9d-3223-449f-8115-f4361fc1a6f2' - }, - request: { method: 'POST', url: 'Location' } - }, - { - fullUrl: - 'http://config:2021/location/e8d52f39-6792-4f61-b247-9a1177fe074c/_history/93cf6fea-ac50-45e5-8314-292b299bb165', - resource: { - resourceType: 'Location', - identifier: [ - { - system: 'http://opencrvs.org/specs/id/internal-id', - value: 'CRVS_OFFICE_H0EaOnzz0a' - } - ], - name: 'Chibiya District Office', - alias: ['Chibiya District Office'], - status: 'active', - mode: 'instance', - partOf: { - reference: 'Location/678fe2f7-c77c-4681-9348-681ab2351162' - }, - type: { - coding: [ - { - system: 'http://opencrvs.org/specs/location-type', - code: 'CRVS_OFFICE' - } - ] - }, - physicalType: { - coding: [{ code: 'bu', display: 'Building' }] - }, - meta: { - lastUpdated: '2025-01-08T09:00:36.949+00:00', - versionId: '93cf6fea-ac50-45e5-8314-292b299bb165' - }, - id: 'e8d52f39-6792-4f61-b247-9a1177fe074c' - }, - request: { method: 'POST', url: 'Location' } - } - ] - }) - }) - ], - modules: [ - http.get('http://localhost:3040/conditionals.js', (req, res, ctx) => { - return HttpResponse.text('', { status: 404 }) - }), - http.get('http://localhost:3040/handlebars.js', (req, res, ctx) => { - return HttpResponse.text('', { status: 404 }) - }), - http.get('http://localhost:3040/validators.js', (req, res, ctx) => { - return HttpResponse.text('export function noop() {}', { - status: 200, - headers: { - 'content-type': 'application/javascript' - } - }) - }) - ], - config: [ - http.get('http://localhost:2021/config', (req, res, ctx) => { - return HttpResponse.json({ - systems: [], - config: mockOfflineData.config, - certificates: [] - }) - }) - ], - localisations: [ - http.get('http://localhost:3040/content/client', (req, res, ctx) => { - return HttpResponse.json({ - languages: [ - { - lang: 'en', - messages: {} - }, - { - lang: 'fr', - messages: {} - } - ] - }) - }) - ], - forms: [ - http.get('http://localhost:2021/forms', (req, res, ctx) => { - return HttpResponse.json(forms.forms) - }) - ] - } + handlers: handlers } } diff --git a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx index b995caad3d7..2316f6d2ec3 100644 --- a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx +++ b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx @@ -15,21 +15,12 @@ import { } from '@client/v2-events/features/events/fixtures' import { WorkqueueIndex } from '@client/v2-events/features/workqueues/Workqueue' import { TRPCProvider } from '@client/v2-events/trpc' -import { AppRouter } from '@gateway/v2-events/events/router' import type { Meta, StoryObj } from '@storybook/react' -import { createTRPCMsw } from 'msw-trpc' import React from 'react' -import superjson from 'superjson' - -const tRPCMsw = createTRPCMsw({ - baseUrl: '/api/events', - transformer: { input: superjson, output: superjson } -}) const meta: Meta = { title: 'Workqueue', component: WorkqueueIndex, - decorators: [ (Story) => ( @@ -40,19 +31,4 @@ const meta: Meta = { } export default meta -export const Default: StoryObj = { - parameters: { - msw: { - handlers: { - events: [ - tRPCMsw.config.get.query(() => { - return [tennisClubMembershipEvent] - }), - tRPCMsw.events.get.query(() => { - return [tennisClubMembershipEventIndex] - }) - ] - } - } - } -} +export const Default: StoryObj = {} From 2d66a9dfbffe1b50e896a65f1c9e173d0797bfff Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:10:23 +0900 Subject: [PATCH 08/21] download full git history --- .github/workflows/lint-and-test.yml | 71 ++++++++++++++++------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index f1793aa6265..df6b4b2fe4b 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -161,38 +161,6 @@ jobs: if: matrix.package != 'packages/client' && steps.check-scripts.outputs.skip != 'true' && steps.check-scripts.outputs.skip-test != 'true' run: cd ${{ matrix.package }} && yarn test - run-visual-tests: - name: Run visual tests - runs-on: ubuntu-22.04 - - steps: - - name: Checking out git repo - uses: actions/checkout@v4 - - - name: Use Node.js from .nvmrc - uses: actions/setup-node@v4 - with: - node-version-file: .nvmrc - - - name: Cache Node.js dependencies - uses: actions/cache@v4 - with: - path: | - **/node_modules - ~/.cache/yarn/v6 - key: node-${{ hashFiles('**/yarn.lock', format('{0}/{1}','packages/client','package.json')) }} - restore-keys: | - ${{ runner.os }}-node- - - - name: Install dependencies - run: CI="" yarn install --frozen-lockfile - - - name: Run Chromatic - uses: chromaui/action@latest - with: - workingDir: packages/client - projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - prepare-client-tests: name: Prepare client tests runs-on: ubuntu-22.04 @@ -301,6 +269,45 @@ jobs: - name: Run linting run: cd packages/client && yarn lint + run-visual-tests: + name: Run visual tests + needs: prepare-client-tests + runs-on: ubuntu-22.04 + + steps: + - name: Download filesystem artifact + uses: actions/download-artifact@v4.1.8 + with: + name: client + path: . + + - name: Use Node.js from .nvmrc + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + + - name: Cache Node.js dependencies + uses: actions/cache@v4 + with: + path: | + **/node_modules + ~/.cache/yarn/v6 + key: node-${{ hashFiles('**/yarn.lock', format('{0}/{1}','packages/client','package.json')) }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install dependencies + run: CI="" yarn install --frozen-lockfile + + - name: Fetch full Git history + run: git fetch --prune --unshallow + + - name: Run Chromatic + uses: chromaui/action@latest + with: + workingDir: packages/client + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + test-client: name: Test client needs: prepare-client-tests From 0d1f0b89dfc9c0af2e8ead628c5720f4d288411d Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:13:40 +0900 Subject: [PATCH 09/21] add missing header --- packages/client/.storybook/default-request-handlers.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/client/.storybook/default-request-handlers.ts b/packages/client/.storybook/default-request-handlers.ts index 8a70cb53d05..0f5d2671361 100644 --- a/packages/client/.storybook/default-request-handlers.ts +++ b/packages/client/.storybook/default-request-handlers.ts @@ -1,3 +1,13 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * OpenCRVS is also distributed under the terms of the Civil Registration + * & Healthcare Disclaimer located at http://opencrvs.org/license. + * + * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. + */ import { http } from 'msw' import { graphql, HttpResponse } from 'msw' From a923f3ebea35aeba1b841f06fa8af35c1c25c914 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:15:36 +0900 Subject: [PATCH 10/21] do fetch with github token --- .github/workflows/lint-and-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index df6b4b2fe4b..253a8523f3e 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -301,6 +301,8 @@ jobs: - name: Fetch full Git history run: git fetch --prune --unshallow + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Run Chromatic uses: chromaui/action@latest From b81e4cdeebf1f1176fd9b70b161fcada7eff9a04 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:36:49 +0900 Subject: [PATCH 11/21] fix type errors --- .github/workflows/lint-and-test.yml | 3 +++ packages/client/src/tests/languages.json | 2 -- packages/client/src/tests/mock-offline-data.ts | 10 ++++++---- .../client/src/views/OfficeHome/OfficeHome.stories.tsx | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 253a8523f3e..cd65e15daa7 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -299,6 +299,9 @@ jobs: - name: Install dependencies run: CI="" yarn install --frozen-lockfile + - name: Add origin + run: git remote add origin git@github.com:opencrvs/opencrvs-core.git + - name: Fetch full Git history run: git fetch --prune --unshallow env: diff --git a/packages/client/src/tests/languages.json b/packages/client/src/tests/languages.json index ab5d4e0bf42..03cfb3ae09b 100644 --- a/packages/client/src/tests/languages.json +++ b/packages/client/src/tests/languages.json @@ -2,7 +2,6 @@ "data": [ { "lang": "en", - "displayName": "English", "messages": { "form.section.child.name": "Child", "form.section.child.title": "Child's details", @@ -1152,7 +1151,6 @@ }, { "lang": "bn", - "displayName": "বাংলা", "messages": { "form.section.child.name": "শিশু", "form.section.child.title": "শিশুর বিবরণ", diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index e77793a3085..156179e72e0 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -15,8 +15,10 @@ import type { AdminStructure } from '@client/offline/reducer' import forms from './forms.json' -import languages from './languages.json' -import templates from './templates.json' +import languages from './languages.json' assert { type: 'json' } +import templates from './templates.json' assert { type: 'json' } +import { ILanguage } from '@client/i18n/reducer' +import { ICertificateData } from '@client/utils/referenceApi' export const validImageB64String = 'iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAYAAABllJ3tAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAXSURBVAiZY1RWVv7PgAcw4ZNkYGBgAABYyAFsic1CfAAAAABJRU5ErkJggg==' @@ -399,8 +401,8 @@ export const mockOfflineData = { type: 'ADMIN_STRUCTURE' } } satisfies Record, - languages: languages.data, - templates: templates, + languages: languages.data as unknown as ILanguage[], + templates: templates as unknown as ICertificateData[], assets: { logo: `data:image;base64,${validImageB64String}` }, diff --git a/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx index 9e5df83e4cb..06d74709038 100644 --- a/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx +++ b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx @@ -29,7 +29,7 @@ export const WithData: Story = { msw: { handlers: { registrationHome: [ - graphql.query('registrationHome', (req, res, ctx) => { + graphql.query('registrationHome', () => { return HttpResponse.json({ data: { inProgressTab: { From 9abb368dd76d6cfa93bdcf8ec49b86afce68e8ab Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 17:49:19 +0900 Subject: [PATCH 12/21] remove import asserts --- packages/client/src/tests/mock-offline-data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index 156179e72e0..0be8d27c69b 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -15,8 +15,8 @@ import type { AdminStructure } from '@client/offline/reducer' import forms from './forms.json' -import languages from './languages.json' assert { type: 'json' } -import templates from './templates.json' assert { type: 'json' } +import languages from './languages.json' +import templates from './templates.json' import { ILanguage } from '@client/i18n/reducer' import { ICertificateData } from '@client/utils/referenceApi' From 11a6f415ed68459007f4bb921ec73efba9d50602 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 18:04:03 +0900 Subject: [PATCH 13/21] fix some type errors --- packages/client/src/offline/reducer.ts | 13 ++++++----- .../client/src/tests/mock-offline-data.ts | 22 ++++++++++++------- .../src/v2-events/features/events/fixtures.ts | 4 ++-- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/client/src/offline/reducer.ts b/packages/client/src/offline/reducer.ts index e042f0a9cb5..d79f4619fd3 100644 --- a/packages/client/src/offline/reducer.ts +++ b/packages/client/src/offline/reducer.ts @@ -91,14 +91,15 @@ export interface CRVSOffice extends ILocation { physicalType: 'Building' } +export interface IForms { + version: string + birth: ISerializedForm + death: ISerializedForm + marriage: ISerializedForm +} export interface IOfflineData { locations: ILocationDataResponse - forms: { - version: string - birth: ISerializedForm - death: ISerializedForm - marriage: ISerializedForm - } + forms: IForms facilities: IFacilitiesDataResponse offices: IOfficesDataResponse languages: ILanguage[] diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index 0be8d27c69b..3fc6bb605cd 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -8,17 +8,20 @@ * * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ -import { System, SystemStatus, SystemType } from '@client/utils/gateway' +import { ILanguage } from '@client/i18n/reducer' import type { - Facility, + AdminStructure, CRVSOffice, - AdminStructure + Facility } from '@client/offline/reducer' +import { System, SystemStatus, SystemType } from '@client/utils/gateway' +import { + CertificateConfiguration, + ICertificateData +} from '@client/utils/referenceApi' import forms from './forms.json' import languages from './languages.json' import templates from './templates.json' -import { ILanguage } from '@client/i18n/reducer' -import { ICertificateData } from '@client/utils/referenceApi' export const validImageB64String = 'iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAYAAABllJ3tAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAXSURBVAiZY1RWVv7PgAcw4ZNkYGBgAABYyAFsic1CfAAAAABJRU5ErkJggg==' @@ -57,8 +60,8 @@ const systems: System[] = [ ] export const mockOfflineData = { - forms: forms.forms, - userForms: forms.userForm, + forms: forms as any, + userForms: forms.userForm as any, facilities: { '627fc0cc-e0e2-4c09-804d-38a9fa1807ee': { id: '627fc0cc-e0e2-4c09-804d-38a9fa1807ee', @@ -402,7 +405,10 @@ export const mockOfflineData = { } } satisfies Record, languages: languages.data as unknown as ILanguage[], - templates: templates as unknown as ICertificateData[], + templates: templates as unknown as { + fonts?: CertificateConfiguration['fonts'] + certificates: ICertificateData[] + }, assets: { logo: `data:image;base64,${validImageB64String}` }, diff --git a/packages/client/src/v2-events/features/events/fixtures.ts b/packages/client/src/v2-events/features/events/fixtures.ts index b10e4c67277..a577f256c19 100644 --- a/packages/client/src/v2-events/features/events/fixtures.ts +++ b/packages/client/src/v2-events/features/events/fixtures.ts @@ -11,7 +11,7 @@ import { v4 as uuid } from 'uuid' import { EventConfig, EventIndex, FormConfig } from '@opencrvs/commons/client' -export const DEFAULT_FORM = { +const DEFAULT_FORM = { label: { id: 'event.tennis-club-membership.action.declare.form.label', defaultMessage: 'Tennis club membership application', @@ -260,7 +260,7 @@ export const tennisClubMembershipEvent = { 'This is shown as the action name anywhere the user can trigger the action from', id: 'event.tennis-club-membership.action.declare.label' }, - forms: [DEFAULT_FORM] + rms: [DEFAULT_FORM] } ], deduplication: [ From 494525d6a32bee95c59252c7896d714843d0a92e Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 18:52:43 +0900 Subject: [PATCH 14/21] fix type error --- .github/workflows/lint-and-test.yml | 4 +--- packages/client/src/offline/reducer.ts | 2 +- packages/client/src/v2-events/features/events/fixtures.ts | 5 ++++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index cd65e15daa7..991f0213b23 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -300,12 +300,10 @@ jobs: run: CI="" yarn install --frozen-lockfile - name: Add origin - run: git remote add origin git@github.com:opencrvs/opencrvs-core.git + run: git remote set-url origin git@github.com:opencrvs/opencrvs-core.git - name: Fetch full Git history run: git fetch --prune --unshallow - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Run Chromatic uses: chromaui/action@latest diff --git a/packages/client/src/offline/reducer.ts b/packages/client/src/offline/reducer.ts index d79f4619fd3..04411da243b 100644 --- a/packages/client/src/offline/reducer.ts +++ b/packages/client/src/offline/reducer.ts @@ -91,7 +91,7 @@ export interface CRVSOffice extends ILocation { physicalType: 'Building' } -export interface IForms { +interface IForms { version: string birth: ISerializedForm death: ISerializedForm diff --git a/packages/client/src/v2-events/features/events/fixtures.ts b/packages/client/src/v2-events/features/events/fixtures.ts index 2ee19f4d79e..b70248cfb89 100644 --- a/packages/client/src/v2-events/features/events/fixtures.ts +++ b/packages/client/src/v2-events/features/events/fixtures.ts @@ -277,7 +277,10 @@ export const tennisClubMembershipEvent = { clauses: [ { fieldId: 'applicant.firstname', - type: 'strict' + type: 'strict', + options: { + boost: 1 + } } ] } From 608736e291ba9a5d2ca948209adae3d7054b4ae2 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 19:03:32 +0900 Subject: [PATCH 15/21] fix type error --- packages/client/src/tests/mock-offline-data.ts | 2 +- .../client/src/views/CorrectionForm/CorrectionSummary.test.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index 3fc6bb605cd..bbfca5b2bbe 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -60,7 +60,7 @@ const systems: System[] = [ ] export const mockOfflineData = { - forms: forms as any, + forms: forms.forms as any, userForms: forms.userForm as any, facilities: { '627fc0cc-e0e2-4c09-804d-38a9fa1807ee': { diff --git a/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx b/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx index 4f2b656fbfb..89b45576844 100644 --- a/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx +++ b/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx @@ -313,7 +313,7 @@ describe('Correction summary', () => { expect(reason).toBeDefined() }) - it('should match corrector with MATERIAL_OMISSION', () => { + it.only('should match corrector with MATERIAL_OMISSION', () => { ;(birthDeclaration.data.reason as any).type.value = 'MATERIAL_OMISSION' store.dispatch(storeDeclaration(birthDeclaration)) const instance = wrapper From 89b340651bd19e488dc846da0d122556e64853b0 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 19:05:31 +0900 Subject: [PATCH 16/21] use https url for core repo --- .github/workflows/lint-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 991f0213b23..d179a33ac5f 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -300,7 +300,7 @@ jobs: run: CI="" yarn install --frozen-lockfile - name: Add origin - run: git remote set-url origin git@github.com:opencrvs/opencrvs-core.git + run: git remote set-url origin https://github.com/opencrvs/opencrvs-core.git - name: Fetch full Git history run: git fetch --prune --unshallow From f77ee7687f99335f58328b0504022e062a5ca707 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 19:24:05 +0900 Subject: [PATCH 17/21] install storybook plugins for eslint --- .github/workflows/lint-and-test.yml | 12 +++++++++--- packages/client/.eslintignore | 3 ++- packages/client/.eslintrc.js | 8 +++++++- .../views/CorrectionForm/CorrectionSummary.test.tsx | 2 +- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index d179a33ac5f..f3e8f45b8dd 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -299,9 +299,15 @@ jobs: - name: Install dependencies run: CI="" yarn install --frozen-lockfile - - name: Add origin - run: git remote set-url origin https://github.com/opencrvs/opencrvs-core.git - + - name: Remove existing SSH origin (if any) + run: git remote remove origin || true + + - name: Add HTTPS origin + run: git remote add origin https://github.com/opencrvs/opencrvs-core.git + + - name: Verify remote URL + run: git remote -v + - name: Fetch full Git history run: git fetch --prune --unshallow diff --git a/packages/client/.eslintignore b/packages/client/.eslintignore index a7554c2fcc8..a02adc0fdc8 100644 --- a/packages/client/.eslintignore +++ b/packages/client/.eslintignore @@ -1,2 +1,3 @@ # dependencies -/node_modules \ No newline at end of file +/node_modules +!.storybook \ No newline at end of file diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js index 98b6363df3d..4ecfbead60b 100644 --- a/packages/client/.eslintrc.js +++ b/packages/client/.eslintrc.js @@ -9,7 +9,13 @@ * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ module.exports = { - extends: ['../../.eslintrc.js', 'eslint-config-react-app', 'plugin:react/recommended', 'plugin:storybook/recommended', 'plugin:storybook/recommended'], + extends: [ + '../../.eslintrc.js', + 'eslint-config-react-app', + 'plugin:react/recommended', + 'plugin:storybook/recommended', + 'plugin:storybook/recommended' + ], plugins: ['react', 'formatjs'], env: { es6: true, diff --git a/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx b/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx index 89b45576844..4f2b656fbfb 100644 --- a/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx +++ b/packages/client/src/views/CorrectionForm/CorrectionSummary.test.tsx @@ -313,7 +313,7 @@ describe('Correction summary', () => { expect(reason).toBeDefined() }) - it.only('should match corrector with MATERIAL_OMISSION', () => { + it('should match corrector with MATERIAL_OMISSION', () => { ;(birthDeclaration.data.reason as any).type.value = 'MATERIAL_OMISSION' store.dispatch(storeDeclaration(birthDeclaration)) const instance = wrapper From 458232b2c0b35549a658eb62679f7ce919f40af0 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 20:06:35 +0900 Subject: [PATCH 18/21] remove storybook eslint plugin for now, for whatever reason yarn just fails to install it even when it prints out success --- .github/workflows/lint-and-test.yml | 9 ++++++--- packages/client/.eslintrc.js | 4 +--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index f3e8f45b8dd..842c311d248 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -299,15 +299,18 @@ jobs: - name: Install dependencies run: CI="" yarn install --frozen-lockfile + - name: Disable Git credential helper + run: git config --global credential.helper "" + - name: Remove existing SSH origin (if any) run: git remote remove origin || true - + - name: Add HTTPS origin run: git remote add origin https://github.com/opencrvs/opencrvs-core.git - + - name: Verify remote URL run: git remote -v - + - name: Fetch full Git history run: git fetch --prune --unshallow diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js index 4ecfbead60b..7378d925d4b 100644 --- a/packages/client/.eslintrc.js +++ b/packages/client/.eslintrc.js @@ -12,9 +12,7 @@ module.exports = { extends: [ '../../.eslintrc.js', 'eslint-config-react-app', - 'plugin:react/recommended', - 'plugin:storybook/recommended', - 'plugin:storybook/recommended' + 'plugin:react/recommended' ], plugins: ['react', 'formatjs'], env: { From 01fd9a9a4db6298ed57f784f4fbde0466195dcb4 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 20:17:19 +0900 Subject: [PATCH 19/21] use github toke n to fetch repo --- .github/workflows/lint-and-test.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 842c311d248..4c5732a430a 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -299,20 +299,19 @@ jobs: - name: Install dependencies run: CI="" yarn install --frozen-lockfile - - name: Disable Git credential helper - run: git config --global credential.helper "" - - - name: Remove existing SSH origin (if any) - run: git remote remove origin || true - - - name: Add HTTPS origin - run: git remote add origin https://github.com/opencrvs/opencrvs-core.git - - - name: Verify remote URL - run: git remote -v + # Without this, the fetch command will fail with + # fatal: could not read Username for 'https://github.com': No such device or address + - name: Remove extraheader config + run: git config --unset http.https://github.com/.extraheader - name: Fetch full Git history run: git fetch --prune --unshallow + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Count total commits + run: | + echo "Total commits: $(git rev-list --count HEAD)" - name: Run Chromatic uses: chromaui/action@latest From 475534b9f4c2c2dbabc53fd5a4d65114cc5971a1 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 21:20:42 +0900 Subject: [PATCH 20/21] cleanup --- .github/workflows/lint-and-test.yml | 4 ---- .../v2-events/features/workqueues/Workqueue.stories.tsx | 8 ++------ .../client/src/views/OfficeHome/OfficeHome.stories.tsx | 7 ++++--- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml index 4c5732a430a..74a67e1a035 100644 --- a/.github/workflows/lint-and-test.yml +++ b/.github/workflows/lint-and-test.yml @@ -309,10 +309,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Count total commits - run: | - echo "Total commits: $(git rev-list --count HEAD)" - - name: Run Chromatic uses: chromaui/action@latest with: diff --git a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx index 2316f6d2ec3..69ddfb4679a 100644 --- a/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx +++ b/packages/client/src/v2-events/features/workqueues/Workqueue.stories.tsx @@ -9,14 +9,10 @@ * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. */ -import { - tennisClubMembershipEvent, - tennisClubMembershipEventIndex -} from '@client/v2-events/features/events/fixtures' -import { WorkqueueIndex } from '@client/v2-events/features/workqueues/Workqueue' -import { TRPCProvider } from '@client/v2-events/trpc' import type { Meta, StoryObj } from '@storybook/react' import React from 'react' +import { WorkqueueIndex } from '@client/v2-events/features/workqueues/Workqueue' +import { TRPCProvider } from '@client/v2-events/trpc' const meta: Meta = { title: 'Workqueue', diff --git a/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx index 06d74709038..2ff7af5e036 100644 --- a/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx +++ b/packages/client/src/views/OfficeHome/OfficeHome.stories.tsx @@ -13,8 +13,9 @@ import type { Meta, StoryObj } from '@storybook/react' import { graphql, HttpResponse } from 'msw' import React from 'react' import { OfficeHome } from './OfficeHome' +import { RegistrationHomeQuery } from '@client/utils/gateway' -const meta: Meta = { +const meta: Meta = { title: 'OfficeHome', component: OfficeHome, decorators: [(Story) => ] @@ -22,7 +23,7 @@ const meta: Meta = { export default meta -type Story = StoryObj +type Story = StoryObj export const WithData: Story = { parameters: { @@ -127,7 +128,7 @@ export const WithData: Story = { __typename: 'EventSearchResultSet' } } - }) + } satisfies { data: RegistrationHomeQuery }) }) ] } From 3dd464b1ca53ac9cc092366dba21614c5622c9c0 Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Fri, 17 Jan 2025 21:51:16 +0900 Subject: [PATCH 21/21] fix linter issues --- packages/client/src/offline/reducer.ts | 2 +- packages/client/src/setupTests.ts | 4 ++-- packages/client/src/tests/mock-offline-data.ts | 7 ++++--- .../SysAdmin/Team/user/userCreation/UserForm.test.tsx | 7 +++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/client/src/offline/reducer.ts b/packages/client/src/offline/reducer.ts index 04411da243b..d79f4619fd3 100644 --- a/packages/client/src/offline/reducer.ts +++ b/packages/client/src/offline/reducer.ts @@ -91,7 +91,7 @@ export interface CRVSOffice extends ILocation { physicalType: 'Building' } -interface IForms { +export interface IForms { version: string birth: ISerializedForm death: ISerializedForm diff --git a/packages/client/src/setupTests.ts b/packages/client/src/setupTests.ts index d3e92326211..edeaf3bc9df 100644 --- a/packages/client/src/setupTests.ts +++ b/packages/client/src/setupTests.ts @@ -88,7 +88,7 @@ import { } from './tests/util' vi.doMock('@client/forms/user/fieldDefinitions/createUser', () => ({ - createUserForm: mockOfflineData.forms.userForm + createUserForm: mockOfflineData.userForms })) vi.mock('@client/forms/handlebarHelpers', async () => { @@ -195,7 +195,7 @@ vi.doMock( }), loadConfig: () => Promise.resolve(mockConfigResponse), loadConfigAnonymousUser: () => Promise.resolve(mockConfigResponse), - loadForms: () => Promise.resolve(mockOfflineData.forms.forms), + loadForms: () => Promise.resolve({ forms: mockOfflineData.forms }), importConditionals: () => Promise.resolve({}), importValidators: () => Promise.resolve({}), importHandlebarHelpers: () => Promise.resolve({}) diff --git a/packages/client/src/tests/mock-offline-data.ts b/packages/client/src/tests/mock-offline-data.ts index bbfca5b2bbe..4d39588db95 100644 --- a/packages/client/src/tests/mock-offline-data.ts +++ b/packages/client/src/tests/mock-offline-data.ts @@ -12,7 +12,8 @@ import { ILanguage } from '@client/i18n/reducer' import type { AdminStructure, CRVSOffice, - Facility + Facility, + IForms } from '@client/offline/reducer' import { System, SystemStatus, SystemType } from '@client/utils/gateway' import { @@ -60,8 +61,8 @@ const systems: System[] = [ ] export const mockOfflineData = { - forms: forms.forms as any, - userForms: forms.userForm as any, + forms: forms.forms as IForms, + userForms: forms.userForm, facilities: { '627fc0cc-e0e2-4c09-804d-38a9fa1807ee': { id: '627fc0cc-e0e2-4c09-804d-38a9fa1807ee', diff --git a/packages/client/src/views/SysAdmin/Team/user/userCreation/UserForm.test.tsx b/packages/client/src/views/SysAdmin/Team/user/userCreation/UserForm.test.tsx index 5ee5f1295c6..21bdcfeed66 100644 --- a/packages/client/src/views/SysAdmin/Team/user/userCreation/UserForm.test.tsx +++ b/packages/client/src/views/SysAdmin/Team/user/userCreation/UserForm.test.tsx @@ -23,6 +23,7 @@ import { ReactWrapper } from 'enzyme' import * as React from 'react' import { waitForElement } from '@client/tests/wait-for-element' import * as builtInValidators from '@client/utils/validate' +import { ISerializedFormSection } from '@client/forms' const { store } = createStore() @@ -35,13 +36,15 @@ describe('Create new user page tests', () => { // @ts-ignore )} activeGroup={ deserializeFormSection( - mockOfflineData.userForms.sections[0], + mockOfflineData.userForms + .sections[0] as unknown as ISerializedFormSection, // Needs to be casted as any as there are non-validator functions in the import builtInValidators as Record ).groups[0]