diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dd1acfa16..f0ac2238e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,11 +24,18 @@ jobs: git config --global --add safe.directory /__w/OpenDataCapture/OpenDataCapture - name: Install Dependencies run: pnpm install --frozen-lockfile - - name: Install Playwright - run: pnpm --filter "@opendatacapture/e2e" exec playwright install --with-deps + # Run lint and unit tests before the (occasionally flaky) Playwright install so those results + # aren't blocked by a hung browser download. - name: Lint run: pnpm lint - name: Unit Tests run: pnpm test + - name: Install Playwright + # Cap the step so a hang fails fast instead of hitting the 6h job limit, skip the interactive + # apt prompt, and install only the browsers the e2e suite uses. + timeout-minutes: 10 + env: + DEBIAN_FRONTEND: noninteractive + run: pnpm --filter "@opendatacapture/e2e" exec playwright install --with-deps chromium firefox - name: End-to-End Tests run: pnpm --filter "@opendatacapture/e2e" test diff --git a/.gitignore b/.gitignore index 0c75ec7b5..79ddeca03 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,6 @@ storybook-static # playwright testing/e2e/.playwright + +# tanstack router generated temp files +.tanstack diff --git a/apps/api/package.json b/apps/api/package.json index 8acad7336..199cbc0ae 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -35,6 +35,7 @@ "@nestjs/swagger": "^11.0.6", "@nestjs/throttler": "^6.5.0", "@opendatacapture/demo": "workspace:*", + "@opendatacapture/instrument-bundler": "workspace:*", "@opendatacapture/instrument-library": "workspace:*", "@opendatacapture/instrument-utils": "workspace:*", "@opendatacapture/release-info": "workspace:*", @@ -46,6 +47,7 @@ "axios": "catalog:", "express": "^5.0.1", "fastify": "^5.7.1", + "jszip": "^3.10.1", "lodash-es": "workspace:lodash-es__4.x@*", "mongodb": "^6.15.0", "msgpackr": "catalog:", diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 085dd314a..0a57199eb 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -112,6 +112,8 @@ model Group { auditLogs AuditLog[] instrumentRecords InstrumentRecord[] instrumentRecordFiles InstrumentRecordFile[] + instrumentRepoIds String[] @db.ObjectId + instrumentRepos InstrumentRepo[] @relation(fields: [instrumentRepoIds], references: [id]) name String @unique settings GroupSettings sessions Session[] @@ -180,18 +182,45 @@ type InstrumentInternal { } model Instrument { - createdAt DateTime @default(now()) @db.Date - updatedAt DateTime @updatedAt @db.Date - id String @id @map("_id") - assignments Assignment[] - bundle String - groups Group[] @relation(fields: [groupIds], references: [id]) - groupIds String[] @db.ObjectId - records InstrumentRecord[] + createdAt DateTime @default(now()) @db.Date + updatedAt DateTime @updatedAt @db.Date + id String @id @map("_id") + assignments Assignment[] + bundle String + groups Group[] @relation(fields: [groupIds], references: [id]) + groupIds String[] @db.ObjectId + records InstrumentRecord[] + // Set only when the instrument was first created by importing an instrument repository. Left null + // for manually-uploaded instruments, which keep "manual" provenance even if a repo also provides them. + sourceRepoId String? @db.ObjectId + // Denormalized repository name, kept so the source tag survives deletion of the repository. + sourceRepoName String? @@map("InstrumentModel") } +// Instrument Repos + +model InstrumentRepo { + createdAt DateTime @default(now()) @db.Date + updatedAt DateTime @updatedAt @db.Date + id String @id @default(auto()) @map("_id") @db.ObjectId + // Display label only (derived from the repo name); not unique because two owners may have repos with + // the same name (e.g. alice/forms and bob/forms). `url` is the true identity and is unique. + name String + owner String + repoName String + url String @unique + instrumentIds String[] + groupIds String[] @db.ObjectId + groups Group[] @relation(fields: [groupIds], references: [id]) + lastSyncedAt DateTime? @db.Date + // AES-256-GCM encrypted GitHub personal access token, used to access private repositories. + accessToken String? + + @@map("InstrumentRepoModel") +} + // Subjects enum Sex { @@ -228,6 +257,7 @@ enum AppSubject { Group Instrument InstrumentRecord + InstrumentRepo Session Subject User diff --git a/apps/api/src/auth/ability.factory.ts b/apps/api/src/auth/ability.factory.ts index f9d1ebda9..c0306d40a 100644 --- a/apps/api/src/auth/ability.factory.ts +++ b/apps/api/src/auth/ability.factory.ts @@ -27,6 +27,7 @@ export class AbilityFactory { ability.can('manage', 'Assignment', { groupId: { in: groupIds } }); ability.can('manage', 'Group', { id: { in: groupIds } }); ability.can('read', 'Instrument'); + ability.can('read', 'InstrumentRepo', { groupIds: { hasSome: groupIds } }); ability.can('create', 'InstrumentRecord'); ability.can('create', 'InstrumentRecordFile', { groupId: { in: groupIds } }); ability.can('read', 'InstrumentRecord', { groupId: { in: groupIds } }); diff --git a/apps/api/src/groups/__tests__/groups.service.spec.ts b/apps/api/src/groups/__tests__/groups.service.spec.ts index 8a8e315d8..3e6d4a1e1 100644 --- a/apps/api/src/groups/__tests__/groups.service.spec.ts +++ b/apps/api/src/groups/__tests__/groups.service.spec.ts @@ -6,26 +6,25 @@ import { ConflictException, NotFoundException } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import { beforeEach, describe, expect, it } from 'vitest'; -import { InstrumentsService } from '../../instruments/instruments.service'; import { GroupsService } from '../groups.service'; describe('GroupsService', () => { let groupsService: GroupsService; let groupModel: MockedInstance>; - let instrumentsService: MockedInstance; + let instrumentModel: MockedInstance>; beforeEach(async () => { const moduleRef = await Test.createTestingModule({ providers: [ GroupsService, MockFactory.createForModelToken(getModelToken('Group')), - MockFactory.createForService(InstrumentsService) + MockFactory.createForModelToken(getModelToken('Instrument')) ] }).compile(); groupModel = moduleRef.get(getModelToken('Group')); + instrumentModel = moduleRef.get(getModelToken('Instrument')); groupsService = moduleRef.get(GroupsService); - instrumentsService = moduleRef.get(InstrumentsService); - instrumentsService.find.mockResolvedValue([]); + instrumentModel.findMany.mockResolvedValue([]); }); describe('create', () => { @@ -34,6 +33,15 @@ describe('GroupsService', () => { expect(groupModel.create.mock.lastCall?.[0]).toMatchObject({ data: { name: 'Test Group' } }); }); + it('should connect only non-repo instruments (sourceRepoId: null)', async () => { + instrumentModel.findMany.mockResolvedValueOnce([{ id: 'manual-1' }, { id: 'manual-2' }]); + await groupsService.create({ name: 'Test Group', type: 'CLINICAL' }); + expect(instrumentModel.findMany).toHaveBeenCalledWith({ where: { sourceRepoId: null } }); + expect(groupModel.create.mock.lastCall?.[0]).toMatchObject({ + data: { accessibleInstruments: { connect: [{ id: 'manual-1' }, { id: 'manual-2' }] } } + }); + }); + it('should throw a ConflictException if a group with the same name already exists in the db', async () => { groupModel.exists.mockResolvedValueOnce(true); await expect(groupsService.create({ name: 'Test Group', type: 'CLINICAL' })).rejects.toBeInstanceOf( @@ -42,6 +50,31 @@ describe('GroupsService', () => { }); }); + describe('updateById', () => { + it('should set the instrumentRepos relation from instrumentRepoIds', async () => { + groupModel.findFirst.mockResolvedValueOnce({ name: 'Test Group', settings: {} }); + await groupsService.updateById('123', { instrumentRepoIds: ['repo-1', 'repo-2'] }); + expect(groupModel.update.mock.lastCall?.[0]).toMatchObject({ + data: { instrumentRepos: { set: [{ id: 'repo-1' }, { id: 'repo-2' }] } } + }); + }); + + it('should not throw when the name is unchanged', async () => { + groupModel.findFirst.mockResolvedValueOnce({ name: 'Test Group', settings: {} }); + await groupsService.updateById('123', { name: 'Test Group' }); + // The current name must not be treated as a collision with itself. + expect(groupModel.exists).not.toHaveBeenCalled(); + expect(groupModel.update).toHaveBeenCalled(); + }); + + it('should throw a ConflictException when renaming to an existing name', async () => { + groupModel.findFirst.mockResolvedValueOnce({ name: 'Old Name', settings: {} }); + groupModel.exists.mockResolvedValueOnce(true); + await expect(groupsService.updateById('123', { name: 'Taken Name' })).rejects.toBeInstanceOf(ConflictException); + expect(groupModel.exists).toHaveBeenCalledWith({ name: 'Taken Name' }); + }); + }); + describe('findAll', () => { it('should return the array returned by the group model', async () => { groupModel.findMany.mockResolvedValueOnce([{ name: 'Test Group' }]); diff --git a/apps/api/src/groups/dto/update-group.dto.ts b/apps/api/src/groups/dto/update-group.dto.ts index 8606764ec..d123fa040 100644 --- a/apps/api/src/groups/dto/update-group.dto.ts +++ b/apps/api/src/groups/dto/update-group.dto.ts @@ -5,6 +5,7 @@ import type { GroupSettings, GroupType, UpdateGroupData } from '@opendatacapture @ValidationSchema($UpdateGroupData) export class UpdateGroupDto implements UpdateGroupData { accessibleInstrumentIds?: string[]; + instrumentRepoIds?: string[]; name?: string; settings?: Partial; type?: GroupType; diff --git a/apps/api/src/groups/groups.module.ts b/apps/api/src/groups/groups.module.ts index 7b713a980..4524965a6 100644 --- a/apps/api/src/groups/groups.module.ts +++ b/apps/api/src/groups/groups.module.ts @@ -1,14 +1,11 @@ import { Module } from '@nestjs/common'; -import { InstrumentsModule } from '@/instruments/instruments.module'; - import { GroupsController } from './groups.controller'; import { GroupsService } from './groups.service'; @Module({ controllers: [GroupsController], exports: [GroupsService], - imports: [InstrumentsModule], providers: [GroupsService] }) export class GroupsModule {} diff --git a/apps/api/src/groups/groups.service.ts b/apps/api/src/groups/groups.service.ts index 8031cce97..bcceebb02 100644 --- a/apps/api/src/groups/groups.service.ts +++ b/apps/api/src/groups/groups.service.ts @@ -5,7 +5,6 @@ import type { Prisma } from '@prisma/client'; import { accessibleQuery } from '@/auth/ability.utils'; import type { EntityOperationOptions } from '@/core/types'; -import { InstrumentsService } from '@/instruments/instruments.service'; import { CreateGroupDto } from './dto/create-group.dto'; import { UpdateGroupDto } from './dto/update-group.dto'; @@ -14,7 +13,7 @@ import { UpdateGroupDto } from './dto/update-group.dto'; export class GroupsService { constructor( @InjectModel('Group') private readonly groupModel: Model<'Group'>, - private readonly instrumentsService: InstrumentsService + @InjectModel('Instrument') private readonly instrumentModel: Model<'Instrument'> ) {} async create({ name, settings, type, ...data }: CreateGroupDto) { @@ -22,10 +21,15 @@ export class GroupsService { if (exists) { throw new ConflictException(`Group with name '${name}' already exists!`); } + // Connect only instruments that did not come from an instrument repository. Repo-sourced + // instruments are opt-in: a group manager must select them manually after a repo is assigned. + const nonRepoInstruments = await this.instrumentModel.findMany({ + where: { sourceRepoId: null } + }); return this.groupModel.create({ data: { accessibleInstruments: { - connect: (await this.instrumentsService.find()).map(({ id }) => ({ id })) + connect: nonRepoInstruments.map(({ id }) => ({ id })) }, name, settings: { @@ -62,7 +66,7 @@ export class GroupsService { async updateById( id: string, - { accessibleInstrumentIds, settings, ...data }: UpdateGroupDto, + { accessibleInstrumentIds, instrumentRepoIds, settings, ...data }: UpdateGroupDto, { ability }: EntityOperationOptions = {} ) { const where: Prisma.GroupWhereInput = { AND: [accessibleQuery(ability, 'update', 'Group')], id }; @@ -70,10 +74,14 @@ export class GroupsService { if (!group) { throw new NotFoundException(`Failed to find group with ID: ${id}`); } - const exists = typeof data.name === 'string' && (await this.groupModel.exists({ name: group.name })); + // Only guard against a genuine rename collision: check the requested name (not the current one, + // which would always match this same group) and skip the check when the name is unchanged. + const exists = + typeof data.name === 'string' && data.name !== group.name && (await this.groupModel.exists({ name: data.name })); if (exists) { - throw new ConflictException(`Group with name '${group.name}' already exists!`); + throw new ConflictException(`Group with name '${data.name}' already exists!`); } + return this.groupModel.update({ data: { accessibleInstruments: accessibleInstrumentIds @@ -81,6 +89,11 @@ export class GroupsService { set: accessibleInstrumentIds.map((id) => ({ id })) } : undefined, + instrumentRepos: instrumentRepoIds + ? { + set: instrumentRepoIds.map((id) => ({ id })) + } + : undefined, settings: { ...group.settings, ...settings diff --git a/apps/api/src/instrument-repos/__tests__/instrument-repos.service.spec.ts b/apps/api/src/instrument-repos/__tests__/instrument-repos.service.spec.ts new file mode 100644 index 000000000..e17136892 --- /dev/null +++ b/apps/api/src/instrument-repos/__tests__/instrument-repos.service.spec.ts @@ -0,0 +1,316 @@ +import { ConfigService, getModelToken, LoggingService } from '@douglasneuroinformatics/libnest'; +import type { Model } from '@douglasneuroinformatics/libnest'; +import { MockFactory } from '@douglasneuroinformatics/libnest/testing'; +import type { MockedInstance } from '@douglasneuroinformatics/libnest/testing'; +import { BadRequestException, ConflictException, NotFoundException } from '@nestjs/common'; +import { Test } from '@nestjs/testing'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { InstrumentsService } from '../../instruments/instruments.service'; +import { InstrumentReposService } from '../instrument-repos.service'; + +// Typed view onto the service's private members, so tests can exercise them (and stub the network- +// bound import step) without resorting to `any`. Kept as a standalone interface rather than an +// intersection with the class, whose private members would collapse the type to `never`. +type InternalService = { + decrypt(value: string): string | undefined; + encrypt(plaintext: string): string; + importInstruments( + owner: string, + repoName: string, + accessToken?: string + ): Promise<{ createdIds: string[]; instrumentIds: string[] }>; + normalizeUrl(url: string): string; + parseGitHubUrl(url: string): { owner: string; repoName: string }; + reconcileOrphanedInstruments(): Promise; +}; + +describe('InstrumentReposService', () => { + let service: InstrumentReposService; + let internal: InternalService; + let groupModel: MockedInstance>; + let instrumentModel: MockedInstance>; + let instrumentRepoModel: MockedInstance>; + + beforeEach(async () => { + const moduleRef = await Test.createTestingModule({ + providers: [ + InstrumentReposService, + MockFactory.createForModelToken(getModelToken('Group')), + MockFactory.createForModelToken(getModelToken('Instrument')), + MockFactory.createForModelToken(getModelToken('InstrumentRepo')), + MockFactory.createForService(ConfigService), + MockFactory.createForService(InstrumentsService), + MockFactory.createForService(LoggingService) + ] + }).compile(); + service = moduleRef.get(InstrumentReposService); + internal = service as unknown as InternalService; + groupModel = moduleRef.get(getModelToken('Group')); + instrumentModel = moduleRef.get(getModelToken('Instrument')); + instrumentRepoModel = moduleRef.get(getModelToken('InstrumentRepo')); + + const configService = moduleRef.get>(ConfigService); + configService.getOrThrow.mockReturnValue('test-secret-key'); + + // Sensible defaults so the reconciliation pass (which several methods trigger) never operates on + // undefined collections. + groupModel.findMany.mockResolvedValue([]); + groupModel.count.mockResolvedValue(0); + instrumentModel.findMany.mockResolvedValue([]); + instrumentRepoModel.findMany.mockResolvedValue([]); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); + + describe('token encryption', () => { + it('encrypts and decrypts a token round-trip', () => { + const token = 'ghp_super_secret_token'; + const encrypted = internal.encrypt(token); + // Stored as `iv.authTag.ciphertext`, never the plaintext. + expect(encrypted).not.toBe(token); + expect(encrypted.split('.')).toHaveLength(3); + expect(internal.decrypt(encrypted)).toBe(token); + }); + + it('returns undefined when decrypting a malformed value', () => { + expect(internal.decrypt('not-a-valid-token')).toBeUndefined(); + }); + }); + + describe('normalizeUrl', () => { + it.each([ + ['https://github.com/owner/repo', 'https://github.com/owner/repo'], + ['https://github.com/owner/repo/', 'https://github.com/owner/repo'], + ['https://github.com/owner/repo.git', 'https://github.com/owner/repo'], + ['https://github.com/owner/repo.git/', 'https://github.com/owner/repo'], + ['https://github.com/owner/repo///', 'https://github.com/owner/repo'] + ])('normalizes %s to %s', (input, expected) => { + expect(internal.normalizeUrl(input)).toBe(expected); + }); + + it('does not hang on input with many trailing slashes', () => { + const input = `https://github.com/owner/repo${'/'.repeat(100_000)}`; + expect(internal.normalizeUrl(input)).toBe('https://github.com/owner/repo'); + }); + }); + + describe('parseGitHubUrl', () => { + it('extracts the owner and repo from a valid github URL', () => { + expect(internal.parseGitHubUrl('https://github.com/owner/repo.git')).toEqual({ + owner: 'owner', + repoName: 'repo' + }); + }); + + it.each([ + 'https://gitlab.com/owner/repo', + 'https://github.com.evil.com/owner/repo', + 'https://github.com/owner@evil.com/repo', + 'https://github.com/owner/repo?x=y', + 'https://github.com/owner' + ])('rejects a crafted URL that could forge a request: %s', (url) => { + // Guards against SSRF: only github.com with a strict owner/repo may reach the GitHub API call. + expect(() => internal.parseGitHubUrl(url)).toThrow(BadRequestException); + }); + }); + + describe('findAll', () => { + it('strips the access token from every repo before returning', async () => { + instrumentRepoModel.findMany.mockResolvedValueOnce([ + { accessToken: 'encrypted', id: '1', instrumentIds: [], name: 'repo' } + ]); + const result = await service.findAll(); + expect(result[0]).not.toHaveProperty('accessToken'); + expect(result[0]).toMatchObject({ id: '1', name: 'repo' }); + }); + }); + + describe('findById', () => { + it('throws a NotFoundException when the repo does not exist', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce(null); + await expect(service.findById('missing')).rejects.toBeInstanceOf(NotFoundException); + }); + + it('strips the access token from the returned repo', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ accessToken: 'encrypted', id: '1', name: 'repo' }); + await expect(service.findById('1')).resolves.not.toHaveProperty('accessToken'); + }); + }); + + describe('deleteById', () => { + it('throws a NotFoundException when the repo does not exist', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce(null); + await expect(service.deleteById('missing')).rejects.toBeInstanceOf(NotFoundException); + }); + + it('throws a ConflictException when a group still uses the repo', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ id: '1', name: 'repo' }); + groupModel.count.mockResolvedValueOnce(1); + await expect(service.deleteById('1')).rejects.toBeInstanceOf(ConflictException); + expect(instrumentRepoModel.delete).not.toHaveBeenCalled(); + }); + + it('deletes the repo and strips secrets when no group uses it', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ id: '1', name: 'repo' }); + groupModel.count.mockResolvedValueOnce(0); + instrumentRepoModel.delete.mockResolvedValueOnce({ accessToken: 'encrypted', id: '1', name: 'repo' }); + const result = await service.deleteById('1'); + expect(instrumentRepoModel.delete).toHaveBeenCalledWith({ where: { id: '1' } }); + expect(result).not.toHaveProperty('accessToken'); + }); + }); + + describe('create', () => { + it('imports a new repo, parsing owner/repoName from the URL and storing an encrypted token', async () => { + const importSpy = vi + .spyOn(internal, 'importInstruments') + .mockResolvedValue({ createdIds: ['i1'], instrumentIds: ['i1'] }); + instrumentRepoModel.findFirst.mockResolvedValueOnce(null); + instrumentRepoModel.create.mockResolvedValueOnce({ id: 'r1', name: 'repo' }); + + const result = await service.create({ accessToken: 'tok', url: 'https://github.com/owner/repo' }); + + expect(importSpy).toHaveBeenCalledWith('owner', 'repo', 'tok'); + expect(instrumentRepoModel.create).toHaveBeenCalledWith( + expect.objectContaining({ + data: expect.objectContaining({ + // stringContaining('.') proves the value is the `iv.tag.ct` ciphertext, not the plaintext. + accessToken: expect.stringContaining('.'), + name: 'repo', + owner: 'owner', + repoName: 'repo', + url: 'https://github.com/owner/repo' + }) + }) + ); + expect(result).not.toHaveProperty('accessToken'); + }); + + it('stores a null token when none is provided', async () => { + vi.spyOn(internal, 'importInstruments').mockResolvedValue({ createdIds: [], instrumentIds: [] }); + instrumentRepoModel.findFirst.mockResolvedValueOnce(null); + instrumentRepoModel.create.mockResolvedValueOnce({ id: 'r1', name: 'repo' }); + + await service.create({ url: 'https://github.com/owner/repo' }); + + expect(instrumentRepoModel.create).toHaveBeenCalledWith( + expect.objectContaining({ data: expect.objectContaining({ accessToken: null }) }) + ); + }); + + it('re-syncs an already-registered repo instead of creating a duplicate', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ id: 'existing' }); + const syncSpy = vi.spyOn(service, 'sync').mockResolvedValue({ id: 'existing' } as never); + + const result = await service.create({ url: 'https://github.com/owner/repo' }); + + expect(syncSpy).toHaveBeenCalledWith('existing'); + expect(instrumentRepoModel.create).not.toHaveBeenCalled(); + expect(result).toMatchObject({ id: 'existing' }); + }); + + it('persists an updated token before re-syncing an existing repo', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ id: 'existing' }); + vi.spyOn(service, 'sync').mockResolvedValue({ id: 'existing' } as never); + + await service.create({ accessToken: 'new-token', url: 'https://github.com/owner/repo' }); + + expect(instrumentRepoModel.update).toHaveBeenCalledWith( + expect.objectContaining({ + data: expect.objectContaining({ accessToken: expect.stringContaining('.') }), + where: { id: 'existing' } + }) + ); + }); + + it('does not touch the stored token when re-adding without one', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce({ id: 'existing' }); + vi.spyOn(service, 'sync').mockResolvedValue({ id: 'existing' } as never); + + await service.create({ url: 'https://github.com/owner/repo' }); + + expect(instrumentRepoModel.update).not.toHaveBeenCalled(); + }); + }); + + describe('sync', () => { + it('throws a NotFoundException when the repo does not exist', async () => { + instrumentRepoModel.findFirst.mockResolvedValueOnce(null); + await expect(service.sync('missing')).rejects.toBeInstanceOf(NotFoundException); + }); + + it('decrypts the stored token, unions the instrument ids, and strips secrets', async () => { + const encryptedToken = internal.encrypt('stored-token'); + instrumentRepoModel.findFirst.mockResolvedValueOnce({ + accessToken: encryptedToken, + id: 'r1', + instrumentIds: ['old'], + name: 'repo', + owner: 'owner', + repoName: 'repo' + }); + const importSpy = vi + .spyOn(internal, 'importInstruments') + .mockResolvedValue({ createdIds: ['new'], instrumentIds: ['new'] }); + instrumentRepoModel.update.mockResolvedValueOnce({ accessToken: encryptedToken, id: 'r1', name: 'repo' }); + + const result = await service.sync('r1'); + + // The decrypted token (not the ciphertext) is what gets used to fetch the repo. + expect(importSpy).toHaveBeenCalledWith('owner', 'repo', 'stored-token'); + expect(instrumentRepoModel.update).toHaveBeenCalledWith( + expect.objectContaining({ data: expect.objectContaining({ instrumentIds: ['old', 'new'] }) }) + ); + expect(result).not.toHaveProperty('accessToken'); + }); + }); + + describe('reconcileOrphanedInstruments', () => { + it('re-attributes an orphan to an existing repo that still provides it', async () => { + instrumentRepoModel.findMany.mockResolvedValueOnce([{ id: 'repoA', instrumentIds: ['i1'], name: 'A' }]); + instrumentModel.findMany.mockResolvedValueOnce([{ id: 'i1', sourceRepoId: 'deleted', sourceRepoName: 'old' }]); + + await internal.reconcileOrphanedInstruments(); + + expect(instrumentModel.update).toHaveBeenCalledWith({ + data: { sourceRepoId: 'repoA', sourceRepoName: 'A' }, + where: { id: 'i1' } + }); + }); + + it('converts an orphan selected by a group into a manual instrument', async () => { + instrumentRepoModel.findMany.mockResolvedValueOnce([]); + instrumentModel.findMany.mockResolvedValueOnce([{ id: 'i1', sourceRepoId: 'deleted', sourceRepoName: 'old' }]); + groupModel.findMany.mockResolvedValueOnce([{ accessibleInstrumentIds: ['i1'] }]); + + await internal.reconcileOrphanedInstruments(); + + expect(instrumentModel.update).toHaveBeenCalledWith({ + data: { sourceRepoId: null, sourceRepoName: null }, + where: { id: 'i1' } + }); + }); + + it('leaves an orphan untouched when no repo provides it and no group selected it', async () => { + instrumentRepoModel.findMany.mockResolvedValueOnce([]); + instrumentModel.findMany.mockResolvedValueOnce([{ id: 'i1', sourceRepoId: 'deleted', sourceRepoName: 'old' }]); + groupModel.findMany.mockResolvedValueOnce([{ accessibleInstrumentIds: [] }]); + + await internal.reconcileOrphanedInstruments(); + + expect(instrumentModel.update).not.toHaveBeenCalled(); + }); + + it('does nothing when there are no repo-sourced instruments', async () => { + instrumentRepoModel.findMany.mockResolvedValueOnce([]); + instrumentModel.findMany.mockResolvedValueOnce([]); + + await internal.reconcileOrphanedInstruments(); + + expect(instrumentModel.update).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/apps/api/src/instrument-repos/dto/create-instrument-repo.dto.ts b/apps/api/src/instrument-repos/dto/create-instrument-repo.dto.ts new file mode 100644 index 000000000..ee6e468f5 --- /dev/null +++ b/apps/api/src/instrument-repos/dto/create-instrument-repo.dto.ts @@ -0,0 +1,9 @@ +import { ValidationSchema } from '@douglasneuroinformatics/libnest'; +import { $CreateInstrumentRepoData } from '@opendatacapture/schemas/instrument-repo'; +import type { CreateInstrumentRepoData } from '@opendatacapture/schemas/instrument-repo'; + +@ValidationSchema($CreateInstrumentRepoData) +export class CreateInstrumentRepoDto implements CreateInstrumentRepoData { + accessToken?: string; + url: string; +} diff --git a/apps/api/src/instrument-repos/instrument-repos.controller.ts b/apps/api/src/instrument-repos/instrument-repos.controller.ts new file mode 100644 index 000000000..7f8b63629 --- /dev/null +++ b/apps/api/src/instrument-repos/instrument-repos.controller.ts @@ -0,0 +1,50 @@ +import { CurrentUser } from '@douglasneuroinformatics/libnest'; +import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; + +import type { AppAbility } from '@/auth/auth.types'; +import { RouteAccess } from '@/core/decorators/route-access.decorator'; + +import { CreateInstrumentRepoDto } from './dto/create-instrument-repo.dto'; +import { InstrumentReposService } from './instrument-repos.service'; + +@ApiTags('InstrumentRepos') +@Controller('instrument-repos') +export class InstrumentReposController { + constructor(private readonly instrumentReposService: InstrumentReposService) {} + + @ApiOperation({ summary: 'Create Instrument Repo' }) + @Post() + @RouteAccess({ action: 'create', subject: 'InstrumentRepo' }) + create(@Body() dto: CreateInstrumentRepoDto) { + return this.instrumentReposService.create(dto); + } + + @ApiOperation({ summary: 'Delete Instrument Repo' }) + @Delete(':id') + @RouteAccess({ action: 'delete', subject: 'InstrumentRepo' }) + deleteById(@Param('id') id: string, @CurrentUser('ability') ability?: AppAbility) { + return this.instrumentReposService.deleteById(id, { ability }); + } + + @ApiOperation({ summary: 'Get All Instrument Repos' }) + @Get() + @RouteAccess({ action: 'read', subject: 'InstrumentRepo' }) + findAll(@CurrentUser('ability') ability?: AppAbility) { + return this.instrumentReposService.findAll({ ability }); + } + + @ApiOperation({ summary: 'Get Instrument Repo' }) + @Get(':id') + @RouteAccess({ action: 'read', subject: 'InstrumentRepo' }) + findById(@Param('id') id: string, @CurrentUser('ability') ability?: AppAbility) { + return this.instrumentReposService.findById(id, { ability }); + } + + @ApiOperation({ summary: 'Sync Instrument Repo' }) + @Post(':id/sync') + @RouteAccess({ action: 'update', subject: 'InstrumentRepo' }) + sync(@Param('id') id: string) { + return this.instrumentReposService.sync(id); + } +} diff --git a/apps/api/src/instrument-repos/instrument-repos.module.ts b/apps/api/src/instrument-repos/instrument-repos.module.ts new file mode 100644 index 000000000..dde4269a8 --- /dev/null +++ b/apps/api/src/instrument-repos/instrument-repos.module.ts @@ -0,0 +1,14 @@ +import { Module } from '@nestjs/common'; + +import { InstrumentsModule } from '@/instruments/instruments.module'; + +import { InstrumentReposController } from './instrument-repos.controller'; +import { InstrumentReposService } from './instrument-repos.service'; + +@Module({ + controllers: [InstrumentReposController], + exports: [InstrumentReposService], + imports: [InstrumentsModule], + providers: [InstrumentReposService] +}) +export class InstrumentReposModule {} diff --git a/apps/api/src/instrument-repos/instrument-repos.service.ts b/apps/api/src/instrument-repos/instrument-repos.service.ts new file mode 100644 index 000000000..6f1600b8c --- /dev/null +++ b/apps/api/src/instrument-repos/instrument-repos.service.ts @@ -0,0 +1,470 @@ +import { createCipheriv, createDecipheriv, createHash, randomBytes } from 'node:crypto'; +import * as fs from 'node:fs'; +import * as os from 'node:os'; +import * as path from 'node:path'; + +import { ConfigService, InjectModel, LoggingService } from '@douglasneuroinformatics/libnest'; +import type { Model } from '@douglasneuroinformatics/libnest'; +import { + BadGatewayException, + BadRequestException, + ConflictException, + Injectable, + NotFoundException +} from '@nestjs/common'; +import type { OnModuleInit } from '@nestjs/common'; +import { bundle, BUNDLER_FILE_EXT_REGEX, inferLoader } from '@opendatacapture/instrument-bundler'; +import type { BundlerInput } from '@opendatacapture/instrument-bundler'; +import JSZip from 'jszip'; + +import { accessibleQuery } from '@/auth/ability.utils'; +import type { EntityOperationOptions } from '@/core/types'; +import { InstrumentsService } from '@/instruments/instruments.service'; + +import type { CreateInstrumentRepoDto } from './dto/create-instrument-repo.dto'; + +@Injectable() +export class InstrumentReposService implements OnModuleInit { + constructor( + @InjectModel('Group') private readonly groupModel: Model<'Group'>, + @InjectModel('InstrumentRepo') private readonly instrumentRepoModel: Model<'InstrumentRepo'>, + @InjectModel('Instrument') private readonly instrumentModel: Model<'Instrument'>, + private readonly configService: ConfigService, + private readonly instrumentsService: InstrumentsService, + private readonly loggingService: LoggingService + ) {} + + async create({ accessToken, url }: CreateInstrumentRepoDto) { + const { owner, repoName } = this.parseGitHubUrl(url); + const normalizedUrl = this.normalizeUrl(url); + + // Re-adding an already-registered repo is treated as a re-sync rather than an error. If a new + // access token was supplied (e.g. the previous one expired), persist it first so the sync — and + // all future syncs — use the updated credentials. + const existing = await this.instrumentRepoModel.findFirst({ where: { url: normalizedUrl } }); + if (existing) { + if (accessToken) { + await this.instrumentRepoModel.update({ + data: { accessToken: this.encrypt(accessToken) }, + where: { id: existing.id } + }); + } + return this.sync(existing.id); + } + + const { createdIds, instrumentIds } = await this.importInstruments(owner, repoName, accessToken); + + const repo = await this.instrumentRepoModel.create({ + data: { + accessToken: accessToken ? this.encrypt(accessToken) : null, + instrumentIds, + lastSyncedAt: new Date(), + name: repoName, + owner, + repoName, + url: normalizedUrl + } + }); + + // Attribute provenance only to instruments this import actually created. Instruments that + // already existed (e.g. added manually) keep their original provenance. + await this.tagInstruments(createdIds, repo.id, repo.name); + // Re-adopt any pre-existing instruments orphaned by a previously-deleted copy of this repo. + await this.reconcileOrphanedInstruments(); + + return this.stripSecrets(repo); + } + + async deleteById(id: string, { ability }: EntityOperationOptions = {}) { + const repo = await this.instrumentRepoModel.findFirst({ + where: { AND: [accessibleQuery(ability, 'delete', 'InstrumentRepo')], id } + }); + if (!repo) { + throw new NotFoundException(`Failed to find instrument repo with ID: ${id}`); + } + // Query live groups rather than relying on repo.groupIds, which can hold stale references + // to groups that have since been deleted. + const groupsUsingRepo = await this.groupModel.count({ + where: { instrumentRepoIds: { has: id } } + }); + if (groupsUsingRepo > 0) { + throw new ConflictException( + 'Cannot delete this repository because it is currently assigned to one or more groups. Remove it from all groups first.' + ); + } + const deleted = await this.instrumentRepoModel.delete({ where: { id } }); + // Any instrument a group had selected from this repo becomes a manually-uploaded instrument so it + // persists; the rest stay hidden as orphans. + await this.reconcileOrphanedInstruments(); + return this.stripSecrets(deleted); + } + + async findAll({ ability }: EntityOperationOptions = {}) { + const repos = await this.instrumentRepoModel.findMany({ + where: accessibleQuery(ability, 'read', 'InstrumentRepo') + }); + return repos.map((repo) => this.stripSecrets(repo)); + } + + async findById(id: string, { ability }: EntityOperationOptions = {}) { + const repo = await this.instrumentRepoModel.findFirst({ + where: { AND: [accessibleQuery(ability, 'read', 'InstrumentRepo')], id } + }); + if (!repo) { + throw new NotFoundException(`Failed to find instrument repo with ID: ${id}`); + } + return this.stripSecrets(repo); + } + + async onModuleInit(): Promise { + // Self-heal any instruments left orphaned by repositories deleted before this logic existed. + try { + await this.reconcileOrphanedInstruments(); + } catch (err) { + this.loggingService.error(`Failed to reconcile orphaned instruments: ${String(err)}`); + } + } + + async sync(id: string) { + const repo = await this.instrumentRepoModel.findFirst({ where: { id } }); + if (!repo) { + throw new NotFoundException(`Failed to find instrument repo with ID: ${id}`); + } + + const accessToken = repo.accessToken ? this.decrypt(repo.accessToken) : undefined; + const { createdIds, instrumentIds } = await this.importInstruments(repo.owner, repo.repoName, accessToken); + + const allInstrumentIds = [...new Set([...repo.instrumentIds, ...instrumentIds])]; + + // Only newly-created instruments need provenance set; ones already in the repo already have it. + await this.tagInstruments(createdIds, repo.id, repo.name); + + const updated = await this.instrumentRepoModel.update({ + data: { + instrumentIds: allInstrumentIds, + lastSyncedAt: new Date() + }, + where: { id } + }); + // Re-adopt any instruments that were orphaned by a previously-deleted copy of this repo. + await this.reconcileOrphanedInstruments(); + + return this.stripSecrets(updated); + } + + /** Reverse {@link encrypt}. Returns undefined if the value cannot be decrypted. */ + private decrypt(value: string): string | undefined { + try { + const [ivB64, authTagB64, ciphertextB64] = value.split('.'); + if (!ivB64 || !authTagB64 || !ciphertextB64) { + return undefined; + } + const decipher = createDecipheriv('aes-256-gcm', this.encryptionKey(), Buffer.from(ivB64, 'base64')); + decipher.setAuthTag(Buffer.from(authTagB64, 'base64')); + const plaintext = Buffer.concat([decipher.update(Buffer.from(ciphertextB64, 'base64')), decipher.final()]); + return plaintext.toString('utf8'); + } catch (err) { + this.loggingService.error(`Failed to decrypt stored access token: ${String(err)}`); + return undefined; + } + } + + private discoverInstrumentDirs(repoDir: string): string[] { + const dirs: string[] = []; + for (const category of ['forms', 'interactive']) { + const libDir = path.join(repoDir, 'lib', category); + if (!fs.existsSync(libDir)) { + continue; + } + for (const entry of fs.readdirSync(libDir, { withFileTypes: true })) { + if (!entry.isDirectory()) { + continue; + } + const instrumentDir = path.join(libDir, entry.name); + const hasIndex = ['index.ts', 'index.tsx', 'index.js', 'index.jsx'].some((f) => + fs.existsSync(path.join(instrumentDir, f)) + ); + if (hasIndex) { + dirs.push(instrumentDir); + } + } + } + return dirs; + } + + // Returns both the extracted instrument root (`repoDir`) and the temp directory that owns it + // (`tmpDir`); the caller is responsible for removing `tmpDir` once done. They differ because the + // GitHub archive wraps everything in a single `owner-repo-sha` subdirectory, and the caller must + // delete the exact directory we created — never its parent (the OS temp root). + private async downloadAndExtractRepo( + owner: string, + repoName: string, + accessToken?: string + ): Promise<{ repoDir: string; tmpDir: string }> { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'odc-repo-')); + // Prefer a repo-specific token, falling back to a server-wide GITHUB_TOKEN if configured. + const token = accessToken ?? process.env.GITHUB_TOKEN; + + for (const branch of ['main', 'master']) { + // Download + unpack entirely in-process (Node's fetch + JSZip) so we don't depend on `curl` or + // `tar` being installed in the runtime container. We hit the API zipball endpoint rather than + // https://github.com/.../archive/...: the API authenticates the request and then 302-redirects + // to a *signed* codeload.github.com URL. fetch drops the Authorization header on that + // cross-origin redirect, but the signed URL no longer needs it — so private repos still work. + // owner/repoName are already restricted to a strict allowlist in parseGitHubUrl; encode them + // anyway so nothing can break out of the intended api.github.com path component. + const zipballUrl = `https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repoName)}/zipball/${branch}`; + try { + const headers: { [key: string]: string } = { + Accept: 'application/vnd.github+json', + 'User-Agent': 'OpenDataCapture', + 'X-GitHub-Api-Version': '2022-11-28' + }; + if (token) { + headers.Authorization = `Bearer ${token}`; + } + const response = await fetch(zipballUrl, { headers, signal: AbortSignal.timeout(60_000) }); + if (!response.ok) { + throw new Error(`GitHub responded with status ${response.status}`); + } + const archive = Buffer.from(await response.arrayBuffer()); + const repoDir = await this.extractZipArchive(archive, tmpDir); + return { repoDir, tmpDir }; + } catch { + // try the next branch + } + } + + fs.rmSync(tmpDir, { force: true, recursive: true }); + const hint = token + ? 'Check that the URL and branch are correct and that the provided access token has permission to read this repository.' + : 'If this is a private repository, provide a GitHub personal access token. Otherwise, check that the URL is correct.'; + throw new BadGatewayException(`Failed to download repository ${owner}/${repoName}. ${hint}`); + } + + /** Encrypt a secret with AES-256-GCM, returning `iv.authTag.ciphertext` (all base64). */ + private encrypt(plaintext: string): string { + const iv = randomBytes(12); + const cipher = createCipheriv('aes-256-gcm', this.encryptionKey(), iv); + const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]); + const authTag = cipher.getAuthTag(); + return [iv.toString('base64'), authTag.toString('base64'), ciphertext.toString('base64')].join('.'); + } + + /** Derive a 32-byte AES key from the server SECRET_KEY. */ + private encryptionKey(): Buffer { + const secret = this.configService.getOrThrow('SECRET_KEY'); + return createHash('sha256').update(secret).digest(); + } + + // Unpack a GitHub zipball into `destDir`, returning the single top-level directory the archive wraps + // its contents in (e.g. `owner-repo-sha`), or `destDir` itself when there is no single wrapper. + private async extractZipArchive(archive: Buffer, destDir: string): Promise { + const zip = await JSZip.loadAsync(archive); + const resolvedDest = path.resolve(destDir); + const topLevelEntries = new Set(); + + for (const entry of Object.values(zip.files)) { + const target = path.resolve(destDir, entry.name); + // Guard against zip-slip: never write outside the temp directory we created. + if (target !== resolvedDest && !target.startsWith(resolvedDest + path.sep)) { + continue; + } + const topLevel = entry.name.split('/')[0]; + if (topLevel) { + topLevelEntries.add(topLevel); + } + if (entry.dir) { + fs.mkdirSync(target, { recursive: true }); + continue; + } + fs.mkdirSync(path.dirname(target), { recursive: true }); + await fs.promises.writeFile(target, await entry.async('nodebuffer')); + } + + return topLevelEntries.size === 1 ? path.join(destDir, [...topLevelEntries][0]!) : destDir; + } + + /** + * Bundle and create a single instrument from its directory. Returns its id and whether it was newly + * created, or `null` when there is nothing to import (no bundlable files). Re-throws unexpected + * errors so the caller can log and skip just this instrument. + */ + private async importInstrumentFromDir(dir: string): Promise { + const dirName = path.basename(dir); + const inputs = this.readInstrumentInputs(dir); + if (inputs.length === 0) { + this.loggingService.debug(`Skipping ${dirName}: no bundlable files found`); + return null; + } + + this.loggingService.debug(`Bundling instrument from ${dirName} (${inputs.length} files)`); + const bundleStr = await bundle({ inputs, minify: true }); + try { + const instrument = await this.instrumentsService.create({ bundle: bundleStr }); + this.loggingService.debug(`Created instrument ${instrument.id} from ${dirName}`); + return { created: true, id: instrument.id }; + } catch (err) { + // The instrument already exists (provided by another repo or uploaded manually). Recover its id + // from the conflict message so we still associate the existing instrument with this repo. + if (err instanceof ConflictException) { + const idMatch = /ID '([^']+)'/.exec(err.message); + this.loggingService.debug(`Instrument from ${dirName} already exists, skipping creation`); + return idMatch?.[1] ? { created: false, id: idMatch[1] } : null; + } + throw err; + } + } + + private async importInstruments( + owner: string, + repoName: string, + accessToken?: string + ): Promise<{ createdIds: string[]; instrumentIds: string[] }> { + this.loggingService.log(`Downloading ${owner}/${repoName}...`); + const { repoDir, tmpDir } = await this.downloadAndExtractRepo(owner, repoName, accessToken); + + try { + const instrumentDirs = this.discoverInstrumentDirs(repoDir); + this.loggingService.log(`Found ${instrumentDirs.length} instrument directories in ${owner}/${repoName}`); + + // instrumentIds: every instrument the repo provides; createdIds: only those newly created here. + const instrumentIds: string[] = []; + const createdIds: string[] = []; + + for (const dir of instrumentDirs) { + try { + const result = await this.importInstrumentFromDir(dir); + if (!result) { + continue; + } + instrumentIds.push(result.id); + if (result.created) { + createdIds.push(result.id); + } + } catch (err) { + // One bad instrument should not abort importing the rest of the repository. + this.loggingService.error(`Failed to import instrument from ${path.basename(dir)}: ${String(err)}`); + } + } + + this.loggingService.log(`Imported ${instrumentIds.length} instruments from ${owner}/${repoName}`); + return { createdIds, instrumentIds }; + } finally { + // Remove the exact temp directory we created (never its parent, the OS temp root). + fs.rmSync(tmpDir, { force: true, recursive: true }); + } + } + + private normalizeUrl(url: string): string { + // Strip trailing slashes then a single `.git` suffix so `.../repo`, `.../repo/`, and + // `.../repo.git` all normalize to the same canonical URL. Done with a manual scan rather than a + // `/\/+$/` regex, which CodeQL flags as polynomial (ReDoS-prone) on attacker-controlled input. + let end = url.length; + while (end > 0 && url.charCodeAt(end - 1) === 47 /* '/' */) { + end -= 1; + } + const trimmed = url.slice(0, end); + return trimmed.endsWith('.git') ? trimmed.slice(0, -4) : trimmed; + } + + private parseGitHubUrl(url: string): { owner: string; repoName: string } { + const cleaned = this.normalizeUrl(url); + const parts = cleaned.split('/'); + const repoName = parts.pop(); + const owner = parts.pop(); + // parts now holds ['https:', '', '']; require the GitHub host and a strict owner/repo so a + // crafted URL cannot redirect the later GitHub API request elsewhere (server-side request forgery). + // GitHub owners/repos only ever contain these characters, so this rejects `@`, `:`, `?`, `#`, etc. + const host = parts[2]; + const validName = /^[A-Za-z0-9._-]+$/; + if (host !== 'github.com' || !owner || !repoName || !validName.test(owner) || !validName.test(repoName)) { + throw new BadRequestException('Must be a valid GitHub repository URL (https://github.com//).'); + } + return { owner, repoName }; + } + + private readInstrumentInputs(instrumentDir: string): BundlerInput[] { + const inputs: BundlerInput[] = []; + for (const fileName of fs.readdirSync(instrumentDir)) { + const filePath = path.join(instrumentDir, fileName); + if (!fs.statSync(filePath).isFile()) { + continue; + } + if (!BUNDLER_FILE_EXT_REGEX.test(fileName)) { + continue; + } + const loader = inferLoader(fileName); + const isBinary = loader === 'dataurl'; + const content = isBinary ? fs.readFileSync(filePath) : fs.readFileSync(filePath, 'utf-8'); + inputs.push({ content, name: fileName }); + } + return inputs; + } + + /** + * An instrument is "orphaned" when its source repository no longer exists (e.g. the repo was + * deleted). For each orphan: + * - if an existing repository still provides it (the repo was deleted and re-added), re-attribute + * it to that repository so it shows up for groups the repo is assigned to; + * - otherwise, if a group has selected it, convert it into a manually-uploaded instrument so it + * remains visible and persistent; + * - otherwise leave it hidden. + */ + private async reconcileOrphanedInstruments(): Promise { + const repos = await this.instrumentRepoModel.findMany({}); + const existingRepoIds = new Set(repos.map((repo) => repo.id)); + + // The existing repository (if any) that still provides each instrument. + const ownerByInstrument = new Map(); + for (const repo of repos) { + for (const instrumentId of repo.instrumentIds) { + if (!ownerByInstrument.has(instrumentId)) { + ownerByInstrument.set(instrumentId, { id: repo.id, name: repo.name }); + } + } + } + + const tagged = await this.instrumentModel.findMany({ where: { sourceRepoId: { not: null } } }); + const orphans = tagged.filter((inst) => inst.sourceRepoId && !existingRepoIds.has(inst.sourceRepoId)); + if (orphans.length === 0) { + return; + } + + const groups = await this.groupModel.findMany({}); + const selectedIds = new Set(groups.flatMap((group) => group.accessibleInstrumentIds)); + + for (const orphan of orphans) { + const owner = ownerByInstrument.get(orphan.id); + if (owner) { + await this.instrumentModel.update({ + data: { sourceRepoId: owner.id, sourceRepoName: owner.name }, + where: { id: orphan.id } + }); + this.loggingService.log(`Re-attributed instrument ${orphan.id} to repository '${owner.name}'`); + } else if (selectedIds.has(orphan.id)) { + await this.instrumentModel.update({ + data: { sourceRepoId: null, sourceRepoName: null }, + where: { id: orphan.id } + }); + this.loggingService.log(`Converted orphaned instrument ${orphan.id} to a manual instrument`); + } + } + } + + /** Remove the encrypted access token before returning a repo to any client. */ + private stripSecrets(repo: T): Omit { + const { accessToken: _accessToken, ...rest } = repo; + return rest; + } + + /** Record provenance (repo id + denormalized name) on the given instruments. */ + private async tagInstruments(instrumentIds: string[], repoId: string, repoName: string): Promise { + for (const id of instrumentIds) { + await this.instrumentModel.update({ + data: { sourceRepoId: repoId, sourceRepoName: repoName }, + where: { id } + }); + } + } +} diff --git a/apps/api/src/instruments/instruments.service.ts b/apps/api/src/instruments/instruments.service.ts index 09346b846..7c6a4b92d 100644 --- a/apps/api/src/instruments/instruments.service.ts +++ b/apps/api/src/instruments/instruments.service.ts @@ -176,6 +176,9 @@ export class InstrumentsService { options: EntityOperationOptions = {} ): Promise { const instances = await this.find(query, options); + + const sourceMap = await this.buildInstrumentSourceMap(instances.map((instance) => instance.id)); + const results = new Map(); for (const instance of instances) { const info = pick(instance, [ @@ -188,6 +191,16 @@ export class InstrumentsService { 'language', 'tags' ]); + // Expose the source repo id whenever the instrument came from a repo (so it can be filtered per + // group). The name may be null for legacy instruments imported before names were stored; the + // client renders those as "uploaded manually" while still treating them as repo-sourced. + const source = sourceMap.get(info.id); + if (source?.sourceRepoId) { + (info as InstrumentInfo).sourceRepo = { + id: source.sourceRepoId, + name: source.sourceRepoName ?? null + }; + } if (!info.internal) { results.set(info.id, info); continue; @@ -244,6 +257,30 @@ export class InstrumentsService { }); } + /** + * Map of instrument id -> denormalized repository provenance, for the given instruments that came + * from a repo. Scoped to the requested ids and selecting only the provenance fields so it never + * loads full instrument records (notably the large `bundle`). + */ + private async buildInstrumentSourceMap( + ids: string[] + ): Promise> { + const map = new Map(); + if (ids.length === 0) { + return map; + } + const instruments = await this.instrumentModel.findMany({ + select: { id: true, sourceRepoId: true, sourceRepoName: true }, + where: { id: { in: ids }, sourceRepoId: { not: null } } + }); + for (const inst of instruments) { + if (inst.sourceRepoId) { + map.set(inst.id, { sourceRepoId: inst.sourceRepoId, sourceRepoName: inst.sourceRepoName }); + } + } + return map; + } + private async instantiate(instruments: Pick[]) { return Promise.all( instruments.map((instrument) => { diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 2e45064a2..f7bb48b04 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -8,6 +8,7 @@ import { $Env } from './core/schemas/env.schema'; import { GatewayModule } from './gateway/gateway.module'; import { GroupsModule } from './groups/groups.module'; import { InstrumentRecordsModule } from './instrument-records/instrument-records.module'; +import { InstrumentReposModule } from './instrument-repos/instrument-repos.module'; import { InstrumentsModule } from './instruments/instruments.module'; import { SessionsModule } from './sessions/sessions.module'; import { SetupModule } from './setup/setup.module'; @@ -43,6 +44,7 @@ export default AppFactory.create({ AuthModule, GroupsModule, InstrumentRecordsModule, + InstrumentReposModule, InstrumentsModule, PrismaModule.forRootAsync({ useClass: PrismaModuleOptionsFactory diff --git a/apps/api/src/setup/setup.module.ts b/apps/api/src/setup/setup.module.ts index 63d6ab53c..e1e4f4b78 100644 --- a/apps/api/src/setup/setup.module.ts +++ b/apps/api/src/setup/setup.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; import { DemoModule } from '@/demo/demo.module'; +import { InstrumentReposModule } from '@/instrument-repos/instrument-repos.module'; import { UsersModule } from '@/users/users.module'; import { SetupController } from './setup.controller'; @@ -9,7 +10,7 @@ import { SetupService } from './setup.service'; @Module({ controllers: [SetupController], exports: [SetupService], - imports: [DemoModule, UsersModule], + imports: [DemoModule, InstrumentReposModule, UsersModule], providers: [SetupService] }) export class SetupModule {} diff --git a/apps/api/src/setup/setup.service.ts b/apps/api/src/setup/setup.service.ts index f56e324b1..85a131d74 100644 --- a/apps/api/src/setup/setup.service.ts +++ b/apps/api/src/setup/setup.service.ts @@ -1,5 +1,5 @@ import { isPlainObject } from '@douglasneuroinformatics/libjs'; -import { ConfigService, InjectModel, InjectPrismaClient } from '@douglasneuroinformatics/libnest'; +import { ConfigService, InjectModel, InjectPrismaClient, LoggingService } from '@douglasneuroinformatics/libnest'; import type { Model } from '@douglasneuroinformatics/libnest'; import { ForbiddenException, @@ -12,8 +12,13 @@ import type { CreateAdminData, InitAppOptions, SetupState, UpdateSetupStateData import type { RuntimePrismaClient } from '@/core/prisma'; import { DemoService } from '@/demo/demo.service'; +import { InstrumentReposService } from '@/instrument-repos/instrument-repos.service'; import { UsersService } from '@/users/users.service'; +// The shared collection of instruments maintained by the Douglas Neuroinformatics team. It is used by +// virtually every deployment, so every fresh installation is seeded with it automatically. +const DEFAULT_INSTRUMENT_REPO_URL = 'https://github.com/DouglasNeuroInformatics/ODC_Instruments'; + @Injectable() export class SetupService { constructor( @@ -21,6 +26,8 @@ export class SetupService { @InjectModel('SetupState') private readonly setupStateModel: Model<'SetupState'>, private readonly configService: ConfigService, private readonly demoService: DemoService, + private readonly instrumentReposService: InstrumentReposService, + private readonly loggingService: LoggingService, private readonly usersService: UsersService ) {} @@ -71,6 +78,7 @@ export class SetupService { await this.setupStateModel.create({ data: { isDemo: initDemo, isExperimentalFeaturesEnabled: enableExperimentalFeatures, isSetup: true } }); + await this.seedDefaultInstrumentRepo(); return { success: true }; } @@ -104,4 +112,21 @@ export class SetupService { private async getSavedOptions() { return await this.setupStateModel.findFirst(); } + + /** + * Import the default DNI instrument collection so every fresh installation ships with it. Skipped in + * tests (which must not reach out to GitHub) and never allowed to fail setup: a network error here + * just logs and is recoverable — an admin can add the repo manually afterward. + */ + private async seedDefaultInstrumentRepo(): Promise { + if (this.configService.get('NODE_ENV') === 'test') { + return; + } + try { + await this.instrumentReposService.create({ url: DEFAULT_INSTRUMENT_REPO_URL }); + this.loggingService.log(`Imported default instrument repository: ${DEFAULT_INSTRUMENT_REPO_URL}`); + } catch (err) { + this.loggingService.error(`Failed to import default instrument repository: ${String(err)}`); + } + } } diff --git a/apps/web/src/hooks/useCreateInstrumentRepoMutation.ts b/apps/web/src/hooks/useCreateInstrumentRepoMutation.ts new file mode 100644 index 000000000..c680ee16e --- /dev/null +++ b/apps/web/src/hooks/useCreateInstrumentRepoMutation.ts @@ -0,0 +1,37 @@ +import { useNotificationsStore, useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import type { CreateInstrumentRepoData } from '@opendatacapture/schemas/instrument-repo'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import axios from 'axios'; + +import { getApiErrorMessage } from '@/utils/error'; + +import { INSTRUMENT_REPOS_QUERY_KEY } from './useInstrumentReposQuery'; + +export function useCreateInstrumentRepoMutation() { + const queryClient = useQueryClient(); + const addNotification = useNotificationsStore((store) => store.addNotification); + const { t } = useTranslation(); + return useMutation({ + mutationFn: ({ data }: { data: CreateInstrumentRepoData }) => + axios.post('/v1/instrument-repos', data, { meta: { disableDefaultErrorNotification: true } }), + onError(err) { + addNotification({ + message: getApiErrorMessage( + err, + t({ en: 'Failed to import repository', fr: "Échec de l'importation du dépôt" }) + ), + type: 'error' + }); + }, + onSuccess() { + addNotification({ + message: t({ en: 'Repository imported successfully', fr: 'Dépôt importé avec succès' }), + type: 'success' + }); + void queryClient.invalidateQueries({ queryKey: [INSTRUMENT_REPOS_QUERY_KEY] }); + // Importing creates new instruments; refresh the instrument list shown elsewhere (dashboard, + // manage-group, accessible instruments) so they appear without a hard reload. + void queryClient.invalidateQueries({ queryKey: ['instrument-info'] }); + } + }); +} diff --git a/apps/web/src/hooks/useDeleteInstrumentRepoMutation.ts b/apps/web/src/hooks/useDeleteInstrumentRepoMutation.ts new file mode 100644 index 000000000..69680cc2f --- /dev/null +++ b/apps/web/src/hooks/useDeleteInstrumentRepoMutation.ts @@ -0,0 +1,33 @@ +import { useNotificationsStore, useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import axios from 'axios'; + +import { getApiErrorMessage } from '@/utils/error'; + +import { INSTRUMENT_REPOS_QUERY_KEY } from './useInstrumentReposQuery'; + +export function useDeleteInstrumentRepoMutation() { + const queryClient = useQueryClient(); + const addNotification = useNotificationsStore((store) => store.addNotification); + const { t } = useTranslation(); + return useMutation({ + mutationFn: ({ id }: { id: string }) => + axios.delete(`/v1/instrument-repos/${id}`, { meta: { disableDefaultErrorNotification: true } }), + onError(err) { + addNotification({ + message: getApiErrorMessage( + err, + t({ en: 'Failed to delete repository', fr: 'Échec de la suppression du dépôt' }) + ), + type: 'error' + }); + }, + onSuccess() { + addNotification({ type: 'success' }); + void queryClient.invalidateQueries({ queryKey: [INSTRUMENT_REPOS_QUERY_KEY] }); + // Deletion reconciles orphaned instruments (some are converted to manual, others hidden); + // refresh the instrument list shown elsewhere to reflect the change. + void queryClient.invalidateQueries({ queryKey: ['instrument-info'] }); + } + }); +} diff --git a/apps/web/src/hooks/useInstrumentReposQuery.ts b/apps/web/src/hooks/useInstrumentReposQuery.ts new file mode 100644 index 000000000..9b6bc7b0b --- /dev/null +++ b/apps/web/src/hooks/useInstrumentReposQuery.ts @@ -0,0 +1,19 @@ +import { $InstrumentRepo } from '@opendatacapture/schemas/instrument-repo'; +import { queryOptions, useSuspenseQuery } from '@tanstack/react-query'; +import axios from 'axios'; + +export const INSTRUMENT_REPOS_QUERY_KEY = 'instrument-repos'; + +export const instrumentReposQueryOptions = () => { + return queryOptions({ + queryFn: async () => { + const response = await axios.get('/v1/instrument-repos'); + return $InstrumentRepo.array().parse(response.data); + }, + queryKey: [INSTRUMENT_REPOS_QUERY_KEY] + }); +}; + +export function useInstrumentReposQuery() { + return useSuspenseQuery(instrumentReposQueryOptions()); +} diff --git a/apps/web/src/hooks/useNavItems.ts b/apps/web/src/hooks/useNavItems.ts index b67e22466..b53714656 100644 --- a/apps/web/src/hooks/useNavItems.ts +++ b/apps/web/src/hooks/useNavItems.ts @@ -9,6 +9,7 @@ import { DatabaseIcon, EyeIcon, LogsIcon, + PackageIcon, PaletteIcon, UploadIcon, UserCogIcon, @@ -120,6 +121,14 @@ export function useNavItems() { }), url: '/admin/users' }); + adminItems.push({ + icon: PackageIcon, + label: t({ + en: 'Instrument Repos', + fr: "Dépôts d'instruments" + }), + url: '/admin/instrument-repos' + }); } const sessionItems: NavItem[] = []; diff --git a/apps/web/src/hooks/useSyncInstrumentRepoMutation.ts b/apps/web/src/hooks/useSyncInstrumentRepoMutation.ts new file mode 100644 index 000000000..b82eaa575 --- /dev/null +++ b/apps/web/src/hooks/useSyncInstrumentRepoMutation.ts @@ -0,0 +1,39 @@ +import { useNotificationsStore, useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import axios from 'axios'; + +import { getApiErrorMessage } from '@/utils/error'; + +import { INSTRUMENT_REPOS_QUERY_KEY } from './useInstrumentReposQuery'; + +export function useSyncInstrumentRepoMutation() { + const queryClient = useQueryClient(); + const addNotification = useNotificationsStore((store) => store.addNotification); + const { t } = useTranslation(); + return useMutation({ + mutationFn: ({ id }: { id: string }) => + axios.post(`/v1/instrument-repos/${id}/sync`, undefined, { meta: { disableDefaultErrorNotification: true } }), + onError(err) { + addNotification({ + message: getApiErrorMessage( + err, + t({ en: 'Failed to sync repository', fr: 'Échec de la synchronisation du dépôt' }) + ), + type: 'error' + }); + }, + onMutate() { + // Immediate feedback that the (potentially slow) sync has started. + addNotification({ message: t({ en: 'Syncing repository...', fr: 'Synchronisation du dépôt...' }), type: 'info' }); + }, + onSuccess() { + addNotification({ + message: t({ en: 'Repository synced successfully', fr: 'Dépôt synchronisé avec succès' }), + type: 'success' + }); + void queryClient.invalidateQueries({ queryKey: [INSTRUMENT_REPOS_QUERY_KEY] }); + // A sync can pull in new instruments; refresh the instrument list shown elsewhere. + void queryClient.invalidateQueries({ queryKey: ['instrument-info'] }); + } + }); +} diff --git a/apps/web/src/route-tree.ts b/apps/web/src/route-tree.ts index f9f24be07..19b91df58 100644 --- a/apps/web/src/route-tree.ts +++ b/apps/web/src/route-tree.ts @@ -26,6 +26,7 @@ import { Route as AppGroupManageRouteImport } from './routes/_app/group/manage' import { Route as AppAdminSettingsRouteImport } from './routes/_app/admin/settings' import { Route as AppDatahubSubjectIdRouteRouteImport } from './routes/_app/datahub/$subjectId/route' import { Route as AppAdminUsersIndexRouteImport } from './routes/_app/admin/users/index' +import { Route as AppAdminInstrumentReposIndexRouteImport } from './routes/_app/admin/instrument-repos/index' import { Route as AppAdminGroupsIndexRouteImport } from './routes/_app/admin/groups/index' import { Route as AppAdminBrandingIndexRouteImport } from './routes/_app/admin/branding/index' import { Route as AppInstrumentsRenderIdRouteImport } from './routes/_app/instruments/render/$id' @@ -124,6 +125,12 @@ const AppAdminUsersIndexRoute = AppAdminUsersIndexRouteImport.update({ path: '/admin/users/', getParentRoute: () => AppRouteRoute, } as any) +const AppAdminInstrumentReposIndexRoute = + AppAdminInstrumentReposIndexRouteImport.update({ + id: '/admin/instrument-repos/', + path: '/admin/instrument-repos/', + getParentRoute: () => AppRouteRoute, + } as any) const AppAdminGroupsIndexRoute = AppAdminGroupsIndexRouteImport.update({ id: '/admin/groups/', path: '/admin/groups/', @@ -210,6 +217,7 @@ export interface FileRoutesByFullPath { '/instruments/render/$id': typeof AppInstrumentsRenderIdRoute '/admin/branding/': typeof AppAdminBrandingIndexRoute '/admin/groups/': typeof AppAdminGroupsIndexRoute + '/admin/instrument-repos/': typeof AppAdminInstrumentReposIndexRoute '/admin/users/': typeof AppAdminUsersIndexRoute '/datahub/$subjectId/table/$recordId': typeof AppDatahubSubjectIdTableRecordIdRoute '/datahub/$subjectId/table/': typeof AppDatahubSubjectIdTableIndexRoute @@ -239,6 +247,7 @@ export interface FileRoutesByTo { '/instruments/render/$id': typeof AppInstrumentsRenderIdRoute '/admin/branding': typeof AppAdminBrandingIndexRoute '/admin/groups': typeof AppAdminGroupsIndexRoute + '/admin/instrument-repos': typeof AppAdminInstrumentReposIndexRoute '/admin/users': typeof AppAdminUsersIndexRoute '/datahub/$subjectId/table/$recordId': typeof AppDatahubSubjectIdTableRecordIdRoute '/datahub/$subjectId/table': typeof AppDatahubSubjectIdTableIndexRoute @@ -270,6 +279,7 @@ export interface FileRoutesById { '/_app/instruments/render/$id': typeof AppInstrumentsRenderIdRoute '/_app/admin/branding/': typeof AppAdminBrandingIndexRoute '/_app/admin/groups/': typeof AppAdminGroupsIndexRoute + '/_app/admin/instrument-repos/': typeof AppAdminInstrumentReposIndexRoute '/_app/admin/users/': typeof AppAdminUsersIndexRoute '/_app/datahub/$subjectId/table/$recordId': typeof AppDatahubSubjectIdTableRecordIdRoute '/_app/datahub/$subjectId/table/': typeof AppDatahubSubjectIdTableIndexRoute @@ -301,6 +311,7 @@ export interface FileRouteTypes { | '/instruments/render/$id' | '/admin/branding/' | '/admin/groups/' + | '/admin/instrument-repos/' | '/admin/users/' | '/datahub/$subjectId/table/$recordId' | '/datahub/$subjectId/table/' @@ -330,6 +341,7 @@ export interface FileRouteTypes { | '/instruments/render/$id' | '/admin/branding' | '/admin/groups' + | '/admin/instrument-repos' | '/admin/users' | '/datahub/$subjectId/table/$recordId' | '/datahub/$subjectId/table' @@ -360,6 +372,7 @@ export interface FileRouteTypes { | '/_app/instruments/render/$id' | '/_app/admin/branding/' | '/_app/admin/groups/' + | '/_app/admin/instrument-repos/' | '/_app/admin/users/' | '/_app/datahub/$subjectId/table/$recordId' | '/_app/datahub/$subjectId/table/' @@ -492,6 +505,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AppAdminUsersIndexRouteImport parentRoute: typeof AppRouteRoute } + '/_app/admin/instrument-repos/': { + id: '/_app/admin/instrument-repos/' + path: '/admin/instrument-repos' + fullPath: '/admin/instrument-repos/' + preLoaderRoute: typeof AppAdminInstrumentReposIndexRouteImport + parentRoute: typeof AppRouteRoute + } '/_app/admin/groups/': { id: '/_app/admin/groups/' path: '/admin/groups' @@ -614,6 +634,7 @@ interface AppRouteRouteChildren { AppInstrumentsRenderIdRoute: typeof AppInstrumentsRenderIdRoute AppAdminBrandingIndexRoute: typeof AppAdminBrandingIndexRoute AppAdminGroupsIndexRoute: typeof AppAdminGroupsIndexRoute + AppAdminInstrumentReposIndexRoute: typeof AppAdminInstrumentReposIndexRoute AppAdminUsersIndexRoute: typeof AppAdminUsersIndexRoute } @@ -639,6 +660,7 @@ const AppRouteRouteChildren: AppRouteRouteChildren = { AppInstrumentsRenderIdRoute: AppInstrumentsRenderIdRoute, AppAdminBrandingIndexRoute: AppAdminBrandingIndexRoute, AppAdminGroupsIndexRoute: AppAdminGroupsIndexRoute, + AppAdminInstrumentReposIndexRoute: AppAdminInstrumentReposIndexRoute, AppAdminUsersIndexRoute: AppAdminUsersIndexRoute, } diff --git a/apps/web/src/routes/_app/admin/groups/index.tsx b/apps/web/src/routes/_app/admin/groups/index.tsx index 20a933ded..e5b8218b9 100644 --- a/apps/web/src/routes/_app/admin/groups/index.tsx +++ b/apps/web/src/routes/_app/admin/groups/index.tsx @@ -1,19 +1,89 @@ -import { useState } from 'react'; +import { useEffect, useState } from 'react'; -import { Button, DataTable, Heading, Sheet } from '@douglasneuroinformatics/libui/components'; -import { useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { Button, Checkbox, DataTable, Dialog, Heading, Sheet } from '@douglasneuroinformatics/libui/components'; +import { useNotificationsStore, useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { $Group } from '@opendatacapture/schemas/group'; import type { Group } from '@opendatacapture/schemas/group'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { createFileRoute, Link } from '@tanstack/react-router'; +import axios from 'axios'; import { PageHeader } from '@/components/PageHeader'; import { useDeleteGroupMutation } from '@/hooks/useDeleteGroupMutation'; -import { groupsQueryOptions, useGroupsQuery } from '@/hooks/useGroupsQuery'; +import { GROUPS_QUERY_KEY, groupsQueryOptions, useGroupsQuery } from '@/hooks/useGroupsQuery'; +import { + INSTRUMENT_REPOS_QUERY_KEY, + instrumentReposQueryOptions, + useInstrumentReposQuery +} from '@/hooks/useInstrumentReposQuery'; +import { getApiErrorMessage } from '@/utils/error'; const RouteComponent = () => { const { t } = useTranslation(); + const queryClient = useQueryClient(); + const addNotification = useNotificationsStore((store) => store.addNotification); const groupsQuery = useGroupsQuery(); const deleteGroupMutation = useDeleteGroupMutation(); + const reposQuery = useInstrumentReposQuery(); const [selectedGroup, setSelectedGroup] = useState(null); + const [selectedRepoIds, setSelectedRepoIds] = useState>(new Set()); + const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = useState(false); + const [highlightedRowId, setHighlightedRowId] = useState(null); + + const updateGroupReposMutation = useMutation({ + mutationFn: async ({ groupId, instrumentRepoIds }: { groupId: string; instrumentRepoIds: string[] }) => { + const response = await axios.patch( + `/v1/groups/${groupId}`, + { instrumentRepoIds }, + { meta: { disableDefaultErrorNotification: true } } + ); + return $Group.parseAsync(response.data); + }, + onError(err) { + addNotification({ + message: getApiErrorMessage( + err, + t({ en: 'Failed to update group repositories', fr: 'Échec de la mise à jour des dépôts du groupe' }) + ), + type: 'error' + }); + }, + onSuccess() { + addNotification({ type: 'success' }); + void queryClient.invalidateQueries({ queryKey: [GROUPS_QUERY_KEY] }); + // Group<->repo assignments changed, so the repos page's "in use" state must refetch too. + void queryClient.invalidateQueries({ queryKey: [INSTRUMENT_REPOS_QUERY_KEY] }); + // Close the sheet only after a successful save so the user keeps their selection on failure. + setSelectedGroup(null); + } + }); + + useEffect(() => { + if (selectedGroup) { + setSelectedRepoIds(new Set(selectedGroup.instrumentRepoIds)); + } + }, [selectedGroup?.id]); + + const handleToggleRepo = (repoId: string) => { + setSelectedRepoIds((prev) => { + const next = new Set(prev); + if (next.has(repoId)) { + next.delete(repoId); + } else { + next.add(repoId); + } + return next; + }); + }; + + const handleSave = () => { + if (!selectedGroup) return; + // The sheet is closed in the mutation's onSuccess so a failed save keeps the user's selection. + updateGroupReposMutation.mutate({ + groupId: selectedGroup.id, + instrumentRepoIds: [...selectedRepoIds] + }); + }; return ( setSelectedGroup(null)}> @@ -29,6 +99,15 @@ const RouteComponent = () => { columns={[ { accessorKey: 'name', + cell: (ctx) => { + const group = ctx.row.original; + return ( + + {group.name} + + + ); + }, header: t('common.groupName') }, { @@ -62,36 +141,118 @@ const RouteComponent = () => { )} + onRowClick={(group) => setHighlightedRowId(group.id)} + onRowDoubleClick={(group) => { + setHighlightedRowId(group.id); + setSelectedGroup(group); + }} /> - - - {selectedGroup?.name} - - {t({ - en: 'Make changes to this group here. Click save when you are done.', - fr: 'Apportez des modifications à ce groupe ici. Cliquez sur enregistrer lorsque vous avez terminé.' - })} - - - - - - - - - + + + + {selectedGroup?.name} + + {t({ + en: 'Make changes to this group here. Click save when you are done.', + fr: 'Apportez des modifications à ce groupe ici. Cliquez sur enregistrer lorsque vous avez terminé.' + })} + + + +
+

+ {t({ + en: 'Instrument Repositories', + fr: "Dépôts d'instruments" + })} +

+

+ {t({ + en: 'Select which instrument repositories this group has access to.', + fr: "Sélectionnez les dépôts d'instruments auxquels ce groupe a accès." + })} +

+ {reposQuery.data.length === 0 ? ( +

+ {t({ + en: 'No instrument repositories available. Add one from the admin menu.', + fr: "Aucun dépôt d'instruments disponible. Ajoutez-en un depuis le menu admin." + })} +

+ ) : ( +
+ {reposQuery.data.map((repo) => ( +
+ handleToggleRepo(repo.id)} + /> +
+ {repo.name} + + ({repo.instrumentIds.length} {t({ en: 'instruments', fr: 'instruments' })}) + +
+
+ ))} +
+ )} +
+
+
+
+ + + + +
+
+ + + + {t({ + en: 'Are you absolutely sure?', + fr: 'Êtes-vous absolument sûr ?' + })} + + + {t({ + en: 'This action will permanently delete this group and cannot be undone.', + fr: 'Cette action supprimera définitivement ce groupe et ne pourra pas être annulée.' + })} + + + + + + + +
); @@ -99,5 +260,12 @@ const RouteComponent = () => { export const Route = createFileRoute('/_app/admin/groups/')({ component: RouteComponent, - loader: ({ context }) => context.queryClient.ensureQueryData(groupsQueryOptions()) + // Prefetch both: the component reads repos via a suspense query, so ensure it here to avoid a + // render-time fetch waterfall. + loader: async ({ context }) => { + await Promise.all([ + context.queryClient.ensureQueryData(groupsQueryOptions()), + context.queryClient.ensureQueryData(instrumentReposQueryOptions()) + ]); + } }); diff --git a/apps/web/src/routes/_app/admin/instrument-repos/index.tsx b/apps/web/src/routes/_app/admin/instrument-repos/index.tsx new file mode 100644 index 000000000..5e2e8644b --- /dev/null +++ b/apps/web/src/routes/_app/admin/instrument-repos/index.tsx @@ -0,0 +1,384 @@ +import { useState } from 'react'; +import type { FormEvent } from 'react'; + +import { Button, DataTable, Dialog, Heading, Input, Label, Spinner } from '@douglasneuroinformatics/libui/components'; +import { useNotificationsStore, useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { $CreateInstrumentRepoData } from '@opendatacapture/schemas/instrument-repo'; +import type { CreateInstrumentRepoData, InstrumentRepo } from '@opendatacapture/schemas/instrument-repo'; +import { createFileRoute } from '@tanstack/react-router'; +import { AnimatePresence, motion } from 'motion/react'; + +import { PageHeader } from '@/components/PageHeader'; +import { useCreateInstrumentRepoMutation } from '@/hooks/useCreateInstrumentRepoMutation'; +import { useDeleteInstrumentRepoMutation } from '@/hooks/useDeleteInstrumentRepoMutation'; +import { groupsQueryOptions, useGroupsQuery } from '@/hooks/useGroupsQuery'; +import { useInstrumentInfoQuery } from '@/hooks/useInstrumentInfoQuery'; +import { instrumentReposQueryOptions, useInstrumentReposQuery } from '@/hooks/useInstrumentReposQuery'; +import { useSyncInstrumentRepoMutation } from '@/hooks/useSyncInstrumentRepoMutation'; + +const AddRepoForm = ({ + isPending, + onSubmit +}: { + isPending: boolean; + onSubmit: (data: CreateInstrumentRepoData) => void; +}) => { + const { t } = useTranslation(); + const [url, setUrl] = useState(''); + const [accessToken, setAccessToken] = useState(''); + const [error, setError] = useState(null); + + if (isPending) { + return ( +
+ +

+ {t({ + en: 'Importing instruments from GitHub...', + fr: 'Importation des instruments depuis GitHub...' + })} +

+
+ ); + } + + const handleSubmit = (event: FormEvent) => { + event.preventDefault(); + setError(null); + const result = $CreateInstrumentRepoData.safeParse({ + accessToken: accessToken.trim() === '' ? undefined : accessToken.trim(), + url: url.trim() + }); + if (!result.success) { + setError( + t({ + en: 'Please enter a valid GitHub repository URL.', + fr: 'Veuillez entrer une URL de dépôt GitHub valide.' + }) + ); + return; + } + onSubmit(result.data); + }; + + return ( + // autoComplete="off" plus non-semantic field names prevent the browser / password managers from + // autofilling the URL and token fields. +
+
+ + setUrl(event.target.value)} + /> +
+
+ + setAccessToken(event.target.value)} + /> +

+ {t({ + en: '*Required only for private repositories. Stored encrypted and reused when syncing.', + fr: '*Requis uniquement pour les dépôts privés. Stocké de manière chiffrée et réutilisé lors de la synchronisation.' + })} +

+
+ {error &&

{error}

} + +
+ ); +}; + +const RouteComponent = () => { + const { t } = useTranslation(); + const addNotification = useNotificationsStore((store) => store.addNotification); + const reposQuery = useInstrumentReposQuery(); + const groupsQuery = useGroupsQuery(); + const createRepoMutation = useCreateInstrumentRepoMutation(); + const deleteRepoMutation = useDeleteInstrumentRepoMutation(); + const syncRepoMutation = useSyncInstrumentRepoMutation(); + const instrumentInfoQuery = useInstrumentInfoQuery(); + const [isDialogOpen, setIsDialogOpen] = useState(false); + const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = useState(false); + const [isViewOpen, setIsViewOpen] = useState(false); + const [repoToView, setRepoToView] = useState(null); + const [repoToDelete, setRepoToDelete] = useState(null); + const [highlightedRowId, setHighlightedRowId] = useState(null); + + // Compute which repos are currently assigned to at least one (live) group. + const inUseRepoIds = new Set(groupsQuery.data.flatMap((group) => group.instrumentRepoIds)); + + const handleDeleteClick = (repo: InstrumentRepo) => { + if (inUseRepoIds.has(repo.id)) { + addNotification({ + message: t({ + en: `"${repo.name}" is assigned to one or more groups. Remove it from those groups before deleting.`, + fr: `« ${repo.name} » est assigné à un ou plusieurs groupes. Retirez-le de ces groupes avant de le supprimer.` + }), + type: 'warning' + }); + return; + } + setRepoToDelete(repo); + setIsConfirmDeleteOpen(true); + }; + + return ( + { + if (!open) { + setIsDialogOpen(false); + setIsConfirmDeleteOpen(false); + setIsViewOpen(false); + setRepoToView(null); + setRepoToDelete(null); + } + }} + > + + + {t({ + en: 'Instrument Repositories', + fr: "Dépôts d'instruments" + })} + + + { + const repo = ctx.row.original; + return ( + + {repo.name} + + + ); + }, + header: t({ + en: 'Repository Name', + fr: 'Nom du dépôt' + }) + }, + { + accessorKey: 'url', + header: 'URL' + }, + { + accessorFn: (row: InstrumentRepo) => row.instrumentIds.length, + header: t({ + en: 'Instruments', + fr: 'Instruments' + }), + id: 'instrumentCount' + }, + { + accessorFn: (row: InstrumentRepo) => + row.lastSyncedAt ? new Date(row.lastSyncedAt).toLocaleDateString() : '-', + header: t({ + en: 'Last Synced', + fr: 'Dernière synchronisation' + }), + id: 'lastSynced' + } + ]} + data={reposQuery.data} + rowActions={[ + { + label: t({ + en: 'Sync', + fr: 'Synchroniser' + }), + onSelect: (repo: InstrumentRepo) => { + syncRepoMutation.mutate({ id: repo.id }); + } + }, + { + label: t({ + en: 'View', + fr: 'Voir' + }), + onSelect: (repo: InstrumentRepo) => { + setRepoToView(repo); + setIsViewOpen(true); + } + }, + { + label: t('core.delete'), + onSelect: handleDeleteClick + } + ]} + togglesComponent={() => ( + + )} + onRowClick={(repo) => setHighlightedRowId(repo.id)} + onRowDoubleClick={(repo) => { + setHighlightedRowId(repo.id); + syncRepoMutation.mutate({ id: repo.id }); + }} + /> + {isDialogOpen && ( + + + + {t({ + en: 'Add Instrument Repository', + fr: "Ajouter un dépôt d'instruments" + })} + + + {t({ + en: 'Enter the GitHub URL of the instrument repository. Importing may take a minute.', + fr: "Entrez l'URL GitHub du dépôt d'instruments. L'importation peut prendre une minute." + })} + + + { + createRepoMutation.mutate({ data }, { onSuccess: () => setIsDialogOpen(false) }); + }} + /> + + )} + {isViewOpen && repoToView && ( + + + + {t({ + en: `Instruments in "${repoToView.name}"`, + fr: `Instruments dans « ${repoToView.name} »` + })} + + + {(() => { + const repoInstruments = instrumentInfoQuery.data?.filter( + (instrument) => instrument.sourceRepo?.id === repoToView.id + ); + if (instrumentInfoQuery.isLoading) { + return ( +
+ +
+ ); + } + if (!repoInstruments?.length) { + return ( +

+ {t({ + en: 'No instruments found in this repository.', + fr: 'Aucun instrument trouvé dans ce dépôt.' + })} +

+ ); + } + return ( +
+
+

{t({ en: 'Title', fr: 'Titre' })}

+

{t({ en: 'Kind', fr: 'Type' })}

+

{t({ en: 'Edition', fr: 'Édition' })}

+
+
+
    + + {repoInstruments.map((instrument, i) => ( + +
    +

    + {instrument.details.title} +

    +

    {instrument.kind}

    +

    {instrument.internal?.edition ?? '-'}

    +
    +
    + ))} +
    +
+
+ ); + })()} +
+ )} + {isConfirmDeleteOpen && repoToDelete && ( + + + + {t({ + en: 'Are you absolutely sure?', + fr: 'Êtes-vous absolument sûr ?' + })} + + + {t({ + en: `This will remove the repository "${repoToDelete.name}" from the system. Deletion is only possible if no groups currently have this repository assigned.`, + fr: `Cela supprimera le dépôt « ${repoToDelete.name} » du système. La suppression n'est possible que si aucun groupe n'utilise actuellement ce dépôt.` + })} + + + + + + + + )} +
+ ); +}; + +export const Route = createFileRoute('/_app/admin/instrument-repos/')({ + component: RouteComponent, + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(instrumentReposQueryOptions()); + await context.queryClient.ensureQueryData(groupsQueryOptions()); + } +}); diff --git a/apps/web/src/routes/_app/admin/users/index.tsx b/apps/web/src/routes/_app/admin/users/index.tsx index 2e9db488e..6340f1bc7 100644 --- a/apps/web/src/routes/_app/admin/users/index.tsx +++ b/apps/web/src/routes/_app/admin/users/index.tsx @@ -235,6 +235,10 @@ const UpdateUserForm: React.FC<{ en: 'Instrument Record', fr: "Enregistrement de l'instrument" }), + InstrumentRepo: t({ + en: 'Instrument Repository', + fr: "Dépôt d'instruments" + }), Session: t({ en: 'Session', fr: 'Session' @@ -338,6 +342,7 @@ const RouteComponent = () => { const deleteUserMutation = useDeleteUserMutation(); const updateUserMutation = useUpdateUserMutation(); const [selectedUser, setSelectedUser] = useState(null); + const [highlightedRowId, setHighlightedRowId] = useState(null); const [data, setData] = useState(null); @@ -380,6 +385,15 @@ const RouteComponent = () => { columns={[ { accessorKey: 'username', + cell: (ctx) => { + const user = ctx.row.original; + return ( + + {user.username} + + + ); + }, header: t('common.username') }, { @@ -415,6 +429,11 @@ const RouteComponent = () => { )} + onRowClick={(user) => setHighlightedRowId(user.id)} + onRowDoubleClick={(user) => { + setHighlightedRowId(user.id); + setSelectedUser(user); + }} /> diff --git a/apps/web/src/routes/_app/datahub/index.tsx b/apps/web/src/routes/_app/datahub/index.tsx index 0a18cb31f..204ceb2fc 100644 --- a/apps/web/src/routes/_app/datahub/index.tsx +++ b/apps/web/src/routes/_app/datahub/index.tsx @@ -338,6 +338,7 @@ const MasterDataTable: React.FC<{ const [hasRecords, setHasRecords] = useState(false); const [searchString, setSearchString] = useState(''); + const [highlightedRowId, setHighlightedRowId] = useState(null); const subjectsData = useSubjectsQuery({ params: { groupId: currentGroup?.id, hasRecord: hasRecords || undefined } @@ -363,8 +364,14 @@ const MasterDataTable: React.FC<{ { accessorFn: (subject) => removeSubjectIdScope(subject.id), cell: (ctx) => { - const value = ctx.getValue() as string; - return value.slice(0, subjectIdDisplaySetting ?? 9); + const subject = ctx.row.original; + const value = (ctx.getValue() as string).slice(0, subjectIdDisplaySetting ?? 9); + return ( + + {value} + + + ); }, filterFn: (row, id, filter: HasSearchStringFilter) => { const value = row.getValue(id); @@ -448,6 +455,7 @@ const MasterDataTable: React.FC<{ } ]} togglesComponent={TogglesWithFilter} + onRowClick={(subject) => setHighlightedRowId(subject.id)} onRowDoubleClick={onRowDoubleClick} onSearchChange={(value, table) => { setSearchString(value); diff --git a/apps/web/src/routes/_app/group/manage.tsx b/apps/web/src/routes/_app/group/manage.tsx index ec00a55f3..543894a0b 100644 --- a/apps/web/src/routes/_app/group/manage.tsx +++ b/apps/web/src/routes/_app/group/manage.tsx @@ -1,50 +1,248 @@ -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; -import { Form, Heading } from '@douglasneuroinformatics/libui/components'; +import { + Badge, + Button, + Checkbox, + Dialog, + Form, + Heading, + SearchBar, + Spinner +} from '@douglasneuroinformatics/libui/components'; import { useTranslation } from '@douglasneuroinformatics/libui/hooks'; +import { InstrumentRenderer } from '@opendatacapture/react-core'; import { $RegexString } from '@opendatacapture/schemas/core'; import type { UpdateGroupData } from '@opendatacapture/schemas/group'; import { $SubjectIdentificationMethod } from '@opendatacapture/schemas/subject'; import type { SubjectIdentificationMethod } from '@opendatacapture/schemas/subject'; import { createFileRoute } from '@tanstack/react-router'; +import { EyeIcon } from 'lucide-react'; import type { Promisable } from 'type-fest'; import { z } from 'zod/v4'; import { PageHeader } from '@/components/PageHeader'; import { WithFallback } from '@/components/WithFallback'; +import { useInstrumentBundle } from '@/hooks/useInstrumentBundle'; import { useInstrumentInfoQuery } from '@/hooks/useInstrumentInfoQuery'; import { useSetupStateQuery } from '@/hooks/useSetupStateQuery'; import { useUpdateGroupMutation } from '@/hooks/useUpdateGroupMutation'; import { useAppStore } from '@/store'; -type AvailableInstrumentOptions = { - form: { [key: string]: string }; - interactive: { [key: string]: string }; - series: { [key: string]: string }; - unknown: { [key: string]: string }; +type InstrumentSource = { kind: 'manual' } | { kind: 'repo'; name: string }; + +type InstrumentItem = { + authors?: null | string[]; + description?: string; + id: string; + kind: string; + source: InstrumentSource; + title: string; +}; + +type CategorizedInstruments = { + form: InstrumentItem[]; + interactive: InstrumentItem[]; + series: InstrumentItem[]; +}; + +type SettingsValues = { + defaultIdentificationMethod?: SubjectIdentificationMethod; + idValidationRegex?: null | string; + idValidationRegexErrorMessageEn?: null | string; + idValidationRegexErrorMessageFr?: null | string; + minimumAge?: null | number; + minimumAgeApplied?: boolean | null; + subjectIdDisplayLength?: null | number; }; type ManageGroupFormProps = { data: { - availableInstrumentOptions: AvailableInstrumentOptions; - initialValues: { - accessibleFormInstrumentIds: Set; - accessibleInteractiveInstrumentIds: Set; - accessibleSeriesInstrumentIds: Set; - defaultIdentificationMethod?: SubjectIdentificationMethod; - idValidationRegex?: null | string; - minimumAge?: null | number; - minimumAgeApplied?: boolean | null; - subjectIdDisplayLength?: null | number; - }; + // Accessible instrument ids that are not in the visible list; preserved as-is on save. + hiddenAccessibleIds: string[]; + initialSelectedIds: string[]; + instruments: CategorizedInstruments; + settingsInitialValues: SettingsValues; }; onSubmit: (data: Partial) => Promisable; readOnly: boolean; }; +const InstrumentSection = ({ + items, + onPreview, + onToggle, + readOnly, + search, + selectedIds, + title +}: { + items: InstrumentItem[]; + onPreview: (item: InstrumentItem) => void; + onToggle: (id: string) => void; + readOnly: boolean; + search: string; + selectedIds: Set; + title: string; +}) => { + const { t } = useTranslation(); + const filtered = useMemo(() => { + if (!search) return items; + const lower = search.toLowerCase(); + return items.filter((item) => item.title.toLowerCase().includes(lower)); + }, [items, search]); + + return ( +
+

{title}

+ {filtered.length === 0 ? ( +

+ {t({ en: 'No instruments available.', fr: 'Aucun instrument disponible.' })} +

+ ) : ( +
+ {filtered.map((item) => ( +
+ onToggle(item.id)} + /> + + {item.title} + + + {item.source.kind === 'repo' + ? item.source.name + : t({ en: 'Uploaded manually', fr: 'Téléversé manuellement' })} + + +
+ ))} +
+ )} +
+ ); +}; + +const InstrumentPreviewDialog = ({ item, onClose }: { item: InstrumentItem; onClose: () => void }) => { + const { t } = useTranslation(); + const [showForm, setShowForm] = useState(false); + const bundleQuery = useInstrumentBundle(showForm ? item.id : null); + + return ( + { + if (!open) onClose(); + }} + > + + + {item.title} + + {showForm ? ( +
+ {bundleQuery.isLoading && ( +
+ +
+ )} + {bundleQuery.isError && ( +

+ {t({ + en: 'Failed to load instrument preview.', + fr: "Échec du chargement de l'aperçu de l'instrument." + })} +

+ )} + {bundleQuery.data && ( + // Preview only: visually disable the submit button (pointer-events-none + dimmed) so no + // record can be created, and make submit a no-op as a defensive backstop. +
+ { + // Intentionally does nothing: forms cannot be submitted in preview mode. + }} + /> +
+ )} +
+ ) : ( +
+
+ {t({ en: 'Kind', fr: 'Type' })}: + {item.kind} +
+ {item.authors && item.authors.length > 0 && ( +
+ {t({ en: 'Authors', fr: 'Auteurs' })}: + {item.authors.join(', ')} +
+ )} + {item.description && ( +
+ {t({ en: 'Description', fr: 'Description' })}: + {item.description} +
+ )} +
+ {t({ en: 'Source', fr: 'Source' })}: + + {item.source.kind === 'repo' + ? item.source.name + : t({ en: 'Uploaded manually', fr: 'Téléversé manuellement' })} + +
+
+ +
+
+ )} +
+
+ ); +}; + const ManageGroupForm = ({ data, onSubmit, readOnly }: ManageGroupFormProps) => { - const { availableInstrumentOptions, initialValues } = data; + const { hiddenAccessibleIds, initialSelectedIds, instruments, settingsInitialValues } = data; const { t } = useTranslation(); + const [search, setSearch] = useState(''); + const [selectedIds, setSelectedIds] = useState>(() => new Set(initialSelectedIds)); + const [previewItem, setPreviewItem] = useState(null); + + // Resync the selection when the upstream group data changes (e.g. after a save refetches the group). + // `initialSelectedIds` is a stable reference from a useMemo, so this only fires on real changes — + // not on every render — and won't clobber in-progress edits. + useEffect(() => { + setSelectedIds(new Set(initialSelectedIds)); + }, [initialSelectedIds]); + + const toggle = (id: string) => { + setSelectedIds((prev) => { + const next = new Set(prev); + if (next.has(id)) { + next.delete(id); + } else { + next.add(id); + } + return next; + }); + }; let description = t('group.manage.accessibleInstrumentsDesc'); if (readOnly) { @@ -52,194 +250,201 @@ const ManageGroupForm = ({ data, onSubmit, readOnly }: ManageGroupFormProps) => } return ( -
+ {previewItem && setPreviewItem(null)} />} + {t('group.manage.accessibleInstruments')} +

{description}

+
+ +
+ + + + { + if (data.minimumAgeApplied) { + return { + kind: 'number', + label: t({ + en: 'Minimum Age', + fr: 'Âge minimum' + }), + variant: 'input' + }; + } + return null; + } + } }, - // eslint-disable-next-line perfectionist/sort-objects - minimumAge: { - deps: ['minimumAgeApplied'], - kind: 'dynamic', - render: (data) => { - if (data.minimumAgeApplied) { + title: t({ + en: 'Age Limit Settings', + fr: "Paramètres de limite d'âge" + }) + }, + { + fields: { + defaultIdentificationMethod: { + kind: 'string', + label: t('group.manage.defaultSubjectIdMethod'), + options: { + CUSTOM_ID: t('common.customIdentifier'), + PERSONAL_INFO: t('common.personalInfo') + }, + variant: 'select' + }, + idValidationRegex: { + description: t({ + en: 'Define a custom regular expression to validate subject IDs (see https://regexr.com for help designing your regular expression).', + fr: "Définir une expression régulière pour valider les identifiants des sujets (voir https://regexr.com pour obtenir de l'aide dans la conception de votre expression régulière)." + }), + kind: 'string', + label: t({ + en: 'ID Validation Pattern', + fr: "Modèle de validation d'identifiant" + }), + variant: 'input' + }, + idValidationRegexErrorMessageEn: { + deps: ['idValidationRegex'], + kind: 'dynamic', + render: (data) => { + if (!data.idValidationRegex) { + return null; + } return { - kind: 'number', + kind: 'string', label: t({ - en: 'Minimum Age', - fr: 'Âge minimum' + en: 'Custom ID Validation Message (English)', + fr: 'Message de validation spécifique (en anglais)' }), variant: 'input' }; } - return null; - } - } - }, - title: t({ - en: 'Age Limit Settings', - fr: "Paramètres de limite d'âge" - }) - }, - { - fields: { - defaultIdentificationMethod: { - kind: 'string', - label: t('group.manage.defaultSubjectIdMethod'), - options: { - CUSTOM_ID: t('common.customIdentifier'), - PERSONAL_INFO: t('common.personalInfo') }, - variant: 'select' - }, - idValidationRegex: { - description: t({ - en: 'Define a custom regular expression to validate subject IDs (see https://regexr.com for help designing your regular expression).', - fr: "Définir une expression régulière pour valider les identifiants des sujets (voir https://regexr.com pour obtenir de l'aide dans la conception de votre expression régulière)." - }), - kind: 'string', - label: t({ - en: 'ID Validation Pattern', - fr: "Modèle de validation d'identifiant" - }), - variant: 'input' - }, - idValidationRegexErrorMessageEn: { - deps: ['idValidationRegex'], - kind: 'dynamic', - render: (data) => { - if (!data.idValidationRegex) { - return null; - } - return { - kind: 'string', - label: t({ - en: 'Custom ID Validation Message (English)', - fr: 'Message de validation spécifique (en anglais)' - }), - variant: 'input' - }; - } - }, - idValidationRegexErrorMessageFr: { - deps: ['idValidationRegex'], - kind: 'dynamic', - render: (data) => { - if (!data.idValidationRegex) { - return null; + idValidationRegexErrorMessageFr: { + deps: ['idValidationRegex'], + kind: 'dynamic', + render: (data) => { + if (!data.idValidationRegex) { + return null; + } + return { + kind: 'string', + label: t({ + en: 'Custom ID Validation Message (French)', + fr: 'Message de validation spécifique (en français)' + }), + variant: 'input' + }; } - return { - kind: 'string', - label: t({ - en: 'Custom ID Validation Message (French)', - fr: 'Message de validation spécifique (en français)' - }), - variant: 'input' - }; } - } - }, - title: t('group.manage.groupSettings') - } - ]} - initialValues={initialValues} - preventResetValuesOnReset={true} - readOnly={readOnly} - validationSchema={z - .object({ - accessibleFormInstrumentIds: z.set(z.string()), - accessibleInteractiveInstrumentIds: z.set(z.string()), - accessibleSeriesInstrumentIds: z.set(z.string()), - defaultIdentificationMethod: $SubjectIdentificationMethod.optional(), - idValidationRegex: $RegexString.optional(), - idValidationRegexErrorMessageEn: z.string().optional(), - idValidationRegexErrorMessageFr: z.string().optional(), - minimumAge: z.number().int().positive().optional(), - minimumAgeApplied: z.boolean().optional(), - subjectIdDisplayLength: z.number().int().min(1).optional() - }) - .check((ctx) => { - if (ctx.value.minimumAgeApplied && !ctx.value.minimumAge) { - ctx.issues.push({ - code: 'custom', - input: ctx.value.minimumAge, - message: t({ - en: 'Please enter an age', - fr: 'Veuillez entrer un âge' - }), - path: ['minimumAge'] - }); - } - return; - })} - onSubmit={(data) => { - void onSubmit({ - accessibleInstrumentIds: [ - ...data.accessibleFormInstrumentIds, - ...data.accessibleInteractiveInstrumentIds, - ...data.accessibleSeriesInstrumentIds - ], - settings: { - defaultIdentificationMethod: data.defaultIdentificationMethod, - idValidationRegex: data.idValidationRegex, - idValidationRegexErrorMessage: { - en: data.idValidationRegexErrorMessageEn, - fr: data.idValidationRegexErrorMessageFr }, - minimumAge: data.minimumAgeApplied ? data.minimumAge : null, - subjectIdDisplayLength: data.subjectIdDisplayLength + title: t('group.manage.groupSettings') } - }); - }} - /> + ]} + initialValues={settingsInitialValues} + preventResetValuesOnReset={true} + readOnly={readOnly} + validationSchema={z + .object({ + defaultIdentificationMethod: $SubjectIdentificationMethod.optional(), + idValidationRegex: $RegexString.optional(), + idValidationRegexErrorMessageEn: z.string().optional(), + idValidationRegexErrorMessageFr: z.string().optional(), + minimumAge: z.number().int().positive().optional(), + minimumAgeApplied: z.boolean().optional(), + subjectIdDisplayLength: z.number().int().min(1).optional() + }) + .check((ctx) => { + if (ctx.value.minimumAgeApplied && !ctx.value.minimumAge) { + ctx.issues.push({ + code: 'custom', + input: ctx.value.minimumAge, + message: t({ + en: 'Please enter an age', + fr: 'Veuillez entrer un âge' + }), + path: ['minimumAge'] + }); + } + return; + })} + onSubmit={(formData) => { + void onSubmit({ + accessibleInstrumentIds: [...hiddenAccessibleIds, ...selectedIds], + settings: { + defaultIdentificationMethod: formData.defaultIdentificationMethod, + idValidationRegex: formData.idValidationRegex, + idValidationRegexErrorMessage: { + en: formData.idValidationRegexErrorMessageEn, + fr: formData.idValidationRegexErrorMessageFr + }, + minimumAge: formData.minimumAgeApplied ? formData.minimumAge : null, + subjectIdDisplayLength: formData.subjectIdDisplayLength + } + }); + }} + /> + ); }; @@ -254,23 +459,56 @@ const RouteComponent = () => { const availableInstruments = instrumentInfoQuery.data; const accessibleInstrumentIds = currentGroup?.accessibleInstrumentIds; + const instrumentRepoIds = currentGroup?.instrumentRepoIds; const defaultIdentificationMethod = currentGroup?.settings.defaultIdentificationMethod; const data = useMemo(() => { if (!availableInstruments) { return null; } - const availableInstrumentOptions: AvailableInstrumentOptions = { - form: {}, - interactive: {}, - series: {}, - unknown: {} - }; + + const accessibleSet = new Set(accessibleInstrumentIds ?? []); + const assignedRepos = new Set(instrumentRepoIds ?? []); + + const instruments: CategorizedInstruments = { form: [], interactive: [], series: [] }; + const visibleIds = new Set(); + + for (const instrument of availableInstruments) { + const repoId = instrument.sourceRepo?.id ?? null; + // Show an instrument if it was uploaded manually, comes from a repo currently assigned to this + // group, or has already been selected by the group (so selections survive repo removal). + const isVisible = repoId === null || assignedRepos.has(repoId) || accessibleSet.has(instrument.id); + if (!isVisible) { + continue; + } + visibleIds.add(instrument.id); + // Show the repo name when we have one; legacy repo instruments without a stored name render as + // "uploaded manually" (but are still filtered above as repo-sourced via their id). + const repoName = instrument.sourceRepo?.name ?? null; + const source: InstrumentSource = repoName ? { kind: 'repo', name: repoName } : { kind: 'manual' }; + const item: InstrumentItem = { + authors: instrument.details.authors, + description: instrument.details.description, + id: instrument.id, + kind: instrument.kind, + source, + title: instrument.details.title + }; + if (instrument.kind === 'FORM') { + instruments.form.push(item); + } else if (instrument.kind === 'INTERACTIVE') { + instruments.interactive.push(item); + } else if (instrument.kind === 'SERIES') { + instruments.series.push(item); + } + } + + const initialSelectedIds = [...accessibleSet].filter((id) => visibleIds.has(id)); + // Preserve any accessible ids we are not displaying (defensive: e.g. instruments that failed to load). + const hiddenAccessibleIds = [...accessibleSet].filter((id) => !visibleIds.has(id)); + const settings = currentGroup?.settings; - const initialValues = { - accessibleFormInstrumentIds: new Set(), - accessibleInteractiveInstrumentIds: new Set(), - accessibleSeriesInstrumentIds: new Set(), + const settingsInitialValues: SettingsValues = { defaultIdentificationMethod, idValidationRegex: settings?.idValidationRegex, idValidationRegexErrorMessageEn: settings?.idValidationRegexErrorMessage?.en, @@ -279,29 +517,13 @@ const RouteComponent = () => { minimumAgeApplied: typeof settings?.minimumAge === 'number', subjectIdDisplayLength: settings?.subjectIdDisplayLength }; - for (const instrument of availableInstruments) { - if (instrument.kind === 'FORM') { - availableInstrumentOptions.form[instrument.id] = instrument.details.title; - if (accessibleInstrumentIds?.includes(instrument.id)) { - initialValues.accessibleFormInstrumentIds.add(instrument.id); - } - } else if (instrument.kind === 'INTERACTIVE') { - availableInstrumentOptions.interactive[instrument.id] = instrument.details.title; - if (accessibleInstrumentIds?.includes(instrument.id)) { - initialValues.accessibleInteractiveInstrumentIds.add(instrument.id); - } - } else if (instrument.kind === 'SERIES') { - availableInstrumentOptions.series[instrument.id] = instrument.details.title; - if (accessibleInstrumentIds?.includes(instrument.id)) { - initialValues.accessibleSeriesInstrumentIds.add(instrument.id); - } - } - } - return { availableInstrumentOptions, initialValues }; + + return { hiddenAccessibleIds, initialSelectedIds, instruments, settingsInitialValues }; }, [ accessibleInstrumentIds, availableInstruments, defaultIdentificationMethod, + instrumentRepoIds, resolvedLanguage, currentGroup?.settings ]); diff --git a/apps/web/src/services/axios.ts b/apps/web/src/services/axios.ts index 1e65b7419..98708413e 100644 --- a/apps/web/src/services/axios.ts +++ b/apps/web/src/services/axios.ts @@ -12,6 +12,9 @@ declare module 'axios' { export interface AxiosRequestConfig { meta?: { disableDefaultAuth?: boolean; + // Suppress the generic "HTTP Request Failed" toast so a caller can show its own specific error + // message (e.g. a mutation onError) without the user seeing two notifications. + disableDefaultErrorNotification?: boolean; disableDefaultTimeout?: boolean; }; } @@ -64,14 +67,17 @@ axios.interceptors.response.use( console.error(error); return Promise.reject(error as Error); } - notifications.addNotification({ - message: i18n.t({ - en: 'HTTP Request Failed', - fr: 'Échec de la requête HTTP' - }), - title: error.response?.status.toString(), - type: 'error' - }); + // Let callers that surface their own specific error message opt out of the generic toast. + if (!error.config?.meta?.disableDefaultErrorNotification) { + notifications.addNotification({ + message: i18n.t({ + en: 'HTTP Request Failed', + fr: 'Échec de la requête HTTP' + }), + title: error.response?.status.toString(), + type: 'error' + }); + } return Promise.reject(error); } ); diff --git a/apps/web/src/styles.css b/apps/web/src/styles.css index 79e5c02ed..b9f1a7fc6 100644 --- a/apps/web/src/styles.css +++ b/apps/web/src/styles.css @@ -1,5 +1,10 @@ @import '@opendatacapture/react-core/globals.css'; +/* Highlight a data-table row that contains a selected marker (see admin tables with row actions). */ +[data-testid='data-table-row']:has([data-row-selected='true']) { + @apply bg-slate-100 dark:bg-slate-800; +} + [data-spotlight='true'] { @apply pointer-events-none z-40 rounded-md shadow-2xl; } diff --git a/apps/web/src/utils/error.ts b/apps/web/src/utils/error.ts new file mode 100644 index 000000000..9c1c4d7b7 --- /dev/null +++ b/apps/web/src/utils/error.ts @@ -0,0 +1,16 @@ +import axios from 'axios'; + +/** + * Extract a human-readable message from an API error. Prefers the server-provided `message` field on + * the response body (e.g. NestJS exception messages), falling back to the provided default. Written + * with explicit narrowing so the `unknown` response body stays type-safe. + */ +export function getApiErrorMessage(error: unknown, fallback: string): string { + if (axios.isAxiosError(error)) { + const data: unknown = error.response?.data; + if (data && typeof data === 'object' && 'message' in data && typeof data.message === 'string') { + return data.message; + } + } + return fallback; +} diff --git a/packages/schemas/package.json b/packages/schemas/package.json index 7b4c02122..2f6ed1fbb 100644 --- a/packages/schemas/package.json +++ b/packages/schemas/package.json @@ -12,6 +12,7 @@ "./group": "./src/group/group.ts", "./instrument": "./src/instrument/instrument.ts", "./instrument-records": "./src/instrument-records/instrument-records.ts", + "./instrument-repo": "./src/instrument-repo/instrument-repo.ts", "./session": "./src/session/session.ts", "./setup": "./src/setup/setup.ts", "./storage": "./src/storage/storage.ts", diff --git a/packages/schemas/src/core/core.ts b/packages/schemas/src/core/core.ts index 34b4ddf48..b75df6cf3 100644 --- a/packages/schemas/src/core/core.ts +++ b/packages/schemas/src/core/core.ts @@ -17,6 +17,7 @@ export const $AppSubjectName = z.enum([ 'Group', 'Instrument', 'InstrumentRecord', + 'InstrumentRepo', 'Session', 'Subject', 'User' diff --git a/packages/schemas/src/group/group.ts b/packages/schemas/src/group/group.ts index 48f04c462..755ae8204 100644 --- a/packages/schemas/src/group/group.ts +++ b/packages/schemas/src/group/group.ts @@ -23,6 +23,7 @@ export const $GroupType = z.enum(['CLINICAL', 'RESEARCH']); export type Group = z.infer; export const $Group = $BaseModel.extend({ accessibleInstrumentIds: z.array(z.string()), + instrumentRepoIds: z.array(z.string()), name: z.string().min(1), settings: $GroupSettings, subjectIds: z.array(z.string()), diff --git a/packages/schemas/src/instrument-repo/instrument-repo.ts b/packages/schemas/src/instrument-repo/instrument-repo.ts new file mode 100644 index 000000000..2023f46a0 --- /dev/null +++ b/packages/schemas/src/instrument-repo/instrument-repo.ts @@ -0,0 +1,25 @@ +import { z } from 'zod/v4'; + +import { $BaseModel } from '../core/core.js'; + +export type InstrumentRepo = z.infer; +export const $InstrumentRepo = $BaseModel.extend({ + groupIds: z.array(z.string()), + instrumentIds: z.array(z.string()), + lastSyncedAt: z.coerce.date().nullish(), + name: z.string().min(1), + owner: z.string().min(1), + repoName: z.string().min(1), + url: z.string().url() +}); + +export type CreateInstrumentRepoData = z.infer; +export const $CreateInstrumentRepoData = z.object({ + // Optional GitHub personal access token, required only for private repositories. It is stored + // encrypted on the server and never returned to the client. + accessToken: z.string().min(1).optional(), + url: z + .string() + .url() + .regex(/^https:\/\/github\.com\/[^/]+\/[^/]+(\.git)?\/?$/, 'Must be a valid GitHub repository URL') +}); diff --git a/packages/schemas/src/instrument/instrument.base.ts b/packages/schemas/src/instrument/instrument.base.ts index 42cc0ab1d..3d891565d 100644 --- a/packages/schemas/src/instrument/instrument.base.ts +++ b/packages/schemas/src/instrument/instrument.base.ts @@ -233,13 +233,28 @@ type InstrumentInfo = Omit; + .extend({ + id: z.string(), + internal: $ScalarInstrumentInternal.optional(), + sourceRepo: z + .object({ + id: z.string(), + name: z.string().nullable() + }) + .nullish() + }) satisfies z.ZodType; /** @internal */ type UnilingualInstrumentInfo = Simplify>>; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4eb91979a..764e7a53d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ catalogs: default: '@casl/ability': specifier: ^6.7.1 - version: 6.8.1 + version: 6.8.0 '@douglasneuroinformatics/esbuild-plugin-prisma': specifier: latest version: 1.0.1 @@ -32,19 +32,19 @@ catalogs: version: 0.13.0 '@microsoft/api-extractor': specifier: ^7.47.6 - version: 7.58.7 + version: 7.57.2 '@prisma/client': specifier: ^6.9.0 - version: 6.19.3 + version: 6.19.2 '@storybook/addon-docs': specifier: ^10.3.5 - version: 10.4.2 + version: 10.3.5 '@storybook/addon-themes': specifier: ^10.3.5 - version: 10.4.2 + version: 10.3.5 '@storybook/react-vite': specifier: ^10.3.5 - version: 10.4.2 + version: 10.3.5 '@tailwindcss/postcss': specifier: 4.3.0 version: 4.3.0 @@ -53,7 +53,7 @@ catalogs: version: 4.3.0 axios: specifier: ^1.15.0 - version: 1.17.0 + version: 1.15.0 commander: specifier: ^12.1.0 version: 12.1.0 @@ -65,22 +65,22 @@ catalogs: version: 0.23.1 happy-dom: specifier: ^20.0.2 - version: 20.10.1 + version: 20.6.3 motion: specifier: 11.15.0 version: 11.15.0 msgpackr: specifier: ^1.11.8 - version: 1.11.12 + version: 1.11.8 neverthrow: specifier: ^8.2.0 version: 8.2.0 nodemon: specifier: ^3.1.9 - version: 3.1.14 + version: 3.1.13 prisma: specifier: ^6.9.0 - version: 6.19.3 + version: 6.19.2 react-dropzone: specifier: ^14.3.8 version: 14.4.1 @@ -89,7 +89,7 @@ catalogs: version: 11.0.3 storybook: specifier: ^10.3.5 - version: 10.4.2 + version: 10.3.5 tailwindcss: specifier: 4.3.0 version: 4.3.0 @@ -98,7 +98,7 @@ catalogs: version: 4.8.2 vite: specifier: ^6.3.3 - version: 6.4.3 + version: 6.4.1 zustand: specifier: ^5.0.13 version: 5.0.14 @@ -121,37 +121,37 @@ importers: devDependencies: '@douglasneuroinformatics/eslint-config': specifier: ^6.0.0 - version: 6.0.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) + version: 6.0.0(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) '@douglasneuroinformatics/prettier-config': specifier: ^0.3.0 - version: 0.3.0(husky@9.1.7)(prettier-plugin-astro@0.14.1)(prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.3))(prettier@3.8.3) + version: 0.3.0(husky@9.1.7)(prettier-plugin-astro@0.14.1)(prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.1))(prettier@3.8.1) '@douglasneuroinformatics/tsconfig': specifier: ^2.0.0 - version: 2.0.0(typescript@6.0.3) + version: 2.0.0(typescript@6.0.2) '@swc-node/register': specifier: ^1.10.9 - version: 1.11.1(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3) + version: 1.11.1(@swc/core@1.15.11(@swc/helpers@0.5.18))(@swc/types@0.1.25)(typescript@6.0.2) '@swc/cli': specifier: ^0.6.0 - version: 0.6.0(@swc/core@1.15.40(@swc/helpers@0.5.23))(chokidar@4.0.3) + version: 0.6.0(@swc/core@1.15.11(@swc/helpers@0.5.18))(chokidar@4.0.3) '@swc/core': specifier: ^1.10.9 - version: 1.15.40(@swc/helpers@0.5.23) + version: 1.15.11(@swc/helpers@0.5.18) '@swc/helpers': specifier: ^0.5.15 - version: 0.5.23 + version: 0.5.18 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@vitest/browser': specifier: ^4.1.4 - version: 4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))(vitest@4.1.8) + version: 4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))(vitest@4.1.4) '@vitest/coverage-v8': specifier: ^4.1.4 - version: 4.1.8(@vitest/browser@4.1.8)(vitest@4.1.8) + version: 4.1.4(@vitest/browser@4.1.4)(vitest@4.1.4) dotenv: specifier: ^16.4.7 version: 16.6.1 @@ -160,7 +160,7 @@ importers: version: 10.1.0 eslint: specifier: 9.23.x - version: 9.23.0(jiti@2.7.0) + version: 9.23.0(jiti@2.6.1) expect-type: specifier: ^0.20.0 version: 0.20.0 @@ -169,19 +169,19 @@ importers: version: 9.1.7 js-yaml: specifier: ^4.1.1 - version: 4.2.0 + version: 4.1.1 knip: specifier: ^5.46.0 - version: 5.88.1(@types/node@24.13.0)(typescript@6.0.3) + version: 5.84.1(@types/node@24.13.1)(typescript@6.0.2) prettier: specifier: ^3.4.2 - version: 3.8.3 + version: 3.8.1 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 prettier-plugin-tailwindcss: specifier: ^0.6.10 - version: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.3) + version: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.1) sort-json: specifier: ^2.0.1 version: 2.0.1 @@ -190,31 +190,31 @@ importers: version: 4.8.2 turbo: specifier: ^2.3.3 - version: 2.9.16 + version: 2.8.10 typescript: specifier: 6.0.x - version: 6.0.3 + version: 6.0.2 unplugin-swc: specifier: ^1.5.1 - version: 1.5.9(@swc/core@1.15.40(@swc/helpers@0.5.23))(rollup@4.61.1) + version: 1.5.9(@swc/core@1.15.11(@swc/helpers@0.5.18))(rollup@4.58.0) vitest: specifier: ^4.1.4 - version: 4.1.8(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(happy-dom@20.10.1)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) apps/api: dependencies: '@aws-sdk/client-s3': specifier: ^3.1044.0 - version: 3.1061.0 + version: 3.1064.0 '@aws-sdk/s3-request-presigner': specifier: ^3.1044.0 - version: 3.1061.0 + version: 3.1064.0 '@casl/ability': specifier: ^6.7.5 - version: 6.8.1 + version: 6.8.0 '@casl/prisma': specifier: ^1.5.1 - version: 1.6.2(@casl/ability@6.8.1)(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3)) + version: 1.6.1(@casl/ability@6.8.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2)) '@douglasneuroinformatics/libcrypto': specifier: 'catalog:' version: 0.0.6 @@ -223,10 +223,10 @@ importers: version: 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) '@douglasneuroinformatics/libnest': specifier: ^8.3.1 - version: 8.3.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-fastify@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24))(@nestjs/testing@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-express@11.1.24))(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(@swc/types@0.1.26)(fastify@5.8.5)(neverthrow@8.2.0)(reflect-metadata@0.1.14)(rollup@4.61.1)(rxjs@7.8.2)(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))(vitest@4.1.8)(zod@vendor+zod@3.x) + version: 8.3.1(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-fastify@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14))(@nestjs/testing@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-express@11.1.14))(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(@swc/types@0.1.25)(fastify@5.7.4)(neverthrow@8.2.0)(reflect-metadata@0.1.14)(rollup@4.58.0)(rxjs@7.8.2)(typescript@6.0.2)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.4)(zod@vendor+zod@3.x) '@douglasneuroinformatics/libpasswd': specifier: 'catalog:' - version: 0.0.3(typescript@6.0.3) + version: 0.0.3(typescript@6.0.2) '@douglasneuroinformatics/libstats': specifier: 'catalog:' version: 0.2.1 @@ -235,34 +235,37 @@ importers: version: 9.9.0 '@nestjs/axios': specifier: ^4.0.0 - version: 4.0.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(axios@1.17.0)(rxjs@7.8.2) + version: 4.0.1(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(axios@1.15.0)(rxjs@7.8.2) '@nestjs/common': specifier: ^11.0.11 - version: 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) + version: 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) '@nestjs/core': specifier: ^11.0.11 - version: 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) + version: 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) '@nestjs/jwt': specifier: ^11.0.0 - version: 11.0.2(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2)) + version: 11.0.2(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2)) '@nestjs/passport': specifier: ^11.0.5 - version: 11.0.5(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(passport@0.7.0) + version: 11.0.5(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(passport@0.7.0) '@nestjs/platform-express': specifier: ^11.0.11 - version: 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24) + version: 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14) '@nestjs/platform-fastify': specifier: ^11.1.11 - version: 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24) + version: 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14) '@nestjs/swagger': specifier: ^11.0.6 - version: 11.4.4(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14) + version: 11.2.6(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14) '@nestjs/throttler': specifier: ^6.5.0 - version: 6.5.0(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14) + version: 6.5.0(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14) '@opendatacapture/demo': specifier: workspace:* version: link:../../packages/demo + '@opendatacapture/instrument-bundler': + specifier: workspace:* + version: link:../../packages/instrument-bundler '@opendatacapture/instrument-library': specifier: workspace:* version: link:../../packages/instrument-library @@ -286,25 +289,28 @@ importers: version: link:../../packages/subject-utils '@prisma/client': specifier: 'catalog:' - version: 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) + version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 express: specifier: ^5.0.1 version: 5.2.1 fastify: specifier: ^5.7.1 - version: 5.8.5 + version: 5.7.4 + jszip: + specifier: ^3.10.1 + version: 3.10.1 lodash-es: specifier: workspace:lodash-es__4.x@* version: link:../../vendor/lodash-es@4.x mongodb: specifier: ^6.15.0 - version: 6.21.0(socks@2.8.9) + version: 6.21.0(socks@2.8.7) msgpackr: specifier: 'catalog:' - version: 1.11.12 + version: 1.11.8 neverthrow: specifier: 'catalog:' version: 8.2.0 @@ -329,7 +335,7 @@ importers: devDependencies: '@nestjs/testing': specifier: ^11.0.11 - version: 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-express@11.1.24) + version: 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-express@11.1.14) '@types/express': specifier: ^5.0.0 version: 5.0.6 @@ -341,13 +347,13 @@ importers: version: 4.0.1 mongodb-memory-server: specifier: ^10.3.0 - version: 10.4.3(socks@2.8.9) + version: 10.4.3(socks@2.8.7) prisma: specifier: 'catalog:' - version: 6.19.3(typescript@6.0.3) + version: 6.19.2(magicast@0.3.5)(typescript@6.0.2) prisma-json-types-generator: specifier: ^3.2.2 - version: 3.6.2(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) + version: 3.6.2(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) apps/gateway: dependencies: @@ -371,10 +377,10 @@ importers: version: link:../../packages/schemas '@prisma/client': specifier: 'catalog:' - version: 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) + version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 compression: specifier: ^1.7.5 version: 1.8.1 @@ -411,7 +417,7 @@ importers: devDependencies: '@douglasneuroinformatics/esbuild-plugin-prisma': specifier: 'catalog:' - version: 1.0.1(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(@prisma/engines@6.19.3)(esbuild@0.23.1)(prisma@6.19.3(typescript@6.0.3)) + version: 1.0.1(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(@prisma/engines@6.19.2)(esbuild@0.23.1)(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2)) '@opendatacapture/release-info': specifier: workspace:* version: link:../../packages/release-info @@ -420,7 +426,7 @@ importers: version: link:../../packages/vite-plugin-runtime '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) '@types/compression': specifier: ^1.7.5 version: 1.8.1 @@ -429,16 +435,16 @@ importers: version: 5.0.6 '@vitejs/plugin-react-swc': specifier: ^4.3.0 - version: 4.3.1(@swc/helpers@0.5.23)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(@swc/helpers@0.5.18)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) esbuild: specifier: 'catalog:' version: 0.23.1 nodemon: specifier: 'catalog:' - version: 3.1.14 + version: 3.1.13 prisma: specifier: 'catalog:' - version: 6.19.3(typescript@6.0.3) + version: 6.19.2(magicast@0.3.5)(typescript@6.0.2) tailwindcss: specifier: 'catalog:' version: 4.3.0 @@ -450,7 +456,7 @@ importers: version: link:../../vendor/type-fest@4.x vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2) apps/outreach: dependencies: @@ -487,16 +493,16 @@ importers: devDependencies: '@astrojs/check': specifier: ^0.9.4 - version: 0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.8.3)(typescript@6.0.3) + version: 0.9.6(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@6.0.2) '@astrojs/sitemap': specifier: ^3.2.1 - version: 3.7.3 + version: 3.7.0 '@astrojs/starlight': specifier: ^0.34.3 - version: 0.34.8(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)) + version: 0.34.8(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)) '@astrojs/starlight-tailwind': specifier: 4.0.1 - version: 4.0.1(@astrojs/starlight@0.34.8(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)))(tailwindcss@4.3.0) + version: 4.0.1(@astrojs/starlight@0.34.8(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)))(tailwindcss@4.3.0) '@opendatacapture/runtime-core': specifier: workspace:* version: link:../../packages/runtime-core @@ -508,10 +514,10 @@ importers: version: 0.5.19(tailwindcss@4.3.0) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: ^5.15.9 - version: 5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0) + version: 5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -526,10 +532,10 @@ importers: version: link:../../vendor/type-fest@4.x typedoc: specifier: 0.27.x - version: 0.27.9(typescript@6.0.3) + version: 0.27.9(typescript@6.0.2) typedoc-plugin-markdown: specifier: 4.4.x - version: 4.4.2(typedoc@0.27.9(typescript@6.0.3)) + version: 4.4.2(typedoc@0.27.9(typescript@6.0.2)) apps/playground: dependencies: @@ -568,7 +574,7 @@ importers: version: 2.2.16(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 cmdk: specifier: ^1.1.1 version: 1.1.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) @@ -577,7 +583,7 @@ importers: version: 0.23.1 idb-keyval: specifier: ^6.2.2 - version: 6.2.5 + version: 6.2.2 immer: specifier: ^10.1.1 version: 10.2.0 @@ -638,13 +644,13 @@ importers: version: link:../../packages/vite-plugin-runtime '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.2(esbuild@0.27.7)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 10.3.5(esbuild@0.27.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@vitejs/plugin-react-swc': specifier: ^4.3.0 - version: 4.3.1(@swc/helpers@0.5.23)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(@swc/helpers@0.5.18)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) tailwindcss: specifier: 'catalog:' version: 4.3.0 @@ -653,19 +659,19 @@ importers: version: link:../../vendor/type-fest@4.x vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) apps/web: dependencies: '@casl/ability': specifier: 'catalog:' - version: 6.8.1 + version: 6.8.0 '@douglasneuroinformatics/libjs': specifier: 'catalog:' version: 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) '@douglasneuroinformatics/libpasswd': specifier: 'catalog:' - version: 0.0.3(typescript@6.0.3) + version: 0.0.3(typescript@6.0.2) '@douglasneuroinformatics/libui': specifier: 'catalog:' version: 6.7.1(immer@10.2.0)(neverthrow@8.2.0)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(tailwindcss@4.3.0)(use-sync-external-store@1.6.0(react@vendor+react@19.x))(zod@vendor+zod@3.x) @@ -710,19 +716,19 @@ importers: version: link:../../packages/subject-utils '@tanstack/react-query': specifier: ^5.75.2 - version: 5.101.0(react@vendor+react@19.x) + version: 5.90.21(react@vendor+react@19.x) '@tanstack/react-query-devtools': specifier: ^5.75.2 - version: 5.101.0(@tanstack/react-query@5.101.0(react@vendor+react@19.x))(react@vendor+react@19.x) + version: 5.91.3(@tanstack/react-query@5.90.21(react@vendor+react@19.x))(react@vendor+react@19.x) '@tanstack/react-router': specifier: ^1.127.3 - version: 1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + version: 1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@tanstack/react-router-devtools': specifier: ^1.127.3 - version: 1.167.0(@tanstack/react-router@1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(@tanstack/router-core@1.171.9)(csstype@3.2.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + version: 1.161.3(@tanstack/react-router@1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(@tanstack/router-core@1.161.3)(csstype@3.2.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -746,7 +752,7 @@ importers: version: 11.15.0(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) msgpackr: specifier: 'catalog:' - version: 1.11.12 + version: 1.11.8 papaparse: specifier: workspace:papaparse__5.x@* version: link:../../vendor/papaparse@5.x @@ -789,13 +795,13 @@ importers: version: link:../../packages/vite-plugin-runtime '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.2(esbuild@0.27.7)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 10.3.5(esbuild@0.27.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@tanstack/router-plugin': specifier: ^1.127.3 - version: 1.168.14(@tanstack/react-router@1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 1.161.3(@tanstack/react-router@1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/dom': specifier: ^10.4.0 version: 10.4.1 @@ -807,25 +813,25 @@ importers: version: 1.5.6 '@vitejs/plugin-react-swc': specifier: ^4.3.0 - version: 4.3.1(@swc/helpers@0.5.23)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(@swc/helpers@0.5.18)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) happy-dom: specifier: 'catalog:' - version: 20.10.1 + version: 20.6.3 tailwindcss: specifier: 'catalog:' version: 4.3.0 vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 0.5.1(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) packages/demo: dependencies: '@douglasneuroinformatics/libjs': specifier: 'catalog:' - version: 3.2.1(neverthrow@8.2.0)(zod@4.4.3) + version: 3.2.1(neverthrow@8.2.0)(zod@4.3.6) '@opendatacapture/schemas': specifier: workspace:* version: link:../schemas @@ -923,7 +929,7 @@ importers: dependencies: '@douglasneuroinformatics/libjs': specifier: 'catalog:' - version: 3.2.1(neverthrow@8.2.0)(zod@4.4.3) + version: 3.2.1(neverthrow@8.2.0)(zod@4.3.6) '@opendatacapture/runtime-core': specifier: workspace:* version: link:../runtime-core @@ -995,10 +1001,10 @@ importers: version: link:../subject-utils '@tanstack/react-router': specifier: ^1.127.3 - version: 1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + version: 1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 http-status-codes: specifier: ^2.3.0 version: 2.3.0 @@ -1044,13 +1050,13 @@ importers: version: link:../instrument-stubs '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.2(esbuild@0.27.7)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 10.3.5(esbuild@0.27.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) type-fest: specifier: workspace:type-fest__4.x@* version: link:../../vendor/type-fest@4.x vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) packages/release-info: dependencies: @@ -1096,7 +1102,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.58.7(@types/node@24.13.0) + version: 7.57.2(@types/node@24.13.1) esbuild: specifier: 'catalog:' version: 0.23.1 @@ -1109,7 +1115,7 @@ importers: dependencies: '@casl/ability': specifier: 'catalog:' - version: 6.8.1 + version: 6.8.0 '@douglasneuroinformatics/libjs': specifier: 'catalog:' version: 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) @@ -1125,7 +1131,7 @@ importers: devDependencies: '@casl/prisma': specifier: ^1.5.1 - version: 1.6.2(@casl/ability@6.8.1)(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3)) + version: 1.6.1(@casl/ability@6.8.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2)) '@opendatacapture/instrument-stubs': specifier: workspace:* version: link:../instrument-stubs @@ -1211,11 +1217,11 @@ importers: version: link:../../runtime/v1 vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@douglasneuroinformatics/libjs': specifier: 'catalog:' - version: 3.2.1(neverthrow@8.2.0)(zod@4.4.3) + version: 3.2.1(neverthrow@8.2.0)(zod@4.3.6) runtime/v1: devDependencies: @@ -1350,7 +1356,7 @@ importers: dependencies: axios: specifier: 'catalog:' - version: 1.17.0 + version: 1.15.0 react: specifier: catalog:react19 version: 19.1.0 @@ -1381,37 +1387,37 @@ importers: version: link:../packages/vite-plugin-runtime '@storybook/addon-docs': specifier: 'catalog:' - version: 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@storybook/addon-themes': specifier: 'catalog:' - version: 10.4.2(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + version: 10.3.5(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.4.2(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 10.3.5(esbuild@0.27.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) esbuild-wasm: specifier: 'catalog:' version: 0.23.1 storybook: specifier: 'catalog:' - version: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) type-fest: specifier: workspace:type-fest__4.x@* version: link:../vendor/type-fest@4.x vite: specifier: 'catalog:' - version: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + version: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) testing/cypress: dependencies: '@casl/ability': specifier: 'catalog:' - version: 6.8.1 + version: 6.8.0 '@douglasneuroinformatics/libjs': specifier: 'catalog:' - version: 3.2.1(neverthrow@8.2.0)(zod@4.4.3) + version: 3.2.1(neverthrow@8.2.0)(zod@4.3.6) '@faker-js/faker': specifier: ^9.4.0 version: 9.9.0 @@ -1430,12 +1436,12 @@ importers: dependencies: '@douglasneuroinformatics/libjs': specifier: 'catalog:' - version: 3.2.1(neverthrow@8.2.0)(zod@4.4.3) + version: 3.2.1(neverthrow@8.2.0)(zod@4.3.6) '@opendatacapture/schemas': specifier: workspace:* version: link:../../packages/schemas '@playwright/test': - specifier: ^1.51.1 + specifier: ^1.60.0 version: 1.60.0 type-fest: specifier: workspace:type-fest__4.x@* @@ -1743,18 +1749,18 @@ importers: version: 3.25.76 packages: - '@adobe/css-tools@4.5.0': + '@adobe/css-tools@4.4.4': resolution: - { integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q== } + { integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== } '@alloc/quick-lru@5.2.0': resolution: { integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== } engines: { node: '>=10' } - '@astrojs/check@0.9.9': + '@astrojs/check@0.9.6': resolution: - { integrity: sha512-A5UW8uIuErLWEoRQvzgXpO1gTjUFtK8r7nU2Z7GewAMxUb7bPvpk11qaKKgxqXlHJWlAvaaxy+Xg28A6bmQ1Tg== } + { integrity: sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA== } hasBin: true peerDependencies: typescript: 6.0.x @@ -1763,17 +1769,13 @@ packages: resolution: { integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg== } - '@astrojs/compiler@3.0.1': - resolution: - { integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA== } - - '@astrojs/internal-helpers@0.7.6': + '@astrojs/internal-helpers@0.7.5': resolution: - { integrity: sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q== } + { integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA== } - '@astrojs/language-server@2.16.10': + '@astrojs/language-server@2.16.3': resolution: - { integrity: sha512-87VQ/5GSdHlRnUA+hGuerYyIGAj+9RbZmATyuKLEUePinUXhQ5YkRnRrHhOD9sSi5JOErLjrLkHnfZFEvGrV8w== } + { integrity: sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA== } hasBin: true peerDependencies: prettier: ^3.0.0 @@ -1784,13 +1786,13 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@6.3.11': + '@astrojs/markdown-remark@6.3.10': resolution: - { integrity: sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ== } + { integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A== } - '@astrojs/mdx@4.3.14': + '@astrojs/mdx@4.3.13': resolution: - { integrity: sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA== } + { integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q== } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } peerDependencies: astro: ^5.0.0 @@ -1800,9 +1802,9 @@ packages: { integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ== } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } - '@astrojs/sitemap@3.7.3': + '@astrojs/sitemap@3.7.0': resolution: - { integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA== } + { integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA== } '@astrojs/starlight-tailwind@4.0.1': resolution: @@ -1822,9 +1824,9 @@ packages: { integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ== } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } - '@astrojs/yaml2ts@0.2.4': + '@astrojs/yaml2ts@0.2.2': resolution: - { integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A== } + { integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ== } '@aws-crypto/crc32@5.2.0': resolution: @@ -1856,124 +1858,104 @@ packages: resolution: { integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== } - '@aws-sdk/checksums@3.1000.1': - resolution: - { integrity: sha512-DFCtlisEuWzw7rESV65jHK7De1QsJZRZgUNJ8ovpmdVaayPrxvmlsAlW8hka9E7f9B31d1T7lHG9oozZf6Bp6w== } - engines: { node: '>=20.0.0' } - - '@aws-sdk/client-s3@3.1061.0': - resolution: - { integrity: sha512-ygyRCIkktaDz4/kNzsxhbZqocLwCJV5absi/k7Xd3LThPOmVkid7Nghm/xTW2Yg+vSQIL0yq99oV7u3T+4ZbAQ== } - engines: { node: '>=20.0.0' } - - '@aws-sdk/core@3.974.17': - resolution: - { integrity: sha512-r8o4h2K7j6P9ngno+8ei0aK0U/4JwDb7A2fMMxGVoSqDN8AFlIzSDeZHME9LcVLR2codyhtr1WAAg+/nmkeeMA== } - engines: { node: '>=20.0.0' } - - '@aws-sdk/credential-provider-env@3.972.43': - resolution: - { integrity: sha512-g0XVQKzaA/4cq1vz1IvCQwYM+1Pkv01J9yHDpCTXekVuGZRDEz0wqBQ1AuYTq7FM6uik4uBGH8Tb5d9YvgeA7g== } - engines: { node: '>=20.0.0' } - - '@aws-sdk/credential-provider-http@3.972.45': + '@aws-sdk/checksums@3.1000.3': resolution: - { integrity: sha512-w9PuOoKCt6+xoESvY+zlV0u3PKQ0mVL259PcsVR6a3S/uYJJHnIi4r1NxdJHEcNldUVRIciltWnFMGBR4YEm3g== } + { integrity: sha512-vkPd3NMJf6Gw4QjBBdiUdu2uo4P0HfHrx5+1hqjDYZhZAF4HWkMHXoQtxHQmDi/LyysUgTU5uNhcZLCkpF9LKg== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-ini@3.972.48': + '@aws-sdk/client-s3@3.1064.0': resolution: - { integrity: sha512-+6BQ6Lrnc+EyAGElLRW6j+Sa+RirPHnIJsobvYO6nnyK+oGKmz1ne/ieclbLWyjyDKEU3/JVJWcWY3VLFPvGtQ== } + { integrity: sha512-6OQhE4Qpt94oTw7ruBHE2E6/PS57alsCSdemMf4c3gBSUM0emoXRRykYffFSL56oluL49AZh/DLWRnQafynbLg== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-login@3.972.47': + '@aws-sdk/core@3.974.19': resolution: - { integrity: sha512-Iy2ebWVgrZBH05464uJiQYu6HSSiROnwVZptthEFXx2gWjo1ORCxEAFZB5Cr2MdfrSnZ+0QUPkZ1ZpCqpkUrLQ== } + { integrity: sha512-SMNfLCU/41xxfFaC5Slwy8V/f1FRhakvyeeMeDeIxqNF0DzhDlXsXnJDELJYke1EtnJbfzfilW7tvulGfxMY6A== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-node@3.972.50': + '@aws-sdk/credential-provider-env@3.972.45': resolution: - { integrity: sha512-b05Aelq5cqAvCCDQjCYacl0XmR8QhBNSqLbsdISkQmlQBa5oPS66zYPteWcSp5LswbpoIe552EUGjluKiadBig== } + { integrity: sha512-ZPsnLyrpDRmojKrBbJykASyLLVFkjyD+fWATeSuYgaqablijGOzxPxEKyrwUvNg+bgSQ7PkW2FTu65Xco19Gag== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-process@3.972.43': + '@aws-sdk/credential-provider-http@3.972.47': resolution: - { integrity: sha512-GPokLNyvTfCmuaHk+v3GKVs4ZT3cMu5kgS2a+NPkOMt96cq6fSIK0g+mZHpGS6Cd4QGrPKesANEaLUKgOskTzg== } + { integrity: sha512-1XdgHDIPbARHuzZXM7ouzIbSUZFU9dTi9k+ryMhiZU4QCam4dvwOyUEFjEHNxAZehCYUIOmsSUZ2un6BIgUkWg== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-sso@3.972.47': + '@aws-sdk/credential-provider-ini@3.972.51': resolution: - { integrity: sha512-0AzvLrzlvJs0DzbeWGvNj+bX3Uzd7VNS6vDqCOdZzBlCGKGd78uxctJSW9iK/Rt/nxiJqpTvrYQlVJ4guVM2Dw== } + { integrity: sha512-f8sRTVyM+9BbzQKPlUP9dVVpgNEu65jFckNAAGzRfCrlaSi5AWUbCKEHIMcIYokv8pWblSKEqHkqKYZtwINnhw== } engines: { node: '>=20.0.0' } - '@aws-sdk/credential-provider-web-identity@3.972.47': + '@aws-sdk/credential-provider-login@3.972.50': resolution: - { integrity: sha512-eksfbUErOejUAGWBAcNqaP7IX21oUOEo73d9R56k9Ua4d57qS90NEYkWJsuSGzTXMFulCu17qXJI/qGmM7hvoA== } + { integrity: sha512-NHHsKoMhw6UylSU0XDnDc87+IQW8tRBTIe6vnOX12GSIlBDtoce6bSzONleIglCyu8d3H9bmTSfk+sIN5yh3WA== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-bucket-endpoint@3.972.20': + '@aws-sdk/credential-provider-node@3.972.53': resolution: - { integrity: sha512-D35MfedGvTTzK1oygFPjm7DViSJwj9cuPV26ElHKwZqEz2rWag1hzYeAQ7st0jlCIAAihQgOyQ0/JwmqLOOinw== } + { integrity: sha512-z/JJ8Qvf2GiTn4bw+x8k7wQjxmPpNsiwZ7ls/h1cZHikrSpS0+65lB+lafnXZlxv1lqH4k6rQwh+2UsycC662g== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-expect-continue@3.972.16': + '@aws-sdk/credential-provider-process@3.972.45': resolution: - { integrity: sha512-S52iw+M9zJC+7uxRdvvKeiR0s2PDeYEmbNZQkWE6OJf8upIs+r4WQY0TER+6akVitEMeRdwS0DrBUhKkmpsyng== } + { integrity: sha512-QMJXjTGLmHE4Ie03T5H4hHOLfcvMc9DaODO6b5dgte3S8ECf5bBuHUJW4cQREcYZyRkOU8iymqtiBxqF4icxZg== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-flexible-checksums@3.974.26': + '@aws-sdk/credential-provider-sso@3.972.50': resolution: - { integrity: sha512-WndRXQV8wAU/bW3GH8THumEOSV7FpS0AtoluT2M7lYaaDUyG0gOCD+DppB+IWQ4TPmzuTtFcCedh9xCzM4Zv4g== } + { integrity: sha512-pQ9ww4G53gwHlon1NMz25JhaBo13E9Jv+VVgjh39C/yzvby+xhSnEOb+VDYShKNCh1TbttMF/5CFCHkZrIqOcA== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-location-constraint@3.972.13': + '@aws-sdk/credential-provider-web-identity@3.972.50': resolution: - { integrity: sha512-Yh0MmpADMsSR7ExRM/2w85D26i/U2aDC/pC7fMwhUpmOl6sebGpmBPoRL/uJRDhqRrwX/tvXWWZrsbsPM/O9FQ== } + { integrity: sha512-9DbaPaT2aMbz18wtSpq9HVBErjBQwxykqTFgG6n8Bn05GN68mITz+G1869ekYx0mVT/BDjETj5czz/3cPgLwxA== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-sdk-s3@3.972.47': + '@aws-sdk/middleware-flexible-checksums@3.974.28': resolution: - { integrity: sha512-fzVBvGib8P1G6RFV3qVTPlXy9bMFAy5nxhdhA7LwyhWjRkJufNfJIPiloZq2mt36YAXSlLsEa4s3Kgcw6cv3+g== } + { integrity: sha512-XkHArJreL8hnpKrBTlnwrIcynZT4kDiAF6BF/z7AVxV7VUvojrjL2RzeK8QLVNyfzkEJGIYBKoufOIOSSpd6nQ== } engines: { node: '>=20.0.0' } - '@aws-sdk/middleware-ssec@3.972.13': + '@aws-sdk/middleware-sdk-s3@3.972.49': resolution: - { integrity: sha512-M+dDhWp2zv9u92I4/4rgUFdiF8jSIk5PIj5ktyBdhvR/dkmKSYMo07nuh+3g8/59HnizwkcRC3glcLMX5GhyaQ== } + { integrity: sha512-9CQoJfMZMqGJVBqFO/C8Gwke6WM7CLskQBiAjGU5LyXsVtqhymAATfqFnIa87Dw23ssfgGzqBHpSSwSchldFXw== } engines: { node: '>=20.0.0' } - '@aws-sdk/nested-clients@3.997.15': + '@aws-sdk/nested-clients@3.997.18': resolution: - { integrity: sha512-Fpri1/PXKMKveORZ7E00VLTlWS5DkfZkW70PUE+bOnpWpAeHAQLoiDHhkzN3kNWbbSsGg64+IZYiq/EZgME3Mg== } + { integrity: sha512-xBWrodBvW5SHCZV11UZUJG0pSHkLCEREIBoNbff1C1sacOUCmxJnTCPE80sCGLCtqgXg98I2MQJe2z28tcZSsw== } engines: { node: '>=20.0.0' } - '@aws-sdk/s3-request-presigner@3.1061.0': + '@aws-sdk/s3-request-presigner@3.1064.0': resolution: - { integrity: sha512-unGsJZSKQWD4KjokNs5QATLPaNt3u0YoIch7KIomfNy1UB6YaRngsAeArDGAnbrrx2LMOb9l2+4sa+yRn8rkbw== } + { integrity: sha512-BYha6t2emy50ld7wvtLkrhMsibaGNlgg1TzMXrbkof3QP+9usjikabdOI429uGyhUzklC4amPnxWLzWxP+AjIw== } engines: { node: '>=20.0.0' } - '@aws-sdk/signature-v4-multi-region@3.996.31': + '@aws-sdk/signature-v4-multi-region@3.996.33': resolution: - { integrity: sha512-Kn2up9SlG1KC6wRtwf0d7waTGF6rvp9DxYqB54x6UCKdQ6kyaXCqHL4WGb5vUJga5kS8FxnjhY0LqM28aMvnNQ== } + { integrity: sha512-Hn0RThJEbyOZWV2PV9Z4YD3nitGPxybmyU17dSe9b61WOBcKnqS0WTtM3c1zyZq9WnGiyrfi/i+UBPUk7cM8Ug== } engines: { node: '>=20.0.0' } - '@aws-sdk/token-providers@3.1060.0': + '@aws-sdk/token-providers@3.1064.0': resolution: - { integrity: sha512-6NZaMKkFhpaNiwLpHi1sZaYjidL/lCJE6ME6NxwA8gv9vQna+Kr0j4OFwVoz6tANRWM3WbGz6jiPsGX/Vkjwow== } + { integrity: sha512-sjI+iA4JtgeckBgKwPQF7KzWillRoNDmtpiM0TRa0syiAKFHKUSf84kPXSO3+gA7aMMSxrcxzOM2oPSecaJvEA== } engines: { node: '>=20.0.0' } - '@aws-sdk/types@3.973.10': + '@aws-sdk/types@3.973.12': resolution: - { integrity: sha512-992QrTO7G9qCvKD0fx1rMlqcL14plUcRAbwmqqYVsuF3GrqcvlAL9qxR+baMafarEZ+l7DUQ5lCMmt5mbMhF7g== } + { integrity: sha512-43ajd1NF0RMgX5k0hxCNUyEdrtFUsb2aHT2QvpktSC/2Eyb2Jr/JPVqdp0XIoaHWikZJq5tNWSLO6kB5q2eMCA== } engines: { node: '>=20.0.0' } - '@aws-sdk/util-locate-window@3.965.5': + '@aws-sdk/util-locate-window@3.965.7': resolution: - { integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ== } + { integrity: sha512-M0D6oIpohdNHjc7udzTHEQyot0+0iuA36jc2I9Hps+f/GtKi2HO/pyijQnCnNcwZqLB5+rtn81z3eZK/GyjAmA== } engines: { node: '>=20.0.0' } - '@aws-sdk/xml-builder@3.972.27': + '@aws-sdk/xml-builder@3.972.29': resolution: - { integrity: sha512-hpsCXCOI436kxWpjtRuIHVvuPP81MOw8f18jzfZeg+UOiiOvlqWcmWChzEhJEu16cOC6+ku4ncBN+7rdt+DZ9g== } + { integrity: sha512-fk0niuGFxfi8yIJuMVM4mhwObkiQSuwZFj3tAPrLVx64Pk3BkrEIpqjzHKY4hKoEBUD6Jg/S74Zj9jy+5F3DnQ== } engines: { node: '>=20.0.0' } '@aws/lambda-invoke-store@0.2.4': @@ -1981,116 +1963,121 @@ packages: { integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ== } engines: { node: '>=18.0.0' } - '@babel/code-frame@7.29.7': + '@babel/code-frame@7.29.0': resolution: - { integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== } + { integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== } engines: { node: '>=6.9.0' } - '@babel/compat-data@7.29.7': + '@babel/compat-data@7.29.0': resolution: - { integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== } + { integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== } engines: { node: '>=6.9.0' } - '@babel/core@7.29.7': + '@babel/core@7.29.0': resolution: - { integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== } + { integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== } engines: { node: '>=6.9.0' } - '@babel/generator@7.29.7': + '@babel/generator@7.29.1': resolution: - { integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== } + { integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== } engines: { node: '>=6.9.0' } - '@babel/helper-compilation-targets@7.29.7': + '@babel/helper-compilation-targets@7.28.6': resolution: - { integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== } + { integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== } engines: { node: '>=6.9.0' } - '@babel/helper-globals@7.29.7': + '@babel/helper-globals@7.28.0': resolution: - { integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== } + { integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== } engines: { node: '>=6.9.0' } - '@babel/helper-module-imports@7.29.7': + '@babel/helper-module-imports@7.28.6': resolution: - { integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== } + { integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== } engines: { node: '>=6.9.0' } - '@babel/helper-module-transforms@7.29.7': + '@babel/helper-module-transforms@7.28.6': resolution: - { integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== } + { integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== } engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.29.7': + '@babel/helper-plugin-utils@7.28.6': resolution: - { integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== } + { integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== } engines: { node: '>=6.9.0' } - '@babel/helper-string-parser@7.29.7': + '@babel/helper-string-parser@7.27.1': resolution: - { integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== } + { integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== } engines: { node: '>=6.9.0' } - '@babel/helper-validator-identifier@7.29.7': + '@babel/helper-validator-identifier@7.28.5': resolution: - { integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== } + { integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== } engines: { node: '>=6.9.0' } - '@babel/helper-validator-option@7.29.7': + '@babel/helper-validator-option@7.27.1': resolution: - { integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== } + { integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== } engines: { node: '>=6.9.0' } - '@babel/helpers@7.29.7': + '@babel/helpers@7.28.6': resolution: - { integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== } + { integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== } engines: { node: '>=6.9.0' } - '@babel/parser@7.29.7': + '@babel/parser@7.29.0': resolution: - { integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== } + { integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== } engines: { node: '>=6.0.0' } hasBin: true - '@babel/plugin-syntax-jsx@7.29.7': + '@babel/plugin-syntax-jsx@7.28.6': resolution: - { integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== } + { integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== } engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.29.7': + '@babel/plugin-syntax-typescript@7.28.6': resolution: - { integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== } + { integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== } engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.29.7': + '@babel/runtime@7.28.6': resolution: - { integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== } + { integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== } engines: { node: '>=6.9.0' } - '@babel/template@7.29.7': + '@babel/runtime@7.29.2': resolution: - { integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== } + { integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== } engines: { node: '>=6.9.0' } - '@babel/traverse@7.29.7': + '@babel/template@7.28.6': resolution: - { integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== } + { integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== } engines: { node: '>=6.9.0' } - '@babel/types@7.29.7': + '@babel/traverse@7.29.0': resolution: - { integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== } + { integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== } engines: { node: '>=6.9.0' } - '@base-ui/react@1.5.0': + '@babel/types@7.29.0': resolution: - { integrity: sha512-z1gSAlced1yY+iM+mHDEtIkD8UI3Ebs52MuBPxvV6f5hRutk+xvCH/wuB7hDqDzK9JG5FoMz5nhrqtSs1wjt1A== } + { integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== } + engines: { node: '>=6.9.0' } + + '@base-ui/react@1.4.1': + resolution: + { integrity: sha512-Ab5/LIhcmL8BQcsBUYiOfkSDRdLpvgUBzMK30cu684JPcLclYlztharvCZyNNgzJtbAiREzI9q0pI5erHCMgCw== } engines: { node: '>=14.0.0' } peerDependencies: '@date-fns/tz': ^1.2.0 @@ -2106,9 +2093,9 @@ packages: date-fns: optional: true - '@base-ui/utils@0.2.9': + '@base-ui/utils@0.2.8': resolution: - { integrity: sha512-x/PDDCYzoqPpjrdyb3VcyylTI2IjUXEtYDGi5foh7KsnmNJIIaVwA2GLgDH1dps1GgXiJbA60hM+AyuTfQzIvw== } + { integrity: sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ== } peerDependencies: '@types/react': '*' react: ^17 || ^18 || ^19 @@ -2126,22 +2113,22 @@ packages: resolution: { integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA== } - '@borewit/text-codec@0.2.2': + '@borewit/text-codec@0.2.1': resolution: - { integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ== } + { integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw== } '@capsizecss/unpack@4.0.0': resolution: { integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA== } engines: { node: '>=18' } - '@casl/ability@6.8.1': + '@casl/ability@6.8.0': resolution: - { integrity: sha512-VX5DD1JbSP/DdewZnNwXXaCzve+0pLe14mcUj2l93CdOFAQUT/ylAptNqxf3Wc/jlsuSanAgXza4Z1Iq23dzpQ== } + { integrity: sha512-Ipt4mzI4gSgnomFdaPjaLgY2MWuXqAEZLrU6qqWBB7khGiBBuuEp6ytYDnq09bRXqcjaeeHiaCvCGFbBA2SpvA== } - '@casl/prisma@1.6.2': + '@casl/prisma@1.6.1': resolution: - { integrity: sha512-w0Y8pB/Zp5bSl5E3Ffn0tLazZ2GQZkL64lf+YDevoaDB1+K6RUOFCGVkvE3bYYv+qLYTgO261k99GufIJ4iHeg== } + { integrity: sha512-VSAzfTMOZvP3Atj3F0qwJItOm1ixIiumjbBz21PL/gLUIDwoktyAx2dB7dPwjH9AQvzZPE629ee7fVU5K2hpzg== } peerDependencies: '@casl/ability': ^5.3.0 || ^6.0.0 '@prisma/client': ^2.14.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -2356,25 +2343,17 @@ packages: resolution: { integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw== } - '@emnapi/core@1.10.0': - resolution: - { integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== } - - '@emnapi/core@1.9.2': - resolution: - { integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA== } - - '@emnapi/runtime@1.10.0': + '@emnapi/core@1.8.1': resolution: - { integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== } + { integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== } - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.8.1': resolution: - { integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw== } + { integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== } - '@emnapi/wasi-threads@1.2.1': + '@emnapi/wasi-threads@1.1.0': resolution: - { integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== } + { integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== } '@es-joy/jsdoccomment@0.50.2': resolution: @@ -2402,9 +2381,9 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.7': + '@esbuild/aix-ppc64@0.27.3': resolution: - { integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg== } + { integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg== } engines: { node: '>=18' } cpu: [ppc64] os: [aix] @@ -2430,9 +2409,9 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.7': + '@esbuild/android-arm64@0.27.3': resolution: - { integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ== } + { integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg== } engines: { node: '>=18' } cpu: [arm64] os: [android] @@ -2458,9 +2437,9 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.7': + '@esbuild/android-arm@0.27.3': resolution: - { integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ== } + { integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA== } engines: { node: '>=18' } cpu: [arm] os: [android] @@ -2486,9 +2465,9 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.7': + '@esbuild/android-x64@0.27.3': resolution: - { integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg== } + { integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ== } engines: { node: '>=18' } cpu: [x64] os: [android] @@ -2514,9 +2493,9 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.7': + '@esbuild/darwin-arm64@0.27.3': resolution: - { integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw== } + { integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg== } engines: { node: '>=18' } cpu: [arm64] os: [darwin] @@ -2542,9 +2521,9 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.7': + '@esbuild/darwin-x64@0.27.3': resolution: - { integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ== } + { integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg== } engines: { node: '>=18' } cpu: [x64] os: [darwin] @@ -2570,9 +2549,9 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.7': + '@esbuild/freebsd-arm64@0.27.3': resolution: - { integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w== } + { integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w== } engines: { node: '>=18' } cpu: [arm64] os: [freebsd] @@ -2598,9 +2577,9 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.7': + '@esbuild/freebsd-x64@0.27.3': resolution: - { integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ== } + { integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA== } engines: { node: '>=18' } cpu: [x64] os: [freebsd] @@ -2626,9 +2605,9 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.7': + '@esbuild/linux-arm64@0.27.3': resolution: - { integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A== } + { integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg== } engines: { node: '>=18' } cpu: [arm64] os: [linux] @@ -2654,9 +2633,9 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.7': + '@esbuild/linux-arm@0.27.3': resolution: - { integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA== } + { integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw== } engines: { node: '>=18' } cpu: [arm] os: [linux] @@ -2682,9 +2661,9 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.7': + '@esbuild/linux-ia32@0.27.3': resolution: - { integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg== } + { integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg== } engines: { node: '>=18' } cpu: [ia32] os: [linux] @@ -2710,9 +2689,9 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.7': + '@esbuild/linux-loong64@0.27.3': resolution: - { integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q== } + { integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA== } engines: { node: '>=18' } cpu: [loong64] os: [linux] @@ -2738,9 +2717,9 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.7': + '@esbuild/linux-mips64el@0.27.3': resolution: - { integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw== } + { integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw== } engines: { node: '>=18' } cpu: [mips64el] os: [linux] @@ -2766,9 +2745,9 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.7': + '@esbuild/linux-ppc64@0.27.3': resolution: - { integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ== } + { integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA== } engines: { node: '>=18' } cpu: [ppc64] os: [linux] @@ -2794,9 +2773,9 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.7': + '@esbuild/linux-riscv64@0.27.3': resolution: - { integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ== } + { integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ== } engines: { node: '>=18' } cpu: [riscv64] os: [linux] @@ -2822,9 +2801,9 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.7': + '@esbuild/linux-s390x@0.27.3': resolution: - { integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw== } + { integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw== } engines: { node: '>=18' } cpu: [s390x] os: [linux] @@ -2850,9 +2829,9 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.7': + '@esbuild/linux-x64@0.27.3': resolution: - { integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA== } + { integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA== } engines: { node: '>=18' } cpu: [x64] os: [linux] @@ -2864,9 +2843,9 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.7': + '@esbuild/netbsd-arm64@0.27.3': resolution: - { integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w== } + { integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA== } engines: { node: '>=18' } cpu: [arm64] os: [netbsd] @@ -2892,9 +2871,9 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.7': + '@esbuild/netbsd-x64@0.27.3': resolution: - { integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw== } + { integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA== } engines: { node: '>=18' } cpu: [x64] os: [netbsd] @@ -2913,9 +2892,9 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.7': + '@esbuild/openbsd-arm64@0.27.3': resolution: - { integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A== } + { integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw== } engines: { node: '>=18' } cpu: [arm64] os: [openbsd] @@ -2941,9 +2920,9 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.7': + '@esbuild/openbsd-x64@0.27.3': resolution: - { integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg== } + { integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ== } engines: { node: '>=18' } cpu: [x64] os: [openbsd] @@ -2955,9 +2934,9 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.7': + '@esbuild/openharmony-arm64@0.27.3': resolution: - { integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw== } + { integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g== } engines: { node: '>=18' } cpu: [arm64] os: [openharmony] @@ -2983,9 +2962,9 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.7': + '@esbuild/sunos-x64@0.27.3': resolution: - { integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA== } + { integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA== } engines: { node: '>=18' } cpu: [x64] os: [sunos] @@ -3011,9 +2990,9 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.7': + '@esbuild/win32-arm64@0.27.3': resolution: - { integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA== } + { integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA== } engines: { node: '>=18' } cpu: [arm64] os: [win32] @@ -3039,9 +3018,9 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.7': + '@esbuild/win32-ia32@0.27.3': resolution: - { integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw== } + { integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q== } engines: { node: '>=18' } cpu: [ia32] os: [win32] @@ -3067,9 +3046,9 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.7': + '@esbuild/win32-x64@0.27.3': resolution: - { integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg== } + { integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA== } engines: { node: '>=18' } cpu: [x64] os: [win32] @@ -3106,9 +3085,9 @@ packages: { integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.3': resolution: - { integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== } + { integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@eslint/js@9.23.0': @@ -3116,9 +3095,9 @@ packages: { integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@eslint/js@9.39.4': + '@eslint/js@9.39.3': resolution: - { integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw== } + { integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@eslint/object-schema@2.1.7': @@ -3131,21 +3110,21 @@ packages: { integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@expressive-code/core@0.41.7': + '@expressive-code/core@0.41.6': resolution: - { integrity: sha512-ck92uZYZ9Wba2zxkiZLsZGi9N54pMSAVdrI9uW3Oo9AtLglD5RmrdTwbYPCT2S/jC36JGB2i+pnQtBm/Ib2+dg== } + { integrity: sha512-FvJQP+hG0jWi/FLBSmvHInDqWR7jNANp9PUDjdMqSshHb0y7sxx3vHuoOr6SgXjWw+MGLqorZyPQ0aAlHEok6g== } - '@expressive-code/plugin-frames@0.41.7': + '@expressive-code/plugin-frames@0.41.6': resolution: - { integrity: sha512-diKtxjQw/979cTglRFaMCY/sR6hWF0kSMg8jsKLXaZBSfGS0I/Hoe7Qds3vVEgeoW+GHHQzMcwvgx/MOIXhrTA== } + { integrity: sha512-d+hkSYXIQot6fmYnOmWAM+7TNWRv/dhfjMsNq+mIZz8Tb4mPHOcgcfZeEM5dV9TDL0ioQNvtcqQNuzA1sRPjxg== } - '@expressive-code/plugin-shiki@0.41.7': + '@expressive-code/plugin-shiki@0.41.6': resolution: - { integrity: sha512-DL605bLrUOgqTdZ0Ot5MlTaWzppRkzzqzeGEu7ODnHF39IkEBbFdsC7pbl3LbUQ1DFtnfx6rD54k/cdofbW6KQ== } + { integrity: sha512-Y6zmKBmsIUtWTzdefqlzm/h9Zz0Rc4gNdt2GTIH7fhHH2I9+lDYCa27BDwuBhjqcos6uK81Aca9dLUC4wzN+ng== } - '@expressive-code/plugin-text-markers@0.41.7': + '@expressive-code/plugin-text-markers@0.41.6': resolution: - { integrity: sha512-Ewpwuc5t6eFdZmWlFyeuy3e1PTQC0jFvw2Q+2bpcWXbOZhPLsT7+h8lsSIJxb5mS7wZko7cKyQ2RLYDyK6Fpmw== } + { integrity: sha512-PBFa1wGyYzRExMDzBmAWC6/kdfG1oLn4pLpBeTfIRrALPjcGA/59HP3e7q9J0Smk4pC7U+lWkA2LHR8FYV8U7Q== } '@faker-js/faker@9.9.0': resolution: @@ -3184,14 +3163,29 @@ packages: resolution: { integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw== } + '@floating-ui/core@1.7.4': + resolution: + { integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg== } + '@floating-ui/core@1.7.5': resolution: { integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ== } + '@floating-ui/dom@1.7.5': + resolution: + { integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg== } + '@floating-ui/dom@1.7.6': resolution: { integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ== } + '@floating-ui/react-dom@2.1.7': + resolution: + { integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg== } + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/react-dom@2.1.8': resolution: { integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A== } @@ -3199,6 +3193,10 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/utils@0.2.10': + resolution: + { integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== } + '@floating-ui/utils@0.2.11': resolution: { integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== } @@ -3227,19 +3225,14 @@ packages: { integrity: sha512-pFxWl1nNJeQCSUFs7+GAblHvXBCjn9EPN65vdKlYQil2aURaRxfGMO6vBKGqm1YHTKwiAxJQNEI70PbSowMP9Q== } engines: { node: '>=16.0.0' } - '@humanfs/core@0.19.2': - resolution: - { integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA== } - engines: { node: '>=18.18.0' } - - '@humanfs/node@0.16.8': + '@humanfs/core@0.19.1': resolution: - { integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ== } + { integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== } engines: { node: '>=18.18.0' } - '@humanfs/types@0.15.0': + '@humanfs/node@0.16.7': resolution: - { integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q== } + { integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== } engines: { node: '>=18.18.0' } '@humanwhocodes/module-importer@1.0.1': @@ -3252,9 +3245,9 @@ packages: { integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== } engines: { node: '>=18.18' } - '@img/colour@1.1.0': + '@img/colour@1.0.0': resolution: - { integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ== } + { integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw== } engines: { node: '>=18' } '@img/sharp-darwin-arm64@0.33.5': @@ -3727,18 +3720,18 @@ packages: peerDependencies: react: '>=16' - '@microsoft/api-extractor-model@7.33.8': + '@microsoft/api-extractor-model@7.33.1': resolution: - { integrity: sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w== } + { integrity: sha512-KX0LI6xzI0gcBOXXmr5mnnbdhsK2W93pqvJo8OgJgWvRRh+wMEp0Ccj38h1XKeJ29E1tuAZKSUOfHUQ1WA8fZg== } - '@microsoft/api-extractor@7.58.7': + '@microsoft/api-extractor@7.57.2': resolution: - { integrity: sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw== } + { integrity: sha512-Dih58xLlG+M6k2qVSksk9xJx8HvmJEyK3LcHrcqXE7eK/U7pg/8cTT8j1TKijU4P4639wvCy1zhDuvtjRy+02Q== } hasBin: true - '@microsoft/tsdoc-config@0.18.1': + '@microsoft/tsdoc-config@0.18.0': resolution: - { integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg== } + { integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw== } '@microsoft/tsdoc@0.16.0': resolution: @@ -3756,43 +3749,43 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mongodb-js/saslprep@1.4.11': + '@mongodb-js/saslprep@1.4.6': resolution: - { integrity: sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA== } + { integrity: sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g== } - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: - { integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ== } + { integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== } cpu: [arm64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': resolution: - { integrity: sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w== } + { integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== } cpu: [x64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': resolution: - { integrity: sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw== } + { integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== } cpu: [arm64] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': resolution: - { integrity: sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw== } + { integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== } cpu: [arm] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': resolution: - { integrity: sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ== } + { integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== } cpu: [x64] os: [linux] - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': resolution: - { integrity: sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ== } + { integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== } cpu: [x64] os: [win32] @@ -3927,12 +3920,9 @@ packages: { integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw== } engines: { node: '>= 10' } - '@napi-rs/wasm-runtime@1.1.4': + '@napi-rs/wasm-runtime@1.1.1': resolution: - { integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== } - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + { integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A== } '@nestjs/axios@4.0.1': resolution: @@ -3942,9 +3932,9 @@ packages: axios: ^1.3.1 rxjs: ^7.0.0 - '@nestjs/common@11.1.24': + '@nestjs/common@11.1.14': resolution: - { integrity: sha512-9zHxaDDM+oXW9As6UsP5yYB+UqczBmpeSCIFWdPEtEukMnZhxODG1BBjaUcdBB8Sc1uzojSJSJlp3yFp853t1g== } + { integrity: sha512-IN/tlqd7Nl9gl6f0jsWEuOrQDaCI9vHzxv0fisHysfBQzfQIkqlv5A7w4Qge02BUQyczXT9HHPgHtWHCxhjRng== } peerDependencies: class-transformer: '>=0.4.1' class-validator: '>=0.13.2' @@ -3956,9 +3946,9 @@ packages: class-validator: optional: true - '@nestjs/core@11.1.24': + '@nestjs/core@11.1.14': resolution: - { integrity: sha512-K4bzT+lEdd0Hhcsw3jtk56QAW6s6skK3ViN7hIROSN0kUf4ROwWEAKopJID6yhPQxB45kDtP2wEcjzE8171J3g== } + { integrity: sha512-7OXPPMoDr6z+5NkoQKu4hOhfjz/YYqM3bNilPqv1WVFWrzSmuNXxvhbX69YMmNmRYascPXiwESqf5jJdjKXEww== } engines: { node: '>= 20' } peerDependencies: '@nestjs/common': ^11.0.0 @@ -3981,13 +3971,13 @@ packages: peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - '@nestjs/mapped-types@2.1.1': + '@nestjs/mapped-types@2.1.0': resolution: - { integrity: sha512-SCCoMEJ6jdeI5h/N+KCVF1+pmg/hmEkNA5nHTS8Gvww7T/LCl4o1gFLinw2iQ60w7slFkszHcGLKGdazVI4F8A== } + { integrity: sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw== } peerDependencies: '@nestjs/common': ^10.0.0 || ^11.0.0 class-transformer: ^0.4.0 || ^0.5.0 - class-validator: ^0.13.0 || ^0.14.0 || ^0.15.0 + class-validator: ^0.13.0 || ^0.14.0 reflect-metadata: ^0.1.12 || ^0.2.0 peerDependenciesMeta: class-transformer: @@ -4002,16 +3992,16 @@ packages: '@nestjs/common': ^10.0.0 || ^11.0.0 passport: ^0.5.0 || ^0.6.0 || ^0.7.0 - '@nestjs/platform-express@11.1.24': + '@nestjs/platform-express@11.1.14': resolution: - { integrity: sha512-CeMKbRBm05aOBiWhIHWO2xDeHbxynBF9ySQv3gRjObz2N5+uJnYriAYkHvVqvC4JIydmMPmT5VdICFNlNz3qyA== } + { integrity: sha512-Fs+/j+mBSBSXErOQJ/YdUn/HqJGSJ4pGfiJyYOyz04l42uNVnqEakvu1kXLbxMabR6vd6/h9d6Bi4tso9p7o4Q== } peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 - '@nestjs/platform-fastify@11.1.24': + '@nestjs/platform-fastify@11.1.14': resolution: - { integrity: sha512-AJAVZZKCLQcDkQipD+NfrmV69DoQRNnrE+EB0VBS7FEZRjsnNmkmZFDFnhl/JWgzm6rjxsI3Qdaj/0+VlgbfSg== } + { integrity: sha512-/hnKvPpeH+CTWus7L+F+qXkdbTRXudSQU3Z8tcs5kfvluoBLsxSDTTvjjySr7zrPs5bebaFbGIyG2fKMAWl++g== } peerDependencies: '@fastify/static': ^8.0.0 || ^9.0.0 '@fastify/view': ^10.0.0 || ^11.0.0 @@ -4023,9 +4013,9 @@ packages: '@fastify/view': optional: true - '@nestjs/swagger@11.4.4': + '@nestjs/swagger@11.2.6': resolution: - { integrity: sha512-VaIo1ruV2G7b+f2zPzkBSUNy9a/WQ9sg8TLKhWlrTfg4O6U10M/PA7Xi6XMXadOVhwOqoesijba8jH3i/3adrA== } + { integrity: sha512-oiXOxMQqDFyv1AKAqFzSo6JPvMEs4uA36Eyz/s2aloZLxUjcLfUMELSLSNQunr61xCPTpwEOShfmO7NIufKXdA== } peerDependencies: '@fastify/static': ^8.0.0 || ^9.0.0 '@nestjs/common': ^11.0.1 @@ -4041,9 +4031,9 @@ packages: class-validator: optional: true - '@nestjs/testing@11.1.24': + '@nestjs/testing@11.1.14': resolution: - { integrity: sha512-+4M4UAnhtprBQN0J2uI6IP0wDqhy9aH8XCMu5SO8oCi0oB04YXA4a4PAEkxmsPn7gHW4dj1u4GFteNQOWgvTJw== } + { integrity: sha512-cQxX0ronsTbpfHz8/LYOVWXxoTxv6VoxrnuZoQaVX7QV2PSMqxWE7/9jSQR0GcqAFUEmFP34c6EJqfkjfX/k4Q== } peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 @@ -4107,322 +4097,171 @@ packages: resolution: { integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ== } - '@oxc-parser/binding-android-arm-eabi@0.127.0': + '@oxc-resolver/binding-android-arm-eabi@11.17.1': resolution: - { integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ== } cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.127.0': + '@oxc-resolver/binding-android-arm64@11.17.1': resolution: - { integrity: sha512-b5jtVTH6AU5CJXHNdj7Jj9IEiR9yVjjnwHzPJhGyHGPdcsZSzBCkS9GBbV33niRMvKthDwQRFRJfI4a+k4PvYg== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q== } cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.127.0': + '@oxc-resolver/binding-darwin-arm64@11.17.1': resolution: - { integrity: sha512-obCE8B7ISKkJidjlhv9xRGJPOSDG2Yu6PRga9Ruaz35uintHxbp1Ki/Yc71wx4rj3Edrm0a1kzG1TAwit0wFpg== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg== } cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.127.0': + '@oxc-resolver/binding-darwin-x64@11.17.1': resolution: - { integrity: sha512-JL6Xb5IwPQT8rUzlpsX7E+AgfcdNklXNPFp8pjCQQ5MQOQo5rtEB2ui+3Hgg9Sn7Y9Egj6YOLLiHhLpdAe12Aw== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg== } cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.127.0': + '@oxc-resolver/binding-freebsd-x64@11.17.1': resolution: - { integrity: sha512-SDQ/3MQFw58fqQz3Z1PhSKFF3JoCF4gmlNjziDm8X02tTahCw0qJbd7FGPDKw1i4VTBZene9JPyC3mHtSvi+wA== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg== } cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.17.1': resolution: - { integrity: sha512-Av+D1MIqzV0YMGPT9we2SIZaMKD7Cxs4CvXSx/yxaWHewZjYEjScpOf5igc8IILASViw4WTnjlwUdI1KzVtDHQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA== } cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.17.1': resolution: - { integrity: sha512-Cs2fdJ8cPpFdeebj6p4dag8A4+56hPvZ0AhQQzlaLswGz1tz7bXt1nETLeorrM9+AMcWFFkqxcXwDGfTVidY8g== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ== } cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.17.1': resolution: - { integrity: sha512-qdOfTcT6SY8gsJrrV92uyEUyjqMGPpIB5JZUG6QN5dukYd+7/j0kX6MwK1DgQj39jtUYixxPiaRUiEN1+0CXgQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ== } cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.127.0': + '@oxc-resolver/binding-linux-arm64-musl@11.17.1': resolution: - { integrity: sha512-EoTCZneNFU/P2qrpEM+RHmQwt+CvDkyGESG6qhr7KaegXLZwePfbrkCDfAk8/rhxbDUVGsZILX+2tqPzFtoFWA== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q== } cpu: [arm64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.17.1': resolution: - { integrity: sha512-zALjmZYgxFLHjXeudcDF0xFGNydTAtkAeXAr2EuC17ywCyFxcmQra4w0BMde0Yi/re4Bi4iwEoEXtYN7l6eBLQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA== } cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.17.1': resolution: - { integrity: sha512-fPP8M6zQLS7Jz7o9d5ArUSuAuSK3e+WCYVrCpdzeCOejidtZExJ9tjhDrAd3HEPqARBCPmdpqxESPFqy44vkBQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw== } cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.17.1': resolution: - { integrity: sha512-7IcC4Ao02oGpfnjt+X/oF4U2mllo2qoSkw5xxiXNKL9MCTsTiAC6616beOuehdxGcnz1bRoPC1RQ2f1GQDdN+g== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ== } cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.17.1': resolution: - { integrity: sha512-pbXIhiNFHoqWeqDNLiJ9JkpHz1IM9k4DXa66x+1GTWMG7iLxtkXgE53iiuKSXwmk3zIYmaPVfBvgcAhS583K4Q== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ== } cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.127.0': + '@oxc-resolver/binding-linux-x64-gnu@11.17.1': resolution: - { integrity: sha512-MYCguB9RvBvlSd6gbuNI7QwiLoCCAlGnlRJFPrzLI6U1/9wkC/WK6LtBAUln55H1Ctqw45PWmqrobKoMhsYQzQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA== } cpu: [x64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.127.0': + '@oxc-resolver/binding-linux-x64-musl@11.17.1': resolution: - { integrity: sha512-5eY0B/bxf1xIUxb4NOTvOI3KWtBQfPWYyKAzgcrCt0mDibSZygVpO1Pz8bkeiSZ5Jj9+M09dkggG3H8I5d0Uyg== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ== } cpu: [x64] os: [linux] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.127.0': + '@oxc-resolver/binding-openharmony-arm64@11.17.1': resolution: - { integrity: sha512-Gld0ajrFTUXNtdw20fVBuTQx66FA75nIVg+//pPfR3sXkuABB4mTBhl3r9JNzrJpgW//qiwxf0nWXUWGJSL3UQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg== } cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.127.0': + '@oxc-resolver/binding-wasm32-wasi@11.17.1': resolution: - { integrity: sha512-T6KVD7rhLzFlwGRXMnxUFfkCZD8FHnb968wVXW1mXzgRFc5RNXOBY2mPPDZ77x5Ln76ltLMgtPg0cOkU1NSrEQ== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg== } + engines: { node: '>=14.0.0' } cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.127.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.17.1': resolution: - { integrity: sha512-Ujvw4X+LD1CCGULcsQcvb4YNVoBGqt+JHgNNzGGaCImELiZLk477ifUH53gIbE7EKd933NdTi25JWEr9K2HwXw== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg== } cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.127.0': + '@oxc-resolver/binding-win32-ia32-msvc@11.17.1': resolution: - { integrity: sha512-0cwxKO7KHQQQfo4Uf4B2SQrhgm+cJaP9OvFFhx52Tkg4bezsacu83GB2/In5bC415Ueeym+kXdnge/57rbSfTw== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ== } cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.127.0': + '@oxc-resolver/binding-win32-x64-msvc@11.17.1': resolution: - { integrity: sha512-rOrnSQSCbhI2kowr9XxE7m9a8oQXnBHjnS6j95LxxAnEZ0+Fz20WlRXG4ondQb+ejjt2KOsa65sE6++L6kUd+w== } - engines: { node: ^20.19.0 || >=22.12.0 } + { integrity: sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ== } cpu: [x64] os: [win32] - '@oxc-project/types@0.127.0': + '@pagefind/darwin-arm64@1.4.0': resolution: - { integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ== } - - '@oxc-resolver/binding-android-arm-eabi@11.20.0': - resolution: - { integrity: sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg== } - cpu: [arm] - os: [android] - - '@oxc-resolver/binding-android-arm64@11.20.0': - resolution: - { integrity: sha512-QqslZAuFQG8Q9xm7JuIn8JUbvywhSBMVhuQHtYW+auirZJloS41oxUUaBXk7uUhZJgp44c5zQLeVvmFaDQB+2Q== } - cpu: [arm64] - os: [android] - - '@oxc-resolver/binding-darwin-arm64@11.20.0': - resolution: - { integrity: sha512-MUcavykj2ewlR+kc5arpg4tC2RvzJkUxWtNv74pf7lcNk00GpIpN43vXMj+j6r4eMmfZhlb8hueKoIb8e9kAGQ== } + { integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ== } cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.20.0': + '@pagefind/darwin-x64@1.4.0': resolution: - { integrity: sha512-BGB16nRUK5Etiv//ihPyzj8Lj1px0mhh4YIfe0FDf045ywknfSm0GEbiRESpr6Q4K82AvnyaRIhhluHByvS4bg== } + { integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A== } cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.20.0': - resolution: - { integrity: sha512-JZgtePaqj3qmD5XFHJaSLWzHRxQu0LaPkdoM1KJXYADvAaa83ijXHclV3ej3CueeW0wxfIAbGCZVP45J0CA7uQ== } - cpu: [x64] - os: [freebsd] - - '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': - resolution: - { integrity: sha512-hOQ/p3ry3v3SchUBXicrrnszaI/UmYzM4wtS4RGfwgVUX7a+HbyQSzJ5aOzu+o6XZkFkS3ZXN4PZAzhOb77OSg== } - cpu: [arm] - os: [linux] - - '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': - resolution: - { integrity: sha512-2ArPksaw0AqeuGBfoS715VF+JvJQAhD2niWgjE5hVO+L+nAfikVQopvngCMX9x4BD8itWoQ3dnikrQyl5Ho5Jg== } - cpu: [arm] - os: [linux] - - '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': - resolution: - { integrity: sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg== } - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-arm64-musl@11.20.0': - resolution: - { integrity: sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw== } - cpu: [arm64] - os: [linux] - libc: [musl] - - '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': - resolution: - { integrity: sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ== } - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': - resolution: - { integrity: sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw== } - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': + '@pagefind/default-ui@1.4.0': resolution: - { integrity: sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg== } - cpu: [riscv64] - os: [linux] - libc: [musl] + { integrity: sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ== } - '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': + '@pagefind/freebsd-x64@1.4.0': resolution: - { integrity: sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g== } - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-x64-gnu@11.20.0': - resolution: - { integrity: sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g== } - cpu: [x64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-x64-musl@11.20.0': - resolution: - { integrity: sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ== } - cpu: [x64] - os: [linux] - libc: [musl] - - '@oxc-resolver/binding-openharmony-arm64@11.20.0': - resolution: - { integrity: sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ== } - cpu: [arm64] - os: [openharmony] - - '@oxc-resolver/binding-wasm32-wasi@11.20.0': - resolution: - { integrity: sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg== } - engines: { node: '>=14.0.0' } - cpu: [wasm32] - - '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': - resolution: - { integrity: sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA== } - cpu: [arm64] - os: [win32] - - '@oxc-resolver/binding-win32-x64-msvc@11.20.0': - resolution: - { integrity: sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw== } - cpu: [x64] - os: [win32] - - '@pagefind/darwin-arm64@1.5.2': - resolution: - { integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ== } - cpu: [arm64] - os: [darwin] - - '@pagefind/darwin-x64@1.5.2': - resolution: - { integrity: sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw== } - cpu: [x64] - os: [darwin] - - '@pagefind/default-ui@1.5.2': - resolution: - { integrity: sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg== } - - '@pagefind/freebsd-x64@1.5.2': - resolution: - { integrity: sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA== } + { integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q== } cpu: [x64] os: [freebsd] - '@pagefind/linux-arm64@1.5.2': + '@pagefind/linux-arm64@1.4.0': resolution: - { integrity: sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw== } + { integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw== } cpu: [arm64] os: [linux] - '@pagefind/linux-x64@1.5.2': + '@pagefind/linux-x64@1.4.0': resolution: - { integrity: sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA== } + { integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg== } cpu: [x64] os: [linux] - '@pagefind/windows-arm64@1.5.2': + '@pagefind/windows-x64@1.4.0': resolution: - { integrity: sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g== } - cpu: [arm64] - os: [win32] - - '@pagefind/windows-x64@1.5.2': - resolution: - { integrity: sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg== } + { integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g== } cpu: [x64] os: [win32] @@ -4434,10 +4273,10 @@ packages: resolution: { integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg== } - '@pkgr/core@0.3.6': + '@pkgr/core@0.2.9': resolution: - { integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA== } - engines: { node: ^14.18.0 || >=16.0.0 } + { integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } '@playwright/test@1.60.0': resolution: @@ -4449,9 +4288,9 @@ packages: resolution: { integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== } - '@prisma/client@6.19.3': + '@prisma/client@6.19.2': resolution: - { integrity: sha512-mKq3jQFhjvko5LTJFHGilsuQs+W+T3Gm451NzuTDGQxwCzwXHYnIu2zGkRoW+Exq3Rob7yp2MfzSrdIiZVhrBg== } + { integrity: sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg== } engines: { node: '>=18.18' } peerDependencies: prisma: '*' @@ -4462,49 +4301,49 @@ packages: typescript: optional: true - '@prisma/config@6.19.3': + '@prisma/config@6.19.2': resolution: - { integrity: sha512-CBPT44BjlQxEt8kiMEauji2WHTDoVBOKl7UlewXmUgBPnr/oPRZC3psci5chJnYmH0ivEIog2OU9PGWoki3DLQ== } + { integrity: sha512-kadBGDl+aUswv/zZMk9Mx0C8UZs1kjao8H9/JpI4Wh4SHZaM7zkTwiKn/iFLfRg+XtOAo/Z/c6pAYhijKl0nzQ== } '@prisma/debug@5.22.0': resolution: { integrity: sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ== } - '@prisma/debug@6.19.3': + '@prisma/debug@6.19.2': resolution: - { integrity: sha512-ljkJ+SgpXNktLG0Q/n4JGYCkKf0f8oYLyjImS2I8e2q2WCfdRRtWER062ZV/ixaNP2M2VKlWXVJiGzZaUgbKZw== } + { integrity: sha512-lFnEZsLdFLmEVCVNdskLDCL8Uup41GDfU0LUfquw+ercJC8ODTuL0WNKgOKmYxCJVvFwf0OuZBzW99DuWmoH2A== } - '@prisma/dmmf@6.19.3': + '@prisma/dmmf@6.19.2': resolution: - { integrity: sha512-+D6v7RIF21bJrZAXiiIdW0qR73TleYVCqTDozokdEHdGeqN997O7jJW5z+43s5CVwWTZJIwFGpoeXxDDyXDVxA== } + { integrity: sha512-ZHGDQlnrWKwFPAOvJ8hVbmIqNPdE0XXptTeYqmUGhYMDySSts60O8g3KNY1uAqr3nHiyDcpaGIpO1MBYoDW6gQ== } '@prisma/engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7': resolution: { integrity: sha512-03bgb1VD5gvuumNf+7fVGBzfpJPjmqV423l/WxsWk2cNQ42JD0/SsFBPhN6z8iAvdHs07/7ei77SKu7aZfq8bA== } - '@prisma/engines@6.19.3': + '@prisma/engines@6.19.2': resolution: - { integrity: sha512-RSYxtlYFl5pJ8ZePgMv0lZ9IzVCOdTPOegrs2qcbAEFrBI1G33h6wyC9kjQvo0DnYEhEVY0X4LsuFHXLKQk88g== } + { integrity: sha512-TTkJ8r+uk/uqczX40wb+ODG0E0icVsMgwCTyTHXehaEfb0uo80M9g1aW1tEJrxmFHeOZFXdI2sTA1j1AgcHi4A== } - '@prisma/fetch-engine@6.19.3': + '@prisma/fetch-engine@6.19.2': resolution: - { integrity: sha512-tKtl/qco9Nt7LU5iKhpultD8O4vMCZcU2CHjNTnRrL1QvSUr5W/GcyFPjNL87GtRrwBc7ubXXD9xy4EvLvt8JA== } + { integrity: sha512-h4Ff4Pho+SR1S8XerMCC12X//oY2bG3Iug/fUnudfcXEUnIeRiBdXHFdGlGOgQ3HqKgosTEhkZMvGM9tWtYC+Q== } - '@prisma/generator-helper@6.19.3': + '@prisma/generator-helper@6.19.2': resolution: - { integrity: sha512-13S8ngSWVKcyuRFqaK/JGMyovjQC5sOKJ9A+ufqePQWeIUbvKO2QY2CmhcV4JAa2vuN22//4Sip5mORVKwS0sw== } + { integrity: sha512-vSjDbHhtKjRDgywTDYyAJLEe+kMxq4DNLNiurk/tGca8W/H7duX4Z4UdvYXcv3kWmmgJJmdndh41dgIsrewa3w== } - '@prisma/generator@6.19.3': + '@prisma/generator@6.19.2': resolution: - { integrity: sha512-rzHJaIZEnEDUWNjjFAimsyMCS9osPxwbwiAbymwFprSHJSAglMxMDVU+xbQUCLeDsjUF09W5ag/aBPL2t3YqgA== } + { integrity: sha512-2xDQQUJh2s6Ty9I9CIGRz7Z8pEGxKxjU/lkFyLI5f83fDoISUaGhWQZGW35xMqKVDoNRM93w1ghm+1ScRy0mAA== } '@prisma/get-platform@5.22.0': resolution: { integrity: sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q== } - '@prisma/get-platform@6.19.3': + '@prisma/get-platform@6.19.2': resolution: - { integrity: sha512-xFj1VcJ1N3MKooOQAGO0W5tsd0W2QzIvW7DD7c/8H14Zmp4jseeWAITm+w2LLoLrlhoHdPPh0NMZ8mfL6puoHA== } + { integrity: sha512-PGLr06JUSTqIvztJtAzIxOwtWKtJm5WwOG6xpsgD37Rc84FpfUBGLKz65YpJBGtkRQGXTYEFie7pYALocC3MtA== } '@radix-ui/number@1.1.1': resolution: @@ -5150,13 +4989,13 @@ packages: resolution: { integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== } - '@rolldown/pluginutils@1.0.1': + '@rolldown/pluginutils@1.0.0-rc.7': resolution: - { integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw== } + { integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA== } - '@rollup/pluginutils@5.4.0': + '@rollup/pluginutils@5.3.0': resolution: - { integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg== } + { integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== } engines: { node: '>=14.0.0' } peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -5164,166 +5003,166 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.61.1': + '@rollup/rollup-android-arm-eabi@4.58.0': resolution: - { integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA== } + { integrity: sha512-mr0tmS/4FoVk1cnaeN244A/wjvGDNItZKR8hRhnmCzygyRXYtKF5jVDSIILR1U97CTzAYmbgIj/Dukg62ggG5w== } cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.61.1': + '@rollup/rollup-android-arm64@4.58.0': resolution: - { integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw== } + { integrity: sha512-+s++dbp+/RTte62mQD9wLSbiMTV+xr/PeRJEc/sFZFSBRlHPNPVaf5FXlzAL77Mr8FtSfQqCN+I598M8U41ccQ== } cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.61.1': + '@rollup/rollup-darwin-arm64@4.58.0': resolution: - { integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA== } + { integrity: sha512-MFWBwTcYs0jZbINQBXHfSrpSQJq3IUOakcKPzfeSznONop14Pxuqa0Kg19GD0rNBMPQI2tFtu3UzapZpH0Uc1Q== } cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.61.1': + '@rollup/rollup-darwin-x64@4.58.0': resolution: - { integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ== } + { integrity: sha512-yiKJY7pj9c9JwzuKYLFaDZw5gma3fI9bkPEIyofvVfsPqjCWPglSHdpdwXpKGvDeYDms3Qal8qGMEHZ1M/4Udg== } cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.61.1': + '@rollup/rollup-freebsd-arm64@4.58.0': resolution: - { integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw== } + { integrity: sha512-x97kCoBh5MOevpn/CNK9W1x8BEzO238541BGWBc315uOlN0AD/ifZ1msg+ZQB05Ux+VF6EcYqpiagfLJ8U3LvQ== } cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.61.1': + '@rollup/rollup-freebsd-x64@4.58.0': resolution: - { integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw== } + { integrity: sha512-Aa8jPoZ6IQAG2eIrcXPpjRcMjROMFxCt1UYPZZtCxRV68WkuSigYtQ/7Zwrcr2IvtNJo7T2JfDXyMLxq5L4Jlg== } cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.61.1': + '@rollup/rollup-linux-arm-gnueabihf@4.58.0': resolution: - { integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA== } + { integrity: sha512-Ob8YgT5kD/lSIYW2Rcngs5kNB/44Q2RzBSPz9brf2WEtcGR7/f/E9HeHn1wYaAwKBni+bdXEwgHvUd0x12lQSA== } cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.61.1': + '@rollup/rollup-linux-arm-musleabihf@4.58.0': resolution: - { integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ== } + { integrity: sha512-K+RI5oP1ceqoadvNt1FecL17Qtw/n9BgRSzxif3rTL2QlIu88ccvY+Y9nnHe/cmT5zbH9+bpiJuG1mGHRVwF4Q== } cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.61.1': + '@rollup/rollup-linux-arm64-gnu@4.58.0': resolution: - { integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg== } + { integrity: sha512-T+17JAsCKUjmbopcKepJjHWHXSjeW7O5PL7lEFaeQmiVyw4kkc5/lyYKzrv6ElWRX/MrEWfPiJWqbTvfIvjM1Q== } cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.61.1': + '@rollup/rollup-linux-arm64-musl@4.58.0': resolution: - { integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w== } + { integrity: sha512-cCePktb9+6R9itIJdeCFF9txPU7pQeEHB5AbHu/MKsfH/k70ZtOeq1k4YAtBv9Z7mmKI5/wOLYjQ+B9QdxR6LA== } cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.61.1': + '@rollup/rollup-linux-loong64-gnu@4.58.0': resolution: - { integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ== } + { integrity: sha512-iekUaLkfliAsDl4/xSdoCJ1gnnIXvoNz85C8U8+ZxknM5pBStfZjeXgB8lXobDQvvPRCN8FPmmuTtH+z95HTmg== } cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.61.1': + '@rollup/rollup-linux-loong64-musl@4.58.0': resolution: - { integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ== } + { integrity: sha512-68ofRgJNl/jYJbxFjCKE7IwhbfxOl1muPN4KbIqAIe32lm22KmU7E8OPvyy68HTNkI2iV/c8y2kSPSm2mW/Q9Q== } cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.61.1': + '@rollup/rollup-linux-ppc64-gnu@4.58.0': resolution: - { integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g== } + { integrity: sha512-dpz8vT0i+JqUKuSNPCP5SYyIV2Lh0sNL1+FhM7eLC457d5B9/BC3kDPp5BBftMmTNsBarcPcoz5UGSsnCiw4XQ== } cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.61.1': + '@rollup/rollup-linux-ppc64-musl@4.58.0': resolution: - { integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw== } + { integrity: sha512-4gdkkf9UJ7tafnweBCR/mk4jf3Jfl0cKX9Np80t5i78kjIH0ZdezUv/JDI2VtruE5lunfACqftJ8dIMGN4oHew== } cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.61.1': + '@rollup/rollup-linux-riscv64-gnu@4.58.0': resolution: - { integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g== } + { integrity: sha512-YFS4vPnOkDTD/JriUeeZurFYoJhPf9GQQEF/v4lltp3mVcBmnsAdjEWhr2cjUCZzZNzxCG0HZOvJU44UGHSdzw== } cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.61.1': + '@rollup/rollup-linux-riscv64-musl@4.58.0': resolution: - { integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ== } + { integrity: sha512-x2xgZlFne+QVNKV8b4wwaCS8pwq3y14zedZ5DqLzjdRITvreBk//4Knbcvm7+lWmms9V9qFp60MtUd0/t/PXPw== } cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.61.1': + '@rollup/rollup-linux-s390x-gnu@4.58.0': resolution: - { integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g== } + { integrity: sha512-jIhrujyn4UnWF8S+DHSkAkDEO3hLX0cjzxJZPLF80xFyzyUIYgSMRcYQ3+uqEoyDD2beGq7Dj7edi8OnJcS/hg== } cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.61.1': + '@rollup/rollup-linux-x64-gnu@4.58.0': resolution: - { integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q== } + { integrity: sha512-+410Srdoh78MKSJxTQ+hZ/Mx+ajd6RjjPwBPNd0R3J9FtL6ZA0GqiiyNjCO9In0IzZkCNrpGymSfn+kgyPQocg== } cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.61.1': + '@rollup/rollup-linux-x64-musl@4.58.0': resolution: - { integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw== } + { integrity: sha512-ZjMyby5SICi227y1MTR3VYBpFTdZs823Rs/hpakufleBoufoOIB6jtm9FEoxn/cgO7l6PM2rCEl5Kre5vX0QrQ== } cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.61.1': + '@rollup/rollup-openbsd-x64@4.58.0': resolution: - { integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg== } + { integrity: sha512-ds4iwfYkSQ0k1nb8LTcyXw//ToHOnNTJtceySpL3fa7tc/AsE+UpUFphW126A6fKBGJD5dhRvg8zw1rvoGFxmw== } cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.61.1': + '@rollup/rollup-openharmony-arm64@4.58.0': resolution: - { integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA== } + { integrity: sha512-fd/zpJniln4ICdPkjWFhZYeY/bpnaN9pGa6ko+5WD38I0tTqk9lXMgXZg09MNdhpARngmxiCg0B0XUamNw/5BQ== } cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.61.1': + '@rollup/rollup-win32-arm64-msvc@4.58.0': resolution: - { integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g== } + { integrity: sha512-YpG8dUOip7DCz3nr/JUfPbIUo+2d/dy++5bFzgi4ugOGBIox+qMbbqt/JoORwvI/C9Kn2tz6+Bieoqd5+B1CjA== } cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.61.1': + '@rollup/rollup-win32-ia32-msvc@4.58.0': resolution: - { integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ== } + { integrity: sha512-b9DI8jpFQVh4hIXFr0/+N/TzLdpBIoPzjt0Rt4xJbW3mzguV3mduR9cNgiuFcuL/TeORejJhCWiAXe3E/6PxWA== } cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.61.1': + '@rollup/rollup-win32-x64-gnu@4.58.0': resolution: - { integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ== } + { integrity: sha512-CSrVpmoRJFN06LL9xhkitkwUcTZtIotYAF5p6XOR2zW0Zz5mzb3IPpcoPhB02frzMHFNo1reQ9xSF5fFm3hUsQ== } cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.61.1': + '@rollup/rollup-win32-x64-msvc@4.58.0': resolution: - { integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw== } + { integrity: sha512-QFsBgQNTnh5K0t/sBsjJLq24YVqEIVkGpfN2VHsnN90soZyhaiA9UUHufcctVNL4ypJY0wrwad0wslx2KJQ1/w== } cpu: [x64] os: [win32] @@ -5331,9 +5170,9 @@ packages: resolution: { integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== } - '@rushstack/node-core-library@5.23.1': + '@rushstack/node-core-library@5.20.1': resolution: - { integrity: sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA== } + { integrity: sha512-QvxZyh+RsTJ77JpQkS9K9lJujh6lj5WyMxieT0bdACtwqxEkGB9zCuSMX5UlXRweaIgSpu1ztdHmhV07fKUpMg== } peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -5349,58 +5188,58 @@ packages: '@types/node': optional: true - '@rushstack/rig-package@0.7.3': + '@rushstack/rig-package@0.7.1': resolution: - { integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA== } + { integrity: sha512-hLwDnp4yMcAd/gcUol8NPWNctpIXzVOgMyhZ8DagnEJls9TOZd0xF//5hS+YTiX7/+4rLfBra+NoB3rtFxjDdA== } - '@rushstack/terminal@0.24.0': + '@rushstack/terminal@0.22.1': resolution: - { integrity: sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ== } + { integrity: sha512-Mdtu0VN7v31O5Zcno8ZZH5kQHF13Ez7WN9Aio7nFJVcR36i4bkERionYrWgBDQJ0JdVPLKGecZER/xRU5IvGLw== } peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true - '@rushstack/ts-command-line@5.3.9': + '@rushstack/ts-command-line@5.3.1': resolution: - { integrity: sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ== } + { integrity: sha512-mid/JIZSJafwy3x9e4v0wVLuAqSSYYErEHV0HXPALYLSBN13YNkR5caOk0hf97lSRKrxhtvQjGaDKSEelR3sMg== } '@scarf/scarf@1.4.0': resolution: { integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ== } - '@shikijs/core@3.23.0': + '@shikijs/core@3.22.0': resolution: - { integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA== } + { integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA== } - '@shikijs/engine-javascript@3.23.0': + '@shikijs/engine-javascript@3.22.0': resolution: - { integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA== } + { integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw== } '@shikijs/engine-oniguruma@1.29.2': resolution: { integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA== } - '@shikijs/engine-oniguruma@3.23.0': + '@shikijs/engine-oniguruma@3.22.0': resolution: - { integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g== } + { integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA== } - '@shikijs/langs@3.23.0': + '@shikijs/langs@3.22.0': resolution: - { integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg== } + { integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA== } - '@shikijs/themes@3.23.0': + '@shikijs/themes@3.22.0': resolution: - { integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA== } + { integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g== } '@shikijs/types@1.29.2': resolution: { integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw== } - '@shikijs/types@3.23.0': + '@shikijs/types@3.22.0': resolution: - { integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ== } + { integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg== } '@shikijs/vscode-textmate@10.0.2': resolution: @@ -5460,36 +5299,32 @@ packages: resolution: { integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== } - '@storybook/addon-docs@10.4.2': + '@storybook/addon-docs@10.3.5': resolution: - { integrity: sha512-CtW1O4xSKZPNtpWgpfp4yB/x4pj/of+3MvlEDfErSlr3Hp3QmEa2pCLaecR08H5LJqJFlt1PtG0UrIynTvgW9w== } + { integrity: sha512-WuHbxia/o5TX4Rg/IFD0641K5qId/Nk0dxhmAUNoFs5L0+yfZUwh65XOBbzXqrkYmYmcVID4v7cgDRmzstQNkA== } peerDependencies: - '@types/react': '*' - storybook: ^10.4.2 - peerDependenciesMeta: - '@types/react': - optional: true + storybook: ^10.3.5 - '@storybook/addon-themes@10.4.2': + '@storybook/addon-themes@10.3.5': resolution: - { integrity: sha512-e5rP/RLujp06wmO75njxnfi3ndOBbgHIXceAsuN870BVh7D7iGx+8bwslIWy+FwRBYsCMCnWk+d25Zp4ai3p4w== } + { integrity: sha512-Mv+C7GuZ0MhGRx5C+rv8sCEjgYsDTLBvq68101V0s8Vwh3gKd6W9cbS31HoOeLAiIMiPPZ8C1iWudA3Oumdtlw== } peerDependencies: - storybook: ^10.4.2 + storybook: ^10.3.5 - '@storybook/builder-vite@10.4.2': + '@storybook/builder-vite@10.3.5': resolution: - { integrity: sha512-d3+i9vbbUfV6hvT90qabmy1WmC4bEJ7iAYDm0217doeA+S6awF25GF0qOy9gN9waU4NMntHoVpdB1YQO2wUj/w== } + { integrity: sha512-i4KwCOKbhtlbQIbhm53+Kk7bMnxa0cwTn1pxmtA/x5wm1Qu7FrrBQV0V0DNjkUqzcSKo1CjspASJV/HlY0zYlw== } peerDependencies: - storybook: ^10.4.2 + storybook: ^10.3.5 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@storybook/csf-plugin@10.4.2': + '@storybook/csf-plugin@10.3.5': resolution: - { integrity: sha512-GqX/2DeF3/jKs5D7gpDiuT9gd0c/f2TKcnQ5av4/s3YqeN+0nhm7btkCrDfgF16uzE1Zj3OrkxvB3AOkfxWgDg== } + { integrity: sha512-qlEzNKxOjq86pvrbuMwiGD/bylnsXk1dg7ve0j77YFjEEchqtl7qTlrXvFdNaLA89GhW6D/EV6eOCu/eobPDgw== } peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.4.2 + storybook: ^10.3.5 vite: '*' webpack: '*' peerDependenciesMeta: @@ -5506,52 +5341,39 @@ packages: resolution: { integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== } - '@storybook/icons@2.0.2': + '@storybook/icons@2.0.1': resolution: - { integrity: sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw== } + { integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg== } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@storybook/react-dom-shim@10.4.2': + '@storybook/react-dom-shim@10.3.5': resolution: - { integrity: sha512-Eng3Yt2NCjPX94QcfyLeUFhrMj0hec2yU9J/qafBVbfj9XrFI8o+0ZwYJ7uXb9ECbvPN4y06dgt/2W/LiR417w== } + { integrity: sha512-Gw8R7XZm0zSUH0XAuxlQJhmizsLzyD6x00KOlP6l7oW9eQHXGfxg3seNDG3WrSAcW07iP1/P422kuiriQlOv7g== } peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.4.2 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^10.3.5 - '@storybook/react-vite@10.4.2': + '@storybook/react-vite@10.3.5': resolution: - { integrity: sha512-nGrS74p0ujPSQ7qD5jKLLlao2igfTTb6Kf/uRhVV8XM0uM7WvxR9K20ddCM8jFmx1jY9fRm0UBGaeaXHDIh5SA== } + { integrity: sha512-UB5sJHeh26bfd8sNMx2YPGYRYmErIdTRaLOT28m4bykQIa1l9IgVktsYg/geW7KsJU0lXd3oTbnUjLD+enpi3w== } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.4.2 + storybook: ^10.3.5 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@storybook/react@10.4.2': + '@storybook/react@10.3.5': resolution: - { integrity: sha512-NfEH3CrdCAgUV4Z7SPN3Iw6nofcueqtRj8iHuo77GNjz0qSfuVi9iS7a8o7x7QFSeIBZwS0Jv3CgmhN8qvoLjg== } + { integrity: sha512-tpLTLaVGoA6fLK3ReyGzZUricq7lyPaV2hLPpj5wqdXLV/LpRtAHClUpNoPDYSBjlnSjL81hMZijbkGC3mA+gw== } peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.4.2 + storybook: ^10.3.5 typescript: 6.0.x peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true typescript: optional: true @@ -5586,99 +5408,83 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.15.40': + '@swc/core-darwin-arm64@1.15.11': resolution: - { integrity: sha512-PaYyclfmQ++77D8ityYvmmVzHv9aG8ROwt2GfG6/ccloy4Hgf80qtOnzb9VYvPsUT7Ty1uhuDRhv3XYpf62qhQ== } + { integrity: sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg== } engines: { node: '>=10' } cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.40': + '@swc/core-darwin-x64@1.15.11': resolution: - { integrity: sha512-HbbPzvfLBUXjIB1Ezks+//lNUjmLjfyd63XSwprJgrZaXYdm70kohXPJUWdqKZozolFxbPaO+xtBaiUp6BoueA== } + { integrity: sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA== } engines: { node: '>=10' } cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.40': + '@swc/core-linux-arm-gnueabihf@1.15.11': resolution: - { integrity: sha512-SlRZsCjOCPR2LvFs0Ri/Xrx/5o5TCt8vl4gW6mX1hEZOG0a625RxzRHpHdAQNGykmAN/7IeaFAJG+QnNmxlHcA== } + { integrity: sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg== } engines: { node: '>=10' } cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.40': + '@swc/core-linux-arm64-gnu@1.15.11': resolution: - { integrity: sha512-Q8byxJt2fh8CR3EUX6snBpy47AoBVm+In/+Z3rjDHMjC38ZvR9/gtUUNCT0tfrn4EdVsO8/QPi59nxrxvqxvBQ== } + { integrity: sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA== } engines: { node: '>=10' } cpu: [arm64] os: [linux] libc: [glibc] - '@swc/core-linux-arm64-musl@1.15.40': + '@swc/core-linux-arm64-musl@1.15.11': resolution: - { integrity: sha512-4z0MgHU+7M0pZDqBN1El7mFXDI1SBwinfcUkAyA4v8QrhOIUOZltySt2aStQLZGrdXVXM4Y4ylfiTC04ED+MoQ== } + { integrity: sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w== } engines: { node: '>=10' } cpu: [arm64] os: [linux] libc: [musl] - '@swc/core-linux-ppc64-gnu@1.15.40': + '@swc/core-linux-x64-gnu@1.15.11': resolution: - { integrity: sha512-fLI4iUgeSZu0eRWUXwe6YzPFx9gHbFiPkl8Rp3mJfP8OpNR3nTQCGPvHdDh9xniW7mVvgMY4ni7A4VzqI1KrpA== } - engines: { node: '>=10' } - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@swc/core-linux-s390x-gnu@1.15.40': - resolution: - { integrity: sha512-YqeKMAb7d4nQSGMJQ454IlaCENpzcDqhvBE9+CPfdnYpnUXxd+BSrB6Xk0YjW8UyoEhUj4p6quATCxbsp6J3jg== } - engines: { node: '>=10' } - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@swc/core-linux-x64-gnu@1.15.40': - resolution: - { integrity: sha512-7HOuS1iGcme/j/TuL1TfmmLGiMQrjv/GmjyZeydl00FKPtpGXEldwqfI56xgd1YzrzoB2svWjxbGGyQ0TEASxg== } + { integrity: sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ== } engines: { node: '>=10' } cpu: [x64] os: [linux] libc: [glibc] - '@swc/core-linux-x64-musl@1.15.40': + '@swc/core-linux-x64-musl@1.15.11': resolution: - { integrity: sha512-h4kZYHc7dpc9P9u4brRJaS8Pl7tPVHAeiLSzw7T5RfIJgAoSdaCMKzI/2Uay9gFhaw8uyCDl0L5q37r0EpAfIA== } + { integrity: sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw== } engines: { node: '>=10' } cpu: [x64] os: [linux] libc: [musl] - '@swc/core-win32-arm64-msvc@1.15.40': + '@swc/core-win32-arm64-msvc@1.15.11': resolution: - { integrity: sha512-+mQgKZXSj6mV38Zh05QaxSjUDmGP/R2JWlXZTDLSPkDzHU6p3GxN9eeSf5dfyDVU86946fmCvSzyl/ucImx8+A== } + { integrity: sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA== } engines: { node: '>=10' } cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.40': + '@swc/core-win32-ia32-msvc@1.15.11': resolution: - { integrity: sha512-yvwdPLGd25mcj/mNatjNQ0lZujtQD6psH3v9PNmMb+fSzjbNG8KIDxjFWrcV+fsFVLOkyOmdJsFmX7NAFjVyPw== } + { integrity: sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw== } engines: { node: '>=10' } cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.40': + '@swc/core-win32-x64-msvc@1.15.11': resolution: - { integrity: sha512-OXtKsLU1bVtInzzDEAY2sYiF/rl4tvAnLLLpuMp3HzAOQZ5A+i69AKDhA1YLQTaMAqO3vzyYNVAYVRMPtSYD4w== } + { integrity: sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw== } engines: { node: '>=10' } cpu: [x64] os: [win32] - '@swc/core@1.15.40': + '@swc/core@1.15.11': resolution: - { integrity: sha512-2kwzJikRvgtNAG7MwVZY2vEzZjTxKIq5jXOihuSV/8U+Hej8Va22t65aKnJZs3P+NwojZvR8Mf8kyM7O+V8sQg== } + { integrity: sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w== } engines: { node: '>=10' } peerDependencies: '@swc/helpers': '>=0.5.17' @@ -5690,13 +5496,13 @@ packages: resolution: { integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== } - '@swc/helpers@0.5.23': + '@swc/helpers@0.5.18': resolution: - { integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw== } + { integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== } - '@swc/types@0.1.26': + '@swc/types@0.1.25': resolution: - { integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw== } + { integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== } '@szmarczak/http-timer@5.0.1': resolution: @@ -5822,56 +5628,56 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/history@1.162.0': + '@tanstack/history@1.154.14': resolution: - { integrity: sha512-79pf/RkhteYZTRgcR4F9kbk84P2N8rugQJswxfIqovlbRiT3yI7eBE+5QorIrZaOKktsgzRlXh1l/du/xpl4iA== } - engines: { node: '>=20.19' } + { integrity: sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA== } + engines: { node: '>=12' } - '@tanstack/query-core@5.101.0': + '@tanstack/query-core@5.90.20': resolution: - { integrity: sha512-cQetA74EB+seWySv1TTKr828TnP0u39m6LykwDXIo84SNortpDkp30TMEjkqtYCNP9c40uT/iwl6MLiufEt0Ow== } + { integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg== } - '@tanstack/query-devtools@5.101.0': + '@tanstack/query-devtools@5.93.0': resolution: - { integrity: sha512-MVqw17k08RQtGGLEL654+dX/btbX9p/8WjkznO//zusLTMaObxi3Q+MoFwGVkC9K3tqjn8qrrNhJevXx4fJTeQ== } + { integrity: sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg== } - '@tanstack/react-query-devtools@5.101.0': + '@tanstack/react-query-devtools@5.91.3': resolution: - { integrity: sha512-cpZA0+WqKXwrwMfiWZEGGF6QrIWVQFbhBtxqDF5sQsAfrFf47HIE6fiPbQU3wyAUEN2+7UNqLCQe7oG6m3f93w== } + { integrity: sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA== } peerDependencies: - '@tanstack/react-query': ^5.101.0 + '@tanstack/react-query': ^5.90.20 react: ^18 || ^19 - '@tanstack/react-query@5.101.0': + '@tanstack/react-query@5.90.21': resolution: - { integrity: sha512-rLlJXSpkqfizLWgkR5+eLeIk0MvTx/meEIR7LRjxic+qxiQP8zVjq7BqQkiCMNLQBlLfuOLqqr6KO5GtrDlmSg== } + { integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg== } peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.167.0': + '@tanstack/react-router-devtools@1.161.3': resolution: - { integrity: sha512-nGw095EG7IHx0h5NtlEmzf6vcCTaFNPWdTSuDKazajhN0ct/v/TkekJ9J6KYUCeV1a8/2ZmToc58M+0rrOyn7w== } - engines: { node: '>=20.19' } + { integrity: sha512-AlJPtaYvhDVuwe/TqZIYt5njmxAGxMEq6l7AXOXQLVu7UP0jysxGoQfrm2LZT+piMeUmJ5opRUTnxktpCphIFQ== } + engines: { node: '>=12' } peerDependencies: - '@tanstack/react-router': ^1.170.0 - '@tanstack/router-core': ^1.170.0 + '@tanstack/react-router': ^1.161.3 + '@tanstack/router-core': ^1.161.3 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.170.11': + '@tanstack/react-router@1.161.3': resolution: - { integrity: sha512-gP2vzdyaI8Ow/Uz/MRPfK2wN09YwRI0Y/oF74Wuy9R3KmjbfJv2tLrkM+Onu1xWklSn3ugZarMPJXRE0kzrJTA== } - engines: { node: '>=20.19' } + { integrity: sha512-evYPrkuFt4T6E0WVyBGGq83lWHJjsYy3E5SpPpfPY/uRnEgmgwfr6Xl570msRnWYMj7DIkYg8ZWFFwzqKrSlBw== } + engines: { node: '>=12' } peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.9.3': + '@tanstack/react-store@0.9.1': resolution: - { integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg== } + { integrity: sha512-YzJLnRvy5lIEFTLWBAZmcOjK3+2AepnBv/sr6NZmiqJvq7zTQggyK99Gw8fqYdMdHPQWXjz0epFKJXC+9V2xDA== } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -5884,36 +5690,36 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/router-core@1.171.9': + '@tanstack/router-core@1.161.3': resolution: - { integrity: sha512-QM5ZwLT9c5ZcTJW0QQZRRIBC4qjImUyUCXCVyuYVOF9xr76XLsJSX4F2dOxr9VptAv+W+TkWNOYdX8VaO9kdgA== } - engines: { node: '>=20.19' } + { integrity: sha512-8EuaGXLUjugQE9Rsb8VrWSy+wImcs/DZ9JORqUJYCmiiWnJzbat8KedQItq/9LCjMJyx4vTLCt8NnZCL+j1Ayg== } + engines: { node: '>=12' } - '@tanstack/router-devtools-core@1.168.0': + '@tanstack/router-devtools-core@1.161.3': resolution: - { integrity: sha512-wQoQhlBK7nlZgqzaqdYXKWNTpdHdsaREdaPhFZVH0/Ador+F+eM3/NF2i3f2LPeS0GgKraZUQXe1Q/1+KHyEYg== } - engines: { node: '>=20.19' } + { integrity: sha512-yLbBH9ovomvxAk4nbTzN+UacPX2C5r3Kq4p+4O8gZVopUjRqiYiQN7ZJ6tN6atQouJQtym2xXwa5pC4EyFlCgQ== } + engines: { node: '>=12' } peerDependencies: - '@tanstack/router-core': ^1.170.0 + '@tanstack/router-core': ^1.161.3 csstype: ^3.0.10 peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.167.13': + '@tanstack/router-generator@1.161.3': resolution: - { integrity: sha512-DldbCjA8S/CXQBuoyQqr76xqZe9k+H1ymV+ugj2IBHFi4yRzx4z4f2nSsPYlLdpXD2Cf/MEjLncaG7ceY5H5ig== } - engines: { node: '>=20.19' } + { integrity: sha512-GKOrsOu7u5aoK1+lRu6KUUOmbb42mYF2ezfXf27QMiBjMx/yDHXln8wmdR7ZQ+FdSGz2YVubt2Ns3KuFsDsZJg== } + engines: { node: '>=12' } - '@tanstack/router-plugin@1.168.14': + '@tanstack/router-plugin@1.161.3': resolution: - { integrity: sha512-z+3vYJ7ouNnMzBIC1hsNWsxaQFu9Gf0WSdE3jBHWa326ipnONqDD5KeCqWGczq0HMdZY4UsDjyfvjucxXhrb0A== } - engines: { node: '>=20.19' } + { integrity: sha512-3Uy4AxgHNYjmCGf2WYWB8Gy3C6m0YE5DV1SK2p3yUrA/PhCMYRe+xzjyD5pViMUSLUoPHQYGY6bOIM9OOPRI/Q== } + engines: { node: '>=12' } peerDependencies: - '@rsbuild/core': '>=1.0.2 || ^2.0.0' - '@tanstack/react-router': ^1.170.11 - vite: '>=5.0.0 || >=6.0.0 || >=7.0.0 || >=8.0.0' - vite-plugin-solid: ^2.11.10 || ^3.0.0-0 + '@rsbuild/core': '>=1.0.2' + '@tanstack/react-router': ^1.161.3 + vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' + vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' peerDependenciesMeta: '@rsbuild/core': @@ -5927,24 +5733,24 @@ packages: webpack: optional: true - '@tanstack/router-utils@1.162.1': + '@tanstack/router-utils@1.158.0': resolution: - { integrity: sha512-62layyTGmclHDQS/eidwKRfN1hhCKwViG7iEBcVmL0MXgcAB3OOucWCEcDDGd9Cu11H6b4QQ5oOo47MWIqwz0A== } - engines: { node: '>=20.19' } + { integrity: sha512-qZ76eaLKU6Ae9iI/mc5zizBX149DXXZkBVVO3/QRIll79uKLJZHQlMKR++2ba7JsciBWz1pgpIBcCJPE9S0LVg== } + engines: { node: '>=12' } - '@tanstack/store@0.9.3': + '@tanstack/store@0.9.1': resolution: - { integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw== } + { integrity: sha512-+qcNkOy0N1qSGsP7omVCW0SDrXtaDcycPqBDE726yryiA5eTDFpjBReaYjghVJwNf1pcPMyzIwTGlYjCSQR0Fg== } '@tanstack/table-core@8.21.3': resolution: { integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== } engines: { node: '>=12' } - '@tanstack/virtual-file-routes@1.162.0': + '@tanstack/virtual-file-routes@1.154.7': resolution: - { integrity: sha512-uhOeFyxLcU41HzvrxsGpiWdcMbScY1EDgbZ5K7DVRMYInbLYWAC0EA/kx9wXAoSM8q82bUG2hRl8+EAjE6XAbA== } - engines: { node: '>=20.19' } + { integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg== } + engines: { node: '>=12' } '@testing-library/dom@10.4.1': resolution: @@ -6002,45 +5808,9 @@ packages: resolution: { integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g== } - '@turbo/darwin-64@2.9.16': - resolution: - { integrity: sha512-jLjApWTSNd7JZ5JaLYfelW1ytnGQOvB7ivl+2RD1xQvJTbi8I9gBjzcga7tDZVPyaxpl10YTfJt3BrYXR18KDw== } - cpu: [x64] - os: [darwin] - - '@turbo/darwin-arm64@2.9.16': - resolution: - { integrity: sha512-YPgrn+5HIGzrx0O2a631SV4MBQUe4W/DafMFUuBVgaU32PW9/OTT0ehviF0QSxTXuRJlHvW2eUTemddF5/spmw== } - cpu: [arm64] - os: [darwin] - - '@turbo/linux-64@2.9.16': + '@tybys/wasm-util@0.10.1': resolution: - { integrity: sha512-vAEf1H6l26lTpl9FJ/peQo1NUB8RC0sbEJJz5mPcUhHA2bPDup2x3CZPgo/bH8S4cUcBLm4FN3UHd5iUO2RAew== } - cpu: [x64] - os: [linux] - - '@turbo/linux-arm64@2.9.16': - resolution: - { integrity: sha512-xDBLR2PZg4BrQOchfG6svgpv5FCNJ2TOtT2psLdEJcdKo1BH+pnPs9Xj6pvUjgfkHbuvBOfeE4R6tvxMoQKDHQ== } - cpu: [arm64] - os: [linux] - - '@turbo/windows-64@2.9.16': - resolution: - { integrity: sha512-NBAJnaUiGdgkSzQwUIdOvkCkcpTSu58G/sBGa0mvBtzfvFOOgrQwepKOOQ8cp6sWM6OcKDNFj2p1dsZA1OWjPg== } - cpu: [x64] - os: [win32] - - '@turbo/windows-arm64@2.9.16': - resolution: - { integrity: sha512-Y7SJppD0Z8wjO3Ec0ZGd9KQ4Yv0BMnA8CIowj5Vp+OEVsosXDG2weK6/t1RRLfJmc2Ozrnd6y4DOgQys+mn3WQ== } - cpu: [arm64] - os: [win32] - - '@tybys/wasm-util@0.10.2': - resolution: - { integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg== } + { integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== } '@types/argparse@1.0.38': resolution: @@ -6122,9 +5892,9 @@ packages: resolution: { integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== } - '@types/debug@4.1.13': + '@types/debug@4.1.12': resolution: - { integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== } + { integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== } '@types/deep-eql@4.0.2': resolution: @@ -6138,9 +5908,9 @@ packages: resolution: { integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== } - '@types/estree@1.0.9': + '@types/estree@1.0.8': resolution: - { integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== } + { integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== } '@types/express-serve-static-core@5.1.1': resolution: @@ -6202,9 +5972,13 @@ packages: resolution: { integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA== } - '@types/node@24.13.0': + '@types/node@17.0.45': + resolution: + { integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== } + + '@types/node@24.13.1': resolution: - { integrity: sha512-5vtOqGQr4NJKeEzV441FcOi2MeG9UTWq9LqVLGneDdu4vlX17H8kQ2PA2UmNwCUGPVDj4oBjNhS7ReVEIWJJrg== } + { integrity: sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg== } '@types/nodemailer@7.0.11': resolution: @@ -6226,9 +6000,9 @@ packages: resolution: { integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw== } - '@types/qs@6.15.1': + '@types/qs@6.14.0': resolution: - { integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw== } + { integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== } '@types/range-parser@1.2.7': resolution: @@ -6258,9 +6032,9 @@ packages: resolution: { integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww== } - '@types/superagent@8.1.10': + '@types/superagent@8.1.9': resolution: - { integrity: sha512-nbt4IWXABhW0jGmmpRzCFNlbmwCTzZ2gTUsNIr+X+ItdqPms+PAJZbWsNzpS2USqXjcoNLQcO6nXo60zcPQiIg== } + { integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== } '@types/supertest@6.0.3': resolution: @@ -6294,73 +6068,88 @@ packages: resolution: { integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== } - '@typescript-eslint/eslint-plugin@8.60.1': + '@typescript-eslint/eslint-plugin@8.58.2': resolution: - { integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg== } + { integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@typescript-eslint/parser': ^8.60.1 + '@typescript-eslint/parser': ^8.58.2 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: 6.0.x - '@typescript-eslint/parser@8.60.1': + '@typescript-eslint/parser@8.58.2': resolution: - { integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA== } + { integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: 6.0.x - '@typescript-eslint/project-service@8.60.1': + '@typescript-eslint/project-service@8.58.2': resolution: - { integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw== } + { integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: 6.0.x - '@typescript-eslint/scope-manager@8.60.1': + '@typescript-eslint/scope-manager@8.56.0': resolution: - { integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w== } + { integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/tsconfig-utils@8.60.1': + '@typescript-eslint/scope-manager@8.58.2': resolution: - { integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA== } + { integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + '@typescript-eslint/tsconfig-utils@8.58.2': + resolution: + { integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: 6.0.x - '@typescript-eslint/type-utils@8.60.1': + '@typescript-eslint/type-utils@8.58.2': resolution: - { integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A== } + { integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: 6.0.x - '@typescript-eslint/types@8.60.1': + '@typescript-eslint/types@8.56.0': + resolution: + { integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + '@typescript-eslint/types@8.58.2': resolution: - { integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w== } + { integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/typescript-estree@8.60.1': + '@typescript-eslint/typescript-estree@8.58.2': resolution: - { integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew== } + { integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: 6.0.x - '@typescript-eslint/utils@8.60.1': + '@typescript-eslint/utils@8.58.2': resolution: - { integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg== } + { integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: 6.0.x - '@typescript-eslint/visitor-keys@8.60.1': + '@typescript-eslint/visitor-keys@8.56.0': + resolution: + { integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + '@typescript-eslint/visitor-keys@8.58.2': resolution: - { integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag== } + { integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } '@ucast/core@1.10.2': @@ -6379,29 +6168,29 @@ packages: resolution: { integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA== } - '@ungap/structured-clone@1.3.1': + '@ungap/structured-clone@1.3.0': resolution: - { integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ== } + { integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== } - '@vitejs/plugin-react-swc@4.3.1': + '@vitejs/plugin-react-swc@4.3.0': resolution: - { integrity: sha512-PaeokKjAGraNN+s5SIApgsktnJprIyt3zgEIu7awnEdfn29QiB2crTcCzyi2XGpX9rUnTc0cKU07Wm0N0g7H2w== } + { integrity: sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w== } engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: vite: ^4 || ^5 || ^6 || ^7 || ^8 - '@vitest/browser@4.1.8': + '@vitest/browser@4.1.4': resolution: - { integrity: sha512-u21VzX07HzlJYpFgkxmjEXar/tG2UqWGgyGG/46SrrPc7rSdCTPw5vuowopO9CIqF8UCUQzDFdbVnNpw6N0BfQ== } + { integrity: sha512-TrNaY/yVOwxtrxNsDUC/wQ56xSwplpytTeRAqF/197xV/ZddxxulBsxR6TrhVMyniJmp9in8d5u0AcDaNRY30w== } peerDependencies: - vitest: 4.1.8 + vitest: 4.1.4 - '@vitest/coverage-v8@4.1.8': + '@vitest/coverage-v8@4.1.4': resolution: - { integrity: sha512-lt3kovsyHwYe00wq4D1ti0Z974fWj4NLp6siqiyEufUpyFwK9Yhi7rBhac9JL5aA0zoMrJqc4vYPZRUnI7l7nw== } + { integrity: sha512-x7FptB5oDruxNPDNY2+S8tCh0pcq7ymCe1gTHcsp733jYjrJl8V1gMUlVysuCD9Kz46Xz9t1akkv08dPcYDs1w== } peerDependencies: - '@vitest/browser': 4.1.8 - vitest: 4.1.8 + '@vitest/browser': 4.1.4 + vitest: 4.1.4 peerDependenciesMeta: '@vitest/browser': optional: true @@ -6410,13 +6199,13 @@ packages: resolution: { integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig== } - '@vitest/expect@4.1.8': + '@vitest/expect@4.1.4': resolution: - { integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ== } + { integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww== } - '@vitest/mocker@4.1.8': + '@vitest/mocker@4.1.4': resolution: - { integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw== } + { integrity: sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg== } peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6430,33 +6219,33 @@ packages: resolution: { integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA== } - '@vitest/pretty-format@4.1.8': + '@vitest/pretty-format@4.1.4': resolution: - { integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA== } + { integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A== } - '@vitest/runner@4.1.8': + '@vitest/runner@4.1.4': resolution: - { integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg== } + { integrity: sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ== } - '@vitest/snapshot@4.1.8': + '@vitest/snapshot@4.1.4': resolution: - { integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ== } + { integrity: sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw== } '@vitest/spy@3.2.4': resolution: { integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw== } - '@vitest/spy@4.1.8': + '@vitest/spy@4.1.4': resolution: - { integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA== } + { integrity: sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ== } '@vitest/utils@3.2.4': resolution: { integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA== } - '@vitest/utils@4.1.8': + '@vitest/utils@4.1.4': resolution: - { integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg== } + { integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw== } '@volar/kit@2.4.28': resolution: @@ -6531,9 +6320,9 @@ packages: { integrity: sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA== } engines: { node: '>=18' } - '@xhmikosr/decompress@10.2.1': + '@xhmikosr/decompress@10.2.0': resolution: - { integrity: sha512-ceGT3K2JR73Usj5o+HM2RRZw0XPUes4rhb7uVTY9PefUQQMpuj8x+V29XVG09JnS7EOj9SIBhHn3K4bFNNb7hA== } + { integrity: sha512-MmDBvu0+GmADyQWHolcZuIWffgfnuTo4xpr2I/Qw5Ox0gt+e1Be7oYqJM4te5ylL6mzlcoicnHVDvP27zft8tg== } engines: { node: '>=18' } '@xhmikosr/downloader@15.2.0': @@ -6630,17 +6419,21 @@ packages: ajv: optional: true - ajv@6.15.0: + ajv@6.14.0: resolution: - { integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw== } + { integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== } - ajv@8.18.0: + ajv@8.12.0: resolution: - { integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== } + { integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== } + + ajv@8.13.0: + resolution: + { integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== } - ajv@8.20.0: + ajv@8.18.0: resolution: - { integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== } + { integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== } ansi-align@3.0.1: resolution: @@ -6681,9 +6474,9 @@ packages: { integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== } engines: { node: '>=12' } - ansis@4.3.1: + ansis@4.2.0: resolution: - { integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA== } + { integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig== } engines: { node: '>=14' } anymatch@3.1.3: @@ -6815,9 +6608,9 @@ packages: { integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== } engines: { node: '>=4' } - ast-v8-to-istanbul@1.0.3: + ast-v8-to-istanbul@1.0.0: resolution: - { integrity: sha512-jCMQ6ZylLPudp0CDfBmQBZUsrh1/8psbmu9ibeVWKuHWD0YrH9YABwlKu5kVEFoT0GCQQW9Z/SxfuEbbkGQCRg== } + { integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg== } astral-regex@2.0.0: resolution: @@ -6829,20 +6622,20 @@ packages: { integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== } hasBin: true - astro-eslint-parser@1.4.0: + astro-eslint-parser@1.3.0: resolution: - { integrity: sha512-+QDcgc7e+au6EZ0YjMmRRjNoQo5bDMlaR45aWDoFsuxQTCM9qmCHRoiKJPELgckJ8Wmr7vcfpa9eCDHBFh6G4w== } + { integrity: sha512-aOLc/aDR7lTWAHlytEefwn4Y6qs6uMr69DZvUx2A1AOAZsWhGB/paiRWPtVchh9wzMvLeqr+DkbENhVreVr9AQ== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - astro-expressive-code@0.41.7: + astro-expressive-code@0.41.6: resolution: - { integrity: sha512-hUpogGc6DdAd+I7pPXsctyYPRBJDK7Q7d06s4cyP0Vz3OcbziP3FNzN0jZci1BpCvLn9675DvS7B9ctKKX64JQ== } + { integrity: sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw== } peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta - astro@5.18.2: + astro@5.17.3: resolution: - { integrity: sha512-TnFwLnAXty5MXKPDGuKXqK4AMBXG+FH6RUdK7Oyc3gyfNoFIthT+4eRbzOK43bdRlLaZuxgciDSjgtggZ3OtGQ== } + { integrity: sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA== } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0' } hasBin: true @@ -6907,23 +6700,23 @@ packages: resolution: { integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== } - axe-core@4.12.0: + axe-core@4.11.1: resolution: - { integrity: sha512-FTavr/7Ba0IptwGOPxnQvdyW2tAsdLBMTBXz7rKH6xJ2skpyxpBxyHkDdBs4lf69yRqYpkqCdfhnwS8YULGOmg== } + { integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A== } engines: { node: '>=4' } - axios@1.17.0: + axios@1.15.0: resolution: - { integrity: sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw== } + { integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q== } axobject-query@4.1.0: resolution: { integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== } engines: { node: '>= 0.4' } - b4a@1.8.1: + b4a@1.8.0: resolution: - { integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw== } + { integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg== } peerDependencies: react-native-b4a: '*' peerDependenciesMeta: @@ -6942,57 +6735,19 @@ packages: resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } - balanced-match@4.0.4: + balanced-match@4.0.3: resolution: - { integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== } - engines: { node: 18 || 20 || >=22 } - - bare-events@2.9.1: - resolution: - { integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg== } - peerDependencies: - bare-abort-controller: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - - bare-fs@4.7.2: - resolution: - { integrity: sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg== } - engines: { bare: '>=1.16.0' } - peerDependencies: - bare-buffer: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - - bare-os@3.9.1: - resolution: - { integrity: sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ== } - engines: { bare: '>=1.14.0' } - - bare-path@3.0.1: - resolution: - { integrity: sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ== } + { integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g== } + engines: { node: 20 || >=22 } - bare-stream@2.13.1: + bare-events@2.8.2: resolution: - { integrity: sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow== } + { integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ== } peerDependencies: bare-abort-controller: '*' - bare-buffer: '*' - bare-events: '*' peerDependenciesMeta: bare-abort-controller: optional: true - bare-buffer: - optional: true - bare-events: - optional: true - - bare-url@2.4.4: - resolution: - { integrity: sha512-zbQJi2YQUe3SrX19TItQ8DoPj9E1i5rrdE9iHV4PhUif1GodNRSe85lavVGbmU7P4M8579EQi4akGFuhCATWaQ== } base-64@1.0.0: resolution: @@ -7007,9 +6762,9 @@ packages: resolution: { integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== } - baseline-browser-mapping@2.10.33: + baseline-browser-mapping@2.10.0: resolution: - { integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw== } + { integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== } engines: { node: '>=6.0.0' } hasBin: true @@ -7074,27 +6829,27 @@ packages: { integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw== } engines: { node: '>=18' } - brace-expansion@1.1.15: + brace-expansion@1.1.12: resolution: - { integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== } + { integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== } - brace-expansion@2.1.1: + brace-expansion@2.0.2: resolution: - { integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA== } + { integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== } - brace-expansion@5.0.6: + brace-expansion@5.0.2: resolution: - { integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g== } - engines: { node: 18 || 20 || >=22 } + { integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw== } + engines: { node: 20 || >=22 } braces@3.0.3: resolution: { integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== } engines: { node: '>=8' } - browserslist@4.28.2: + browserslist@4.28.1: resolution: - { integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== } + { integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true @@ -7115,11 +6870,6 @@ packages: resolution: { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== } - buffer-image-size@0.6.4: - resolution: - { integrity: sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ== } - engines: { node: '>=4.0' } - buffer@5.7.1: resolution: { integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== } @@ -7173,9 +6923,9 @@ packages: { integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== } engines: { node: '>= 0.4' } - call-bind@1.0.9: + call-bind@1.0.8: resolution: - { integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ== } + { integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== } engines: { node: '>= 0.4' } call-bound@1.0.4: @@ -7203,9 +6953,9 @@ packages: { integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== } engines: { node: '>=16' } - caniuse-lite@1.0.30001793: + caniuse-lite@1.0.30001770: resolution: - { integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA== } + { integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw== } caseless@0.12.0: resolution: @@ -7299,9 +7049,9 @@ packages: resolution: { integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ== } - citty@0.2.2: + citty@0.2.1: resolution: - { integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w== } + { integrity: sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg== } class-variance-authority@0.7.1: resolution: @@ -7501,9 +7251,9 @@ packages: { integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== } engines: { node: '>= 0.6' } - content-disposition@1.1.0: + content-disposition@1.0.1: resolution: - { integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g== } + { integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q== } engines: { node: '>=18' } content-type@1.0.5: @@ -7511,22 +7261,17 @@ packages: { integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== } engines: { node: '>= 0.6' } - content-type@2.0.0: - resolution: - { integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ== } - engines: { node: '>=18' } - convert-source-map@2.0.0: resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } - cookie-es@1.2.3: + cookie-es@1.2.2: resolution: - { integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw== } + { integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== } - cookie-es@3.1.1: + cookie-es@2.0.0: resolution: - { integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg== } + { integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg== } cookie-signature@1.2.2: resolution: @@ -7592,9 +7337,9 @@ packages: { integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } - css-tree@3.2.1: + css-tree@3.1.0: resolution: - { integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== } + { integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } css-what@6.2.2: @@ -7710,9 +7455,9 @@ packages: resolution: { integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== } - dayjs@1.11.21: + dayjs@1.11.19: resolution: - { integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA== } + { integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== } debug@2.6.9: resolution: @@ -7814,9 +7559,9 @@ packages: { integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== } engines: { node: '>= 0.4' } - defu@6.1.7: + defu@6.1.4: resolution: - { integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ== } + { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } delayed-stream@1.0.0: resolution: @@ -7865,9 +7610,9 @@ packages: { integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ== } engines: { node: '>=18' } - devalue@5.8.1: + devalue@5.6.3: resolution: - { integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw== } + { integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg== } devlop@1.1.0: resolution: @@ -7882,9 +7627,9 @@ packages: { integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== } engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - diff@8.0.4: + diff@8.0.3: resolution: - { integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw== } + { integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ== } engines: { node: '>=0.3.1' } dijkstrajs@1.0.3: @@ -7975,13 +7720,13 @@ packages: resolution: { integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== } - effect@3.21.0: + effect@3.18.4: resolution: - { integrity: sha512-PPN80qRokCd1f015IANNhrwOnLO7GrrMQfk4/lnZRE/8j7UPWrNNjPV0uBrZutI/nHzernbW+J0hdqQysHiSnQ== } + { integrity: sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA== } - electron-to-chromium@1.5.367: + electron-to-chromium@1.5.302: resolution: - { integrity: sha512-4Mk/mrynCNQ+atY40D3UpmhLWB6AHMbYMlIrPhHcMF6x0L7O0b052FCAsxw1LlaR++UFuNg3D/A6XCuGDa0guQ== } + { integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg== } emmet@2.4.11: resolution: @@ -8004,11 +7749,6 @@ packages: { integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA== } engines: { node: '>=14' } - empathic@2.0.1: - resolution: - { integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q== } - engines: { node: '>=14' } - encodeurl@2.0.0: resolution: { integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== } @@ -8022,9 +7762,9 @@ packages: resolution: { integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== } - enhanced-resolve@5.22.2: + enhanced-resolve@5.23.0: resolution: - { integrity: sha512-0rxICaFZ7NQho/sHely2bvOPRP0Eu2B0NZ9zM54YvRvWMn7jfz3DmnOZDR9LlXDdDcqntAVc6Hfy4gr/tdH/Ag== } + { integrity: sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA== } engines: { node: '>=10.13.0' } enquirer@2.4.1: @@ -8062,9 +7802,9 @@ packages: resolution: { integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== } - es-abstract@1.24.2: + es-abstract@1.24.1: resolution: - { integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg== } + { integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== } engines: { node: '>= 0.4' } es-define-property@1.0.1: @@ -8077,22 +7817,22 @@ packages: { integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== } engines: { node: '>= 0.4' } - es-iterator-helpers@1.3.2: + es-iterator-helpers@1.2.2: resolution: - { integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw== } + { integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w== } engines: { node: '>= 0.4' } es-module-lexer@1.7.0: resolution: { integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== } - es-module-lexer@2.1.0: + es-module-lexer@2.0.0: resolution: - { integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ== } + { integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== } - es-object-atoms@1.1.2: + es-object-atoms@1.1.1: resolution: - { integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw== } + { integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== } engines: { node: '>= 0.4' } es-set-tostringtag@2.1.0: @@ -8142,9 +7882,9 @@ packages: engines: { node: '>=18' } hasBin: true - esbuild@0.27.7: + esbuild@0.27.3: resolution: - { integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w== } + { integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg== } engines: { node: '>=18' } hasBin: true @@ -8186,25 +7926,25 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-import-resolver-node@0.3.10: + eslint-import-resolver-node@0.3.9: resolution: - { integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ== } + { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } - eslint-json-compat-utils@0.2.3: + eslint-json-compat-utils@0.2.1: resolution: - { integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ== } + { integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg== } engines: { node: '>=12' } peerDependencies: '@eslint/json': '*' eslint: '*' - jsonc-eslint-parser: ^2.4.0 || ^3.0.0 + jsonc-eslint-parser: ^2.4.0 peerDependenciesMeta: '@eslint/json': optional: true - eslint-module-utils@2.13.0: + eslint-module-utils@2.12.1: resolution: - { integrity: sha512-bLohSkT6469rRs8czj0tLTD8vaeIS/whvPRJVjDr7IuoTT1k5DYDERlNycjDj/HkOlvQdYurmfZ/g3fG5bgeLQ== } + { integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== } engines: { node: '>=4' } peerDependencies: '@typescript-eslint/parser': '*' @@ -8263,9 +8003,9 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-perfectionist@5.9.0: + eslint-plugin-perfectionist@5.8.0: resolution: - { integrity: sha512-8TWzg02zmnBdZwCkWLi8jhzqXI+fE7Z/RwV8SL6xD45tJ8Bp3wGuYL2XtQgfe/Wd0eBqOUX+s6ey73IyszvKTA== } + { integrity: sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw== } engines: { node: ^20.0.0 || >=22.0.0 } peerDependencies: eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 @@ -8448,9 +8188,9 @@ packages: { integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw== } engines: { node: '>= 18' } - expressive-code@0.41.7: + expressive-code@0.41.6: resolution: - { integrity: sha512-2wZjC8OQ3TaVEMcBtYY4Va3lo6J+Ai9jf3d4dbhURMJcU4Pbqe6EcHe424MIZI0VHUA1bR6xdpoHYi3yxokWqA== } + { integrity: sha512-W/5+IQbrpCIM5KGLjO35wlp1NCwDOOVQb+PAvzEoGkW1xjGM807ZGfBKptNWH6UECvt6qgmLyWolCMYKh7eQmA== } exsolve@1.0.8: resolution: @@ -8491,9 +8231,9 @@ packages: { integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A== } engines: { node: '>=8.0.0' } - fast-copy@4.0.3: + fast-copy@4.0.2: resolution: - { integrity: sha512-58apWr0GUiDFM8+3afrO6eYwJBn9ZAhDOzG3L+/9llab/haCARS2UIfffmOurYLwbgDRs8n0rfr6qAAPEAuAQw== } + { integrity: sha512-ybA6PDXIXOXivLJK/z9e+Otk7ve13I4ckBvGO5I2RRmBU1gMHLVDJYEuJYhGwez7YNlYji2M2DvVU+a9mSFDlw== } fast-decode-uri-component@1.0.1: resolution: @@ -8521,9 +8261,9 @@ packages: resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } - fast-json-stringify@6.4.0: + fast-json-stringify@6.3.0: resolution: - { integrity: sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ== } + { integrity: sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA== } fast-levenshtein@2.0.6: resolution: @@ -8537,9 +8277,9 @@ packages: resolution: { integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== } - fast-uri@3.1.2: + fast-uri@3.1.0: resolution: - { integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ== } + { integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== } fast-xml-builder@1.2.0: resolution: @@ -8559,9 +8299,9 @@ packages: resolution: { integrity: sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw== } - fastify@5.8.5: + fastify@5.7.4: resolution: - { integrity: sha512-Yqptv59pQzPgQUSIm87hMqHJmdkb1+GPxdE6vW6FRyVE9G86mt7rOghitiU4JHRaTyDUk9pfeKmDeu70lAwM4Q== } + { integrity: sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA== } fastq@1.20.1: resolution: @@ -8585,9 +8325,9 @@ packages: picomatch: optional: true - fflate@0.8.3: + fflate@0.8.2: resolution: - { integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA== } + { integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== } figures@3.2.0: resolution: @@ -8609,9 +8349,9 @@ packages: { integrity: sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg== } engines: { node: '>=18' } - file-type@21.3.4: + file-type@21.3.0: resolution: - { integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g== } + { integrity: sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA== } engines: { node: '>=20' } file-uri-to-path@1.0.0: @@ -8643,9 +8383,9 @@ packages: { integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== } engines: { node: '>=8' } - find-my-way@9.6.0: + find-my-way@9.4.0: resolution: - { integrity: sha512-Zf4Xve4RymLl7NgaavNebZ01joJ8MfVerOG43wy7SHLO+r+K0C6d/SE0BiR7AV5V1VOCFlOP7ecdo+I4qmiHrQ== } + { integrity: sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w== } engines: { node: '>=20' } find-up@4.1.0: @@ -8668,18 +8408,18 @@ packages: { integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== } engines: { node: '>=16' } - flatted@3.4.2: + flatted@3.3.3: resolution: - { integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== } + { integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== } flattie@1.1.1: resolution: { integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ== } engines: { node: '>=8' } - follow-redirects@1.16.0: + follow-redirects@1.15.11: resolution: - { integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== } + { integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== } engines: { node: '>=4.0' } peerDependencies: debug: '*' @@ -8691,9 +8431,9 @@ packages: resolution: { integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw== } - fontkitten@1.0.3: + fontkitten@1.0.2: resolution: - { integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw== } + { integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q== } engines: { node: '>=20' } for-each@0.3.5: @@ -8770,9 +8510,9 @@ packages: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== } engines: { node: '>=12' } - fs-extra@11.3.5: + fs-extra@11.3.3: resolution: - { integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg== } + { integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg== } engines: { node: '>=14.14' } fs-extra@9.1.0: @@ -8835,9 +8575,9 @@ packages: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } engines: { node: 6.* || 8.* || >= 10.* } - get-east-asian-width@1.6.0: + get-east-asian-width@1.5.0: resolution: - { integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA== } + { integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA== } engines: { node: '>=18' } get-intrinsic@1.3.0: @@ -8875,9 +8615,9 @@ packages: { integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== } engines: { node: '>= 0.4' } - get-tsconfig@4.14.0: + get-tsconfig@4.13.6: resolution: - { integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA== } + { integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw== } getos@3.2.1: resolution: @@ -8959,9 +8699,9 @@ packages: { integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== } engines: { node: '>= 0.4' } - goober@2.1.19: + goober@2.1.18: resolution: - { integrity: sha512-U7veizMqxyKlM58+Z5j2ngJBH/r9siDmxpvNxSw0PylF6WQvrASJEZrxh1hidRBJc2jqoBVSyOban5u8m+6Rxg== } + { integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw== } peerDependencies: csstype: ^3.0.10 @@ -8983,13 +8723,13 @@ packages: resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } - h3@1.15.11: + h3@1.15.5: resolution: - { integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg== } + { integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg== } - happy-dom@20.10.1: + happy-dom@20.6.3: resolution: - { integrity: sha512-awPoqPjx8CgjapJllyDlgzgVHjBExcitKK5ZJkxwhQJyQpHFkyS2bEcqCm7IeW20cQvuCI0cz2Ifq79CJKqtiw== } + { integrity: sha512-QAMY7d228dHs8gb9NG4SJ3OxQo4r+NGN8pOXGZ3SGfQf/XYuuYubrtZ25QVY2WoUQdskhRXSXb4R4mcRk+hV1w== } engines: { node: '>=20.0.0' } has-bigints@1.1.0: @@ -9030,9 +8770,9 @@ packages: resolution: { integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== } - hasown@2.0.4: + hasown@2.0.2: resolution: - { integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== } + { integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== } engines: { node: '>= 0.4' } hast-util-embedded@3.0.0: @@ -9212,9 +8952,9 @@ packages: { integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw== } engines: { node: '>=0.10.0' } - idb-keyval@6.2.5: + idb-keyval@6.2.2: resolution: - { integrity: sha512-eKQkTnS0relYsSOYomx8ozIbmdsQCKUdhyuIaQ2DZgKuaxtyQQMkyD/wlnQN32pO3yutN1b1L8uqwcDKaJd7/Q== } + { integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== } ieee754@1.2.1: resolution: @@ -9306,9 +9046,9 @@ packages: { integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== } engines: { node: '>=12' } - ip-address@10.2.0: + ip-address@10.1.0: resolution: - { integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA== } + { integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q== } engines: { node: '>= 12' } ipaddr.js@1.9.1: @@ -9316,9 +9056,9 @@ packages: { integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== } engines: { node: '>= 0.10' } - ipaddr.js@2.4.0: + ipaddr.js@2.3.0: resolution: - { integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ== } + { integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== } engines: { node: '>= 10' } iron-webcrypto@1.2.1: @@ -9367,9 +9107,9 @@ packages: { integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== } engines: { node: '>= 0.4' } - is-core-module@2.16.2: + is-core-module@2.16.1: resolution: - { integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA== } + { integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== } engines: { node: '>= 0.4' } is-data-view@1.0.2: @@ -9557,9 +9297,9 @@ packages: resolution: { integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== } - isbot@5.1.40: + isbot@5.1.35: resolution: - { integrity: sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ== } + { integrity: sha512-waFfC72ZNfwLLuJ2iLaoVaqcNo+CAaLR7xCpAn0Y5WfGzkNHv7ZN39Vbi1y+kb+Zs46XHOX3tZNExroFUPX+Kg== } engines: { node: '>=18' } isexe@2.0.0: @@ -9600,9 +9340,9 @@ packages: { integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg== } engines: { node: 20 || >=22 } - jiti@2.7.0: + jiti@2.6.1: resolution: - { integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ== } + { integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== } hasBin: true jju@1.4.0: @@ -9640,11 +9380,6 @@ packages: { integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== } hasBin: true - js-yaml@4.2.0: - resolution: - { integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw== } - hasBin: true - jsbn@0.1.1: resolution: { integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== } @@ -9712,9 +9447,9 @@ packages: resolution: { integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== } - jsonfile@6.2.1: + jsonfile@6.2.0: resolution: - { integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q== } + { integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== } jsonwebtoken@9.0.3: resolution: @@ -9780,9 +9515,9 @@ packages: { integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== } engines: { node: '>= 8' } - knip@5.88.1: + knip@5.84.1: resolution: - { integrity: sha512-tpy5o7zu1MjawVkLPuahymVJekYY3kYjvzcoInhIchgePxTlo+api90tBv2KfhAIe5uXh+mez1tAfmbv8/TiZg== } + { integrity: sha512-F1+yACEsSapAwmQLzfD4i9uPsnI82P4p5ABpNQ9pcc4fpQtjHEX34XDtNl5863I4O6SCECpymylcWDHI3ouhQQ== } engines: { node: '>=18.18.0' } hasBin: true peerDependencies: @@ -9911,9 +9646,9 @@ packages: { integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== } engines: { node: '>=10' } - linkify-it@5.0.1: + linkify-it@5.0.0: resolution: - { integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg== } + { integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== } listr2@3.14.0: resolution: @@ -9981,9 +9716,13 @@ packages: resolution: { integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== } - lodash@4.18.1: + lodash@4.17.21: resolution: - { integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== } + { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== } + + lodash@4.17.23: + resolution: + { integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== } log-symbols@4.1.0: resolution: @@ -10013,9 +9752,9 @@ packages: { integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - lru-cache@11.5.1: + lru-cache@11.2.6: resolution: - { integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A== } + { integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ== } engines: { node: 20 || >=22 } lru-cache@5.1.1: @@ -10045,9 +9784,9 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - lucide-react@1.17.0: + lucide-react@1.11.0: resolution: - { integrity: sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w== } + { integrity: sha512-UOhjdztXCgdBReRcIhsvz2siIBogfv/lhJEIViCpLt924dO+GDms9T7DNoucI23s6kEPpe988m5N0D2ajnzb2g== } peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -10068,9 +9807,13 @@ packages: resolution: { integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== } - magicast@0.5.3: + magicast@0.3.5: + resolution: + { integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== } + + magicast@0.5.2: resolution: - { integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw== } + { integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ== } make-dir@3.1.0: resolution: @@ -10092,9 +9835,9 @@ packages: { integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== } engines: { node: '>=16' } - markdown-it@14.2.0: + markdown-it@14.1.1: resolution: - { integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ== } + { integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== } hasBin: true markdown-table@3.0.4: @@ -10118,9 +9861,9 @@ packages: resolution: { integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== } - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.0.2: resolution: - { integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q== } + { integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== } mdast-util-gfm-autolink-literal@2.0.1: resolution: @@ -10182,9 +9925,9 @@ packages: resolution: { integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== } - mdn-data@2.27.1: + mdn-data@2.12.2: resolution: - { integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ== } + { integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== } mdurl@2.0.0: resolution: @@ -10418,23 +10161,23 @@ packages: { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } engines: { node: '>=4' } - minimatch@10.2.3: + minimatch@10.2.1: resolution: - { integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg== } - engines: { node: 18 || 20 || >=22 } + { integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A== } + engines: { node: 20 || >=22 } - minimatch@10.2.5: + minimatch@10.2.2: resolution: - { integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== } + { integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw== } engines: { node: 18 || 20 || >=22 } - minimatch@3.1.5: + minimatch@3.1.2: resolution: - { integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== } + { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } - minimatch@9.0.9: + minimatch@9.0.5: resolution: - { integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== } + { integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== } engines: { node: '>=16 || 14 >=14.17' } minimist@1.2.8: @@ -10451,9 +10194,9 @@ packages: { integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== } engines: { node: '>=8' } - minipass-flush@1.0.7: + minipass-flush@1.0.5: resolution: - { integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA== } + { integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== } engines: { node: '>= 8' } minipass-pipeline@1.2.4: @@ -10490,6 +10233,11 @@ packages: resolution: { integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== } + mkdirp@0.5.6: + resolution: + { integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== } + hasBin: true + mkdirp@1.0.4: resolution: { integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== } @@ -10593,24 +10341,30 @@ packages: resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } - msgpackr-extract@3.0.4: + msgpackr-extract@3.0.3: resolution: - { integrity: sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw== } + { integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== } hasBin: true - msgpackr@1.11.12: + msgpackr@1.11.8: resolution: - { integrity: sha512-RBdJ1Un7yGlXWajrkxcSa93nvQ0w4zBf60c0yYv7YtBelP8H2FA7XsfBbMHtXKXUMUxH7zV3Zuozh+kUQWhHvg== } + { integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA== } muggle-string@0.4.1: resolution: { integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== } - multer@2.1.1: + multer@2.0.2: resolution: - { integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A== } + { integrity: sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== } engines: { node: '>= 10.16.0' } + nanoid@3.3.11: + resolution: + { integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + nanoid@3.3.12: resolution: { integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== } @@ -10659,9 +10413,9 @@ packages: resolution: { integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA== } - node-abi@3.92.0: + node-abi@3.87.0: resolution: - { integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ== } + { integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ== } engines: { node: '>=10' } node-addon-api@7.1.1: @@ -10692,19 +10446,18 @@ packages: resolution: { integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ== } - node-releases@2.0.47: + node-releases@2.0.27: resolution: - { integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og== } - engines: { node: '>=18' } + { integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== } nodemailer@7.0.13: resolution: { integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw== } engines: { node: '>=6.0.0' } - nodemon@3.1.14: + nodemon@3.1.13: resolution: - { integrity: sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw== } + { integrity: sha512-nPN6L7A9cTA3BnJ3zZIibH5FiDh3GbmibeS17bl5YEU1IRO2mcfvR0ZJXH3ndoeKItjUcaX81FSKc/Kq/IiG6g== } engines: { node: '>=10' } hasBin: true @@ -10748,9 +10501,9 @@ packages: resolution: { integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== } - nypm@0.6.6: + nypm@0.6.5: resolution: - { integrity: sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q== } + { integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ== } engines: { node: '>=18' } hasBin: true @@ -10799,10 +10552,9 @@ packages: { integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== } engines: { node: '>= 0.4' } - obug@2.1.2: + obug@2.1.1: resolution: - { integrity: sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg== } - engines: { node: '>=12.20.0' } + { integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== } ofetch@1.5.1: resolution: @@ -10836,13 +10588,13 @@ packages: { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== } engines: { node: '>=6' } - oniguruma-parser@0.12.2: + oniguruma-parser@0.12.1: resolution: - { integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw== } + { integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w== } - oniguruma-to-es@4.3.6: + oniguruma-to-es@4.3.4: resolution: - { integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA== } + { integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA== } open@10.2.0: resolution: @@ -10863,14 +10615,9 @@ packages: { integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== } engines: { node: '>= 0.4' } - oxc-parser@0.127.0: + oxc-resolver@11.17.1: resolution: - { integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA== } - engines: { node: ^20.19.0 || >=22.12.0 } - - oxc-resolver@11.20.0: - resolution: - { integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g== } + { integrity: sha512-pyRXK9kH81zKlirHufkFhOFBZRks8iAMLwPH8gU7lvKFiuzUH9L8MxDEllazwOb8fjXMcWjY1PMDfMJ2/yh5cw== } p-cancelable@3.0.0: resolution: @@ -10930,9 +10677,9 @@ packages: resolution: { integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA== } - pagefind@1.5.2: + pagefind@1.4.0: resolution: - { integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q== } + { integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g== } hasBin: true pako@1.0.11: @@ -11020,9 +10767,9 @@ packages: { integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== } engines: { node: 18 || 20 || >=22 } - path-to-regexp@8.4.2: + path-to-regexp@8.3.0: resolution: - { integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA== } + { integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== } pathe@2.0.3: resolution: @@ -11057,14 +10804,14 @@ packages: resolution: { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== } - picomatch@2.3.2: + picomatch@2.3.1: resolution: - { integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== } + { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } engines: { node: '>=8.6' } - picomatch@4.0.4: + picomatch@4.0.3: resolution: - { integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== } + { integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== } engines: { node: '>=12' } pify@2.3.0: @@ -11108,9 +10855,9 @@ packages: { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } engines: { node: '>=8' } - pkg-types@2.3.1: + pkg-types@2.3.0: resolution: - { integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg== } + { integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig== } playwright-core@1.60.0: resolution: @@ -11193,6 +10940,11 @@ packages: { integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A== } engines: { node: ^10 || ^12 || >=14 } + postcss@8.5.6: + resolution: + { integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== } + engines: { node: ^10 || ^12 || >=14 } + prebuild-install@7.1.3: resolution: { integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== } @@ -11272,9 +11024,9 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.8.3: + prettier@3.8.1: resolution: - { integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw== } + { integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== } engines: { node: '>=14' } hasBin: true @@ -11298,9 +11050,9 @@ packages: prisma: ^6.14 typescript: 6.0.x - prisma@6.19.3: + prisma@6.19.2: resolution: - { integrity: sha512-++ZJ0ijLrDJF6hNB4t4uxg2br3fC4H9Yc9tcbjr2fcNFP3rh/SBNrAgjhsqBU4Ght8JPrVofG/ZkXfnSfnYsFg== } + { integrity: sha512-XTKeKxtQElcq3U9/jHyxSPgiRgeYDKxWTPOf6NkXA0dNj5j40MfEsZkMbyNpwDWCUv7YBFUl7I2VK/6ALbmhEg== } engines: { node: '>=18.18' } hasBin: true peerDependencies: @@ -11354,9 +11106,9 @@ packages: resolution: { integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== } - property-information@7.2.0: + property-information@7.1.0: resolution: - { integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg== } + { integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== } proxy-addr@2.0.7: resolution: @@ -11376,9 +11128,9 @@ packages: resolution: { integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== } - pump@3.0.4: + pump@3.0.3: resolution: - { integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== } + { integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== } punycode.js@2.3.1: resolution: @@ -11405,9 +11157,9 @@ packages: { integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== } engines: { node: '>=0.6' } - qs@6.15.2: + qs@6.15.0: resolution: - { integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== } + { integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ== } engines: { node: '>=0.6' } queue-microtask@1.2.3: @@ -11605,10 +11357,6 @@ packages: { integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== } engines: { node: '>= 12.13.0' } - real-require@1.0.0: - resolution: - { integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g== } - recast@0.23.11: resolution: { integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA== } @@ -11622,7 +11370,6 @@ packages: resolution: { integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw== } engines: { node: '>=14' } - deprecated: 1.x and 2.x branches are no longer active. Bump to Recharts v3 to receive latest features and bugfixes. See https://github.com/recharts/recharts/wiki/3.0-migration-guide peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -11676,9 +11423,9 @@ packages: { integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== } engines: { node: '>= 0.4' } - rehype-expressive-code@0.41.7: + rehype-expressive-code@0.41.6: resolution: - { integrity: sha512-25f8ZMSF1d9CMscX7Cft0TSQIqdwjce2gDOvQ+d/w0FovsMwrSt3ODP4P3Z7wO1jsIJ4eYyaDRnIR/27bd/EMQ== } + { integrity: sha512-aBMX8kxPtjmDSFUdZlAWJkMvsQ4ZMASfee90JWIAV8tweltXLzkWC3q++43ToTelI8ac5iC0B3/S/Cl4Ql1y2g== } rehype-format@5.0.1: resolution: @@ -11759,9 +11506,9 @@ packages: resolution: { integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== } - reselect@5.2.0: + reselect@5.1.1: resolution: - { integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw== } + { integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== } resolve-alpn@1.2.1: resolution: @@ -11776,15 +11523,15 @@ packages: resolution: { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } - resolve@1.22.12: + resolve@1.22.11: resolution: - { integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== } + { integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== } engines: { node: '>= 0.4' } hasBin: true - resolve@2.0.0-next.7: + resolve@2.0.0-next.6: resolution: - { integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ== } + { integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA== } engines: { node: '>= 0.4' } hasBin: true @@ -11839,9 +11586,9 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.61.1: + rollup@4.58.0: resolution: - { integrity: sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA== } + { integrity: sha512-wbT0mBmWbIvvq8NeEYWWvevvxnOyhKChir47S66WCxw1SXqhw7ssIYejnQEVt7XYQpsj2y8F9PM+Cr3SNEa0gw== } engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true @@ -11867,9 +11614,9 @@ packages: resolution: { integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA== } - safe-array-concat@1.1.4: + safe-array-concat@1.1.3: resolution: - { integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg== } + { integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== } engines: { node: '>=0.4' } safe-buffer@5.1.2: @@ -11890,10 +11637,9 @@ packages: { integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== } engines: { node: '>= 0.4' } - safe-regex2@5.1.1: + safe-regex2@5.0.0: resolution: - { integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA== } - hasBin: true + { integrity: sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw== } safe-stable-stringify@2.5.0: resolution: @@ -11908,9 +11654,9 @@ packages: resolution: { integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw== } - sax@1.6.0: + sax@1.4.4: resolution: - { integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== } + { integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw== } engines: { node: '>=11.0.0' } scheduler@0.23.2: @@ -11949,15 +11695,15 @@ packages: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } hasBin: true - semver@7.7.4: + semver@7.5.4: resolution: - { integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== } + { integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== } engines: { node: '>=10' } hasBin: true - semver@7.8.1: + semver@7.7.4: resolution: - { integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg== } + { integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== } engines: { node: '>=10' } hasBin: true @@ -11985,16 +11731,16 @@ packages: resolution: { integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== } - seroval-plugins@1.5.4: + seroval-plugins@1.5.0: resolution: - { integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw== } + { integrity: sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA== } engines: { node: '>=10' } peerDependencies: seroval: ^1.0 - seroval@1.5.4: + seroval@1.5.0: resolution: - { integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw== } + { integrity: sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw== } engines: { node: '>=10' } serve-static@2.2.1: @@ -12053,13 +11799,13 @@ packages: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } engines: { node: '>=8' } - shiki@3.23.0: + shiki@3.22.0: resolution: - { integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA== } + { integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g== } - side-channel-list@1.0.1: + side-channel-list@1.0.0: resolution: - { integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== } + { integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== } engines: { node: '>= 0.4' } side-channel-map@1.0.1: @@ -12125,10 +11871,10 @@ packages: resolution: { integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== } - sitemap@9.0.1: + sitemap@8.0.2: resolution: - { integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ== } - engines: { node: '>=20.19.5', npm: '>=10.8.2' } + { integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ== } + engines: { node: '>=14.0.0', npm: '>=6.0.0' } hasBin: true slash@3.0.0: @@ -12155,9 +11901,9 @@ packages: { integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== } engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } - smol-toml@1.6.1: + smol-toml@1.6.0: resolution: - { integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg== } + { integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw== } engines: { node: '>= 18' } socks-proxy-agent@6.2.1: @@ -12165,9 +11911,9 @@ packages: { integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== } engines: { node: '>= 10' } - socks@2.8.9: + socks@2.8.7: resolution: - { integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw== } + { integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== } engines: { node: '>= 10.0.0', npm: '>= 3.0.0' } sonic-boom@4.2.1: @@ -12224,9 +11970,9 @@ packages: resolution: { integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== } - spdx-license-ids@3.0.23: + spdx-license-ids@3.0.22: resolution: - { integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw== } + { integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ== } split2@4.2.0: resolution: @@ -12284,21 +12030,15 @@ packages: { integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== } engines: { node: '>= 0.4' } - storybook@10.4.2: + storybook@10.3.5: resolution: - { integrity: sha512-5Ax5vbHxFgMBGGhQDm75Rrumm/HZC4ICFhMcJaM0UlqnC/4FKj/IaZtImZFupknyiiyUEcWHPQFA2kX3/VSv1A== } + { integrity: sha512-uBSZu/GZa9aEIW3QMGvdQPMZWhGxSe4dyRWU8B3/Vd47Gy/XLC7tsBxRr13txmmPOEDHZR94uLuq0H50fvuqBw== } hasBin: true peerDependencies: - '@types/react': '*' prettier: ^2 || ^3 - vite-plus: ^0.1.15 peerDependenciesMeta: - '@types/react': - optional: true prettier: optional: true - vite-plus: - optional: true stream-replace-string@2.0.0: resolution: @@ -12309,9 +12049,9 @@ packages: { integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== } engines: { node: '>=10.0.0' } - streamx@2.26.0: + streamx@2.23.0: resolution: - { integrity: sha512-VvNG1K72Po/xwJzxZFnZ++Tbrv4lwSptsbkFuzXCJAYZvCK5nnxsvXU6ajqkv7chyiI1Y0YXq2Jh8Iy8Y7NF/A== } + { integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg== } string-argv@0.3.2: resolution: @@ -12379,9 +12119,9 @@ packages: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } engines: { node: '>=8' } - strip-ansi@7.2.0: + strip-ansi@7.1.2: resolution: - { integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== } + { integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== } engines: { node: '>=12' } strip-bom@3.0.0: @@ -12427,9 +12167,9 @@ packages: resolution: { integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q== } - strtok3@10.3.5: + strtok3@10.3.4: resolution: - { integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA== } + { integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== } engines: { node: '>=18' } style-to-js@1.1.21: @@ -12484,19 +12224,19 @@ packages: svelte: optional: true - svgo@4.0.1: + svgo@4.0.0: resolution: - { integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w== } + { integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw== } engines: { node: '>=16' } hasBin: true - swagger-ui-dist@5.32.6: + swagger-ui-dist@5.31.0: resolution: - { integrity: sha512-75ttZNaYCLoFPnozPZcTUU6mS3wKT8l7WLjU5zJSHFeJa23i5vtnze6IiCl4jDMPeQTXVXIgovq4M11NNfQvSA== } + { integrity: sha512-zSUTIck02fSga6rc0RZP3b7J7wgHXwLea8ZjgLA3Vgnb8QeOl3Wou2/j5QkzSGeoz6HusP/coYuJl33aQxQZpg== } - synckit@0.11.13: + synckit@0.11.12: resolution: - { integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg== } + { integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ== } engines: { node: ^14.18.0 || >=16.0.0 } tagged-tag@1.0.0: @@ -12526,9 +12266,9 @@ packages: { integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== } engines: { node: '>=6' } - tar-stream@3.2.0: + tar-stream@3.1.7: resolution: - { integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg== } + { integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== } tar@6.2.1: resolution: @@ -12536,10 +12276,6 @@ packages: engines: { node: '>=10' } deprecated: Old versions of tar 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 - teex@1.0.1: - resolution: - { integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== } - text-decoder@1.2.7: resolution: { integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ== } @@ -12548,9 +12284,9 @@ packages: resolution: { integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== } - thread-stream@4.2.0: + thread-stream@4.0.0: resolution: - { integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ== } + { integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA== } engines: { node: '>=20' } throttleit@1.0.1: @@ -12569,18 +12305,22 @@ packages: resolution: { integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== } + tiny-warning@1.0.3: + resolution: + { integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== } + tinybench@2.9.0: resolution: { integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== } - tinyexec@1.2.4: + tinyexec@1.0.2: resolution: - { integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg== } + { integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== } engines: { node: '>=18' } - tinyglobby@0.2.17: + tinyglobby@0.2.15: resolution: - { integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g== } + { integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== } engines: { node: '>=12.0.0' } tinyrainbow@2.0.0: @@ -12607,9 +12347,9 @@ packages: { integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ== } hasBin: true - tmp@0.2.7: + tmp@0.2.5: resolution: - { integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw== } + { integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== } engines: { node: '>=14.14' } to-regex-range@5.0.1: @@ -12617,10 +12357,10 @@ packages: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } engines: { node: '>=8.0' } - toad-cache@3.7.1: + toad-cache@3.7.0: resolution: - { integrity: sha512-5DXWzE4Vz7xNHsv+xQ+MGfJYyC78Aok3tEr0MNwHoRf7vZnga1mQXZ4/Nsodld4VR6Wd+VhfmqnNrsRJyYPfrQ== } - engines: { node: '>=20' } + { integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw== } + engines: { node: '>=12' } toidentifier@1.0.1: resolution: @@ -12719,6 +12459,12 @@ packages: resolution: { integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== } + tsx@4.21.0: + resolution: + { integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw== } + engines: { node: '>=18.0.0' } + hasBin: true + tsx@4.8.2: resolution: { integrity: sha512-hmmzS4U4mdy1Cnzpl/NQiPUC2k34EcNSTZYVJThYKhdqTwuBeF+4cG9KUK/PFQ7KHaAaYwqlb7QfmsE2nuj+WA== } @@ -12729,9 +12475,45 @@ packages: resolution: { integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== } - turbo@2.9.16: + turbo-darwin-64@2.8.10: resolution: - { integrity: sha512-NqgRQy6j6dPYcdSdv0q1g9QsZg7SWg87RERM8otw/1AtKU2yTFVClOM7cbwKzOonZr/Ek1blTBucw64L9H0Bwg== } + { integrity: sha512-A03fXh+B7S8mL3PbdhTd+0UsaGrhfyPkODvzBDpKRY7bbeac4MDFpJ7I+Slf2oSkCEeSvHKR7Z4U71uKRUfX7g== } + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.8.10: + resolution: + { integrity: sha512-sidzowgWL3s5xCHLeqwC9M3s9M0i16W1nuQF3Mc7fPHpZ+YPohvcbVFBB2uoRRHYZg6yBnwD4gyUHKTeXfwtXA== } + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.8.10: + resolution: + { integrity: sha512-YK9vcpL3TVtqonB021XwgaQhY9hJJbKKUhLv16osxV0HkcQASQWUqR56yMge7puh6nxU67rQlTq1b7ksR1T3KA== } + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.8.10: + resolution: + { integrity: sha512-3+j2tL0sG95iBJTm+6J8/45JsETQABPqtFyYjVjBbi6eVGdtNTiBmHNKrbvXRlQ3ZbUG75bKLaSSDHSEEN+btQ== } + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.8.10: + resolution: + { integrity: sha512-hdeF5qmVY/NFgiucf8FW0CWJWtyT2QPm5mIsX0W1DXAVzqKVXGq+Zf+dg4EUngAFKjDzoBeN6ec2Fhajwfztkw== } + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.8.10: + resolution: + { integrity: sha512-QGdr/Q8LWmj+ITMkSvfiz2glf0d7JG0oXVzGL3jxkGqiBI1zXFj20oqVY0qWi+112LO9SVrYdpHS0E/oGFrMbQ== } + cpu: [arm64] + os: [win32] + + turbo@2.8.10: + resolution: + { integrity: sha512-OxbzDES66+x7nnKGg2MwBA1ypVsZoDTLHpeaP4giyiHSixbsiTaMyeJqbEyvBdp5Cm28fc+8GG6RdQtic0ijwQ== } hasBin: true tw-animate-css@1.4.0: @@ -12767,9 +12549,9 @@ packages: { integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== } engines: { node: '>=16' } - type-fest@5.7.0: + type-fest@5.4.4: resolution: - { integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg== } + { integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw== } engines: { node: '>=20' } type-is@1.6.18: @@ -12777,10 +12559,10 @@ packages: { integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== } engines: { node: '>= 0.6' } - type-is@2.1.0: + type-is@2.0.1: resolution: - { integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA== } - engines: { node: '>= 18' } + { integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== } + engines: { node: '>= 0.6' } typed-array-buffer@1.0.3: resolution: @@ -12797,9 +12579,9 @@ packages: { integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== } engines: { node: '>= 0.4' } - typed-array-length@1.0.8: + typed-array-length@1.0.7: resolution: - { integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g== } + { integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== } engines: { node: '>= 0.4' } typedarray@0.0.6: @@ -12829,17 +12611,17 @@ packages: resolution: { integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ== } - typescript-eslint@8.60.1: + typescript-eslint@8.58.2: resolution: - { integrity: sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA== } + { integrity: sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ== } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: 6.0.x - typescript@6.0.3: + typescript@6.0.2: resolution: - { integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== } + { integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ== } engines: { node: '>=14.17' } hasBin: true @@ -12847,9 +12629,9 @@ packages: resolution: { integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== } - ufo@1.6.4: + ufo@1.6.3: resolution: - { integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA== } + { integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q== } uid@2.0.2: resolution: @@ -12865,11 +12647,6 @@ packages: resolution: { integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw== } - unbash@2.2.0: - resolution: - { integrity: sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w== } - engines: { node: '>=14' } - unbox-primitive@1.1.0: resolution: { integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== } @@ -12973,14 +12750,9 @@ packages: { integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww== } engines: { node: '>=18.12.0' } - unplugin@3.0.0: - resolution: - { integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg== } - engines: { node: ^20.19.0 || >=22.12.0 } - - unstorage@1.17.5: + unstorage@1.17.4: resolution: - { integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg== } + { integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw== } peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -13101,7 +12873,6 @@ packages: 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 vary@1.1.2: @@ -13143,9 +12914,9 @@ packages: peerDependencies: vite: '>=2.0.0' - vite@6.4.3: + vite@6.4.1: resolution: - { integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A== } + { integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true peerDependencies: @@ -13184,30 +12955,71 @@ packages: yaml: optional: true - vitefu@1.1.3: + vite@7.3.1: resolution: - { integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg== } + { integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== } + engines: { node: ^20.19.0 || >=22.12.0 } + hasBin: true peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.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 + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.1: + resolution: + { integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ== } + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 peerDependenciesMeta: vite: optional: true - vitest@4.1.8: + vitest@4.1.4: resolution: - { integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig== } + { integrity: sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg== } 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.8 - '@vitest/browser-preview': 4.1.8 - '@vitest/browser-webdriverio': 4.1.8 - '@vitest/coverage-istanbul': 4.1.8 - '@vitest/coverage-v8': 4.1.8 - '@vitest/ui': 4.1.8 + '@vitest/browser-playwright': 4.1.4 + '@vitest/browser-preview': 4.1.4 + '@vitest/browser-webdriverio': 4.1.4 + '@vitest/coverage-istanbul': 4.1.4 + '@vitest/coverage-v8': 4.1.4 + '@vitest/ui': 4.1.4 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -13235,36 +13047,36 @@ packages: jsdom: optional: true - volar-service-css@0.0.70: + volar-service-css@0.0.68: resolution: - { integrity: sha512-K1qyOvBpE3rzdAv3e4/6Rv5yizrYPy5R/ne3IWCAzLBuMO4qBMV3kSqWzj6KUVe6S0AnN6wxF7cRkiaKfYMYJw== } + { integrity: sha512-lJSMh6f3QzZ1tdLOZOzovLX0xzAadPhx8EKwraDLPxBndLCYfoTvnNuiFFV8FARrpAlW5C0WkH+TstPaCxr00Q== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-emmet@0.0.70: + volar-service-emmet@0.0.68: resolution: - { integrity: sha512-xi5bC4m/VyE3zy/n2CXspKeDZs3qA41tHLTw275/7dNWM/RqE2z3BnDICQybHIVp/6G1iOQj5c1qXMgQC08TNg== } + { integrity: sha512-nHvixrRQ83EzkQ4G/jFxu9Y4eSsXS/X2cltEPDM+K9qZmIv+Ey1w0tg1+6caSe8TU5Hgw4oSTwNMf/6cQb3LzQ== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-html@0.0.70: + volar-service-html@0.0.68: resolution: - { integrity: sha512-eR6vCgMdmYAo4n+gcT7DSyBQbwB8S3HZZvSagTf0sxNaD4WppMCFfpqWnkrlGStPKMZvMiejRRVmqsX9dYcTvQ== } + { integrity: sha512-fru9gsLJxy33xAltXOh4TEdi312HP80hpuKhpYQD4O5hDnkNPEBdcQkpB+gcX0oK0VxRv1UOzcGQEUzWCVHLfA== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-prettier@0.0.70: + volar-service-prettier@0.0.68: resolution: - { integrity: sha512-Z6BCFSpGVCd8BPAsZ785Kce1BGlWd5ODqmqZGVuB14MJvrR4+CYz6cDy4F+igmE1gMifqfvMhdgT8Aud4M5ngg== } + { integrity: sha512-grUmWHkHlebMOd6V8vXs2eNQUw/bJGJMjekh/EPf/p2ZNTK0Uyz7hoBRngcvGfJHMsSXZH8w/dZTForIW/4ihw== } peerDependencies: '@volar/language-service': ~2.4.0 prettier: ^2.2 || ^3.0 @@ -13274,40 +13086,40 @@ packages: prettier: optional: true - volar-service-typescript-twoslash-queries@0.0.70: + volar-service-typescript-twoslash-queries@0.0.68: resolution: - { integrity: sha512-IdD13Z9N2Bu8EM6CM0fDV1E69olEYGHDU25X51YXmq8Y0CmJ2LNj6gOiBJgpS5JGUqFzECVhMNBW7R0sPdRTMQ== } + { integrity: sha512-NugzXcM0iwuZFLCJg47vI93su5YhTIweQuLmZxvz5ZPTaman16JCvmDZexx2rd5T/75SNuvvZmrTOTNYUsfe5w== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-typescript@0.0.70: + volar-service-typescript@0.0.68: resolution: - { integrity: sha512-l46Bx4cokkUedTd74ojO5H/zqHZJ8SUuyZ0IB8JN4jfRqUM3bQFBHoOwlZCyZmOeO0A3RQNkMnFclxO4c++gsg== } + { integrity: sha512-z7B/7CnJ0+TWWFp/gh2r5/QwMObHNDiQiv4C9pTBNI2Wxuwymd4bjEORzrJ/hJ5Yd5+OzeYK+nFCKevoGEEeKw== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-yaml@0.0.70: + volar-service-yaml@0.0.68: resolution: - { integrity: sha512-0c8bXDBeoATF9F6iPIlOuYTuZAC4c+yi0siQo920u7eiBJk8oQmUmg9cDUbR4+Gl++bvGP4plj3fErbJuPqdcQ== } + { integrity: sha512-84XgE02LV0OvTcwfqhcSwVg4of3MLNUWPMArO6Aj8YXqyEVnPu8xTEMY2btKSq37mVAPuaEVASI4e3ptObmqcA== } peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - vscode-css-languageservice@6.3.10: + vscode-css-languageservice@6.3.9: resolution: - { integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA== } + { integrity: sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA== } - vscode-html-languageservice@5.6.2: + vscode-html-languageservice@5.6.1: resolution: - { integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg== } + { integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA== } vscode-json-languageservice@4.1.8: resolution: @@ -13319,19 +13131,10 @@ packages: { integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== } engines: { node: '>=14.0.0' } - vscode-jsonrpc@9.0.0: - resolution: - { integrity: sha512-+VvMmQPJhtvJ+8O+zu2JKIRiLxXF8NW7krWgyMGeOHrp4Cn23T5hc0v2LknNeopDOB70wghHAds7mKtcZ0I4Sg== } - engines: { node: '>=14.0.0' } - vscode-languageserver-protocol@3.17.5: resolution: { integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== } - vscode-languageserver-protocol@3.18.0: - resolution: - { integrity: sha512-Zdz+kJ12Iz6tc11xfZyEo501bBATHXrCjmMfnaR3pMnf1CoqZBKIynba3P+/bi9VEdrMbNtAVKYpKhbODvqy+Q== } - vscode-languageserver-textdocument@1.0.12: resolution: { integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA== } @@ -13340,10 +13143,6 @@ packages: resolution: { integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== } - vscode-languageserver-types@3.18.0: - resolution: - { integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g== } - vscode-languageserver@9.0.1: resolution: { integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g== } @@ -13409,9 +13208,9 @@ packages: { integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA== } engines: { node: '>=4' } - which-typed-array@1.1.21: + which-typed-array@1.1.20: resolution: - { integrity: sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw== } + { integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== } engines: { node: '>= 0.4' } which@2.0.2: @@ -13469,9 +13268,9 @@ packages: resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } - ws@8.21.0: + ws@8.19.0: resolution: - { integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== } + { integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== } engines: { node: '>=10.0.0' } peerDependencies: bufferutil: ^4.0.1 @@ -13498,6 +13297,11 @@ packages: { integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw== } engines: { node: '>=16.0.0' } + xtend@4.0.2: + resolution: + { integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== } + engines: { node: '>=0.4' } + xxhash-wasm@1.1.0: resolution: { integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA== } @@ -13519,14 +13323,14 @@ packages: resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } - yaml-language-server@1.20.0: + yaml-language-server@1.19.2: resolution: - { integrity: sha512-qhjK/bzSRZ6HtTvgeFvjNPJGWdZ0+x5NREV/9XZWFjIGezew2b4r5JPy66IfOhd5OA7KeFwk1JfmEbnTvev0cA== } + { integrity: sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg== } hasBin: true - yaml@1.10.3: + yaml@1.10.2: resolution: - { integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA== } + { integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== } engines: { node: '>= 6' } yaml@2.7.1: @@ -13535,9 +13339,9 @@ packages: engines: { node: '>= 14' } hasBin: true - yaml@2.9.0: + yaml@2.8.2: resolution: - { integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA== } + { integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== } engines: { node: '>= 14.6' } hasBin: true @@ -13565,9 +13369,9 @@ packages: resolution: { integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== } - yauzl@3.3.2: + yauzl@3.2.0: resolution: - { integrity: sha512-Md9ankxxN23wncAN8s7+Tn3Co52zLUPMtnrLAbVCnfG5d2tKBFfmygYSgXlqFgXObtzIgqkx7aNgDBpso9+4qA== } + { integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w== } engines: { node: '>=12' } yocto-queue@0.1.0: @@ -13590,11 +13394,11 @@ packages: { integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug== } engines: { node: '>=18' } - zod-to-json-schema@3.25.2: + zod-to-json-schema@3.25.1: resolution: - { integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA== } + { integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA== } peerDependencies: - zod: ^3.25.28 || ^4 + zod: ^3.25 || ^4 zod-to-ts@1.2.0: resolution: @@ -13614,9 +13418,28 @@ packages: resolution: { integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== } - zod@4.4.3: + zod@4.3.6: + resolution: + { integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== } + + zustand@5.0.11: resolution: - { integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ== } + { integrity: sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg== } + engines: { node: '>=12.20.0' } + peerDependencies: + '@types/react': '*' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true zustand@5.0.14: resolution: @@ -13642,16 +13465,16 @@ packages: { integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== } snapshots: - '@adobe/css-tools@4.5.0': {} + '@adobe/css-tools@4.4.4': {} '@alloc/quick-lru@5.2.0': {} - '@astrojs/check@0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.8.3)(typescript@6.0.3)': + '@astrojs/check@0.9.6(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@6.0.2)': dependencies: - '@astrojs/language-server': 2.16.10(prettier-plugin-astro@0.14.1)(prettier@3.8.3)(typescript@6.0.3) + '@astrojs/language-server': 2.16.3(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@6.0.2) chokidar: 4.0.3 kleur: 4.1.5 - typescript: 6.0.3 + typescript: 6.0.2 yargs: 17.7.2 transitivePeerDependencies: - prettier @@ -13659,45 +13482,43 @@ snapshots: '@astrojs/compiler@2.13.1': {} - '@astrojs/compiler@3.0.1': {} + '@astrojs/internal-helpers@0.7.5': {} - '@astrojs/internal-helpers@0.7.6': {} - - '@astrojs/language-server@2.16.10(prettier-plugin-astro@0.14.1)(prettier@3.8.3)(typescript@6.0.3)': + '@astrojs/language-server@2.16.3(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@6.0.2)': dependencies: '@astrojs/compiler': 2.13.1 - '@astrojs/yaml2ts': 0.2.4 + '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@volar/kit': 2.4.28(typescript@6.0.3) + '@volar/kit': 2.4.28(typescript@6.0.2) '@volar/language-core': 2.4.28 '@volar/language-server': 2.4.28 '@volar/language-service': 2.4.28 muggle-string: 0.4.1 - tinyglobby: 0.2.17 - volar-service-css: 0.0.70(@volar/language-service@2.4.28) - volar-service-emmet: 0.0.70(@volar/language-service@2.4.28) - volar-service-html: 0.0.70(@volar/language-service@2.4.28) - volar-service-prettier: 0.0.70(@volar/language-service@2.4.28)(prettier@3.8.3) - volar-service-typescript: 0.0.70(@volar/language-service@2.4.28) - volar-service-typescript-twoslash-queries: 0.0.70(@volar/language-service@2.4.28) - volar-service-yaml: 0.0.70(@volar/language-service@2.4.28) - vscode-html-languageservice: 5.6.2 + tinyglobby: 0.2.15 + volar-service-css: 0.0.68(@volar/language-service@2.4.28) + volar-service-emmet: 0.0.68(@volar/language-service@2.4.28) + volar-service-html: 0.0.68(@volar/language-service@2.4.28) + volar-service-prettier: 0.0.68(@volar/language-service@2.4.28)(prettier@3.8.1) + volar-service-typescript: 0.0.68(@volar/language-service@2.4.28) + volar-service-typescript-twoslash-queries: 0.0.68(@volar/language-service@2.4.28) + volar-service-yaml: 0.0.68(@volar/language-service@2.4.28) + vscode-html-languageservice: 5.6.1 vscode-uri: 3.1.0 optionalDependencies: - prettier: 3.8.3 + prettier: 3.8.1 prettier-plugin-astro: 0.14.1 transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@6.3.11': + '@astrojs/markdown-remark@6.3.10': dependencies: - '@astrojs/internal-helpers': 0.7.6 + '@astrojs/internal-helpers': 0.7.5 '@astrojs/prism': 3.3.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.2.0 - js-yaml: 4.2.0 + js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -13705,8 +13526,8 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.23.0 - smol-toml: 1.6.1 + shiki: 3.22.0 + smol-toml: 1.6.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -13715,12 +13536,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0))': + '@astrojs/mdx@4.3.13(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2))': dependencies: - '@astrojs/markdown-remark': 6.3.11 + '@astrojs/markdown-remark': 6.3.10 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0) + astro: 5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -13738,40 +13559,40 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/sitemap@3.7.3': + '@astrojs/sitemap@3.7.0': dependencies: - sitemap: 9.0.1 + sitemap: 8.0.2 stream-replace-string: 2.0.0 - zod: 4.4.3 + zod: 3.25.76 - '@astrojs/starlight-tailwind@4.0.1(@astrojs/starlight@0.34.8(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)))(tailwindcss@4.3.0)': + '@astrojs/starlight-tailwind@4.0.1(@astrojs/starlight@0.34.8(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)))(tailwindcss@4.3.0)': dependencies: - '@astrojs/starlight': 0.34.8(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)) + '@astrojs/starlight': 0.34.8(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)) tailwindcss: 4.3.0 - '@astrojs/starlight@0.34.8(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0))': + '@astrojs/starlight@0.34.8(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2))': dependencies: - '@astrojs/markdown-remark': 6.3.11 - '@astrojs/mdx': 4.3.14(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)) - '@astrojs/sitemap': 3.7.3 - '@pagefind/default-ui': 1.5.2 + '@astrojs/markdown-remark': 6.3.10 + '@astrojs/mdx': 4.3.13(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)) + '@astrojs/sitemap': 3.7.0 + '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0) - astro-expressive-code: 0.41.7(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)) + astro: 5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + astro-expressive-code: 0.41.6(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 i18next: 23.16.8 - js-yaml: 4.2.0 + js-yaml: 4.1.1 klona: 2.0.6 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 - pagefind: 1.5.2 + pagefind: 1.4.0 rehype: 13.0.2 rehype-format: 5.0.1 remark-directive: 3.0.1 @@ -13794,28 +13615,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/yaml2ts@0.2.4': + '@astrojs/yaml2ts@0.2.2': dependencies: - yaml: 2.9.0 + yaml: 2.8.2 '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.12 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.12 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 - '@aws-sdk/util-locate-window': 3.965.5 + '@aws-sdk/types': 3.973.12 + '@aws-sdk/util-locate-window': 3.965.7 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -13824,15 +13645,15 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 - '@aws-sdk/util-locate-window': 3.965.5 + '@aws-sdk/types': 3.973.12 + '@aws-sdk/util-locate-window': 3.965.7 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.12 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -13841,46 +13662,42 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.12 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/checksums@3.1000.1': + '@aws-sdk/checksums@3.1000.3': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1061.0': + '@aws-sdk/client-s3@3.1064.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-node': 3.972.50 - '@aws-sdk/middleware-bucket-endpoint': 3.972.20 - '@aws-sdk/middleware-expect-continue': 3.972.16 - '@aws-sdk/middleware-flexible-checksums': 3.974.26 - '@aws-sdk/middleware-location-constraint': 3.972.13 - '@aws-sdk/middleware-sdk-s3': 3.972.47 - '@aws-sdk/middleware-ssec': 3.972.13 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/credential-provider-node': 3.972.53 + '@aws-sdk/middleware-flexible-checksums': 3.974.28 + '@aws-sdk/middleware-sdk-s3': 3.972.49 + '@aws-sdk/signature-v4-multi-region': 3.996.33 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/core@3.974.17': + '@aws-sdk/core@3.974.19': dependencies: - '@aws-sdk/types': 3.973.10 - '@aws-sdk/xml-builder': 3.972.27 + '@aws-sdk/types': 3.973.12 + '@aws-sdk/xml-builder': 3.972.29 '@aws/lambda-invoke-store': 0.2.4 '@smithy/core': 3.24.6 '@smithy/signature-v4': 5.4.6 @@ -13888,172 +13705,152 @@ snapshots: bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.43': + '@aws-sdk/credential-provider-env@3.972.45': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.45': + '@aws-sdk/credential-provider-http@3.972.47': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.48': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-login': 3.972.47 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/credential-provider-ini@3.972.51': + dependencies: + '@aws-sdk/core': 3.974.19 + '@aws-sdk/credential-provider-env': 3.972.45 + '@aws-sdk/credential-provider-http': 3.972.47 + '@aws-sdk/credential-provider-login': 3.972.50 + '@aws-sdk/credential-provider-process': 3.972.45 + '@aws-sdk/credential-provider-sso': 3.972.50 + '@aws-sdk/credential-provider-web-identity': 3.972.50 + '@aws-sdk/nested-clients': 3.997.18 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/credential-provider-imds': 4.3.8 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.47': + '@aws-sdk/credential-provider-login@3.972.50': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/nested-clients': 3.997.18 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.50': + '@aws-sdk/credential-provider-node@3.972.53': dependencies: - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-ini': 3.972.48 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/credential-provider-env': 3.972.45 + '@aws-sdk/credential-provider-http': 3.972.47 + '@aws-sdk/credential-provider-ini': 3.972.51 + '@aws-sdk/credential-provider-process': 3.972.45 + '@aws-sdk/credential-provider-sso': 3.972.50 + '@aws-sdk/credential-provider-web-identity': 3.972.50 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/credential-provider-imds': 4.3.8 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.43': + '@aws-sdk/credential-provider-process@3.972.45': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.47': + '@aws-sdk/credential-provider-sso@3.972.50': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/token-providers': 3.1060.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/nested-clients': 3.997.18 + '@aws-sdk/token-providers': 3.1064.0 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.47': + '@aws-sdk/credential-provider-web-identity@3.972.50': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/nested-clients': 3.997.18 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.972.20': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/middleware-expect-continue@3.972.16': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.974.26': - dependencies: - '@aws-sdk/checksums': 3.1000.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.972.13': + '@aws-sdk/middleware-flexible-checksums@3.974.28': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 + '@aws-sdk/checksums': 3.1000.3 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.47': + '@aws-sdk/middleware-sdk-s3@3.972.49': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/signature-v4-multi-region': 3.996.33 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.13': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.997.15': + '@aws-sdk/nested-clients@3.997.18': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/signature-v4-multi-region': 3.996.33 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.1061.0': + '@aws-sdk/s3-request-presigner@3.1064.0': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/signature-v4-multi-region': 3.996.33 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.31': + '@aws-sdk/signature-v4-multi-region@3.996.33': dependencies: - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.12 '@smithy/signature-v4': 5.4.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1060.0': + '@aws-sdk/token-providers@3.1064.0': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.19 + '@aws-sdk/nested-clients': 3.997.18 + '@aws-sdk/types': 3.973.12 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/types@3.973.10': + '@aws-sdk/types@3.973.12': dependencies: '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.5': + '@aws-sdk/util-locate-window@3.965.7': dependencies: tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.27': + '@aws-sdk/xml-builder@3.972.29': dependencies: '@smithy/types': 4.14.3 fast-xml-parser: 5.7.3 @@ -14061,25 +13858,25 @@ snapshots: '@aws/lambda-invoke-store@0.2.4': {} - '@babel/code-frame@7.29.7': + '@babel/code-frame@7.29.0': dependencies: - '@babel/helper-validator-identifier': 7.29.7 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.7': {} + '@babel/compat-data@7.29.0': {} - '@babel/core@7.29.7': + '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@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) @@ -14089,148 +13886,150 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.7': + '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.29.7': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.2 + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-globals@7.29.7': {} + '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.29.7': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.29.7': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-option@7.29.7': {} + '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.29.7': + '@babel/helpers@7.28.6': dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - '@babel/parser@7.29.7': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/runtime@7.29.7': {} + '@babel/runtime@7.28.6': {} - '@babel/template@7.29.7': + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.29.7': + '@babel/types@7.29.0': dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@base-ui/react@1.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@base-ui/react@1.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.29.7 - '@base-ui/utils': 0.2.9(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@babel/runtime': 7.29.2 + '@base-ui/utils': 0.2.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@floating-ui/react-dom': 2.1.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@floating-ui/utils': 0.2.11 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.6.0(react@19.1.0) - '@base-ui/react@1.5.0(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@base-ui/react@1.4.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@babel/runtime': 7.29.7 - '@base-ui/utils': 0.2.9(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@babel/runtime': 7.29.2 + '@base-ui/utils': 0.2.8(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@floating-ui/react-dom': 2.1.8(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@floating-ui/utils': 0.2.11 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x use-sync-external-store: 1.6.0(react@vendor+react@19.x) - '@base-ui/utils@0.2.9(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@base-ui/utils@0.2.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.2 '@floating-ui/utils': 0.2.11 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - reselect: 5.2.0 + reselect: 5.1.1 use-sync-external-store: 1.6.0(react@19.1.0) - '@base-ui/utils@0.2.9(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@base-ui/utils@0.2.8(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.2 '@floating-ui/utils': 0.2.11 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x - reselect: 5.2.0 + reselect: 5.1.1 use-sync-external-store: 1.6.0(react@vendor+react@19.x) '@bcoe/v8-coverage@1.0.2': {} '@blazediff/core@1.9.1': {} - '@borewit/text-codec@0.2.2': {} + '@borewit/text-codec@0.2.1': {} '@capsizecss/unpack@4.0.0': dependencies: - fontkitten: 1.0.3 + fontkitten: 1.0.2 - '@casl/ability@6.8.1': + '@casl/ability@6.8.0': dependencies: '@ucast/mongo2js': 1.4.1 - '@casl/prisma@1.6.2(@casl/ability@6.8.1)(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))': + '@casl/prisma@1.6.1(@casl/ability@6.8.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))': dependencies: - '@casl/ability': 6.8.1 - '@prisma/client': 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) + '@casl/ability': 6.8.0 + '@prisma/client': 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) '@ucast/core': 1.10.2 '@ucast/js': 3.1.0 @@ -14267,31 +14066,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@douglasneuroinformatics/esbuild-plugin-prisma@1.0.1(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(@prisma/engines@6.19.3)(esbuild@0.23.1)(prisma@6.19.3(typescript@6.0.3))': + '@douglasneuroinformatics/esbuild-plugin-prisma@1.0.1(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(@prisma/engines@6.19.2)(esbuild@0.23.1)(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))': dependencies: - '@prisma/client': 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) - '@prisma/engines': 6.19.3 + '@prisma/client': 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) + '@prisma/engines': 6.19.2 '@prisma/get-platform': 5.22.0 esbuild: 0.23.1 - prisma: 6.19.3(typescript@6.0.3) - - '@douglasneuroinformatics/eslint-config@6.0.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@eslint/js': 9.39.4 - eslint: 9.23.0(jiti@2.7.0) - eslint-plugin-astro: 1.7.0(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-jsdoc: 50.8.0(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-jsonc: 2.21.1(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-perfectionist: 5.9.0(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.7.0)) - eslint-plugin-svelte: 2.46.1(eslint@9.23.0(jiti@2.7.0)) + prisma: 6.19.2(magicast@0.3.5)(typescript@6.0.2) + + '@douglasneuroinformatics/eslint-config@6.0.0(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2)': + dependencies: + '@eslint/js': 9.39.3 + eslint: 9.23.0(jiti@2.6.1) + eslint-plugin-astro: 1.7.0(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-jsdoc: 50.8.0(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-jsonc: 2.21.1(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-perfectionist: 5.8.0(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.6.1)) + eslint-plugin-svelte: 2.46.1(eslint@9.23.0(jiti@2.6.1)) globals: 15.15.0 jsonc-eslint-parser: 2.4.2 - typescript-eslint: 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) + typescript-eslint: 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - '@eslint/json' - '@typescript-eslint/parser' @@ -14305,7 +14104,7 @@ snapshots: dependencies: '@hpke/core': 1.9.0 - '@douglasneuroinformatics/libjs@3.2.1(neverthrow@8.2.0)(zod@4.4.3)': + '@douglasneuroinformatics/libjs@3.2.1(neverthrow@8.2.0)(zod@4.3.6)': dependencies: clean-stack: 5.2.0 extract-stack: 3.0.0 @@ -14313,7 +14112,7 @@ snapshots: serialize-error: 12.0.0 stringify-object: 5.0.0 type-fest: 4.41.0 - zod: 4.4.3 + zod: 4.3.6 '@douglasneuroinformatics/libjs@3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x)': dependencies: @@ -14325,28 +14124,28 @@ snapshots: type-fest: 4.41.0 zod: link:vendor/zod@3.x - '@douglasneuroinformatics/libnest@8.3.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-fastify@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24))(@nestjs/testing@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-express@11.1.24))(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(@swc/types@0.1.26)(fastify@5.8.5)(neverthrow@8.2.0)(reflect-metadata@0.1.14)(rollup@4.61.1)(rxjs@7.8.2)(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))(vitest@4.1.8)(zod@vendor+zod@3.x)': + '@douglasneuroinformatics/libnest@8.3.1(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-fastify@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14))(@nestjs/testing@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-express@11.1.14))(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(@swc/types@0.1.25)(fastify@5.7.4)(neverthrow@8.2.0)(reflect-metadata@0.1.14)(rollup@4.58.0)(rxjs@7.8.2)(typescript@6.0.2)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.4)(zod@vendor+zod@3.x)': dependencies: '@douglasneuroinformatics/libjs': 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/platform-fastify': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24) - '@nestjs/swagger': 11.4.4(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14) - '@nestjs/testing': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-express@11.1.24) - '@nestjs/throttler': 6.5.0(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14) - '@prisma/client': 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) - '@prisma/engines': 6.19.3 - '@prisma/get-platform': 6.19.3 - '@swc-node/register': 1.11.1(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3) - '@swc/core': 1.15.40(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/platform-fastify': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14) + '@nestjs/swagger': 11.2.6(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14) + '@nestjs/testing': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-express@11.1.14) + '@nestjs/throttler': 6.5.0(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14) + '@prisma/client': 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) + '@prisma/engines': 6.19.2 + '@prisma/get-platform': 6.19.2 + '@swc-node/register': 1.11.1(@swc/core@1.15.11(@swc/helpers@0.5.18))(@swc/types@0.1.25)(typescript@6.0.2) + '@swc/core': 1.15.11(@swc/helpers@0.5.18) + '@swc/helpers': 0.5.18 '@types/nodemailer': 7.0.11 '@types/supertest': 6.0.3 chalk: 5.6.2 commander: 14.0.3 - es-module-lexer: 2.1.0 - esbuild: 0.27.7 - fastify: 5.8.5 + es-module-lexer: 2.0.0 + esbuild: 0.27.3 + fastify: 5.7.4 neverthrow: 8.2.0 nodemailer: 7.0.13 reflect-metadata: 0.1.14 @@ -14354,12 +14153,12 @@ snapshots: serialize-error: 13.0.1 supertest: 7.2.2 ts-morph: 27.0.2 - type-fest: 5.7.0 - unplugin-swc: 1.5.9(@swc/core@1.15.40(@swc/helpers@0.5.23))(rollup@4.61.1) - vitest: 4.1.8(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(happy-dom@20.10.1)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + type-fest: 5.4.4 + unplugin-swc: 1.5.9(@swc/core@1.15.11(@swc/helpers@0.5.18))(rollup@4.58.0) + vitest: 4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) zod: link:vendor/zod@3.x optionalDependencies: - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@fastify/static' - '@swc/types' @@ -14369,14 +14168,14 @@ snapshots: - supports-color - typescript - '@douglasneuroinformatics/libpasswd@0.0.3(typescript@6.0.3)': + '@douglasneuroinformatics/libpasswd@0.0.3(typescript@6.0.2)': dependencies: '@zxcvbn-ts/core': 3.0.4 '@zxcvbn-ts/language-common': 3.0.4 '@zxcvbn-ts/language-en': 3.0.2 '@zxcvbn-ts/language-fr': 3.0.2 type-fest: 4.41.0 - typescript: 6.0.3 + typescript: 6.0.2 '@douglasneuroinformatics/libstats-darwin-arm64@0.2.1': optional: true @@ -14419,7 +14218,7 @@ snapshots: '@douglasneuroinformatics/libui@6.7.1(immer@10.2.0)(neverthrow@8.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.3.0)(use-sync-external-store@1.6.0(react@19.1.0))(zod@vendor+zod@3.x)': dependencies: - '@base-ui/react': 1.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@base-ui/react': 1.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@douglasneuroinformatics/libjs': 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) '@douglasneuroinformatics/libui-form-types': 0.13.0 '@radix-ui/react-accordion': 1.2.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -14449,7 +14248,7 @@ snapshots: class-variance-authority: 0.7.1 clsx: 2.1.1 lodash-es: 4.17.21 - lucide-react: 1.17.0(react@19.1.0) + lucide-react: 1.11.0(react@19.1.0) motion: 11.18.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -14464,7 +14263,7 @@ snapshots: type-fest: 4.41.0 vaul: 1.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: link:vendor/zod@3.x - zustand: 5.0.14(immer@10.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)) + zustand: 5.0.11(immer@10.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)) transitivePeerDependencies: - '@date-fns/tz' - '@emotion/is-prop-valid' @@ -14477,7 +14276,7 @@ snapshots: '@douglasneuroinformatics/libui@6.7.1(immer@10.2.0)(neverthrow@8.2.0)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(tailwindcss@4.3.0)(use-sync-external-store@1.6.0(react@vendor+react@19.x))(zod@vendor+zod@3.x)': dependencies: - '@base-ui/react': 1.5.0(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@base-ui/react': 1.4.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@douglasneuroinformatics/libjs': 3.2.1(neverthrow@8.2.0)(zod@vendor+zod@3.x) '@douglasneuroinformatics/libui-form-types': 0.13.0 '@radix-ui/react-accordion': 1.2.12(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) @@ -14507,7 +14306,7 @@ snapshots: class-variance-authority: 0.7.1 clsx: 2.1.1 lodash-es: 4.17.21 - lucide-react: 1.17.0(react@vendor+react@19.x) + lucide-react: 1.11.0(react@vendor+react@19.x) motion: 11.18.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x @@ -14522,7 +14321,7 @@ snapshots: type-fest: 4.41.0 vaul: 1.1.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) zod: link:vendor/zod@3.x - zustand: 5.0.14(immer@10.2.0)(react@vendor+react@19.x)(use-sync-external-store@1.6.0(react@vendor+react@19.x)) + zustand: 5.0.11(immer@10.2.0)(react@vendor+react@19.x)(use-sync-external-store@1.6.0(react@vendor+react@19.x)) transitivePeerDependencies: - '@date-fns/tz' - '@emotion/is-prop-valid' @@ -14533,17 +14332,17 @@ snapshots: - neverthrow - use-sync-external-store - '@douglasneuroinformatics/prettier-config@0.3.0(husky@9.1.7)(prettier-plugin-astro@0.14.1)(prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.3))(prettier@3.8.3)': + '@douglasneuroinformatics/prettier-config@0.3.0(husky@9.1.7)(prettier-plugin-astro@0.14.1)(prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.1))(prettier@3.8.1)': dependencies: - prettier: 3.8.3 + prettier: 3.8.1 optionalDependencies: husky: 9.1.7 prettier-plugin-astro: 0.14.1 - prettier-plugin-tailwindcss: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.3) + prettier-plugin-tailwindcss: 0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.1) - '@douglasneuroinformatics/tsconfig@2.0.0(typescript@6.0.3)': + '@douglasneuroinformatics/tsconfig@2.0.0(typescript@6.0.2)': dependencies: - typescript: 6.0.3 + typescript: 6.0.2 '@emmetio/abbreviation@2.3.3': dependencies: @@ -14568,37 +14367,26 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/core@1.9.2': + '@emnapi/core@1.8.1': dependencies: - '@emnapi/wasi-threads': 1.2.1 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.10.0': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.2': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true '@es-joy/jsdoccomment@0.50.2': dependencies: - '@types/estree': 1.0.9 - '@typescript-eslint/types': 8.60.1 + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.56.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -14612,7 +14400,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.7': + '@esbuild/aix-ppc64@0.27.3': optional: true '@esbuild/android-arm64@0.20.2': @@ -14624,7 +14412,7 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.7': + '@esbuild/android-arm64@0.27.3': optional: true '@esbuild/android-arm@0.20.2': @@ -14636,7 +14424,7 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.7': + '@esbuild/android-arm@0.27.3': optional: true '@esbuild/android-x64@0.20.2': @@ -14648,7 +14436,7 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.7': + '@esbuild/android-x64@0.27.3': optional: true '@esbuild/darwin-arm64@0.20.2': @@ -14660,7 +14448,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.7': + '@esbuild/darwin-arm64@0.27.3': optional: true '@esbuild/darwin-x64@0.20.2': @@ -14672,7 +14460,7 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.7': + '@esbuild/darwin-x64@0.27.3': optional: true '@esbuild/freebsd-arm64@0.20.2': @@ -14684,7 +14472,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.7': + '@esbuild/freebsd-arm64@0.27.3': optional: true '@esbuild/freebsd-x64@0.20.2': @@ -14696,7 +14484,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.7': + '@esbuild/freebsd-x64@0.27.3': optional: true '@esbuild/linux-arm64@0.20.2': @@ -14708,7 +14496,7 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.7': + '@esbuild/linux-arm64@0.27.3': optional: true '@esbuild/linux-arm@0.20.2': @@ -14720,7 +14508,7 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.7': + '@esbuild/linux-arm@0.27.3': optional: true '@esbuild/linux-ia32@0.20.2': @@ -14732,7 +14520,7 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.7': + '@esbuild/linux-ia32@0.27.3': optional: true '@esbuild/linux-loong64@0.20.2': @@ -14744,7 +14532,7 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.7': + '@esbuild/linux-loong64@0.27.3': optional: true '@esbuild/linux-mips64el@0.20.2': @@ -14756,7 +14544,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.7': + '@esbuild/linux-mips64el@0.27.3': optional: true '@esbuild/linux-ppc64@0.20.2': @@ -14768,7 +14556,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.7': + '@esbuild/linux-ppc64@0.27.3': optional: true '@esbuild/linux-riscv64@0.20.2': @@ -14780,7 +14568,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.7': + '@esbuild/linux-riscv64@0.27.3': optional: true '@esbuild/linux-s390x@0.20.2': @@ -14792,7 +14580,7 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.7': + '@esbuild/linux-s390x@0.27.3': optional: true '@esbuild/linux-x64@0.20.2': @@ -14804,13 +14592,13 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.7': + '@esbuild/linux-x64@0.27.3': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.7': + '@esbuild/netbsd-arm64@0.27.3': optional: true '@esbuild/netbsd-x64@0.20.2': @@ -14822,7 +14610,7 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.7': + '@esbuild/netbsd-x64@0.27.3': optional: true '@esbuild/openbsd-arm64@0.23.1': @@ -14831,7 +14619,7 @@ snapshots: '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.7': + '@esbuild/openbsd-arm64@0.27.3': optional: true '@esbuild/openbsd-x64@0.20.2': @@ -14843,13 +14631,13 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.7': + '@esbuild/openbsd-x64@0.27.3': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.7': + '@esbuild/openharmony-arm64@0.27.3': optional: true '@esbuild/sunos-x64@0.20.2': @@ -14861,7 +14649,7 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.7': + '@esbuild/sunos-x64@0.27.3': optional: true '@esbuild/win32-arm64@0.20.2': @@ -14873,7 +14661,7 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.7': + '@esbuild/win32-arm64@0.27.3': optional: true '@esbuild/win32-ia32@0.20.2': @@ -14885,7 +14673,7 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.7': + '@esbuild/win32-ia32@0.27.3': optional: true '@esbuild/win32-x64@0.20.2': @@ -14897,12 +14685,12 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.7': + '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.23.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.23.0(jiti@2.6.1))': dependencies: - eslint: 9.23.0(jiti@2.7.0) + eslint: 9.23.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -14911,7 +14699,7 @@ snapshots: dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.5 + minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -14925,23 +14713,23 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.3': dependencies: - ajv: 6.15.0 + ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.2.0 - minimatch: 3.1.5 + js-yaml: 4.1.1 + minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color '@eslint/js@9.23.0': {} - '@eslint/js@9.39.4': {} + '@eslint/js@9.39.3': {} '@eslint/object-schema@2.1.7': {} @@ -14950,7 +14738,7 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 - '@expressive-code/core@0.41.7': + '@expressive-code/core@0.41.6': dependencies: '@ctrl/tinycolor': 4.2.0 hast-util-select: 6.0.4 @@ -14962,37 +14750,37 @@ snapshots: unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - '@expressive-code/plugin-frames@0.41.7': + '@expressive-code/plugin-frames@0.41.6': dependencies: - '@expressive-code/core': 0.41.7 + '@expressive-code/core': 0.41.6 - '@expressive-code/plugin-shiki@0.41.7': + '@expressive-code/plugin-shiki@0.41.6': dependencies: - '@expressive-code/core': 0.41.7 - shiki: 3.23.0 + '@expressive-code/core': 0.41.6 + shiki: 3.22.0 - '@expressive-code/plugin-text-markers@0.41.7': + '@expressive-code/plugin-text-markers@0.41.6': dependencies: - '@expressive-code/core': 0.41.7 + '@expressive-code/core': 0.41.6 '@faker-js/faker@9.9.0': {} '@fastify/ajv-compiler@4.0.5': dependencies: - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) - fast-uri: 3.1.2 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + fast-uri: 3.1.0 '@fastify/cors@11.2.0': dependencies: fastify-plugin: 5.1.0 - toad-cache: 3.7.1 + toad-cache: 3.7.0 '@fastify/error@4.2.0': {} '@fastify/fast-json-stringify-compiler@5.0.3': dependencies: - fast-json-stringify: 6.4.0 + fast-json-stringify: 6.3.0 '@fastify/formbody@8.0.2': dependencies: @@ -15008,17 +14796,38 @@ snapshots: '@fastify/proxy-addr@5.1.0': dependencies: '@fastify/forwarded': 3.0.1 - ipaddr.js: 2.4.0 + ipaddr.js: 2.3.0 + + '@floating-ui/core@1.7.4': + dependencies: + '@floating-ui/utils': 0.2.10 '@floating-ui/core@1.7.5': dependencies: '@floating-ui/utils': 0.2.11 + '@floating-ui/dom@1.7.5': + dependencies: + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 + '@floating-ui/dom@1.7.6': dependencies: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 + '@floating-ui/react-dom@2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@floating-ui/react-dom@2.1.7(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: link:vendor/react@19.x + react-dom: link:vendor/react-dom@19.x + '@floating-ui/react-dom@2.1.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/dom': 1.7.6 @@ -15031,6 +14840,8 @@ snapshots: react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x + '@floating-ui/utils@0.2.10': {} + '@floating-ui/utils@0.2.11': {} '@gar/promisify@1.1.3': @@ -15052,23 +14863,18 @@ snapshots: dependencies: '@hpke/common': 1.10.1 - '@humanfs/core@0.19.2': - dependencies: - '@humanfs/types': 0.15.0 + '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.8': + '@humanfs/node@0.16.7': dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 + '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 - '@humanfs/types@0.15.0': {} - '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.3': {} - '@img/colour@1.1.0': + '@img/colour@1.0.0': optional: true '@img/sharp-darwin-arm64@0.33.5': @@ -15217,12 +15023,12 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -15260,13 +15066,13 @@ snapshots: '@isaacs/cliui@9.0.0': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: glob: 13.0.6 - react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + react-docgen-typescript: 2.4.0(typescript@6.0.2) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -15351,7 +15157,7 @@ snapshots: '@mdx-js/mdx@3.1.1': dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -15379,43 +15185,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(react@19.1.0)': + '@mdx-js/react@3.1.1(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - react: 19.1.0 + react: 18.3.1 - '@microsoft/api-extractor-model@7.33.8(@types/node@24.13.0)': + '@microsoft/api-extractor-model@7.33.1(@types/node@24.13.1)': dependencies: '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.23.1(@types/node@24.13.0) + '@microsoft/tsdoc-config': 0.18.0 + '@rushstack/node-core-library': 5.20.1(@types/node@24.13.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.58.7(@types/node@24.13.0)': + '@microsoft/api-extractor@7.57.2(@types/node@24.13.1)': dependencies: - '@microsoft/api-extractor-model': 7.33.8(@types/node@24.13.0) + '@microsoft/api-extractor-model': 7.33.1(@types/node@24.13.1) '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.23.1(@types/node@24.13.0) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.0(@types/node@24.13.0) - '@rushstack/ts-command-line': 5.3.9(@types/node@24.13.0) - diff: 8.0.4 - minimatch: 10.2.3 - resolve: 1.22.12 - semver: 7.7.4 + '@microsoft/tsdoc-config': 0.18.0 + '@rushstack/node-core-library': 5.20.1(@types/node@24.13.1) + '@rushstack/rig-package': 0.7.1 + '@rushstack/terminal': 0.22.1(@types/node@24.13.1) + '@rushstack/ts-command-line': 5.3.1(@types/node@24.13.1) + diff: 8.0.3 + lodash: 4.17.23 + minimatch: 10.2.1 + resolve: 1.22.11 + semver: 7.5.4 source-map: 0.6.1 - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - '@types/node' - '@microsoft/tsdoc-config@0.18.1': + '@microsoft/tsdoc-config@0.18.0': dependencies: '@microsoft/tsdoc': 0.16.0 - ajv: 8.18.0 + ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.12 + resolve: 1.22.11 '@microsoft/tsdoc@0.16.0': {} @@ -15430,26 +15237,26 @@ snapshots: react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x - '@mongodb-js/saslprep@1.4.11': + '@mongodb-js/saslprep@1.4.6': dependencies: sparse-bitfield: 3.0.3 - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true '@napi-rs/nice-android-arm-eabi@1.1.1': @@ -15524,29 +15331,22 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@nestjs/axios@4.0.1(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(axios@1.15.0)(rxjs@7.8.2)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.2 - optional: true - - '@nestjs/axios@4.0.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(axios@1.17.0)(rxjs@7.8.2)': - dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - axios: 1.17.0 + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + axios: 1.15.0 rxjs: 7.8.2 - '@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2)': + '@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2)': dependencies: - file-type: 21.3.4 + file-type: 21.3.0 iterare: 1.2.1 load-esm: 1.0.3 reflect-metadata: 0.1.14 @@ -15556,87 +15356,87 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/core@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2)': + '@nestjs/core@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) '@nuxt/opencollective': 0.4.1 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - path-to-regexp: 8.4.2 + path-to-regexp: 8.3.0 reflect-metadata: 0.1.14 rxjs: 7.8.2 tslib: 2.8.1 uid: 2.0.2 optionalDependencies: - '@nestjs/platform-express': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24) + '@nestjs/platform-express': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14) - '@nestjs/jwt@11.0.2(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))': + '@nestjs/jwt@11.0.2(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) '@types/jsonwebtoken': 9.0.10 jsonwebtoken: 9.0.3 - '@nestjs/mapped-types@2.1.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(reflect-metadata@0.1.14)': + '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(reflect-metadata@0.1.14)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) reflect-metadata: 0.1.14 - '@nestjs/passport@11.0.5(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(passport@0.7.0)': + '@nestjs/passport@11.0.5(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(passport@0.7.0)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) passport: 0.7.0 - '@nestjs/platform-express@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)': + '@nestjs/platform-express@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) cors: 2.8.6 express: 5.2.1 - multer: 2.1.1 - path-to-regexp: 8.4.2 + multer: 2.0.2 + path-to-regexp: 8.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@nestjs/platform-fastify@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)': + '@nestjs/platform-fastify@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)': dependencies: '@fastify/cors': 11.2.0 '@fastify/formbody': 8.0.2 - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) fast-querystring: 1.1.2 - fastify: 5.8.5 + fastify: 5.7.4 fastify-plugin: 5.1.0 - find-my-way: 9.6.0 + find-my-way: 9.4.0 light-my-request: 6.6.0 - path-to-regexp: 8.4.2 + path-to-regexp: 8.3.0 reusify: 1.1.0 tslib: 2.8.1 - '@nestjs/swagger@11.4.4(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14)': + '@nestjs/swagger@11.2.6(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14)': dependencies: '@microsoft/tsdoc': 0.16.0 - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/mapped-types': 2.1.1(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(reflect-metadata@0.1.14) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(reflect-metadata@0.1.14) js-yaml: 4.1.1 - lodash: 4.18.1 - path-to-regexp: 8.4.2 + lodash: 4.17.23 + path-to-regexp: 8.3.0 reflect-metadata: 0.1.14 - swagger-ui-dist: 5.32.6 + swagger-ui-dist: 5.31.0 - '@nestjs/testing@11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/platform-express@11.1.24)': + '@nestjs/testing@11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(@nestjs/platform-express@11.1.14)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) tslib: 2.8.1 optionalDependencies: - '@nestjs/platform-express': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24) + '@nestjs/platform-express': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14) - '@nestjs/throttler@6.5.0(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.1.14)': + '@nestjs/throttler@6.5.0(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@11.1.14)(reflect-metadata@0.1.14)': dependencies: - '@nestjs/common': 11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2) - '@nestjs/core': 11.1.24(@nestjs/common@11.1.24(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.24)(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/common': 11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2) + '@nestjs/core': 11.1.14(@nestjs/common@11.1.14(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@11.1.14)(reflect-metadata@0.1.14)(rxjs@7.8.2) reflect-metadata: 0.1.14 '@noble/hashes@1.8.0': {} @@ -15658,7 +15458,7 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.8.1 + semver: 7.7.4 optional: true '@npmcli/move-file@1.1.2': @@ -15673,154 +15473,86 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@oxc-parser/binding-android-arm-eabi@0.127.0': + '@oxc-resolver/binding-android-arm-eabi@11.17.1': optional: true - '@oxc-parser/binding-android-arm64@0.127.0': + '@oxc-resolver/binding-android-arm64@11.17.1': optional: true - '@oxc-parser/binding-darwin-arm64@0.127.0': + '@oxc-resolver/binding-darwin-arm64@11.17.1': optional: true - '@oxc-parser/binding-darwin-x64@0.127.0': + '@oxc-resolver/binding-darwin-x64@11.17.1': optional: true - '@oxc-parser/binding-freebsd-x64@0.127.0': + '@oxc-resolver/binding-freebsd-x64@11.17.1': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.17.1': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.17.1': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.17.1': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.127.0': + '@oxc-resolver/binding-linux-arm64-musl@11.17.1': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.17.1': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.17.1': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.17.1': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.17.1': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.127.0': + '@oxc-resolver/binding-linux-x64-gnu@11.17.1': optional: true - '@oxc-parser/binding-linux-x64-musl@0.127.0': + '@oxc-resolver/binding-linux-x64-musl@11.17.1': optional: true - '@oxc-parser/binding-openharmony-arm64@0.127.0': + '@oxc-resolver/binding-openharmony-arm64@11.17.1': optional: true - '@oxc-parser/binding-wasm32-wasi@0.127.0': + '@oxc-resolver/binding-wasm32-wasi@11.17.1': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - optional: true - - '@oxc-parser/binding-win32-arm64-msvc@0.127.0': - optional: true - - '@oxc-parser/binding-win32-ia32-msvc@0.127.0': - optional: true - - '@oxc-parser/binding-win32-x64-msvc@0.127.0': - optional: true - - '@oxc-project/types@0.127.0': {} - - '@oxc-resolver/binding-android-arm-eabi@11.20.0': - optional: true - - '@oxc-resolver/binding-android-arm64@11.20.0': - optional: true - - '@oxc-resolver/binding-darwin-arm64@11.20.0': - optional: true - - '@oxc-resolver/binding-darwin-x64@11.20.0': - optional: true - - '@oxc-resolver/binding-freebsd-x64@11.20.0': - optional: true - - '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': - optional: true - - '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-musl@11.20.0': + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.17.1': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': + '@oxc-resolver/binding-win32-ia32-msvc@11.17.1': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': + '@oxc-resolver/binding-win32-x64-msvc@11.17.1': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': + '@pagefind/darwin-arm64@1.4.0': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.20.0': + '@pagefind/darwin-x64@1.4.0': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.20.0': - optional: true + '@pagefind/default-ui@1.4.0': {} - '@oxc-resolver/binding-openharmony-arm64@11.20.0': + '@pagefind/freebsd-x64@1.4.0': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.20.0': - 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) + '@pagefind/linux-arm64@1.4.0': optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': + '@pagefind/linux-x64@1.4.0': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.20.0': - optional: true - - '@pagefind/darwin-arm64@1.5.2': - optional: true - - '@pagefind/darwin-x64@1.5.2': - optional: true - - '@pagefind/default-ui@1.5.2': {} - - '@pagefind/freebsd-x64@1.5.2': - optional: true - - '@pagefind/linux-arm64@1.5.2': - optional: true - - '@pagefind/linux-x64@1.5.2': - optional: true - - '@pagefind/windows-arm64@1.5.2': - optional: true - - '@pagefind/windows-x64@1.5.2': + '@pagefind/windows-x64@1.4.0': optional: true '@paralleldrive/cuid2@2.3.1': @@ -15829,7 +15561,7 @@ snapshots: '@pinojs/redact@0.4.0': {} - '@pkgr/core@0.3.6': {} + '@pkgr/core@0.2.9': {} '@playwright/test@1.60.0': dependencies: @@ -15837,56 +15569,56 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3)': + '@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2)': optionalDependencies: - prisma: 6.19.3(typescript@6.0.3) - typescript: 6.0.3 + prisma: 6.19.2(magicast@0.3.5)(typescript@6.0.2) + typescript: 6.0.2 - '@prisma/config@6.19.3': + '@prisma/config@6.19.2(magicast@0.3.5)': dependencies: - c12: 3.1.0 + c12: 3.1.0(magicast@0.3.5) deepmerge-ts: 7.1.5 - effect: 3.21.0 + effect: 3.18.4 empathic: 2.0.0 transitivePeerDependencies: - magicast '@prisma/debug@5.22.0': {} - '@prisma/debug@6.19.3': {} + '@prisma/debug@6.19.2': {} - '@prisma/dmmf@6.19.3': {} + '@prisma/dmmf@6.19.2': {} '@prisma/engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7': {} - '@prisma/engines@6.19.3': + '@prisma/engines@6.19.2': dependencies: - '@prisma/debug': 6.19.3 + '@prisma/debug': 6.19.2 '@prisma/engines-version': 7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7 - '@prisma/fetch-engine': 6.19.3 - '@prisma/get-platform': 6.19.3 + '@prisma/fetch-engine': 6.19.2 + '@prisma/get-platform': 6.19.2 - '@prisma/fetch-engine@6.19.3': + '@prisma/fetch-engine@6.19.2': dependencies: - '@prisma/debug': 6.19.3 + '@prisma/debug': 6.19.2 '@prisma/engines-version': 7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7 - '@prisma/get-platform': 6.19.3 + '@prisma/get-platform': 6.19.2 - '@prisma/generator-helper@6.19.3': + '@prisma/generator-helper@6.19.2': dependencies: - '@prisma/debug': 6.19.3 - '@prisma/dmmf': 6.19.3 - '@prisma/generator': 6.19.3 + '@prisma/debug': 6.19.2 + '@prisma/dmmf': 6.19.2 + '@prisma/generator': 6.19.2 - '@prisma/generator@6.19.3': {} + '@prisma/generator@6.19.2': {} '@prisma/get-platform@5.22.0': dependencies: '@prisma/debug': 5.22.0 - '@prisma/get-platform@6.19.3': + '@prisma/get-platform@6.19.2': dependencies: - '@prisma/debug': 6.19.3 + '@prisma/debug': 6.19.2 '@radix-ui/number@1.1.1': {} @@ -16372,7 +16104,7 @@ snapshots: '@radix-ui/react-popper@1.2.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@floating-ui/react-dom': 2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-arrow': 1.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(react@19.1.0) '@radix-ui/react-context': 1.1.2(react@19.1.0) @@ -16387,7 +16119,7 @@ snapshots: '@radix-ui/react-popper@1.2.8(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@floating-ui/react-dom': 2.1.7(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@radix-ui/react-arrow': 1.1.7(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@radix-ui/react-compose-refs': 1.1.2(react@vendor+react@19.x) '@radix-ui/react-context': 1.1.2(react@vendor+react@19.x) @@ -16852,126 +16584,126 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rolldown/pluginutils@1.0.1': {} + '@rolldown/pluginutils@1.0.0-rc.7': {} - '@rollup/pluginutils@5.4.0(rollup@4.61.1)': + '@rollup/pluginutils@5.3.0(rollup@4.58.0)': dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.61.1 + rollup: 4.58.0 - '@rollup/rollup-android-arm-eabi@4.61.1': + '@rollup/rollup-android-arm-eabi@4.58.0': optional: true - '@rollup/rollup-android-arm64@4.61.1': + '@rollup/rollup-android-arm64@4.58.0': optional: true - '@rollup/rollup-darwin-arm64@4.61.1': + '@rollup/rollup-darwin-arm64@4.58.0': optional: true - '@rollup/rollup-darwin-x64@4.61.1': + '@rollup/rollup-darwin-x64@4.58.0': optional: true - '@rollup/rollup-freebsd-arm64@4.61.1': + '@rollup/rollup-freebsd-arm64@4.58.0': optional: true - '@rollup/rollup-freebsd-x64@4.61.1': + '@rollup/rollup-freebsd-x64@4.58.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.61.1': + '@rollup/rollup-linux-arm-gnueabihf@4.58.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.61.1': + '@rollup/rollup-linux-arm-musleabihf@4.58.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.61.1': + '@rollup/rollup-linux-arm64-gnu@4.58.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.61.1': + '@rollup/rollup-linux-arm64-musl@4.58.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.61.1': + '@rollup/rollup-linux-loong64-gnu@4.58.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.61.1': + '@rollup/rollup-linux-loong64-musl@4.58.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.61.1': + '@rollup/rollup-linux-ppc64-gnu@4.58.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.61.1': + '@rollup/rollup-linux-ppc64-musl@4.58.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.61.1': + '@rollup/rollup-linux-riscv64-gnu@4.58.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.61.1': + '@rollup/rollup-linux-riscv64-musl@4.58.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.61.1': + '@rollup/rollup-linux-s390x-gnu@4.58.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.61.1': + '@rollup/rollup-linux-x64-gnu@4.58.0': optional: true - '@rollup/rollup-linux-x64-musl@4.61.1': + '@rollup/rollup-linux-x64-musl@4.58.0': optional: true - '@rollup/rollup-openbsd-x64@4.61.1': + '@rollup/rollup-openbsd-x64@4.58.0': optional: true - '@rollup/rollup-openharmony-arm64@4.61.1': + '@rollup/rollup-openharmony-arm64@4.58.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.61.1': + '@rollup/rollup-win32-arm64-msvc@4.58.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.61.1': + '@rollup/rollup-win32-ia32-msvc@4.58.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.61.1': + '@rollup/rollup-win32-x64-gnu@4.58.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.61.1': + '@rollup/rollup-win32-x64-msvc@4.58.0': optional: true '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.23.1(@types/node@24.13.0)': + '@rushstack/node-core-library@5.20.1(@types/node@24.13.1)': dependencies: - ajv: 8.18.0 - ajv-draft-04: 1.0.0(ajv@8.18.0) - ajv-formats: 3.0.1(ajv@8.18.0) - fs-extra: 11.3.5 + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 11.3.3 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.12 - semver: 7.7.4 + resolve: 1.22.11 + semver: 7.5.4 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@rushstack/problem-matcher@0.2.1(@types/node@24.13.0)': + '@rushstack/problem-matcher@0.2.1(@types/node@24.13.1)': optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@rushstack/rig-package@0.7.3': + '@rushstack/rig-package@0.7.1': dependencies: - jju: 1.4.0 - resolve: 1.22.12 + resolve: 1.22.11 + strip-json-comments: 3.1.1 - '@rushstack/terminal@0.24.0(@types/node@24.13.0)': + '@rushstack/terminal@0.22.1(@types/node@24.13.1)': dependencies: - '@rushstack/node-core-library': 5.23.1(@types/node@24.13.0) - '@rushstack/problem-matcher': 0.2.1(@types/node@24.13.0) + '@rushstack/node-core-library': 5.20.1(@types/node@24.13.1) + '@rushstack/problem-matcher': 0.2.1(@types/node@24.13.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@rushstack/ts-command-line@5.3.9(@types/node@24.13.0)': + '@rushstack/ts-command-line@5.3.1(@types/node@24.13.1)': dependencies: - '@rushstack/terminal': 0.24.0(@types/node@24.13.0) + '@rushstack/terminal': 0.22.1(@types/node@24.13.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -16980,43 +16712,43 @@ snapshots: '@scarf/scarf@1.4.0': {} - '@shikijs/core@3.23.0': + '@shikijs/core@3.22.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.23.0': + '@shikijs/engine-javascript@3.22.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.6 + oniguruma-to-es: 4.3.4 '@shikijs/engine-oniguruma@1.29.2': dependencies: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.23.0': + '@shikijs/engine-oniguruma@3.22.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.23.0': + '@shikijs/langs@3.22.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 3.22.0 - '@shikijs/themes@3.23.0': + '@shikijs/themes@3.22.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 3.22.0 '@shikijs/types@1.29.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.23.0': + '@shikijs/types@3.22.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -17075,184 +16807,190 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/addon-docs@10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/addon-docs@10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@mdx-js/react': 3.1.1(react@19.1.0) - '@storybook/csf-plugin': 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@storybook/icons': 2.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/react-dom-shim': 10.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/react': 3.1.1(react@18.3.1) + '@storybook/csf-plugin': 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/react-dom-shim': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react-dom' - esbuild - rollup - vite - webpack - '@storybook/addon-themes@10.4.2(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@storybook/addon-themes@10.3.5(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ts-dedent: 2.2.0 - '@storybook/builder-vite@10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/builder-vite@10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@storybook/csf-plugin': 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ts-dedent: 2.2.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/builder-vite@10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/builder-vite@10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@storybook/csf-plugin': 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) ts-dedent: 2.2.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/csf-plugin@10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.7 - rollup: 4.61.1 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + esbuild: 0.27.3 + rollup: 4.58.0 + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - '@storybook/csf-plugin@10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/csf-plugin@10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.7 - rollup: 4.61.1 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + esbuild: 0.27.3 + rollup: 4.58.0 + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) '@storybook/global@5.0.0': {} - '@storybook/icons@2.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@storybook/icons@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/icons@2.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@storybook/icons@2.0.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@storybook/icons@2.0.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x - '@storybook/react-dom-shim@10.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@storybook/react-dom-shim@10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + '@storybook/react-dom-shim@10.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/react-dom-shim@10.4.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))': + '@storybook/react-dom-shim@10.3.5(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))': dependencies: react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) - '@storybook/react-vite@10.4.2(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/react-vite@10.3.5(esbuild@0.27.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@rollup/pluginutils': 5.4.0(rollup@4.61.1) - '@storybook/builder-vite': 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@storybook/react': 10.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.3) - empathic: 2.0.1 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.58.0) + '@storybook/builder-vite': 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/react': 10.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.2) + empathic: 2.0.0 magic-string: 0.30.21 react: 19.1.0 react-docgen: 8.0.3 react-dom: 19.1.0(react@19.1.0) - resolve: 1.22.12 - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + resolve: 1.22.11 + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tsconfig-paths: 4.2.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - esbuild - rollup - supports-color - typescript - webpack - '@storybook/react-vite@10.4.2(esbuild@0.27.7)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@storybook/react-vite@10.3.5(esbuild@0.27.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@rollup/pluginutils': 5.4.0(rollup@4.61.1) - '@storybook/builder-vite': 10.4.2(esbuild@0.27.7)(rollup@4.61.1)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@storybook/react': 10.4.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3) - empathic: 2.0.1 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.2)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.58.0) + '@storybook/builder-vite': 10.3.5(esbuild@0.27.3)(rollup@4.58.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/react': 10.3.5(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2) + empathic: 2.0.0 magic-string: 0.30.21 react: link:vendor/react@19.x react-docgen: 8.0.3 react-dom: link:vendor/react-dom@19.x - resolve: 1.22.12 - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + resolve: 1.22.11 + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) tsconfig-paths: 4.2.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - esbuild - rollup - supports-color - typescript - webpack - '@storybook/react@10.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.3)': + '@storybook/react@10.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@6.0.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@storybook/react-dom-shim': 10.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) react: 19.1.0 react-docgen: 8.0.3 - react-docgen-typescript: 2.4.0(typescript@6.0.3) + react-docgen-typescript: 2.4.0(typescript@6.0.2) react-dom: 19.1.0(react@19.1.0) - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@storybook/react@10.4.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.3)': + '@storybook/react@10.3.5(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(typescript@6.0.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.4.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)) + '@storybook/react-dom-shim': 10.3.5(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)(storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)) react: link:vendor/react@19.x react-docgen: 8.0.3 - react-docgen-typescript: 2.4.0(typescript@6.0.3) + react-docgen-typescript: 2.4.0(typescript@6.0.2) react-dom: link:vendor/react-dom@19.x - storybook: 10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + storybook: 10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@swc-node/core@1.14.1(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)': + '@swc-node/core@1.14.1(@swc/core@1.15.11(@swc/helpers@0.5.18))(@swc/types@0.1.25)': dependencies: - '@swc/core': 1.15.40(@swc/helpers@0.5.23) - '@swc/types': 0.1.26 + '@swc/core': 1.15.11(@swc/helpers@0.5.18) + '@swc/types': 0.1.25 - '@swc-node/register@1.11.1(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3)': + '@swc-node/register@1.11.1(@swc/core@1.15.11(@swc/helpers@0.5.18))(@swc/types@0.1.25)(typescript@6.0.2)': dependencies: - '@swc-node/core': 1.14.1(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26) + '@swc-node/core': 1.14.1(@swc/core@1.15.11(@swc/helpers@0.5.18))(@swc/types@0.1.25) '@swc-node/sourcemap-support': 0.6.1 - '@swc/core': 1.15.40(@swc/helpers@0.5.23) + '@swc/core': 1.15.11(@swc/helpers@0.5.18) colorette: 2.0.20 debug: 4.4.3(supports-color@8.1.1) - oxc-resolver: 11.20.0 + oxc-resolver: 11.17.1 pirates: 4.0.7 tslib: 2.8.1 - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - '@swc/types' - supports-color @@ -17262,88 +17000,79 @@ snapshots: source-map-support: 0.5.21 tslib: 2.8.1 - '@swc/cli@0.6.0(@swc/core@1.15.40(@swc/helpers@0.5.23))(chokidar@4.0.3)': + '@swc/cli@0.6.0(@swc/core@1.15.11(@swc/helpers@0.5.18))(chokidar@4.0.3)': dependencies: - '@swc/core': 1.15.40(@swc/helpers@0.5.23) + '@swc/core': 1.15.11(@swc/helpers@0.5.18) '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.2.0 commander: 8.3.0 fast-glob: 3.3.3 - minimatch: 9.0.9 + minimatch: 9.0.5 piscina: 4.9.2 - semver: 7.8.1 + semver: 7.7.4 slash: 3.0.0 source-map: 0.7.6 optionalDependencies: chokidar: 4.0.3 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color - '@swc/core-darwin-arm64@1.15.40': - optional: true - - '@swc/core-darwin-x64@1.15.40': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.15.40': + '@swc/core-darwin-arm64@1.15.11': optional: true - '@swc/core-linux-arm64-gnu@1.15.40': + '@swc/core-darwin-x64@1.15.11': optional: true - '@swc/core-linux-arm64-musl@1.15.40': + '@swc/core-linux-arm-gnueabihf@1.15.11': optional: true - '@swc/core-linux-ppc64-gnu@1.15.40': + '@swc/core-linux-arm64-gnu@1.15.11': optional: true - '@swc/core-linux-s390x-gnu@1.15.40': + '@swc/core-linux-arm64-musl@1.15.11': optional: true - '@swc/core-linux-x64-gnu@1.15.40': + '@swc/core-linux-x64-gnu@1.15.11': optional: true - '@swc/core-linux-x64-musl@1.15.40': + '@swc/core-linux-x64-musl@1.15.11': optional: true - '@swc/core-win32-arm64-msvc@1.15.40': + '@swc/core-win32-arm64-msvc@1.15.11': optional: true - '@swc/core-win32-ia32-msvc@1.15.40': + '@swc/core-win32-ia32-msvc@1.15.11': optional: true - '@swc/core-win32-x64-msvc@1.15.40': + '@swc/core-win32-x64-msvc@1.15.11': optional: true - '@swc/core@1.15.40(@swc/helpers@0.5.23)': + '@swc/core@1.15.11(@swc/helpers@0.5.18)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.26 + '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.40 - '@swc/core-darwin-x64': 1.15.40 - '@swc/core-linux-arm-gnueabihf': 1.15.40 - '@swc/core-linux-arm64-gnu': 1.15.40 - '@swc/core-linux-arm64-musl': 1.15.40 - '@swc/core-linux-ppc64-gnu': 1.15.40 - '@swc/core-linux-s390x-gnu': 1.15.40 - '@swc/core-linux-x64-gnu': 1.15.40 - '@swc/core-linux-x64-musl': 1.15.40 - '@swc/core-win32-arm64-msvc': 1.15.40 - '@swc/core-win32-ia32-msvc': 1.15.40 - '@swc/core-win32-x64-msvc': 1.15.40 - '@swc/helpers': 0.5.23 + '@swc/core-darwin-arm64': 1.15.11 + '@swc/core-darwin-x64': 1.15.11 + '@swc/core-linux-arm-gnueabihf': 1.15.11 + '@swc/core-linux-arm64-gnu': 1.15.11 + '@swc/core-linux-arm64-musl': 1.15.11 + '@swc/core-linux-x64-gnu': 1.15.11 + '@swc/core-linux-x64-musl': 1.15.11 + '@swc/core-win32-arm64-msvc': 1.15.11 + '@swc/core-win32-ia32-msvc': 1.15.11 + '@swc/core-win32-x64-msvc': 1.15.11 + '@swc/helpers': 0.5.18 '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.23': + '@swc/helpers@0.5.18': dependencies: tslib: 2.8.1 - '@swc/types@0.1.26': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -17354,8 +17083,8 @@ snapshots: '@tailwindcss/node@4.3.0': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.22.2 - jiti: 2.7.0 + enhanced-resolve: 5.23.0 + jiti: 2.6.1 lightningcss: 1.32.0 magic-string: 0.30.21 source-map-js: 1.2.1 @@ -17425,53 +17154,69 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.3.0 - '@tailwindcss/vite@4.3.0(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + + '@tailwindcss/vite@4.3.0(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2) + + '@tailwindcss/vite@4.3.0(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.3.0 '@tailwindcss/oxide': 4.3.0 tailwindcss: 4.3.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) - '@tanstack/history@1.162.0': {} + '@tanstack/history@1.154.14': {} - '@tanstack/query-core@5.101.0': {} + '@tanstack/query-core@5.90.20': {} - '@tanstack/query-devtools@5.101.0': {} + '@tanstack/query-devtools@5.93.0': {} - '@tanstack/react-query-devtools@5.101.0(@tanstack/react-query@5.101.0(react@vendor+react@19.x))(react@vendor+react@19.x)': + '@tanstack/react-query-devtools@5.91.3(@tanstack/react-query@5.90.21(react@vendor+react@19.x))(react@vendor+react@19.x)': dependencies: - '@tanstack/query-devtools': 5.101.0 - '@tanstack/react-query': 5.101.0(react@vendor+react@19.x) + '@tanstack/query-devtools': 5.93.0 + '@tanstack/react-query': 5.90.21(react@vendor+react@19.x) react: link:vendor/react@19.x - '@tanstack/react-query@5.101.0(react@vendor+react@19.x)': + '@tanstack/react-query@5.90.21(react@vendor+react@19.x)': dependencies: - '@tanstack/query-core': 5.101.0 + '@tanstack/query-core': 5.90.20 react: link:vendor/react@19.x - '@tanstack/react-router-devtools@1.167.0(@tanstack/react-router@1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(@tanstack/router-core@1.171.9)(csstype@3.2.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@tanstack/react-router-devtools@1.161.3(@tanstack/react-router@1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(@tanstack/router-core@1.161.3)(csstype@3.2.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@tanstack/react-router': 1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) - '@tanstack/router-devtools-core': 1.168.0(@tanstack/router-core@1.171.9)(csstype@3.2.3) + '@tanstack/react-router': 1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@tanstack/router-devtools-core': 1.161.3(@tanstack/router-core@1.161.3)(csstype@3.2.3) react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x optionalDependencies: - '@tanstack/router-core': 1.171.9 + '@tanstack/router-core': 1.161.3 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@tanstack/react-router@1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@tanstack/history': 1.162.0 - '@tanstack/react-store': 0.9.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) - '@tanstack/router-core': 1.171.9 - isbot: 5.1.40 + '@tanstack/history': 1.154.14 + '@tanstack/react-store': 0.9.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@tanstack/router-core': 1.161.3 + isbot: 5.1.35 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 - '@tanstack/react-store@0.9.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': + '@tanstack/react-store@0.9.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@tanstack/store': 0.9.3 + '@tanstack/store': 0.9.1 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x use-sync-external-store: 1.6.0(react@vendor+react@19.x) @@ -17488,79 +17233,83 @@ snapshots: react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x - '@tanstack/router-core@1.171.9': + '@tanstack/router-core@1.161.3': dependencies: - '@tanstack/history': 1.162.0 - cookie-es: 3.1.1 - seroval: 1.5.4 - seroval-plugins: 1.5.4(seroval@1.5.4) + '@tanstack/history': 1.154.14 + '@tanstack/store': 0.9.1 + cookie-es: 2.0.0 + seroval: 1.5.0 + seroval-plugins: 1.5.0(seroval@1.5.0) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.168.0(@tanstack/router-core@1.171.9)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.161.3(@tanstack/router-core@1.161.3)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.171.9 + '@tanstack/router-core': 1.161.3 clsx: 2.1.1 - goober: 2.1.19(csstype@3.2.3) + goober: 2.1.18(csstype@3.2.3) + tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.167.13': + '@tanstack/router-generator@1.161.3': dependencies: - '@babel/types': 7.29.7 - '@tanstack/router-core': 1.171.9 - '@tanstack/router-utils': 1.162.1 - '@tanstack/virtual-file-routes': 1.162.0 - jiti: 2.7.0 - magic-string: 0.30.21 - prettier: 3.8.3 - zod: 4.4.3 + '@tanstack/router-core': 1.161.3 + '@tanstack/router-utils': 1.158.0 + '@tanstack/virtual-file-routes': 1.154.7 + prettier: 3.8.1 + recast: 0.23.11 + source-map: 0.7.6 + tsx: 4.21.0 + zod: 3.25.76 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.14(@tanstack/react-router@1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': - dependencies: - '@babel/core': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - '@tanstack/router-core': 1.171.9 - '@tanstack/router-generator': 1.167.13 - '@tanstack/router-utils': 1.162.1 - '@tanstack/virtual-file-routes': 1.162.0 - chokidar: 5.0.0 - unplugin: 3.0.0 - zod: 4.4.3 + '@tanstack/router-plugin@1.161.3(@tanstack/react-router@1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x))(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@babel/core': 7.29.0 + '@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/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@tanstack/router-core': 1.161.3 + '@tanstack/router-generator': 1.161.3 + '@tanstack/router-utils': 1.158.0 + '@tanstack/virtual-file-routes': 1.154.7 + chokidar: 3.6.0 + unplugin: 2.3.11 + zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.170.11(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + '@tanstack/react-router': 1.161.3(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@tanstack/router-utils@1.162.1': + '@tanstack/router-utils@1.158.0': dependencies: - '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - ansis: 4.3.1 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + ansis: 4.2.0 babel-dead-code-elimination: 1.0.12 - diff: 8.0.4 + diff: 8.0.3 pathe: 2.0.3 - tinyglobby: 0.2.17 + tinyglobby: 0.2.15 transitivePeerDependencies: - supports-color - '@tanstack/store@0.9.3': {} + '@tanstack/store@0.9.1': {} '@tanstack/table-core@8.21.3': {} - '@tanstack/virtual-file-routes@1.162.0': {} + '@tanstack/virtual-file-routes@1.154.7': {} '@testing-library/dom@10.4.1': dependencies: - '@babel/code-frame': 7.29.7 - '@babel/runtime': 7.29.7 + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.28.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -17570,7 +17319,7 @@ snapshots: '@testing-library/jest-dom@6.9.1': dependencies: - '@adobe/css-tools': 4.5.0 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 @@ -17579,7 +17328,7 @@ snapshots: '@testing-library/react@16.2.0(@testing-library/dom@10.4.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 '@testing-library/dom': 10.4.1 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x @@ -17591,7 +17340,7 @@ snapshots: '@tokenizer/inflate@0.2.7': dependencies: debug: 4.4.3(supports-color@8.1.1) - fflate: 0.8.3 + fflate: 0.8.2 token-types: 6.1.2 transitivePeerDependencies: - supports-color @@ -17610,29 +17359,11 @@ snapshots: '@ts-morph/common@0.28.1': dependencies: - minimatch: 10.2.5 + minimatch: 10.2.2 path-browserify: 1.0.1 - tinyglobby: 0.2.17 - - '@turbo/darwin-64@2.9.16': - optional: true + tinyglobby: 0.2.15 - '@turbo/darwin-arm64@2.9.16': - optional: true - - '@turbo/linux-64@2.9.16': - optional: true - - '@turbo/linux-arm64@2.9.16': - optional: true - - '@turbo/windows-64@2.9.16': - optional: true - - '@turbo/windows-arm64@2.9.16': - optional: true - - '@tybys/wasm-util@0.10.2': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -17643,29 +17374,29 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.0 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/chai@5.2.3': dependencies: @@ -17675,11 +17406,11 @@ snapshots: '@types/compression@1.8.1': dependencies: '@types/express': 5.0.6 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/connect@3.4.38': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/cookiejar@2.1.5': {} @@ -17707,7 +17438,7 @@ snapshots: '@types/d3-timer@3.0.2': {} - '@types/debug@4.1.13': + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -17717,14 +17448,14 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 - '@types/estree@1.0.9': {} + '@types/estree@1.0.8': {} '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 24.13.0 - '@types/qs': 6.15.1 + '@types/node': 24.13.1 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -17751,7 +17482,7 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/k6@0.54.2': {} @@ -17769,13 +17500,15 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@24.13.0': + '@types/node@17.0.45': {} + + '@types/node@24.13.1': dependencies: undici-types: 7.18.2 '@types/nodemailer@7.0.11': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/passport-jwt@4.0.1': dependencies: @@ -17793,9 +17526,9 @@ snapshots: '@types/qrcode@1.5.6': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@types/qs@6.15.1': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} @@ -17803,32 +17536,32 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/send@1.2.1': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/sinonjs__fake-timers@8.1.1': {} '@types/sizzle@2.3.10': {} - '@types/superagent@8.1.10': + '@types/superagent@8.1.9': dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.13.0 + '@types/node': 24.13.1 form-data: 4.0.5 '@types/supertest@6.0.3': dependencies: '@types/methods': 1.1.4 - '@types/superagent': 8.1.10 + '@types/superagent': 8.1.9 '@types/unist@2.0.11': {} @@ -17844,102 +17577,114 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 optional: true - '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/type-utils': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.1 - eslint: 9.23.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.2 + eslint: 9.23.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.23.0(jiti@2.7.0) - typescript: 6.0.3 + eslint: 9.23.0(jiti@2.6.1) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.60.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.58.2(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.2) + '@typescript-eslint/types': 8.58.2 debug: 4.4.3(supports-color@8.1.1) - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.60.1': + '@typescript-eslint/scope-manager@8.56.0': + dependencies: + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 + + '@typescript-eslint/scope-manager@8.58.2': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 - '@typescript-eslint/tsconfig-utils@8.60.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.2)': dependencies: - typescript: 6.0.3 + typescript: 6.0.2 - '@typescript-eslint/type-utils@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.23.0(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + eslint: 9.23.0(jiti@2.6.1) + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.60.1': {} + '@typescript-eslint/types@8.56.0': {} + + '@typescript-eslint/types@8.58.2': {} - '@typescript-eslint/typescript-estree@8.60.1(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.60.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/project-service': 8.58.2(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.2) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.5 - semver: 7.8.1 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + minimatch: 10.2.2 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - eslint: 9.23.0(jiti@2.7.0) - typescript: 6.0.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + eslint: 9.23.0(jiti@2.6.1) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.60.1': + '@typescript-eslint/visitor-keys@8.56.0': + dependencies: + '@typescript-eslint/types': 8.56.0 + eslint-visitor-keys: 5.0.1 + + '@typescript-eslint/visitor-keys@8.58.2': dependencies: - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/types': 8.58.2 eslint-visitor-keys: 5.0.1 '@ucast/core@1.10.2': {} @@ -17958,48 +17703,56 @@ snapshots: dependencies: '@ucast/core': 1.10.2 - '@ungap/structured-clone@1.3.1': {} + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.18)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + '@swc/core': 1.15.11(@swc/helpers@0.5.18) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + transitivePeerDependencies: + - '@swc/helpers' - '@vitejs/plugin-react-swc@4.3.1(@swc/helpers@0.5.23)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.18)(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))': dependencies: - '@rolldown/pluginutils': 1.0.1 - '@swc/core': 1.15.40(@swc/helpers@0.5.23) - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + '@rolldown/pluginutils': 1.0.0-rc.7 + '@swc/core': 1.15.11(@swc/helpers@0.5.18) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' - '@vitest/browser@4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))(vitest@4.1.8)': + '@vitest/browser@4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))(vitest@4.1.4)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@vitest/utils': 4.1.8 + '@vitest/mocker': 4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) + '@vitest/utils': 4.1.4 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.8(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(happy-dom@20.10.1)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - ws: 8.21.0 + vitest: 4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) + ws: 8.19.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/coverage-v8@4.1.8(@vitest/browser@4.1.8)(vitest@4.1.8)': + '@vitest/coverage-v8@4.1.4(@vitest/browser@4.1.4)(vitest@4.1.4)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.8 - ast-v8-to-istanbul: 1.0.3 + '@vitest/utils': 4.1.4 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.3 - obug: 2.1.2 + magicast: 0.5.2 + obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.8(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(happy-dom@20.10.1)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + vitest: 4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) optionalDependencies: - '@vitest/browser': 4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))(vitest@4.1.8) + '@vitest/browser': 4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))(vitest@4.1.4) '@vitest/expect@3.2.4': dependencies: @@ -18009,40 +17762,48 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.1.8': + '@vitest/expect@4.1.4': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.8 - '@vitest/utils': 4.1.8 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0))': + '@vitest/mocker@4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 4.1.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + + '@vitest/mocker@4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.1.8 + '@vitest/spy': 4.1.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.1.8': + '@vitest/pretty-format@4.1.4': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.8': + '@vitest/runner@4.1.4': dependencies: - '@vitest/utils': 4.1.8 + '@vitest/utils': 4.1.4 pathe: 2.0.3 - '@vitest/snapshot@4.1.8': + '@vitest/snapshot@4.1.4': dependencies: - '@vitest/pretty-format': 4.1.8 - '@vitest/utils': 4.1.8 + '@vitest/pretty-format': 4.1.4 + '@vitest/utils': 4.1.4 magic-string: 0.30.21 pathe: 2.0.3 @@ -18050,7 +17811,7 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.1.8': {} + '@vitest/spy@4.1.4': {} '@vitest/utils@3.2.4': dependencies: @@ -18058,18 +17819,18 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.1.8': + '@vitest/utils@4.1.4': dependencies: - '@vitest/pretty-format': 4.1.8 + '@vitest/pretty-format': 4.1.4 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@volar/kit@2.4.28(typescript@6.0.3)': + '@volar/kit@2.4.28(typescript@6.0.2)': dependencies: '@volar/language-service': 2.4.28 '@volar/typescript': 2.4.28 typesafe-path: 0.2.2 - typescript: 6.0.3 + typescript: 6.0.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 @@ -18085,14 +17846,14 @@ snapshots: path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.18.0 + vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 '@volar/language-service@2.4.28': dependencies: '@volar/language-core': 2.4.28 - vscode-languageserver-protocol: 3.18.0 + vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 @@ -18109,7 +17870,7 @@ snapshots: emmet: 2.4.11 jsonc-parser: 2.3.1 vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 + vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 '@vscode/l10n@0.0.18': {} @@ -18135,7 +17896,6 @@ snapshots: bin-version-check: 5.1.0 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color @@ -18143,10 +17903,9 @@ snapshots: dependencies: file-type: 20.5.0 is-stream: 2.0.1 - tar-stream: 3.2.0 + tar-stream: 3.1.7 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color @@ -18159,7 +17918,6 @@ snapshots: unbzip2-stream: 1.4.3 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color @@ -18170,7 +17928,6 @@ snapshots: is-stream: 2.0.1 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color @@ -18178,11 +17935,11 @@ snapshots: dependencies: file-type: 20.5.0 get-stream: 6.0.1 - yauzl: 3.3.2 + yauzl: 3.2.0 transitivePeerDependencies: - supports-color - '@xhmikosr/decompress@10.2.1': + '@xhmikosr/decompress@10.2.0': dependencies: '@xhmikosr/decompress-tar': 8.1.0 '@xhmikosr/decompress-tarbz2': 8.1.0 @@ -18192,14 +17949,13 @@ snapshots: strip-dirs: 3.0.0 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color '@xhmikosr/downloader@15.2.0': dependencies: '@xhmikosr/archive-type': 7.1.0 - '@xhmikosr/decompress': 10.2.1 + '@xhmikosr/decompress': 10.2.0 content-disposition: 0.5.4 defaults: 2.0.2 ext-name: 5.0.0 @@ -18209,7 +17965,6 @@ snapshots: got: 13.0.0 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a - supports-color @@ -18250,6 +18005,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color + optional: true agent-base@7.1.4: {} @@ -18263,40 +18019,47 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + ajv-draft-04@1.0.0(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + ajv-draft-04@1.0.0(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 - ajv-draft-04@1.0.0(ajv@8.20.0): + ajv-formats@3.0.1(ajv@8.13.0): optionalDependencies: - ajv: 8.20.0 + ajv: 8.13.0 ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 - ajv-formats@3.0.1(ajv@8.20.0): - optionalDependencies: - ajv: 8.20.0 - - ajv@6.15.0: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.13.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + uri-js: 4.4.1 - ajv@8.20.0: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -18322,12 +18085,12 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.3.1: {} + ansis@4.2.0: {} anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.2 + picomatch: 2.3.1 append-field@1.0.0: {} @@ -18371,11 +18134,11 @@ snapshots: array-includes@3.1.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 math-intrinsics: 1.1.0 @@ -18384,51 +18147,51 @@ snapshots: array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 array.prototype.findlastindex@1.2.6: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -18449,7 +18212,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@1.0.3: + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -18459,37 +18222,37 @@ snapshots: astring@1.9.0: {} - astro-eslint-parser@1.4.0: + astro-eslint-parser@1.3.0: dependencies: - '@astrojs/compiler': 3.0.1 - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - astrojs-compiler-sync: 1.1.1(@astrojs/compiler@3.0.1) + '@astrojs/compiler': 2.13.1 + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + astrojs-compiler-sync: 1.1.1(@astrojs/compiler@2.13.1) debug: 4.4.3(supports-color@8.1.1) - entities: 7.0.1 + entities: 6.0.1 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 - semver: 7.8.1 + semver: 7.7.4 transitivePeerDependencies: - supports-color - astro-expressive-code@0.41.7(astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0)): + astro-expressive-code@0.41.6(astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2)): dependencies: - astro: 5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0) - rehype-expressive-code: 0.41.7 + astro: 5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + rehype-expressive-code: 0.41.6 - astro@5.18.2(@types/node@24.13.0)(idb-keyval@6.2.5)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)(tsx@4.8.2)(typescript@6.0.3)(yaml@2.9.0): + astro@5.17.3(@types/node@24.13.1)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.58.0)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2): dependencies: '@astrojs/compiler': 2.13.1 - '@astrojs/internal-helpers': 0.7.6 - '@astrojs/markdown-remark': 6.3.11 + '@astrojs/internal-helpers': 0.7.5 + '@astrojs/markdown-remark': 6.3.10 '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 4.0.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.4.0(rollup@4.61.1) + '@rollup/pluginutils': 5.3.0(rollup@4.58.0) acorn: 8.16.0 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -18501,12 +18264,12 @@ snapshots: cssesc: 3.0.0 debug: 4.4.3(supports-color@8.1.1) deterministic-object-hash: 2.0.2 - devalue: 5.8.1 - diff: 8.0.4 + devalue: 5.6.3 + diff: 8.0.3 dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.7.0 - esbuild: 0.27.7 + esbuild: 0.27.3 estree-walker: 3.0.3 flattie: 1.1.1 fontace: 0.4.1 @@ -18514,38 +18277,38 @@ snapshots: html-escaper: 3.0.3 http-cache-semantics: 4.2.0 import-meta-resolve: 4.2.0 - js-yaml: 4.2.0 + js-yaml: 4.1.1 magic-string: 0.30.21 - magicast: 0.5.3 + magicast: 0.5.2 mrmime: 2.0.1 neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.1 package-manager-detector: 1.6.0 piccolore: 0.1.3 - picomatch: 4.0.4 + picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.8.1 - shiki: 3.23.0 - smol-toml: 1.6.1 - svgo: 4.0.1 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 - tsconfck: 3.1.6(typescript@6.0.3) + semver: 7.7.4 + shiki: 3.22.0 + smol-toml: 1.6.0 + svgo: 4.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@6.0.2) ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 - unstorage: 1.17.5(idb-keyval@6.2.5) + unstorage: 1.17.4(idb-keyval@6.2.2) vfile: 6.0.3 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) - vitefu: 1.1.3(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 zod: 3.25.76 - zod-to-json-schema: 3.25.2(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@6.0.3)(zod@3.25.76) + zod-to-json-schema: 3.25.1(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@6.0.2)(zod@3.25.76) optionalDependencies: sharp: 0.34.5 transitivePeerDependencies: @@ -18583,10 +18346,10 @@ snapshots: - uploadthing - yaml - astrojs-compiler-sync@1.1.1(@astrojs/compiler@3.0.1): + astrojs-compiler-sync@1.1.1(@astrojs/compiler@2.13.1): dependencies: - '@astrojs/compiler': 3.0.1 - synckit: 0.11.13 + '@astrojs/compiler': 2.13.1 + synckit: 0.11.12 async-function@1.0.0: {} @@ -18619,28 +18382,26 @@ snapshots: aws4@1.13.2: {} - axe-core@4.12.0: {} + axe-core@4.11.1: {} - axios@1.17.0: + axios@1.15.0: dependencies: - follow-redirects: 1.16.0(debug@4.4.3) + follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 - https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 transitivePeerDependencies: - debug - - supports-color axobject-query@4.1.0: {} - b4a@1.8.1: {} + b4a@1.8.0: {} babel-dead-code-elimination@1.0.12: dependencies: - '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -18648,39 +18409,9 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.4: {} - - bare-events@2.9.1: {} - - bare-fs@4.7.2: - dependencies: - bare-events: 2.9.1 - bare-path: 3.0.1 - bare-stream: 2.13.1(bare-events@2.9.1) - bare-url: 2.4.4 - fast-fifo: 1.3.2 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - bare-os@3.9.1: {} - - bare-path@3.0.1: - dependencies: - bare-os: 3.9.1 - - bare-stream@2.13.1(bare-events@2.9.1): - dependencies: - streamx: 2.26.0 - teex: 1.0.1 - optionalDependencies: - bare-events: 2.9.1 - transitivePeerDependencies: - - react-native-b4a + balanced-match@4.0.3: {} - bare-url@2.4.4: - dependencies: - bare-path: 3.0.1 + bare-events@2.8.2: {} base-64@1.0.0: {} @@ -18688,7 +18419,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.33: {} + baseline-browser-mapping@2.10.0: {} bcp-47-match@2.0.3: {} @@ -18705,7 +18436,7 @@ snapshots: bin-version-check@5.1.0: dependencies: bin-version: 6.0.0 - semver: 7.8.1 + semver: 7.7.4 semver-truncate: 3.0.0 bin-version@6.0.0: @@ -18737,9 +18468,9 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.15.2 + qs: 6.15.0 raw-body: 3.0.2 - type-is: 2.1.0 + type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -18758,30 +18489,30 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.2 - brace-expansion@1.1.15: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.6: + brace-expansion@5.0.2: dependencies: - balanced-match: 4.0.4 + balanced-match: 4.0.3 braces@3.0.3: dependencies: fill-range: 7.1.1 - browserslist@4.28.2: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.33 - caniuse-lite: 1.0.30001793 - electron-to-chromium: 1.5.367 - node-releases: 2.0.47 - update-browserslist-db: 1.2.3(browserslist@4.28.2) + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001770 + electron-to-chromium: 1.5.302 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) bson@6.10.4: {} @@ -18791,10 +18522,6 @@ snapshots: buffer-from@1.1.2: {} - buffer-image-size@0.6.4: - dependencies: - '@types/node': 24.13.0 - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -18810,20 +18537,22 @@ snapshots: bytes@3.1.2: {} - c12@3.1.0: + c12@3.1.0(magicast@0.3.5): dependencies: chokidar: 4.0.3 confbox: 0.2.4 - defu: 6.1.7 + defu: 6.1.4 dotenv: 16.6.1 exsolve: 1.0.8 giget: 2.0.0 - jiti: 2.7.0 + jiti: 2.6.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 - pkg-types: 2.3.1 + pkg-types: 2.3.0 rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.5 cacache@15.3.0: dependencies: @@ -18836,7 +18565,7 @@ snapshots: lru-cache: 6.0.0 minipass: 3.3.6 minipass-collect: 1.0.2 - minipass-flush: 1.0.7 + minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 mkdirp: 1.0.4 p-map: 4.0.0 @@ -18868,7 +18597,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.9: + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -18888,7 +18617,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001793: {} + caniuse-lite@1.0.30001770: {} caseless@0.12.0: {} @@ -18958,7 +18687,7 @@ snapshots: dependencies: consola: 3.4.2 - citty@0.2.2: {} + citty@0.2.1: {} class-variance-authority@0.7.1: dependencies: @@ -19106,17 +18835,15 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.1.0: {} + content-disposition@1.0.1: {} content-type@1.0.5: {} - content-type@2.0.0: {} - convert-source-map@2.0.0: {} - cookie-es@1.2.3: {} + cookie-es@1.2.2: {} - cookie-es@3.1.1: {} + cookie-es@2.0.0: {} cookie-signature@1.2.2: {} @@ -19166,9 +18893,9 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@3.2.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.27.1 + mdn-data: 2.12.2 source-map-js: 1.2.1 css-what@6.2.2: {} @@ -19201,7 +18928,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.21 + dayjs: 1.11.19 debug: 4.4.3(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 @@ -19214,7 +18941,7 @@ snapshots: is-installed-globally: 0.4.0 lazy-ass: 1.6.0 listr2: 3.14.0(enquirer@2.4.1) - lodash: 4.18.1 + lodash: 4.17.23 log-symbols: 4.1.0 minimist: 1.2.8 ospath: 1.2.2 @@ -19222,9 +18949,9 @@ snapshots: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.8.1 + semver: 7.7.4 supports-color: 8.1.1 - tmp: 0.2.7 + tmp: 0.2.5 tree-kill: 1.2.2 untildify: 4.0.0 yauzl: 2.10.0 @@ -19293,7 +19020,7 @@ snapshots: dateformat@4.6.3: {} - dayjs@1.11.21: {} + dayjs@1.11.19: {} debug@2.6.9: dependencies: @@ -19362,7 +19089,7 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.7: {} + defu@6.1.4: {} delayed-stream@1.0.0: {} @@ -19387,7 +19114,7 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@5.8.1: {} + devalue@5.6.3: {} devlop@1.1.0: dependencies: @@ -19400,7 +19127,7 @@ snapshots: diff-sequences@27.5.1: {} - diff@8.0.4: {} + diff@8.0.3: {} dijkstrajs@1.0.3: {} @@ -19422,7 +19149,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 csstype: 3.2.3 dom-serializer@2.0.0: @@ -19468,12 +19195,12 @@ snapshots: ee-first@1.1.1: {} - effect@3.21.0: + effect@3.18.4: dependencies: '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 - electron-to-chromium@1.5.367: {} + electron-to-chromium@1.5.302: {} emmet@2.4.11: dependencies: @@ -19488,8 +19215,6 @@ snapshots: empathic@2.0.0: {} - empathic@2.0.1: {} - encodeurl@2.0.0: {} encoding@0.1.13: @@ -19501,7 +19226,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.22.2: + enhanced-resolve@5.23.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -19528,19 +19253,19 @@ snapshots: err-code@2.0.3: optional: true - es-abstract@1.24.2: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 @@ -19552,7 +19277,7 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.4 + hasown: 2.0.2 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -19570,7 +19295,7 @@ snapshots: object.assign: 4.1.7 own-keys: 1.0.1 regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.4 + safe-array-concat: 1.1.3 safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 @@ -19581,20 +19306,20 @@ snapshots: typed-array-buffer: 1.0.3 typed-array-byte-length: 1.0.3 typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.8 + typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.21 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-iterator-helpers@1.3.2: + es-iterator-helpers@1.2.2: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -19606,13 +19331,13 @@ snapshots: has-symbols: 1.1.0 internal-slot: 1.1.0 iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 + safe-array-concat: 1.1.3 es-module-lexer@1.7.0: {} - es-module-lexer@2.1.0: {} + es-module-lexer@2.0.0: {} - es-object-atoms@1.1.2: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -19621,11 +19346,11 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.4 + hasown: 2.0.2 es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.4 + hasown: 2.0.2 es-to-primitive@1.3.0: dependencies: @@ -19731,34 +19456,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.7: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.7 - '@esbuild/android-arm': 0.27.7 - '@esbuild/android-arm64': 0.27.7 - '@esbuild/android-x64': 0.27.7 - '@esbuild/darwin-arm64': 0.27.7 - '@esbuild/darwin-x64': 0.27.7 - '@esbuild/freebsd-arm64': 0.27.7 - '@esbuild/freebsd-x64': 0.27.7 - '@esbuild/linux-arm': 0.27.7 - '@esbuild/linux-arm64': 0.27.7 - '@esbuild/linux-ia32': 0.27.7 - '@esbuild/linux-loong64': 0.27.7 - '@esbuild/linux-mips64el': 0.27.7 - '@esbuild/linux-ppc64': 0.27.7 - '@esbuild/linux-riscv64': 0.27.7 - '@esbuild/linux-s390x': 0.27.7 - '@esbuild/linux-x64': 0.27.7 - '@esbuild/netbsd-arm64': 0.27.7 - '@esbuild/netbsd-x64': 0.27.7 - '@esbuild/openbsd-arm64': 0.27.7 - '@esbuild/openbsd-x64': 0.27.7 - '@esbuild/openharmony-arm64': 0.27.7 - '@esbuild/sunos-x64': 0.27.7 - '@esbuild/win32-arm64': 0.27.7 - '@esbuild/win32-ia32': 0.27.7 - '@esbuild/win32-x64': 0.27.7 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escalade@3.2.0: {} @@ -19770,55 +19495,55 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.23.0(jiti@2.7.0)): + eslint-compat-utils@0.5.1(eslint@9.23.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.7.0) - semver: 7.8.1 + eslint: 9.23.0(jiti@2.6.1) + semver: 7.7.4 - eslint-compat-utils@0.6.5(eslint@9.23.0(jiti@2.7.0)): + eslint-compat-utils@0.6.5(eslint@9.23.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.7.0) - semver: 7.8.1 + eslint: 9.23.0(jiti@2.6.1) + semver: 7.7.4 - eslint-import-resolver-node@0.3.10: + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7(supports-color@8.1.1) - is-core-module: 2.16.2 - resolve: 2.0.0-next.7 + is-core-module: 2.16.1 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.3(eslint@9.23.0(jiti@2.7.0))(jsonc-eslint-parser@2.4.2): + eslint-json-compat-utils@0.2.1(eslint@9.23.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2): dependencies: - eslint: 9.23.0(jiti@2.7.0) + eslint: 9.23.0(jiti@2.6.1) esquery: 1.7.0 jsonc-eslint-parser: 2.4.2 - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.23.0(jiti@2.7.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@2.6.1)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.23.0(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 + '@typescript-eslint/parser': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 9.23.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-astro@1.7.0(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-astro@1.7.0(eslint@9.23.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 - '@typescript-eslint/types': 8.60.1 - astro-eslint-parser: 1.4.0 - eslint: 9.23.0(jiti@2.7.0) - eslint-compat-utils: 0.6.5(eslint@9.23.0(jiti@2.7.0)) + '@typescript-eslint/types': 8.56.0 + astro-eslint-parser: 1.3.0 + eslint: 9.23.0(jiti@2.6.1) + eslint-compat-utils: 0.6.5(eslint@9.23.0(jiti@2.6.1)) globals: 16.5.0 postcss: 8.5.15 postcss-selector-parser: 7.1.1 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -19827,13 +19552,13 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 9.23.0(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.23.0(jiti@2.7.0)) - hasown: 2.0.4 - is-core-module: 2.16.2 + eslint: 9.23.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 3.1.5 + minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -19841,106 +19566,106 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.8.0(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-jsdoc@50.8.0(eslint@9.23.0(jiti@2.6.1)): dependencies: '@es-joy/jsdoccomment': 0.50.2 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.23.0(jiti@2.7.0) + eslint: 9.23.0(jiti@2.6.1) espree: 10.4.0 esquery: 1.7.0 parse-imports-exports: 0.2.4 - semver: 7.8.1 + semver: 7.7.4 spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.21.1(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-jsonc@2.21.1(eslint@9.23.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.6.1)) diff-sequences: 27.5.1 - eslint: 9.23.0(jiti@2.7.0) - eslint-compat-utils: 0.6.5(eslint@9.23.0(jiti@2.7.0)) - eslint-json-compat-utils: 0.2.3(eslint@9.23.0(jiti@2.7.0))(jsonc-eslint-parser@2.4.2) + eslint: 9.23.0(jiti@2.6.1) + eslint-compat-utils: 0.6.5(eslint@9.23.0(jiti@2.6.1)) + eslint-json-compat-utils: 0.2.1(eslint@9.23.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2) espree: 10.4.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.2 natural-compare: 1.4.0 - synckit: 0.11.13 + synckit: 0.11.12 transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.23.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.12.0 + axe-core: 4.11.1 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.23.0(jiti@2.7.0) - hasown: 2.0.4 + eslint: 9.23.0(jiti@2.6.1) + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 3.1.5 + minimatch: 3.1.2 object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-perfectionist@5.9.0(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3): + eslint-plugin-perfectionist@5.8.0(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/utils': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.23.0(jiti@2.7.0) + '@typescript-eslint/utils': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 9.23.0(jiti@2.6.1) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.3.2 - eslint: 9.23.0(jiti@2.7.0) + es-iterator-helpers: 1.2.2 + eslint: 9.23.0(jiti@2.6.1) estraverse: 5.3.0 - hasown: 2.0.4 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 + minimatch: 3.1.2 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 prop-types: 15.8.1 - resolve: 2.0.0-next.7 + resolve: 2.0.0-next.6 semver: 6.3.1 string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-svelte@2.46.1(eslint@9.23.0(jiti@2.7.0)): + eslint-plugin-svelte@2.46.1(eslint@9.23.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 9.23.0(jiti@2.7.0) - eslint-compat-utils: 0.5.1(eslint@9.23.0(jiti@2.7.0)) + eslint: 9.23.0(jiti@2.6.1) + eslint-compat-utils: 0.5.1(eslint@9.23.0(jiti@2.6.1)) esutils: 2.0.3 known-css-properties: 0.35.0 postcss: 8.5.15 postcss-load-config: 3.1.4(postcss@8.5.15) postcss-safe-parser: 6.0.0(postcss@8.5.15) postcss-selector-parser: 6.1.2 - semver: 7.8.1 + semver: 7.7.4 svelte-eslint-parser: 0.43.0 transitivePeerDependencies: - ts-node @@ -19961,22 +19686,22 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@9.23.0(jiti@2.7.0): + eslint@9.23.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.23.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.19.2 '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.5 + '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.23.0 '@eslint/plugin-kit': 0.2.8 - '@humanfs/node': 0.16.8 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - ajv: 6.15.0 + ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -19995,11 +19720,11 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.5 + minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.7.0 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -20029,7 +19754,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 estree-util-build-jsx@3.0.1: dependencies: @@ -20042,7 +19767,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -20060,7 +19785,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -20074,7 +19799,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.9.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller @@ -20116,7 +19841,7 @@ snapshots: dependencies: accepts: 2.0.0 body-parser: 2.2.2 - content-disposition: 1.1.0 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 @@ -20134,23 +19859,23 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.15.2 + qs: 6.15.0 range-parser: 1.2.1 router: 2.2.0 send: 1.2.1 serve-static: 2.2.1 statuses: 2.0.2 - type-is: 2.1.0 + type-is: 2.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color - expressive-code@0.41.7: + expressive-code@0.41.6: dependencies: - '@expressive-code/core': 0.41.7 - '@expressive-code/plugin-frames': 0.41.7 - '@expressive-code/plugin-shiki': 0.41.7 - '@expressive-code/plugin-text-markers': 0.41.7 + '@expressive-code/core': 0.41.6 + '@expressive-code/plugin-frames': 0.41.6 + '@expressive-code/plugin-shiki': 0.41.6 + '@expressive-code/plugin-text-markers': 0.41.6 exsolve@1.0.8: {} @@ -20183,7 +19908,7 @@ snapshots: dependencies: pure-rand: 6.1.0 - fast-copy@4.0.3: {} + fast-copy@4.0.2: {} fast-decode-uri-component@1.0.1: {} @@ -20203,12 +19928,12 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-json-stringify@6.4.0: + fast-json-stringify@6.3.0: dependencies: '@fastify/merge-json-schemas': 0.2.1 - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) - fast-uri: 3.1.2 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + fast-uri: 3.1.0 json-schema-ref-resolver: 3.0.0 rfdc: 1.4.1 @@ -20220,7 +19945,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-uri@3.1.2: {} + fast-uri@3.1.0: {} fast-xml-builder@1.2.0: dependencies: @@ -20238,7 +19963,7 @@ snapshots: fastify-plugin@5.1.0: {} - fastify@5.8.5: + fastify@5.7.4: dependencies: '@fastify/ajv-compiler': 4.0.5 '@fastify/error': 4.2.0 @@ -20246,15 +19971,15 @@ snapshots: '@fastify/proxy-addr': 5.1.0 abstract-logging: 2.0.1 avvio: 9.2.0 - fast-json-stringify: 6.4.0 - find-my-way: 9.6.0 + fast-json-stringify: 6.3.0 + find-my-way: 9.4.0 light-my-request: 6.6.0 pino: 10.3.1 process-warning: 5.0.0 rfdc: 1.4.1 secure-json-parse: 4.1.0 - semver: 7.8.1 - toad-cache: 3.7.1 + semver: 7.7.4 + toad-cache: 3.7.0 fastq@1.20.1: dependencies: @@ -20268,11 +19993,11 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.3 - fflate@0.8.3: {} + fflate@0.8.2: {} figures@3.2.0: dependencies: @@ -20289,16 +20014,16 @@ snapshots: file-type@20.5.0: dependencies: '@tokenizer/inflate': 0.2.7 - strtok3: 10.3.5 + strtok3: 10.3.4 token-types: 6.1.2 uint8array-extras: 1.5.0 transitivePeerDependencies: - supports-color - file-type@21.3.4: + file-type@21.3.0: dependencies: '@tokenizer/inflate': 0.4.1 - strtok3: 10.3.5 + strtok3: 10.3.4 token-types: 6.1.2 uint8array-extras: 1.5.0 transitivePeerDependencies: @@ -20333,11 +20058,11 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 - find-my-way@9.6.0: + find-my-way@9.4.0: dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 - safe-regex2: 5.1.1 + safe-regex2: 5.0.0 find-up@4.1.0: dependencies: @@ -20355,22 +20080,22 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.2 + flatted: 3.3.3 keyv: 4.5.4 - flatted@3.4.2: {} + flatted@3.3.3: {} flattie@1.1.1: {} - follow-redirects@1.16.0(debug@4.4.3): + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3(supports-color@8.1.1) fontace@0.4.1: dependencies: - fontkitten: 1.0.3 + fontkitten: 1.0.2 - fontkitten@1.0.3: + fontkitten@1.0.2: dependencies: tiny-inflate: 1.0.3 @@ -20392,7 +20117,7 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.4 + hasown: 2.0.2 mime-types: 2.1.35 formatly@0.3.0: @@ -20434,20 +20159,20 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.1 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.5: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.1 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.2.1 + jsonfile: 6.2.0 universalify: 2.0.1 fs-minipass@2.1.0: @@ -20467,11 +20192,11 @@ snapshots: function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.4 + hasown: 2.0.2 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -20494,19 +20219,19 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.6.0: {} + get-east-asian-width@1.5.0: {} get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.4 + hasown: 2.0.2 math-intrinsics: 1.1.0 get-nonce@1.0.1: {} @@ -20516,11 +20241,11 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 get-stream@5.2.0: dependencies: - pump: 3.0.4 + pump: 3.0.3 get-stream@6.0.1: {} @@ -20530,7 +20255,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.14.0: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -20546,9 +20271,9 @@ snapshots: dependencies: citty: 0.1.6 consola: 3.4.2 - defu: 6.1.7 + defu: 6.1.4 node-fetch-native: 1.6.7 - nypm: 0.6.6 + nypm: 0.6.5 pathe: 2.0.3 github-from-package@0.0.0: {} @@ -20567,7 +20292,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.2.5 + minimatch: 10.2.2 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 2.0.2 @@ -20576,14 +20301,14 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.2.5 + minimatch: 10.2.2 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 2.0.2 glob@13.0.6: dependencies: - minimatch: 10.2.5 + minimatch: 10.2.2 minipass: 7.1.3 path-scurry: 2.0.2 @@ -20592,7 +20317,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.5 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 optional: true @@ -20612,7 +20337,7 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - goober@2.1.19(csstype@3.2.3): + goober@2.1.18(csstype@3.2.3): dependencies: csstype: 3.2.3 @@ -20636,27 +20361,26 @@ snapshots: graphemer@1.4.0: {} - h3@1.15.11: + h3@1.15.5: dependencies: - cookie-es: 1.2.3 + cookie-es: 1.2.2 crossws: 0.3.5 - defu: 6.1.7 + defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.4 + ufo: 1.6.3 uncrypto: 0.1.3 - happy-dom@20.10.1: + happy-dom@20.6.3: dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 - buffer-image-size: 0.6.4 entities: 7.0.1 whatwg-mimetype: 3.0.0 - ws: 8.21.0 + ws: 8.19.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -20684,7 +20408,7 @@ snapshots: has-unicode@2.0.1: optional: true - hasown@2.0.4: + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -20718,7 +20442,7 @@ snapshots: '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 - property-information: 7.2.0 + property-information: 7.1.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 @@ -20759,7 +20483,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.1 + '@ungap/structured-clone': 1.3.0 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 @@ -20784,14 +20508,14 @@ snapshots: hast-util-to-string: 3.0.1 hast-util-whitespace: 3.0.0 nth-check: 2.1.1 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 unist-util-visit: 5.1.0 zwitch: 2.0.4 hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -20802,7 +20526,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 unist-util-position: 5.0.0 @@ -20819,14 +20543,14 @@ snapshots: hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.1 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -20836,7 +20560,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 unist-util-position: 5.0.0 @@ -20849,7 +20573,7 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -20874,7 +20598,7 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 7.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 help-me@5.0.0: {} @@ -20930,6 +20654,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color + optional: true https-proxy-agent@7.0.6: dependencies: @@ -20951,7 +20676,7 @@ snapshots: i18next@23.16.8: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 iconv-lite@0.6.3: dependencies: @@ -20962,7 +20687,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - idb-keyval@6.2.5: {} + idb-keyval@6.2.2: {} ieee754@1.2.1: {} @@ -21013,17 +20738,17 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.4 + hasown: 2.0.2 side-channel: 1.1.0 internmap@2.0.3: {} - ip-address@10.2.0: + ip-address@10.1.0: optional: true ipaddr.js@1.9.1: {} - ipaddr.js@2.4.0: {} + ipaddr.js@2.3.0: {} iron-webcrypto@1.2.1: {} @@ -21036,7 +20761,7 @@ snapshots: is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 @@ -21065,9 +20790,9 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.16.2: + is-core-module@2.16.1: dependencies: - hasown: 2.0.4 + hasown: 2.0.2 is-data-view@1.0.2: dependencies: @@ -21144,7 +20869,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.4 + hasown: 2.0.2 is-regexp@3.1.0: {} @@ -21169,7 +20894,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.21 + which-typed-array: 1.1.20 is-typedarray@1.0.0: {} @@ -21194,7 +20919,7 @@ snapshots: isarray@2.0.5: {} - isbot@5.1.40: {} + isbot@5.1.35: {} isexe@2.0.0: {} @@ -21218,7 +20943,7 @@ snapshots: iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 get-proto: 1.0.1 has-symbols: 1.1.0 @@ -21228,7 +20953,7 @@ snapshots: dependencies: '@isaacs/cliui': 9.0.0 - jiti@2.7.0: {} + jiti@2.6.1: {} jju@1.4.0: {} @@ -21250,10 +20975,6 @@ snapshots: dependencies: argparse: 2.0.1 - js-yaml@4.2.0: - dependencies: - argparse: 2.0.1 - jsbn@0.1.1: {} jsdoc-type-pratt-parser@4.1.0: {} @@ -21287,13 +21008,13 @@ snapshots: acorn: 8.16.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.8.1 + semver: 7.7.4 jsonc-parser@2.3.1: {} jsonc-parser@3.3.1: {} - jsonfile@6.2.1: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -21310,7 +21031,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.8.1 + semver: 7.7.4 jsprim@2.0.2: dependencies: @@ -21371,23 +21092,22 @@ snapshots: klona@2.0.6: {} - knip@5.88.1(@types/node@24.13.0)(typescript@6.0.3): + knip@5.84.1(@types/node@24.13.1)(typescript@6.0.2): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 24.13.0 + '@types/node': 24.13.1 fast-glob: 3.3.3 formatly: 0.3.0 - jiti: 2.7.0 + jiti: 2.6.1 + js-yaml: 4.1.1 minimist: 1.2.8 - oxc-resolver: 11.20.0 + oxc-resolver: 11.17.1 picocolors: 1.1.1 - picomatch: 4.0.4 - smol-toml: 1.6.1 + picomatch: 4.0.3 + smol-toml: 1.6.0 strip-json-comments: 5.0.3 - typescript: 6.0.3 - unbash: 2.2.0 - yaml: 2.9.0 - zod: 4.4.3 + typescript: 6.0.2 + zod: 4.3.6 known-css-properties@0.35.0: {} @@ -21465,7 +21185,7 @@ snapshots: lilconfig@2.1.0: {} - linkify-it@5.0.1: + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -21512,7 +21232,9 @@ snapshots: lodash.once@4.1.1: {} - lodash@4.18.1: {} + lodash@4.17.21: {} + + lodash@4.17.23: {} log-symbols@4.1.0: dependencies: @@ -21536,7 +21258,7 @@ snapshots: lowercase-keys@3.0.0: {} - lru-cache@11.5.1: {} + lru-cache@11.2.6: {} lru-cache@5.1.1: dependencies: @@ -21545,7 +21267,6 @@ snapshots: lru-cache@6.0.0: dependencies: yallist: 4.0.0 - optional: true lucide-react@0.473.0(react@vendor+react@19.x): dependencies: @@ -21559,11 +21280,11 @@ snapshots: dependencies: react: link:vendor/react@19.x - lucide-react@1.17.0(react@19.1.0): + lucide-react@1.11.0(react@19.1.0): dependencies: react: 19.1.0 - lucide-react@1.17.0(react@vendor+react@19.x): + lucide-react@1.11.0(react@vendor+react@19.x): dependencies: react: link:vendor/react@19.x @@ -21579,10 +21300,17 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.5.3: + magicast@0.3.5: + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + source-map-js: 1.2.1 + optional: true + + magicast@0.5.2: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -21591,7 +21319,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.8.1 + semver: 7.7.4 make-fetch-happen@9.1.0: dependencies: @@ -21605,7 +21333,7 @@ snapshots: minipass: 3.3.6 minipass-collect: 1.0.2 minipass-fetch: 1.4.1 - minipass-flush: 1.0.7 + minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.4 promise-retry: 2.0.1 @@ -21618,11 +21346,11 @@ snapshots: markdown-extensions@2.0.0: {} - markdown-it@14.2.0: + markdown-it@14.1.1: dependencies: argparse: 2.0.1 entities: 4.5.0 - linkify-it: 5.0.1 + linkify-it: 5.0.0 mdurl: 2.0.0 punycode.js: 2.3.1 uc.micro: 2.1.0 @@ -21643,7 +21371,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -21658,7 +21386,7 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.0.2: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 @@ -21687,7 +21415,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: @@ -21696,7 +21424,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -21706,7 +21434,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -21715,14 +21443,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm@3.1.0: dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -21738,7 +21466,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -21751,7 +21479,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -21762,7 +21490,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 @@ -21776,7 +21504,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -21790,7 +21518,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.1 + '@ungap/structured-clone': 1.3.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -21816,7 +21544,7 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.27.1: {} + mdn-data@2.12.2: {} mdurl@2.0.0: {} @@ -21923,7 +21651,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -21934,7 +21662,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -21951,7 +21679,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -21987,7 +21715,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -22051,7 +21779,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -22088,7 +21816,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.13 + '@types/debug': 4.1.12 debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -22111,7 +21839,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.2 + picomatch: 2.3.1 mime-db@1.52.0: {} @@ -22135,21 +21863,21 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.2.3: + minimatch@10.2.1: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 5.0.2 - minimatch@10.2.5: + minimatch@10.2.2: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 5.0.2 - minimatch@3.1.5: + minimatch@3.1.2: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 1.1.12 - minimatch@9.0.9: + minimatch@9.0.5: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -22167,7 +21895,7 @@ snapshots: encoding: 0.1.13 optional: true - minipass-flush@1.0.7: + minipass-flush@1.0.5: dependencies: minipass: 3.3.6 optional: true @@ -22197,6 +21925,10 @@ snapshots: mkdirp-classic@0.5.3: {} + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mkdirp@1.0.4: {} monaco-editor@0.52.2: {} @@ -22206,25 +21938,24 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 14.2.0 - mongodb-memory-server-core@10.4.3(socks@2.8.9): + mongodb-memory-server-core@10.4.3(socks@2.8.7): dependencies: async-mutex: 0.5.0 camelcase: 6.3.0 debug: 4.4.3(supports-color@8.1.1) find-cache-dir: 3.3.2 - follow-redirects: 1.16.0(debug@4.4.3) + follow-redirects: 1.15.11(debug@4.4.3) https-proxy-agent: 7.0.6 - mongodb: 6.21.0(socks@2.8.9) + mongodb: 6.21.0(socks@2.8.7) new-find-package-json: 2.0.0 - semver: 7.8.1 - tar-stream: 3.2.0 + semver: 7.7.4 + tar-stream: 3.1.7 tslib: 2.8.1 - yauzl: 3.3.2 + yauzl: 3.2.0 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' - bare-abort-controller - - bare-buffer - gcp-metadata - kerberos - mongodb-client-encryption @@ -22233,15 +21964,14 @@ snapshots: - socks - supports-color - mongodb-memory-server@10.4.3(socks@2.8.9): + mongodb-memory-server@10.4.3(socks@2.8.7): dependencies: - mongodb-memory-server-core: 10.4.3(socks@2.8.9) + mongodb-memory-server-core: 10.4.3(socks@2.8.7) tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' - bare-abort-controller - - bare-buffer - gcp-metadata - kerberos - mongodb-client-encryption @@ -22250,13 +21980,13 @@ snapshots: - socks - supports-color - mongodb@6.21.0(socks@2.8.9): + mongodb@6.21.0(socks@2.8.7): dependencies: - '@mongodb-js/saslprep': 1.4.11 + '@mongodb-js/saslprep': 1.4.6 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 optionalDependencies: - socks: 2.8.9 + socks: 2.8.7 motion-dom@11.18.1: dependencies: @@ -22294,30 +22024,35 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.4: + msgpackr-extract@3.0.3: dependencies: node-gyp-build-optional-packages: 5.2.2 optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.4 + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.12: + msgpackr@1.11.8: optionalDependencies: - msgpackr-extract: 3.0.4 + msgpackr-extract: 3.0.3 muggle-string@0.4.1: {} - multer@2.1.1: + multer@2.0.2: dependencies: append-field: 1.0.0 busboy: 1.6.0 concat-stream: 2.0.0 + mkdirp: 0.5.6 + object-assign: 4.1.1 type-is: 1.6.18 + xtend: 4.0.2 + + nanoid@3.3.11: {} nanoid@3.3.12: {} @@ -22335,7 +22070,7 @@ snapshots: neverthrow@8.2.0: optionalDependencies: - '@rollup/rollup-linux-x64-gnu': 4.61.1 + '@rollup/rollup-linux-x64-gnu': 4.58.0 new-find-package-json@2.0.0: dependencies: @@ -22347,9 +22082,9 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 - node-abi@3.92.0: + node-abi@3.87.0: dependencies: - semver: 7.8.1 + semver: 7.7.4 node-addon-api@7.1.1: {} @@ -22376,7 +22111,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.8.1 + semver: 7.7.4 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -22386,18 +22121,18 @@ snapshots: node-mock-http@1.0.4: {} - node-releases@2.0.47: {} + node-releases@2.0.27: {} nodemailer@7.0.13: {} - nodemon@3.1.14: + nodemon@3.1.13: dependencies: chokidar: 3.6.0 debug: 4.4.3(supports-color@5.5.0) ignore-by-default: 1.0.1 - minimatch: 10.2.5 + minimatch: 10.2.2 pstree.remy: 1.1.8 - semver: 7.8.1 + semver: 7.7.4 simple-update-notifier: 2.0.0 supports-color: 5.5.0 touch: 3.1.1 @@ -22432,11 +22167,11 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.6.6: + nypm@0.6.5: dependencies: - citty: 0.2.2 + citty: 0.2.1 pathe: 2.0.3 - tinyexec: 1.2.4 + tinyexec: 1.0.2 object-assign@4.1.1: {} @@ -22448,47 +22183,47 @@ snapshots: object.assign@4.1.7: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 object.entries@1.1.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 - obug@2.1.2: {} + obug@2.1.1: {} ofetch@1.5.1: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.4 + ufo: 1.6.3 ohash@2.0.11: {} @@ -22508,11 +22243,11 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-parser@0.12.2: {} + oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.6: + oniguruma-to-es@4.3.4: dependencies: - oniguruma-parser: 0.12.2 + oniguruma-parser: 0.12.1 regex: 6.1.0 regex-recursion: 6.0.2 @@ -22540,52 +22275,28 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-parser@0.127.0: - dependencies: - '@oxc-project/types': 0.127.0 - optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.127.0 - '@oxc-parser/binding-android-arm64': 0.127.0 - '@oxc-parser/binding-darwin-arm64': 0.127.0 - '@oxc-parser/binding-darwin-x64': 0.127.0 - '@oxc-parser/binding-freebsd-x64': 0.127.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.127.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.127.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.127.0 - '@oxc-parser/binding-linux-arm64-musl': 0.127.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.127.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.127.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.127.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.127.0 - '@oxc-parser/binding-linux-x64-gnu': 0.127.0 - '@oxc-parser/binding-linux-x64-musl': 0.127.0 - '@oxc-parser/binding-openharmony-arm64': 0.127.0 - '@oxc-parser/binding-wasm32-wasi': 0.127.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.127.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.127.0 - '@oxc-parser/binding-win32-x64-msvc': 0.127.0 - - oxc-resolver@11.20.0: + oxc-resolver@11.17.1: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.20.0 - '@oxc-resolver/binding-android-arm64': 11.20.0 - '@oxc-resolver/binding-darwin-arm64': 11.20.0 - '@oxc-resolver/binding-darwin-x64': 11.20.0 - '@oxc-resolver/binding-freebsd-x64': 11.20.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.20.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.20.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.20.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.20.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.20.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-x64-musl': 11.20.0 - '@oxc-resolver/binding-openharmony-arm64': 11.20.0 - '@oxc-resolver/binding-wasm32-wasi': 11.20.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.20.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.20.0 + '@oxc-resolver/binding-android-arm-eabi': 11.17.1 + '@oxc-resolver/binding-android-arm64': 11.17.1 + '@oxc-resolver/binding-darwin-arm64': 11.17.1 + '@oxc-resolver/binding-darwin-x64': 11.17.1 + '@oxc-resolver/binding-freebsd-x64': 11.17.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.17.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.17.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.17.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.17.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.17.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.17.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.17.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.17.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.17.1 + '@oxc-resolver/binding-linux-x64-musl': 11.17.1 + '@oxc-resolver/binding-openharmony-arm64': 11.17.1 + '@oxc-resolver/binding-wasm32-wasi': 11.17.1 + '@oxc-resolver/binding-win32-arm64-msvc': 11.17.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.17.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.17.1 p-cancelable@3.0.0: {} @@ -22626,15 +22337,14 @@ snapshots: package-manager-detector@1.6.0: {} - pagefind@1.5.2: + pagefind@1.4.0: optionalDependencies: - '@pagefind/darwin-arm64': 1.5.2 - '@pagefind/darwin-x64': 1.5.2 - '@pagefind/freebsd-x64': 1.5.2 - '@pagefind/linux-arm64': 1.5.2 - '@pagefind/linux-x64': 1.5.2 - '@pagefind/windows-arm64': 1.5.2 - '@pagefind/windows-x64': 1.5.2 + '@pagefind/darwin-arm64': 1.4.0 + '@pagefind/darwin-x64': 1.4.0 + '@pagefind/freebsd-x64': 1.4.0 + '@pagefind/linux-arm64': 1.4.0 + '@pagefind/linux-x64': 1.4.0 + '@pagefind/windows-x64': 1.4.0 pako@1.0.11: {} @@ -22703,10 +22413,10 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.5.1 + lru-cache: 11.2.6 minipass: 7.1.3 - path-to-regexp@8.4.2: {} + path-to-regexp@8.3.0: {} pathe@2.0.3: {} @@ -22724,9 +22434,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.2: {} + picomatch@2.3.1: {} - picomatch@4.0.4: {} + picomatch@4.0.3: {} pify@2.3.0: {} @@ -22745,14 +22455,14 @@ snapshots: dependencies: colorette: 2.0.20 dateformat: 4.6.3 - fast-copy: 4.0.3 + fast-copy: 4.0.2 fast-safe-stringify: 2.1.1 help-me: 5.0.0 joycon: 3.1.1 minimist: 1.2.8 on-exit-leak-free: 2.1.2 pino-abstract-transport: 3.0.0 - pump: 3.0.4 + pump: 3.0.3 secure-json-parse: 4.1.0 sonic-boom: 4.2.1 strip-json-comments: 5.0.3 @@ -22771,7 +22481,7 @@ snapshots: real-require: 0.2.0 safe-stable-stringify: 2.5.0 sonic-boom: 4.2.1 - thread-stream: 4.2.0 + thread-stream: 4.0.0 pirates@4.0.7: {} @@ -22783,7 +22493,7 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@2.3.1: + pkg-types@2.3.0: dependencies: confbox: 0.2.4 exsolve: 1.0.8 @@ -22806,7 +22516,7 @@ snapshots: postcss-load-config@3.1.4(postcss@8.5.15): dependencies: lilconfig: 2.1.0 - yaml: 1.10.3 + yaml: 1.10.2 optionalDependencies: postcss: 8.5.15 @@ -22844,6 +22554,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prebuild-install@7.1.3: dependencies: detect-libc: 2.1.2 @@ -22852,8 +22568,8 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.92.0 - pump: 3.0.4 + node-abi: 3.87.0 + pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 tar-fs: 2.1.4 @@ -22864,16 +22580,16 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.13.1 - prettier: 3.8.3 + prettier: 3.8.1 sass-formatter: 0.7.9 - prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.3): + prettier-plugin-tailwindcss@0.6.14(prettier-plugin-astro@0.14.1)(prettier@3.8.1): dependencies: - prettier: 3.8.3 + prettier: 3.8.1 optionalDependencies: prettier-plugin-astro: 0.14.1 - prettier@3.8.3: {} + prettier@3.8.1: {} pretty-bytes@5.6.0: {} @@ -22883,21 +22599,21 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 - prisma-json-types-generator@3.6.2(@prisma/client@6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3))(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3): + prisma-json-types-generator@3.6.2(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2))(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2): dependencies: - '@prisma/client': 6.19.3(prisma@6.19.3(typescript@6.0.3))(typescript@6.0.3) - '@prisma/generator-helper': 6.19.3 - prisma: 6.19.3(typescript@6.0.3) - semver: 7.8.1 + '@prisma/client': 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2))(typescript@6.0.2) + '@prisma/generator-helper': 6.19.2 + prisma: 6.19.2(magicast@0.3.5)(typescript@6.0.2) + semver: 7.7.4 tslib: 2.8.1 - typescript: 6.0.3 + typescript: 6.0.2 - prisma@6.19.3(typescript@6.0.3): + prisma@6.19.2(magicast@0.3.5)(typescript@6.0.2): dependencies: - '@prisma/config': 6.19.3 - '@prisma/engines': 6.19.3 + '@prisma/config': 6.19.2(magicast@0.3.5) + '@prisma/engines': 6.19.2 optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 transitivePeerDependencies: - magicast @@ -22931,7 +22647,7 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-information@7.2.0: {} + property-information@7.1.0: {} proxy-addr@2.0.7: dependencies: @@ -22944,7 +22660,7 @@ snapshots: pstree.remy@1.1.8: {} - pump@3.0.4: + pump@3.0.3: dependencies: end-of-stream: 1.4.5 once: 1.4.0 @@ -22965,7 +22681,7 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.15.2: + qs@6.15.0: dependencies: side-channel: 1.1.0 @@ -22996,7 +22712,7 @@ snapshots: rc9@2.1.2: dependencies: - defu: 6.1.7 + defu: 6.1.4 destr: 2.0.5 rc@1.2.8: @@ -23006,25 +22722,31 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-docgen-typescript@2.4.0(typescript@6.0.3): + react-docgen-typescript@2.4.0(typescript@6.0.2): dependencies: - typescript: 6.0.3 + typescript: 6.0.2 react-docgen@8.0.3: dependencies: - '@babel/core': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.12 + resolve: 1.22.11 strip-indent: 4.1.1 transitivePeerDependencies: - supports-color + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dom@18.3.1(react@19.1.0): dependencies: loose-envify: 1.4.0 @@ -23052,17 +22774,17 @@ snapshots: react-error-boundary@4.1.2(react@19.1.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.2 react: 19.1.0 react-error-boundary@4.1.2(react@vendor+react@19.x): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.2 react: link:vendor/react@19.x react-error-boundary@5.0.0(react@vendor+react@19.x): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 react: link:vendor/react@19.x react-is@16.13.1: {} @@ -23141,7 +22863,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -23150,7 +22872,7 @@ snapshots: react-transition-group@4.4.5(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -23181,7 +22903,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.2 + picomatch: 2.3.1 readdirp@4.1.2: {} @@ -23191,8 +22913,6 @@ snapshots: real-require@0.2.0: {} - real-require@1.0.0: {} - recast@0.23.11: dependencies: ast-types: 0.16.1 @@ -23209,7 +22929,7 @@ snapshots: dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 - lodash: 4.18.1 + lodash: 4.17.23 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-is: 18.3.1 @@ -23222,7 +22942,7 @@ snapshots: dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 - lodash: 4.18.1 + lodash: 4.17.23 react: link:vendor/react@19.x react-dom: link:vendor/react-dom@19.x react-is: 18.3.1 @@ -23233,7 +22953,7 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -23248,14 +22968,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -23269,11 +22989,11 @@ snapshots: reflect.getprototypeof@1.0.10: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -23290,16 +23010,16 @@ snapshots: regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 get-proto: 1.0.1 gopd: 1.2.0 set-function-name: 2.0.2 - rehype-expressive-code@0.41.7: + rehype-expressive-code@0.41.6: dependencies: - expressive-code: 0.41.7 + expressive-code: 0.41.6 rehype-format@5.0.1: dependencies: @@ -23320,7 +23040,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -23369,7 +23089,7 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -23410,7 +23130,7 @@ snapshots: require-main-filename@2.0.0: {} - reselect@5.2.0: {} + reselect@5.1.1: {} resolve-alpn@1.2.1: {} @@ -23418,17 +23138,16 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.12: + resolve@1.22.11: dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.7: + resolve@2.0.0-next.6: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.2 + is-core-module: 2.16.1 node-exports-info: 1.6.0 object-keys: 1.1.1 path-parse: 1.0.7 @@ -23482,35 +23201,35 @@ snapshots: glob: 7.2.3 optional: true - rollup@4.61.1: + rollup@4.58.0: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.61.1 - '@rollup/rollup-android-arm64': 4.61.1 - '@rollup/rollup-darwin-arm64': 4.61.1 - '@rollup/rollup-darwin-x64': 4.61.1 - '@rollup/rollup-freebsd-arm64': 4.61.1 - '@rollup/rollup-freebsd-x64': 4.61.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.61.1 - '@rollup/rollup-linux-arm-musleabihf': 4.61.1 - '@rollup/rollup-linux-arm64-gnu': 4.61.1 - '@rollup/rollup-linux-arm64-musl': 4.61.1 - '@rollup/rollup-linux-loong64-gnu': 4.61.1 - '@rollup/rollup-linux-loong64-musl': 4.61.1 - '@rollup/rollup-linux-ppc64-gnu': 4.61.1 - '@rollup/rollup-linux-ppc64-musl': 4.61.1 - '@rollup/rollup-linux-riscv64-gnu': 4.61.1 - '@rollup/rollup-linux-riscv64-musl': 4.61.1 - '@rollup/rollup-linux-s390x-gnu': 4.61.1 - '@rollup/rollup-linux-x64-gnu': 4.61.1 - '@rollup/rollup-linux-x64-musl': 4.61.1 - '@rollup/rollup-openbsd-x64': 4.61.1 - '@rollup/rollup-openharmony-arm64': 4.61.1 - '@rollup/rollup-win32-arm64-msvc': 4.61.1 - '@rollup/rollup-win32-ia32-msvc': 4.61.1 - '@rollup/rollup-win32-x64-gnu': 4.61.1 - '@rollup/rollup-win32-x64-msvc': 4.61.1 + '@rollup/rollup-android-arm-eabi': 4.58.0 + '@rollup/rollup-android-arm64': 4.58.0 + '@rollup/rollup-darwin-arm64': 4.58.0 + '@rollup/rollup-darwin-x64': 4.58.0 + '@rollup/rollup-freebsd-arm64': 4.58.0 + '@rollup/rollup-freebsd-x64': 4.58.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.58.0 + '@rollup/rollup-linux-arm-musleabihf': 4.58.0 + '@rollup/rollup-linux-arm64-gnu': 4.58.0 + '@rollup/rollup-linux-arm64-musl': 4.58.0 + '@rollup/rollup-linux-loong64-gnu': 4.58.0 + '@rollup/rollup-linux-loong64-musl': 4.58.0 + '@rollup/rollup-linux-ppc64-gnu': 4.58.0 + '@rollup/rollup-linux-ppc64-musl': 4.58.0 + '@rollup/rollup-linux-riscv64-gnu': 4.58.0 + '@rollup/rollup-linux-riscv64-musl': 4.58.0 + '@rollup/rollup-linux-s390x-gnu': 4.58.0 + '@rollup/rollup-linux-x64-gnu': 4.58.0 + '@rollup/rollup-linux-x64-musl': 4.58.0 + '@rollup/rollup-openbsd-x64': 4.58.0 + '@rollup/rollup-openharmony-arm64': 4.58.0 + '@rollup/rollup-win32-arm64-msvc': 4.58.0 + '@rollup/rollup-win32-ia32-msvc': 4.58.0 + '@rollup/rollup-win32-x64-gnu': 4.58.0 + '@rollup/rollup-win32-x64-msvc': 4.58.0 fsevents: 2.3.3 router@2.2.0: @@ -23519,7 +23238,7 @@ snapshots: depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.4.2 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color @@ -23535,9 +23254,9 @@ snapshots: s.color@0.0.15: {} - safe-array-concat@1.1.4: + safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 has-symbols: 1.1.0 @@ -23558,7 +23277,7 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - safe-regex2@5.1.1: + safe-regex2@5.0.0: dependencies: ret: 0.5.0 @@ -23570,7 +23289,7 @@ snapshots: dependencies: suf-log: 2.5.3 - sax@1.6.0: {} + sax@1.4.4: {} scheduler@0.23.2: dependencies: @@ -23590,13 +23309,15 @@ snapshots: semver-truncate@3.0.0: dependencies: - semver: 7.8.1 + semver: 7.7.4 semver@6.3.1: {} - semver@7.7.4: {} + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 - semver@7.8.1: {} + semver@7.7.4: {} send@1.2.1: dependencies: @@ -23625,17 +23346,17 @@ snapshots: serialize-error@13.0.1: dependencies: non-error: 0.1.0 - type-fest: 5.7.0 + type-fest: 5.4.4 serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - seroval-plugins@1.5.4(seroval@1.5.4): + seroval-plugins@1.5.0(seroval@1.5.0): dependencies: - seroval: 1.5.4 + seroval: 1.5.0 - seroval@1.5.4: {} + seroval@1.5.0: {} serve-static@2.2.1: dependencies: @@ -23670,7 +23391,7 @@ snapshots: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 setimmediate@1.0.5: {} @@ -23680,7 +23401,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.1.2 - semver: 7.8.1 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -23704,9 +23425,9 @@ snapshots: sharp@0.34.5: dependencies: - '@img/colour': 1.1.0 + '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.8.1 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -23740,18 +23461,18 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.23.0: + shiki@3.22.0: dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 + '@shikijs/core': 3.22.0 + '@shikijs/engine-javascript': 3.22.0 + '@shikijs/engine-oniguruma': 3.22.0 + '@shikijs/langs': 3.22.0 + '@shikijs/themes': 3.22.0 + '@shikijs/types': 3.22.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - side-channel-list@1.0.1: + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 @@ -23775,7 +23496,7 @@ snapshots: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.1 + side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -23801,7 +23522,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.8.1 + semver: 7.7.4 sirv@2.0.4: dependencies: @@ -23817,12 +23538,12 @@ snapshots: sisteransi@1.0.5: {} - sitemap@9.0.1: + sitemap@8.0.2: dependencies: - '@types/node': 24.13.0 + '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.6.0 + sax: 1.4.4 slash@3.0.0: {} @@ -23843,20 +23564,20 @@ snapshots: smart-buffer@4.2.0: optional: true - smol-toml@1.6.1: {} + smol-toml@1.6.0: {} socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 debug: 4.4.3(supports-color@8.1.1) - socks: 2.8.9 + socks: 2.8.7 transitivePeerDependencies: - supports-color optional: true - socks@2.8.9: + socks@2.8.7: dependencies: - ip-address: 10.2.0 + ip-address: 10.1.0 smart-buffer: 4.2.0 optional: true @@ -23900,9 +23621,9 @@ snapshots: spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.23 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.23: {} + spdx-license-ids@3.0.22: {} split2@4.2.0: {} @@ -23958,25 +23679,23 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 2.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@storybook/icons': 2.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 '@webcontainer/env': 1.1.1 - esbuild: 0.27.7 + esbuild: 0.27.3 open: 10.2.0 - oxc-parser: 0.127.0 - oxc-resolver: 11.20.0 recast: 0.23.11 - semver: 7.8.1 + semver: 7.7.4 use-sync-external-store: 1.6.0(react@19.1.0) - ws: 8.21.0 + ws: 8.19.0 optionalDependencies: - prettier: 3.8.3 + prettier: 3.8.1 transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -23984,25 +23703,23 @@ snapshots: - react-dom - utf-8-validate - storybook@10.4.2(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x): + storybook@10.3.5(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 2.0.2(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) + '@storybook/icons': 2.0.1(react-dom@vendor+react-dom@19.x)(react@vendor+react@19.x) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 '@webcontainer/env': 1.1.1 - esbuild: 0.27.7 + esbuild: 0.27.3 open: 10.2.0 - oxc-parser: 0.127.0 - oxc-resolver: 11.20.0 recast: 0.23.11 - semver: 7.8.1 + semver: 7.7.4 use-sync-external-store: 1.6.0(react@vendor+react@19.x) - ws: 8.21.0 + ws: 8.19.0 optionalDependencies: - prettier: 3.8.3 + prettier: 3.8.1 transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -24014,7 +23731,7 @@ snapshots: streamsearch@1.1.0: {} - streamx@2.26.0: + streamx@2.23.0: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 @@ -24034,23 +23751,23 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.6.0 - strip-ansi: 7.2.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 string.prototype.includes@2.0.1: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 gopd: 1.2.0 has-symbols: 1.1.0 @@ -24062,30 +23779,30 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.1.2 + es-object-atoms: 1.1.1 string_decoder@1.1.1: dependencies: @@ -24110,7 +23827,7 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.2.0: + strip-ansi@7.1.2: dependencies: ansi-regex: 6.2.2 @@ -24137,7 +23854,7 @@ snapshots: strnum@2.3.0: {} - strtok3@10.3.5: + strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 @@ -24163,7 +23880,7 @@ snapshots: formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 - qs: 6.15.2 + qs: 6.15.0 transitivePeerDependencies: - supports-color @@ -24197,23 +23914,23 @@ snapshots: postcss: 8.5.15 postcss-scss: 4.0.9(postcss@8.5.15) - svgo@4.0.1: + svgo@4.0.0: dependencies: commander: 11.1.0 css-select: 5.2.2 - css-tree: 3.2.1 + css-tree: 3.1.0 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.4.4 - swagger-ui-dist@5.32.6: + swagger-ui-dist@5.31.0: dependencies: '@scarf/scarf': 1.4.0 - synckit@0.11.13: + synckit@0.11.12: dependencies: - '@pkgr/core': 0.3.6 + '@pkgr/core': 0.2.9 tagged-tag@1.0.0: {} @@ -24227,7 +23944,7 @@ snapshots: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 - pump: 3.0.4 + pump: 3.0.3 tar-stream: 2.2.0 tar-stream@2.2.0: @@ -24238,15 +23955,13 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar-stream@3.2.0: + tar-stream@3.1.7: dependencies: - b4a: 1.8.1 - bare-fs: 4.7.2 + b4a: 1.8.0 fast-fifo: 1.3.2 - streamx: 2.26.0 + streamx: 2.23.0 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a tar@6.2.1: @@ -24258,16 +23973,9 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - teex@1.0.1: - dependencies: - streamx: 2.26.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - text-decoder@1.2.7: dependencies: - b4a: 1.8.1 + b4a: 1.8.0 transitivePeerDependencies: - react-native-b4a @@ -24275,9 +23983,9 @@ snapshots: dependencies: utrie: 1.0.2 - thread-stream@4.2.0: + thread-stream@4.0.0: dependencies: - real-require: 1.0.0 + real-require: 0.2.0 throttleit@1.0.1: {} @@ -24287,14 +23995,16 @@ snapshots: tiny-invariant@1.3.3: {} + tiny-warning@1.0.3: {} + tinybench@2.9.0: {} - tinyexec@1.2.4: {} + tinyexec@1.0.2: {} - tinyglobby@0.2.17: + tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinyrainbow@2.0.0: {} @@ -24308,19 +24018,19 @@ snapshots: dependencies: tldts-core: 6.1.86 - tmp@0.2.7: {} + tmp@0.2.5: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - toad-cache@3.7.1: {} + toad-cache@3.7.0: {} toidentifier@1.0.1: {} token-types@6.1.2: dependencies: - '@borewit/text-codec': 0.2.2 + '@borewit/text-codec': 0.2.1 '@tokenizer/token': 0.3.0 ieee754: 1.2.1 @@ -24344,9 +24054,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.5.0(typescript@6.0.3): + ts-api-utils@2.5.0(typescript@6.0.2): dependencies: - typescript: 6.0.3 + typescript: 6.0.2 ts-dedent@2.2.0: {} @@ -24359,9 +24069,9 @@ snapshots: ts-pattern@5.9.0: {} - tsconfck@3.1.6(typescript@6.0.3): + tsconfck@3.1.6(typescript@6.0.2): optionalDependencies: - typescript: 6.0.3 + typescript: 6.0.2 tsconfig-paths@3.15.0: dependencies: @@ -24378,10 +24088,17 @@ snapshots: tslib@2.8.1: {} + tsx@4.21.0: + dependencies: + esbuild: 0.27.3 + get-tsconfig: 4.13.6 + optionalDependencies: + fsevents: 2.3.3 + tsx@4.8.2: dependencies: esbuild: 0.20.2 - get-tsconfig: 4.14.0 + get-tsconfig: 4.13.6 optionalDependencies: fsevents: 2.3.3 @@ -24389,14 +24106,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo@2.9.16: + turbo-darwin-64@2.8.10: + optional: true + + turbo-darwin-arm64@2.8.10: + optional: true + + turbo-linux-64@2.8.10: + optional: true + + turbo-linux-arm64@2.8.10: + optional: true + + turbo-windows-64@2.8.10: + optional: true + + turbo-windows-arm64@2.8.10: + optional: true + + turbo@2.8.10: optionalDependencies: - '@turbo/darwin-64': 2.9.16 - '@turbo/darwin-arm64': 2.9.16 - '@turbo/linux-64': 2.9.16 - '@turbo/linux-arm64': 2.9.16 - '@turbo/windows-64': 2.9.16 - '@turbo/windows-arm64': 2.9.16 + turbo-darwin-64: 2.8.10 + turbo-darwin-arm64: 2.8.10 + turbo-linux-64: 2.8.10 + turbo-linux-arm64: 2.8.10 + turbo-windows-64: 2.8.10 + turbo-windows-arm64: 2.8.10 tw-animate-css@1.4.0: {} @@ -24414,7 +24149,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.7.0: + type-fest@5.4.4: dependencies: tagged-tag: 1.0.0 @@ -24423,9 +24158,9 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - type-is@2.1.0: + type-is@2.0.1: dependencies: - content-type: 2.0.0 + content-type: 1.0.5 media-typer: 1.1.0 mime-types: 3.0.2 @@ -24437,7 +24172,7 @@ snapshots: typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 @@ -24446,16 +24181,16 @@ snapshots: typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 - typed-array-length@1.0.8: + typed-array-length@1.0.7: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 @@ -24464,41 +24199,41 @@ snapshots: typedarray@0.0.6: {} - typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@6.0.3)): + typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@6.0.2)): dependencies: - typedoc: 0.27.9(typescript@6.0.3) + typedoc: 0.27.9(typescript@6.0.2) - typedoc@0.27.9(typescript@6.0.3): + typedoc@0.27.9(typescript@6.0.2): dependencies: '@gerrit0/mini-shiki': 1.27.2 lunr: 2.3.9 - markdown-it: 14.2.0 - minimatch: 9.0.9 - typescript: 6.0.3 - yaml: 2.9.0 + markdown-it: 14.1.1 + minimatch: 9.0.5 + typescript: 6.0.2 + yaml: 2.8.2 typesafe-path@0.2.2: {} typescript-auto-import-cache@0.3.6: dependencies: - semver: 7.8.1 + semver: 7.7.4 - typescript-eslint@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.23.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 9.23.0(jiti@2.7.0) - typescript: 6.0.3 + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2))(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.23.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 9.23.0(jiti@2.6.1) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - typescript@6.0.3: {} + typescript@6.0.2: {} uc.micro@2.1.0: {} - ufo@1.6.4: {} + ufo@1.6.3: {} uid@2.0.2: dependencies: @@ -24508,8 +24243,6 @@ snapshots: ultrahtml@1.6.0: {} - unbash@2.2.0: {} - unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -24540,7 +24273,7 @@ snapshots: unifont@0.7.4: dependencies: - css-tree: 3.2.1 + css-tree: 3.1.0 ofetch: 1.5.1 ohash: 2.0.11 @@ -24604,10 +24337,10 @@ snapshots: unpipe@1.0.0: {} - unplugin-swc@1.5.9(@swc/core@1.15.40(@swc/helpers@0.5.23))(rollup@4.61.1): + unplugin-swc@1.5.9(@swc/core@1.15.11(@swc/helpers@0.5.18))(rollup@4.58.0): dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.61.1) - '@swc/core': 1.15.40(@swc/helpers@0.5.23) + '@rollup/pluginutils': 5.3.0(rollup@4.58.0) + '@swc/core': 1.15.11(@swc/helpers@0.5.18) load-tsconfig: 0.2.5 unplugin: 2.3.11 transitivePeerDependencies: @@ -24622,33 +24355,27 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.4 - webpack-virtual-modules: 0.6.2 - - unplugin@3.0.0: - dependencies: - '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.4 + picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - unstorage@1.17.5(idb-keyval@6.2.5): + unstorage@1.17.4(idb-keyval@6.2.2): dependencies: anymatch: 3.1.3 chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.11 - lru-cache: 11.5.1 + h3: 1.15.5 + lru-cache: 11.2.6 node-fetch-native: 1.6.7 ofetch: 1.5.1 - ufo: 1.6.4 + ufo: 1.6.3 optionalDependencies: - idb-keyval: 6.2.5 + idb-keyval: 6.2.2 untildify@4.0.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.2): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.28.2 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -24754,73 +24481,150 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-plugin-compression@0.5.1(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)): + vite-plugin-compression@0.5.1(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): dependencies: chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0): + vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.58.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.13.1 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2): dependencies: esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.58.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.13.1 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + tsx: 4.8.2 + yaml: 2.8.2 + + vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.15 + rollup: 4.58.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.13.1 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.15 - rollup: 4.61.1 - tinyglobby: 0.2.17 + rollup: 4.58.0 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 fsevents: 2.3.3 - jiti: 2.7.0 + jiti: 2.6.1 lightningcss: 1.32.0 tsx: 4.8.2 - yaml: 2.9.0 + yaml: 2.8.2 - vitefu@1.1.3(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)): + vitefu@1.1.1(vite@6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): + optionalDependencies: + vite: 6.4.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + + vitest@4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)): + dependencies: + '@vitest/expect': 4.1.4 + '@vitest/mocker': 4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.4 + '@vitest/runner': 4.1.4 + '@vitest/snapshot': 4.1.4 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + why-is-node-running: 2.3.0 optionalDependencies: - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) - - vitest@4.1.8(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(happy-dom@20.10.1)(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(vite@6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.8 - '@vitest/runner': 4.1.8 - '@vitest/snapshot': 4.1.8 - '@vitest/spy': 4.1.8 - '@vitest/utils': 4.1.8 - es-module-lexer: 2.1.0 + '@types/node': 24.13.1 + '@vitest/coverage-v8': 4.1.4(@vitest/browser@4.1.4)(vitest@4.1.4) + happy-dom: 20.6.3 + transitivePeerDependencies: + - msw + + vitest@4.1.4(@types/node@24.13.1)(@vitest/coverage-v8@4.1.4)(happy-dom@20.6.3)(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)): + dependencies: + '@vitest/expect': 4.1.4 + '@vitest/mocker': 4.1.4(vite@7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.4 + '@vitest/runner': 4.1.4 + '@vitest/snapshot': 4.1.4 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 - obug: 2.1.2 + obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 6.4.3(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.9.0) + vite: 7.3.1(@types/node@24.13.1)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.8.2)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.0 - '@vitest/coverage-v8': 4.1.8(@vitest/browser@4.1.8)(vitest@4.1.8) - happy-dom: 20.10.1 + '@types/node': 24.13.1 + '@vitest/coverage-v8': 4.1.4(@vitest/browser@4.1.4)(vitest@4.1.4) + happy-dom: 20.6.3 transitivePeerDependencies: - msw - volar-service-css@0.0.70(@volar/language-service@2.4.28): + volar-service-css@0.0.68(@volar/language-service@2.4.28): dependencies: - vscode-css-languageservice: 6.3.10 + vscode-css-languageservice: 6.3.9 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: '@volar/language-service': 2.4.28 - volar-service-emmet@0.0.70(@volar/language-service@2.4.28): + volar-service-emmet@0.0.68(@volar/language-service@2.4.28): dependencies: '@emmetio/css-parser': 0.4.1 '@emmetio/html-matcher': 1.3.0 @@ -24829,31 +24633,31 @@ snapshots: optionalDependencies: '@volar/language-service': 2.4.28 - volar-service-html@0.0.70(@volar/language-service@2.4.28): + volar-service-html@0.0.68(@volar/language-service@2.4.28): dependencies: - vscode-html-languageservice: 5.6.2 + vscode-html-languageservice: 5.6.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: '@volar/language-service': 2.4.28 - volar-service-prettier@0.0.70(@volar/language-service@2.4.28)(prettier@3.8.3): + volar-service-prettier@0.0.68(@volar/language-service@2.4.28)(prettier@3.8.1): dependencies: vscode-uri: 3.1.0 optionalDependencies: '@volar/language-service': 2.4.28 - prettier: 3.8.3 + prettier: 3.8.1 - volar-service-typescript-twoslash-queries@0.0.70(@volar/language-service@2.4.28): + volar-service-typescript-twoslash-queries@0.0.68(@volar/language-service@2.4.28): dependencies: vscode-uri: 3.1.0 optionalDependencies: '@volar/language-service': 2.4.28 - volar-service-typescript@0.0.70(@volar/language-service@2.4.28): + volar-service-typescript@0.0.68(@volar/language-service@2.4.28): dependencies: path-browserify: 1.0.1 - semver: 7.8.1 + semver: 7.7.4 typescript-auto-import-cache: 0.3.6 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 @@ -24861,55 +24665,46 @@ snapshots: optionalDependencies: '@volar/language-service': 2.4.28 - volar-service-yaml@0.0.70(@volar/language-service@2.4.28): + volar-service-yaml@0.0.68(@volar/language-service@2.4.28): dependencies: vscode-uri: 3.1.0 - yaml-language-server: 1.20.0 + yaml-language-server: 1.19.2 optionalDependencies: '@volar/language-service': 2.4.28 - vscode-css-languageservice@6.3.10: + vscode-css-languageservice@6.3.9: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 - vscode-html-languageservice@5.6.2: + vscode-html-languageservice@5.6.1: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 + vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 vscode-json-languageservice@4.1.8: dependencies: jsonc-parser: 3.3.1 vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 + vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 vscode-uri: 3.1.0 vscode-jsonrpc@8.2.0: {} - vscode-jsonrpc@9.0.0: {} - vscode-languageserver-protocol@3.17.5: dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - vscode-languageserver-protocol@3.18.0: - dependencies: - vscode-jsonrpc: 9.0.0 - vscode-languageserver-types: 3.18.0 - vscode-languageserver-textdocument@1.0.12: {} vscode-languageserver-types@3.17.5: {} - vscode-languageserver-types@3.18.0: {} - vscode-languageserver@9.0.1: dependencies: vscode-languageserver-protocol: 3.17.5 @@ -24955,7 +24750,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.21 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -24968,10 +24763,10 @@ snapshots: which-pm-runs@1.1.0: {} - which-typed-array@1.1.21: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 @@ -25018,11 +24813,11 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.2.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} - ws@8.21.0: {} + ws@8.19.0: {} wsl-utils@0.1.0: dependencies: @@ -25040,6 +24835,8 @@ snapshots: xml-naming@0.1.0: {} + xtend@4.0.2: {} + xxhash-wasm@1.1.0: {} y18n@4.0.3: {} @@ -25050,25 +24847,26 @@ snapshots: yallist@4.0.0: {} - yaml-language-server@1.20.0: + yaml-language-server@1.19.2: dependencies: '@vscode/l10n': 0.0.18 - ajv: 8.20.0 - ajv-draft-04: 1.0.0(ajv@8.20.0) - prettier: 3.8.3 + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + lodash: 4.17.21 + prettier: 3.8.1 request-light: 0.5.8 vscode-json-languageservice: 4.1.8 vscode-languageserver: 9.0.1 vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 + vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 yaml: 2.7.1 - yaml@1.10.3: {} + yaml@1.10.2: {} yaml@2.7.1: {} - yaml@2.9.0: {} + yaml@2.8.2: {} yargs-parser@18.1.3: dependencies: @@ -25106,8 +24904,9 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yauzl@3.3.2: + yauzl@3.2.0: dependencies: + buffer-crc32: 0.2.13 pend: 1.2.0 yocto-queue@0.1.0: {} @@ -25120,13 +24919,13 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.2(zod@3.25.76): + zod-to-json-schema@3.25.1(zod@3.25.76): dependencies: zod: 3.25.76 - zod-to-ts@1.2.0(typescript@6.0.3)(zod@3.25.76): + zod-to-ts@1.2.0(typescript@6.0.2)(zod@3.25.76): dependencies: - typescript: 6.0.3 + typescript: 6.0.2 zod: 3.25.76 zod-validation-error@3.5.4(zod@vendor+zod@3.x): @@ -25135,14 +24934,20 @@ snapshots: zod@3.25.76: {} - zod@4.4.3: {} + zod@4.3.6: {} - zustand@5.0.14(immer@10.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)): + zustand@5.0.11(immer@10.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)): optionalDependencies: immer: 10.2.0 react: 19.1.0 use-sync-external-store: 1.6.0(react@19.1.0) + zustand@5.0.11(immer@10.2.0)(react@vendor+react@19.x)(use-sync-external-store@1.6.0(react@vendor+react@19.x)): + optionalDependencies: + immer: 10.2.0 + react: link:vendor/react@19.x + use-sync-external-store: 1.6.0(react@vendor+react@19.x) + zustand@5.0.14(immer@10.2.0)(react@vendor+react@19.x)(use-sync-external-store@1.6.0(react@vendor+react@19.x)): optionalDependencies: immer: 10.2.0 diff --git a/testing/e2e/package.json b/testing/e2e/package.json index c26ab89d1..ba8139825 100644 --- a/testing/e2e/package.json +++ b/testing/e2e/package.json @@ -12,7 +12,7 @@ "dependencies": { "@douglasneuroinformatics/libjs": "catalog:", "@opendatacapture/schemas": "workspace:*", - "@playwright/test": "^1.51.1", + "@playwright/test": "^1.60.0", "type-fest": "workspace:type-fest__4.x@*" } }