diff --git a/.gitignore b/.gitignore
index 5c98531ed..7ac75d6c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,8 @@ package-lock.json
# testing
/coverage
+/playwright-report
+/test-results
# next.js
next-env.d.ts
diff --git a/cypress.config.ts b/cypress.config.ts
deleted file mode 100644
index c1100467d..000000000
--- a/cypress.config.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineConfig } from 'cypress';
-
-export default defineConfig({
- e2e: {
- baseUrl: 'http://localhost:3000',
- },
- // default username / password on init
- env: {
- umami_user: 'admin',
- umami_password: 'umami',
- umami_user_id: '41e2b680-648e-4b09-bcd7-3e2b10c06264',
- },
-});
diff --git a/cypress/docker-compose.yml b/cypress/docker-compose.yml
deleted file mode 100644
index 01a47bd8c..000000000
--- a/cypress/docker-compose.yml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-version: '3'
-services:
- umami:
- build: ../
- #image: ghcr.io/umami-software/umami:postgresql-latest
- ports:
- - '3000:3000'
- environment:
- DATABASE_URL: postgresql://umami:umami@db:5432/umami
- DATABASE_TYPE: postgresql
- APP_SECRET: replace-me-with-a-random-string
- depends_on:
- db:
- condition: service_healthy
- restart: always
- healthcheck:
- test: ['CMD-SHELL', 'curl http://localhost:3000/api/heartbeat']
- interval: 5s
- timeout: 5s
- retries: 5
- db:
- image: postgres:15-alpine
- environment:
- POSTGRES_DB: umami
- POSTGRES_USER: umami
- POSTGRES_PASSWORD: umami
- volumes:
- - umami-db-data:/var/lib/postgresql/data
- restart: always
- healthcheck:
- test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
- interval: 5s
- timeout: 5s
- retries: 5
- cypress:
- image: 'cypress/included:13.6.0'
- depends_on:
- - umami
- - db
- environment:
- - CYPRESS_baseUrl=http://umami:3000
- - CYPRESS_umami_user=admin
- - CYPRESS_umami_password=umami
- volumes:
- - ./tsconfig.json:/tsconfig.json
- - ../cypress.config.ts:/cypress.config.ts
- - ./:/cypress
- - ../node_modules/:/node_modules
- - ../src/lib/crypto.ts:/src/lib/crypto.ts
-volumes:
- umami-db-data:
diff --git a/cypress/e2e/api-team.cy.ts b/cypress/e2e/api-team.cy.ts
deleted file mode 100644
index 22811130f..000000000
--- a/cypress/e2e/api-team.cy.ts
+++ /dev/null
@@ -1,209 +0,0 @@
-describe('Team API tests', () => {
- Cypress.session.clearAllSavedSessions();
-
- let teamId;
- let userId;
-
- before(() => {
- cy.login(Cypress.env('umami_user'), Cypress.env('umami_password'));
- cy.fixture('users').then(data => {
- const userCreate = data.userCreate;
- cy.request({
- method: 'POST',
- url: '/api/users',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: userCreate,
- }).then(response => {
- userId = response.body.id;
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('username', 'cypress1');
- expect(response.body).to.have.property('role', 'user');
- });
- });
- });
-
- it('Creates a team.', () => {
- cy.fixture('teams').then(data => {
- const teamCreate = data.teamCreate;
- cy.request({
- method: 'POST',
- url: '/api/teams',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: teamCreate,
- }).then(response => {
- teamId = response.body[0].id;
- expect(response.status).to.eq(200);
- expect(response.body[0]).to.have.property('name', 'cypress');
- expect(response.body[1]).to.have.property('role', 'team-owner');
- });
- });
- });
-
- it('Gets a teams by ID.', () => {
- cy.request({
- method: 'GET',
- url: `/api/teams/${teamId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('id', teamId);
- });
- });
-
- it('Updates a team.', () => {
- cy.fixture('teams').then(data => {
- const teamUpdate = data.teamUpdate;
- cy.request({
- method: 'POST',
- url: `/api/teams/${teamId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: teamUpdate,
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('id', teamId);
- expect(response.body).to.have.property('name', 'cypressUpdate');
- });
- });
- });
-
- it('Get all users that belong to a team.', () => {
- cy.request({
- method: 'GET',
- url: `/api/teams/${teamId}/users`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body.data[0]).to.have.property('id');
- expect(response.body.data[0]).to.have.property('teamId');
- expect(response.body.data[0]).to.have.property('userId');
- expect(response.body.data[0]).to.have.property('user');
- });
- });
-
- it('Get a user belonging to a team.', () => {
- cy.request({
- method: 'GET',
- url: `/api/teams/${teamId}/users/${Cypress.env('umami_user_id')}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('teamId');
- expect(response.body).to.have.property('userId');
- expect(response.body).to.have.property('role');
- });
- });
-
- it('Get all websites belonging to a team.', () => {
- cy.request({
- method: 'GET',
- url: `/api/teams/${teamId}/websites`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('data');
- });
- });
-
- it('Add a user to a team.', () => {
- cy.request({
- method: 'POST',
- url: `/api/teams/${teamId}/users`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- userId,
- role: 'team-member',
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('userId', userId);
- expect(response.body).to.have.property('role', 'team-member');
- });
- });
-
- it(`Update a user's role on a team.`, () => {
- cy.request({
- method: 'POST',
- url: `/api/teams/${teamId}/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- role: 'team-view-only',
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('userId', userId);
- expect(response.body).to.have.property('role', 'team-view-only');
- });
- });
-
- it(`Remove a user from a team.`, () => {
- cy.request({
- method: 'DELETE',
- url: `/api/teams/${teamId}/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
- });
-
- it('Deletes a team.', () => {
- cy.request({
- method: 'DELETE',
- url: `/api/teams/${teamId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('ok', true);
- });
- });
-
- // it('Gets all teams that belong to a user.', () => {
- // cy.request({
- // method: 'GET',
- // url: `/api/users/${userId}/teams`,
- // headers: {
- // 'Content-Type': 'application/json',
- // Authorization: Cypress.env('authorization'),
- // },
- // }).then(response => {
- // expect(response.status).to.eq(200);
- // expect(response.body).to.have.property('data');
- // });
- // });
-
- after(() => {
- cy.deleteUser(userId);
- });
-});
diff --git a/cypress/e2e/api-user.cy.ts b/cypress/e2e/api-user.cy.ts
deleted file mode 100644
index 696cd21e4..000000000
--- a/cypress/e2e/api-user.cy.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-describe('User API tests', () => {
- Cypress.session.clearAllSavedSessions();
-
- before(() => {
- cy.login(Cypress.env('umami_user'), Cypress.env('umami_password'));
- });
-
- let userId;
-
- it('Creates a user.', () => {
- cy.fixture('users').then(data => {
- const userCreate = data.userCreate;
- cy.request({
- method: 'POST',
- url: '/api/users',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: userCreate,
- }).then(response => {
- userId = response.body.id;
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('username', 'cypress1');
- expect(response.body).to.have.property('role', 'user');
- });
- });
- });
-
- it('Returns all users. Admin access is required.', () => {
- cy.request({
- method: 'GET',
- url: '/api/admin/users',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body.data[0]).to.have.property('id');
- expect(response.body.data[0]).to.have.property('username');
- expect(response.body.data[0]).to.have.property('password');
- expect(response.body.data[0]).to.have.property('role');
- });
- });
-
- it('Updates a user.', () => {
- cy.fixture('users').then(data => {
- const userUpdate = data.userUpdate;
- cy.request({
- method: 'POST',
- url: `/api/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: userUpdate,
- }).then(response => {
- userId = response.body.id;
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('id', userId);
- expect(response.body).to.have.property('username', 'cypress1');
- expect(response.body).to.have.property('role', 'view-only');
- });
- });
- });
-
- it('Gets a user by ID.', () => {
- cy.request({
- method: 'GET',
- url: `/api/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('id', userId);
- expect(response.body).to.have.property('username', 'cypress1');
- expect(response.body).to.have.property('role', 'view-only');
- });
- });
-
- it('Deletes a user.', () => {
- cy.request({
- method: 'DELETE',
- url: `/api/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('ok', true);
- });
- });
-
- it('Gets all websites that belong to a user.', () => {
- cy.request({
- method: 'GET',
- url: `/api/users/${userId}/websites`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('data');
- });
- });
-
- it('Gets all teams that belong to a user.', () => {
- cy.request({
- method: 'GET',
- url: `/api/users/${userId}/teams`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('data');
- });
- });
-});
diff --git a/cypress/e2e/api-website.cy.ts b/cypress/e2e/api-website.cy.ts
deleted file mode 100644
index cd336bda0..000000000
--- a/cypress/e2e/api-website.cy.ts
+++ /dev/null
@@ -1,198 +0,0 @@
-import { uuid } from '../../src/lib/crypto';
-
-describe('Website API tests', () => {
- Cypress.session.clearAllSavedSessions();
-
- let websiteId;
- let teamId;
-
- before(() => {
- cy.login(Cypress.env('umami_user'), Cypress.env('umami_password'));
- cy.fixture('teams').then(data => {
- const teamCreate = data.teamCreate;
- cy.request({
- method: 'POST',
- url: '/api/teams',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: teamCreate,
- }).then(response => {
- teamId = response.body[0].id;
- expect(response.status).to.eq(200);
- expect(response.body[0]).to.have.property('name', 'cypress');
- expect(response.body[1]).to.have.property('role', 'team-owner');
- });
- });
- });
-
- it('Creates a website for user.', () => {
- cy.fixture('websites').then(data => {
- const websiteCreate = data.websiteCreate;
- cy.request({
- method: 'POST',
- url: '/api/websites',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: websiteCreate,
- }).then(response => {
- websiteId = response.body.id;
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('name', 'Cypress Website');
- expect(response.body).to.have.property('domain', 'cypress.com');
- });
- });
- });
-
- it('Creates a website for team.', () => {
- cy.request({
- method: 'POST',
- url: '/api/websites',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- name: 'Team Website',
- domain: 'teamwebsite.com',
- teamId: teamId,
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('name', 'Team Website');
- expect(response.body).to.have.property('domain', 'teamwebsite.com');
- });
- });
-
- it('Creates a website with a fixed ID.', () => {
- cy.fixture('websites').then(data => {
- const websiteCreate = data.websiteCreate;
- const fixedId = uuid();
- cy.request({
- method: 'POST',
- url: '/api/websites',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: { ...websiteCreate, id: fixedId },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('id', fixedId);
- expect(response.body).to.have.property('name', 'Cypress Website');
- expect(response.body).to.have.property('domain', 'cypress.com');
-
- // cleanup
- cy.request({
- method: 'DELETE',
- url: `/api/websites/${fixedId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- });
- });
- });
- });
-
- it('Returns all tracked websites.', () => {
- cy.request({
- method: 'GET',
- url: '/api/websites',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body.data[0]).to.have.property('id');
- expect(response.body.data[0]).to.have.property('name');
- expect(response.body.data[0]).to.have.property('domain');
- });
- });
-
- it('Gets a website by ID.', () => {
- cy.request({
- method: 'GET',
- url: `/api/websites/${websiteId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('name', 'Cypress Website');
- expect(response.body).to.have.property('domain', 'cypress.com');
- });
- });
-
- it('Updates a website.', () => {
- cy.fixture('websites').then(data => {
- const websiteUpdate = data.websiteUpdate;
- cy.request({
- method: 'POST',
- url: `/api/websites/${websiteId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: websiteUpdate,
- }).then(response => {
- websiteId = response.body.id;
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('name', 'Cypress Website Updated');
- expect(response.body).to.have.property('domain', 'cypressupdated.com');
- });
- });
- });
-
- it('Updates a website with only shareId.', () => {
- cy.request({
- method: 'POST',
- url: `/api/websites/${websiteId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: { shareId: 'ABCDEF' },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('shareId', 'ABCDEF');
- });
- });
-
- it('Resets a website by removing all data related to the website.', () => {
- cy.request({
- method: 'POST',
- url: `/api/websites/${websiteId}/reset`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('ok', true);
- });
- });
-
- it('Deletes a website.', () => {
- cy.request({
- method: 'DELETE',
- url: `/api/websites/${websiteId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- expect(response.body).to.have.property('ok', true);
- });
- });
-
- after(() => {
- cy.deleteTeam(teamId);
- });
-});
diff --git a/cypress/e2e/login.cy.ts b/cypress/e2e/login.cy.ts
deleted file mode 100644
index 507b1b580..000000000
--- a/cypress/e2e/login.cy.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-describe('Login tests', () => {
- beforeEach(() => {
- cy.visit('/login');
- });
-
- it(
- 'logs user in with correct credentials and logs user out',
- {
- defaultCommandTimeout: 10000,
- },
- () => {
- cy.getDataTest('input-username').find('input').as('inputUsername').click();
- cy.get('@inputUsername').type(Cypress.env('umami_user'), { delay: 0 });
- cy.get('@inputUsername').click();
- cy.getDataTest('input-password')
- .find('input')
- .type(Cypress.env('umami_password'), { delay: 0 });
- cy.getDataTest('button-submit').click();
- cy.url().should('eq', Cypress.config().baseUrl + '/dashboard');
- cy.logout();
- },
- );
-
- it('login with blank inputs or incorrect credentials', () => {
- cy.getDataTest('button-submit').click();
- cy.contains(/Required/i).should('be.visible');
-
- cy.getDataTest('input-username').find('input').as('inputUsername');
- cy.get('@inputUsername').click();
- cy.get('@inputUsername').type(Cypress.env('umami_user'), { delay: 0 });
- cy.get('@inputUsername').click();
- cy.getDataTest('input-password').find('input').type('wrongpassword', { delay: 0 });
- cy.getDataTest('button-submit').click();
- cy.contains(/Incorrect username and\/or password./i).should('be.visible');
- });
-});
diff --git a/cypress/e2e/user.cy.ts b/cypress/e2e/user.cy.ts
deleted file mode 100644
index 24df30539..000000000
--- a/cypress/e2e/user.cy.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-describe('User tests', () => {
- Cypress.session.clearAllSavedSessions();
-
- beforeEach(() => {
- cy.login(Cypress.env('umami_user'), Cypress.env('umami_password'));
- cy.visit('/settings/users');
- });
-
- it('Add a User', () => {
- // add user
- cy.contains(/Create user/i).should('be.visible');
- cy.getDataTest('button-create-user').click();
- cy.getDataTest('input-username').find('input').as('inputName').click();
- cy.get('@inputName').type('Test-user', { delay: 0 });
- cy.getDataTest('input-password').find('input').as('inputPassword').click();
- cy.get('@inputPassword').type('testPasswordCypress', { delay: 0 });
- cy.getDataTest('dropdown-role').click();
- cy.getDataTest('dropdown-item-user').click();
- cy.getDataTest('button-submit').click();
- cy.get('td[label="Username"]').should('contain.text', 'Test-user');
- cy.get('td[label="Role"]').should('contain.text', 'User');
- });
-
- it('Edit a User role and password', () => {
- // edit user
- cy.get('table tbody tr')
- .contains('td', /Test-user/i)
- .parent()
- .within(() => {
- cy.getDataTest('link-button-edit').click(); // Clicks the button inside the row
- });
- cy.getDataTest('input-password').find('input').as('inputPassword').click();
- cy.get('@inputPassword').type('newPassword', { delay: 0 });
- cy.getDataTest('dropdown-role').click();
- cy.getDataTest('dropdown-item-viewOnly').click();
- cy.getDataTest('button-submit').click();
-
- cy.visit('/settings/users');
- cy.get('table tbody tr')
- .contains('td', /Test-user/i)
- .parent()
- .should('contain.text', 'View only');
-
- cy.logout();
- cy.url().should('eq', Cypress.config().baseUrl + '/login');
- cy.getDataTest('input-username').find('input').as('inputUsername').click();
- cy.get('@inputUsername').type('Test-user', { delay: 0 });
- cy.get('@inputUsername').click();
- cy.getDataTest('input-password').find('input').type('newPassword', { delay: 0 });
- cy.getDataTest('button-submit').click();
- cy.url().should('eq', Cypress.config().baseUrl + '/dashboard');
- });
-
- it('Delete a user', () => {
- // delete user
- cy.get('table tbody tr')
- .contains('td', /Test-user/i)
- .parent()
- .within(() => {
- cy.getDataTest('button-delete').click(); // Clicks the button inside the row
- });
- cy.contains(/Are you sure you want to delete Test-user?/i).should('be.visible');
- cy.getDataTest('button-confirm').click();
- });
-});
diff --git a/cypress/e2e/website.cy.ts b/cypress/e2e/website.cy.ts
deleted file mode 100644
index 2dcd60273..000000000
--- a/cypress/e2e/website.cy.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-describe('Website tests', () => {
- Cypress.session.clearAllSavedSessions();
-
- beforeEach(() => {
- cy.login(Cypress.env('umami_user'), Cypress.env('umami_password'));
- });
-
- it('Add a website', () => {
- // add website
- cy.visit('/settings/websites');
- cy.getDataTest('button-website-add').click();
- cy.contains(/Add website/i).should('be.visible');
- cy.getDataTest('input-name').find('input').as('inputUsername').click();
- cy.getDataTest('input-name').find('input').type('Add test', { delay: 0 });
- cy.getDataTest('input-domain').find('input').click();
- cy.getDataTest('input-domain').find('input').type('addtest.com', { delay: 0 });
- cy.getDataTest('button-submit').click();
- cy.get('td[label="Name"]').should('contain.text', 'Add test');
- cy.get('td[label="Domain"]').should('contain.text', 'addtest.com');
-
- // clean-up data
- cy.getDataTest('link-button-edit').first().click();
- cy.contains(/Details/i).should('be.visible');
- cy.getDataTest('text-field-websiteId')
- .find('input')
- .then($input => {
- const websiteId = $input[0].value;
- cy.deleteWebsite(websiteId);
- });
- cy.visit('/settings/websites');
- cy.contains(/Add test/i).should('not.exist');
- });
-
- it('Edit a website', () => {
- // prep data
- cy.addWebsite('Update test', 'updatetest.com');
- cy.visit('/settings/websites');
-
- // edit website
- cy.getDataTest('link-button-edit').first().click();
- cy.contains(/Details/i).should('be.visible');
- cy.getDataTest('input-name').find('input').click();
- cy.getDataTest('input-name').find('input').clear();
- cy.getDataTest('input-name').find('input').type('Updated website', { delay: 0 });
- cy.getDataTest('input-domain').find('input').click();
- cy.getDataTest('input-domain').find('input').clear();
- cy.getDataTest('input-domain').find('input').type('updatedwebsite.com', { delay: 0 });
- cy.getDataTest('button-submit').click({ force: true });
- cy.getDataTest('input-name').find('input').should('have.value', 'Updated website');
- cy.getDataTest('input-domain').find('input').should('have.value', 'updatedwebsite.com');
-
- // verify tracking script
- cy.get('div')
- .contains(/Tracking code/i)
- .click();
- cy.get('textarea').should('contain.text', Cypress.config().baseUrl + '/script.js');
-
- // clean-up data
- cy.get('div')
- .contains(/Details/i)
- .click();
- cy.contains(/Details/i).should('be.visible');
- cy.getDataTest('text-field-websiteId')
- .find('input')
- .then($input => {
- const websiteId = $input[0].value;
- cy.deleteWebsite(websiteId);
- });
- cy.visit('/settings/websites');
- cy.contains(/Add test/i).should('not.exist');
- });
-
- it('Delete a website', () => {
- // prep data
- cy.addWebsite('Delete test', 'deletetest.com');
- cy.visit('/settings/websites');
-
- // delete website
- cy.getDataTest('link-button-edit').first().click();
- cy.contains(/Data/i).should('be.visible');
- cy.get('div').contains(/Data/i).click();
- cy.contains(/All website data will be deleted./i).should('be.visible');
- cy.getDataTest('button-delete').click();
- cy.contains(/Type DELETE in the box below to confirm./i).should('be.visible');
- cy.get('input[name="confirm"').type('DELETE');
- cy.get('button[type="submit"]').click();
- cy.contains(/Delete test/i).should('not.exist');
- });
-});
diff --git a/cypress/fixtures/teams.json b/cypress/fixtures/teams.json
deleted file mode 100644
index 4c001e655..000000000
--- a/cypress/fixtures/teams.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "teamCreate": {
- "name": "cypress"
- },
- "teamUpdate": {
- "name": "cypressUpdate"
- }
-}
diff --git a/cypress/fixtures/users.json b/cypress/fixtures/users.json
deleted file mode 100644
index 235f0d637..000000000
--- a/cypress/fixtures/users.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "userCreate": {
- "username": "cypress1",
- "password": "password",
- "role": "user"
- },
- "userUpdate": {
- "username": "cypress1",
- "role": "view-only"
- }
-}
diff --git a/cypress/fixtures/websites.json b/cypress/fixtures/websites.json
deleted file mode 100644
index 0b817889b..000000000
--- a/cypress/fixtures/websites.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "websiteCreate": {
- "name": "Cypress Website",
- "domain": "cypress.com"
- },
- "websiteUpdate": {
- "name": "Cypress Website Updated",
- "domain": "cypressupdated.com"
- }
-}
diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts
deleted file mode 100644
index a95035ba0..000000000
--- a/cypress/support/e2e.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-///
-import { uuid } from '../../src/lib/crypto';
-
-Cypress.Commands.add('getDataTest', (value: string) => {
- return cy.get(`[data-test=${value}]`);
-});
-
-Cypress.Commands.add('logout', () => {
- cy.getDataTest('button-profile').click();
- cy.getDataTest('item-logout').click();
- cy.url().should('eq', Cypress.config().baseUrl + '/login');
-});
-
-Cypress.Commands.add('login', (username: string, password: string) => {
- cy.session([username, password], () => {
- cy.request({
- method: 'POST',
- url: '/api/auth/login',
- body: {
- username,
- password,
- },
- })
- .then(response => {
- Cypress.env('authorization', `bearer ${response.body.token}`);
- window.localStorage.setItem('umami.auth', JSON.stringify(response.body.token));
- })
- .its('status')
- .should('eq', 200);
- });
-});
-
-Cypress.Commands.add('addWebsite', (name: string, domain: string) => {
- cy.request({
- method: 'POST',
- url: '/api/websites',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- id: uuid(),
- createdBy: '41e2b680-648e-4b09-bcd7-3e2b10c06264',
- name: name,
- domain: domain,
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
-
-Cypress.Commands.add('deleteWebsite', (websiteId: string) => {
- cy.request({
- method: 'DELETE',
- url: `/api/websites/${websiteId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
-
-Cypress.Commands.add('addUser', (username: string, password: string, role: string) => {
- cy.request({
- method: 'POST',
- url: '/api/users',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- username: username,
- password: password,
- role: role,
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
-
-Cypress.Commands.add('deleteUser', (userId: string) => {
- cy.request({
- method: 'DELETE',
- url: `/api/users/${userId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
-
-Cypress.Commands.add('addTeam', (name: string) => {
- cy.request({
- method: 'POST',
- url: '/api/teams',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- body: {
- name: name,
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
-
-Cypress.Commands.add('deleteTeam', (teamId: string) => {
- cy.request({
- method: 'DELETE',
- url: `/api/teams/${teamId}`,
- headers: {
- 'Content-Type': 'application/json',
- Authorization: Cypress.env('authorization'),
- },
- }).then(response => {
- expect(response.status).to.eq(200);
- });
-});
diff --git a/cypress/support/index.d.ts b/cypress/support/index.d.ts
deleted file mode 100644
index b63026905..000000000
--- a/cypress/support/index.d.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-///
-/* global JQuery */
-
-declare namespace Cypress {
- interface Chainable {
- /**
- * Custom command to select DOM element by data-test attribute.
- * @example cy.getDataTest('greeting')
- */
- getDataTest(value: string): Chainable>;
- /**
- * Custom command to logout through UI.
- * @example cy.logout()
- */
- logout(): Chainable>;
- /**
- * Custom command to login user into the app.
- * @example cy.login('admin', 'password)
- */
- login(username: string, password: string): Chainable>;
- /**
- * Custom command to create a website
- * @example cy.addWebsite('test', 'test.com')
- */
- addWebsite(name: string, domain: string): Chainable>;
- /**
- * Custom command to delete a website
- * @example cy.deleteWebsite('02d89813-7a72-41e1-87f0-8d668f85008b')
- */
- deleteWebsite(websiteId: string): Chainable>;
- /**
- * Custom command to create a website
- * @example cy.deleteWebsite('02d89813-7a72-41e1-87f0-8d668f85008b')
- */
- /**
- * Custom command to create a user
- * @example cy.addUser('cypress', 'password', 'User')
- */
- addUser(username: string, password: string, role: string): Chainable>;
- /**
- * Custom command to delete a user
- * @example cy.deleteUser('02d89813-7a72-41e1-87f0-8d668f85008b')
- */
- deleteUser(userId: string): Chainable>;
- /**
- * Custom command to create a team
- * @example cy.addTeam('cypressTeam')
- */
- addTeam(name: string): Chainable>;
- /**
- * Custom command to create a website
- * @example cy.deleteTeam('02d89813-7a72-41e1-87f0-8d668f85008b')
- */
- deleteTeam(teamId: string): Chainable>;
- }
-}
diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json
deleted file mode 100644
index 48c3e14e4..000000000
--- a/cypress/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "compilerOptions": {
- "target": "es5",
- "lib": ["es5", "dom"],
- "types": ["cypress", "node"]
- },
- "include": ["**/*.ts", "../cypress.config.ts"]
-}
diff --git a/jest.config.ts b/jest.config.ts
deleted file mode 100644
index d06ac09a6..000000000
--- a/jest.config.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-export default {
- roots: ['./src'],
- testMatch: ['**/__tests__/**/*.+(ts|tsx|js)', '**/?(*.)+(spec|test).+(ts|tsx|js)'],
- transform: {
- '^.+\\.(ts|tsx)$': 'ts-jest',
- },
- moduleNameMapper: {
- '^@/(.*)$': '/src/$1',
- },
-};
diff --git a/package.json b/package.json
index 45ba97b18..3d405ed8b 100644
--- a/package.json
+++ b/package.json
@@ -39,9 +39,10 @@
"download-language-names": "node scripts/download-language-names.js",
"change-password": "node scripts/change-password.js",
"postbuild": "node scripts/postbuild.js",
- "test": "jest",
- "cypress-open": "cypress open cypress run",
- "cypress-run": "cypress run cypress run",
+ "test": "vitest run",
+ "test:watch": "vitest",
+ "test:e2e": "playwright test",
+ "test:e2e:ui": "playwright test --ui",
"seed-data": "tsx scripts/seed-data.ts",
"lint": "biome lint .",
"format": "biome format --write .",
@@ -121,6 +122,7 @@
"devDependencies": {
"@biomejs/biome": "^2.4.12",
"@netlify/plugin-nextjs": "^5.15.9",
+ "@playwright/test": "^1.59.1",
"@rollup/plugin-alias": "^6.0.0",
"@rollup/plugin-commonjs": "^29.0.2",
"@rollup/plugin-json": "^6.0.0",
@@ -128,15 +130,17 @@
"@rollup/plugin-replace": "^6.0.3",
"@rollup/plugin-terser": "^1.0.0",
"@rollup/plugin-typescript": "^12.3.0",
- "@types/jest": "^30.0.0",
+ "@testing-library/jest-dom": "^6.9.1",
+ "@testing-library/react": "^16.3.2",
+ "@testing-library/user-event": "^14.6.1",
"@types/node": "^25.6.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.2",
"babel-plugin-react-compiler": "19.1.0-rc.2",
"cross-env": "^10.1.0",
- "cypress": "^15.14.0",
"dotenv-cli": "^11.0.0",
- "jest": "^30.3.0",
+ "jsdom": "^29.1.1",
+ "msw": "^2.14.5",
"postcss": "^8.5.10",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-import": "^16.1.1",
@@ -150,11 +154,11 @@
"rollup-plugin-peer-deps-external": "^2.2.4",
"rollup-plugin-postcss": "^4.0.2",
"tar": "^7.5.13",
- "ts-jest": "^29.4.9",
"ts-morph": "^28.0.0",
"ts-node": "^10.9.1",
"tsup": "^8.5.0",
"tsx": "^4.19.0",
- "typescript": "^6.0.3"
+ "typescript": "^6.0.3",
+ "vitest": "^4.1.5"
}
}
diff --git a/playwright.config.ts b/playwright.config.ts
new file mode 100644
index 000000000..4e34d7e2e
--- /dev/null
+++ b/playwright.config.ts
@@ -0,0 +1,32 @@
+import { defineConfig, devices } from '@playwright/test';
+
+const port = process.env.PORT ?? '3000';
+const baseURL = process.env.PLAYWRIGHT_BASE_URL ?? `http://localhost:${port}`;
+
+export default defineConfig({
+ testDir: './tests/e2e',
+ fullyParallel: false,
+ forbidOnly: !!process.env.CI,
+ retries: process.env.CI ? 2 : 0,
+ workers: process.env.CI ? 1 : undefined,
+ reporter: process.env.CI ? [['list'], ['html', { open: 'never' }]] : 'list',
+ use: {
+ baseURL,
+ testIdAttribute: 'data-test',
+ trace: 'on-first-retry',
+ },
+ webServer: process.env.PLAYWRIGHT_SKIP_WEB_SERVER
+ ? undefined
+ : {
+ command: process.env.PLAYWRIGHT_WEB_SERVER_COMMAND ?? 'pnpm dev',
+ url: baseURL,
+ reuseExistingServer: !process.env.CI,
+ timeout: 120_000,
+ },
+ projects: [
+ {
+ name: 'chromium',
+ use: { ...devices['Desktop Chrome'] },
+ },
+ ],
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0554c8003..99351008a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -73,7 +73,7 @@ importers:
version: 3.2.0(date-fns@4.1.0)
debug:
specifier: ^4.4.3
- version: 4.4.3(supports-color@8.1.1)
+ version: 4.4.3
del:
specifier: ^8.0.1
version: 8.0.1
@@ -124,10 +124,10 @@ importers:
version: 12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
next:
specifier: 16.2.4
- version: 16.2.4(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 16.2.4(@babel/core@7.29.0)(@playwright/test@1.59.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
next-intl:
specifier: 4.9.1
- version: 4.9.1(@swc/helpers@0.5.21)(next@16.2.4(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@6.0.3)
+ version: 4.9.1(@swc/helpers@0.5.21)(next@16.2.4(@babel/core@7.29.0)(@playwright/test@1.59.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@6.0.3)
node-fetch:
specifier: ^3.2.8
version: 3.3.2
@@ -213,6 +213,9 @@ importers:
'@netlify/plugin-nextjs':
specifier: ^5.15.9
version: 5.15.9
+ '@playwright/test':
+ specifier: ^1.59.1
+ version: 1.59.1
'@rollup/plugin-alias':
specifier: ^6.0.0
version: 6.0.0(rollup@4.60.1)
@@ -234,9 +237,15 @@ importers:
'@rollup/plugin-typescript':
specifier: ^12.3.0
version: 12.3.0(rollup@4.60.1)(tslib@2.8.1)(typescript@6.0.3)
- '@types/jest':
- specifier: ^30.0.0
- version: 30.0.0
+ '@testing-library/jest-dom':
+ specifier: ^6.9.1
+ version: 6.9.1
+ '@testing-library/react':
+ specifier: ^16.3.2
+ version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@testing-library/user-event':
+ specifier: ^14.6.1
+ version: 14.6.1(@testing-library/dom@10.4.1)
'@types/node':
specifier: ^25.6.0
version: 25.6.0
@@ -252,15 +261,15 @@ importers:
cross-env:
specifier: ^10.1.0
version: 10.1.0
- cypress:
- specifier: ^15.14.0
- version: 15.14.0
dotenv-cli:
specifier: ^11.0.0
version: 11.0.0
- jest:
- specifier: ^30.3.0
- version: 30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
+ jsdom:
+ specifier: ^29.1.1
+ version: 29.1.1
+ msw:
+ specifier: ^2.14.5
+ version: 2.14.5(@types/node@25.6.0)(typescript@6.0.3)
postcss:
specifier: ^8.5.10
version: 8.5.10
@@ -290,7 +299,7 @@ importers:
version: 6.4.1(rollup@4.60.1)(typescript@6.0.3)
rollup-plugin-node-externals:
specifier: ^9.0.1
- version: 9.0.1(rollup@4.60.1)
+ version: 9.0.1(rollup@4.60.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1))
rollup-plugin-peer-deps-external:
specifier: ^2.2.4
version: 2.2.4(rollup@4.60.1)
@@ -300,9 +309,6 @@ importers:
tar:
specifier: ^7.5.13
version: 7.5.13
- ts-jest:
- specifier: ^29.4.9
- version: 29.4.9(@babel/core@7.28.3)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.3))(esbuild@0.28.0)(jest-util@30.3.0)(jest@30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)))(typescript@6.0.3)
ts-morph:
specifier: ^28.0.0
version: 28.0.0
@@ -318,13 +324,73 @@ importers:
typescript:
specifier: ^6.0.3
version: 6.0.3
+ vitest:
+ specifier: ^4.1.5
+ version: 4.1.5(@types/node@25.6.0)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.0)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1))
+
+ dist:
+ dependencies:
+ chart.js:
+ specifier: ^4.5.0
+ version: 4.5.1
+ chartjs-adapter-date-fns:
+ specifier: ^3.0.0
+ version: 3.0.0(chart.js@4.5.1)(date-fns@4.1.0)
+ colord:
+ specifier: ^2.9.2
+ version: 2.9.3
+ jsonwebtoken:
+ specifier: ^9.0.2
+ version: 9.0.3
+ lucide-react:
+ specifier: ^0.542.0
+ version: 0.542.0(react@19.2.5)
+ pure-rand:
+ specifier: ^7.0.1
+ version: 7.0.1
+ react-simple-maps:
+ specifier: ^2.3.0
+ version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ react-use-measure:
+ specifier: ^2.0.4
+ version: 2.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ react-window:
+ specifier: ^1.8.6
+ version: 1.8.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ serialize-error:
+ specifier: ^12.0.0
+ version: 12.0.0
+ thenby:
+ specifier: ^1.3.4
+ version: 1.4.0
+ uuid:
+ specifier: ^11.1.0
+ version: 11.1.1
packages:
+ '@adobe/css-tools@4.4.4':
+ resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==}
+
'@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@asamuzakjp/css-color@5.1.11':
+ resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
+ '@asamuzakjp/dom-selector@7.1.1':
+ resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
+ '@asamuzakjp/generational-cache@1.0.1':
+ resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
+ '@asamuzakjp/nwsapi@2.3.9':
+ resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
+
'@babel/code-frame@7.27.1':
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
@@ -389,10 +455,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-plugin-utils@7.28.6':
- resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
@@ -427,97 +489,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/plugin-syntax-async-generators@7.8.4':
- resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-bigint@7.8.3':
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-class-properties@7.12.13':
- resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-class-static-block@7.14.5':
- resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-import-attributes@7.28.6':
- resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-import-meta@7.10.4':
- resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-json-strings@7.8.3':
- resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-jsx@7.28.6':
- resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-logical-assignment-operators@7.10.4':
- resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
- resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-numeric-separator@7.10.4':
- resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-object-rest-spread@7.8.3':
- resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-optional-catch-binding@7.8.3':
- resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-optional-chaining@7.8.3':
- resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-private-property-in-object@7.14.5':
- resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-top-level-await@7.14.5':
- resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-syntax-typescript@7.28.6':
- resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/runtime@7.29.2':
resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==}
engines: {node: '>=6.9.0'}
@@ -546,9 +517,6 @@ packages:
resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
engines: {node: '>=6.9.0'}
- '@bcoe/v8-coverage@0.2.3':
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
-
'@biomejs/biome@2.4.12':
resolution: {integrity: sha512-Rro7adQl3NLq/zJCIL98eElXKI8eEiBtoeu5TbXF/U3qbjuSc7Jb5rjUbeHHcquDWeSf3HnGP7XI5qGrlRk/pA==}
engines: {node: '>=14.21.3'}
@@ -571,24 +539,28 @@ packages:
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@biomejs/cli-linux-arm64@2.4.12':
resolution: {integrity: sha512-tOwuCuZZtKi1jVzbk/5nXmIsziOB6yqN8c9r9QM0EJYPU6DpQWf11uBOSCfFKKM4H3d9ZoarvlgMfbcuD051Pw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@biomejs/cli-linux-x64-musl@2.4.12':
resolution: {integrity: sha512-dwTIgZrGutzhkQCuvHynCkyW6hJxUuyZqKKO0YNfaS2GUoRO+tOvxXZqZB6SkWAOdfZTzwaw8IEdUnIkHKHoew==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@biomejs/cli-linux-x64@2.4.12':
resolution: {integrity: sha512-8pFeAnLU9QdW9jCIslB/v82bI0lhBmz2ZAKc8pVMFPO0t0wAHsoEkrUQUbMkIorTRIjbqyNZHA3lEXavsPWYSw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@biomejs/cli-win32-arm64@2.4.12':
resolution: {integrity: sha512-B0DLnx0vA9ya/3v7XyCaP+/lCpnbWbMOfUFFve+xb5OxyYvdHaS55YsSddr228Y+JAFk58agCuZTsqNiw2a6ig==}
@@ -602,6 +574,10 @@ packages:
cpu: [x64]
os: [win32]
+ '@bramus/specificity@2.4.2':
+ resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==}
+ hasBin: true
+
'@clack/core@0.5.0':
resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==}
@@ -650,6 +626,14 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^4.0.0
+ '@csstools/css-syntax-patches-for-csstree@1.1.3':
+ resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==}
+ peerDependencies:
+ css-tree: ^3.2.1
+ peerDependenciesMeta:
+ css-tree:
+ optional: true
+
'@csstools/css-tokenizer@4.0.0':
resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==}
engines: {node: '>=20.19.0'}
@@ -931,13 +915,6 @@ packages:
peerDependencies:
postcss: ^8.4
- '@cypress/request@3.0.10':
- resolution: {integrity: sha512-hauBrOdvu08vOsagkZ/Aju5XuiZx6ldsLfByg1htFeldhex+PeMrYauANzFsMJeAA0+dyPLbDoX2OYuvVoLDkQ==}
- engines: {node: '>= 6'}
-
- '@cypress/xvfb@1.2.4':
- resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
-
'@date-fns/utc@2.1.1':
resolution: {integrity: sha512-SlJDfG6RPeEX8wEVv6ZB3kak4MmbtyiI2qX/5zuKdordbrhB/iaJ58GVMZgJ6P1sJaM1gMgENFYYeg1JWrCFrA==}
@@ -1478,6 +1455,15 @@ packages:
cpu: [x64]
os: [win32]
+ '@exodus/bytes@1.15.0':
+ resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@noble/hashes': ^1.8.0 || ^2.0.0
+ peerDependenciesMeta:
+ '@noble/hashes':
+ optional: true
+
'@formatjs/fast-memoize@3.1.2':
resolution: {integrity: sha512-vPnriihkfK0lzoQGaXq+qXH23VsYyansRTkTgo2aTG0k1NjLFyZimFVdfj4C9JkSE5dm7CEngcQ5TTc1yAyBfQ==}
@@ -1532,89 +1518,105 @@ packages:
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-arm@1.2.4':
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-ppc64@1.2.4':
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-riscv64@1.2.4':
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-s390x@1.2.4':
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-x64@1.2.4':
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@img/sharp-linux-arm64@0.34.5':
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-arm@0.34.5':
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-ppc64@0.34.5':
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-riscv64@0.34.5':
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-s390x@0.34.5':
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-x64@0.34.5':
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linuxmusl-arm64@0.34.5':
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@img/sharp-linuxmusl-x64@0.34.5':
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@img/sharp-wasm32@0.34.5':
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
@@ -1639,6 +1641,41 @@ packages:
cpu: [x64]
os: [win32]
+ '@inquirer/ansi@2.0.5':
+ resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+
+ '@inquirer/confirm@6.0.12':
+ resolution: {integrity: sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/core@11.1.9':
+ resolution: {integrity: sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/figures@2.0.5':
+ resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+
+ '@inquirer/type@4.0.5':
+ resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
'@internationalized/date@3.11.0':
resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==}
@@ -1659,108 +1696,6 @@ packages:
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
- '@istanbuljs/load-nyc-config@1.1.0':
- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
- engines: {node: '>=8'}
-
- '@istanbuljs/schema@0.1.6':
- resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==}
- engines: {node: '>=8'}
-
- '@jest/console@30.3.0':
- resolution: {integrity: sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/core@30.3.0':
- resolution: {integrity: sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
- '@jest/diff-sequences@30.0.1':
- resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/diff-sequences@30.3.0':
- resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/environment@30.3.0':
- resolution: {integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/expect-utils@30.1.1':
- resolution: {integrity: sha512-5YUHr27fpJ64dnvtu+tt11ewATynrHkGYD+uSFgRr8V2eFJis/vEXgToyLwccIwqBihVfz9jwio+Zr1ab1Zihw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/expect-utils@30.3.0':
- resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/expect@30.3.0':
- resolution: {integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/fake-timers@30.3.0':
- resolution: {integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/get-type@30.1.0':
- resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/globals@30.3.0':
- resolution: {integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/pattern@30.0.1':
- resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/reporters@30.3.0':
- resolution: {integrity: sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
- '@jest/schemas@30.0.5':
- resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/snapshot-utils@30.3.0':
- resolution: {integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/source-map@30.0.1':
- resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/test-result@30.3.0':
- resolution: {integrity: sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/test-sequencer@30.3.0':
- resolution: {integrity: sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/transform@30.3.0':
- resolution: {integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/types@30.0.5':
- resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/types@30.3.0':
- resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -1789,8 +1724,15 @@ packages:
'@kurkle/color@0.3.4':
resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==}
- '@napi-rs/wasm-runtime@0.2.12':
- resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+ '@mswjs/interceptors@0.41.8':
+ resolution: {integrity: sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==}
+ engines: {node: '>=18'}
+
+ '@napi-rs/wasm-runtime@1.1.4':
+ resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
'@netlify/plugin-nextjs@5.15.9':
resolution: {integrity: sha512-4kJvV+wrt4/ncehfaOXfhv1FYKCv9EFjq6/tgXXYSlqPDcbsuTXR0DTz9IvyZ/CpPRadRD/zzIqD9wXgCmA2lg==}
@@ -1816,24 +1758,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@next/swc-linux-arm64-musl@16.2.4':
resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@next/swc-linux-x64-gnu@16.2.4':
resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@next/swc-linux-x64-musl@16.2.4':
resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@next/swc-win32-arm64-msvc@16.2.4':
resolution: {integrity: sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==}
@@ -1859,6 +1805,21 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@open-draft/deferred-promise@2.2.0':
+ resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
+
+ '@open-draft/deferred-promise@3.0.0':
+ resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==}
+
+ '@open-draft/logger@0.3.0':
+ resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==}
+
+ '@open-draft/until@2.1.0':
+ resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
+
+ '@oxc-project/types@0.128.0':
+ resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==}
+
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
engines: {node: '>= 10.0.0'}
@@ -1888,36 +1849,42 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.6':
resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.6':
resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.6':
resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.6':
resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.6':
resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-win32-arm64@2.5.6':
resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
@@ -1945,9 +1912,10 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@pkgr/core@0.2.9':
- resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ '@playwright/test@1.59.1':
+ resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==}
+ engines: {node: '>=18'}
+ hasBin: true
'@prisma/adapter-pg@7.7.0':
resolution: {integrity: sha512-q33Ta8sKbgzEpAy0lx45tAq//yMv0qcb+8nj+TCA3P4wiAY+OBFEFk/NDkZncAfHaNJeGo5WJpJdpbL+ijYx8g==}
@@ -2196,6 +2164,104 @@ packages:
peerDependencies:
'@redis/client': ^5.12.1
+ '@rolldown/binding-android-arm64@1.0.0-rc.18':
+ resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.18':
+ resolution: {integrity: sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.18':
+ resolution: {integrity: sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.18':
+ resolution: {integrity: sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18':
+ resolution: {integrity: sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18':
+ resolution: {integrity: sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18':
+ resolution: {integrity: sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18':
+ resolution: {integrity: sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18':
+ resolution: {integrity: sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18':
+ resolution: {integrity: sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.18':
+ resolution: {integrity: sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.18':
+ resolution: {integrity: sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.18':
+ resolution: {integrity: sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18':
+ resolution: {integrity: sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18':
+ resolution: {integrity: sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.0-rc.18':
+ resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==}
+
'@rollup/plugin-alias@6.0.0':
resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==}
engines: {node: '>=20.19.0'}
@@ -2315,66 +2381,79 @@ packages:
resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.60.1':
resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.60.1':
resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.60.1':
resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.60.1':
resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.60.1':
resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==}
cpu: [loong64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.60.1':
resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.60.1':
resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==}
cpu: [ppc64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.60.1':
resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.60.1':
resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.60.1':
resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.60.1':
resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.60.1':
resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openbsd-x64@4.60.1':
resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==}
@@ -2412,19 +2491,10 @@ packages:
'@schummar/icu-type-parser@1.21.5':
resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==}
- '@sinclair/typebox@0.34.40':
- resolution: {integrity: sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==}
-
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
- '@sinonjs/commons@3.0.1':
- resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
-
- '@sinonjs/fake-timers@15.3.2':
- resolution: {integrity: sha512-mrn35Jl2pCpns+mE3HaZa1yPN5EYCRgiMI+135COjr2hr8Cls9DXqIZ57vZe2cz7y2XVSq92tcs6kGQcT1J8Rw==}
-
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
@@ -2536,36 +2606,42 @@ packages:
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@swc/core-linux-arm64-musl@1.15.26':
resolution: {integrity: sha512-iNlbvTIo425rkKzDLLWFJGnFXr3myETUdIDHcjuiPNZE8b0ogmcAuilC4yEJX7FSHGbnlsoJcCT2xf4b3VJmmQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@swc/core-linux-ppc64-gnu@1.15.26':
resolution: {integrity: sha512-AuuEOtG+YXKIjIUup4RsxYNklx6XVB3WKWfhxG6hnfPrn7vp89RNOLbbyyprgj6Sk7k9ulwGVTJElEvmBNPSCA==}
engines: {node: '>=10'}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@swc/core-linux-s390x-gnu@1.15.26':
resolution: {integrity: sha512-JcMDWQvW1BchUyRg8E0jHiTx7CQYpUr5uDEL1dnPDECrEjBEGG2ynmJ3XX70sWXql0JagqR1t3VpANYFWdUnqA==}
engines: {node: '>=10'}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@swc/core-linux-x64-gnu@1.15.26':
resolution: {integrity: sha512-FW7V7Mbpq4+PA7BiAq76LJs8MdNuUSylyuRVfQRkhIyeWadFroZ+KOPgjku8Z/fXzngxBRvsk+PGGB0t8mGcjA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@swc/core-linux-x64-musl@1.15.26':
resolution: {integrity: sha512-w8erqMHsVcdGwUfJxF6LaiTuPoKnyLOcUbhLcxiXrlLt5MLjtlgcIeUY/NWK/oPoyqkgH+/i8pOJnMTxvl83ZQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@swc/core-win32-arm64-msvc@1.15.26':
resolution: {integrity: sha512-uDCWCNpUiqkbvPmsuPUTn/P7ag9SqNXD2JT/W3dUu7yZ2krzN+nmmoQ2xRX63/J6RYiHI7aT4jo7Z++lsljlPA==}
@@ -2617,6 +2693,35 @@ packages:
peerDependencies:
react: ^18 || ^19
+ '@testing-library/dom@10.4.1':
+ resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
+ engines: {node: '>=18'}
+
+ '@testing-library/jest-dom@6.9.1':
+ resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+
+ '@testing-library/react@16.3.2':
+ resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==}
+ engines: {node: '>=18'}
+ 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
+
+ '@testing-library/user-event@14.6.1':
+ resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@testing-library/dom': '>=7.21.4'
+
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -2642,21 +2747,18 @@ packages:
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
- '@types/babel__core@7.20.5':
- resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ '@types/aria-query@5.0.4':
+ resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
- '@types/babel__generator@7.27.0':
- resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
-
- '@types/babel__template@7.4.4':
- resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
-
- '@types/babel__traverse@7.28.0':
- resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+ '@types/chai@5.2.3':
+ resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
'@types/css-font-loading-module@0.0.7':
resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==}
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -2666,18 +2768,6 @@ packages:
'@types/glob@7.2.0':
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
- '@types/istanbul-lib-coverage@2.0.6':
- resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
-
- '@types/istanbul-lib-report@3.0.3':
- resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
-
- '@types/istanbul-reports@3.0.4':
- resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
-
- '@types/jest@30.0.0':
- resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==}
-
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -2702,33 +2792,15 @@ packages:
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
- '@types/sinonjs__fake-timers@8.1.1':
- resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
+ '@types/set-cookie-parser@2.4.10':
+ resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==}
- '@types/sizzle@2.3.10':
- resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==}
-
- '@types/stack-utils@2.0.3':
- resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
-
- '@types/tmp@0.2.6':
- resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==}
+ '@types/statuses@2.0.6':
+ resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==}
'@types/use-sync-external-store@0.0.6':
resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
- '@types/yargs-parser@21.0.3':
- resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
-
- '@types/yargs@17.0.33':
- resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
-
- '@types/yargs@17.0.35':
- resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
-
- '@types/yauzl@2.10.3':
- resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
-
'@umami/react-zen@0.245.0':
resolution: {integrity: sha512-UApl8fDJM6VDaDOc8I67sdClzLpp4e9eJB3ntf6rlUgvdllf5T+hdYiHJ98T/tDFfhZWBKuLhnVDX/qNfjlrSw==}
peerDependencies:
@@ -2736,103 +2808,34 @@ packages:
react-aria-components: ^1.0.0
react-dom: ^18.0.0 || ^19.0.0
- '@ungap/structured-clone@1.3.0':
- resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ '@vitest/expect@4.1.5':
+ resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==}
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
- cpu: [arm]
- os: [android]
+ '@vitest/mocker@4.1.5':
+ resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
- '@unrs/resolver-binding-android-arm64@1.11.1':
- resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
- cpu: [arm64]
- os: [android]
+ '@vitest/pretty-format@4.1.5':
+ resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==}
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
- cpu: [arm64]
- os: [darwin]
+ '@vitest/runner@4.1.5':
+ resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==}
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
- cpu: [x64]
- os: [darwin]
+ '@vitest/snapshot@4.1.5':
+ resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==}
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
- cpu: [x64]
- os: [freebsd]
+ '@vitest/spy@4.1.5':
+ resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==}
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
- cpu: [ppc64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
- cpu: [s390x]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
- cpu: [arm64]
- os: [win32]
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
- cpu: [ia32]
- os: [win32]
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
- cpu: [x64]
- os: [win32]
+ '@vitest/utils@4.1.5':
+ resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==}
'@xstate/fsm@1.6.5':
resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==}
@@ -2851,21 +2854,9 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- aggregate-error@3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
-
ajv@8.18.0:
resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
- ansi-colors@4.1.3:
- resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
- engines: {node: '>=6'}
-
- ansi-escapes@4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
-
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -2893,19 +2884,9 @@ packages:
any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
- arch@2.2.0:
- resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
-
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
- argparse@1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
-
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -2913,6 +2894,13 @@ packages:
resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
engines: {node: '>=10'}
+ aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
+
array-buffer-byte-length@1.0.2:
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
@@ -2925,28 +2913,14 @@ packages:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
- asn1@0.2.6:
- resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
-
- assert-plus@1.0.0:
- resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
- engines: {node: '>=0.8'}
-
- astral-regex@2.0.0:
- resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
- engines: {node: '>=8'}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
async-function@1.0.0:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
- at-least-node@1.0.0:
- resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
- engines: {node: '>= 4.0.0'}
-
autoprefixer@10.5.0:
resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==}
engines: {node: ^10 || ^12 || >=14}
@@ -2958,44 +2932,13 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
- aws-sign2@0.7.0:
- resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
-
aws-ssl-profiles@1.1.2:
resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==}
engines: {node: '>= 6.0.0'}
- aws4@1.13.2:
- resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==}
-
- babel-jest@30.3.0:
- resolution: {integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- peerDependencies:
- '@babel/core': ^7.11.0 || ^8.0.0-0
-
- babel-plugin-istanbul@7.0.1:
- resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==}
- engines: {node: '>=12'}
-
- babel-plugin-jest-hoist@30.3.0:
- resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
babel-plugin-react-compiler@19.1.0-rc.2:
resolution: {integrity: sha512-kSNA//p5fMO6ypG8EkEVPIqAjwIXm5tMjfD1XRPL/sRjYSbJ6UsvORfaeolNWnZ9n310aM0xJP7peW26BuCVzA==}
- babel-preset-current-node-syntax@1.2.0:
- resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==}
- peerDependencies:
- '@babel/core': ^7.0.0 || ^8.0.0-0
-
- babel-preset-jest@30.3.0:
- resolution: {integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- peerDependencies:
- '@babel/core': ^7.11.0 || ^8.0.0-beta.1
-
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -3007,17 +2950,11 @@ packages:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
engines: {node: '>= 0.6.0'}
- base64-js@1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
-
baseline-browser-mapping@2.10.19:
resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==}
engines: {node: '>=6.0.0'}
hasBin: true
- bcrypt-pbkdf@1.0.2:
- resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
-
bcryptjs@3.0.3:
resolution: {integrity: sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==}
hasBin: true
@@ -3026,11 +2963,8 @@ packages:
resolution: {integrity: sha512-7zrmXjAK8u8Z6SOe4R65XObOR5X+Y2I/VVku3t5cPOGQ8/WsBcfFmfnIPiEl5EBMDOzPHRwbiPbMtQBKYdw7RA==}
hasBin: true
- blob-util@2.0.2:
- resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==}
-
- bluebird@3.7.2:
- resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ bidi-js@1.0.3:
+ resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -3038,9 +2972,6 @@ packages:
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
- brace-expansion@1.1.14:
- resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
-
brace-expansion@2.0.2:
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
@@ -3062,25 +2993,12 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- bs-logger@0.2.6:
- resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
- engines: {node: '>= 6'}
-
- bser@2.1.1:
- resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
-
- buffer-crc32@0.2.13:
- resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
-
buffer-equal-constant-time@1.0.1:
resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- buffer@5.7.1:
- resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
-
bundle-require@5.1.0:
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3099,10 +3017,6 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
- cachedir@2.4.0:
- resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==}
- engines: {node: '>=6'}
-
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -3119,10 +3033,6 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- camelcase@5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
-
camelcase@6.3.0:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
@@ -3136,8 +3046,9 @@ packages:
caniuse-lite@1.0.30001788:
resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==}
- caseless@0.12.0:
- resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+ chai@6.2.2:
+ resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
+ engines: {node: '>=18'}
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@@ -3151,10 +3062,6 @@ packages:
resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
- char-regex@1.0.2:
- resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
- engines: {node: '>=10'}
-
chart.js@4.5.1:
resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==}
engines: {pnpm: '>=8'}
@@ -3173,10 +3080,6 @@ packages:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
- ci-info@4.3.0:
- resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==}
- engines: {node: '>=8'}
-
ci-info@4.4.0:
resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
engines: {node: '>=8'}
@@ -3187,27 +3090,12 @@ packages:
citty@0.2.2:
resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==}
- cjs-module-lexer@2.2.0:
- resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
-
classnames@2.5.1:
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
- clean-stack@2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
- engines: {node: '>=6'}
-
- cli-cursor@3.1.0:
- resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
- engines: {node: '>=8'}
-
- cli-table3@0.6.1:
- resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==}
- engines: {node: 10.* || >= 12.*}
-
- cli-truncate@2.1.0:
- resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
- engines: {node: '>=8'}
+ cli-width@4.1.0:
+ resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
+ engines: {node: '>= 12'}
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
@@ -3224,16 +3112,9 @@ packages:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
- co@4.6.0:
- resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
- engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
-
code-block-writer@13.0.3:
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
- collect-v8-coverage@1.0.3:
- resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
-
color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -3253,17 +3134,6 @@ packages:
colorette@1.4.0:
resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
- colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
-
- colors@1.4.0:
- resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==}
- engines: {node: '>=0.1.90'}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
@@ -3271,10 +3141,6 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- commander@6.2.1:
- resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
- engines: {node: '>= 6'}
-
commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
@@ -3283,10 +3149,6 @@ packages:
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
engines: {node: ^12.20.0 || >=14}
- common-tags@1.8.2:
- resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
- engines: {node: '>=4.0.0'}
-
commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
@@ -3309,8 +3171,9 @@ packages:
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- core-util-is@1.0.2:
- resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
+ cookie@1.1.1:
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
+ engines: {node: '>=18'}
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
@@ -3389,10 +3252,17 @@ packages:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ css-tree@3.2.1:
+ resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
css-what@6.2.2:
resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
engines: {node: '>= 6'}
+ css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+
cssdb@8.8.0:
resolution: {integrity: sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==}
@@ -3430,11 +3300,6 @@ packages:
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
- cypress@15.14.0:
- resolution: {integrity: sha512-AHt9YLKVl6uOFfXsLM3+LSZFwsx36BJRyFv4CjsqcRgr+V9kir0IPVRZUgqZVNudRalx771A1c4yR3DmXvSiBQ==}
- engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0}
- hasBin: true
-
d3-array@2.12.1:
resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
@@ -3470,10 +3335,6 @@ packages:
d3-zoom@2.0.0:
resolution: {integrity: sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==}
- dashdash@1.14.1:
- resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
- engines: {node: '>=0.10'}
-
dashify@2.0.0:
resolution: {integrity: sha512-hpA5C/YrPjucXypHPPc0oJ1l9Hf6wWbiOL7Ik42cxnsUOhWiCB/fylKbKqqJalW9FgkNQCw16YO8uW9Hs0Iy1A==}
engines: {node: '>=4'}
@@ -3482,6 +3343,10 @@ packages:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
+ data-urls@7.0.0:
+ resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
data-view-buffer@1.0.2:
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
@@ -3502,17 +3367,6 @@ packages:
date-fns@4.1.0:
resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
- dayjs@1.11.20:
- resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==}
-
- debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
@@ -3522,13 +3376,8 @@ packages:
supports-color:
optional: true
- dedent@1.7.2:
- resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==}
- peerDependencies:
- babel-plugin-macros: ^3.1.0
- peerDependenciesMeta:
- babel-plugin-macros:
- optional: true
+ decimal.js@10.6.0:
+ resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
deepmerge-ts@7.1.5:
resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==}
@@ -3553,14 +3402,14 @@ packages:
resolution: {integrity: sha512-gPqh0mKTPvaUZGAuHbrBUYKZWBNAeHG7TU3QH5EhVwPMyKvmfJaNXhcD2jTcXsJRRcffuho4vaYweu80dRrMGA==}
engines: {node: '>=18'}
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
denque@2.1.0:
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
engines: {node: '>=0.10'}
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
@@ -3574,10 +3423,6 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- detect-newline@3.1.0:
- resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
- engines: {node: '>=8'}
-
diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
@@ -3586,6 +3431,12 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
+ dom-accessibility-api@0.5.16:
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+
+ dom-accessibility-api@0.6.3:
+ resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
+
dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
@@ -3635,9 +3486,6 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- ecc-jsbn@0.1.2:
- resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
-
ecdsa-sig-formatter@1.0.11:
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
@@ -3650,10 +3498,6 @@ packages:
electron-to-chromium@1.5.340:
resolution: {integrity: sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==}
- emittery@0.13.1:
- resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
- engines: {node: '>=12'}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3664,13 +3508,6 @@ packages:
resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
engines: {node: '>=14'}
- end-of-stream@1.4.5:
- resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
-
- enquirer@2.4.1:
- resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
- engines: {node: '>=8.6'}
-
entities@2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
@@ -3678,6 +3515,10 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ entities@8.0.0:
+ resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
+ engines: {node: '>=20.19.0'}
+
env-paths@3.0.0:
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3697,6 +3538,9 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
+
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
@@ -3727,66 +3571,25 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
- escape-string-regexp@2.0.0:
- resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
- engines: {node: '>=8'}
-
- esprima@4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
-
estree-walker@0.6.1:
resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
- eventemitter2@6.4.7:
- resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==}
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
- execa@4.1.0:
- resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
- engines: {node: '>=10'}
-
- execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
-
- executable@4.1.1:
- resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
- engines: {node: '>=4'}
-
- exit-x@0.2.2:
- resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==}
- engines: {node: '>= 0.8.0'}
-
- expect@30.1.1:
- resolution: {integrity: sha512-OKe7cdic4qbfWd/CcgwJvvCrNX2KWfuMZee9AfJHL1gTYmvqjBjZG1a2NwfhspBzxzlXwsN75WWpKTYfsJpBxg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- expect@30.3.0:
- resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ expect-type@1.3.0:
+ resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
+ engines: {node: '>=12.0.0'}
exsolve@1.0.8:
resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
- extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
-
- extract-zip@2.0.1:
- resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
- engines: {node: '>= 10.17.0'}
- hasBin: true
-
- extsprintf@1.3.0:
- resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
- engines: {'0': node >=0.6.0}
-
fast-check@3.23.2:
resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==}
engines: {node: '>=8.0.0'}
@@ -3798,21 +3601,21 @@ packages:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ fast-string-truncated-width@3.0.3:
+ resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==}
+
+ fast-string-width@3.0.2:
+ resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+ fast-wrap-ansi@0.2.0:
+ resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==}
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
- fb-watchman@2.0.2:
- resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
-
- fd-slicer@1.1.0:
- resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
-
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -3829,18 +3632,10 @@ packages:
fflate@0.4.8:
resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==}
- figures@3.2.0:
- resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
- engines: {node: '>=8'}
-
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
- find-up@4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
-
fix-dts-default-cjs-exports@1.0.1:
resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==}
@@ -3852,13 +3647,6 @@ packages:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
- forever-agent@0.6.1:
- resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
-
- form-data@4.0.5:
- resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
- engines: {node: '>= 6'}
-
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -3884,13 +3672,14 @@ packages:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'}
- fs-extra@9.1.0:
- resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
- engines: {node: '>=10'}
-
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -3924,10 +3713,6 @@ packages:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
- get-package-type@0.1.0:
- resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
- engines: {node: '>=8.0.0'}
-
get-port-please@3.2.0:
resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==}
@@ -3935,14 +3720,6 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
- get-stream@5.2.0:
- resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
- engines: {node: '>=8'}
-
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
get-symbol-description@1.1.0:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
@@ -3950,9 +3727,6 @@ packages:
get-tsconfig@4.13.0:
resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
- getpass@0.1.7:
- resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
-
giget@2.0.0:
resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
hasBin: true
@@ -3975,10 +3749,6 @@ packages:
engines: {node: '>=12'}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
- global-dirs@3.0.1:
- resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
- engines: {node: '>=10'}
-
globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
@@ -4004,10 +3774,9 @@ packages:
graphmatch@1.1.1:
resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==}
- handlebars@4.7.9:
- resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==}
- engines: {node: '>=0.4.7'}
- hasBin: true
+ graphql@16.14.0:
+ resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
has-bigints@1.1.0:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
@@ -4036,17 +3805,12 @@ packages:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
- hasha@5.2.2:
- resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==}
- engines: {node: '>=8'}
-
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- hasown@2.0.3:
- resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==}
- engines: {node: '>= 0.4'}
+ headers-polyfill@5.0.1:
+ resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==}
hono@4.12.9:
resolution: {integrity: sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==}
@@ -4055,24 +3819,13 @@ packages:
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
- html-escaper@2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
-
- http-signature@1.4.0:
- resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==}
- engines: {node: '>=0.10'}
+ html-encoding-sniffer@6.0.0:
+ resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
http-status-codes@2.3.0:
resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==}
- human-signals@1.1.1:
- resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
- engines: {node: '>=8.12.0'}
-
- human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
iconv-lite@0.7.2:
resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}
engines: {node: '>=0.10.0'}
@@ -4089,9 +3842,6 @@ packages:
icu-minify@4.9.1:
resolution: {integrity: sha512-6NkfF9GHHFouqnz+wuiLjCWQiyxoEyJ5liUv4Jxxo/8wyhV7MY0L0iTEGDAVEa4aAD58WqTxFMa20S5nyMjwNw==}
- ieee754@1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -4118,15 +3868,6 @@ packages:
resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
engines: {node: '>=8'}
- import-local@3.2.0:
- resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
- engines: {node: '>=8'}
- hasBin: true
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
indent-string@4.0.0:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
@@ -4138,10 +3879,6 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- ini@2.0.0:
- resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
- engines: {node: '>=10'}
-
internal-slot@1.1.0:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
@@ -4212,10 +3949,6 @@ packages:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
- is-generator-fn@2.1.0:
- resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
- engines: {node: '>=6'}
-
is-generator-function@1.1.0:
resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
engines: {node: '>= 0.4'}
@@ -4224,10 +3957,6 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
- is-installed-globally@0.4.0:
- resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
- engines: {node: '>=10'}
-
is-localhost-ip@3.0.1:
resolution: {integrity: sha512-OwNA8bw72L/gDVfCrhJ3GFb3AGp+I7t+cvJaQGkiLZgeBAZmAygIduAdhLq56JycuJ68NCICxA2yyIaAtbR9Kg==}
engines: {node: '>=18'}
@@ -4243,6 +3972,9 @@ packages:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
+ is-node-process@1.2.0:
+ resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
+
is-number-object@1.1.1:
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
engines: {node: '>= 0.4'}
@@ -4255,10 +3987,6 @@ packages:
resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
is-path-inside@4.0.0:
resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
engines: {node: '>=12'}
@@ -4267,6 +3995,9 @@ packages:
resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
engines: {node: '>=0.10.0'}
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
is-property@1.0.2:
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
@@ -4288,10 +4019,6 @@ packages:
is-standalone-pwa@0.1.1:
resolution: {integrity: sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g==}
- is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
-
is-string@1.1.1:
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
engines: {node: '>= 0.4'}
@@ -4304,13 +4031,6 @@ packages:
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
engines: {node: '>= 0.4'}
- is-typedarray@1.0.0:
- resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
-
- is-unicode-supported@0.1.0:
- resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
- engines: {node: '>=10'}
-
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
@@ -4336,180 +4056,9 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- isstream@0.1.2:
- resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
-
- istanbul-lib-coverage@3.2.2:
- resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
- engines: {node: '>=8'}
-
- istanbul-lib-instrument@6.0.3:
- resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
- engines: {node: '>=10'}
-
- istanbul-lib-report@3.0.1:
- resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
- engines: {node: '>=10'}
-
- istanbul-lib-source-maps@5.0.6:
- resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
- engines: {node: '>=10'}
-
- istanbul-reports@3.2.0:
- resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
- engines: {node: '>=8'}
-
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
- jest-changed-files@30.3.0:
- resolution: {integrity: sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-circus@30.3.0:
- resolution: {integrity: sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-cli@30.3.0:
- resolution: {integrity: sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
- jest-config@30.3.0:
- resolution: {integrity: sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- peerDependencies:
- '@types/node': '*'
- esbuild-register: '>=3.4.0'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- '@types/node':
- optional: true
- esbuild-register:
- optional: true
- ts-node:
- optional: true
-
- jest-diff@30.1.1:
- resolution: {integrity: sha512-LUU2Gx8EhYxpdzTR6BmjL1ifgOAQJQELTHOiPv9KITaKjZvJ9Jmgigx01tuZ49id37LorpGc9dPBPlXTboXScw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-diff@30.3.0:
- resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-docblock@30.2.0:
- resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-each@30.3.0:
- resolution: {integrity: sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-environment-node@30.3.0:
- resolution: {integrity: sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-haste-map@30.3.0:
- resolution: {integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-leak-detector@30.3.0:
- resolution: {integrity: sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-matcher-utils@30.1.1:
- resolution: {integrity: sha512-SuH2QVemK48BNTqReti6FtjsMPFsSOD/ZzRxU1TttR7RiRsRSe78d03bb4Cx6D4bQC/80Q8U4VnaaAH9FlbZ9w==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-matcher-utils@30.3.0:
- resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-message-util@30.1.0:
- resolution: {integrity: sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-message-util@30.3.0:
- resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-mock@30.0.5:
- resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-mock@30.3.0:
- resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-pnp-resolver@1.2.3:
- resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
- engines: {node: '>=6'}
- peerDependencies:
- jest-resolve: '*'
- peerDependenciesMeta:
- jest-resolve:
- optional: true
-
- jest-regex-util@30.0.1:
- resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-resolve-dependencies@30.3.0:
- resolution: {integrity: sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-resolve@30.3.0:
- resolution: {integrity: sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-runner@30.3.0:
- resolution: {integrity: sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-runtime@30.3.0:
- resolution: {integrity: sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-snapshot@30.3.0:
- resolution: {integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-util@30.0.5:
- resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-util@30.3.0:
- resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-validate@30.3.0:
- resolution: {integrity: sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-watcher@30.3.0:
- resolution: {integrity: sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-worker@30.3.0:
- resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest@30.3.0:
- resolution: {integrity: sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
@@ -4521,16 +4070,18 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@3.14.2:
- resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
- hasBin: true
-
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsbn@0.1.1:
- resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
+ jsdom@29.1.1:
+ resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
+ peerDependencies:
+ canvas: ^3.0.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
@@ -4546,12 +4097,6 @@ packages:
json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
- json-schema@0.4.0:
- resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
-
- json-stringify-safe@5.0.1:
- resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -4560,17 +4105,10 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
- jsonfile@6.2.0:
- resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
-
jsonwebtoken@9.0.3:
resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==}
engines: {node: '>=12', npm: '>=6'}
- jsprim@2.0.2:
- resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==}
- engines: {'0': node >=0.6.0}
-
jszip@3.10.1:
resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
@@ -4588,13 +4126,83 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
- leven@3.1.0:
- resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
- engines: {node: '>=6'}
-
lie@3.3.0:
resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -4606,15 +4214,6 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- listr2@3.14.0:
- resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- enquirer: '>= 2.3.0 < 3'
- peerDependenciesMeta:
- enquirer:
- optional: true
-
load-json-file@4.0.0:
resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
engines: {node: '>=4'}
@@ -4627,10 +4226,6 @@ packages:
resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
engines: {node: '>= 12.13.0'}
- locate-path@5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
-
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
@@ -4661,17 +4256,6 @@ packages:
lodash.uniq@4.5.0:
resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
- lodash@4.18.1:
- resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
-
- log-symbols@4.1.0:
- resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
- engines: {node: '>=10'}
-
- log-update@4.0.0:
- resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
- engines: {node: '>=10'}
-
long@5.3.2:
resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
@@ -4685,6 +4269,10 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@11.3.6:
+ resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==}
+ engines: {node: 20 || >=22}
+
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -4692,6 +4280,11 @@ packages:
resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==}
engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
+ lucide-react@0.542.0:
+ resolution: {integrity: sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
lucide-react@0.555.0:
resolution: {integrity: sha512-D8FvHUGbxWBRQM90NZeIyhAvkFfsh3u9ekrMvJ30Z6gnpBHS6HC6ldLg7tL45hwiIz/u66eKDtdA23gwwGsAHA==}
peerDependencies:
@@ -4702,19 +4295,16 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ lz-string@1.5.0:
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- make-dir@4.0.0:
- resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
- engines: {node: '>=10'}
-
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
- makeerror@1.0.12:
- resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
-
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -4732,13 +4322,16 @@ packages:
mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+ mdn-data@2.27.1:
+ resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
+
+ memoize-one@5.2.1:
+ resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+
memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -4747,17 +4340,9 @@ packages:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
minimatch@10.2.5:
resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
@@ -4766,9 +4351,6 @@ packages:
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
- minimatch@3.1.5:
- resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
-
minimatch@5.1.6:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
@@ -4821,6 +4403,20 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ msw@2.14.5:
+ resolution: {integrity: sha512-X6G05oX4x0e+CNI55KMdhMmwHCBKf2iwazGr+iwsdoJ94JA1ED7wSXb6V+lLPdqFkmIlPiGYvayqnaNcOzobDA==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>= 4.8.x'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ mute-stream@3.0.0:
+ resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+
mysql2@3.15.3:
resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==}
engines: {node: '>= 8.0'}
@@ -4837,21 +4433,10 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- napi-postinstall@0.3.4:
- resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
negotiator@1.0.0:
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
engines: {node: '>= 0.6'}
- neo-async@2.6.2:
- resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
-
next-intl-swc-plugin-extractor@4.9.1:
resolution: {integrity: sha512-8whJJ6oxJz8JqkHarggmmuEDyXgC7nEnaPhZD91CJwEWW4xp0AST3Mw17YxvHyP2vAF3taWfFbs1maD+WWtz3w==}
@@ -4907,9 +4492,6 @@ packages:
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- node-int64@0.4.0:
- resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
-
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
@@ -4923,10 +4505,6 @@ packages:
normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
normalize-url@6.1.0:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
@@ -4936,10 +4514,6 @@ packages:
engines: {node: '>= 4'}
hasBin: true
- npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
-
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
@@ -4964,18 +4538,17 @@ packages:
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
- ospath@1.2.2:
- resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==}
+ outvariant@1.4.3:
+ resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
own-keys@1.0.1:
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
@@ -4985,22 +4558,6 @@ packages:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
- p-limit@2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
-
- p-map@4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
-
p-map@7.0.4:
resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==}
engines: {node: '>=18'}
@@ -5013,10 +4570,6 @@ packages:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
- p-try@2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
-
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
@@ -5038,13 +4591,12 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
+ parse5@8.0.1:
+ resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==}
+
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
@@ -5064,6 +4616,9 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-to-regexp@6.3.0:
+ resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
+
path-type@3.0.0:
resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
engines: {node: '>=4'}
@@ -5079,15 +4634,9 @@ packages:
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
- pend@1.2.0:
- resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
-
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
- performance-now@2.1.0:
- resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
-
pg-cloudflare@1.3.0:
resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==}
@@ -5158,16 +4707,22 @@ packages:
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
- pkg-dir@4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
-
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
pkg-types@2.3.0:
resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+ playwright-core@1.59.1:
+ resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright@1.59.1:
+ resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
po-parser@2.1.1:
resolution: {integrity: sha512-ECF4zHLbUItpUgE3OTtLKlPjeBN+fKEczj2zYjDfCGOzicNs0GK3Vg2IoAYwx7LH/XYw43fZQP6xnZ4TkNxSLQ==}
@@ -5582,6 +5137,10 @@ packages:
resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.14:
+ resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ engines: {node: ^10 || ^12 || >=14}
+
postgres-array@2.0.0:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
@@ -5615,17 +5174,9 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
- pretty-bytes@5.6.0:
- resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
- engines: {node: '>=6'}
-
- pretty-format@30.0.5:
- resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- pretty-format@30.3.0:
- resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ pretty-format@27.5.1:
+ resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
prisma@7.7.0:
resolution: {integrity: sha512-HlgwRBt1uEFB9LStHL4HLYDvoi4BNu1rYA0hPG0zCAEyK9SaZBqp7E5Rjpc3Qh8Lex/ye/svoHZ0OWoFNhWxuQ==}
@@ -5643,10 +5194,6 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
- process@0.11.10:
- resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
- engines: {node: '>= 0.6.0'}
-
promise.series@0.2.0:
resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==}
engines: {node: '>=0.12'}
@@ -5661,11 +5208,9 @@ packages:
proper-lockfile@4.1.2:
resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
- proxy-from-env@1.0.0:
- resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==}
-
- pump@3.0.4:
- resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
pure-rand@6.1.0:
resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
@@ -5676,10 +5221,6 @@ packages:
pure-rand@8.4.0:
resolution: {integrity: sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==}
- qs@6.14.2:
- resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==}
- engines: {node: '>=0.6'}
-
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -5720,8 +5261,8 @@ packages:
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+ react-is@17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
react-redux@9.2.0:
resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
@@ -5741,6 +5282,13 @@ packages:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
+ react-simple-maps@2.3.0:
+ resolution: {integrity: sha512-IZVeiPSRZKwD6I/2NvXpQ2uENYGDGZp8DvZjkapcxuJ/LQHTfl+Byb+KNgY7s+iatRA2ad8LnZ3AgqcjziCCsw==}
+ peerDependencies:
+ prop-types: ^15.7.2
+ react: ^16.8.0 || 17.x
+ react-dom: ^16.8.0 || 17.x
+
react-simple-maps@3.0.0:
resolution: {integrity: sha512-vKNFrvpPG8Vyfdjnz5Ne1N56rZlDfHXv5THNXOVZMqbX1rWZA48zQuYT03mx6PAKanqarJu/PDLgshIZAfHHqw==}
peerDependencies:
@@ -5762,6 +5310,13 @@ packages:
react-dom:
optional: true
+ react-window@1.8.11:
+ resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==}
+ engines: {node: '>8.0.0'}
+ peerDependencies:
+ react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
react-window@2.2.7:
resolution: {integrity: sha512-SH5nvfUQwGHYyriDUAOt7wfPsfG9Qxd6OdzQxl5oQ4dsSsUicqQvjV7dR+NqZ4coY0fUn3w1jnC5PwzIUWEg5w==}
peerDependencies:
@@ -5786,6 +5341,10 @@ packages:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
+ redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+
redis@5.12.1:
resolution: {integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==}
engines: {node: '>= 18.19.0'}
@@ -5807,9 +5366,6 @@ packages:
request-ip@3.3.0:
resolution: {integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==}
- request-progress@3.0.0:
- resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==}
-
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -5818,10 +5374,6 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
- resolve-cwd@3.0.0:
- resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
- engines: {node: '>=8'}
-
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -5843,20 +5395,21 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- restore-cursor@3.1.0:
- resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
- engines: {node: '>=8'}
-
retry@0.12.0:
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
engines: {node: '>= 4'}
+ rettime@0.11.11:
+ resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rfdc@1.4.1:
- resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+ rolldown@1.0.0-rc.18:
+ resolution: {integrity: sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
rollup-plugin-copy@3.5.0:
resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==}
@@ -5921,9 +5474,6 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- rxjs@7.8.2:
- resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
-
safe-array-concat@1.1.3:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
@@ -5948,6 +5498,10 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
@@ -5967,6 +5521,10 @@ packages:
seq-queue@0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
+ serialize-error@12.0.0:
+ resolution: {integrity: sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==}
+ engines: {node: '>=18'}
+
serialize-error@13.0.1:
resolution: {integrity: sha512-bBZaRwLH9PN5HbLCjPId4dP5bNGEtumcErgOX952IsvOhVPrm3/AeK1y0UHA/QaPG701eg0yEnOKsCOC6X/kaA==}
engines: {node: '>=20'}
@@ -5975,6 +5533,9 @@ packages:
resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==}
engines: {node: '>=20.0.0'}
+ set-cookie-parser@3.1.0:
+ resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
+
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -6030,6 +5591,9 @@ packages:
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -6048,14 +5612,6 @@ packages:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
- slice-ansi@3.0.0:
- resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
- engines: {node: '>=8'}
-
- slice-ansi@4.0.0:
- resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
- engines: {node: '>=10'}
-
smob@1.6.1:
resolution: {integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==}
engines: {node: '>=20.0.0'}
@@ -6067,9 +5623,6 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
- source-map-support@0.5.13:
- resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
-
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
@@ -6097,40 +5650,37 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
- sprintf-js@1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
-
sqlstring@2.3.3:
resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==}
engines: {node: '>= 0.6'}
- sshpk@1.18.0:
- resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
- engines: {node: '>=0.10.0'}
- hasBin: true
-
stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
- stack-utils@2.0.6:
- resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
- engines: {node: '>=10'}
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
std-env@3.10.0:
resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
+ std-env@4.1.0:
+ resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
+
stop-iteration-iterator@1.1.0:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
engines: {node: '>= 0.4'}
+ strict-event-emitter@0.5.1:
+ resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
+
string-hash@1.1.3:
resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
- string-length@4.0.2:
- resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
- engines: {node: '>=10'}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -6170,16 +5720,8 @@ packages:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
- strip-bom@4.0.0:
- resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
- engines: {node: '>=8'}
-
- strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
style-inject@0.3.0:
@@ -6217,10 +5759,6 @@ packages:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
- supports-color@8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
-
supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
@@ -6238,15 +5776,8 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
- synckit@0.11.12:
- resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
-
- systeminformation@5.31.5:
- resolution: {integrity: sha512-5SyLdip4/3alxD4Kh+63bUQTJmu7YMfYQTC+koZy7X73HgNqZSD2P4wOZQWtUncvPvcEmnfIjCoygN4MRoEejQ==}
- engines: {node: '>=8.0.0'}
- os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
- hasBin: true
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
tagged-tag@1.0.0:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
@@ -6277,10 +5808,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- test-exclude@6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
-
thenby@1.4.0:
resolution: {integrity: sha512-D+BkEl5MpeTbQ1Rz0io/TLZmwmYUAgvUpS1r2eKUvPicYOnpqzjZE6bVa7rSEYv189zkSM+CVc+hG5X7nVe9LQ==}
@@ -6291,12 +5818,6 @@ packages:
thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
- throttleit@1.0.1:
- resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==}
-
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -6304,6 +5825,9 @@ packages:
resolution: {integrity: sha512-xDHxKKS1FdF0Tv2P+QT7IeSEg74K/8cEDzbv3Tv6UyHHUgBOjOiQiBp818MGj66dhurQus/IBcoAbwIKtSGc6Q==}
engines: {node: '>=14'}
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
@@ -6319,20 +5843,17 @@ packages:
resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'}
- tldts-core@6.1.86:
- resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
+ tinyrainbow@3.1.0:
+ resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
+ engines: {node: '>=14.0.0'}
- tldts@6.1.86:
- resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==}
+ tldts-core@7.0.30:
+ resolution: {integrity: sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==}
+
+ tldts@7.0.30:
+ resolution: {integrity: sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==}
hasBin: true
- tmp@0.2.5:
- resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==}
- engines: {node: '>=14.14'}
-
- tmpl@1.0.5:
- resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -6341,10 +5862,14 @@ packages:
resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==}
hasBin: true
- tough-cookie@5.1.2:
- resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
+ tough-cookie@6.0.1:
+ resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==}
engines: {node: '>=16'}
+ tr46@6.0.0:
+ resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==}
+ engines: {node: '>=20'}
+
tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
hasBin: true
@@ -6352,33 +5877,6 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- ts-jest@29.4.9:
- resolution: {integrity: sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@babel/core': '>=7.0.0-beta.0 <8'
- '@jest/transform': ^29.0.0 || ^30.0.0
- '@jest/types': ^29.0.0 || ^30.0.0
- babel-jest: ^29.0.0 || ^30.0.0
- esbuild: '*'
- jest: ^29.0.0 || ^30.0.0
- jest-util: ^29.0.0 || ^30.0.0
- typescript: '>=4.3 <7'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- '@jest/transform':
- optional: true
- '@jest/types':
- optional: true
- babel-jest:
- optional: true
- esbuild:
- optional: true
- jest-util:
- optional: true
-
ts-morph@28.0.0:
resolution: {integrity: sha512-Wp3tnZ2bzwxyTZMtgWVzXDfm7lB1Drz+y9DmmYH/L702PQhPyVrp3pkou3yIz4qjS14GY9kcpmLiOOMvl8oG1g==}
@@ -6396,9 +5894,6 @@ packages:
'@swc/wasm':
optional: true
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -6426,24 +5921,6 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- tunnel-agent@0.6.0:
- resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
-
- tweetnacl@0.14.5:
- resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
-
- type-detect@4.0.8:
- resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
- engines: {node: '>=4'}
-
- type-fest@0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
-
- type-fest@0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
-
type-fest@4.41.0:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
@@ -6483,11 +5960,6 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
- uglify-js@3.19.3:
- resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
- engines: {node: '>=0.8.0'}
- hasBin: true
-
unbox-primitive@1.1.0:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
@@ -6495,6 +5967,10 @@ packages:
undici-types@7.19.2:
resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
+ undici@7.25.0:
+ resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==}
+ engines: {node: '>=20.18.1'}
+
unicorn-magic@0.3.0:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
@@ -6503,16 +5979,8 @@ packages:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
- unrs-resolver@1.11.1:
- resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
-
- untildify@4.0.0:
- resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
- engines: {node: '>=8'}
+ until-async@3.0.2:
+ resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==}
update-browserslist-db@1.1.3:
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
@@ -6539,22 +6007,17 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ uuid@11.1.1:
+ resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==}
+ hasBin: true
+
uuid@14.0.0:
resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==}
hasBin: true
- uuid@8.3.2:
- resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
- deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
- hasBin: true
-
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
- v8-to-istanbul@9.3.0:
- resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
- engines: {node: '>=10.12.0'}
-
valibot@1.2.0:
resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
peerDependencies:
@@ -6570,17 +6033,110 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
- verror@1.10.0:
- resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
- engines: {'0': node >=0.6.0}
+ vite@8.0.11:
+ resolution: {integrity: sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.1.18
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
- walker@1.0.8:
- resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+ vitest@4.1.5:
+ resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.1.5
+ '@vitest/browser-preview': 4.1.5
+ '@vitest/browser-webdriverio': 4.1.5
+ '@vitest/coverage-istanbul': 4.1.5
+ '@vitest/coverage-v8': 4.1.5
+ '@vitest/ui': 4.1.5
+ happy-dom: '*'
+ jsdom: '*'
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
+ optional: true
+ '@vitest/coverage-istanbul':
+ optional: true
+ '@vitest/coverage-v8':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ w3c-xmlserializer@5.0.0:
+ resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
web-streams-polyfill@3.3.3:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
+ webidl-conversions@8.0.1:
+ resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==}
+ engines: {node: '>=20'}
+
+ whatwg-mimetype@5.0.0:
+ resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==}
+ engines: {node: '>=20'}
+
+ whatwg-url@16.0.1:
+ resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
which-boxed-primitive@1.1.1:
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
engines: {node: '>= 0.4'}
@@ -6606,12 +6162,10 @@ packages:
engines: {node: '>= 8'}
hasBin: true
- wordwrap@1.0.0:
- resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
-
- wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
+ hasBin: true
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
@@ -6624,9 +6178,12 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- write-file-atomic@5.0.1:
- resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
@@ -6660,17 +6217,10 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
- yauzl@2.10.0:
- resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
-
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
zeptomatch@2.1.0:
resolution: {integrity: sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==}
@@ -6697,11 +6247,33 @@ packages:
snapshots:
+ '@adobe/css-tools@4.4.4': {}
+
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.30
+ '@asamuzakjp/css-color@5.1.11':
+ dependencies:
+ '@asamuzakjp/generational-cache': 1.0.1
+ '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-tokenizer': 4.0.0
+
+ '@asamuzakjp/dom-selector@7.1.1':
+ dependencies:
+ '@asamuzakjp/generational-cache': 1.0.1
+ '@asamuzakjp/nwsapi': 2.3.9
+ bidi-js: 1.0.3
+ css-tree: 3.2.1
+ is-potential-custom-element-name: 1.0.1
+
+ '@asamuzakjp/generational-cache@1.0.1': {}
+
+ '@asamuzakjp/nwsapi@2.3.9': {}
+
'@babel/code-frame@7.27.1':
dependencies:
'@babel/helper-validator-identifier': 7.27.1
@@ -6716,7 +6288,8 @@ snapshots:
'@babel/compat-data@7.28.0': {}
- '@babel/compat-data@7.29.0': {}
+ '@babel/compat-data@7.29.0':
+ optional: true
'@babel/core@7.28.3':
dependencies:
@@ -6731,7 +6304,7 @@ snapshots:
'@babel/traverse': 7.28.3
'@babel/types': 7.28.2
convert-source-map: 2.0.0
- debug: 4.4.3(supports-color@8.1.1)
+ debug: 4.4.3
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -6751,12 +6324,13 @@ snapshots:
'@babel/types': 7.29.0
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
- debug: 4.4.3(supports-color@8.1.1)
+ debug: 4.4.3
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ optional: true
'@babel/generator@7.28.3':
dependencies:
@@ -6773,6 +6347,7 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
+ optional: true
'@babel/helper-compilation-targets@7.27.2':
dependencies:
@@ -6789,6 +6364,7 @@ snapshots:
browserslist: 4.28.2
lru-cache: 5.1.1
semver: 6.3.1
+ optional: true
'@babel/helper-globals@7.28.0': {}
@@ -6805,6 +6381,7 @@ snapshots:
'@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
+ optional: true
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)':
dependencies:
@@ -6823,8 +6400,7 @@ snapshots:
'@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
-
- '@babel/helper-plugin-utils@7.28.6': {}
+ optional: true
'@babel/helper-string-parser@7.27.1': {}
@@ -6843,6 +6419,7 @@ snapshots:
dependencies:
'@babel/template': 7.28.6
'@babel/types': 7.29.0
+ optional: true
'@babel/parser@7.28.3':
dependencies:
@@ -6851,182 +6428,8 @@ snapshots:
'@babel/parser@7.29.2':
dependencies:
'@babel/types': 7.29.0
-
- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
optional: true
- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.28.6
- optional: true
-
- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
- '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
'@babel/runtime@7.29.2': {}
'@babel/template@7.27.2':
@@ -7040,6 +6443,7 @@ snapshots:
'@babel/code-frame': 7.29.0
'@babel/parser': 7.29.2
'@babel/types': 7.29.0
+ optional: true
'@babel/traverse@7.28.3':
dependencies:
@@ -7049,7 +6453,7 @@ snapshots:
'@babel/parser': 7.28.3
'@babel/template': 7.27.2
'@babel/types': 7.28.2
- debug: 4.4.3(supports-color@8.1.1)
+ debug: 4.4.3
transitivePeerDependencies:
- supports-color
@@ -7061,9 +6465,10 @@ snapshots:
'@babel/parser': 7.29.2
'@babel/template': 7.28.6
'@babel/types': 7.29.0
- debug: 4.4.3(supports-color@8.1.1)
+ debug: 4.4.3
transitivePeerDependencies:
- supports-color
+ optional: true
'@babel/types@7.28.2':
dependencies:
@@ -7074,8 +6479,7 @@ snapshots:
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
-
- '@bcoe/v8-coverage@0.2.3': {}
+ optional: true
'@biomejs/biome@2.4.12':
optionalDependencies:
@@ -7112,6 +6516,10 @@ snapshots:
'@biomejs/cli-win32-x64@2.4.12':
optional: true
+ '@bramus/specificity@2.4.2':
+ dependencies:
+ css-tree: 3.2.1
+
'@clack/core@0.5.0':
dependencies:
picocolors: 1.1.1
@@ -7156,6 +6564,10 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 4.0.0
+ '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)':
+ optionalDependencies:
+ css-tree: 3.2.1
+
'@csstools/css-tokenizer@4.0.0': {}
'@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
@@ -7453,34 +6865,6 @@ snapshots:
dependencies:
postcss: 8.5.10
- '@cypress/request@3.0.10':
- dependencies:
- aws-sign2: 0.7.0
- aws4: 1.13.2
- caseless: 0.12.0
- combined-stream: 1.0.8
- extend: 3.0.2
- forever-agent: 0.6.1
- form-data: 4.0.5
- http-signature: 1.4.0
- is-typedarray: 1.0.0
- isstream: 0.1.2
- json-stringify-safe: 5.0.1
- mime-types: 2.1.35
- performance-now: 2.1.0
- qs: 6.14.2
- safe-buffer: 5.2.1
- tough-cookie: 5.1.2
- tunnel-agent: 0.6.0
- uuid: 8.3.2
-
- '@cypress/xvfb@1.2.4(supports-color@8.1.1)':
- dependencies:
- debug: 3.2.7(supports-color@8.1.1)
- lodash.once: 4.1.1
- transitivePeerDependencies:
- - supports-color
-
'@date-fns/utc@2.1.1': {}
'@dicebear/adventurer-neutral@9.4.2(@dicebear/core@9.4.2)':
@@ -7835,6 +7219,8 @@ snapshots:
'@esbuild/win32-x64@0.28.0':
optional: true
+ '@exodus/bytes@1.15.0': {}
+
'@formatjs/fast-memoize@3.1.2': {}
'@formatjs/icu-messageformat-parser@3.5.4':
@@ -7960,6 +7346,33 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
+ '@inquirer/ansi@2.0.5': {}
+
+ '@inquirer/confirm@6.0.12(@types/node@25.6.0)':
+ dependencies:
+ '@inquirer/core': 11.1.9(@types/node@25.6.0)
+ '@inquirer/type': 4.0.5(@types/node@25.6.0)
+ optionalDependencies:
+ '@types/node': 25.6.0
+
+ '@inquirer/core@11.1.9(@types/node@25.6.0)':
+ dependencies:
+ '@inquirer/ansi': 2.0.5
+ '@inquirer/figures': 2.0.5
+ '@inquirer/type': 4.0.5(@types/node@25.6.0)
+ cli-width: 4.1.0
+ fast-wrap-ansi: 0.2.0
+ mute-stream: 3.0.0
+ signal-exit: 4.1.0
+ optionalDependencies:
+ '@types/node': 25.6.0
+
+ '@inquirer/figures@2.0.5': {}
+
+ '@inquirer/type@4.0.5(@types/node@25.6.0)':
+ optionalDependencies:
+ '@types/node': 25.6.0
+
'@internationalized/date@3.11.0':
dependencies:
'@swc/helpers': 0.5.18
@@ -7989,209 +7402,6 @@ snapshots:
dependencies:
minipass: 7.1.2
- '@istanbuljs/load-nyc-config@1.1.0':
- dependencies:
- camelcase: 5.3.1
- find-up: 4.1.0
- get-package-type: 0.1.0
- js-yaml: 3.14.2
- resolve-from: 5.0.0
-
- '@istanbuljs/schema@0.1.6': {}
-
- '@jest/console@30.3.0':
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- chalk: 4.1.2
- jest-message-util: 30.3.0
- jest-util: 30.3.0
- slash: 3.0.0
-
- '@jest/core@30.3.0(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))':
- dependencies:
- '@jest/console': 30.3.0
- '@jest/pattern': 30.0.1
- '@jest/reporters': 30.3.0
- '@jest/test-result': 30.3.0
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- ci-info: 4.4.0
- exit-x: 0.2.2
- graceful-fs: 4.2.11
- jest-changed-files: 30.3.0
- jest-config: 30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- jest-haste-map: 30.3.0
- jest-message-util: 30.3.0
- jest-regex-util: 30.0.1
- jest-resolve: 30.3.0
- jest-resolve-dependencies: 30.3.0
- jest-runner: 30.3.0
- jest-runtime: 30.3.0
- jest-snapshot: 30.3.0
- jest-util: 30.3.0
- jest-validate: 30.3.0
- jest-watcher: 30.3.0
- pretty-format: 30.3.0
- slash: 3.0.0
- transitivePeerDependencies:
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- '@jest/diff-sequences@30.0.1': {}
-
- '@jest/diff-sequences@30.3.0': {}
-
- '@jest/environment@30.3.0':
- dependencies:
- '@jest/fake-timers': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- jest-mock: 30.3.0
-
- '@jest/expect-utils@30.1.1':
- dependencies:
- '@jest/get-type': 30.1.0
-
- '@jest/expect-utils@30.3.0':
- dependencies:
- '@jest/get-type': 30.1.0
-
- '@jest/expect@30.3.0':
- dependencies:
- expect: 30.3.0
- jest-snapshot: 30.3.0
- transitivePeerDependencies:
- - supports-color
-
- '@jest/fake-timers@30.3.0':
- dependencies:
- '@jest/types': 30.3.0
- '@sinonjs/fake-timers': 15.3.2
- '@types/node': 25.6.0
- jest-message-util: 30.3.0
- jest-mock: 30.3.0
- jest-util: 30.3.0
-
- '@jest/get-type@30.1.0': {}
-
- '@jest/globals@30.3.0':
- dependencies:
- '@jest/environment': 30.3.0
- '@jest/expect': 30.3.0
- '@jest/types': 30.3.0
- jest-mock: 30.3.0
- transitivePeerDependencies:
- - supports-color
-
- '@jest/pattern@30.0.1':
- dependencies:
- '@types/node': 25.6.0
- jest-regex-util: 30.0.1
-
- '@jest/reporters@30.3.0':
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 30.3.0
- '@jest/test-result': 30.3.0
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- '@jridgewell/trace-mapping': 0.3.31
- '@types/node': 25.6.0
- chalk: 4.1.2
- collect-v8-coverage: 1.0.3
- exit-x: 0.2.2
- glob: 10.5.0
- graceful-fs: 4.2.11
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-instrument: 6.0.3
- istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 5.0.6
- istanbul-reports: 3.2.0
- jest-message-util: 30.3.0
- jest-util: 30.3.0
- jest-worker: 30.3.0
- slash: 3.0.0
- string-length: 4.0.2
- v8-to-istanbul: 9.3.0
- transitivePeerDependencies:
- - supports-color
-
- '@jest/schemas@30.0.5':
- dependencies:
- '@sinclair/typebox': 0.34.40
-
- '@jest/snapshot-utils@30.3.0':
- dependencies:
- '@jest/types': 30.3.0
- chalk: 4.1.2
- graceful-fs: 4.2.11
- natural-compare: 1.4.0
-
- '@jest/source-map@30.0.1':
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- callsites: 3.1.0
- graceful-fs: 4.2.11
-
- '@jest/test-result@30.3.0':
- dependencies:
- '@jest/console': 30.3.0
- '@jest/types': 30.3.0
- '@types/istanbul-lib-coverage': 2.0.6
- collect-v8-coverage: 1.0.3
-
- '@jest/test-sequencer@30.3.0':
- dependencies:
- '@jest/test-result': 30.3.0
- graceful-fs: 4.2.11
- jest-haste-map: 30.3.0
- slash: 3.0.0
-
- '@jest/transform@30.3.0':
- dependencies:
- '@babel/core': 7.29.0
- '@jest/types': 30.3.0
- '@jridgewell/trace-mapping': 0.3.31
- babel-plugin-istanbul: 7.0.1
- chalk: 4.1.2
- convert-source-map: 2.0.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.11
- jest-haste-map: 30.3.0
- jest-regex-util: 30.0.1
- jest-util: 30.3.0
- pirates: 4.0.7
- slash: 3.0.0
- write-file-atomic: 5.0.1
- transitivePeerDependencies:
- - supports-color
-
- '@jest/types@30.0.5':
- dependencies:
- '@jest/pattern': 30.0.1
- '@jest/schemas': 30.0.5
- '@types/istanbul-lib-coverage': 2.0.6
- '@types/istanbul-reports': 3.0.4
- '@types/node': 25.6.0
- '@types/yargs': 17.0.33
- chalk: 4.1.2
-
- '@jest/types@30.3.0':
- dependencies:
- '@jest/pattern': 30.0.1
- '@jest/schemas': 30.0.5
- '@types/istanbul-lib-coverage': 2.0.6
- '@types/istanbul-reports': 3.0.4
- '@types/node': 25.6.0
- '@types/yargs': 17.0.35
- chalk: 4.1.2
-
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -8228,7 +7438,16 @@ snapshots:
'@kurkle/color@0.3.4': {}
- '@napi-rs/wasm-runtime@0.2.12':
+ '@mswjs/interceptors@0.41.8':
+ dependencies:
+ '@open-draft/deferred-promise': 2.2.0
+ '@open-draft/logger': 0.3.0
+ '@open-draft/until': 2.1.0
+ is-node-process: 1.2.0
+ outvariant: 1.4.3
+ strict-event-emitter: 0.5.1
+
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
@@ -8275,6 +7494,19 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
+ '@open-draft/deferred-promise@2.2.0': {}
+
+ '@open-draft/deferred-promise@3.0.0': {}
+
+ '@open-draft/logger@0.3.0':
+ dependencies:
+ is-node-process: 1.2.0
+ outvariant: 1.4.3
+
+ '@open-draft/until@2.1.0': {}
+
+ '@oxc-project/types@0.128.0': {}
+
'@parcel/watcher-android-arm64@2.5.6':
optional: true
@@ -8338,7 +7570,9 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@pkgr/core@0.2.9': {}
+ '@playwright/test@1.59.1':
+ dependencies:
+ playwright: 1.59.1
'@prisma/adapter-pg@7.7.0':
dependencies:
@@ -8604,6 +7838,57 @@ snapshots:
dependencies:
'@redis/client': 5.12.1
+ '@rolldown/binding-android-arm64@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.18':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.0-rc.18': {}
+
'@rollup/plugin-alias@6.0.0(rollup@4.60.1)':
optionalDependencies:
rollup: 4.60.1
@@ -8755,18 +8040,8 @@ snapshots:
'@schummar/icu-type-parser@1.21.5': {}
- '@sinclair/typebox@0.34.40': {}
-
'@sindresorhus/merge-streams@2.3.0': {}
- '@sinonjs/commons@3.0.1':
- dependencies:
- type-detect: 4.0.8
-
- '@sinonjs/fake-timers@15.3.2':
- dependencies:
- '@sinonjs/commons': 3.0.1
-
'@standard-schema/spec@1.1.0': {}
'@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.3)':
@@ -8950,6 +8225,40 @@ snapshots:
'@tanstack/query-core': 5.99.0
react: 19.2.5
+ '@testing-library/dom@10.4.1':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/runtime': 7.29.2
+ '@types/aria-query': 5.0.4
+ aria-query: 5.3.0
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ picocolors: 1.1.1
+ pretty-format: 27.5.1
+
+ '@testing-library/jest-dom@6.9.1':
+ dependencies:
+ '@adobe/css-tools': 4.4.4
+ aria-query: 5.3.2
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ picocolors: 1.1.1
+ redent: 3.0.0
+
+ '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@testing-library/dom': 10.4.1
+ react: 19.2.5
+ react-dom: 19.2.5(react@19.2.5)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)':
+ dependencies:
+ '@testing-library/dom': 10.4.1
+
'@trysound/sax@0.2.0': {}
'@ts-morph/common@0.29.0':
@@ -8973,29 +8282,17 @@ snapshots:
tslib: 2.8.1
optional: true
- '@types/babel__core@7.20.5':
- dependencies:
- '@babel/parser': 7.29.2
- '@babel/types': 7.29.0
- '@types/babel__generator': 7.27.0
- '@types/babel__template': 7.4.4
- '@types/babel__traverse': 7.28.0
+ '@types/aria-query@5.0.4': {}
- '@types/babel__generator@7.27.0':
+ '@types/chai@5.2.3':
dependencies:
- '@babel/types': 7.29.0
-
- '@types/babel__template@7.4.4':
- dependencies:
- '@babel/parser': 7.29.2
- '@babel/types': 7.29.0
-
- '@types/babel__traverse@7.28.0':
- dependencies:
- '@babel/types': 7.29.0
+ '@types/deep-eql': 4.0.2
+ assertion-error: 2.0.1
'@types/css-font-loading-module@0.0.7': {}
+ '@types/deep-eql@4.0.2': {}
+
'@types/estree@1.0.8': {}
'@types/fs-extra@8.1.5':
@@ -9007,21 +8304,6 @@ snapshots:
'@types/minimatch': 6.0.0
'@types/node': 25.6.0
- '@types/istanbul-lib-coverage@2.0.6': {}
-
- '@types/istanbul-lib-report@3.0.3':
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.6
-
- '@types/istanbul-reports@3.0.4':
- dependencies:
- '@types/istanbul-lib-report': 3.0.3
-
- '@types/jest@30.0.0':
- dependencies:
- expect: 30.1.1
- pretty-format: 30.0.5
-
'@types/json-schema@7.0.15': {}
'@types/minimatch@6.0.0':
@@ -9048,30 +8330,13 @@ snapshots:
'@types/resolve@1.20.2': {}
- '@types/sinonjs__fake-timers@8.1.1': {}
-
- '@types/sizzle@2.3.10': {}
-
- '@types/stack-utils@2.0.3': {}
-
- '@types/tmp@0.2.6': {}
-
- '@types/use-sync-external-store@0.0.6': {}
-
- '@types/yargs-parser@21.0.3': {}
-
- '@types/yargs@17.0.33':
- dependencies:
- '@types/yargs-parser': 21.0.3
-
- '@types/yargs@17.0.35':
- dependencies:
- '@types/yargs-parser': 21.0.3
-
- '@types/yauzl@2.10.3':
+ '@types/set-cookie-parser@2.4.10':
dependencies:
'@types/node': 25.6.0
- optional: true
+
+ '@types/statuses@2.0.6': {}
+
+ '@types/use-sync-external-store@0.0.6': {}
'@umami/react-zen@0.245.0(@types/react@19.2.14)(immer@11.1.4)(react-aria-components@1.17.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.1.18)(use-sync-external-store@1.6.0(react@19.2.5))':
dependencies:
@@ -9093,66 +8358,47 @@ snapshots:
- tailwindcss
- use-sync-external-store
- '@ungap/structured-clone@1.3.0': {}
-
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ '@vitest/expect@4.1.5':
dependencies:
- '@napi-rs/wasm-runtime': 0.2.12
- optional: true
+ '@standard-schema/spec': 1.1.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.1.5
+ '@vitest/utils': 4.1.5
+ chai: 6.2.2
+ tinyrainbow: 3.1.0
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- optional: true
+ '@vitest/mocker@4.1.5(msw@2.14.5(@types/node@25.6.0)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1))':
+ dependencies:
+ '@vitest/spy': 4.1.5
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ msw: 2.14.5(@types/node@25.6.0)(typescript@6.0.3)
+ vite: 8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1)
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- optional: true
+ '@vitest/pretty-format@4.1.5':
+ dependencies:
+ tinyrainbow: 3.1.0
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- optional: true
+ '@vitest/runner@4.1.5':
+ dependencies:
+ '@vitest/utils': 4.1.5
+ pathe: 2.0.3
+
+ '@vitest/snapshot@4.1.5':
+ dependencies:
+ '@vitest/pretty-format': 4.1.5
+ '@vitest/utils': 4.1.5
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
+ '@vitest/spy@4.1.5': {}
+
+ '@vitest/utils@4.1.5':
+ dependencies:
+ '@vitest/pretty-format': 4.1.5
+ convert-source-map: 2.0.0
+ tinyrainbow: 3.1.0
'@xstate/fsm@1.6.5': {}
@@ -9164,11 +8410,6 @@ snapshots:
acorn@8.16.0: {}
- aggregate-error@3.1.0:
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
-
ajv@8.18.0:
dependencies:
fast-deep-equal: 3.1.3
@@ -9176,12 +8417,6 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- ansi-colors@4.1.3: {}
-
- ansi-escapes@4.3.2:
- dependencies:
- type-fest: 0.21.3
-
ansi-regex@5.0.1: {}
ansi-regex@6.2.2: {}
@@ -9200,25 +8435,20 @@ snapshots:
any-promise@1.3.0: {}
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.2
-
- arch@2.2.0: {}
-
arg@4.1.3: {}
- argparse@1.0.10:
- dependencies:
- sprintf-js: 1.0.3
-
argparse@2.0.1: {}
aria-hidden@1.2.6:
dependencies:
tslib: 2.8.1
+ aria-query@5.3.0:
+ dependencies:
+ dequal: 2.0.3
+
+ aria-query@5.3.2: {}
+
array-buffer-byte-length@1.0.2:
dependencies:
call-bound: 1.0.4
@@ -9236,20 +8466,10 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
- asn1@0.2.6:
- dependencies:
- safer-buffer: 2.1.2
-
- assert-plus@1.0.0: {}
-
- astral-regex@2.0.0: {}
+ assertion-error@2.0.1: {}
async-function@1.0.0: {}
- asynckit@0.4.0: {}
-
- at-least-node@1.0.0: {}
-
autoprefixer@10.5.0(postcss@8.5.10):
dependencies:
browserslist: 4.28.2
@@ -9263,132 +8483,29 @@ snapshots:
dependencies:
possible-typed-array-names: 1.1.0
- aws-sign2@0.7.0: {}
-
aws-ssl-profiles@1.1.2: {}
- aws4@1.13.2: {}
-
- babel-jest@30.3.0(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- '@jest/transform': 30.3.0
- '@types/babel__core': 7.20.5
- babel-plugin-istanbul: 7.0.1
- babel-preset-jest: 30.3.0(@babel/core@7.28.3)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
- optional: true
-
- babel-jest@30.3.0(@babel/core@7.29.0):
- dependencies:
- '@babel/core': 7.29.0
- '@jest/transform': 30.3.0
- '@types/babel__core': 7.20.5
- babel-plugin-istanbul: 7.0.1
- babel-preset-jest: 30.3.0(@babel/core@7.29.0)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
-
- babel-plugin-istanbul@7.0.1:
- dependencies:
- '@babel/helper-plugin-utils': 7.28.6
- '@istanbuljs/load-nyc-config': 1.1.0
- '@istanbuljs/schema': 0.1.6
- istanbul-lib-instrument: 6.0.3
- test-exclude: 6.0.0
- transitivePeerDependencies:
- - supports-color
-
- babel-plugin-jest-hoist@30.3.0:
- dependencies:
- '@types/babel__core': 7.20.5
-
babel-plugin-react-compiler@19.1.0-rc.2:
dependencies:
'@babel/types': 7.28.2
- babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.3)
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.3)
- '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.3)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3)
- optional: true
-
- babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0):
- dependencies:
- '@babel/core': 7.29.0
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0)
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0)
- '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0)
-
- babel-preset-jest@30.3.0(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- babel-plugin-jest-hoist: 30.3.0
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3)
- optional: true
-
- babel-preset-jest@30.3.0(@babel/core@7.29.0):
- dependencies:
- '@babel/core': 7.29.0
- babel-plugin-jest-hoist: 30.3.0
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
-
balanced-match@1.0.2: {}
balanced-match@4.0.4: {}
base64-arraybuffer@1.0.2: {}
- base64-js@1.5.1: {}
-
baseline-browser-mapping@2.10.19: {}
- bcrypt-pbkdf@1.0.2:
- dependencies:
- tweetnacl: 0.14.5
-
bcryptjs@3.0.3: {}
better-result@2.7.0:
dependencies:
'@clack/prompts': 0.11.0
- blob-util@2.0.2: {}
-
- bluebird@3.7.2: {}
+ bidi-js@1.0.3:
+ dependencies:
+ require-from-string: 2.0.2
boolbase@1.0.0: {}
@@ -9397,11 +8514,6 @@ snapshots:
balanced-match: 1.0.2
concat-map: 0.0.1
- brace-expansion@1.1.14:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
brace-expansion@2.0.2:
dependencies:
balanced-match: 1.0.2
@@ -9429,25 +8541,10 @@ snapshots:
node-releases: 2.0.37
update-browserslist-db: 1.2.3(browserslist@4.28.2)
- bs-logger@0.2.6:
- dependencies:
- fast-json-stable-stringify: 2.1.0
-
- bser@2.1.1:
- dependencies:
- node-int64: 0.4.0
-
- buffer-crc32@0.2.13: {}
-
buffer-equal-constant-time@1.0.1: {}
buffer-from@1.1.2: {}
- buffer@5.7.1:
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
-
bundle-require@5.1.0(esbuild@0.27.7):
dependencies:
esbuild: 0.27.7
@@ -9470,8 +8567,6 @@ snapshots:
cac@6.7.14: {}
- cachedir@2.4.0: {}
-
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
@@ -9491,8 +8586,6 @@ snapshots:
callsites@3.1.0: {}
- camelcase@5.3.1: {}
-
camelcase@6.3.0: {}
caniuse-api@3.0.0:
@@ -9506,7 +8599,7 @@ snapshots:
caniuse-lite@1.0.30001788: {}
- caseless@0.12.0: {}
+ chai@6.2.2: {}
chalk@2.4.2:
dependencies:
@@ -9521,8 +8614,6 @@ snapshots:
chalk@5.6.2: {}
- char-regex@1.0.2: {}
-
chart.js@4.5.1:
dependencies:
'@kurkle/color': 0.3.4
@@ -9538,8 +8629,6 @@ snapshots:
chownr@3.0.0: {}
- ci-info@4.3.0: {}
-
ci-info@4.4.0: {}
citty@0.1.6:
@@ -9548,26 +8637,9 @@ snapshots:
citty@0.2.2: {}
- cjs-module-lexer@2.2.0: {}
-
classnames@2.5.1: {}
- clean-stack@2.2.0: {}
-
- cli-cursor@3.1.0:
- dependencies:
- restore-cursor: 3.1.0
-
- cli-table3@0.6.1:
- dependencies:
- string-width: 4.2.3
- optionalDependencies:
- colors: 1.4.0
-
- cli-truncate@2.1.0:
- dependencies:
- slice-ansi: 3.0.0
- string-width: 4.2.3
+ cli-width@4.1.0: {}
client-only@0.0.1: {}
@@ -9581,12 +8653,8 @@ snapshots:
cluster-key-slot@1.1.2: {}
- co@4.6.0: {}
-
code-block-writer@13.0.3: {}
- collect-v8-coverage@1.0.3: {}
-
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
@@ -9603,27 +8671,14 @@ snapshots:
colorette@1.4.0: {}
- colorette@2.0.20: {}
-
- colors@1.4.0:
- optional: true
-
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
commander@2.20.3: {}
commander@4.1.1: {}
- commander@6.2.1: {}
-
commander@7.2.0: {}
commander@9.5.0: {}
- common-tags@1.8.2: {}
-
commondir@1.0.1: {}
concat-map@0.0.1: {}
@@ -9640,7 +8695,7 @@ snapshots:
convert-source-map@2.0.0: {}
- core-util-is@1.0.2: {}
+ cookie@1.1.1: {}
core-util-is@1.0.3: {}
@@ -9734,8 +8789,15 @@ snapshots:
mdn-data: 2.0.30
source-map-js: 1.2.1
+ css-tree@3.2.1:
+ dependencies:
+ mdn-data: 2.27.1
+ source-map-js: 1.2.1
+
css-what@6.2.2: {}
+ css.escape@1.5.1: {}
+
cssdb@8.8.0: {}
cssesc@3.0.0: {}
@@ -9794,52 +8856,6 @@ snapshots:
csstype@3.2.3: {}
- cypress@15.14.0:
- dependencies:
- '@cypress/request': 3.0.10
- '@cypress/xvfb': 1.2.4(supports-color@8.1.1)
- '@types/sinonjs__fake-timers': 8.1.1
- '@types/sizzle': 2.3.10
- '@types/tmp': 0.2.6
- arch: 2.2.0
- blob-util: 2.0.2
- bluebird: 3.7.2
- buffer: 5.7.1
- cachedir: 2.4.0
- chalk: 4.1.2
- ci-info: 4.4.0
- cli-cursor: 3.1.0
- cli-table3: 0.6.1
- commander: 6.2.1
- common-tags: 1.8.2
- dayjs: 1.11.20
- debug: 4.4.3(supports-color@8.1.1)
- enquirer: 2.4.1
- eventemitter2: 6.4.7
- execa: 4.1.0
- executable: 4.1.1
- extract-zip: 2.0.1(supports-color@8.1.1)
- figures: 3.2.0
- fs-extra: 9.1.0
- hasha: 5.2.2
- is-installed-globally: 0.4.0
- listr2: 3.14.0(enquirer@2.4.1)
- lodash: 4.18.1
- log-symbols: 4.1.0
- minimist: 1.2.8
- ospath: 1.2.2
- pretty-bytes: 5.6.0
- process: 0.11.10
- proxy-from-env: 1.0.0
- request-progress: 3.0.0
- supports-color: 8.1.1
- systeminformation: 5.31.5
- tmp: 0.2.5
- tree-kill: 1.2.2
- tslib: 1.14.1
- untildify: 4.0.0
- yauzl: 2.10.0
-
d3-array@2.12.1:
dependencies:
internmap: 1.0.1
@@ -9884,14 +8900,17 @@ snapshots:
d3-selection: 2.0.0
d3-transition: 2.0.0(d3-selection@2.0.0)
- dashdash@1.14.1:
- dependencies:
- assert-plus: 1.0.0
-
dashify@2.0.0: {}
data-uri-to-buffer@4.0.1: {}
+ data-urls@7.0.0:
+ dependencies:
+ whatwg-mimetype: 5.0.0
+ whatwg-url: 16.0.1
+ transitivePeerDependencies:
+ - '@noble/hashes'
+
data-view-buffer@1.0.2:
dependencies:
call-bound: 1.0.4
@@ -9916,21 +8935,11 @@ snapshots:
date-fns@4.1.0: {}
- dayjs@1.11.20: {}
-
- debug@3.2.7(supports-color@8.1.1):
+ debug@4.4.3:
dependencies:
ms: 2.1.3
- optionalDependencies:
- supports-color: 8.1.1
- debug@4.4.3(supports-color@8.1.1):
- dependencies:
- ms: 2.1.3
- optionalDependencies:
- supports-color: 8.1.1
-
- dedent@1.7.2: {}
+ decimal.js@10.6.0: {}
deepmerge-ts@7.1.5: {}
@@ -9960,10 +8969,10 @@ snapshots:
presentable-error: 0.0.1
slash: 5.1.0
- delayed-stream@1.0.0: {}
-
denque@2.1.0: {}
+ dequal@2.0.3: {}
+
destr@2.0.5: {}
detect-browser@5.3.0: {}
@@ -9972,14 +8981,16 @@ snapshots:
detect-libc@2.1.2: {}
- detect-newline@3.1.0: {}
-
diff@4.0.2: {}
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
+ dom-accessibility-api@0.5.16: {}
+
+ dom-accessibility-api@0.6.3: {}
+
dom-serializer@1.4.1:
dependencies:
domelementtype: 2.3.0
@@ -10042,11 +9053,6 @@ snapshots:
eastasianwidth@0.2.0: {}
- ecc-jsbn@0.1.2:
- dependencies:
- jsbn: 0.1.1
- safer-buffer: 2.1.2
-
ecdsa-sig-formatter@1.0.11:
dependencies:
safe-buffer: 5.2.1
@@ -10060,27 +9066,18 @@ snapshots:
electron-to-chromium@1.5.340: {}
- emittery@0.13.1: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
empathic@2.0.0: {}
- end-of-stream@1.4.5:
- dependencies:
- once: 1.4.0
-
- enquirer@2.4.1:
- dependencies:
- ansi-colors: 4.1.3
- strip-ansi: 6.0.1
-
entities@2.2.0: {}
entities@4.5.0: {}
+ entities@8.0.0: {}
+
env-paths@3.0.0: {}
error-ex@1.3.2:
@@ -10148,6 +9145,8 @@ snapshots:
es-errors@1.3.0: {}
+ es-module-lexer@2.1.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -10227,82 +9226,20 @@ snapshots:
escape-string-regexp@1.0.5: {}
- escape-string-regexp@2.0.0: {}
-
- esprima@4.0.1: {}
-
estree-walker@0.6.1: {}
estree-walker@2.0.2: {}
- eventemitter2@6.4.7: {}
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
eventemitter3@4.0.7: {}
- execa@4.1.0:
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 5.2.0
- human-signals: 1.1.1
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
-
- execa@5.1.1:
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
-
- executable@4.1.1:
- dependencies:
- pify: 2.3.0
-
- exit-x@0.2.2: {}
-
- expect@30.1.1:
- dependencies:
- '@jest/expect-utils': 30.1.1
- '@jest/get-type': 30.1.0
- jest-matcher-utils: 30.1.1
- jest-message-util: 30.1.0
- jest-mock: 30.0.5
- jest-util: 30.0.5
-
- expect@30.3.0:
- dependencies:
- '@jest/expect-utils': 30.3.0
- '@jest/get-type': 30.1.0
- jest-matcher-utils: 30.3.0
- jest-message-util: 30.3.0
- jest-mock: 30.3.0
- jest-util: 30.3.0
+ expect-type@1.3.0: {}
exsolve@1.0.8: {}
- extend@3.0.2: {}
-
- extract-zip@2.0.1(supports-color@8.1.1):
- dependencies:
- debug: 4.4.3(supports-color@8.1.1)
- get-stream: 5.2.0
- yauzl: 2.10.0
- optionalDependencies:
- '@types/yauzl': 2.10.3
- transitivePeerDependencies:
- - supports-color
-
- extsprintf@1.3.0: {}
-
fast-check@3.23.2:
dependencies:
pure-rand: 6.1.0
@@ -10317,22 +9254,22 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
- fast-json-stable-stringify@2.1.0: {}
+ fast-string-truncated-width@3.0.3: {}
+
+ fast-string-width@3.0.2:
+ dependencies:
+ fast-string-truncated-width: 3.0.3
fast-uri@3.1.0: {}
+ fast-wrap-ansi@0.2.0:
+ dependencies:
+ fast-string-width: 3.0.2
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
- fb-watchman@2.0.2:
- dependencies:
- bser: 2.1.1
-
- fd-slicer@1.1.0:
- dependencies:
- pend: 1.2.0
-
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
@@ -10344,19 +9281,10 @@ snapshots:
fflate@0.4.8: {}
- figures@3.2.0:
- dependencies:
- escape-string-regexp: 1.0.5
-
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
- find-up@4.1.0:
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
-
fix-dts-default-cjs-exports@1.0.1:
dependencies:
magic-string: 0.30.21
@@ -10372,16 +9300,6 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- forever-agent@0.6.1: {}
-
- form-data@4.0.5:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- es-set-tostringtag: 2.1.0
- hasown: 2.0.3
- mime-types: 2.1.35
-
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -10403,15 +9321,11 @@ snapshots:
jsonfile: 4.0.0
universalify: 0.1.2
- fs-extra@9.1.0:
- dependencies:
- at-least-node: 1.0.0
- graceful-fs: 4.2.11
- jsonfile: 6.2.0
- universalify: 2.0.1
-
fs.realpath@1.0.0: {}
+ fsevents@2.3.2:
+ optional: true
+
fsevents@2.3.3:
optional: true
@@ -10453,8 +9367,6 @@ snapshots:
hasown: 2.0.2
math-intrinsics: 1.1.0
- get-package-type@0.1.0: {}
-
get-port-please@3.2.0: {}
get-proto@1.0.1:
@@ -10462,12 +9374,6 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-stream@5.2.0:
- dependencies:
- pump: 3.0.4
-
- get-stream@6.0.1: {}
-
get-symbol-description@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -10478,10 +9384,6 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
- getpass@0.1.7:
- dependencies:
- assert-plus: 1.0.0
-
giget@2.0.0:
dependencies:
citty: 0.1.6
@@ -10521,10 +9423,6 @@ snapshots:
minimatch: 5.1.6
once: 1.4.0
- global-dirs@3.0.1:
- dependencies:
- ini: 2.0.0
-
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
@@ -10558,14 +9456,7 @@ snapshots:
graphmatch@1.1.1: {}
- handlebars@4.7.9:
- dependencies:
- minimist: 1.2.8
- neo-async: 2.6.2
- source-map: 0.6.1
- wordwrap: 1.0.0
- optionalDependencies:
- uglify-js: 3.19.3
+ graphql@16.14.0: {}
has-bigints@1.1.0: {}
@@ -10587,37 +9478,27 @@ snapshots:
dependencies:
has-symbols: 1.1.0
- hasha@5.2.2:
- dependencies:
- is-stream: 2.0.1
- type-fest: 0.8.1
-
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
- hasown@2.0.3:
+ headers-polyfill@5.0.1:
dependencies:
- function-bind: 1.1.2
+ '@types/set-cookie-parser': 2.4.10
+ set-cookie-parser: 3.1.0
hono@4.12.9: {}
hosted-git-info@2.8.9: {}
- html-escaper@2.0.2: {}
-
- http-signature@1.4.0:
+ html-encoding-sniffer@6.0.0:
dependencies:
- assert-plus: 1.0.0
- jsprim: 2.0.2
- sshpk: 1.18.0
+ '@exodus/bytes': 1.15.0
+ transitivePeerDependencies:
+ - '@noble/hashes'
http-status-codes@2.3.0: {}
- human-signals@1.1.1: {}
-
- human-signals@2.1.0: {}
-
iconv-lite@0.7.2:
dependencies:
safer-buffer: 2.1.2
@@ -10632,8 +9513,6 @@ snapshots:
dependencies:
'@formatjs/icu-messageformat-parser': 3.5.4
- ieee754@1.2.1: {}
-
ignore@5.3.2: {}
ignore@7.0.5: {}
@@ -10655,13 +9534,6 @@ snapshots:
dependencies:
resolve-from: 5.0.0
- import-local@3.2.0:
- dependencies:
- pkg-dir: 4.2.0
- resolve-cwd: 3.0.0
-
- imurmurhash@0.1.4: {}
-
indent-string@4.0.0: {}
inflight@1.0.6:
@@ -10671,8 +9543,6 @@ snapshots:
inherits@2.0.4: {}
- ini@2.0.0: {}
-
internal-slot@1.1.0:
dependencies:
es-errors: 1.3.0
@@ -10744,8 +9614,6 @@ snapshots:
is-fullwidth-code-point@3.0.0: {}
- is-generator-fn@2.1.0: {}
-
is-generator-function@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -10757,11 +9625,6 @@ snapshots:
dependencies:
is-extglob: 2.1.1
- is-installed-globally@0.4.0:
- dependencies:
- global-dirs: 3.0.1
- is-path-inside: 3.0.3
-
is-localhost-ip@3.0.1: {}
is-map@2.0.3: {}
@@ -10770,6 +9633,8 @@ snapshots:
is-negative-zero@2.0.3: {}
+ is-node-process@1.2.0: {}
+
is-number-object@1.1.1:
dependencies:
call-bound: 1.0.4
@@ -10779,12 +9644,12 @@ snapshots:
is-path-cwd@3.0.0: {}
- is-path-inside@3.0.3: {}
-
is-path-inside@4.0.0: {}
is-plain-object@3.0.1: {}
+ is-potential-custom-element-name@1.0.1: {}
+
is-property@1.0.2: {}
is-reference@1.2.1:
@@ -10806,8 +9671,6 @@ snapshots:
is-standalone-pwa@0.1.1: {}
- is-stream@2.0.1: {}
-
is-string@1.1.1:
dependencies:
call-bound: 1.0.4
@@ -10823,10 +9686,6 @@ snapshots:
dependencies:
which-typed-array: 1.1.19
- is-typedarray@1.0.0: {}
-
- is-unicode-supported@0.1.0: {}
-
is-weakmap@2.0.2: {}
is-weakref@1.1.1:
@@ -10846,413 +9705,47 @@ snapshots:
isexe@2.0.0: {}
- isstream@0.1.2: {}
-
- istanbul-lib-coverage@3.2.2: {}
-
- istanbul-lib-instrument@6.0.3:
- dependencies:
- '@babel/core': 7.29.0
- '@babel/parser': 7.29.2
- '@istanbuljs/schema': 0.1.6
- istanbul-lib-coverage: 3.2.2
- semver: 7.7.4
- transitivePeerDependencies:
- - supports-color
-
- istanbul-lib-report@3.0.1:
- dependencies:
- istanbul-lib-coverage: 3.2.2
- make-dir: 4.0.0
- supports-color: 7.2.0
-
- istanbul-lib-source-maps@5.0.6:
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- debug: 4.4.3(supports-color@8.1.1)
- istanbul-lib-coverage: 3.2.2
- transitivePeerDependencies:
- - supports-color
-
- istanbul-reports@3.2.0:
- dependencies:
- html-escaper: 2.0.2
- istanbul-lib-report: 3.0.1
-
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- jest-changed-files@30.3.0:
- dependencies:
- execa: 5.1.1
- jest-util: 30.3.0
- p-limit: 3.1.0
-
- jest-circus@30.3.0:
- dependencies:
- '@jest/environment': 30.3.0
- '@jest/expect': 30.3.0
- '@jest/test-result': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- chalk: 4.1.2
- co: 4.6.0
- dedent: 1.7.2
- is-generator-fn: 2.1.0
- jest-each: 30.3.0
- jest-matcher-utils: 30.3.0
- jest-message-util: 30.3.0
- jest-runtime: 30.3.0
- jest-snapshot: 30.3.0
- jest-util: 30.3.0
- p-limit: 3.1.0
- pretty-format: 30.3.0
- pure-rand: 7.0.1
- slash: 3.0.0
- stack-utils: 2.0.6
- transitivePeerDependencies:
- - babel-plugin-macros
- - supports-color
-
- jest-cli@30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)):
- dependencies:
- '@jest/core': 30.3.0(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- '@jest/test-result': 30.3.0
- '@jest/types': 30.3.0
- chalk: 4.1.2
- exit-x: 0.2.2
- import-local: 3.2.0
- jest-config: 30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- jest-util: 30.3.0
- jest-validate: 30.3.0
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- jest-config@30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)):
- dependencies:
- '@babel/core': 7.29.0
- '@jest/get-type': 30.1.0
- '@jest/pattern': 30.0.1
- '@jest/test-sequencer': 30.3.0
- '@jest/types': 30.3.0
- babel-jest: 30.3.0(@babel/core@7.29.0)
- chalk: 4.1.2
- ci-info: 4.4.0
- deepmerge: 4.3.1
- glob: 10.5.0
- graceful-fs: 4.2.11
- jest-circus: 30.3.0
- jest-docblock: 30.2.0
- jest-environment-node: 30.3.0
- jest-regex-util: 30.0.1
- jest-resolve: 30.3.0
- jest-runner: 30.3.0
- jest-util: 30.3.0
- jest-validate: 30.3.0
- parse-json: 5.2.0
- pretty-format: 30.3.0
- slash: 3.0.0
- strip-json-comments: 3.1.1
- optionalDependencies:
- '@types/node': 25.6.0
- ts-node: 10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)
- transitivePeerDependencies:
- - babel-plugin-macros
- - supports-color
-
- jest-diff@30.1.1:
- dependencies:
- '@jest/diff-sequences': 30.0.1
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- pretty-format: 30.0.5
-
- jest-diff@30.3.0:
- dependencies:
- '@jest/diff-sequences': 30.3.0
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- pretty-format: 30.3.0
-
- jest-docblock@30.2.0:
- dependencies:
- detect-newline: 3.1.0
-
- jest-each@30.3.0:
- dependencies:
- '@jest/get-type': 30.1.0
- '@jest/types': 30.3.0
- chalk: 4.1.2
- jest-util: 30.3.0
- pretty-format: 30.3.0
-
- jest-environment-node@30.3.0:
- dependencies:
- '@jest/environment': 30.3.0
- '@jest/fake-timers': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- jest-mock: 30.3.0
- jest-util: 30.3.0
- jest-validate: 30.3.0
-
- jest-haste-map@30.3.0:
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- anymatch: 3.1.3
- fb-watchman: 2.0.2
- graceful-fs: 4.2.11
- jest-regex-util: 30.0.1
- jest-util: 30.3.0
- jest-worker: 30.3.0
- picomatch: 4.0.4
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.3
-
- jest-leak-detector@30.3.0:
- dependencies:
- '@jest/get-type': 30.1.0
- pretty-format: 30.3.0
-
- jest-matcher-utils@30.1.1:
- dependencies:
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- jest-diff: 30.1.1
- pretty-format: 30.0.5
-
- jest-matcher-utils@30.3.0:
- dependencies:
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- jest-diff: 30.3.0
- pretty-format: 30.3.0
-
- jest-message-util@30.1.0:
- dependencies:
- '@babel/code-frame': 7.27.1
- '@jest/types': 30.0.5
- '@types/stack-utils': 2.0.3
- chalk: 4.1.2
- graceful-fs: 4.2.11
- micromatch: 4.0.8
- pretty-format: 30.0.5
- slash: 3.0.0
- stack-utils: 2.0.6
-
- jest-message-util@30.3.0:
- dependencies:
- '@babel/code-frame': 7.29.0
- '@jest/types': 30.3.0
- '@types/stack-utils': 2.0.3
- chalk: 4.1.2
- graceful-fs: 4.2.11
- picomatch: 4.0.4
- pretty-format: 30.3.0
- slash: 3.0.0
- stack-utils: 2.0.6
-
- jest-mock@30.0.5:
- dependencies:
- '@jest/types': 30.0.5
- '@types/node': 25.6.0
- jest-util: 30.0.5
-
- jest-mock@30.3.0:
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- jest-util: 30.3.0
-
- jest-pnp-resolver@1.2.3(jest-resolve@30.3.0):
- optionalDependencies:
- jest-resolve: 30.3.0
-
- jest-regex-util@30.0.1: {}
-
- jest-resolve-dependencies@30.3.0:
- dependencies:
- jest-regex-util: 30.0.1
- jest-snapshot: 30.3.0
- transitivePeerDependencies:
- - supports-color
-
- jest-resolve@30.3.0:
- dependencies:
- chalk: 4.1.2
- graceful-fs: 4.2.11
- jest-haste-map: 30.3.0
- jest-pnp-resolver: 1.2.3(jest-resolve@30.3.0)
- jest-util: 30.3.0
- jest-validate: 30.3.0
- slash: 3.0.0
- unrs-resolver: 1.11.1
-
- jest-runner@30.3.0:
- dependencies:
- '@jest/console': 30.3.0
- '@jest/environment': 30.3.0
- '@jest/test-result': 30.3.0
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- chalk: 4.1.2
- emittery: 0.13.1
- exit-x: 0.2.2
- graceful-fs: 4.2.11
- jest-docblock: 30.2.0
- jest-environment-node: 30.3.0
- jest-haste-map: 30.3.0
- jest-leak-detector: 30.3.0
- jest-message-util: 30.3.0
- jest-resolve: 30.3.0
- jest-runtime: 30.3.0
- jest-util: 30.3.0
- jest-watcher: 30.3.0
- jest-worker: 30.3.0
- p-limit: 3.1.0
- source-map-support: 0.5.13
- transitivePeerDependencies:
- - supports-color
-
- jest-runtime@30.3.0:
- dependencies:
- '@jest/environment': 30.3.0
- '@jest/fake-timers': 30.3.0
- '@jest/globals': 30.3.0
- '@jest/source-map': 30.0.1
- '@jest/test-result': 30.3.0
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- chalk: 4.1.2
- cjs-module-lexer: 2.2.0
- collect-v8-coverage: 1.0.3
- glob: 10.5.0
- graceful-fs: 4.2.11
- jest-haste-map: 30.3.0
- jest-message-util: 30.3.0
- jest-mock: 30.3.0
- jest-regex-util: 30.0.1
- jest-resolve: 30.3.0
- jest-snapshot: 30.3.0
- jest-util: 30.3.0
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
- jest-snapshot@30.3.0:
- dependencies:
- '@babel/core': 7.29.0
- '@babel/generator': 7.29.1
- '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
- '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
- '@babel/types': 7.29.0
- '@jest/expect-utils': 30.3.0
- '@jest/get-type': 30.1.0
- '@jest/snapshot-utils': 30.3.0
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
- chalk: 4.1.2
- expect: 30.3.0
- graceful-fs: 4.2.11
- jest-diff: 30.3.0
- jest-matcher-utils: 30.3.0
- jest-message-util: 30.3.0
- jest-util: 30.3.0
- pretty-format: 30.3.0
- semver: 7.7.4
- synckit: 0.11.12
- transitivePeerDependencies:
- - supports-color
-
- jest-util@30.0.5:
- dependencies:
- '@jest/types': 30.0.5
- '@types/node': 25.6.0
- chalk: 4.1.2
- ci-info: 4.3.0
- graceful-fs: 4.2.11
- picomatch: 4.0.3
-
- jest-util@30.3.0:
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- chalk: 4.1.2
- ci-info: 4.4.0
- graceful-fs: 4.2.11
- picomatch: 4.0.4
-
- jest-validate@30.3.0:
- dependencies:
- '@jest/get-type': 30.1.0
- '@jest/types': 30.3.0
- camelcase: 6.3.0
- chalk: 4.1.2
- leven: 3.1.0
- pretty-format: 30.3.0
-
- jest-watcher@30.3.0:
- dependencies:
- '@jest/test-result': 30.3.0
- '@jest/types': 30.3.0
- '@types/node': 25.6.0
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.13.1
- jest-util: 30.3.0
- string-length: 4.0.2
-
- jest-worker@30.3.0:
- dependencies:
- '@types/node': 25.6.0
- '@ungap/structured-clone': 1.3.0
- jest-util: 30.3.0
- merge-stream: 2.0.0
- supports-color: 8.1.1
-
- jest@30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)):
- dependencies:
- '@jest/core': 30.3.0(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- '@jest/types': 30.3.0
- import-local: 3.2.0
- jest-cli: 30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
jiti@2.6.1: {}
joycon@3.1.1: {}
js-tokens@4.0.0: {}
- js-yaml@3.14.2:
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
-
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
- jsbn@0.1.1: {}
+ jsdom@29.1.1:
+ dependencies:
+ '@asamuzakjp/css-color': 5.1.11
+ '@asamuzakjp/dom-selector': 7.1.1
+ '@bramus/specificity': 2.4.2
+ '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1)
+ '@exodus/bytes': 1.15.0
+ css-tree: 3.2.1
+ data-urls: 7.0.0
+ decimal.js: 10.6.0
+ html-encoding-sniffer: 6.0.0
+ is-potential-custom-element-name: 1.0.1
+ lru-cache: 11.3.6
+ parse5: 8.0.1
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 6.0.1
+ undici: 7.25.0
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 8.0.1
+ whatwg-mimetype: 5.0.0
+ whatwg-url: 16.0.1
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - '@noble/hashes'
jsesc@3.1.0: {}
@@ -11262,22 +9755,12 @@ snapshots:
json-schema-traverse@1.0.0: {}
- json-schema@0.4.0: {}
-
- json-stringify-safe@5.0.1: {}
-
json5@2.2.3: {}
jsonfile@4.0.0:
optionalDependencies:
graceful-fs: 4.2.11
- jsonfile@6.2.0:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
jsonwebtoken@9.0.3:
dependencies:
jws: 4.0.1
@@ -11291,13 +9774,6 @@ snapshots:
ms: 2.1.3
semver: 7.7.4
- jsprim@2.0.2:
- dependencies:
- assert-plus: 1.0.0
- extsprintf: 1.3.0
- json-schema: 0.4.0
- verror: 1.10.0
-
jszip@3.10.1:
dependencies:
lie: 3.3.0
@@ -11320,31 +9796,65 @@ snapshots:
kleur@3.0.3: {}
- leven@3.1.0: {}
-
lie@3.3.0:
dependencies:
immediate: 3.0.6
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
lilconfig@2.1.0: {}
lilconfig@3.1.3: {}
lines-and-columns@1.2.4: {}
- listr2@3.14.0(enquirer@2.4.1):
- dependencies:
- cli-truncate: 2.1.0
- colorette: 2.0.20
- log-update: 4.0.0
- p-map: 4.0.0
- rfdc: 1.4.1
- rxjs: 7.8.2
- through: 2.3.8
- wrap-ansi: 7.0.0
- optionalDependencies:
- enquirer: 2.4.1
-
load-json-file@4.0.0:
dependencies:
graceful-fs: 4.2.11
@@ -11356,10 +9866,6 @@ snapshots:
loader-utils@3.3.1: {}
- locate-path@5.0.0:
- dependencies:
- p-locate: 4.1.0
-
lodash.camelcase@4.3.0: {}
lodash.includes@4.3.0: {}
@@ -11380,20 +9886,6 @@ snapshots:
lodash.uniq@4.5.0: {}
- lodash@4.18.1: {}
-
- log-symbols@4.1.0:
- dependencies:
- chalk: 4.1.2
- is-unicode-supported: 0.1.0
-
- log-update@4.0.0:
- dependencies:
- ansi-escapes: 4.3.2
- cli-cursor: 3.1.0
- slice-ansi: 4.0.0
- wrap-ansi: 6.2.0
-
long@5.3.2: {}
loose-envify@1.4.0:
@@ -11406,12 +9898,18 @@ snapshots:
lru-cache@10.4.3: {}
+ lru-cache@11.3.6: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
lru.min@1.1.4: {}
+ lucide-react@0.542.0(react@19.2.5):
+ dependencies:
+ react: 19.2.5
+
lucide-react@0.555.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -11420,20 +9918,14 @@ snapshots:
dependencies:
react: 19.2.5
+ lz-string@1.5.0: {}
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- make-dir@4.0.0:
- dependencies:
- semver: 7.7.4
-
make-error@1.3.6: {}
- makeerror@1.0.12:
- dependencies:
- tmpl: 1.0.5
-
math-intrinsics@1.1.0: {}
maxmind@5.0.6:
@@ -11447,9 +9939,11 @@ snapshots:
mdn-data@2.0.30: {}
- memorystream@0.3.1: {}
+ mdn-data@2.27.1: {}
- merge-stream@2.0.0: {}
+ memoize-one@5.2.1: {}
+
+ memorystream@0.3.1: {}
merge2@1.4.1: {}
@@ -11458,13 +9952,7 @@ snapshots:
braces: 3.0.3
picomatch: 2.3.2
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- mimic-fn@2.1.0: {}
+ min-indent@1.0.1: {}
minimatch@10.2.5:
dependencies:
@@ -11474,10 +9962,6 @@ snapshots:
dependencies:
brace-expansion: 1.1.12
- minimatch@3.1.5:
- dependencies:
- brace-expansion: 1.1.14
-
minimatch@5.1.6:
dependencies:
brace-expansion: 2.0.2
@@ -11521,6 +10005,33 @@ snapshots:
ms@2.1.3: {}
+ msw@2.14.5(@types/node@25.6.0)(typescript@6.0.3):
+ dependencies:
+ '@inquirer/confirm': 6.0.12(@types/node@25.6.0)
+ '@mswjs/interceptors': 0.41.8
+ '@open-draft/deferred-promise': 3.0.0
+ '@types/statuses': 2.0.6
+ cookie: 1.1.1
+ graphql: 16.14.0
+ headers-polyfill: 5.0.1
+ is-node-process: 1.2.0
+ outvariant: 1.4.3
+ path-to-regexp: 6.3.0
+ picocolors: 1.1.1
+ rettime: 0.11.11
+ statuses: 2.0.2
+ strict-event-emitter: 0.5.1
+ tough-cookie: 6.0.1
+ type-fest: 5.6.0
+ until-async: 3.0.2
+ yargs: 17.7.2
+ optionalDependencies:
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - '@types/node'
+
+ mute-stream@3.0.0: {}
+
mysql2@3.15.3:
dependencies:
aws-ssl-profiles: 1.1.2
@@ -11545,24 +10056,18 @@ snapshots:
nanoid@3.3.11: {}
- napi-postinstall@0.3.4: {}
-
- natural-compare@1.4.0: {}
-
negotiator@1.0.0: {}
- neo-async@2.6.2: {}
-
next-intl-swc-plugin-extractor@4.9.1: {}
- next-intl@4.9.1(@swc/helpers@0.5.21)(next@16.2.4(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@6.0.3):
+ next-intl@4.9.1(@swc/helpers@0.5.21)(next@16.2.4(@babel/core@7.29.0)(@playwright/test@1.59.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@6.0.3):
dependencies:
'@formatjs/intl-localematcher': 0.8.3
'@parcel/watcher': 2.5.6
'@swc/core': 1.15.26(@swc/helpers@0.5.21)
icu-minify: 4.9.1
negotiator: 1.0.0
- next: 16.2.4(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ next: 16.2.4(@babel/core@7.29.0)(@playwright/test@1.59.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
next-intl-swc-plugin-extractor: 4.9.1
po-parser: 2.1.1
react: 19.2.5
@@ -11572,7 +10077,7 @@ snapshots:
transitivePeerDependencies:
- '@swc/helpers'
- next@16.2.4(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
+ next@16.2.4(@babel/core@7.29.0)(@playwright/test@1.59.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@next/env': 16.2.4
'@swc/helpers': 0.5.15
@@ -11581,7 +10086,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
- styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.5)
+ styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5)
optionalDependencies:
'@next/swc-darwin-arm64': 16.2.4
'@next/swc-darwin-x64': 16.2.4
@@ -11591,6 +10096,7 @@ snapshots:
'@next/swc-linux-x64-musl': 16.2.4
'@next/swc-win32-arm64-msvc': 16.2.4
'@next/swc-win32-x64-msvc': 16.2.4
+ '@playwright/test': 1.59.1
babel-plugin-react-compiler: 19.1.0-rc.2
sharp: 0.34.5
transitivePeerDependencies:
@@ -11616,8 +10122,6 @@ snapshots:
fetch-blob: 3.2.0
formdata-polyfill: 4.0.10
- node-int64@0.4.0: {}
-
node-releases@2.0.19: {}
node-releases@2.0.37: {}
@@ -11631,8 +10135,6 @@ snapshots:
semver: 5.7.2
validate-npm-package-license: 3.0.4
- normalize-path@3.0.0: {}
-
normalize-url@6.1.0: {}
npm-run-all@4.1.5:
@@ -11647,10 +10149,6 @@ snapshots:
shell-quote: 1.8.3
string.prototype.padend: 3.1.6
- npm-run-path@4.0.1:
- dependencies:
- path-key: 3.1.1
-
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
@@ -11676,17 +10174,15 @@ snapshots:
has-symbols: 1.1.0
object-keys: 1.1.1
+ obug@2.1.1: {}
+
ohash@2.0.11: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.0
-
- ospath@1.2.2: {}
+ outvariant@1.4.3: {}
own-keys@1.0.1:
dependencies:
@@ -11696,22 +10192,6 @@ snapshots:
p-finally@1.0.0: {}
- p-limit@2.3.0:
- dependencies:
- p-try: 2.2.0
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@4.1.0:
- dependencies:
- p-limit: 2.3.0
-
- p-map@4.0.0:
- dependencies:
- aggregate-error: 3.1.0
-
p-map@7.0.4: {}
p-queue@6.6.2:
@@ -11723,8 +10203,6 @@ snapshots:
dependencies:
p-finally: 1.0.0
- p-try@2.2.0: {}
-
package-json-from-dist@1.0.1: {}
pako@1.0.11: {}
@@ -11747,9 +10225,11 @@ snapshots:
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
- path-browserify@1.0.1: {}
+ parse5@8.0.1:
+ dependencies:
+ entities: 8.0.0
- path-exists@4.0.0: {}
+ path-browserify@1.0.1: {}
path-is-absolute@1.0.1: {}
@@ -11764,6 +10244,8 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-to-regexp@6.3.0: {}
+
path-type@3.0.0:
dependencies:
pify: 3.0.0
@@ -11774,12 +10256,8 @@ snapshots:
pathe@2.0.3: {}
- pend@1.2.0: {}
-
perfect-debounce@1.0.0: {}
- performance-now@2.1.0: {}
-
pg-cloudflare@1.3.0:
optional: true
@@ -11833,10 +10311,6 @@ snapshots:
pirates@4.0.7: {}
- pkg-dir@4.2.0:
- dependencies:
- find-up: 4.1.0
-
pkg-types@1.3.1:
dependencies:
confbox: 0.1.8
@@ -11849,6 +10323,14 @@ snapshots:
exsolve: 1.0.8
pathe: 2.0.3
+ playwright-core@1.59.1: {}
+
+ playwright@1.59.1:
+ dependencies:
+ playwright-core: 1.59.1
+ optionalDependencies:
+ fsevents: 2.3.2
+
po-parser@2.1.1: {}
possible-typed-array-names@1.1.0: {}
@@ -12313,6 +10795,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.14:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postgres-array@2.0.0: {}
postgres-array@3.0.4: {}
@@ -12331,19 +10819,11 @@ snapshots:
prettier@2.8.8: {}
- pretty-bytes@5.6.0: {}
-
- pretty-format@30.0.5:
+ pretty-format@27.5.1:
dependencies:
- '@jest/schemas': 30.0.5
+ ansi-regex: 5.0.1
ansi-styles: 5.2.0
- react-is: 18.3.1
-
- pretty-format@30.3.0:
- dependencies:
- '@jest/schemas': 30.0.5
- ansi-styles: 5.2.0
- react-is: 18.3.1
+ react-is: 17.0.2
prisma@7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.3):
dependencies:
@@ -12364,8 +10844,6 @@ snapshots:
process-nextick-args@2.0.1: {}
- process@0.11.10: {}
-
promise.series@0.2.0: {}
prompts@2.4.2:
@@ -12385,12 +10863,7 @@ snapshots:
retry: 0.12.0
signal-exit: 3.0.7
- proxy-from-env@1.0.0: {}
-
- pump@3.0.4:
- dependencies:
- end-of-stream: 1.4.5
- once: 1.4.0
+ punycode@2.3.1: {}
pure-rand@6.1.0: {}
@@ -12398,10 +10871,6 @@ snapshots:
pure-rand@8.4.0: {}
- qs@6.14.2:
- dependencies:
- side-channel: 1.1.0
-
queue-microtask@1.2.3: {}
raf-schd@4.0.3: {}
@@ -12451,7 +10920,7 @@ snapshots:
react-is@16.13.1: {}
- react-is@18.3.1: {}
+ react-is@17.0.2: {}
react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1):
dependencies:
@@ -12467,6 +10936,16 @@ snapshots:
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
+ react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
+ dependencies:
+ d3-geo: 2.0.2
+ d3-selection: 2.0.0
+ d3-zoom: 2.0.0
+ prop-types: 15.8.1
+ react: 19.2.5
+ react-dom: 19.2.5(react@19.2.5)
+ topojson-client: 3.1.0
+
react-simple-maps@3.0.0(prop-types@15.8.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
d3-geo: 2.0.2
@@ -12493,6 +10972,13 @@ snapshots:
optionalDependencies:
react-dom: 19.2.5(react@19.2.5)
+ react-window@1.8.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
+ dependencies:
+ '@babel/runtime': 7.29.2
+ memoize-one: 5.2.1
+ react: 19.2.5
+ react-dom: 19.2.5(react@19.2.5)
+
react-window@2.2.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.5
@@ -12522,6 +11008,11 @@ snapshots:
readdirp@4.1.2: {}
+ redent@3.0.0:
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+
redis@5.12.1:
dependencies:
'@redis/bloom': 5.12.1(@redis/client@5.12.1)
@@ -12559,18 +11050,10 @@ snapshots:
request-ip@3.3.0: {}
- request-progress@3.0.0:
- dependencies:
- throttleit: 1.0.1
-
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
- resolve-cwd@3.0.0:
- dependencies:
- resolve-from: 5.0.0
-
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -12590,16 +11073,32 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- restore-cursor@3.1.0:
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
-
retry@0.12.0: {}
+ rettime@0.11.11: {}
+
reusify@1.1.0: {}
- rfdc@1.4.1: {}
+ rolldown@1.0.0-rc.18:
+ dependencies:
+ '@oxc-project/types': 0.128.0
+ '@rolldown/pluginutils': 1.0.0-rc.18
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.0.0-rc.18
+ '@rolldown/binding-darwin-arm64': 1.0.0-rc.18
+ '@rolldown/binding-darwin-x64': 1.0.0-rc.18
+ '@rolldown/binding-freebsd-x64': 1.0.0-rc.18
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.18
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.18
+ '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.18
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.18
+ '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.18
+ '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.18
+ '@rolldown/binding-linux-x64-musl': 1.0.0-rc.18
+ '@rolldown/binding-openharmony-arm64': 1.0.0-rc.18
+ '@rolldown/binding-wasm32-wasi': 1.0.0-rc.18
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.18
+ '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.18
rollup-plugin-copy@3.5.0:
dependencies:
@@ -12625,9 +11124,10 @@ snapshots:
optionalDependencies:
'@babel/code-frame': 7.29.0
- rollup-plugin-node-externals@9.0.1(rollup@4.60.1):
+ rollup-plugin-node-externals@9.0.1(rollup@4.60.1)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1)):
optionalDependencies:
rollup: 4.60.1
+ vite: 8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1)
rollup-plugin-peer-deps-external@2.2.4(rollup@4.60.1):
dependencies:
@@ -12713,10 +11213,6 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
- rxjs@7.8.2:
- dependencies:
- tslib: 2.8.1
-
safe-array-concat@1.1.3:
dependencies:
call-bind: 1.0.8
@@ -12744,6 +11240,10 @@ snapshots:
safer-buffer@2.1.2: {}
+ saxes@6.0.0:
+ dependencies:
+ xmlchars: 2.2.0
+
scheduler@0.27.0: {}
semver@5.7.2: {}
@@ -12754,6 +11254,10 @@ snapshots:
seq-queue@0.0.5: {}
+ serialize-error@12.0.0:
+ dependencies:
+ type-fest: 4.41.0
+
serialize-error@13.0.1:
dependencies:
non-error: 0.1.0
@@ -12761,6 +11265,8 @@ snapshots:
serialize-javascript@7.0.5: {}
+ set-cookie-parser@3.1.0: {}
+
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -12859,6 +11365,8 @@ snapshots:
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
+ siginfo@2.0.0: {}
+
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -12869,18 +11377,6 @@ snapshots:
slash@5.1.0: {}
- slice-ansi@3.0.0:
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
-
- slice-ansi@4.0.0:
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
-
smob@1.6.1: {}
snake-case@3.0.4:
@@ -12890,11 +11386,6 @@ snapshots:
source-map-js@1.2.1: {}
- source-map-support@0.5.13:
- dependencies:
- buffer-from: 1.1.2
- source-map: 0.6.1
-
source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
@@ -12920,41 +11411,26 @@ snapshots:
split2@4.2.0: {}
- sprintf-js@1.0.3: {}
-
sqlstring@2.3.3: {}
- sshpk@1.18.0:
- dependencies:
- asn1: 0.2.6
- assert-plus: 1.0.0
- bcrypt-pbkdf: 1.0.2
- dashdash: 1.14.1
- ecc-jsbn: 0.1.2
- getpass: 0.1.7
- jsbn: 0.1.1
- safer-buffer: 2.1.2
- tweetnacl: 0.14.5
-
stable@0.1.8: {}
- stack-utils@2.0.6:
- dependencies:
- escape-string-regexp: 2.0.0
+ stackback@0.0.2: {}
+
+ statuses@2.0.2: {}
std-env@3.10.0: {}
+ std-env@4.1.0: {}
+
stop-iteration-iterator@1.1.0:
dependencies:
es-errors: 1.3.0
internal-slot: 1.1.0
- string-hash@1.1.3: {}
+ strict-event-emitter@0.5.1: {}
- string-length@4.0.2:
- dependencies:
- char-regex: 1.0.2
- strip-ansi: 6.0.1
+ string-hash@1.1.3: {}
string-width@4.2.3:
dependencies:
@@ -13012,20 +11488,18 @@ snapshots:
strip-bom@3.0.0: {}
- strip-bom@4.0.0: {}
-
- strip-final-newline@2.0.0: {}
-
- strip-json-comments@3.1.1: {}
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
style-inject@0.3.0: {}
- styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.2.5):
+ styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5):
dependencies:
client-only: 0.0.1
react: 19.2.5
optionalDependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.29.0
stylehacks@5.1.1(postcss@8.5.10):
dependencies:
@@ -13051,10 +11525,6 @@ snapshots:
dependencies:
has-flag: 4.0.0
- supports-color@8.1.1:
- dependencies:
- has-flag: 4.0.0
-
supports-preserve-symlinks-flag@1.0.0: {}
svg-parser@2.0.4: {}
@@ -13079,11 +11549,7 @@ snapshots:
csso: 5.0.5
picocolors: 1.1.1
- synckit@0.11.12:
- dependencies:
- '@pkgr/core': 0.2.9
-
- systeminformation@5.31.5: {}
+ symbol-tree@3.2.4: {}
tagged-tag@1.0.0: {}
@@ -13112,12 +11578,6 @@ snapshots:
commander: 2.20.3
source-map-support: 0.5.21
- test-exclude@6.0.0:
- dependencies:
- '@istanbuljs/schema': 0.1.6
- glob: 7.2.3
- minimatch: 3.1.5
-
thenby@1.4.0: {}
thenify-all@1.6.0:
@@ -13128,14 +11588,12 @@ snapshots:
dependencies:
any-promise: 1.3.0
- throttleit@1.0.1: {}
-
- through@2.3.8: {}
-
tiny-invariant@1.3.3: {}
tiny-lru@13.0.0: {}
+ tinybench@2.9.0: {}
+
tinyexec@0.3.2: {}
tinyexec@1.1.1: {}
@@ -13150,15 +11608,13 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
- tldts-core@6.1.86: {}
+ tinyrainbow@3.1.0: {}
- tldts@6.1.86:
+ tldts-core@7.0.30: {}
+
+ tldts@7.0.30:
dependencies:
- tldts-core: 6.1.86
-
- tmp@0.2.5: {}
-
- tmpl@1.0.5: {}
+ tldts-core: 7.0.30
to-regex-range@5.0.1:
dependencies:
@@ -13168,35 +11624,18 @@ snapshots:
dependencies:
commander: 2.20.3
- tough-cookie@5.1.2:
+ tough-cookie@6.0.1:
dependencies:
- tldts: 6.1.86
+ tldts: 7.0.30
+
+ tr46@6.0.0:
+ dependencies:
+ punycode: 2.3.1
tree-kill@1.2.2: {}
ts-interface-checker@0.1.13: {}
- ts-jest@29.4.9(@babel/core@7.28.3)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.3))(esbuild@0.28.0)(jest-util@30.3.0)(jest@30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3)))(typescript@6.0.3):
- dependencies:
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- handlebars: 4.7.9
- jest: 30.3.0(@types/node@25.6.0)(ts-node@10.9.2(@swc/core@1.15.26(@swc/helpers@0.5.21))(@types/node@25.6.0)(typescript@6.0.3))
- json5: 2.2.3
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.7.4
- type-fest: 4.41.0
- typescript: 6.0.3
- yargs-parser: 21.1.1
- optionalDependencies:
- '@babel/core': 7.28.3
- '@jest/transform': 30.3.0
- '@jest/types': 30.3.0
- babel-jest: 30.3.0(@babel/core@7.28.3)
- esbuild: 0.28.0
- jest-util: 30.3.0
-
ts-morph@28.0.0:
dependencies:
'@ts-morph/common': 0.29.0
@@ -13222,8 +11661,6 @@ snapshots:
optionalDependencies:
'@swc/core': 1.15.26(@swc/helpers@0.5.21)
- tslib@1.14.1: {}
-
tslib@2.8.1: {}
tsup@8.5.1(@swc/core@1.15.26(@swc/helpers@0.5.21))(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.1):
@@ -13232,7 +11669,7 @@ snapshots:
cac: 6.7.14
chokidar: 4.0.3
consola: 3.4.2
- debug: 4.4.3(supports-color@8.1.1)
+ debug: 4.4.3
esbuild: 0.27.7
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
@@ -13262,18 +11699,6 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- tunnel-agent@0.6.0:
- dependencies:
- safe-buffer: 5.2.1
-
- tweetnacl@0.14.5: {}
-
- type-detect@4.0.8: {}
-
- type-fest@0.21.3: {}
-
- type-fest@0.8.1: {}
-
type-fest@4.41.0: {}
type-fest@5.6.0:
@@ -13325,9 +11750,6 @@ snapshots:
ufo@1.6.1: {}
- uglify-js@3.19.3:
- optional: true
-
unbox-primitive@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -13337,37 +11759,13 @@ snapshots:
undici-types@7.19.2: {}
+ undici@7.25.0: {}
+
unicorn-magic@0.3.0: {}
universalify@0.1.2: {}
- universalify@2.0.1: {}
-
- unrs-resolver@1.11.1:
- dependencies:
- napi-postinstall: 0.3.4
- optionalDependencies:
- '@unrs/resolver-binding-android-arm-eabi': 1.11.1
- '@unrs/resolver-binding-android-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-x64': 1.11.1
- '@unrs/resolver-binding-freebsd-x64': 1.11.1
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
- '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-musl': 1.11.1
- '@unrs/resolver-binding-wasm32-wasi': 1.11.1
- '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
- '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
- '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
-
- untildify@4.0.0: {}
+ until-async@3.0.2: {}
update-browserslist-db@1.1.3(browserslist@4.25.2):
dependencies:
@@ -13395,18 +11793,12 @@ snapshots:
util-deprecate@1.0.2: {}
+ uuid@11.1.1: {}
+
uuid@14.0.0: {}
- uuid@8.3.2: {}
-
v8-compile-cache-lib@3.0.1: {}
- v8-to-istanbul@9.3.0:
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- '@types/istanbul-lib-coverage': 2.0.6
- convert-source-map: 2.0.0
-
valibot@1.2.0(typescript@6.0.3):
optionalDependencies:
typescript: 6.0.3
@@ -13418,18 +11810,68 @@ snapshots:
vary@1.1.2: {}
- verror@1.10.0:
+ vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1):
dependencies:
- assert-plus: 1.0.0
- core-util-is: 1.0.2
- extsprintf: 1.3.0
+ lightningcss: 1.32.0
+ picomatch: 4.0.4
+ postcss: 8.5.14
+ rolldown: 1.0.0-rc.18
+ tinyglobby: 0.2.16
+ optionalDependencies:
+ '@types/node': 25.6.0
+ esbuild: 0.28.0
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ terser: 5.46.1
+ tsx: 4.21.0
+ yaml: 2.8.1
- walker@1.0.8:
+ vitest@4.1.5(@types/node@25.6.0)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.0)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1)):
dependencies:
- makeerror: 1.0.12
+ '@vitest/expect': 4.1.5
+ '@vitest/mocker': 4.1.5(msw@2.14.5(@types/node@25.6.0)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1))
+ '@vitest/pretty-format': 4.1.5
+ '@vitest/runner': 4.1.5
+ '@vitest/snapshot': 4.1.5
+ '@vitest/spy': 4.1.5
+ '@vitest/utils': 4.1.5
+ es-module-lexer: 2.1.0
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ obug: 2.1.1
+ pathe: 2.0.3
+ picomatch: 4.0.4
+ std-env: 4.1.0
+ tinybench: 2.9.0
+ tinyexec: 1.1.1
+ tinyglobby: 0.2.16
+ tinyrainbow: 3.1.0
+ vite: 8.0.11(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.1)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 25.6.0
+ jsdom: 29.1.1
+ transitivePeerDependencies:
+ - msw
+
+ w3c-xmlserializer@5.0.0:
+ dependencies:
+ xml-name-validator: 5.0.0
web-streams-polyfill@3.3.3: {}
+ webidl-conversions@8.0.1: {}
+
+ whatwg-mimetype@5.0.0: {}
+
+ whatwg-url@16.0.1:
+ dependencies:
+ '@exodus/bytes': 1.15.0
+ tr46: 6.0.0
+ webidl-conversions: 8.0.1
+ transitivePeerDependencies:
+ - '@noble/hashes'
+
which-boxed-primitive@1.1.1:
dependencies:
is-bigint: 1.1.0
@@ -13479,13 +11921,10 @@ snapshots:
dependencies:
isexe: 2.0.0
- wordwrap@1.0.0: {}
-
- wrap-ansi@6.2.0:
+ why-is-node-running@2.3.0:
dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
+ siginfo: 2.0.0
+ stackback: 0.0.2
wrap-ansi@7.0.0:
dependencies:
@@ -13501,10 +11940,9 @@ snapshots:
wrappy@1.0.2: {}
- write-file-atomic@5.0.1:
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 4.1.0
+ xml-name-validator@5.0.0: {}
+
+ xmlchars@2.2.0: {}
xtend@4.0.2: {}
@@ -13531,15 +11969,8 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
- yauzl@2.10.0:
- dependencies:
- buffer-crc32: 0.2.13
- fd-slicer: 1.1.0
-
yn@3.1.1: {}
- yocto-queue@0.1.0: {}
-
zeptomatch@2.1.0:
dependencies:
grammex: 3.1.12
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 5e236fb7f..46faf84cc 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,7 +1,6 @@
packages:
- '**'
ignoredBuiltDependencies:
- - cypress
- esbuild
- sharp
onlyBuiltDependencies:
diff --git a/src/lib/__tests__/api-url.test.ts b/src/lib/__tests__/api-url.test.ts
index 2cf9978fb..2844e2522 100644
--- a/src/lib/__tests__/api-url.test.ts
+++ b/src/lib/__tests__/api-url.test.ts
@@ -1,4 +1,4 @@
-import { expect, test } from '@jest/globals';
+import { expect, test } from 'vitest';
import { getApiUrl } from '../api-url';
test('uses the default api path', () => {
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 549128be3..238897499 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -257,7 +257,7 @@ export const DOMAIN_REGEX =
/^(localhost(:[1-9]\d{0,4})?|((?=[a-z0-9-_]{1,63}\.)(xn--)?[a-z0-9-_]+(-[a-z0-9-_]+)*\.)+(xn--)?[a-z0-9-_]{2,63})$/;
export const SHARE_ID_REGEX = /^[a-zA-Z0-9]{8,50}$/;
export const DATETIME_REGEX =
- /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{3}(Z|\+[0-9]{2}:[0-9]{2})?)?$/;
+ /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{3})?(Z|\+[0-9]{2}:[0-9]{2})?$/;
export const URL_LENGTH = 500;
export const PAGE_TITLE_LENGTH = 500;
diff --git a/src/test/msw/handlers.ts b/src/test/msw/handlers.ts
new file mode 100644
index 000000000..663b731dd
--- /dev/null
+++ b/src/test/msw/handlers.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from 'msw';
+
+export const handlers: RequestHandler[] = [];
diff --git a/src/test/msw/server.ts b/src/test/msw/server.ts
new file mode 100644
index 000000000..1a5bd6432
--- /dev/null
+++ b/src/test/msw/server.ts
@@ -0,0 +1,5 @@
+import { setupServer } from 'msw/node';
+import { handlers } from './handlers';
+
+export const server = setupServer(...handlers);
+export { HttpResponse, http } from 'msw';
diff --git a/src/test/setup.ts b/src/test/setup.ts
new file mode 100644
index 000000000..0fdb47e1f
--- /dev/null
+++ b/src/test/setup.ts
@@ -0,0 +1,15 @@
+import '@testing-library/jest-dom/vitest';
+import { afterAll, afterEach, beforeAll } from 'vitest';
+import { server } from './msw/server';
+
+beforeAll(() => {
+ server.listen({ onUnhandledRequest: 'error' });
+});
+
+afterEach(() => {
+ server.resetHandlers();
+});
+
+afterAll(() => {
+ server.close();
+});
diff --git a/src/test/test-utils.tsx b/src/test/test-utils.tsx
new file mode 100644
index 000000000..e0b715df3
--- /dev/null
+++ b/src/test/test-utils.tsx
@@ -0,0 +1,10 @@
+import { type RenderOptions, render } from '@testing-library/react';
+import type { ReactElement } from 'react';
+
+const customRender = (ui: ReactElement, options?: Omit) => {
+ return render(ui, options);
+};
+
+export * from '@testing-library/react';
+export { default as userEvent } from '@testing-library/user-event';
+export { customRender as render };
diff --git a/src/test/vitest.d.ts b/src/test/vitest.d.ts
new file mode 100644
index 000000000..edfa8b53f
--- /dev/null
+++ b/src/test/vitest.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/tests/e2e/api-team.spec.ts b/tests/e2e/api-team.spec.ts
new file mode 100644
index 000000000..d5fe8b2fc
--- /dev/null
+++ b/tests/e2e/api-team.spec.ts
@@ -0,0 +1,153 @@
+import { expect, test } from '@playwright/test';
+import { teams, users } from './fixtures';
+import { type Auth, authHeaders, deleteUser, loginViaApi, umamiUser } from './helpers';
+
+test.describe('Team API tests', () => {
+ test.describe.configure({ mode: 'serial' });
+
+ let auth: Auth;
+ let teamId = '';
+ let userId = '';
+
+ test.beforeAll(async ({ request }) => {
+ auth = await loginViaApi(request);
+
+ const response = await request.post('/api/users', {
+ headers: authHeaders(auth),
+ data: users.userCreate,
+ });
+ const body = await response.json();
+
+ userId = body.id;
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('username', 'playwright1');
+ expect(body).toHaveProperty('role', 'user');
+ });
+
+ test.afterAll(async ({ request }) => {
+ if (userId) {
+ await deleteUser(request, auth, userId);
+ }
+ });
+
+ test('creates a team', async ({ request }) => {
+ const response = await request.post('/api/teams', {
+ headers: authHeaders(auth),
+ data: teams.teamCreate,
+ });
+ const body = await response.json();
+
+ teamId = body[0].id;
+
+ expect(response.status()).toBe(200);
+ expect(body[0]).toHaveProperty('name', 'playwright');
+ expect(body[1]).toHaveProperty('role', 'team-owner');
+ });
+
+ test('gets a team by ID', async ({ request }) => {
+ const response = await request.get(`/api/teams/${teamId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('id', teamId);
+ });
+
+ test('updates a team', async ({ request }) => {
+ const response = await request.post(`/api/teams/${teamId}`, {
+ headers: authHeaders(auth),
+ data: teams.teamUpdate,
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('id', teamId);
+ expect(body).toHaveProperty('name', 'playwrightUpdate');
+ });
+
+ test('gets all users that belong to a team', async ({ request }) => {
+ const response = await request.get(`/api/teams/${teamId}/users`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body.data[0]).toHaveProperty('id');
+ expect(body.data[0]).toHaveProperty('teamId');
+ expect(body.data[0]).toHaveProperty('userId');
+ expect(body.data[0]).toHaveProperty('user');
+ });
+
+ test('gets a user belonging to a team', async ({ request }) => {
+ const response = await request.get(`/api/teams/${teamId}/users/${umamiUser.id}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('teamId');
+ expect(body).toHaveProperty('userId');
+ expect(body).toHaveProperty('role');
+ });
+
+ test('gets all websites belonging to a team', async ({ request }) => {
+ const response = await request.get(`/api/teams/${teamId}/websites`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('data');
+ });
+
+ test('adds a user to a team', async ({ request }) => {
+ const response = await request.post(`/api/teams/${teamId}/users`, {
+ headers: authHeaders(auth),
+ data: {
+ userId,
+ role: 'team-member',
+ },
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('userId', userId);
+ expect(body).toHaveProperty('role', 'team-member');
+ });
+
+ test('updates a user role on a team', async ({ request }) => {
+ const response = await request.post(`/api/teams/${teamId}/users/${userId}`, {
+ headers: authHeaders(auth),
+ data: {
+ role: 'team-view-only',
+ },
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('userId', userId);
+ expect(body).toHaveProperty('role', 'team-view-only');
+ });
+
+ test('removes a user from a team', async ({ request }) => {
+ const response = await request.delete(`/api/teams/${teamId}/users/${userId}`, {
+ headers: authHeaders(auth),
+ });
+
+ expect(response.status()).toBe(200);
+ });
+
+ test('deletes a team', async ({ request }) => {
+ const response = await request.delete(`/api/teams/${teamId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ teamId = '';
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('ok', true);
+ });
+});
diff --git a/tests/e2e/api-user.spec.ts b/tests/e2e/api-user.spec.ts
new file mode 100644
index 000000000..cb94c769d
--- /dev/null
+++ b/tests/e2e/api-user.spec.ts
@@ -0,0 +1,98 @@
+import { expect, test } from '@playwright/test';
+import { users } from './fixtures';
+import { type Auth, authHeaders, loginViaApi } from './helpers';
+
+test.describe('User API tests', () => {
+ test.describe.configure({ mode: 'serial' });
+
+ let auth: Auth;
+ let userId = '';
+
+ test.beforeAll(async ({ request }) => {
+ auth = await loginViaApi(request);
+ });
+
+ test('creates a user', async ({ request }) => {
+ const response = await request.post('/api/users', {
+ headers: authHeaders(auth),
+ data: users.userCreate,
+ });
+ const body = await response.json();
+
+ userId = body.id;
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('username', 'playwright1');
+ expect(body).toHaveProperty('role', 'user');
+ });
+
+ test('returns all users when admin access is used', async ({ request }) => {
+ const response = await request.get('/api/admin/users', {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body.data[0]).toHaveProperty('id');
+ expect(body.data[0]).toHaveProperty('username');
+ expect(body.data[0]).toHaveProperty('password');
+ expect(body.data[0]).toHaveProperty('role');
+ });
+
+ test('updates a user', async ({ request }) => {
+ const response = await request.post(`/api/users/${userId}`, {
+ headers: authHeaders(auth),
+ data: users.userUpdate,
+ });
+ const body = await response.json();
+
+ userId = body.id;
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('id', userId);
+ expect(body).toHaveProperty('username', 'playwright1');
+ expect(body).toHaveProperty('role', 'view-only');
+ });
+
+ test('gets a user by ID', async ({ request }) => {
+ const response = await request.get(`/api/users/${userId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('id', userId);
+ expect(body).toHaveProperty('username', 'playwright1');
+ expect(body).toHaveProperty('role', 'view-only');
+ });
+
+ test('deletes a user', async ({ request }) => {
+ const response = await request.delete(`/api/users/${userId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('ok', true);
+ });
+
+ test('gets all websites that belong to a user', async ({ request }) => {
+ const response = await request.get(`/api/users/${userId}/websites`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('data');
+ });
+
+ test('gets all teams that belong to a user', async ({ request }) => {
+ const response = await request.get(`/api/users/${userId}/teams`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('data');
+ });
+});
diff --git a/tests/e2e/api-website.spec.ts b/tests/e2e/api-website.spec.ts
new file mode 100644
index 000000000..3fd585def
--- /dev/null
+++ b/tests/e2e/api-website.spec.ts
@@ -0,0 +1,152 @@
+import { expect, test } from '@playwright/test';
+import { uuid } from '../../src/lib/crypto';
+import { teams, websites } from './fixtures';
+import { type Auth, authHeaders, deleteTeam, loginViaApi } from './helpers';
+
+test.describe('Website API tests', () => {
+ test.describe.configure({ mode: 'serial' });
+
+ let auth: Auth;
+ let websiteId = '';
+ let teamId = '';
+
+ test.beforeAll(async ({ request }) => {
+ auth = await loginViaApi(request);
+
+ const response = await request.post('/api/teams', {
+ headers: authHeaders(auth),
+ data: teams.teamCreate,
+ });
+ const body = await response.json();
+
+ teamId = body[0].id;
+
+ expect(response.status()).toBe(200);
+ expect(body[0]).toHaveProperty('name', 'playwright');
+ expect(body[1]).toHaveProperty('role', 'team-owner');
+ });
+
+ test.afterAll(async ({ request }) => {
+ if (teamId) {
+ await deleteTeam(request, auth, teamId);
+ }
+ });
+
+ test('creates a website for user', async ({ request }) => {
+ const response = await request.post('/api/websites', {
+ headers: authHeaders(auth),
+ data: websites.websiteCreate,
+ });
+ const body = await response.json();
+
+ websiteId = body.id;
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('name', 'Playwright Website');
+ expect(body).toHaveProperty('domain', 'playwright.com');
+ });
+
+ test('creates a website for team', async ({ request }) => {
+ const response = await request.post('/api/websites', {
+ headers: authHeaders(auth),
+ data: {
+ name: 'Team Website',
+ domain: 'teamwebsite.com',
+ teamId,
+ },
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('name', 'Team Website');
+ expect(body).toHaveProperty('domain', 'teamwebsite.com');
+ });
+
+ test('creates a website with a fixed ID', async ({ request }) => {
+ const fixedId = uuid();
+ const response = await request.post('/api/websites', {
+ headers: authHeaders(auth),
+ data: { ...websites.websiteCreate, id: fixedId },
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('id', fixedId);
+ expect(body).toHaveProperty('name', 'Playwright Website');
+ expect(body).toHaveProperty('domain', 'playwright.com');
+
+ await request.delete(`/api/websites/${fixedId}`, {
+ headers: authHeaders(auth),
+ });
+ });
+
+ test('returns all tracked websites', async ({ request }) => {
+ const response = await request.get('/api/websites', {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body.data[0]).toHaveProperty('id');
+ expect(body.data[0]).toHaveProperty('name');
+ expect(body.data[0]).toHaveProperty('domain');
+ });
+
+ test('gets a website by ID', async ({ request }) => {
+ const response = await request.get(`/api/websites/${websiteId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('name', 'Playwright Website');
+ expect(body).toHaveProperty('domain', 'playwright.com');
+ });
+
+ test('updates a website', async ({ request }) => {
+ const response = await request.post(`/api/websites/${websiteId}`, {
+ headers: authHeaders(auth),
+ data: websites.websiteUpdate,
+ });
+ const body = await response.json();
+
+ websiteId = body.id;
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('name', 'Playwright Website Updated');
+ expect(body).toHaveProperty('domain', 'playwrightupdated.com');
+ });
+
+ test('updates a website with only shareId', async ({ request }) => {
+ const response = await request.post(`/api/websites/${websiteId}`, {
+ headers: authHeaders(auth),
+ data: { shareId: 'ABCDEF' },
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('shareId', 'ABCDEF');
+ });
+
+ test('resets a website by removing all data related to the website', async ({ request }) => {
+ const response = await request.post(`/api/websites/${websiteId}/reset`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('ok', true);
+ });
+
+ test('deletes a website', async ({ request }) => {
+ const response = await request.delete(`/api/websites/${websiteId}`, {
+ headers: authHeaders(auth),
+ });
+ const body = await response.json();
+
+ websiteId = '';
+
+ expect(response.status()).toBe(200);
+ expect(body).toHaveProperty('ok', true);
+ });
+});
diff --git a/tests/e2e/fixtures.ts b/tests/e2e/fixtures.ts
new file mode 100644
index 000000000..860e15ffb
--- /dev/null
+++ b/tests/e2e/fixtures.ts
@@ -0,0 +1,31 @@
+export const users = {
+ userCreate: {
+ username: 'playwright1',
+ password: 'password',
+ role: 'user',
+ },
+ userUpdate: {
+ username: 'playwright1',
+ role: 'view-only',
+ },
+};
+
+export const teams = {
+ teamCreate: {
+ name: 'playwright',
+ },
+ teamUpdate: {
+ name: 'playwrightUpdate',
+ },
+};
+
+export const websites = {
+ websiteCreate: {
+ name: 'Playwright Website',
+ domain: 'playwright.com',
+ },
+ websiteUpdate: {
+ name: 'Playwright Website Updated',
+ domain: 'playwrightupdated.com',
+ },
+};
diff --git a/tests/e2e/helpers.ts b/tests/e2e/helpers.ts
new file mode 100644
index 000000000..8eae8dac1
--- /dev/null
+++ b/tests/e2e/helpers.ts
@@ -0,0 +1,120 @@
+import { type APIRequestContext, expect, type Page } from '@playwright/test';
+import { uuid } from '../../src/lib/crypto';
+
+export type Auth = {
+ token: string;
+ authorization: string;
+};
+
+export const umamiUser = {
+ username: process.env.UMAMI_USER ?? 'admin',
+ password: process.env.UMAMI_PASSWORD ?? 'umami',
+ id: process.env.UMAMI_USER_ID ?? '41e2b680-648e-4b09-bcd7-3e2b10c06264',
+};
+
+export const authHeaders = (auth: Auth) => ({
+ 'Content-Type': 'application/json',
+ Authorization: auth.authorization,
+});
+
+export async function loginViaApi(
+ request: APIRequestContext,
+ username = umamiUser.username,
+ password = umamiUser.password,
+): Promise {
+ const response = await request.post('/api/auth/login', {
+ data: { username, password },
+ });
+
+ expect(response.status()).toBe(200);
+
+ const body = await response.json();
+
+ return {
+ token: body.token,
+ authorization: `bearer ${body.token}`,
+ };
+}
+
+export async function loginPage(page: Page, request: APIRequestContext): Promise {
+ const auth = await loginViaApi(request);
+
+ await page.addInitScript(token => {
+ window.localStorage.setItem('umami.auth', JSON.stringify(token));
+ }, auth.token);
+
+ return auth;
+}
+
+export async function logout(page: Page) {
+ await page.getByTestId('button-profile').click();
+ await page.getByTestId('item-logout').click();
+ await expect(page).toHaveURL(/\/login$/);
+}
+
+export async function addWebsite(
+ request: APIRequestContext,
+ auth: Auth,
+ name: string,
+ domain: string,
+) {
+ const response = await request.post('/api/websites', {
+ headers: authHeaders(auth),
+ data: {
+ id: uuid(),
+ createdBy: umamiUser.id,
+ name,
+ domain,
+ },
+ });
+
+ expect(response.status()).toBe(200);
+}
+
+export async function deleteWebsite(request: APIRequestContext, auth: Auth, websiteId: string) {
+ const response = await request.delete(`/api/websites/${websiteId}`, {
+ headers: authHeaders(auth),
+ });
+
+ expect(response.status()).toBe(200);
+}
+
+export async function addUser(
+ request: APIRequestContext,
+ auth: Auth,
+ username: string,
+ password: string,
+ role: string,
+) {
+ const response = await request.post('/api/users', {
+ headers: authHeaders(auth),
+ data: { username, password, role },
+ });
+
+ expect(response.status()).toBe(200);
+}
+
+export async function deleteUser(request: APIRequestContext, auth: Auth, userId: string) {
+ const response = await request.delete(`/api/users/${userId}`, {
+ headers: authHeaders(auth),
+ });
+
+ expect(response.status()).toBe(200);
+}
+
+export async function addTeam(request: APIRequestContext, auth: Auth, name: string) {
+ const response = await request.post('/api/teams', {
+ headers: authHeaders(auth),
+ data: { name },
+ });
+
+ expect(response.status()).toBe(200);
+}
+
+export async function deleteTeam(request: APIRequestContext, auth: Auth, teamId: string) {
+ const response = await request.delete(`/api/teams/${teamId}`, {
+ headers: authHeaders(auth),
+ });
+
+ expect(response.status()).toBe(200);
+}
diff --git a/tests/e2e/login.spec.ts b/tests/e2e/login.spec.ts
new file mode 100644
index 000000000..c5b956b98
--- /dev/null
+++ b/tests/e2e/login.spec.ts
@@ -0,0 +1,29 @@
+import { expect, test } from '@playwright/test';
+import { logout, umamiUser } from './helpers';
+
+test.describe('Login tests', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto('/login');
+ });
+
+ test('logs user in with correct credentials and logs user out', async ({ page }) => {
+ await page.getByTestId('input-username').locator('input').fill(umamiUser.username);
+ await page.getByTestId('input-password').locator('input').fill(umamiUser.password);
+ await page.getByTestId('button-submit').click();
+
+ await expect(page).toHaveURL(/\/dashboard$/);
+
+ await logout(page);
+ });
+
+ test('shows validation for blank inputs or incorrect credentials', async ({ page }) => {
+ await page.getByTestId('button-submit').click();
+ await expect(page.getByText(/Required/i)).toBeVisible();
+
+ await page.getByTestId('input-username').locator('input').fill(umamiUser.username);
+ await page.getByTestId('input-password').locator('input').fill('wrongpassword');
+ await page.getByTestId('button-submit').click();
+
+ await expect(page.getByText(/Incorrect username and\/or password./i)).toBeVisible();
+ });
+});
diff --git a/tests/e2e/user.spec.ts b/tests/e2e/user.spec.ts
new file mode 100644
index 000000000..33023c204
--- /dev/null
+++ b/tests/e2e/user.spec.ts
@@ -0,0 +1,59 @@
+import { expect, test } from '@playwright/test';
+import { loginPage, logout } from './helpers';
+
+test.describe('User tests', () => {
+ test.describe.configure({ mode: 'serial' });
+
+ test.beforeEach(async ({ page, request }) => {
+ await loginPage(page, request);
+ await page.goto('/settings/users');
+ });
+
+ test('adds a user', async ({ page }) => {
+ await expect(page.getByText(/Create user/i)).toBeVisible();
+
+ await page.getByTestId('button-create-user').click();
+ await page.getByTestId('input-username').locator('input').fill('Test-user');
+ await page.getByTestId('input-password').locator('input').fill('testPasswordPlaywright');
+ await page.getByTestId('dropdown-role').click();
+ await page.getByTestId('dropdown-item-user').click();
+ await page.getByTestId('button-submit').click();
+
+ await expect(page.locator('td[label="Username"]')).toContainText('Test-user');
+ await expect(page.locator('td[label="Role"]')).toContainText('User');
+ });
+
+ test('edits a user role and password', async ({ page }) => {
+ const userRow = page.locator('table tbody tr').filter({
+ has: page.locator('td', { hasText: /Test-user/i }),
+ });
+
+ await userRow.getByTestId('link-button-edit').click();
+ await page.getByTestId('input-password').locator('input').fill('newPassword');
+ await page.getByTestId('dropdown-role').click();
+ await page.getByTestId('dropdown-item-viewOnly').click();
+ await page.getByTestId('button-submit').click();
+
+ await page.goto('/settings/users');
+ await expect(
+ page.locator('table tbody tr').filter({ has: page.locator('td', { hasText: /Test-user/i }) }),
+ ).toContainText('View only');
+
+ await logout(page);
+ await page.getByTestId('input-username').locator('input').fill('Test-user');
+ await page.getByTestId('input-password').locator('input').fill('newPassword');
+ await page.getByTestId('button-submit').click();
+
+ await expect(page).toHaveURL(/\/dashboard$/);
+ });
+
+ test('deletes a user', async ({ page }) => {
+ const userRow = page.locator('table tbody tr').filter({
+ has: page.locator('td', { hasText: /Test-user/i }),
+ });
+
+ await userRow.getByTestId('button-delete').click();
+ await expect(page.getByText(/Are you sure you want to delete Test-user?/i)).toBeVisible();
+ await page.getByTestId('button-confirm').click();
+ });
+});
diff --git a/tests/e2e/website.spec.ts b/tests/e2e/website.spec.ts
new file mode 100644
index 000000000..969dde97d
--- /dev/null
+++ b/tests/e2e/website.spec.ts
@@ -0,0 +1,73 @@
+import { expect, test } from '@playwright/test';
+import { addWebsite, deleteWebsite, loginPage } from './helpers';
+
+test.describe('Website tests', () => {
+ test('adds a website', async ({ page, request }) => {
+ const auth = await loginPage(page, request);
+
+ await page.goto('/settings/websites');
+ await page.getByTestId('button-website-add').click();
+ await expect(page.getByText(/Add website/i)).toBeVisible();
+ await page.getByTestId('input-name').locator('input').fill('Add test');
+ await page.getByTestId('input-domain').locator('input').fill('addtest.com');
+ await page.getByTestId('button-submit').click();
+
+ await expect(page.locator('td[label="Name"]')).toContainText('Add test');
+ await expect(page.locator('td[label="Domain"]')).toContainText('addtest.com');
+
+ await page.getByTestId('link-button-edit').first().click();
+ await expect(page.getByText(/Details/i)).toBeVisible();
+
+ const websiteId = await page.getByTestId('text-field-websiteId').locator('input').inputValue();
+
+ await deleteWebsite(request, auth, websiteId);
+ await page.goto('/settings/websites');
+ await expect(page.getByText(/Add test/i)).toHaveCount(0);
+ });
+
+ test('edits a website', async ({ page, request }) => {
+ const auth = await loginPage(page, request);
+
+ await addWebsite(request, auth, 'Update test', 'updatetest.com');
+ await page.goto('/settings/websites');
+
+ await page.getByTestId('link-button-edit').first().click();
+ await expect(page.getByText(/Details/i)).toBeVisible();
+ await page.getByTestId('input-name').locator('input').fill('Updated website');
+ await page.getByTestId('input-domain').locator('input').fill('updatedwebsite.com');
+ await page.getByTestId('button-submit').click();
+
+ await expect(page.getByTestId('input-name').locator('input')).toHaveValue('Updated website');
+ await expect(page.getByTestId('input-domain').locator('input')).toHaveValue(
+ 'updatedwebsite.com',
+ );
+
+ await page.getByText(/Tracking code/i).click();
+ await expect(page.locator('textarea')).toContainText('/script.js');
+
+ await page.getByText(/Details/i).click();
+ const websiteId = await page.getByTestId('text-field-websiteId').locator('input').inputValue();
+
+ await deleteWebsite(request, auth, websiteId);
+ await page.goto('/settings/websites');
+ await expect(page.getByText(/Update test/i)).toHaveCount(0);
+ });
+
+ test('deletes a website', async ({ page, request }) => {
+ const auth = await loginPage(page, request);
+
+ await addWebsite(request, auth, 'Delete test', 'deletetest.com');
+ await page.goto('/settings/websites');
+
+ await page.getByTestId('link-button-edit').first().click();
+ await expect(page.getByText(/Data/i)).toBeVisible();
+ await page.getByText(/Data/i).click();
+ await expect(page.getByText(/All website data will be deleted./i)).toBeVisible();
+ await page.getByTestId('button-delete').click();
+ await expect(page.getByText(/Type DELETE in the box below to confirm./i)).toBeVisible();
+ await page.locator('input[name="confirm"]').fill('DELETE');
+ await page.locator('button[type="submit"]').click();
+
+ await expect(page.getByText(/Delete test/i)).toHaveCount(0);
+ });
+});
diff --git a/tsconfig.json b/tsconfig.json
index 6fc745192..a876a46bb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -39,5 +39,5 @@
".next/types/**/*.ts",
".next/dev/types/**/*.ts"
],
- "exclude": ["node_modules", "./cypress.config.ts", "cypress"]
+ "exclude": ["node_modules", "./playwright.config.ts", "tests/e2e"]
}
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 000000000..15e1bf715
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,22 @@
+import { fileURLToPath } from 'node:url';
+import { defineConfig } from 'vitest/config';
+
+export default defineConfig({
+ test: {
+ environment: 'jsdom',
+ exclude: [
+ '**/node_modules/**',
+ '**/tests/e2e/**',
+ '**/playwright-report/**',
+ '**/test-results/**',
+ ],
+ globals: true,
+ include: ['src/**/*.{test,spec}.{ts,tsx,js,jsx}'],
+ setupFiles: ['./src/test/setup.ts'],
+ },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ },
+ },
+});