diff --git a/app/package.json b/app/package.json
index e182d9ede..dda84f96c 100644
--- a/app/package.json
+++ b/app/package.json
@@ -56,8 +56,8 @@
"tag:release": "node scripts/tag.cjs release",
"tag:remove": "node scripts/tag.cjs remove",
"test": "yarn build:deps && jest --passWithNoTests && node --test scripts/tests/*.cjs",
- "test:ci": "jest --passWithNoTests && node --test scripts/tests/*.cjs",
"test:build": "yarn build:deps && yarn types && node ./scripts/bundle-analyze-ci.cjs ios && yarn test",
+ "test:ci": "jest --passWithNoTests && node --test scripts/tests/*.cjs",
"test:coverage": "jest --coverage --passWithNoTests",
"test:coverage:ci": "jest --coverage --passWithNoTests --ci --coverageReporters=lcov --coverageReporters=text --coverageReporters=json",
"test:e2e:android": "./scripts/mobile-ci-build-android.sh && maestro test tests/e2e/launch.android.flow.yaml",
diff --git a/packages/mobile-sdk-demo/package.json b/packages/mobile-sdk-demo/package.json
index a95b4cd84..8b5a6a522 100644
--- a/packages/mobile-sdk-demo/package.json
+++ b/packages/mobile-sdk-demo/package.json
@@ -30,14 +30,12 @@
"@faker-js/faker": "^10.0.0",
"@noble/hashes": "^1.5.0",
"@react-native-async-storage/async-storage": "^2.2.0",
- "@react-native/gradle-plugin": "0.76.9",
"@selfxyz/common": "workspace:*",
"@selfxyz/mobile-sdk-alpha": "workspace:*",
"assert": "^2.1.0",
"buffer": "^6.0.3",
"constants-browserify": "^1.0.0",
"ethers": "^6.11.0",
- "find-yarn-workspace-root": "^2.0.0",
"react": "^18.3.1",
"react-native": "0.76.9",
"react-native-get-random-values": "^1.11.0",
@@ -51,10 +49,16 @@
"devDependencies": {
"@babel/core": "^7.28.3",
"@react-native-community/cli": "^16.0.3",
+ "@react-native/gradle-plugin": "0.76.9",
"@react-native/metro-config": "0.76.9",
+ "@testing-library/dom": "^10.4.1",
+ "@testing-library/jest-dom": "^6.6.3",
+ "@testing-library/react": "^16.1.0",
+ "@testing-library/user-event": "^14.5.2",
"@tsconfig/react-native": "^3.0.6",
"@types/node": "^22.18.3",
"@types/react": "^18.3.4",
+ "@types/react-dom": "^18.3.0",
"@types/react-native-vector-icons": "^6.4.18",
"@typescript-eslint/eslint-plugin": "^8.44.0",
"@typescript-eslint/parser": "^8.44.0",
@@ -66,9 +70,11 @@
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-sort-exports": "^0.9.1",
+ "find-yarn-workspace-root": "^2.0.0",
"jsdom": "^25.0.1",
"metro-react-native-babel-preset": "0.76.9",
"prettier": "^3.6.2",
+ "react-dom": "^18.3.1",
"react-native-svg-transformer": "^1.5.1",
"typescript": "^5.9.2",
"vitest": "^2.1.8"
diff --git a/packages/mobile-sdk-demo/src/polyfills/cryptoPolyfill.js b/packages/mobile-sdk-demo/src/polyfills/cryptoPolyfill.js
index 5e7186f24..3661d5556 100644
--- a/packages/mobile-sdk-demo/src/polyfills/cryptoPolyfill.js
+++ b/packages/mobile-sdk-demo/src/polyfills/cryptoPolyfill.js
@@ -8,6 +8,26 @@
*/
// Re-export the shared crypto polyfill implementation
-const { cryptoPolyfill } = require('@selfxyz/common');
+const { cryptoPolyfill, createHash, createHmac, randomBytes, pbkdf2Sync } = require('@selfxyz/common');
-module.exports = cryptoPolyfill;
+// Fallback to Node.js crypto implementation when the shared polyfill isn't available
+const nodeCrypto = require('crypto');
+
+const exportedPolyfill = cryptoPolyfill ?? {
+ createHash: createHash ?? nodeCrypto.createHash.bind(nodeCrypto),
+ createHmac: createHmac ?? nodeCrypto.createHmac.bind(nodeCrypto),
+ randomBytes:
+ randomBytes ??
+ (size => {
+ if (!globalThis.crypto || typeof globalThis.crypto.getRandomValues !== 'function') {
+ throw new Error('globalThis.crypto.getRandomValues is not available');
+ }
+ const out = new Uint8Array(size);
+ globalThis.crypto.getRandomValues(out);
+ return Buffer.from(out);
+ }),
+ pbkdf2Sync: pbkdf2Sync ?? nodeCrypto.pbkdf2Sync.bind(nodeCrypto),
+};
+
+module.exports = exportedPolyfill;
+module.exports.default = exportedPolyfill;
diff --git a/packages/mobile-sdk-demo/tests/App.test.tsx b/packages/mobile-sdk-demo/tests/App.test.tsx
new file mode 100644
index 000000000..872520129
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/App.test.tsx
@@ -0,0 +1,198 @@
+import React from 'react';
+import { render, screen, waitFor, act } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { beforeEach, describe, expect, it, vi } from 'vitest';
+
+import { sdkMocks } from './mocks/sdk';
+
+vi.mock('../src/providers/SelfClientProvider', () => ({
+ __esModule: true,
+ default: ({ children }: { children: React.ReactNode }) => <>{children}>,
+}));
+
+type ScreenContext = import('../src/screens').ScreenContext;
+
+let latestContext: ScreenContext | null = null;
+function createScreensModule() {
+ const descriptors = [
+ {
+ id: 'generate',
+ title: 'Generate Mock Document',
+ subtitle: 'Create sample passport data for testing',
+ sectionTitle: 'Main',
+ status: 'working' as const,
+ load: () => () =>
Generate Screen
,
+ getProps: ({ navigate, refreshDocuments }: ScreenContext) => ({
+ onBack: () => navigate('home'),
+ onNavigate: navigate,
+ onDocumentStored: refreshDocuments,
+ }),
+ },
+ {
+ id: 'documents',
+ title: 'Document List',
+ subtitle: 'View and manage stored documents',
+ sectionTitle: 'Main',
+ status: 'working' as const,
+ load: () => () => Documents Screen
,
+ getProps: ({ navigate, documentCatalog }: ScreenContext) => ({
+ onBack: () => navigate('home'),
+ catalog: documentCatalog,
+ }),
+ },
+ ];
+
+ const screenMap = descriptors.reduce>((acc, descriptor) => {
+ acc[descriptor.id] = descriptor;
+ return acc;
+ }, {});
+
+ const orderedSectionEntries = [{ title: 'Main', items: descriptors }];
+
+ const HomeScreen = ({ screenContext }: { screenContext: ScreenContext }) => {
+ latestContext = screenContext;
+ return (
+
+
Self Demo App
+ {orderedSectionEntries.map(section => (
+
+ {section.title}
+ {section.items.map(descriptor => (
+
+ ))}
+
+ ))}
+
+ );
+ };
+
+ return {
+ __esModule: true as const,
+ orderedSectionEntries,
+ screenDescriptors: descriptors,
+ screenMap,
+ HomeScreen,
+ };
+}
+
+vi.mock('../src/screens', () => {
+ const moduleExports = createScreensModule();
+ return moduleExports;
+});
+
+vi.mock('../src/screens/HomeScreen', () => ({
+ __esModule: true,
+ default: (props: { screenContext: ScreenContext }) => createScreensModule().HomeScreen(props),
+}));
+
+import App from '../App';
+
+describe('App integration', () => {
+ beforeEach(() => {
+ latestContext = null;
+ });
+
+ it('fetches catalog and selected document on mount', async () => {
+ const catalog = {
+ documents: [{ id: 'doc-1', documentType: 'mock_passport' }],
+ selectedDocumentId: 'doc-1',
+ } as any;
+ const selected = {
+ metadata: { id: 'doc-1', documentType: 'mock_passport' },
+ data: { id: 'doc-1' },
+ } as any;
+
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce(catalog);
+ sdkMocks.loadSelectedDocumentMock.mockResolvedValueOnce(selected);
+
+ render();
+
+ await waitFor(() => {
+ expect(sdkMocks.selfClient.loadDocumentCatalog).toHaveBeenCalled();
+ expect(sdkMocks.loadSelectedDocumentMock).toHaveBeenCalled();
+ expect(latestContext).not.toBeNull();
+ });
+
+ expect(screen.getByText(/Self Demo App/i)).toBeInTheDocument();
+ expect(latestContext?.documentCatalog).toEqual(catalog);
+ expect(latestContext?.selectedDocument).toEqual(selected);
+ });
+
+ it('navigates into descriptor screens from the home menu', async () => {
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce({ documents: [] });
+ sdkMocks.loadSelectedDocumentMock.mockResolvedValueOnce(null);
+
+ render();
+
+ await screen.findByText(/Self Demo App/i);
+
+ await userEvent.click(screen.getByRole('button', { name: /document list/i }));
+
+ expect(await screen.findByTestId('screen-Documents Screen')).toHaveTextContent('Documents Screen');
+
+ await act(async () => {
+ latestContext?.navigate('home');
+ });
+
+ await screen.findByText(/Self Demo App/i);
+ await userEvent.click(screen.getByRole('button', { name: /generate mock document/i }));
+
+ expect(await screen.findByTestId('screen-Generate Screen')).toHaveTextContent('Generate Screen');
+ });
+
+ it('falls back to the home screen when navigating to an unknown route', async () => {
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce({ documents: [] });
+ sdkMocks.loadSelectedDocumentMock.mockResolvedValueOnce(null);
+
+ render();
+
+ await screen.findByText(/Self Demo App/i);
+
+ await act(async () => {
+ latestContext?.navigate('documents');
+ });
+
+ expect(await screen.findByTestId('screen-Documents Screen')).toBeInTheDocument();
+
+ await act(async () => {
+ latestContext?.navigate('unknown' as any);
+ });
+
+ await waitFor(() => expect(screen.getByText(/Self Demo App/i)).toBeInTheDocument());
+ });
+
+ it('resets catalog and selection when refresh fails', async () => {
+ const catalog = {
+ documents: [{ id: 'doc-2', documentType: 'mock_passport' }],
+ selectedDocumentId: 'doc-2',
+ } as any;
+ const selected = {
+ metadata: { id: 'doc-2', documentType: 'mock_passport' },
+ data: { id: 'doc-2' },
+ } as any;
+
+ sdkMocks.selfClient.loadDocumentCatalog
+ .mockResolvedValueOnce(catalog)
+ .mockRejectedValueOnce(new Error('no catalog'));
+ sdkMocks.loadSelectedDocumentMock.mockResolvedValueOnce(selected).mockRejectedValueOnce(new Error('no selection'));
+
+ render();
+
+ await waitFor(() => expect(latestContext?.selectedDocument).toEqual(selected));
+
+ await act(async () => {
+ await latestContext?.refreshDocuments();
+ });
+
+ await waitFor(() => {
+ expect(latestContext?.documentCatalog.documents).toEqual([]);
+ expect(latestContext?.selectedDocument).toBeNull();
+ });
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/components/MenuButton.test.tsx b/packages/mobile-sdk-demo/tests/components/MenuButton.test.tsx
new file mode 100644
index 000000000..f08639b73
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/components/MenuButton.test.tsx
@@ -0,0 +1,35 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import MenuButton from '../../src/components/MenuButton';
+
+describe('MenuButton', () => {
+ it('renders the provided title and subtitle', () => {
+ render( {}} />);
+
+ expect(screen.getByRole('button', { name: /documents/i })).toBeInTheDocument();
+ expect(screen.getByText(/manage your ids/i)).toBeInTheDocument();
+ });
+
+ it('invokes onPress when pressed if enabled', async () => {
+ const onPress = vi.fn();
+ render();
+
+ await userEvent.click(screen.getByRole('button', { name: /open/i }));
+
+ expect(onPress).toHaveBeenCalledTimes(1);
+ });
+
+ it('prevents presses and shows disabled styles when disabled', async () => {
+ const onPress = vi.fn();
+ render();
+
+ const button = screen.getByRole('button', { name: /disabled/i });
+ expect(button).toBeDisabled();
+
+ await userEvent.click(button);
+ expect(onPress).not.toHaveBeenCalled();
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/components/ScreenLayout.test.tsx b/packages/mobile-sdk-demo/tests/components/ScreenLayout.test.tsx
new file mode 100644
index 000000000..adaaf59de
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/components/ScreenLayout.test.tsx
@@ -0,0 +1,33 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import ScreenLayout from '../../src/components/ScreenLayout';
+
+describe('ScreenLayout', () => {
+ it('renders title, children, and right action content', () => {
+ render(
+ {}} rightAction={Clear}>
+ Body content
+ ,
+ );
+
+ expect(screen.getByText(/my title/i)).toBeInTheDocument();
+ expect(screen.getByText(/body content/i)).toBeInTheDocument();
+ expect(screen.getByText(/clear/i)).toBeInTheDocument();
+ });
+
+ it('invokes onBack when the header back button is pressed', async () => {
+ const onBack = vi.fn();
+ render(
+
+ Content
+ ,
+ );
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+
+ expect(onBack).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/mocks/sdk.ts b/packages/mobile-sdk-demo/tests/mocks/sdk.ts
new file mode 100644
index 000000000..04ea48a2c
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/mocks/sdk.ts
@@ -0,0 +1,111 @@
+import React from 'react';
+import { vi } from 'vitest';
+
+type SDKMocks = {
+ selfClient: {
+ loadDocumentCatalog: ReturnType;
+ saveDocumentCatalog: ReturnType;
+ deleteDocument: ReturnType;
+ saveDocument: ReturnType;
+ on: ReturnType;
+ useProvingStore: ((selector: (state: ProvingStoreState) => unknown) => unknown) & {
+ getState: () => ProvingStoreState;
+ setState: (next: Partial | ((state: ProvingStoreState) => Partial)) => void;
+ };
+ };
+ useSelfClientMock: ReturnType;
+ loadSelectedDocumentMock: ReturnType;
+ extractNameFromDocumentMock: ReturnType;
+ getAllDocumentsMock: ReturnType;
+ generateMockDocumentMock: ReturnType;
+ provingState: ProvingStoreState;
+ reset: () => void;
+};
+
+type ProvingStoreState = {
+ currentState: string;
+ circuitType: string;
+ init: ReturnType;
+ setUserConfirmed: ReturnType;
+};
+
+const createProvingStore = () => {
+ const state: ProvingStoreState = {
+ currentState: 'idle',
+ circuitType: 'register',
+ init: vi.fn(),
+ setUserConfirmed: vi.fn(),
+ };
+
+ const useProvingStore = ((selector: (value: ProvingStoreState) => unknown) =>
+ selector(state)) as SDKMocks['selfClient']['useProvingStore'];
+
+ useProvingStore.getState = () => state;
+ useProvingStore.setState = next => {
+ const updates = typeof next === 'function' ? next(state) : next;
+ Object.assign(state, updates);
+ };
+
+ return { useProvingStore, state } as const;
+};
+
+const createSelfClient = () => {
+ const { useProvingStore, state } = createProvingStore();
+ return {
+ loadDocumentCatalog: vi.fn(async () => ({ documents: [] })),
+ saveDocumentCatalog: vi.fn(async () => undefined),
+ deleteDocument: vi.fn(async () => undefined),
+ saveDocument: vi.fn(async () => undefined),
+ on: vi.fn(() => vi.fn()),
+ useProvingStore,
+ provingState: state,
+ };
+};
+
+const selfClient = createSelfClient();
+const useSelfClientMock = vi.fn(() => selfClient);
+const loadSelectedDocumentMock = vi.fn(async () => null);
+const extractNameFromDocumentMock = vi.fn(async () => null);
+const getAllDocumentsMock = vi.fn(async () => ({}));
+const generateMockDocumentMock = vi.fn(async () => undefined);
+
+export const sdkMocks: SDKMocks = {
+ selfClient,
+ useSelfClientMock,
+ loadSelectedDocumentMock,
+ extractNameFromDocumentMock,
+ getAllDocumentsMock,
+ generateMockDocumentMock,
+ provingState: selfClient.provingState,
+ reset: () => {
+ selfClient.loadDocumentCatalog.mockReset().mockResolvedValue({ documents: [] });
+ selfClient.saveDocumentCatalog.mockReset().mockResolvedValue(undefined);
+ selfClient.deleteDocument.mockReset().mockResolvedValue(undefined);
+ selfClient.saveDocument.mockReset().mockResolvedValue(undefined);
+ selfClient.on.mockReset().mockImplementation(() => vi.fn());
+ useSelfClientMock.mockClear();
+ loadSelectedDocumentMock.mockReset().mockResolvedValue(null);
+ extractNameFromDocumentMock.mockReset().mockResolvedValue(null);
+ getAllDocumentsMock.mockReset().mockResolvedValue({});
+ generateMockDocumentMock.mockReset().mockResolvedValue(undefined);
+ selfClient.provingState.currentState = 'idle';
+ selfClient.provingState.circuitType = 'register';
+ selfClient.provingState.init.mockReset();
+ selfClient.provingState.setUserConfirmed.mockReset();
+ },
+};
+
+vi.mock('@selfxyz/mobile-sdk-alpha', () => ({
+ __esModule: true,
+ useSelfClient: useSelfClientMock,
+ loadSelectedDocument: loadSelectedDocumentMock,
+ extractNameFromDocument: extractNameFromDocumentMock,
+ getAllDocuments: getAllDocumentsMock,
+ generateMockDocument: generateMockDocumentMock,
+ signatureAlgorithmToStrictSignatureAlgorithm: (value: string) => value,
+ SdkEvents: {},
+ SelfClientProvider: ({ children }: { children: React.ReactNode }) =>
+ React.createElement(React.Fragment, null, children),
+ createListenersMap: () => ({ map: new Map() }),
+ webScannerShim: {},
+}));
diff --git a/packages/mobile-sdk-demo/tests/screens/DocumentCamera.test.tsx b/packages/mobile-sdk-demo/tests/screens/DocumentCamera.test.tsx
new file mode 100644
index 000000000..f4be57707
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/DocumentCamera.test.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import DocumentCamera from '../../src/screens/DocumentCamera';
+
+describe('DocumentCamera screen', () => {
+ it('shows placeholder messaging and handles back navigation', async () => {
+ const onBack = vi.fn();
+
+ render();
+
+ expect(screen.getByText('Document Camera')).toBeInTheDocument();
+ expect(screen.getByText(/camera-based document scanning/i)).toBeInTheDocument();
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+
+ expect(onBack).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/DocumentNFCScan.test.tsx b/packages/mobile-sdk-demo/tests/screens/DocumentNFCScan.test.tsx
new file mode 100644
index 000000000..219145de6
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/DocumentNFCScan.test.tsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import DocumentNFCScan from '../../src/screens/DocumentNFCScan';
+
+describe('DocumentNFCScan screen', () => {
+ it('presents NFC scanning guidance and responds to back presses', async () => {
+ const onBack = vi.fn();
+
+ render();
+
+ expect(screen.getByText('Document NFC Scan')).toBeInTheDocument();
+ expect(screen.getByText(/nfc-based passport reading/i)).toBeInTheDocument();
+ expect(screen.getByText(/secure data extraction/i)).toBeInTheDocument();
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+
+ expect(onBack).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/DocumentsList.test.tsx b/packages/mobile-sdk-demo/tests/screens/DocumentsList.test.tsx
new file mode 100644
index 000000000..f837b4ad4
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/DocumentsList.test.tsx
@@ -0,0 +1,133 @@
+import React from 'react';
+import { render, screen, waitFor, act } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { Alert } from 'react-native';
+import { beforeEach, describe, expect, it, vi } from 'vitest';
+
+import DocumentsList from '../../src/screens/DocumentsList';
+import type { DocumentCatalog } from '@selfxyz/common/dist/esm/src/utils/types.js';
+import { sdkMocks } from '../mocks/sdk';
+
+const useDocumentsMock = vi.fn();
+
+vi.mock('../../src/hooks/useDocuments', () => ({
+ useDocuments: () => useDocumentsMock(),
+}));
+
+describe('DocumentsList', () => {
+ const baseCatalog: DocumentCatalog = { documents: [] } as DocumentCatalog;
+
+ beforeEach(() => {
+ useDocumentsMock.mockReset();
+ sdkMocks.extractNameFromDocumentMock.mockReset().mockResolvedValue(null);
+ });
+
+ it('renders a loading indicator while documents load', () => {
+ useDocumentsMock.mockReturnValue({
+ documents: [],
+ loading: true,
+ error: null,
+ deleting: null,
+ clearing: false,
+ refresh: vi.fn(),
+ deleteDocument: vi.fn(),
+ clearAllDocuments: vi.fn(),
+ });
+
+ render( {}} catalog={baseCatalog} />);
+
+ expect(screen.getByText(/loading your documents/i)).toBeInTheDocument();
+ });
+
+ it('shows an error state when fetching fails', () => {
+ useDocumentsMock.mockReturnValue({
+ documents: [],
+ loading: false,
+ error: 'Boom!',
+ deleting: null,
+ clearing: false,
+ refresh: vi.fn(),
+ deleteDocument: vi.fn(),
+ clearAllDocuments: vi.fn(),
+ });
+
+ render( {}} catalog={baseCatalog} />);
+
+ expect(screen.getByText(/we hit a snag/i)).toBeInTheDocument();
+ expect(screen.getByText(/boom!/i)).toBeInTheDocument();
+ });
+
+ it('renders an empty state when there are no documents', () => {
+ useDocumentsMock.mockReturnValue({
+ documents: [],
+ loading: false,
+ error: null,
+ deleting: null,
+ clearing: false,
+ refresh: vi.fn(),
+ deleteDocument: vi.fn(),
+ clearAllDocuments: vi.fn(),
+ });
+
+ render( {}} catalog={baseCatalog} />);
+
+ expect(screen.getByText(/no documents/i)).toBeInTheDocument();
+ expect(screen.getByRole('button', { name: /clear all/i })).toBeDisabled();
+ });
+
+ it('displays documents and supports delete and clear flows', async () => {
+ const refresh = vi.fn();
+ const deleteDocument = vi.fn(async () => undefined);
+ const clearAllDocuments = vi.fn(async () => undefined);
+ const documents = [
+ {
+ metadata: {
+ id: '1234567890abcdef1234',
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ data: 'LINE1\nLINE2\nLINE3',
+ mock: true,
+ isRegistered: true,
+ },
+ data: {} as any,
+ },
+ ];
+
+ useDocumentsMock.mockReturnValue({
+ documents,
+ loading: false,
+ error: null,
+ deleting: null,
+ clearing: false,
+ refresh,
+ deleteDocument,
+ clearAllDocuments,
+ });
+
+ sdkMocks.extractNameFromDocumentMock.mockResolvedValueOnce({ firstName: 'Ada', lastName: 'Lovelace' });
+
+ render( {}} catalog={baseCatalog} />);
+
+ await waitFor(() => expect(refresh).toHaveBeenCalled());
+ await waitFor(() => expect(screen.getByText('Ada Lovelace')).toBeInTheDocument());
+
+ expect(screen.getByText(/mock passport/i)).toBeInTheDocument();
+ expect(screen.getByText(/registered/i)).toBeInTheDocument();
+ expect(screen.getByText(/12345678…ef1234/i)).toBeInTheDocument();
+ expect(screen.getByText(/line1/i)).toHaveTextContent(/LINE1\s+LINE2/);
+
+ await userEvent.click(screen.getByRole('button', { name: /delete/i }));
+ expect(Alert.alert).toHaveBeenCalled();
+
+ const deleteAlert = vi.mocked(Alert.alert).mock.calls.at(-1);
+ const deleteConfirm = deleteAlert?.[2]?.find(button => button.text === 'Delete');
+ await act(async () => deleteConfirm?.onPress?.());
+ expect(deleteDocument).toHaveBeenCalledWith('1234567890abcdef1234');
+
+ await userEvent.click(screen.getByRole('button', { name: /clear all/i }));
+ const clearAlert = vi.mocked(Alert.alert).mock.calls.at(-1);
+ const clearConfirm = clearAlert?.[2]?.find(button => button.text === 'Clear All');
+ await act(async () => clearConfirm?.onPress?.());
+ expect(clearAllDocuments).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/GenerateMock.test.tsx b/packages/mobile-sdk-demo/tests/screens/GenerateMock.test.tsx
new file mode 100644
index 000000000..75e7919ae
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/GenerateMock.test.tsx
@@ -0,0 +1,99 @@
+import React from 'react';
+import { render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { Alert } from 'react-native';
+import { beforeEach, describe, expect, it, vi } from 'vitest';
+
+import GenerateMock from '../../src/screens/GenerateMock';
+import type { DocumentCatalog } from '@selfxyz/common/dist/esm/src/utils/types.js';
+import { sdkMocks } from '../mocks/sdk';
+
+describe('GenerateMock screen', () => {
+ beforeEach(() => {
+ sdkMocks.reset();
+ });
+
+ it('creates a new mock document and navigates to registration for the first entry', async () => {
+ const onNavigate = vi.fn();
+ const onDocumentStored = vi.fn();
+ const baseCatalog: DocumentCatalog = { documents: [] } as DocumentCatalog;
+
+ const mockDocument = {
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ mock: true,
+ mrz: 'LINE1\nLINE2',
+ } as any;
+
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce(baseCatalog);
+ sdkMocks.generateMockDocumentMock.mockResolvedValueOnce(mockDocument);
+
+ render( {}} onDocumentStored={onDocumentStored} />);
+
+ const generateButton = screen.getByRole('button', { name: /generate/i });
+
+ await userEvent.click(generateButton);
+ await waitFor(() => expect(sdkMocks.selfClient.saveDocument).toHaveBeenCalledTimes(1));
+ await waitFor(() => expect(onNavigate).toHaveBeenCalledWith('register'));
+ await waitFor(() => expect(onDocumentStored).toHaveBeenCalledTimes(1));
+
+ const savedCatalog = sdkMocks.selfClient.saveDocumentCatalog.mock.calls.at(-1)?.[0];
+ expect(savedCatalog?.documents).toHaveLength(1);
+ expect(savedCatalog?.documents?.[0]).toMatchObject({
+ documentType: 'mock_passport',
+ mock: true,
+ });
+ expect(savedCatalog?.selectedDocumentId).toBeTruthy();
+ });
+
+ it('alerts on success when additional documents are generated', async () => {
+ const onNavigate = vi.fn();
+ const existingCatalog: DocumentCatalog = {
+ documents: [
+ {
+ id: 'existing-doc',
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ data: 'MRZ',
+ mock: true,
+ isRegistered: false,
+ },
+ ],
+ } as DocumentCatalog;
+
+ const mockDocument = {
+ documentType: 'mock_id_card',
+ documentCategory: 'id_card',
+ mock: true,
+ mrz: 'LINEA\nLINEB',
+ } as any;
+
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce(existingCatalog);
+ sdkMocks.generateMockDocumentMock.mockResolvedValueOnce(mockDocument);
+
+ render( {}} />);
+
+ await userEvent.click(screen.getByRole('button', { name: /generate/i }));
+ await waitFor(() => expect(sdkMocks.selfClient.saveDocumentCatalog).toHaveBeenCalled());
+ expect(onNavigate).not.toHaveBeenCalled();
+ await waitFor(() => expect(Alert.alert).toHaveBeenCalledWith('Success', 'Mock document generated successfully.'));
+
+ const savedCatalog = sdkMocks.selfClient.saveDocumentCatalog.mock.calls.at(-1)?.[0];
+ expect(savedCatalog?.documents?.length).toBe(2);
+ });
+
+ it('validates age input before generating', async () => {
+ const baseCatalog: DocumentCatalog = { documents: [] } as DocumentCatalog;
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValueOnce(baseCatalog);
+
+ render( {}} onBack={() => {}} />);
+
+ const ageInput = screen.getByDisplayValue('21');
+ await userEvent.clear(ageInput);
+ await userEvent.type(ageInput, '999');
+
+ await userEvent.click(screen.getByRole('button', { name: /generate/i }));
+ await waitFor(() => expect(screen.getByText(/age must be a number between 0 and 120/i)).toBeInTheDocument());
+ expect(sdkMocks.generateMockDocumentMock).not.toHaveBeenCalled();
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/HomeScreen.test.tsx b/packages/mobile-sdk-demo/tests/screens/HomeScreen.test.tsx
new file mode 100644
index 000000000..6d5662adf
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/HomeScreen.test.tsx
@@ -0,0 +1,43 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import HomeScreen from '../../src/screens/HomeScreen';
+import { orderedSectionEntries, type ScreenContext } from '../../src/screens';
+
+describe('HomeScreen', () => {
+ const createContext = (): ScreenContext => ({
+ navigate: vi.fn(),
+ goHome: vi.fn(),
+ documentCatalog: { documents: [] },
+ selectedDocument: null,
+ refreshDocuments: vi.fn(async () => undefined),
+ });
+
+ it('renders sections and menu items from the screen descriptors', () => {
+ const context = createContext();
+ render();
+
+ orderedSectionEntries.forEach(section => {
+ expect(screen.getByText(section.title)).toBeInTheDocument();
+ section.items.forEach(item => {
+ const buttons = screen.getAllByRole('button', {
+ name: new RegExp(item.title, 'i'),
+ });
+ expect(buttons.length).toBeGreaterThan(0);
+ });
+ });
+ });
+
+ it('navigates to the selected descriptor when a menu item is pressed', async () => {
+ const context = createContext();
+ render();
+
+ await userEvent.click(screen.getByRole('button', { name: /document list/i }));
+ expect(context.navigate).toHaveBeenCalledWith('documents');
+
+ await userEvent.click(screen.getByRole('button', { name: /generate mock document/i }));
+ expect(context.navigate).toHaveBeenCalledWith('generate');
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/ProofHistory.test.tsx b/packages/mobile-sdk-demo/tests/screens/ProofHistory.test.tsx
new file mode 100644
index 000000000..157e426d2
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/ProofHistory.test.tsx
@@ -0,0 +1,25 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import ProofHistory from '../../src/screens/ProofHistory';
+
+describe('ProofHistory screen', () => {
+ it('renders the mock activity feed and supports back navigation', async () => {
+ const onBack = vi.fn();
+
+ render();
+
+ expect(screen.getByText('Proof History')).toBeInTheDocument();
+ expect(screen.getByText(/demo proof history/i)).toBeInTheDocument();
+ expect(screen.getByText('DemoBank')).toBeInTheDocument();
+ expect(screen.getByText('VerifyMe')).toBeInTheDocument();
+ expect(screen.getByText('TravelCheck')).toBeInTheDocument();
+ expect(screen.getByText(/passport verification/i)).toBeInTheDocument();
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+
+ expect(onBack).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/QRCodeViewFinder.test.tsx b/packages/mobile-sdk-demo/tests/screens/QRCodeViewFinder.test.tsx
new file mode 100644
index 000000000..ee1f0c5c4
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/QRCodeViewFinder.test.tsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { describe, expect, it, vi } from 'vitest';
+
+import QRCodeViewFinder from '../../src/screens/QRCodeViewFinder';
+
+describe('QRCodeViewFinder screen', () => {
+ it('highlights QR scanning capabilities and handles back navigation', async () => {
+ const onBack = vi.fn();
+
+ render();
+
+ expect(screen.getByText('QR Code View Finder')).toBeInTheDocument();
+ expect(screen.getByText(/proof verification requests/i)).toBeInTheDocument();
+ expect(screen.getByText(/real-time qr detection feedback/i)).toBeInTheDocument();
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+
+ expect(onBack).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/RegisterDocument.test.tsx b/packages/mobile-sdk-demo/tests/screens/RegisterDocument.test.tsx
new file mode 100644
index 000000000..fffac5577
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/RegisterDocument.test.tsx
@@ -0,0 +1,160 @@
+import React from 'react';
+import { act, render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { Alert } from 'react-native';
+import { beforeEach, describe, expect, it, vi } from 'vitest';
+
+import RegisterDocument from '../../src/screens/RegisterDocument';
+import type { DocumentCatalog, DocumentMetadata, IDDocument } from '@selfxyz/common/dist/esm/src/utils/types.js';
+import { sdkMocks } from '../mocks/sdk';
+
+let registrationState = {
+ registering: false,
+ statusMessage: '',
+ currentState: 'idle',
+ logs: [] as string[],
+ showLogs: false,
+};
+
+const startMock = vi.fn();
+const setOnCompleteMock = vi.fn();
+const toggleLogsMock = vi.fn();
+const resetMock = vi.fn();
+let onCompleteHandler: (() => Promise | void) | null = null;
+
+vi.mock('../../src/hooks/useRegistration', () => ({
+ useRegistration: () => ({
+ state: registrationState,
+ actions: {
+ start: startMock,
+ setOnComplete: (cb: typeof onCompleteHandler) => {
+ onCompleteHandler = cb;
+ setOnCompleteMock(cb);
+ },
+ toggleLogs: toggleLogsMock,
+ reset: resetMock,
+ },
+ }),
+}));
+
+describe('RegisterDocument screen', () => {
+ beforeEach(() => {
+ registrationState = {
+ registering: false,
+ statusMessage: '',
+ currentState: 'idle',
+ logs: [],
+ showLogs: false,
+ };
+ startMock.mockReset();
+ setOnCompleteMock.mockReset();
+ toggleLogsMock.mockReset();
+ resetMock.mockReset();
+ onCompleteHandler = null;
+ });
+
+ const createCatalog = (documents: DocumentMetadata[]): DocumentCatalog => ({ documents }) as DocumentCatalog;
+
+ it('lists unregistered documents and triggers registration flow', async () => {
+ const catalog = createCatalog([
+ {
+ id: 'doc-1',
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ data: 'MRZ',
+ mock: true,
+ isRegistered: false,
+ },
+ {
+ id: 'doc-2',
+ documentType: 'mock_id_card',
+ documentCategory: 'id_card',
+ data: 'DATA',
+ mock: false,
+ isRegistered: true,
+ },
+ ]);
+
+ const documentData: IDDocument = {
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ mock: true,
+ } as IDDocument;
+
+ sdkMocks.extractNameFromDocumentMock.mockImplementation(async (_client, id: string) => {
+ if (id === 'doc-1') {
+ return { firstName: 'Ada', lastName: 'Lovelace' };
+ }
+ return null;
+ });
+ sdkMocks.getAllDocumentsMock.mockResolvedValue({
+ 'doc-1': { data: documentData },
+ });
+ sdkMocks.selfClient.saveDocumentCatalog.mockResolvedValue(undefined);
+ sdkMocks.selfClient.loadDocumentCatalog.mockResolvedValue(catalog);
+
+ const onBack = vi.fn();
+ const onSuccess = vi.fn();
+
+ render();
+
+ await waitFor(() => expect(screen.getByText(/ada lovelace/i)).toBeInTheDocument());
+ await waitFor(() => expect(screen.getByRole('button', { name: /register document/i })).toBeEnabled());
+
+ await userEvent.click(screen.getByRole('button', { name: /register document/i }));
+
+ await waitFor(() => expect(sdkMocks.selfClient.saveDocumentCatalog).toHaveBeenCalled());
+ expect(startMock).toHaveBeenCalledWith('doc-1', documentData);
+
+ await userEvent.click(screen.getByRole('button', { name: /back/i }));
+ expect(onBack).toHaveBeenCalledTimes(1);
+
+ expect(setOnCompleteMock).toHaveBeenCalledWith(expect.any(Function));
+
+ await act(async () => {
+ await onCompleteHandler?.();
+ });
+
+ await waitFor(() => expect(onSuccess).toHaveBeenCalled());
+ await waitFor(() =>
+ expect(Alert.alert).toHaveBeenCalledWith(
+ 'Success! 🎉',
+ expect.stringContaining('registered on-chain'),
+ expect.arrayContaining([expect.objectContaining({ text: 'OK' })]),
+ ),
+ );
+
+ const alertCall = vi.mocked(Alert.alert).mock.calls.at(-1);
+ const okButton = alertCall?.[2]?.find(button => button.text === 'OK');
+ await act(async () => okButton?.onPress?.());
+
+ expect(resetMock).toHaveBeenCalled();
+ });
+
+ it('shows an empty state when no unregistered documents exist', () => {
+ const catalog = createCatalog([]);
+
+ render( {}} />);
+
+ expect(screen.getByText(/no unregistered documents available/i)).toBeInTheDocument();
+ });
+
+ it('displays a not found message when the selected document cannot be loaded', async () => {
+ const catalog = createCatalog([
+ {
+ id: 'missing-doc',
+ documentType: 'mock_passport',
+ documentCategory: 'passport',
+ data: 'MRZ',
+ mock: true,
+ isRegistered: false,
+ },
+ ]);
+
+ sdkMocks.getAllDocumentsMock.mockResolvedValue({});
+
+ render( {}} />);
+
+ await waitFor(() => expect(screen.getByText(/document not found/i)).toBeInTheDocument());
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/screens/index.test.ts b/packages/mobile-sdk-demo/tests/screens/index.test.ts
new file mode 100644
index 000000000..c32611f85
--- /dev/null
+++ b/packages/mobile-sdk-demo/tests/screens/index.test.ts
@@ -0,0 +1,51 @@
+import { describe, expect, it, vi } from 'vitest';
+
+import { orderedSectionEntries, screenDescriptors, screenMap, type ScreenContext } from '../../src/screens';
+
+describe('screen descriptor index', () => {
+ const createContext = (): ScreenContext => ({
+ navigate: vi.fn(),
+ goHome: vi.fn(),
+ documentCatalog: { documents: [] },
+ selectedDocument: null,
+ refreshDocuments: vi.fn(async () => undefined),
+ });
+
+ it('exposes each descriptor via the screenMap', () => {
+ screenDescriptors.forEach(descriptor => {
+ expect(screenMap[descriptor.id]).toBe(descriptor);
+ });
+ });
+
+ it('groups descriptors into ordered sections', () => {
+ const flattenedFromSections = orderedSectionEntries.flatMap(section => {
+ section.items.forEach(item => {
+ expect(item.sectionTitle).toBe(section.title);
+ });
+ return section.items.map(item => item.id);
+ });
+
+ const descriptorOrder = screenDescriptors.map(descriptor => descriptor.id);
+ expect(flattenedFromSections).toEqual(descriptorOrder);
+ });
+
+ it('builds props that respect the provided screen context', async () => {
+ const context = createContext();
+
+ const generateProps = screenMap.generate.getProps?.(context) as any;
+ expect(generateProps).toMatchObject({ onDocumentStored: context.refreshDocuments });
+ await generateProps?.onNavigate?.('documents');
+ expect(context.navigate).toHaveBeenCalledWith('documents');
+ generateProps?.onBack?.();
+ expect(context.navigate).toHaveBeenCalledWith('home');
+
+ const registerProps = screenMap.register.getProps?.(context) as any;
+ registerProps?.onSuccess?.();
+ expect(context.refreshDocuments).toHaveBeenCalled();
+
+ const documentsProps = screenMap.documents.getProps?.(context) as any;
+ expect(documentsProps).toMatchObject({ catalog: context.documentCatalog });
+ documentsProps?.onBack?.();
+ expect(context.navigate).toHaveBeenCalledWith('home');
+ });
+});
diff --git a/packages/mobile-sdk-demo/tests/setup.ts b/packages/mobile-sdk-demo/tests/setup.ts
index 9783332af..2a81c4f72 100644
--- a/packages/mobile-sdk-demo/tests/setup.ts
+++ b/packages/mobile-sdk-demo/tests/setup.ts
@@ -2,13 +2,44 @@
// SPDX-License-Identifier: BUSL-1.1
// NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE.
+import '@testing-library/jest-dom/vitest';
+import React, { createElement, forwardRef } from 'react';
+import { beforeEach, vi } from 'vitest';
+
+import { sdkMocks } from './mocks/sdk';
+
+vi.mock('@selfxyz/common', async () => {
+ const actual = await vi.importActual('../../../common/dist/cjs/index.cjs');
+ const nodeCrypto = await import('node:crypto');
+
+ const polyfill = {
+ createHash: nodeCrypto.createHash.bind(nodeCrypto) as typeof nodeCrypto.createHash,
+ createHmac: nodeCrypto.createHmac.bind(nodeCrypto) as typeof nodeCrypto.createHmac,
+ randomBytes: nodeCrypto.randomBytes.bind(nodeCrypto) as typeof nodeCrypto.randomBytes,
+ pbkdf2Sync: nodeCrypto.pbkdf2Sync.bind(nodeCrypto) as typeof nodeCrypto.pbkdf2Sync,
+ };
+
+ const calculateContentHash = actual.calculateContentHash
+ ? actual.calculateContentHash
+ : (value: unknown) =>
+ nodeCrypto
+ .createHash('sha256')
+ .update(typeof value === 'string' ? value : JSON.stringify(value))
+ .digest('hex');
+
+ return {
+ ...actual,
+ ...polyfill,
+ calculateContentHash,
+ cryptoPolyfill: polyfill,
+ };
+});
+
/**
* Vitest setup file for mobile-sdk-demo tests
* Mocks React Native modules and reduces console noise
*/
-import { vi } from 'vitest';
-
const originalConsole = {
warn: console.warn,
error: console.error,
@@ -19,36 +50,217 @@ const shouldShowOutput = process.env.DEBUG_TESTS === 'true';
// Suppress console noise in tests unless explicitly debugging
if (!shouldShowOutput) {
- console.warn = () => {}; // Suppress warnings
- console.error = () => {}; // Suppress errors
- console.log = () => {}; // Suppress logs
+ console.warn = () => {};
+ console.error = () => {};
+ console.log = () => {};
}
// Restore console for debugging if needed
-if (typeof global !== 'undefined') {
- (global as any).restoreConsole = () => {
+if (typeof globalThis !== 'undefined') {
+ (globalThis as any).restoreConsole = () => {
console.warn = originalConsole.warn;
console.error = originalConsole.error;
console.log = originalConsole.log;
};
+ (globalThis as any).sdkMocks = sdkMocks;
}
-// Mock React Native modules
+const flattenStyle = (style: any): Record | undefined => {
+ if (!style) return undefined;
+ if (Array.isArray(style)) {
+ return style.reduce>((acc, item) => {
+ const flat = flattenStyle(item);
+ return flat ? { ...acc, ...flat } : acc;
+ }, {});
+ }
+ if (typeof style === 'number') {
+ return { ['data-style-token']: style };
+ }
+ if (typeof style === 'object') {
+ return style as Record;
+ }
+ return undefined;
+};
+
+const createDomComponent = (tag: string) =>
+ forwardRef(({ children, style, testID, ...props }, ref) =>
+ createElement(tag, { ref, style: flattenStyle(style), 'data-testid': testID, ...props }, children),
+ );
+
+const TouchableOpacity = forwardRef(
+ ({ children, onPress, disabled, style, testID, accessibilityRole, ...props }, ref) =>
+ createElement(
+ 'button',
+ {
+ type: 'button',
+ ref,
+ disabled: Boolean(disabled),
+ style: flattenStyle(style),
+ 'data-testid': testID,
+ 'aria-busy': props['aria-busy'],
+ 'aria-disabled': disabled ? 'true' : undefined,
+ 'data-role': accessibilityRole,
+ onClick: disabled
+ ? undefined
+ : (event: React.MouseEvent) => {
+ event.preventDefault();
+ onPress?.();
+ },
+ ...props,
+ },
+ children,
+ ),
+);
+
+const ScrollView = forwardRef(({ children, style, contentContainerStyle, testID, ...props }, ref) =>
+ createElement(
+ 'div',
+ { ref, style: flattenStyle(style), 'data-testid': testID, ...props },
+ createElement('div', { style: flattenStyle(contentContainerStyle) }, children),
+ ),
+);
+
+const Pressable = forwardRef(({ children, onPress, disabled, style, testID, ...props }, ref) =>
+ createElement(
+ 'button',
+ {
+ type: 'button',
+ ref,
+ disabled: Boolean(disabled),
+ style: flattenStyle(style),
+ 'data-testid': testID,
+ onClick: disabled
+ ? undefined
+ : (event: React.MouseEvent) => {
+ event.preventDefault();
+ onPress?.();
+ },
+ ...props,
+ },
+ children,
+ ),
+);
+
+const TextInput = forwardRef(
+ ({ onChangeText, value, secureTextEntry, style, testID, keyboardType, ...props }, ref) =>
+ createElement('input', {
+ ref,
+ value,
+ style: flattenStyle(style),
+ type: secureTextEntry ? 'password' : 'text',
+ inputMode: keyboardType === 'numeric' ? 'numeric' : undefined,
+ 'data-testid': testID,
+ onChange: (event: React.ChangeEvent) => {
+ const target = event.target as any;
+ onChangeText?.(target.value);
+ },
+ ...props,
+ }),
+);
+
+const Switch = ({
+ value,
+ onValueChange,
+ testID,
+}: {
+ value: boolean;
+ onValueChange?: (next: boolean) => void;
+ testID?: string;
+}) =>
+ createElement('input', {
+ type: 'checkbox',
+ checked: value,
+ 'data-testid': testID,
+ onChange: (event: React.ChangeEvent) => {
+ const target = event.target as any;
+ onValueChange?.(target.checked);
+ },
+ });
+
+const Button = ({
+ title,
+ onPress,
+ disabled,
+ testID,
+}: {
+ title: string;
+ onPress?: () => void;
+ disabled?: boolean;
+ testID?: string;
+}) =>
+ createElement(
+ 'button',
+ {
+ type: 'button',
+ disabled: Boolean(disabled),
+ onClick: disabled
+ ? undefined
+ : (event: React.MouseEvent) => {
+ event.preventDefault();
+ onPress?.();
+ },
+ 'data-testid': testID,
+ },
+ title,
+ );
+
+const Modal = ({ visible, children, testID }: { visible: boolean; children: React.ReactNode; testID?: string }) =>
+ visible ? createElement('div', { 'data-testid': testID }, children) : null;
+
+const SafeAreaView = createDomComponent('div');
+
+const FlatList = ({
+ data = [],
+ renderItem,
+ keyExtractor,
+ testID,
+}: {
+ data?: any[];
+ renderItem: ({ item, index }: { item: any; index: number }) => React.ReactNode;
+ keyExtractor?: (item: any, index: number) => string;
+ testID?: string;
+}) =>
+ createElement(
+ 'div',
+ { 'data-testid': testID },
+ data.map((item, index) =>
+ createElement(
+ React.Fragment,
+ { key: keyExtractor ? keyExtractor(item, index) : index },
+ renderItem({ item, index }),
+ ),
+ ),
+ );
+
+const ActivityIndicator = ({ testID, accessibilityLabel }: { testID?: string; accessibilityLabel?: string }) =>
+ createElement('div', {
+ role: 'status',
+ 'aria-label': accessibilityLabel ?? 'loading',
+ 'data-testid': testID,
+ });
+
+const alertSpy = vi.fn();
+
+beforeEach(() => {
+ sdkMocks.reset();
+ alertSpy.mockReset();
+});
+
vi.mock('react-native', () => ({
+ __esModule: true,
Platform: {
OS: 'ios',
select: (obj: Record) => (Object.prototype.hasOwnProperty.call(obj, 'ios') ? obj.ios : obj.default),
},
+ Dimensions: {
+ get: () => ({ width: 375, height: 812, scale: 2 }),
+ },
+ PixelRatio: {
+ get: () => 2,
+ },
NativeModules: {
PlatformConstants: {
- getConstants: () => ({
- isTesting: true,
- reactNativeVersion: {
- major: 0,
- minor: 76,
- patch: 9,
- },
- }),
+ getConstants: () => ({ isTesting: true }),
},
DeviceInfo: {
getConstants: () => ({
@@ -59,16 +271,10 @@ vi.mock('react-native', () => ({
PixelRatio: 2,
}),
},
- StatusBarManager: {
- getConstants: () => ({}),
- },
- Appearance: {
- getConstants: () => ({}),
- },
+ StatusBarManager: { getConstants: () => ({}) },
+ Appearance: { getConstants: () => ({ colorScheme: 'light' }) },
SourceCode: {
- getConstants: () => ({
- scriptURL: 'http://localhost:8081/index.bundle?platform=ios&dev=true',
- }),
+ getConstants: () => ({ scriptURL: 'http://localhost/index.bundle' }),
},
UIManager: {
getConstants: () => ({}),
@@ -85,48 +291,95 @@ vi.mock('react-native', () => ({
removeListeners: vi.fn(),
},
},
- requireNativeComponent: vi.fn(() => 'div'),
StyleSheet: {
- create: vi.fn(styles => styles),
+ create: (styles: Record) => styles,
+ flatten: flattenStyle,
+ hairlineWidth: 0.5,
},
+ View: createDomComponent('div'),
+ Text: createDomComponent('span'),
+ ScrollView,
+ TextInput,
+ Pressable,
+ Button,
+ Switch,
+ Modal,
+ SafeAreaView,
+ FlatList,
+ TouchableOpacity,
+ ActivityIndicator,
+ Alert: { alert: alertSpy },
+}));
+
+// Mock safe area context primitives
+vi.mock('react-native-safe-area-context', () => ({
+ __esModule: true,
+ SafeAreaProvider: ({ children }: { children: React.ReactNode }) => createElement('div', null, children),
+ SafeAreaView: forwardRef(({ children, style, testID }, ref) =>
+ createElement('div', { ref, style: flattenStyle(style), 'data-testid': testID }, children),
+ ),
+ useSafeAreaInsets: () => ({ top: 0, bottom: 0, left: 0, right: 0 }),
+}));
+
+// Mock vector icons
+vi.mock('react-native-vector-icons/Ionicons', () => ({
+ __esModule: true,
+ default: ({ name, testID }: { name: string; testID?: string }) =>
+ createElement('span', { 'data-icon': name, 'data-testid': testID }, name),
}));
// Mock @react-native-async-storage/async-storage
+const asyncStorageStore = new Map();
+const asyncStorageApi = {
+ setItem: vi.fn(async (key: string, value: string) => {
+ asyncStorageStore.set(key, value);
+ }),
+ getItem: vi.fn(async (key: string) => asyncStorageStore.get(key) ?? null),
+ removeItem: vi.fn(async (key: string) => {
+ asyncStorageStore.delete(key);
+ }),
+ clear: vi.fn(async () => {
+ asyncStorageStore.clear();
+ }),
+ getAllKeys: vi.fn(async () => Array.from(asyncStorageStore.keys())),
+ multiGet: vi.fn(async (keys: string[]) => keys.map(key => [key, asyncStorageStore.get(key) ?? null] as const)),
+ multiSet: vi.fn(async (entries: Array<[string, string]>) => {
+ entries.forEach(([key, value]) => asyncStorageStore.set(key, value));
+ }),
+ multiRemove: vi.fn(async (keys: string[]) => {
+ keys.forEach(key => asyncStorageStore.delete(key));
+ }),
+};
+
vi.mock('@react-native-async-storage/async-storage', () => ({
- default: {
- setItem: vi.fn(() => Promise.resolve()),
- getItem: vi.fn(() => Promise.resolve(null)),
- removeItem: vi.fn(() => Promise.resolve()),
- clear: vi.fn(() => Promise.resolve()),
- getAllKeys: vi.fn(() => Promise.resolve([])),
- multiGet: vi.fn(() => Promise.resolve([])),
- multiSet: vi.fn(() => Promise.resolve()),
- multiRemove: vi.fn(() => Promise.resolve()),
- },
+ __esModule: true,
+ default: asyncStorageApi,
+ ...asyncStorageApi,
}));
// Mock react-native-keychain with in-memory storage
const keychainStore: Record = {};
-const mockSetGenericPassword = vi.fn((username: string, password: string, options?: { service?: string }) => {
+const mockSetGenericPassword = vi.fn(async (username: string, password: string, options?: { service?: string }) => {
const key = options?.service || 'default';
keychainStore[key] = { username, password };
- return Promise.resolve(true);
+ return true;
});
-const mockGetGenericPassword = vi.fn((options?: { service?: string }) => {
+const mockGetGenericPassword = vi.fn(async (options?: { service?: string }) => {
const key = options?.service || 'default';
const credentials = keychainStore[key];
- return Promise.resolve(credentials || false);
+ return credentials || false;
});
-const mockResetGenericPassword = vi.fn((options?: { service?: string }) => {
+const mockResetGenericPassword = vi.fn(async (options?: { service?: string }) => {
const key = options?.service || 'default';
delete keychainStore[key];
- return Promise.resolve(true);
+ return true;
});
vi.mock('react-native-keychain', () => ({
+ __esModule: true,
default: {
setGenericPassword: mockSetGenericPassword,
getGenericPassword: mockGetGenericPassword,
@@ -143,10 +396,17 @@ vi.mock('react-native-keychain', () => ({
// Mock react-native-get-random-values
vi.mock('react-native-get-random-values', () => ({
+ __esModule: true,
polyfillGlobal: vi.fn(),
}));
-// Mock window.matchMedia
+// Mock SVG asset used on the home screen
+vi.mock('../src/assets/images/logo.svg', () => ({
+ __esModule: true,
+ default: (props: Record) => createElement('svg', { 'data-testid': 'logo', ...props }),
+}));
+
+// Ensure window.matchMedia exists for libraries relying on it
if (typeof (globalThis as any).window !== 'undefined') {
Object.defineProperty((globalThis as any).window, 'matchMedia', {
writable: true,
diff --git a/packages/mobile-sdk-demo/tests/utils/document.test.ts b/packages/mobile-sdk-demo/tests/utils/document.test.ts
index 2e99ef94c..4f9797473 100644
--- a/packages/mobile-sdk-demo/tests/utils/document.test.ts
+++ b/packages/mobile-sdk-demo/tests/utils/document.test.ts
@@ -10,12 +10,12 @@ import { formatDataPreview, humanizeDocumentType, maskId } from '../../src/utils
describe('document utils', () => {
describe('humanizeDocumentType', () => {
- it('formats mock_* types with Mock prefix and capitalization', () => {
+ it('adds a Mock prefix for mock document identifiers', () => {
expect(humanizeDocumentType('mock_passport')).toBe('Mock Passport');
- expect(humanizeDocumentType('mock_id_card')).toBe('Mock Id card'.replace(/\b\w/g, c => c.toUpperCase()));
+ expect(humanizeDocumentType('mock_driver_license')).toBe('Mock Driver License');
});
- it('formats non-mock types by replacing underscores and capitalizing words', () => {
+ it('converts underscores into spaces and capitalises words', () => {
expect(humanizeDocumentType('eu_id_card')).toBe('Eu Id Card');
expect(humanizeDocumentType('aadhaar')).toBe('Aadhaar');
});
@@ -32,17 +32,17 @@ describe('document utils', () => {
isRegistered: false,
}) as DocumentMetadata;
- it('returns a friendly message when no data present', () => {
+ it('returns a friendly message when no data is available', () => {
expect(formatDataPreview(baseMeta(''))).toBe('No preview available');
expect(formatDataPreview(baseMeta(undefined as unknown as string))).toBe('No preview available');
});
- it('returns first two lines joined by newline', () => {
- const meta = baseMeta('LINE1\nLINE2\nLINE3');
+ it('normalises newlines and limits the preview to two lines', () => {
+ const meta = baseMeta('LINE1\r\nLINE2\r\nLINE3');
expect(formatDataPreview(meta)).toBe('LINE1\nLINE2');
});
- it('truncates to 120 chars with ellipsis', () => {
+ it('truncates long previews to 120 characters with an ellipsis', () => {
const long = 'A'.repeat(200);
const meta = baseMeta(`${long}\nNEXT`);
const preview = formatDataPreview(meta);
@@ -52,12 +52,12 @@ describe('document utils', () => {
});
describe('maskId', () => {
- it('masks id with 8-char prefix and 6-char suffix', () => {
+ it('preserves an 8 character prefix and 6 character suffix for long identifiers', () => {
const id = '12345678abcdefghij123456';
expect(maskId(id)).toBe('12345678…123456');
});
- it('handles short ids gracefully', () => {
+ it('omits the ellipsis when the identifier is shorter than the threshold', () => {
expect(maskId('123456')).toBe('123456');
expect(maskId('1234567')).toBe('1234567');
expect(maskId('12345678')).toBe('12345678');
diff --git a/yarn.lock b/yarn.lock
index ceb6c1289..5d724a06c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,6 +5,13 @@ __metadata:
version: 8
cacheKey: 10c0
+"@adobe/css-tools@npm:^4.4.0":
+ version: 4.4.4
+ resolution: "@adobe/css-tools@npm:4.4.4"
+ checksum: 10c0/8f3e6cfaa5e6286e6f05de01d91d060425be2ebaef490881f5fe6da8bbdb336835c5d373ea337b0c3b0a1af4be048ba18780f0f6021d30809b4545922a7e13d9
+ languageName: node
+ linkType: hard
+
"@adraffy/ens-normalize@npm:1.10.1":
version: 1.10.1
resolution: "@adraffy/ens-normalize@npm:1.10.1"
@@ -176,25 +183,25 @@ __metadata:
languageName: node
linkType: hard
-"@angular-devkit/architect@npm:0.2003.3, @angular-devkit/architect@npm:>= 0.2000.0 < 0.2100.0":
- version: 0.2003.3
- resolution: "@angular-devkit/architect@npm:0.2003.3"
+"@angular-devkit/architect@npm:0.2003.4, @angular-devkit/architect@npm:>= 0.2000.0 < 0.2100.0":
+ version: 0.2003.4
+ resolution: "@angular-devkit/architect@npm:0.2003.4"
dependencies:
- "@angular-devkit/core": "npm:20.3.3"
+ "@angular-devkit/core": "npm:20.3.4"
rxjs: "npm:7.8.2"
- checksum: 10c0/7e72e032e2d870e9e14ba296e65d28a2f0486a554b90d7e40660a9faab154ee0f0b77f57f63d58386719534137168ae31ecf06005b7c033562f2c1ae30c257f4
+ checksum: 10c0/18a24dfbf6eb921c52671ecdb76b550e0c508aff8698d571f828bde01b16879445374155e0e3ad5cd8624a2ecff566702ca6c29e11187afeda1eb5718b6afd94
languageName: node
linkType: hard
"@angular-devkit/build-angular@npm:^20.3.0":
- version: 20.3.3
- resolution: "@angular-devkit/build-angular@npm:20.3.3"
+ version: 20.3.4
+ resolution: "@angular-devkit/build-angular@npm:20.3.4"
dependencies:
"@ampproject/remapping": "npm:2.3.0"
- "@angular-devkit/architect": "npm:0.2003.3"
- "@angular-devkit/build-webpack": "npm:0.2003.3"
- "@angular-devkit/core": "npm:20.3.3"
- "@angular/build": "npm:20.3.3"
+ "@angular-devkit/architect": "npm:0.2003.4"
+ "@angular-devkit/build-webpack": "npm:0.2003.4"
+ "@angular-devkit/core": "npm:20.3.4"
+ "@angular/build": "npm:20.3.4"
"@babel/core": "npm:7.28.3"
"@babel/generator": "npm:7.28.3"
"@babel/helper-annotate-as-pure": "npm:7.27.3"
@@ -205,7 +212,7 @@ __metadata:
"@babel/preset-env": "npm:7.28.3"
"@babel/runtime": "npm:7.28.3"
"@discoveryjs/json-ext": "npm:0.6.3"
- "@ngtools/webpack": "npm:20.3.3"
+ "@ngtools/webpack": "npm:20.3.4"
ansi-colors: "npm:4.1.3"
autoprefixer: "npm:10.4.21"
babel-loader: "npm:10.0.0"
@@ -252,7 +259,7 @@ __metadata:
"@angular/platform-browser": ^20.0.0
"@angular/platform-server": ^20.0.0
"@angular/service-worker": ^20.0.0
- "@angular/ssr": ^20.3.3
+ "@angular/ssr": ^20.3.4
"@web/test-runner": ^0.20.0
browser-sync: ^3.0.2
jest: ^29.5.0
@@ -294,26 +301,26 @@ __metadata:
optional: true
tailwindcss:
optional: true
- checksum: 10c0/5b1de39370f761458feb00de1751afe0bde9ff3617925a9b457cfd0145ed51d03c6976724a0dd4f7d5203b78b75ef969de833890cbbd00073736634cc52cc7ef
+ checksum: 10c0/88bc7f4c4bd6db1cb43caaadef0800a64bf69f4e98ba504429a06fc7d30072ad27695b6b9eb92a5bc2ac28670de29b7952716c6652f447932b3e584e9a6e0cb0
languageName: node
linkType: hard
-"@angular-devkit/build-webpack@npm:0.2003.3":
- version: 0.2003.3
- resolution: "@angular-devkit/build-webpack@npm:0.2003.3"
+"@angular-devkit/build-webpack@npm:0.2003.4":
+ version: 0.2003.4
+ resolution: "@angular-devkit/build-webpack@npm:0.2003.4"
dependencies:
- "@angular-devkit/architect": "npm:0.2003.3"
+ "@angular-devkit/architect": "npm:0.2003.4"
rxjs: "npm:7.8.2"
peerDependencies:
webpack: ^5.30.0
webpack-dev-server: ^5.0.2
- checksum: 10c0/d6cfa16abb87334ddfad8717146e41e5eb458a00e3bbf4803ffda81e7ffe6ba56065696ea64fe6d4764fc8093553943eec33f647a9db45268cf457cf92e9329c
+ checksum: 10c0/3ac356208382be8b066326c09c5967df019a989c069a42648fbf862f5eb36f356511f2c7ed8dc94956d244c677bc8de2e3436c8a9b5a1d4e21a66b70f0fa3755
languageName: node
linkType: hard
-"@angular-devkit/core@npm:20.3.3, @angular-devkit/core@npm:>= 20.0.0 < 21.0.0":
- version: 20.3.3
- resolution: "@angular-devkit/core@npm:20.3.3"
+"@angular-devkit/core@npm:20.3.4, @angular-devkit/core@npm:>= 20.0.0 < 21.0.0":
+ version: 20.3.4
+ resolution: "@angular-devkit/core@npm:20.3.4"
dependencies:
ajv: "npm:8.17.1"
ajv-formats: "npm:3.0.1"
@@ -326,20 +333,20 @@ __metadata:
peerDependenciesMeta:
chokidar:
optional: true
- checksum: 10c0/f141ba8c2bbaee54b110e24a170921055a9a22a04ccb22c85e9d26f5692f4545f0af4ffb96334bfa764593e41de3cd611a58b18d1d48ec401d936cf9247a712d
+ checksum: 10c0/1a7dc93244afb941bf1cbe3550a320b7f695e4ddc6bf3efc90f130aaa26dde7b3d17aa7174956fdcc8bf8a22d1726b9f0b799e30264051fe0330489e90a7d846
languageName: node
linkType: hard
-"@angular-devkit/schematics@npm:20.3.3, @angular-devkit/schematics@npm:>= 20.0.0 < 21.0.0":
- version: 20.3.3
- resolution: "@angular-devkit/schematics@npm:20.3.3"
+"@angular-devkit/schematics@npm:20.3.4, @angular-devkit/schematics@npm:>= 20.0.0 < 21.0.0":
+ version: 20.3.4
+ resolution: "@angular-devkit/schematics@npm:20.3.4"
dependencies:
- "@angular-devkit/core": "npm:20.3.3"
+ "@angular-devkit/core": "npm:20.3.4"
jsonc-parser: "npm:3.3.1"
magic-string: "npm:0.30.17"
ora: "npm:8.2.0"
rxjs: "npm:7.8.2"
- checksum: 10c0/f110e6f2d1ae5bba56599435c564924afd9842bc4b1873752f0f72a7df725c0848d2bb8a67a3b96c92d8c393c61073d16138047138fa5f09c06355a4fa67f554
+ checksum: 10c0/ddd257ac680440e40d5c6f59c15b08e906ac43687798b14374cfbcac44d08b2d3355bac4852cb76e8751eefa7798cafc2c44774d6dc50398d27b19e2b6f8226d
languageName: node
linkType: hard
@@ -438,22 +445,22 @@ __metadata:
linkType: hard
"@angular/animations@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/animations@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/animations@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
peerDependencies:
- "@angular/core": 20.3.2
- checksum: 10c0/45912f113ca449ac31d0253648733d27342430a31f7d1bf3fd3600465080453ffdd8665bf5be61cdbe66fe1d67cd1fe4792d3e8ecd65058c6e51b223740f0826
+ "@angular/core": 20.3.3
+ checksum: 10c0/bf4b06d2cbdb1303602b362389d02c0ce435f1638913c5f579a42b0453d322810e87c2d72809aee8415610ab640dc1b3a9ab620d548ccbc6ace3ded9c7e0c8e3
languageName: node
linkType: hard
-"@angular/build@npm:20.3.3":
- version: 20.3.3
- resolution: "@angular/build@npm:20.3.3"
+"@angular/build@npm:20.3.4":
+ version: 20.3.4
+ resolution: "@angular/build@npm:20.3.4"
dependencies:
"@ampproject/remapping": "npm:2.3.0"
- "@angular-devkit/architect": "npm:0.2003.3"
+ "@angular-devkit/architect": "npm:0.2003.4"
"@babel/core": "npm:7.28.3"
"@babel/helper-annotate-as-pure": "npm:7.27.3"
"@babel/helper-split-export-declaration": "npm:7.24.7"
@@ -472,7 +479,7 @@ __metadata:
parse5-html-rewriting-stream: "npm:8.0.0"
picomatch: "npm:4.0.3"
piscina: "npm:5.1.3"
- rolldown: "npm:1.0.0-beta.38"
+ rollup: "npm:4.52.3"
sass: "npm:1.90.0"
semver: "npm:7.7.2"
source-map-support: "npm:0.5.21"
@@ -487,7 +494,7 @@ __metadata:
"@angular/platform-browser": ^20.0.0
"@angular/platform-server": ^20.0.0
"@angular/service-worker": ^20.0.0
- "@angular/ssr": ^20.3.3
+ "@angular/ssr": ^20.3.4
karma: ^6.4.0
less: ^4.2.0
ng-packagr: ^20.0.0
@@ -524,21 +531,21 @@ __metadata:
optional: true
vitest:
optional: true
- checksum: 10c0/a1e473820b6c930bc86edd53c18636e482036348b531796bed691592b159c6c412e7110ff70e87455287f233aa4a0e96e27037e82b4dfb43148f23073b923364
+ checksum: 10c0/0a5df215b8ae9463dc9e198e09d008b3317d2da0a8eaed1fffc51b9f6e73e9f6be0a2f2727cf2943ddf4a221c37a82cbcc24419f490ff580d0dd66d85266d2c0
languageName: node
linkType: hard
"@angular/cli@npm:^20.3.0":
- version: 20.3.3
- resolution: "@angular/cli@npm:20.3.3"
+ version: 20.3.4
+ resolution: "@angular/cli@npm:20.3.4"
dependencies:
- "@angular-devkit/architect": "npm:0.2003.3"
- "@angular-devkit/core": "npm:20.3.3"
- "@angular-devkit/schematics": "npm:20.3.3"
+ "@angular-devkit/architect": "npm:0.2003.4"
+ "@angular-devkit/core": "npm:20.3.4"
+ "@angular-devkit/schematics": "npm:20.3.4"
"@inquirer/prompts": "npm:7.8.2"
"@listr2/prompt-adapter-inquirer": "npm:3.0.1"
"@modelcontextprotocol/sdk": "npm:1.17.3"
- "@schematics/angular": "npm:20.3.3"
+ "@schematics/angular": "npm:20.3.4"
"@yarnpkg/lockfile": "npm:1.1.0"
algoliasearch: "npm:5.35.0"
ini: "npm:5.0.0"
@@ -552,25 +559,25 @@ __metadata:
zod: "npm:3.25.76"
bin:
ng: bin/ng.js
- checksum: 10c0/ef5e7eede5578034e97e712dd545714b0e55a9eff65ad14ac6c76335704727e28452a74956df98f1890617628f4021d3ec37c8c42b3e37d64b0b9a0b58c56f36
+ checksum: 10c0/278960777ca935c809772bd09141ecd1f27b319e832e8abef5c715b2b38e528be3302fca1feb2fb6e82e4082d00d256be241123f1828d0b806bfc20d982de71c
languageName: node
linkType: hard
"@angular/common@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/common@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/common@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
peerDependencies:
- "@angular/core": 20.3.2
+ "@angular/core": 20.3.3
rxjs: ^6.5.3 || ^7.4.0
- checksum: 10c0/4a7bd6b30b83efdaccce2dbfa4f8bbd6f59b2519f4f0c493e983c904be7a9ec741095767d47a8434ab2babf04159730b2cef8d3c0692046a573576120c428046
+ checksum: 10c0/5cfc57e58d5874e0f6c4a13e1bcbe7ffd70fb9e4fe74e236235b7616b6116fead8d15580eea911c66da4cbe47fcf6ddfc62fe4f053b3cf3f59740895a8ffb5b9
languageName: node
linkType: hard
"@angular/compiler-cli@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/compiler-cli@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/compiler-cli@npm:20.3.3"
dependencies:
"@babel/core": "npm:7.28.3"
"@jridgewell/sourcemap-codec": "npm:^1.4.14"
@@ -581,7 +588,7 @@ __metadata:
tslib: "npm:^2.3.0"
yargs: "npm:^18.0.0"
peerDependencies:
- "@angular/compiler": 20.3.2
+ "@angular/compiler": 20.3.3
typescript: ">=5.8 <6.0"
peerDependenciesMeta:
typescript:
@@ -589,26 +596,26 @@ __metadata:
bin:
ng-xi18n: bundles/src/bin/ng_xi18n.js
ngc: bundles/src/bin/ngc.js
- checksum: 10c0/04482f988aa4012a13b2ca8efbc2febfcb901022c1d56dfc16c13c93a29aea2da1da4ee3d1cac709aa64401257ff6a147fec686de25b61d09abd2d10c44b0eaf
+ checksum: 10c0/26ea196a383db321485e6ce77f787ace7c171015a12b1849983fd0c7f131c0467f23da31e42f76530abade656c8545fa8859f213bcda74efeaef4877bd5d8f1a
languageName: node
linkType: hard
"@angular/compiler@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/compiler@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/compiler@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
- checksum: 10c0/13f9ce84a6ecd5748c008cf6d79ef1a6a0fd5647ae86ae8f409a1e51532d66c2c84f729b793114f048dda6d07d7cebcc394533fe27eb0d7225c6bf646f1e404c
+ checksum: 10c0/affcf730a765b66328d21361ee1b26be04e8b83087c615eb96bcd6f3d0d8c995626ed3213f966db525a51a33d4dd6146f998b69c8377c4bfd349b4312ae2a9e9
languageName: node
linkType: hard
"@angular/core@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/core@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/core@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
peerDependencies:
- "@angular/compiler": 20.3.2
+ "@angular/compiler": 20.3.3
rxjs: ^6.5.3 || ^7.4.0
zone.js: ~0.15.0
peerDependenciesMeta:
@@ -616,37 +623,37 @@ __metadata:
optional: true
zone.js:
optional: true
- checksum: 10c0/7eac9f334ed1a6927e031cbb099eda471f55c527c7546cc920885031c123594ab9ac36f253c8eb77f68b0b19ca6efd2b722d6aa45ab158ce4b19869e2f9f823e
+ checksum: 10c0/af10e914c98e4e4a5cb2a0548da9f9ec34c8cd6a750c3c25f2ca56c27286b33b3959bef2d6cc2cdea259593cde227b51ccc1eda745e03d45b5f65042b1156b16
languageName: node
linkType: hard
"@angular/platform-browser-dynamic@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/platform-browser-dynamic@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/platform-browser-dynamic@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
peerDependencies:
- "@angular/common": 20.3.2
- "@angular/compiler": 20.3.2
- "@angular/core": 20.3.2
- "@angular/platform-browser": 20.3.2
- checksum: 10c0/9e3c03cbe9c3176cd1d8aaff721a453a0eb4299fd1b78c9fa7ab980ad82016876a635656b9dad10624ba27d97e1f65e2e79e5279bc41f2f0d46d833463dcd247
+ "@angular/common": 20.3.3
+ "@angular/compiler": 20.3.3
+ "@angular/core": 20.3.3
+ "@angular/platform-browser": 20.3.3
+ checksum: 10c0/eed6c7b7baea183aca02a4f172dffd99c8b96caaefaa1e66bc016ae53bae32390745daf15f3cf15e403d6c57d8571d959b20d2a97201b20808ee272da134dbae
languageName: node
linkType: hard
"@angular/platform-browser@npm:^20.3.0":
- version: 20.3.2
- resolution: "@angular/platform-browser@npm:20.3.2"
+ version: 20.3.3
+ resolution: "@angular/platform-browser@npm:20.3.3"
dependencies:
tslib: "npm:^2.3.0"
peerDependencies:
- "@angular/animations": 20.3.2
- "@angular/common": 20.3.2
- "@angular/core": 20.3.2
+ "@angular/animations": 20.3.3
+ "@angular/common": 20.3.3
+ "@angular/core": 20.3.3
peerDependenciesMeta:
"@angular/animations":
optional: true
- checksum: 10c0/121cca56cef5f6218db20a4c6509d670c3da7f587bea4286e98d098a34eef4ae43294a049c211b8082770699c6771283b310b6033b74383d067822d85cc7de94
+ checksum: 10c0/b18881936425c4792b3f6f7f644ab6f2aa9a0578b360a23c4c81f05b0db995d4b6effc4577951c4396abe3a839229874b43e4ae607570df625b522e4dbb5495a
languageName: node
linkType: hard
@@ -4808,24 +4815,24 @@ __metadata:
linkType: hard
"@napi-rs/wasm-runtime@npm:^1.0.5":
- version: 1.0.5
- resolution: "@napi-rs/wasm-runtime@npm:1.0.5"
+ version: 1.0.6
+ resolution: "@napi-rs/wasm-runtime@npm:1.0.6"
dependencies:
"@emnapi/core": "npm:^1.5.0"
"@emnapi/runtime": "npm:^1.5.0"
"@tybys/wasm-util": "npm:^0.10.1"
- checksum: 10c0/8d29299933c57b6ead61f46fad5c3dfabc31e1356bbaf25c3a8ae57be0af0db0006a808f2c1bb16e28925e027f20e0856550dac94e015f56dd6ed53b38f9a385
+ checksum: 10c0/af48168c6e13c970498fda3ce7238234a906bc69dd474dc9abd560cdf8a7dea6410147afec8f0191a1d19767c8347d8ec0125a8a93225312f7ac37e06e8c15ad
languageName: node
linkType: hard
-"@ngtools/webpack@npm:20.3.3":
- version: 20.3.3
- resolution: "@ngtools/webpack@npm:20.3.3"
+"@ngtools/webpack@npm:20.3.4":
+ version: 20.3.4
+ resolution: "@ngtools/webpack@npm:20.3.4"
peerDependencies:
"@angular/compiler-cli": ^20.0.0
typescript: ">=5.8 <6.0"
webpack: ^5.54.0
- checksum: 10c0/ae34b0313223520dd704e6a1897b4a98ceb761c810b1ac2bb129fed053877e3edaa5128a9c72051f2768ff8785934e6c090423a910a215495d4df18b91082e58
+ checksum: 10c0/53c8ba27d5a1c20c03b0a07fc6c2479109a3a522a343b51e404798a168d6fa283873a16fe2a899f0cc86caeb46d8ce49b51f254319d3d06afc96f723008c6a88
languageName: node
linkType: hard
@@ -5439,144 +5446,137 @@ __metadata:
languageName: node
linkType: hard
-"@oxc-project/types@npm:=0.89.0":
- version: 0.89.0
- resolution: "@oxc-project/types@npm:0.89.0"
- checksum: 10c0/2e971397f32d28aef443b0863f915eb56bacb0d94ced10da0d8366e076c1a8f9284cbe107f03ad709b7ac65cd2ddfe4c13f754ddf214001f39f079126fa40622
- languageName: node
- linkType: hard
-
-"@oxc-resolver/binding-android-arm-eabi@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.8.4"
+"@oxc-resolver/binding-android-arm-eabi@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.9.0"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
-"@oxc-resolver/binding-android-arm64@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-android-arm64@npm:11.8.4"
+"@oxc-resolver/binding-android-arm64@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-android-arm64@npm:11.9.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"@oxc-resolver/binding-darwin-arm64@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.8.4"
+"@oxc-resolver/binding-darwin-arm64@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.9.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@oxc-resolver/binding-darwin-x64@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-darwin-x64@npm:11.8.4"
+"@oxc-resolver/binding-darwin-x64@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-darwin-x64@npm:11.9.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@oxc-resolver/binding-freebsd-x64@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.8.4"
+"@oxc-resolver/binding-freebsd-x64@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.9.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.8.4"
+"@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.9.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-arm-musleabihf@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.8.4"
+"@oxc-resolver/binding-linux-arm-musleabihf@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.9.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-arm64-gnu@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.8.4"
+"@oxc-resolver/binding-linux-arm64-gnu@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.9.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-arm64-musl@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.8.4"
+"@oxc-resolver/binding-linux-arm64-musl@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.9.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-ppc64-gnu@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.8.4"
+"@oxc-resolver/binding-linux-ppc64-gnu@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.9.0"
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-riscv64-gnu@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.8.4"
+"@oxc-resolver/binding-linux-riscv64-gnu@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.9.0"
conditions: os=linux & cpu=riscv64 & libc=glibc
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-riscv64-musl@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.8.4"
+"@oxc-resolver/binding-linux-riscv64-musl@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.9.0"
conditions: os=linux & cpu=riscv64 & libc=musl
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-s390x-gnu@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.8.4"
+"@oxc-resolver/binding-linux-s390x-gnu@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.9.0"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-x64-gnu@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.8.4"
+"@oxc-resolver/binding-linux-x64-gnu@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.9.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@oxc-resolver/binding-linux-x64-musl@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.8.4"
+"@oxc-resolver/binding-linux-x64-musl@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.9.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@oxc-resolver/binding-wasm32-wasi@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.8.4"
+"@oxc-resolver/binding-wasm32-wasi@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.9.0"
dependencies:
"@napi-rs/wasm-runtime": "npm:^1.0.5"
conditions: cpu=wasm32
languageName: node
linkType: hard
-"@oxc-resolver/binding-win32-arm64-msvc@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.8.4"
+"@oxc-resolver/binding-win32-arm64-msvc@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.9.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@oxc-resolver/binding-win32-ia32-msvc@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.8.4"
+"@oxc-resolver/binding-win32-ia32-msvc@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.9.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@oxc-resolver/binding-win32-x64-msvc@npm:11.8.4":
- version: 11.8.4
- resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.8.4"
+"@oxc-resolver/binding-win32-x64-msvc@npm:11.9.0":
+ version: 11.9.0
+ resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.9.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -6608,106 +6608,6 @@ __metadata:
languageName: node
linkType: hard
-"@rolldown/binding-android-arm64@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-android-arm64@npm:1.0.0-beta.38"
- conditions: os=android & cpu=arm64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-darwin-arm64@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.38"
- conditions: os=darwin & cpu=arm64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-darwin-x64@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-beta.38"
- conditions: os=darwin & cpu=x64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-freebsd-x64@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.38"
- conditions: os=freebsd & cpu=x64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.38"
- conditions: os=linux & cpu=arm
- languageName: node
- linkType: hard
-
-"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.38"
- conditions: os=linux & cpu=arm64 & libc=glibc
- languageName: node
- linkType: hard
-
-"@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.38"
- conditions: os=linux & cpu=arm64 & libc=musl
- languageName: node
- linkType: hard
-
-"@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.38"
- conditions: os=linux & cpu=x64 & libc=glibc
- languageName: node
- linkType: hard
-
-"@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.38"
- conditions: os=linux & cpu=x64 & libc=musl
- languageName: node
- linkType: hard
-
-"@rolldown/binding-openharmony-arm64@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-beta.38"
- conditions: os=openharmony & cpu=arm64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.38"
- dependencies:
- "@napi-rs/wasm-runtime": "npm:^1.0.5"
- conditions: cpu=wasm32
- languageName: node
- linkType: hard
-
-"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.38"
- conditions: os=win32 & cpu=arm64
- languageName: node
- linkType: hard
-
-"@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.38"
- conditions: os=win32 & cpu=ia32
- languageName: node
- linkType: hard
-
-"@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.38"
- conditions: os=win32 & cpu=x64
- languageName: node
- linkType: hard
-
"@rolldown/pluginutils@npm:1.0.0-beta.27":
version: 1.0.0-beta.27
resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27"
@@ -6715,13 +6615,6 @@ __metadata:
languageName: node
linkType: hard
-"@rolldown/pluginutils@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "@rolldown/pluginutils@npm:1.0.0-beta.38"
- checksum: 10c0/8353ec2528349f79e27d1a3193806725b85830da334e935cbb606d88c1177c58ea6519c578e4e93e5f677f5b22aecb8738894dbed14603e14b6bffe3facf1002
- languageName: node
- linkType: hard
-
"@rollup/plugin-json@npm:^6.1.0":
version: 6.1.0
resolution: "@rollup/plugin-json@npm:6.1.0"
@@ -6759,6 +6652,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-android-arm-eabi@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.4"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-android-arm64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-android-arm64@npm:4.52.3"
@@ -6766,6 +6666,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-android-arm64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-android-arm64@npm:4.52.4"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-darwin-arm64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-darwin-arm64@npm:4.52.3"
@@ -6773,6 +6680,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-darwin-arm64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-darwin-arm64@npm:4.52.4"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-darwin-x64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-darwin-x64@npm:4.52.3"
@@ -6780,6 +6694,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-darwin-x64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-darwin-x64@npm:4.52.4"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-freebsd-arm64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.3"
@@ -6787,6 +6708,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-freebsd-arm64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.4"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-freebsd-x64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-freebsd-x64@npm:4.52.3"
@@ -6794,6 +6722,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-freebsd-x64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-freebsd-x64@npm:4.52.4"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.3"
@@ -6801,6 +6736,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.4"
+ conditions: os=linux & cpu=arm & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm-musleabihf@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.3"
@@ -6808,6 +6750,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm-musleabihf@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.4"
+ conditions: os=linux & cpu=arm & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.3"
@@ -6815,6 +6764,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=arm64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-arm64-musl@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.3"
@@ -6822,6 +6778,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-arm64-musl@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.4"
+ conditions: os=linux & cpu=arm64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-loong64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.3"
@@ -6829,6 +6792,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-loong64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=loong64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-ppc64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.3"
@@ -6836,6 +6806,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-ppc64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=ppc64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-riscv64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.3"
@@ -6843,6 +6820,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-riscv64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=riscv64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-riscv64-musl@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.3"
@@ -6850,6 +6834,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-riscv64-musl@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.4"
+ conditions: os=linux & cpu=riscv64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-s390x-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.3"
@@ -6857,6 +6848,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-s390x-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=s390x & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-x64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.3"
@@ -6864,6 +6862,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-x64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.4"
+ conditions: os=linux & cpu=x64 & libc=glibc
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-linux-x64-musl@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.3"
@@ -6871,6 +6876,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-linux-x64-musl@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.4"
+ conditions: os=linux & cpu=x64 & libc=musl
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-openharmony-arm64@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.3"
@@ -6878,6 +6890,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-openharmony-arm64@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.4"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-arm64-msvc@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.3"
@@ -6885,6 +6904,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-arm64-msvc@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.4"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-ia32-msvc@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.3"
@@ -6892,6 +6918,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-ia32-msvc@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.4"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-x64-gnu@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.3"
@@ -6899,6 +6932,13 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-x64-gnu@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.4"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/rollup-win32-x64-msvc@npm:4.52.3":
version: 4.52.3
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.3"
@@ -6906,9 +6946,16 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/rollup-win32-x64-msvc@npm:4.52.4":
+ version: 4.52.4
+ resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.4"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@rollup/wasm-node@npm:^4.24.0":
- version: 4.52.3
- resolution: "@rollup/wasm-node@npm:4.52.3"
+ version: 4.52.4
+ resolution: "@rollup/wasm-node@npm:4.52.4"
dependencies:
"@types/estree": "npm:1.0.8"
fsevents: "npm:~2.3.2"
@@ -6917,7 +6964,7 @@ __metadata:
optional: true
bin:
rollup: dist/bin/rollup
- checksum: 10c0/c1feefd902408428bec0bd087c5970f5b64ee3939d558e45c511525964d5e1484da04b8eeeb46c3f037eab0131f48bac206e87bdb204fb1e44c479764d3612c6
+ checksum: 10c0/2a69c0a21d91499718f9fc58f7f4f490b7620b9b5958bd2ab6c34d5a377def75ddb7c2b6ae0e213b2c6eb2a931c6ea08392c7bce90845cdbd0a13009cc27da9a
languageName: node
linkType: hard
@@ -6935,14 +6982,14 @@ __metadata:
languageName: node
linkType: hard
-"@schematics/angular@npm:20.3.3":
- version: 20.3.3
- resolution: "@schematics/angular@npm:20.3.3"
+"@schematics/angular@npm:20.3.4":
+ version: 20.3.4
+ resolution: "@schematics/angular@npm:20.3.4"
dependencies:
- "@angular-devkit/core": "npm:20.3.3"
- "@angular-devkit/schematics": "npm:20.3.3"
+ "@angular-devkit/core": "npm:20.3.4"
+ "@angular-devkit/schematics": "npm:20.3.4"
jsonc-parser: "npm:3.3.1"
- checksum: 10c0/8f026d72ee76d05fb7b37f47cd958f8c215b69f8fad0387b47fb1cfbc3a34fb1957d6c67004f1b07c5cf7531b00bf1839db5bd37132a87b93d7aeac6633bd48f
+ checksum: 10c0/94eeb65cd78131bbf82b4ac9ae286d4431aba40ca19e0b38c7064b0be02f3142e3879cd8c246eaeffb7f1a51a5bae4f69cb32359df712331ae1ac6939cfb5eca
languageName: node
linkType: hard
@@ -11173,6 +11220,22 @@ __metadata:
languageName: node
linkType: hard
+"@testing-library/dom@npm:^10.4.1":
+ version: 10.4.1
+ resolution: "@testing-library/dom@npm:10.4.1"
+ dependencies:
+ "@babel/code-frame": "npm:^7.10.4"
+ "@babel/runtime": "npm:^7.12.5"
+ "@types/aria-query": "npm:^5.0.1"
+ aria-query: "npm:5.3.0"
+ dom-accessibility-api: "npm:^0.5.9"
+ lz-string: "npm:^1.5.0"
+ picocolors: "npm:1.1.1"
+ pretty-format: "npm:^27.0.2"
+ checksum: 10c0/19ce048012d395ad0468b0dbcc4d0911f6f9e39464d7a8464a587b29707eed5482000dad728f5acc4ed314d2f4d54f34982999a114d2404f36d048278db815b1
+ languageName: node
+ linkType: hard
+
"@testing-library/dom@npm:^9.0.0":
version: 9.3.4
resolution: "@testing-library/dom@npm:9.3.4"
@@ -11189,6 +11252,20 @@ __metadata:
languageName: node
linkType: hard
+"@testing-library/jest-dom@npm:^6.6.3":
+ version: 6.9.1
+ resolution: "@testing-library/jest-dom@npm:6.9.1"
+ dependencies:
+ "@adobe/css-tools": "npm:^4.4.0"
+ aria-query: "npm:^5.0.0"
+ css.escape: "npm:^1.5.1"
+ dom-accessibility-api: "npm:^0.6.3"
+ picocolors: "npm:^1.1.1"
+ redent: "npm:^3.0.0"
+ checksum: 10c0/4291ebd2f0f38d14cefac142c56c337941775a5807e2a3d6f1a14c2fbd6be76a18e498ed189e95bedc97d9e8cf1738049bc76c85b5bc5e23fae7c9e10f7b3a12
+ languageName: node
+ linkType: hard
+
"@testing-library/react-native@npm:^13.3.3":
version: 13.3.3
resolution: "@testing-library/react-native@npm:13.3.3"
@@ -11223,6 +11300,35 @@ __metadata:
languageName: node
linkType: hard
+"@testing-library/react@npm:^16.1.0":
+ version: 16.3.0
+ resolution: "@testing-library/react@npm:16.3.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.12.5"
+ peerDependencies:
+ "@testing-library/dom": ^10.0.0
+ "@types/react": ^18.0.0 || ^19.0.0
+ "@types/react-dom": ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 10c0/3a2cb1f87c9a67e1ebbbcfd99b94b01e496fc35147be8bc5d8bf07a699c7d523a09d57ef2f7b1d91afccd1a28e21eda3b00d80187fbb51b1de01e422592d845e
+ languageName: node
+ linkType: hard
+
+"@testing-library/user-event@npm:^14.5.2":
+ version: 14.6.1
+ resolution: "@testing-library/user-event@npm:14.6.1"
+ peerDependencies:
+ "@testing-library/dom": ">=7.21.4"
+ checksum: 10c0/75fea130a52bf320d35d46ed54f3eec77e71a56911b8b69a3fe29497b0b9947b2dc80d30f04054ad4ce7f577856ae3e5397ea7dff0ef14944d3909784c7a93fe
+ languageName: node
+ linkType: hard
+
"@tootallnate/quickjs-emscripten@npm:^0.23.0":
version: 0.23.0
resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0"
@@ -11799,11 +11905,11 @@ __metadata:
linkType: hard
"@types/node@npm:^22.18.3":
- version: 22.18.6
- resolution: "@types/node@npm:22.18.6"
+ version: 22.18.8
+ resolution: "@types/node@npm:22.18.8"
dependencies:
undici-types: "npm:~6.21.0"
- checksum: 10c0/7ba190da2e64e56c59270661af8cd682c830a1375b6f965ab153be90baabfdaa867aa1d63f87b42de80956996d46dfe1cf93ecefe982d9a16e485b6756949f9a
+ checksum: 10c0/54473730e7417b923fec427f62ed3204259acbd8e450a7593bad8ae02a75effcfcc864b34bf02c108eeb9c04a404791687f42b801bafa5264a8761f4df9122fd
languageName: node
linkType: hard
@@ -11913,12 +12019,12 @@ __metadata:
linkType: hard
"@types/react@npm:^18.3.4":
- version: 18.3.24
- resolution: "@types/react@npm:18.3.24"
+ version: 18.3.25
+ resolution: "@types/react@npm:18.3.25"
dependencies:
"@types/prop-types": "npm:*"
csstype: "npm:^3.0.2"
- checksum: 10c0/9e188fa8e50f172cf647fc48fea2e04d88602afff47190b697de281a8ac88df9ee059864757a2a438ff599eaf9276d9a9e0e60585e88f7d57f01a2e4877d37ec
+ checksum: 10c0/ef4fad7c845ce44cb454e47e826d1b04ff5081bccdac06d0260fc6e47de730268f8f9ff2ffc5085ee793d7466493c1175b2309b3d71c20916efefac0fd7612f1
languageName: node
linkType: hard
@@ -11939,11 +12045,11 @@ __metadata:
linkType: hard
"@types/secp256k1@npm:^4.0.1":
- version: 4.0.6
- resolution: "@types/secp256k1@npm:4.0.6"
+ version: 4.0.7
+ resolution: "@types/secp256k1@npm:4.0.7"
dependencies:
"@types/node": "npm:*"
- checksum: 10c0/0e391316ae30c218779583b626382a56546ddbefb65f1ff9cf5e078af8a7118f67f3e66e30914399cc6f8710c424d0d8c3f34262ffb1f429c6ad911fd0d0bc26
+ checksum: 10c0/3e4a22bb699597adc723414a841d2e8a1fa71c95c3d018c6a2dd8482500b6e9fe2d78d87e758f18c1aabe333cac22ac2a96f456e3bc147df30b7fac4e6346618
languageName: node
linkType: hard
@@ -11955,6 +12061,15 @@ __metadata:
linkType: hard
"@types/send@npm:*":
+ version: 1.2.0
+ resolution: "@types/send@npm:1.2.0"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: 10c0/66d34fbb49c9a7848244eb227c39d499c205875d7f6b3a7536b9c6b1e44a7764ee33ade9bc14188454c05caa7b2c583c823e8b5a1afdaa51141307cd5b3660c0
+ languageName: node
+ linkType: hard
+
+"@types/send@npm:<1":
version: 0.17.5
resolution: "@types/send@npm:0.17.5"
dependencies:
@@ -11974,13 +12089,13 @@ __metadata:
linkType: hard
"@types/serve-static@npm:*, @types/serve-static@npm:^1.15.5":
- version: 1.15.8
- resolution: "@types/serve-static@npm:1.15.8"
+ version: 1.15.9
+ resolution: "@types/serve-static@npm:1.15.9"
dependencies:
"@types/http-errors": "npm:*"
"@types/node": "npm:*"
- "@types/send": "npm:*"
- checksum: 10c0/8ad86a25b87da5276cb1008c43c74667ff7583904d46d5fcaf0355887869d859d453d7dc4f890788ae04705c23720e9b6b6f3215e2d1d2a4278bbd090a9268dd
+ "@types/send": "npm:<1"
+ checksum: 10c0/3dc98f41085afbc1ea4768e764b891a6b917f01f0db8a1610a6bc8f0e989015c22af71a05f7b0ae336456169f86e863a60273ddd64c0fa13855ae4ed50ed7789
languageName: node
linkType: hard
@@ -12102,23 +12217,23 @@ __metadata:
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^8.0.0, @typescript-eslint/eslint-plugin@npm:^8.39.0, @typescript-eslint/eslint-plugin@npm:^8.44.0":
- version: 8.44.1
- resolution: "@typescript-eslint/eslint-plugin@npm:8.44.1"
+ version: 8.45.0
+ resolution: "@typescript-eslint/eslint-plugin@npm:8.45.0"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
- "@typescript-eslint/scope-manager": "npm:8.44.1"
- "@typescript-eslint/type-utils": "npm:8.44.1"
- "@typescript-eslint/utils": "npm:8.44.1"
- "@typescript-eslint/visitor-keys": "npm:8.44.1"
+ "@typescript-eslint/scope-manager": "npm:8.45.0"
+ "@typescript-eslint/type-utils": "npm:8.45.0"
+ "@typescript-eslint/utils": "npm:8.45.0"
+ "@typescript-eslint/visitor-keys": "npm:8.45.0"
graphemer: "npm:^1.4.0"
ignore: "npm:^7.0.0"
natural-compare: "npm:^1.4.0"
ts-api-utils: "npm:^2.1.0"
peerDependencies:
- "@typescript-eslint/parser": ^8.44.1
+ "@typescript-eslint/parser": ^8.45.0
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/86d17444c38992a5dc0e45c107a2c2545eb26a1314c2475e7518e4b7645781be4449ec49463667d63aaffaa002e2edacbd2098104cc83e8399e3dd6e0fb6ed51
+ checksum: 10c0/0c60a0e5d07fa8618348db38b5a81e66143d528e1b3cdb5678bbc6c60590cd559b27c98c36f5663230fc4cf6920dff2cd604de30b58df26a37fcfcc5dc1dbd45
languageName: node
linkType: hard
@@ -12141,31 +12256,31 @@ __metadata:
linkType: hard
"@typescript-eslint/parser@npm:^8.0.0, @typescript-eslint/parser@npm:^8.39.0, @typescript-eslint/parser@npm:^8.44.0":
- version: 8.44.1
- resolution: "@typescript-eslint/parser@npm:8.44.1"
+ version: 8.45.0
+ resolution: "@typescript-eslint/parser@npm:8.45.0"
dependencies:
- "@typescript-eslint/scope-manager": "npm:8.44.1"
- "@typescript-eslint/types": "npm:8.44.1"
- "@typescript-eslint/typescript-estree": "npm:8.44.1"
- "@typescript-eslint/visitor-keys": "npm:8.44.1"
+ "@typescript-eslint/scope-manager": "npm:8.45.0"
+ "@typescript-eslint/types": "npm:8.45.0"
+ "@typescript-eslint/typescript-estree": "npm:8.45.0"
+ "@typescript-eslint/visitor-keys": "npm:8.45.0"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/278d7f6a8a686fade0cff372faabb5e114f98ce4032bd991e8905622c720f3a4867b99f7a07897aa2e26311efd8cbb84669059ab57ac99c644b9fbae7564b251
+ checksum: 10c0/8b419bcf795b112a39fcac05dcf147835059345b6399035ffa3f76a9d8e320f3fac79cae2fe4320dcda83fa059b017ca7626a7b4e3da08a614415c8867d169b8
languageName: node
linkType: hard
-"@typescript-eslint/project-service@npm:8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/project-service@npm:8.44.1"
+"@typescript-eslint/project-service@npm:8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/project-service@npm:8.45.0"
dependencies:
- "@typescript-eslint/tsconfig-utils": "npm:^8.44.1"
- "@typescript-eslint/types": "npm:^8.44.1"
+ "@typescript-eslint/tsconfig-utils": "npm:^8.45.0"
+ "@typescript-eslint/types": "npm:^8.45.0"
debug: "npm:^4.3.4"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/2caaa94832574658f1b451d94a319fcd476ad34171e6dff6607da9a5f91387011206487b7743fc71c9c91099632871fa6d209783cbc0a7cb3bac5cbf9d36cdae
+ checksum: 10c0/98af065a1a3ed9d3d1eb265e09d3e9c2ae676d500a8c1d764f5609fe2c1b86749516b709804eb814fae688be7809d11748b9ae691d43c28da51dac390ca81fa9
languageName: node
linkType: hard
@@ -12189,22 +12304,22 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/scope-manager@npm:8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/scope-manager@npm:8.44.1"
+"@typescript-eslint/scope-manager@npm:8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/scope-manager@npm:8.45.0"
dependencies:
- "@typescript-eslint/types": "npm:8.44.1"
- "@typescript-eslint/visitor-keys": "npm:8.44.1"
- checksum: 10c0/a6f3b2d9fbda037327574bb2a7d3831cc100122fe660545a8220e4eed0ee36e42262ce78cc7438dd155100d0abca38edd9e6941e29abe6f8ba7f935223059b89
+ "@typescript-eslint/types": "npm:8.45.0"
+ "@typescript-eslint/visitor-keys": "npm:8.45.0"
+ checksum: 10c0/54cd36206f6b4fc8e1e48576ed01e0d6ab20c2a9c4c7d90d5cc3a2d317dd8a13abe148ffecf471b16f1224aba5749e0905472745626bef9ae5bed771776f4abe
languageName: node
linkType: hard
-"@typescript-eslint/tsconfig-utils@npm:8.44.1, @typescript-eslint/tsconfig-utils@npm:^8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/tsconfig-utils@npm:8.44.1"
+"@typescript-eslint/tsconfig-utils@npm:8.45.0, @typescript-eslint/tsconfig-utils@npm:^8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/tsconfig-utils@npm:8.45.0"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/05fee17cdb38729f82bdfff3bf2844435f5f8e4e55cdaf1bbff72c410ab98a4f9e166011f1eda01f715053d4bc9eb2d8d6c05e9e7114cc08946c4c81785367a0
+ checksum: 10c0/227a9b7a5baaf35466fd369992cb933192515df1156ddf22f438deb344c2523695208e1036f5590b20603f31724de75a47fe0ee84e2fd4c8e9f3606f23f68112
languageName: node
linkType: hard
@@ -12225,19 +12340,19 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@npm:8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/type-utils@npm:8.44.1"
+"@typescript-eslint/type-utils@npm:8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/type-utils@npm:8.45.0"
dependencies:
- "@typescript-eslint/types": "npm:8.44.1"
- "@typescript-eslint/typescript-estree": "npm:8.44.1"
- "@typescript-eslint/utils": "npm:8.44.1"
+ "@typescript-eslint/types": "npm:8.45.0"
+ "@typescript-eslint/typescript-estree": "npm:8.45.0"
+ "@typescript-eslint/utils": "npm:8.45.0"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^2.1.0"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/f17b9ae60327b9187354499d67c2667811ca2b09d436cf6c13b89ba6eaceabd5695f87644a8cb4dc93da5e4188612a6bc7b07b1b022ad75ca360ff2608a64511
+ checksum: 10c0/ce0f4c209c2418ebeb65e7de053499fb68bf6000bdd71068594fdb8c8ac3dbbd62935a3cea233989491f7da3ef5db87e7efd2910133c6abf6d0cbf57248f6442
languageName: node
linkType: hard
@@ -12255,10 +12370,10 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:8.44.1, @typescript-eslint/types@npm:^8.0.0, @typescript-eslint/types@npm:^8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/types@npm:8.44.1"
- checksum: 10c0/cba2d724ac0c7e5a35945aa2f7f8ed96dd5508942e30ec88274dcd2e8fa2c177b0952403c7eb6cacbcc2014224bd36685947d140c093637e3a4e5495c52fbd9f
+"@typescript-eslint/types@npm:8.45.0, @typescript-eslint/types@npm:^8.0.0, @typescript-eslint/types@npm:^8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/types@npm:8.45.0"
+ checksum: 10c0/0213a0573c671d13bc91961a2b2e814ec7f6381ff093bce6704017bd96b2fc7fee25906c815cedb32a0601cf5071ca6c7c5f940d087c3b0d3dd7d4bc03478278
languageName: node
linkType: hard
@@ -12299,14 +12414,14 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/typescript-estree@npm:8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/typescript-estree@npm:8.44.1"
+"@typescript-eslint/typescript-estree@npm:8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/typescript-estree@npm:8.45.0"
dependencies:
- "@typescript-eslint/project-service": "npm:8.44.1"
- "@typescript-eslint/tsconfig-utils": "npm:8.44.1"
- "@typescript-eslint/types": "npm:8.44.1"
- "@typescript-eslint/visitor-keys": "npm:8.44.1"
+ "@typescript-eslint/project-service": "npm:8.45.0"
+ "@typescript-eslint/tsconfig-utils": "npm:8.45.0"
+ "@typescript-eslint/types": "npm:8.45.0"
+ "@typescript-eslint/visitor-keys": "npm:8.45.0"
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
is-glob: "npm:^4.0.3"
@@ -12315,7 +12430,7 @@ __metadata:
ts-api-utils: "npm:^2.1.0"
peerDependencies:
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/cef0827614cf33eab54de2f671c6e6d8cab45286ea4980e8205a7a50504e0c0984f1c12c69c7046ee3aedf29a745f0c823324dcd36c59c81b179517d6de5017f
+ checksum: 10c0/8c2f44a00fe859a6cd4b50157c484c5b6a1c7af5d48e89ae79c5f4924947964962fc8f478ad4c2ade788907fceee9b72d4e376508ea79b51392f91082a37d239
languageName: node
linkType: hard
@@ -12333,18 +12448,18 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:8.44.1, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.0.0":
- version: 8.44.1
- resolution: "@typescript-eslint/utils@npm:8.44.1"
+"@typescript-eslint/utils@npm:8.45.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.0.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/utils@npm:8.45.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.7.0"
- "@typescript-eslint/scope-manager": "npm:8.44.1"
- "@typescript-eslint/types": "npm:8.44.1"
- "@typescript-eslint/typescript-estree": "npm:8.44.1"
+ "@typescript-eslint/scope-manager": "npm:8.45.0"
+ "@typescript-eslint/types": "npm:8.45.0"
+ "@typescript-eslint/typescript-estree": "npm:8.45.0"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <6.0.0"
- checksum: 10c0/5f855c8a18c3112160c04d1d7bad5abee5e4712574d2f75b8a898f4e132e6e0dee3112f98010a1def47bbf0ac2fb05b6e81d343e577d144769a8d685b42b0809
+ checksum: 10c0/b3c83a23813b15e20e303d7153789508c01e06dec355b1a80547c59aa36998d498102f45fcd13f111031fac57270608abb04d20560248d4448fd00b1cf4dc4ab
languageName: node
linkType: hard
@@ -12386,13 +12501,13 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@npm:8.44.1":
- version: 8.44.1
- resolution: "@typescript-eslint/visitor-keys@npm:8.44.1"
+"@typescript-eslint/visitor-keys@npm:8.45.0":
+ version: 8.45.0
+ resolution: "@typescript-eslint/visitor-keys@npm:8.45.0"
dependencies:
- "@typescript-eslint/types": "npm:8.44.1"
+ "@typescript-eslint/types": "npm:8.45.0"
eslint-visitor-keys: "npm:^4.2.1"
- checksum: 10c0/b2b06c9c45b1c27d9fc05805a5d6bac3cf8f17d2ccaa59bd40718e911df474b47b85dbab3494522917d9ba469338246f226b5332c3be2da52636f8a3b842fbf7
+ checksum: 10c0/119adcf50c902dad7f7757bcdd88fad0a23a171d309d9b7cefe78af12e451cf84c04ae611f4c31f7e23f16c2b47665ad92e6e5648fc77d542ef306f465bf1f29
languageName: node
linkType: hard
@@ -13531,13 +13646,6 @@ __metadata:
languageName: node
linkType: hard
-"ansis@npm:^4.0.0":
- version: 4.2.0
- resolution: "ansis@npm:4.2.0"
- checksum: 10c0/cd6a7a681ecd36e72e0d79c1e34f1f3bcb1b15bcbb6f0f8969b4228062d3bfebbef468e09771b00d93b2294370b34f707599d4a113542a876de26823b795b5d2
- languageName: node
- linkType: hard
-
"antlr4ts@npm:^0.5.0-alpha.4":
version: 0.5.0-dev
resolution: "antlr4ts@npm:0.5.0-dev"
@@ -13612,7 +13720,16 @@ __metadata:
languageName: node
linkType: hard
-"aria-query@npm:5.3.2":
+"aria-query@npm:5.3.0":
+ version: 5.3.0
+ resolution: "aria-query@npm:5.3.0"
+ dependencies:
+ dequal: "npm:^2.0.3"
+ checksum: 10c0/2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469
+ languageName: node
+ linkType: hard
+
+"aria-query@npm:5.3.2, aria-query@npm:^5.0.0":
version: 5.3.2
resolution: "aria-query@npm:5.3.2"
checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e
@@ -13889,6 +14006,13 @@ __metadata:
languageName: node
linkType: hard
+"async-generator-function@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "async-generator-function@npm:1.0.0"
+ checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186
+ languageName: node
+ linkType: hard
+
"async-limiter@npm:~1.0.0":
version: 1.0.1
resolution: "async-limiter@npm:1.0.1"
@@ -14269,12 +14393,12 @@ __metadata:
languageName: node
linkType: hard
-"baseline-browser-mapping@npm:^2.8.3":
- version: 2.8.9
- resolution: "baseline-browser-mapping@npm:2.8.9"
+"baseline-browser-mapping@npm:^2.8.9":
+ version: 2.8.11
+ resolution: "baseline-browser-mapping@npm:2.8.11"
bin:
baseline-browser-mapping: dist/cli.js
- checksum: 10c0/c54356eb90cf251f351708f151fa42d0331814c03baa7bdcc802767f721fd9fe069eea88ae42395984bfddcae0c2fba2e5ee25d7921ce7cdcefc2f47440673d4
+ checksum: 10c0/9c345d41152782c20cc11ad0aff273d252d6063efdfc45a602abd8798b50d81deeb89aa3ab6eedd33dce2ad714d16de96783e248f850e95b6063e81cd2ea62ba
languageName: node
linkType: hard
@@ -14560,18 +14684,18 @@ __metadata:
languageName: node
linkType: hard
-"browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0, browserslist@npm:^4.24.0, browserslist@npm:^4.24.4, browserslist@npm:^4.25.3":
- version: 4.26.2
- resolution: "browserslist@npm:4.26.2"
+"browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0, browserslist@npm:^4.24.0, browserslist@npm:^4.24.4, browserslist@npm:^4.24.5, browserslist@npm:^4.25.3":
+ version: 4.26.3
+ resolution: "browserslist@npm:4.26.3"
dependencies:
- baseline-browser-mapping: "npm:^2.8.3"
- caniuse-lite: "npm:^1.0.30001741"
- electron-to-chromium: "npm:^1.5.218"
+ baseline-browser-mapping: "npm:^2.8.9"
+ caniuse-lite: "npm:^1.0.30001746"
+ electron-to-chromium: "npm:^1.5.227"
node-releases: "npm:^2.0.21"
update-browserslist-db: "npm:^1.1.3"
bin:
browserslist: cli.js
- checksum: 10c0/1146339dad33fda77786b11ea07f1c40c48899edd897d73a9114ee0dbb1ee6475bb4abda263a678c104508bdca8e66760ff8e10be1947d3e20d34bae01d8b89b
+ checksum: 10c0/3899ee3b7fd205ece4ffe4392697c3f2b120b68f3741ef1789212b4971771aee3f66cf37c5c3accf86ce59c0605b5980c0f132711abbcc9e62c132e6e0ee45f3
languageName: node
linkType: hard
@@ -14820,10 +14944,10 @@ __metadata:
languageName: node
linkType: hard
-"caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001741":
- version: 1.0.30001745
- resolution: "caniuse-lite@npm:1.0.30001745"
- checksum: 10c0/646ca4b57baaa7a835cf7204c8a257490ee8e36364c04638212e3750c5e8ef45c39f352307e6205114487bcc179d42f5216f6dac146641b16a60b20b29d6f2a6
+"caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001746":
+ version: 1.0.30001747
+ resolution: "caniuse-lite@npm:1.0.30001747"
+ checksum: 10c0/cef0c7fff34d4c0ac3edc33660f07785301c98858bb4a6b8702b7b09ca2b0fd5457a7772af7b9fc3591fdd13862f649e57eed824f4cb6cf4aedf563e58fc7d0c
languageName: node
linkType: hard
@@ -16097,6 +16221,13 @@ __metadata:
languageName: node
linkType: hard
+"css.escape@npm:^1.5.1":
+ version: 1.5.1
+ resolution: "css.escape@npm:1.5.1"
+ checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525
+ languageName: node
+ linkType: hard
+
"cssesc@npm:^3.0.0":
version: 3.0.0
resolution: "cssesc@npm:3.0.0"
@@ -16465,6 +16596,13 @@ __metadata:
languageName: node
linkType: hard
+"dequal@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "dequal@npm:2.0.3"
+ checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888
+ languageName: node
+ linkType: hard
+
"destroy@npm:1.2.0":
version: 1.2.0
resolution: "destroy@npm:1.2.0"
@@ -16617,6 +16755,13 @@ __metadata:
languageName: node
linkType: hard
+"dom-accessibility-api@npm:^0.6.3":
+ version: 0.6.3
+ resolution: "dom-accessibility-api@npm:0.6.3"
+ checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360
+ languageName: node
+ linkType: hard
+
"dom-serializer@npm:^2.0.0":
version: 2.0.0
resolution: "dom-serializer@npm:2.0.0"
@@ -16761,10 +16906,10 @@ __metadata:
languageName: node
linkType: hard
-"electron-to-chromium@npm:^1.5.218":
- version: 1.5.227
- resolution: "electron-to-chromium@npm:1.5.227"
- checksum: 10c0/6b220ea024bcdd1560ffaca6b6b4c220d789b3e9c580c37509e8c176f369c93a4de8497a6e25cbfd9619ab9d129069368e4a4317dec0335d3a0cb61c2353e6f1
+"electron-to-chromium@npm:^1.5.227":
+ version: 1.5.230
+ resolution: "electron-to-chromium@npm:1.5.230"
+ checksum: 10c0/b8bf382868b2780fa0c7ba3bce0644e94ec21af8f9b199ee094273904a575b46c8705fa4c10a22a0ed90e42dbbf72efbc3089bbecf8324a9db099c8c6c1c1101
languageName: node
linkType: hard
@@ -19249,7 +19394,7 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^9.0.0, fs-extra@npm:^9.1.0":
+"fs-extra@npm:^9.1.0":
version: 9.1.0
resolution: "fs-extra@npm:9.1.0"
dependencies:
@@ -19354,6 +19499,13 @@ __metadata:
languageName: node
linkType: hard
+"generator-function@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "generator-function@npm:2.0.1"
+ checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8
+ languageName: node
+ linkType: hard
+
"gensync@npm:^1.0.0-beta.2":
version: 1.0.0-beta.2
resolution: "gensync@npm:1.0.0-beta.2"
@@ -19383,20 +19535,23 @@ __metadata:
linkType: hard
"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
- version: 1.3.0
- resolution: "get-intrinsic@npm:1.3.0"
+ version: 1.3.1
+ resolution: "get-intrinsic@npm:1.3.1"
dependencies:
+ async-function: "npm:^1.0.0"
+ async-generator-function: "npm:^1.0.0"
call-bind-apply-helpers: "npm:^1.0.2"
es-define-property: "npm:^1.0.1"
es-errors: "npm:^1.3.0"
es-object-atoms: "npm:^1.1.1"
function-bind: "npm:^1.1.2"
+ generator-function: "npm:^2.0.0"
get-proto: "npm:^1.0.1"
gopd: "npm:^1.2.0"
has-symbols: "npm:^1.1.0"
hasown: "npm:^2.0.2"
math-intrinsics: "npm:^1.1.0"
- checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a
+ checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d
languageName: node
linkType: hard
@@ -19523,11 +19678,11 @@ __metadata:
linkType: hard
"glob-to-regex.js@npm:^1.0.1":
- version: 1.0.1
- resolution: "glob-to-regex.js@npm:1.0.1"
+ version: 1.2.0
+ resolution: "glob-to-regex.js@npm:1.2.0"
peerDependencies:
tslib: 2
- checksum: 10c0/d8f62efd63405f880bbcf902019485462ab0a93ca707161babb204bd5df144b45961218bba04074750587c1182d3fd77d527495cca735579ac9cc58dfe63e814
+ checksum: 10c0/011c81ae2a4d7ac5fd617038209fd9639d54c76211cc88fe8dd85d1a0850bc683a63cf5b1eae370141fca7dd2c834dfb9684dfdd8bf7472f2c1e4ef6ab6e34f9
languageName: node
linkType: hard
@@ -20818,14 +20973,15 @@ __metadata:
linkType: hard
"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7":
- version: 1.1.0
- resolution: "is-generator-function@npm:1.1.0"
+ version: 1.1.2
+ resolution: "is-generator-function@npm:1.1.2"
dependencies:
- call-bound: "npm:^1.0.3"
- get-proto: "npm:^1.0.0"
+ call-bound: "npm:^1.0.4"
+ generator-function: "npm:^2.0.0"
+ get-proto: "npm:^1.0.1"
has-tostringtag: "npm:^1.0.2"
safe-regex-test: "npm:^1.1.0"
- checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a
+ checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372
languageName: node
linkType: hard
@@ -21807,11 +21963,11 @@ __metadata:
linkType: hard
"jiti@npm:^2.4.2, jiti@npm:^2.6.0":
- version: 2.6.0
- resolution: "jiti@npm:2.6.0"
+ version: 2.6.1
+ resolution: "jiti@npm:2.6.1"
bin:
jiti: lib/jiti-cli.mjs
- checksum: 10c0/5002ccecdb02e85413e5bfe3819a5ac458dcce12b358c556b6cf17b5b6cbedd36514f6a67d4aa2b290caa2b933406502a1985d0bfee784ece788e90a0392d534
+ checksum: 10c0/79b2e96a8e623f66c1b703b98ec1b8be4500e1d217e09b09e343471bbb9c105381b83edbb979d01cef18318cc45ce6e153571b6c83122170eefa531c64b6789b
languageName: node
linkType: hard
@@ -23080,8 +23236,8 @@ __metadata:
linkType: hard
"memfs@npm:^4.43.1, memfs@npm:^4.6.0":
- version: 4.47.0
- resolution: "memfs@npm:4.47.0"
+ version: 4.48.1
+ resolution: "memfs@npm:4.48.1"
dependencies:
"@jsonjoy.com/json-pack": "npm:^1.11.0"
"@jsonjoy.com/util": "npm:^1.9.0"
@@ -23089,7 +23245,7 @@ __metadata:
thingies: "npm:^2.5.0"
tree-dump: "npm:^1.0.3"
tslib: "npm:^2.0.0"
- checksum: 10c0/2c8094d9fe34422b8d1ceaa1e8bb2afde80d1497649cb63d6f2a09f542cfb2eec8a34a417dfdbb85c84f89dc67eadcf23e41c49814f2f73b260bbc5c7c662d0b
+ checksum: 10c0/3053b03a69acff1681e8570790c7cf75be823b05b5cd28473710c28cb385e3b8643b6727068f355f262e71974d39213687ed33a38fc82c01134dfee8ecbcae19
languageName: node
linkType: hard
@@ -23819,9 +23975,14 @@ __metadata:
"@react-native/metro-config": "npm:0.76.9"
"@selfxyz/common": "workspace:*"
"@selfxyz/mobile-sdk-alpha": "workspace:*"
+ "@testing-library/dom": "npm:^10.4.1"
+ "@testing-library/jest-dom": "npm:^6.6.3"
+ "@testing-library/react": "npm:^16.1.0"
+ "@testing-library/user-event": "npm:^14.5.2"
"@tsconfig/react-native": "npm:^3.0.6"
"@types/node": "npm:^22.18.3"
"@types/react": "npm:^18.3.4"
+ "@types/react-dom": "npm:^18.3.0"
"@types/react-native-vector-icons": "npm:^6.4.18"
"@typescript-eslint/eslint-plugin": "npm:^8.44.0"
"@typescript-eslint/parser": "npm:^8.44.0"
@@ -23842,6 +24003,7 @@ __metadata:
metro-react-native-babel-preset: "npm:0.76.9"
prettier: "npm:^3.6.2"
react: "npm:^18.3.1"
+ react-dom: "npm:^18.3.1"
react-native: "npm:0.76.9"
react-native-get-random-values: "npm:^1.11.0"
react-native-keychain: "npm:^10.0.0"
@@ -24380,9 +24542,9 @@ __metadata:
linkType: hard
"node-releases@npm:^2.0.21":
- version: 2.0.21
- resolution: "node-releases@npm:2.0.21"
- checksum: 10c0/0eb94916eeebbda9d51da6a9ea47428a12b2bb0dd94930c949632b0c859356abf53b2e5a2792021f96c5fda4f791a8e195f2375b78ae7dba8d8bc3141baa1469
+ version: 2.0.23
+ resolution: "node-releases@npm:2.0.23"
+ checksum: 10c0/3fdcddb574a9d56c050469b027f3fd2b8830fd321edd12f34b862969b67d0a3d6713eb2af8916f91618d555354f6c7bd33ae39e3b37117b1e7ddf2e42bc3f4be
languageName: node
linkType: hard
@@ -24934,29 +25096,28 @@ __metadata:
linkType: hard
"oxc-resolver@npm:^11.8.3":
- version: 11.8.4
- resolution: "oxc-resolver@npm:11.8.4"
- dependencies:
- "@oxc-resolver/binding-android-arm-eabi": "npm:11.8.4"
- "@oxc-resolver/binding-android-arm64": "npm:11.8.4"
- "@oxc-resolver/binding-darwin-arm64": "npm:11.8.4"
- "@oxc-resolver/binding-darwin-x64": "npm:11.8.4"
- "@oxc-resolver/binding-freebsd-x64": "npm:11.8.4"
- "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:11.8.4"
- "@oxc-resolver/binding-linux-arm-musleabihf": "npm:11.8.4"
- "@oxc-resolver/binding-linux-arm64-gnu": "npm:11.8.4"
- "@oxc-resolver/binding-linux-arm64-musl": "npm:11.8.4"
- "@oxc-resolver/binding-linux-ppc64-gnu": "npm:11.8.4"
- "@oxc-resolver/binding-linux-riscv64-gnu": "npm:11.8.4"
- "@oxc-resolver/binding-linux-riscv64-musl": "npm:11.8.4"
- "@oxc-resolver/binding-linux-s390x-gnu": "npm:11.8.4"
- "@oxc-resolver/binding-linux-x64-gnu": "npm:11.8.4"
- "@oxc-resolver/binding-linux-x64-musl": "npm:11.8.4"
- "@oxc-resolver/binding-wasm32-wasi": "npm:11.8.4"
- "@oxc-resolver/binding-win32-arm64-msvc": "npm:11.8.4"
- "@oxc-resolver/binding-win32-ia32-msvc": "npm:11.8.4"
- "@oxc-resolver/binding-win32-x64-msvc": "npm:11.8.4"
- napi-postinstall: "npm:^0.3.0"
+ version: 11.9.0
+ resolution: "oxc-resolver@npm:11.9.0"
+ dependencies:
+ "@oxc-resolver/binding-android-arm-eabi": "npm:11.9.0"
+ "@oxc-resolver/binding-android-arm64": "npm:11.9.0"
+ "@oxc-resolver/binding-darwin-arm64": "npm:11.9.0"
+ "@oxc-resolver/binding-darwin-x64": "npm:11.9.0"
+ "@oxc-resolver/binding-freebsd-x64": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-arm-musleabihf": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-arm64-gnu": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-arm64-musl": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-ppc64-gnu": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-riscv64-gnu": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-riscv64-musl": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-s390x-gnu": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-x64-gnu": "npm:11.9.0"
+ "@oxc-resolver/binding-linux-x64-musl": "npm:11.9.0"
+ "@oxc-resolver/binding-wasm32-wasi": "npm:11.9.0"
+ "@oxc-resolver/binding-win32-arm64-msvc": "npm:11.9.0"
+ "@oxc-resolver/binding-win32-ia32-msvc": "npm:11.9.0"
+ "@oxc-resolver/binding-win32-x64-msvc": "npm:11.9.0"
dependenciesMeta:
"@oxc-resolver/binding-android-arm-eabi":
optional: true
@@ -24996,7 +25157,7 @@ __metadata:
optional: true
"@oxc-resolver/binding-win32-x64-msvc":
optional: true
- checksum: 10c0/986a4c12175a35ca646ac33417a209b108829c0944517832aace1f3bc111b9e84fba917a3a18dd55839b0d555b71eb60ca0096f5fc29ba274bfd9857fd4afc2d
+ checksum: 10c0/5a6c3381dd190c003cf07e8020684e9818ffd7fb4e75f4ec171fcc537037c55a28a84980c4949b209ba4f29d7c93aaa57a652287bede5d1dc31d58ebda123431
languageName: node
linkType: hard
@@ -25286,27 +25447,26 @@ __metadata:
linkType: hard
"patch-package@npm:^8.0.0":
- version: 8.0.0
- resolution: "patch-package@npm:8.0.0"
+ version: 8.0.1
+ resolution: "patch-package@npm:8.0.1"
dependencies:
"@yarnpkg/lockfile": "npm:^1.1.0"
chalk: "npm:^4.1.2"
ci-info: "npm:^3.7.0"
cross-spawn: "npm:^7.0.3"
find-yarn-workspace-root: "npm:^2.0.0"
- fs-extra: "npm:^9.0.0"
+ fs-extra: "npm:^10.0.0"
json-stable-stringify: "npm:^1.0.2"
klaw-sync: "npm:^6.0.0"
minimist: "npm:^1.2.6"
open: "npm:^7.4.2"
- rimraf: "npm:^2.6.3"
semver: "npm:^7.5.3"
slash: "npm:^2.0.0"
- tmp: "npm:^0.0.33"
+ tmp: "npm:^0.2.4"
yaml: "npm:^2.2.2"
bin:
patch-package: index.js
- checksum: 10c0/690eab0537e953a3fd7d32bb23f0e82f97cd448f8244c3227ed55933611a126f9476397325c06ad2c11d881a19b427a02bd1881bee78d89f1731373fc4fe0fee
+ checksum: 10c0/6dd7cdd8b814902f1a66bc9082bd5a5a484956563538a694ff1de2e7f4cc14a13480739f5f04e0d1747395d6f1b651eb1ddbc39687ce5ff8a3927f212cffd2ac
languageName: node
linkType: hard
@@ -25456,7 +25616,7 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1":
+"picocolors@npm:1.1.1, picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
@@ -26286,9 +26446,9 @@ __metadata:
linkType: hard
"react-is@npm:^19.1.0":
- version: 19.1.1
- resolution: "react-is@npm:19.1.1"
- checksum: 10c0/3dba763fcd69835ae263dcd6727d7ffcc44c1d616f04b7329e67aefdc66a567af4f8dcecdd29454c7a707c968aa1eb85083a83fb616f01675ef25e71cf082f97
+ version: 19.2.0
+ resolution: "react-is@npm:19.2.0"
+ checksum: 10c0/a63cb346aeced8ac0e671b0f9b33720d2906de02a066ca067075d871a5d4c64cdb328f495baf9b5842d5868c0d5edd1ce18465a7358b52f4b6aa983479c9bfa2
languageName: node
linkType: hard
@@ -26680,15 +26840,15 @@ __metadata:
linkType: hard
"react-qr-barcode-scanner@npm:^2.1.8":
- version: 2.1.14
- resolution: "react-qr-barcode-scanner@npm:2.1.14"
+ version: 2.1.15
+ resolution: "react-qr-barcode-scanner@npm:2.1.15"
dependencies:
"@zxing/library": "npm:^0.21.3"
react-webcam: "npm:^7.2.0"
peerDependencies:
react: ">=18.0.0"
react-dom: ">=18.0.0"
- checksum: 10c0/c185d3690da505c080c3e25dc143649dd2b9d21bb5b8a47cd20ab978fbcd4906edc4439e05b745b9721ae88c3bdc06903c18b364ff22f40208095f64928447ed
+ checksum: 10c0/85f08562c5b43de79f9b87ae213ba724100d32dcbe6102795dee0e629e157f1f101c42b1e064ed396f5cece3bb4c5e2e80e28f105e13b2739e7f65bdd383726d
languageName: node
linkType: hard
@@ -27271,17 +27431,6 @@ __metadata:
languageName: node
linkType: hard
-"rimraf@npm:^2.6.3":
- version: 2.7.1
- resolution: "rimraf@npm:2.7.1"
- dependencies:
- glob: "npm:^7.1.3"
- bin:
- rimraf: ./bin.js
- checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40
- languageName: node
- linkType: hard
-
"rimraf@npm:^3.0.2":
version: 3.0.2
resolution: "rimraf@npm:3.0.2"
@@ -27325,62 +27474,6 @@ __metadata:
languageName: node
linkType: hard
-"rolldown@npm:1.0.0-beta.38":
- version: 1.0.0-beta.38
- resolution: "rolldown@npm:1.0.0-beta.38"
- dependencies:
- "@oxc-project/types": "npm:=0.89.0"
- "@rolldown/binding-android-arm64": "npm:1.0.0-beta.38"
- "@rolldown/binding-darwin-arm64": "npm:1.0.0-beta.38"
- "@rolldown/binding-darwin-x64": "npm:1.0.0-beta.38"
- "@rolldown/binding-freebsd-x64": "npm:1.0.0-beta.38"
- "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-beta.38"
- "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-beta.38"
- "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-beta.38"
- "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-beta.38"
- "@rolldown/binding-linux-x64-musl": "npm:1.0.0-beta.38"
- "@rolldown/binding-openharmony-arm64": "npm:1.0.0-beta.38"
- "@rolldown/binding-wasm32-wasi": "npm:1.0.0-beta.38"
- "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-beta.38"
- "@rolldown/binding-win32-ia32-msvc": "npm:1.0.0-beta.38"
- "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-beta.38"
- "@rolldown/pluginutils": "npm:1.0.0-beta.38"
- ansis: "npm:^4.0.0"
- dependenciesMeta:
- "@rolldown/binding-android-arm64":
- optional: true
- "@rolldown/binding-darwin-arm64":
- optional: true
- "@rolldown/binding-darwin-x64":
- optional: true
- "@rolldown/binding-freebsd-x64":
- optional: true
- "@rolldown/binding-linux-arm-gnueabihf":
- optional: true
- "@rolldown/binding-linux-arm64-gnu":
- optional: true
- "@rolldown/binding-linux-arm64-musl":
- optional: true
- "@rolldown/binding-linux-x64-gnu":
- optional: true
- "@rolldown/binding-linux-x64-musl":
- optional: true
- "@rolldown/binding-openharmony-arm64":
- optional: true
- "@rolldown/binding-wasm32-wasi":
- optional: true
- "@rolldown/binding-win32-arm64-msvc":
- optional: true
- "@rolldown/binding-win32-ia32-msvc":
- optional: true
- "@rolldown/binding-win32-x64-msvc":
- optional: true
- bin:
- rolldown: bin/cli.mjs
- checksum: 10c0/5c77fe444585d9d06c2383dbb0480e9ef4c8c565c8f87119f8ee8d7f9e63df749eb24f3342c66273510635fd32aedda7cbad94f4c40c9ffed2e9e76097c0961e
- languageName: node
- linkType: hard
-
"rollup-plugin-dts@npm:^6.2.0":
version: 6.2.3
resolution: "rollup-plugin-dts@npm:6.2.3"
@@ -27398,8 +27491,8 @@ __metadata:
linkType: hard
"rollup-plugin-visualizer@npm:^6.0.3":
- version: 6.0.3
- resolution: "rollup-plugin-visualizer@npm:6.0.3"
+ version: 6.0.4
+ resolution: "rollup-plugin-visualizer@npm:6.0.4"
dependencies:
open: "npm:^8.0.0"
picomatch: "npm:^4.0.2"
@@ -27415,11 +27508,11 @@ __metadata:
optional: true
bin:
rollup-plugin-visualizer: dist/bin/cli.js
- checksum: 10c0/595d68936a6338744e8facd165fceedf7f2ebedc44863e640e725198001ed62948cc4a5d8403aa74e679de92957e4def3b1dffc4a9f8de71e4245929566553a3
+ checksum: 10c0/e5d472bec0c863c9c3c46f55b303a9457e854bf1b654215e727a586da12897e2cfc30029f029c6c44dd8e9e61ce0d22f113a68ed8e5fe2256abeb58f265c0a89
languageName: node
linkType: hard
-"rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.34.8, rollup@npm:^4.43.0":
+"rollup@npm:4.52.3":
version: 4.52.3
resolution: "rollup@npm:4.52.3"
dependencies:
@@ -27500,6 +27593,87 @@ __metadata:
languageName: node
linkType: hard
+"rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.34.8, rollup@npm:^4.43.0":
+ version: 4.52.4
+ resolution: "rollup@npm:4.52.4"
+ dependencies:
+ "@rollup/rollup-android-arm-eabi": "npm:4.52.4"
+ "@rollup/rollup-android-arm64": "npm:4.52.4"
+ "@rollup/rollup-darwin-arm64": "npm:4.52.4"
+ "@rollup/rollup-darwin-x64": "npm:4.52.4"
+ "@rollup/rollup-freebsd-arm64": "npm:4.52.4"
+ "@rollup/rollup-freebsd-x64": "npm:4.52.4"
+ "@rollup/rollup-linux-arm-gnueabihf": "npm:4.52.4"
+ "@rollup/rollup-linux-arm-musleabihf": "npm:4.52.4"
+ "@rollup/rollup-linux-arm64-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-arm64-musl": "npm:4.52.4"
+ "@rollup/rollup-linux-loong64-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-ppc64-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-riscv64-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-riscv64-musl": "npm:4.52.4"
+ "@rollup/rollup-linux-s390x-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-x64-gnu": "npm:4.52.4"
+ "@rollup/rollup-linux-x64-musl": "npm:4.52.4"
+ "@rollup/rollup-openharmony-arm64": "npm:4.52.4"
+ "@rollup/rollup-win32-arm64-msvc": "npm:4.52.4"
+ "@rollup/rollup-win32-ia32-msvc": "npm:4.52.4"
+ "@rollup/rollup-win32-x64-gnu": "npm:4.52.4"
+ "@rollup/rollup-win32-x64-msvc": "npm:4.52.4"
+ "@types/estree": "npm:1.0.8"
+ fsevents: "npm:~2.3.2"
+ dependenciesMeta:
+ "@rollup/rollup-android-arm-eabi":
+ optional: true
+ "@rollup/rollup-android-arm64":
+ optional: true
+ "@rollup/rollup-darwin-arm64":
+ optional: true
+ "@rollup/rollup-darwin-x64":
+ optional: true
+ "@rollup/rollup-freebsd-arm64":
+ optional: true
+ "@rollup/rollup-freebsd-x64":
+ optional: true
+ "@rollup/rollup-linux-arm-gnueabihf":
+ optional: true
+ "@rollup/rollup-linux-arm-musleabihf":
+ optional: true
+ "@rollup/rollup-linux-arm64-gnu":
+ optional: true
+ "@rollup/rollup-linux-arm64-musl":
+ optional: true
+ "@rollup/rollup-linux-loong64-gnu":
+ optional: true
+ "@rollup/rollup-linux-ppc64-gnu":
+ optional: true
+ "@rollup/rollup-linux-riscv64-gnu":
+ optional: true
+ "@rollup/rollup-linux-riscv64-musl":
+ optional: true
+ "@rollup/rollup-linux-s390x-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-gnu":
+ optional: true
+ "@rollup/rollup-linux-x64-musl":
+ optional: true
+ "@rollup/rollup-openharmony-arm64":
+ optional: true
+ "@rollup/rollup-win32-arm64-msvc":
+ optional: true
+ "@rollup/rollup-win32-ia32-msvc":
+ optional: true
+ "@rollup/rollup-win32-x64-gnu":
+ optional: true
+ "@rollup/rollup-win32-x64-msvc":
+ optional: true
+ fsevents:
+ optional: true
+ bin:
+ rollup: dist/bin/rollup
+ checksum: 10c0/aaec0f57e887d4fb37d152f93cf7133954eec79d11643e95de768ec9a377f08793b1745c648ca65a0dcc6c795c4d9ca398724d013e5745de270e88a543782aea
+ languageName: node
+ linkType: hard
+
"router@npm:^2.2.0":
version: 2.2.0
resolution: "router@npm:2.2.0"
@@ -27726,14 +27900,14 @@ __metadata:
linkType: hard
"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0, schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.2":
- version: 4.3.2
- resolution: "schema-utils@npm:4.3.2"
+ version: 4.3.3
+ resolution: "schema-utils@npm:4.3.3"
dependencies:
"@types/json-schema": "npm:^7.0.9"
ajv: "npm:^8.9.0"
ajv-formats: "npm:^2.1.1"
ajv-keywords: "npm:^5.1.0"
- checksum: 10c0/981632f9bf59f35b15a9bcdac671dd183f4946fe4b055ae71a301e66a9797b95e5dd450de581eb6cca56fb6583ce8f24d67b2d9f8e1b2936612209697f6c277e
+ checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202
languageName: node
linkType: hard
@@ -29357,10 +29531,10 @@ __metadata:
languageName: node
linkType: hard
-"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1":
- version: 2.2.3
- resolution: "tapable@npm:2.2.3"
- checksum: 10c0/e57fd8e2d756c317f8726a1bec8f2c904bc42e37fcbd4a78211daeab89f42c734b6a20e61774321f47be9a421da628a0c78b62d36c5ed186f4d5232d09ae15f2
+"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1, tapable@npm:^2.2.3":
+ version: 2.3.0
+ resolution: "tapable@npm:2.3.0"
+ checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681
languageName: node
linkType: hard
@@ -29700,7 +29874,7 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:0.0.33, tmp@npm:^0.0.33":
+"tmp@npm:0.0.33":
version: 0.0.33
resolution: "tmp@npm:0.0.33"
dependencies:
@@ -29709,7 +29883,7 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:^0.2.0":
+"tmp@npm:^0.2.0, tmp@npm:^0.2.4":
version: 0.2.5
resolution: "tmp@npm:0.2.5"
checksum: 10c0/cee5bb7d674bb4ba3ab3f3841c2ca7e46daeb2109eec395c1ec7329a91d52fcb21032b79ac25161a37b2565c4858fefab927af9735926a113ef7bac9091a6e0e
@@ -30343,12 +30517,12 @@ __metadata:
linkType: hard
"typescript@npm:^5.8.2, typescript@npm:^5.9.2, typescript@npm:~5.9.0":
- version: 5.9.2
- resolution: "typescript@npm:5.9.2"
+ version: 5.9.3
+ resolution: "typescript@npm:5.9.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18
+ checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
languageName: node
linkType: hard
@@ -30363,12 +30537,12 @@ __metadata:
linkType: hard
"typescript@patch:typescript@npm%3A^5.8.2#optional!builtin, typescript@patch:typescript@npm%3A^5.9.2#optional!builtin, typescript@patch:typescript@npm%3A~5.9.0#optional!builtin":
- version: 5.9.2
- resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"
+ version: 5.9.3
+ resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e
+ checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
languageName: node
linkType: hard
@@ -30676,11 +30850,11 @@ __metadata:
linkType: hard
"use-sync-external-store@npm:^1.2.0, use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.5.0":
- version: 1.5.0
- resolution: "use-sync-external-store@npm:1.5.0"
+ version: 1.6.0
+ resolution: "use-sync-external-store@npm:1.6.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- checksum: 10c0/1b8663515c0be34fa653feb724fdcce3984037c78dd4a18f68b2c8be55cc1a1084c578d5b75f158d41b5ddffc2bf5600766d1af3c19c8e329bb20af2ec6f52f4
+ checksum: 10c0/35e1179f872a53227bdf8a827f7911da4c37c0f4091c29b76b1e32473d1670ebe7bcd880b808b7549ba9a5605c233350f800ffab963ee4a4ee346ee983b6019b
languageName: node
linkType: hard
@@ -30952,8 +31126,8 @@ __metadata:
linkType: hard
"vite@npm:^7.0.0":
- version: 7.1.7
- resolution: "vite@npm:7.1.7"
+ version: 7.1.9
+ resolution: "vite@npm:7.1.9"
dependencies:
esbuild: "npm:^0.25.0"
fdir: "npm:^6.5.0"
@@ -31002,7 +31176,7 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
- checksum: 10c0/3f6bd61a65aaa81368f4dda804f0e23b103664724218ccb5a0b1a0c7e284df498107b57ced951dc40ae4c5d472435bc8fb5c836414e729ee7e102809eaf6ff80
+ checksum: 10c0/f628f903a137c1410232558bde99c223ea00a090bda6af77752c61f912955f0050aac12d3cfe024d08a0f150ff6fab61b3d0be75d634a59b94d49f525392e1f7
languageName: node
linkType: hard
@@ -31203,7 +31377,7 @@ __metadata:
languageName: node
linkType: hard
-"watchpack@npm:2.4.4, watchpack@npm:^2.4.1":
+"watchpack@npm:2.4.4, watchpack@npm:^2.4.1, watchpack@npm:^2.4.4":
version: 2.4.4
resolution: "watchpack@npm:2.4.4"
dependencies:
@@ -31451,8 +31625,8 @@ __metadata:
linkType: hard
"webpack@npm:^5.95.0, webpack@npm:^5.98.0":
- version: 5.101.3
- resolution: "webpack@npm:5.101.3"
+ version: 5.102.0
+ resolution: "webpack@npm:5.102.0"
dependencies:
"@types/eslint-scope": "npm:^3.7.7"
"@types/estree": "npm:^1.0.8"
@@ -31462,7 +31636,7 @@ __metadata:
"@webassemblyjs/wasm-parser": "npm:^1.14.1"
acorn: "npm:^8.15.0"
acorn-import-phases: "npm:^1.0.3"
- browserslist: "npm:^4.24.0"
+ browserslist: "npm:^4.24.5"
chrome-trace-event: "npm:^1.0.2"
enhanced-resolve: "npm:^5.17.3"
es-module-lexer: "npm:^1.2.1"
@@ -31475,16 +31649,16 @@ __metadata:
mime-types: "npm:^2.1.27"
neo-async: "npm:^2.6.2"
schema-utils: "npm:^4.3.2"
- tapable: "npm:^2.1.1"
+ tapable: "npm:^2.2.3"
terser-webpack-plugin: "npm:^5.3.11"
- watchpack: "npm:^2.4.1"
+ watchpack: "npm:^2.4.4"
webpack-sources: "npm:^3.3.3"
peerDependenciesMeta:
webpack-cli:
optional: true
bin:
webpack: bin/webpack.js
- checksum: 10c0/3c204d4f1df0ef2774ae043f62e4db56c11b7a0594e82fbb1fbbaf69893570f3bf08a8b5d2d5a0302ce6346132bf3eb9dbde81e4fab3d68307b2e506d606f064
+ checksum: 10c0/da8f18a5a4b2284d8f3bae0639cd46798d9b0949c48908680b5798125e57fa4898e80155cc367c9758d444d1251df57b2c76fd6c0988dd95ffc89df3bb712f89
languageName: node
linkType: hard
@@ -31892,9 +32066,9 @@ __metadata:
linkType: hard
"xstate@npm:^5.20.2":
- version: 5.22.0
- resolution: "xstate@npm:5.22.0"
- checksum: 10c0/247d589c0dfd61161747e5ef4c8f06345add346f74355d65ed417a3ae81165defb4d18cbe5456c2f73dfc99cd7019d312f88200becc955543b935fb21cf0a1ea
+ version: 5.22.1
+ resolution: "xstate@npm:5.22.1"
+ checksum: 10c0/d219bcb24c2d3e3310778dd3d14177c67922e0bd070e8d150d4775c56672540ddb3de229c314d48166d8c9b77e01eab3b729461282460a956511344ffd0ce628
languageName: node
linkType: hard