Compare commits

...

2 Commits

Author SHA1 Message Date
847fa60709 En proformas, cambiar "documentSeriesId" de string a UniqueID 2026-09-18 10:51:04 +02:00
66074c2fd0 Actualización a Vite 8.3.0 2026-09-18 10:38:59 +02:00
14 changed files with 398 additions and 210 deletions

View File

@ -1,5 +1,4 @@
import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import test from "node:test";
import type { CatalogsPublicServicesType } from "@erp/catalogs/api";
@ -77,8 +76,8 @@ async function seedProformaDependencies(
const company = await createTestCompany(runtime.database, {
legalName: "Proforma transaction company",
});
const customerId = randomUUID();
const documentSeriesId = randomUUID();
const customerId = UniqueID.generateNewID().toPrimitive();
const documentSeriesId = UniqueID.generateNewID().toPrimitive();
await CustomerModel.create({
id: customerId,
@ -90,7 +89,7 @@ async function seedProformaDependencies(
city: "Madrid",
province: "Madrid",
postal_code: "28001",
country: "ES",
country_code: "ES",
status: "active",
language_code: "es",
currency_code: "EUR",
@ -114,7 +113,7 @@ async function seedProformaDependencies(
is_active: true,
});
await TaxRegimeModel.create({
id: randomUUID(),
id: UniqueID.generateNewID().toPrimitive(),
company_id: company.id,
code: "01",
description: "General",
@ -307,7 +306,7 @@ test("ProformaCreator persiste una Proforma mínima y registra Audit en MariaDB"
});
await TaxRegimeModel.create({
id: randomUUID(),
id: UniqueID.generateNewID().toPrimitive(),
company_id: company.id,
code: "01",
description: "General",
@ -322,7 +321,7 @@ test("ProformaCreator persiste una Proforma mínima y registra Audit en MariaDB"
});
assert.equal(loginResponse.status, 200);
const accessToken = (loginResponse.body as { access_token: string }).access_token;
const proformaId = randomUUID();
const proformaId = UniqueID.generateNewID().toPrimitive();
const response = await runtime.request("/api/v1/proformas", {
method: "POST",
@ -517,7 +516,7 @@ test("ProformaCreator revierte la creación si Audit falla en MariaDB", async (t
t.after(async () => runtime.stop());
const { company, customerId, documentSeriesId } = await seedProformaDependencies(runtime);
const proformaId = randomUUID();
const proformaId = UniqueID.generateNewID().toPrimitive();
const companyIdResult = UniqueID.create(company.id);
assert.equal(companyIdResult.isSuccess, true);
const mappedInput = buildProformaInputMappers().createInputMapper.map(
@ -567,7 +566,7 @@ test("ProformaUpdater revierte la actualización si Audit falla en MariaDB", asy
const { company, customerId } = await seedProformaDependencies(runtime);
const account = await createTestAccount(runtime.database, {
email: `proforma-updater-${randomUUID()}@example.test`,
email: `proforma-updater-${UniqueID.generateNewID().toPrimitive()}@example.test`,
password: "Password123!",
});
await createTestMembership(runtime.database, {
@ -581,7 +580,7 @@ test("ProformaUpdater revierte la actualización si Audit falla en MariaDB", asy
});
assert.equal(loginResponse.status, 200);
const accessToken = (loginResponse.body as { access_token: string }).access_token;
const proformaId = randomUUID();
const proformaId = UniqueID.generateNewID().toPrimitive();
const baselineResponse = await runtime.request("/api/v1/proformas", {
method: "POST",
headers: {

View File

@ -26,7 +26,7 @@
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"typescript": "~6.0.2",
"vite": "^8.0.8"
"vite": "^8.3.0"
},
"dependencies": {
"@erp/auth": "workspace:*",
@ -63,4 +63,4 @@
"tw-animate-css": "^1.4.0",
"vite-plugin-html": "^3.2.2"
}
}
}

View File

@ -47,6 +47,7 @@ test("serializa el estado Audit de una Proforma real con sus items en orden", ()
assert.equal(state.currencyCode, "EUR");
assert.equal(state.paymentTermId, paymentTermId.toPrimitive());
assert.equal(state.paymentMethodId, null);
assert.equal(state.documentSeriesId, "01900000-0000-7000-8000-000000000002");
assert.deepEqual(state.recipient, {
name: "Cliente de prueba",

View File

@ -77,6 +77,14 @@ const toNullableString = (value: {
() => null
);
const toNullableUniqueId = (value: {
match: <R>(some: (item: { toPrimitive(): string }) => R, none: () => R) => R;
}): string | null =>
value.match(
(item) => item.toPrimitive(),
() => null
);
const toNullableScaledString = (value: {
match: <R>(some: (item: { value: number; scale: number }) => R, none: () => R) => R;
}): string | null =>
@ -115,7 +123,7 @@ export const toProformaAuditState = (proforma: Proforma): ProformaAuditState =>
return {
status: proforma.status.toPrimitive(),
archivedAt: toNullablePrimitive(proforma.archivedAt),
documentSeriesId: toNullableString(proforma.documentSeriesId),
documentSeriesId: toNullableUniqueId(proforma.documentSeriesId),
proformaSeriesCode: toNullablePrimitive(proforma.proformaSeriesCode),
proformaNumber: toNullablePrimitive(proforma.proformaNumber),
proformaReference: proforma.proformaReference.toPrimitive(),

View File

@ -5,7 +5,6 @@ import { UniqueID, type UniqueID as UniqueIDType } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import {
type IProformaCreateProps,
type IProformaItemCreateProps,
InvoiceNumber,
InvoiceSerie,
@ -64,6 +63,7 @@ export class ProformaCreator implements IProformaCreator {
const resolvedProps = resolvedPropsResult.data;
// Comprobamos que podemos crear la proforma con la serie indicada (si hay alguna)
const proformaSeriesValidationResult =
await this.deps.proformaSeriesValidator.ensureValidProformaSeries({
companyId,
@ -75,7 +75,7 @@ export class ProformaCreator implements IProformaCreator {
return Result.fail(proformaSeriesValidationResult.error);
}
// 1. Obtener siguiente número
// Obtener siguiente número de la serie
const numberResult = await this.deps.numberService.getNextForCompany(
companyId,
resolvedProps.proformaSeriesCode,
@ -86,6 +86,15 @@ export class ProformaCreator implements IProformaCreator {
return Result.fail(numberResult.error);
}
const documentSeriesIdResult = UniqueID.create(numberResult.data.documentSeriesId);
if (documentSeriesIdResult.isFailure) {
return Result.fail(documentSeriesIdResult.error);
}
const nextNumber = numberResult.data.number;
// Comprobamos que podemos emitir la proforma con la serie de factura objetivo indicada (si hay alguna)
const targetInvoiceSeriesValidationResult =
await this.deps.targetInvoiceSeriesValidator.ensureValidIssuedInvoiceSeries({
companyId,
@ -97,25 +106,31 @@ export class ProformaCreator implements IProformaCreator {
return Result.fail(targetInvoiceSeriesValidationResult.error);
}
// Creamos la referencia de proforma
const proformaReferenceResult = InvoiceNumber.create(numberResult.data.reference);
if (proformaReferenceResult.isFailure) {
return Result.fail(proformaReferenceResult.error);
}
const proformaNumberResult = InvoiceNumber.create(numberResult.data.number);
const proformaReference = proformaReferenceResult.data;
// Creamos el número de proforma
const proformaNumberResult = InvoiceNumber.create(nextNumber);
if (proformaNumberResult.isFailure) {
return Result.fail(proformaNumberResult.error);
}
const proformaNumber = proformaNumberResult.data;
const proformaSeriesCodeResult = InvoiceSerie.create(numberResult.data.documentSeriesCode);
if (proformaSeriesCodeResult.isFailure) {
return Result.fail(proformaSeriesCodeResult.error);
}
const proformaReference = proformaReferenceResult.data;
const proformaSeriesCode = proformaSeriesCodeResult.data;
// 2. Crear agregado
const proformaResult = Proforma.create(
@ -123,9 +138,9 @@ export class ProformaCreator implements IProformaCreator {
...resolvedPropsResult.data,
companyId,
archivedAt: Maybe.none(),
documentSeriesId: Maybe.some(numberResult.data.documentSeriesId),
proformaSeriesCode: Maybe.some(proformaSeriesCodeResult.data),
proformaNumber: Maybe.some(proformaNumberResult.data),
documentSeriesId: Maybe.some(documentSeriesIdResult.data),
proformaSeriesCode: Maybe.some(proformaSeriesCode),
proformaNumber: Maybe.some(proformaNumber),
proformaReference,
targetInvoiceSeriesCode: resolvedPropsResult.data.targetInvoiceSeriesCode,
},
@ -166,18 +181,7 @@ export class ProformaCreator implements IProformaCreator {
return Result.ok(verifyResult.data);
}
private async resolveCreateProps(
props: ProformaCreateInputProps,
transaction?: unknown
): Promise<
Result<
Omit<
IProformaCreateProps,
"proformaReference" | "proformaNumber" | "documentSeriesId" | "proformaSeriesCode"
>,
Error
>
> {
private async resolveCreateProps(props: ProformaCreateInputProps, transaction?: unknown) {
const customerResult = await this.deps.customerServices.getCustomerById(props.customerId, {
companyId: props.companyId,
transaction,

View File

@ -146,6 +146,10 @@ export class ProformaDuplicator implements IProformaDuplicator {
if (numberResult.isFailure) {
return Result.fail(numberResult.error);
}
const documentSeriesIdResult = UniqueID.create(numberResult.data.documentSeriesId);
if (documentSeriesIdResult.isFailure) {
return Result.fail(documentSeriesIdResult.error);
}
const referenceResult = InvoiceNumber.create(numberResult.data.reference);
const numberValueResult = InvoiceNumber.create(numberResult.data.number);
const seriesResult = InvoiceSerie.create(numberResult.data.documentSeriesCode);
@ -157,7 +161,7 @@ export class ProformaDuplicator implements IProformaDuplicator {
companyId: params.companyId,
status: InvoiceStatus.draft(),
archivedAt: Maybe.none(),
documentSeriesId: Maybe.some(numberResult.data.documentSeriesId),
documentSeriesId: Maybe.some(documentSeriesIdResult.data),
proformaSeriesCode: Maybe.some(seriesResult.data),
proformaNumber: Maybe.some(numberValueResult.data),
proformaReference: referenceResult.data,
@ -268,7 +272,7 @@ export class ProformaDuplicator implements IProformaDuplicator {
private async resolveDuplicateSeriesCode(params: {
companyId: UniqueID;
sourceDocumentSeriesId: Maybe<string>;
sourceDocumentSeriesId: Maybe<UniqueID>;
transaction?: unknown;
}): Promise<Result<Maybe<InvoiceSerie>, Error>> {
const listResult = await this.deps.documentSeriesServices.listActiveSeries({
@ -280,7 +284,7 @@ export class ProformaDuplicator implements IProformaDuplicator {
return Result.fail(listResult.error);
}
const sourceSeries = listResult.data.find(
(series) => series.id === params.sourceDocumentSeriesId.getOrUndefined()
(series) => series.id === params.sourceDocumentSeriesId.getOrUndefined()?.toPrimitive()
);
const selectedSeries = sourceSeries ?? listResult.data.find((series) => series.is_default);
if (!selectedSeries) {

View File

@ -1,6 +1,7 @@
import assert from "node:assert/strict";
import test from "node:test";
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe } from "@repo/rdx-utils";
import { ProformaFullSnapshotBuilder } from "./proforma-full-snapshot-builder";
@ -22,7 +23,7 @@ test("detail devuelve payment_term enriquecido cuando existe", () => {
proforma: {
id: { toString: () => "11111111-1111-4111-8111-111111111111" },
companyId: { toString: () => "22222222-2222-4222-8222-222222222222" },
documentSeriesId: Maybe.none(),
documentSeriesId: Maybe.some(UniqueID.generateNewID()),
proformaSeriesCode: Maybe.none(),
proformaNumber: Maybe.none(),
proformaReference: { toString: () => "PF-1" },
@ -84,6 +85,7 @@ test("detail devuelve payment_term enriquecido cuando existe", () => {
});
assert.equal(snapshot.payment_term?.id, "44444444-4444-4444-8444-444444444444");
assert.equal(typeof snapshot.document_series_id, "string");
assert.equal(snapshot.payment_term?.name, "50/50");
assert.equal(snapshot.payment_term?.is_active, false);
assert.equal(snapshot.payment_term?.due_rules.length, 1);

View File

@ -40,7 +40,9 @@ export class ProformaFullSnapshotBuilder implements IProformaFullSnapshotBuilder
id: proforma.id.toString(),
company_id: proforma.companyId.toString(),
document_series_id: maybeToNullable(proforma.documentSeriesId, (value) => value),
document_series_id: maybeToNullable(proforma.documentSeriesId, (value) =>
value.toPrimitive()
),
proforma_series_code: maybeToNullable(proforma.proformaSeriesCode, (value) =>
value.toString()
),

View File

@ -52,11 +52,12 @@ export interface IProformaCreateProps {
status: InvoiceStatus;
archivedAt: Maybe<UtcDate>;
documentSeriesId: Maybe<string>;
proformaSeriesCode: Maybe<InvoiceSerie>;
proformaNumber: Maybe<InvoiceNumber>;
proformaReference: InvoiceNumber;
targetInvoiceSeriesCode: Maybe<InvoiceSerie>;
documentSeriesId: Maybe<UniqueID>; // ID de la serie de documentos para la proforma (si se asigna automáticamente)
proformaSeriesCode: Maybe<InvoiceSerie>; // Serie de proforma (p.e. "PF-")
proformaNumber: Maybe<InvoiceNumber>; // Número de proforma (p.e. "65")
proformaReference: InvoiceNumber; // Referencia de la proforma (serie + numero, p.e. "PF-0065")
targetInvoiceSeriesCode: Maybe<InvoiceSerie>; // Serie de factura objetivo para la emisión de la proforma (si se va a emitir)
proformaDate: UtcDate;
operationDate: Maybe<UtcDate>;
@ -71,7 +72,7 @@ export interface IProformaCreateProps {
languageCode: LanguageCode;
currencyCode: CurrencyCode;
linkedInvoiceId: Maybe<UniqueID>;
linkedInvoiceId: Maybe<UniqueID>; // ID de la factura emitida asociada.
paymentMethodId: Maybe<UniqueID>;
paymentTermId: Maybe<UniqueID>;
@ -133,7 +134,7 @@ export interface IProforma {
status: InvoiceStatus;
archivedAt: Maybe<UtcDate>;
documentSeriesId: Maybe<string>;
documentSeriesId: Maybe<UniqueID>;
proformaSeriesCode: Maybe<InvoiceSerie>;
proformaNumber: Maybe<InvoiceNumber>;
targetInvoiceSeriesCode: Maybe<InvoiceSerie>;
@ -262,10 +263,8 @@ export class Proforma extends AggregateRoot<ProformaInternalProps> implements IP
private hasSameProps(candidateProps: ProformaInternalProps): boolean {
return (
this.sameMaybe(
this.documentSeriesId,
candidateProps.documentSeriesId,
(left, right) => left === right
this.sameMaybe(this.documentSeriesId, candidateProps.documentSeriesId, (left, right) =>
left.equals(right)
) &&
this.sameMaybe(this.proformaSeriesCode, candidateProps.proformaSeriesCode, (left, right) =>
left.equals(right)
@ -469,7 +468,7 @@ export class Proforma extends AggregateRoot<ProformaInternalProps> implements IP
return this.props.archivedAt;
}
public get documentSeriesId(): Maybe<string> {
public get documentSeriesId(): Maybe<UniqueID> {
return this.props.documentSeriesId;
}

View File

@ -1,6 +1,9 @@
import assert from "node:assert/strict";
import test from "node:test";
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe } from "@repo/rdx-utils";
import { Proforma } from "../aggregates/proforma.aggregate";
import { ProformaRecipient } from "../value-objects";
@ -25,3 +28,17 @@ test("createProformaTestFixture construye una Proforma real", () => {
assert.equal(proforma.items.getAll().length, 0);
assert.equal(proforma.taxConfig.taxMode, "single");
});
test("Proforma compara documentSeriesId por valor", () => {
const proforma = createProformaTestFixture();
const sameSeriesId = UniqueID.create("01900000-0000-7000-8000-000000000002");
assert.equal(sameSeriesId.isSuccess, true);
const updateResult = proforma.update({
documentSeriesId: Maybe.some(sameSeriesId.data),
});
assert.equal(updateResult.isSuccess, true);
assert.equal(updateResult.data, false);
});

View File

@ -63,7 +63,9 @@ export const createProformaTestFixture = (
companyId: required(UniqueID.create("01900000-0000-7000-8000-000000000001")),
status: overrides.status ?? required(InvoiceStatus.create("draft")),
archivedAt: overrides.archivedAt ?? Maybe.none(),
documentSeriesId: Maybe.some("01900000-0000-7000-8000-000000000002"),
documentSeriesId: Maybe.some(
required(UniqueID.create("01900000-0000-7000-8000-000000000002"))
),
proformaSeriesCode: Maybe.none(),
proformaNumber: Maybe.none(),
proformaReference: required(InvoiceNumber.create("PF-0042")),

View File

@ -0,0 +1,61 @@
import assert from "node:assert/strict";
import test from "node:test";
import { createProformaTestFixture } from "../../../../../../domain/proformas/testing/proforma-test-fixture";
import type { ProformaModel } from "../../../../../common";
import { SequelizeProformaV2DomainMapper } from "./sequelize-proforma-v2-domain.mapper";
const createRawProforma = (documentSeriesId: string | null): ProformaModel => {
const mapper = new SequelizeProformaV2DomainMapper();
const persistence = mapper.mapToPersistence(createProformaTestFixture());
assert.equal(persistence.isSuccess, true);
return {
...persistence.data,
document_series_id: documentSeriesId,
items: [],
current_customer: {
name: "Cliente de prueba",
tin: "ESB1234567",
street: "Calle Uno 1",
street2: "Piso 2",
city: "Madrid",
postal_code: "28001",
province: "Madrid",
country_code: "ES",
},
} as unknown as ProformaModel;
};
test("SequelizeProformaV2DomainMapper conserva documentSeriesId UUID en el round trip", () => {
const documentSeriesId = "01900000-0000-7000-8000-000000000002";
const mapper = new SequelizeProformaV2DomainMapper();
const result = mapper.mapToDomain(createRawProforma(documentSeriesId));
assert.ok(result.isSuccess, result.isFailure ? result.error.message : "");
assert.equal(result.data.documentSeriesId.unwrap().toPrimitive(), documentSeriesId);
const persistence = mapper.mapToPersistence(result.data);
assert.equal(persistence.isSuccess, true);
assert.equal(persistence.data.document_series_id, documentSeriesId);
});
test("SequelizeProformaV2DomainMapper conserva documentSeriesId nulo", () => {
const mapper = new SequelizeProformaV2DomainMapper();
const result = mapper.mapToDomain(createRawProforma(null));
assert.ok(result.isSuccess, result.isFailure ? result.error.message : "");
assert.equal(result.data.documentSeriesId.isNone(), true);
const persistence = mapper.mapToPersistence(result.data);
assert.equal(persistence.isSuccess, true);
assert.equal(persistence.data.document_series_id, null);
});
test("SequelizeProformaV2DomainMapper rechaza documentSeriesId inválido", () => {
const result = new SequelizeProformaV2DomainMapper().mapToDomain(createRawProforma("invalid"));
assert.equal(result.isFailure, true);
});

View File

@ -57,7 +57,7 @@ export class SequelizeProformaV2DomainMapper extends SequelizeDomainMapper<
errors
);
const documentSeriesId = extractOrPushError(
maybeFromNullableResult(raw.document_series_id, (value) => Result.ok(String(value))),
maybeFromNullableResult(raw.document_series_id, (value) => UniqueID.create(String(value))),
"document_series_id",
errors
);
@ -299,7 +299,7 @@ export class SequelizeProformaV2DomainMapper extends SequelizeDomainMapper<
// Flags / estado / serie / número
status: source.status.toPrimitive(),
archived_at: maybeToNullable(source.archivedAt, (value) => value.toPrimitive()),
document_series_id: maybeToNullable(source.documentSeriesId, (value) => value),
document_series_id: maybeToNullable(source.documentSeriesId, (value) => value.toPrimitive()),
proforma_series_code: maybeToNullable(source.proformaSeriesCode, (value) =>
value.toPrimitive()
),

View File

@ -239,7 +239,7 @@ importers:
version: 4.2.0
tsup:
specifier: 8.5.1
version: 8.5.1(jiti@2.7.0)(postcss@8.5.25)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2)
version: 8.5.1(jiti@2.7.0)(postcss@8.5.28)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2)
tsx:
specifier: 4.21.0
version: 4.21.0
@ -296,7 +296,7 @@ importers:
version: link:../../packages/shadcn-ui
'@tailwindcss/vite':
specifier: ^4.2.2
version: 4.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
version: 4.3.0(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
'@tanstack/react-query':
specifier: ^5.98.0
version: 5.100.14(react@19.2.6)
@ -347,7 +347,7 @@ importers:
version: 1.4.0
vite-plugin-html:
specifier: ^3.2.2
version: 3.2.2(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
version: 3.2.2(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
devDependencies:
'@biomejs/biome':
specifier: ^2.4.11
@ -372,13 +372,13 @@ importers:
version: 19.2.3(@types/react@19.2.15)
'@vitejs/plugin-react':
specifier: ^6.0.1
version: 6.0.2(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
version: 6.0.2(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
typescript:
specifier: ~6.0.2
version: 6.0.2
vite:
specifier: ^8.0.8
version: 8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
specifier: ^8.3.0
version: 8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
apps/worker:
dependencies:
@ -433,7 +433,7 @@ importers:
version: 6.1.3
tsup:
specifier: 8.5.1
version: 8.5.1(jiti@2.7.0)(postcss@8.5.25)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2)
version: 8.5.1(jiti@2.7.0)(postcss@8.5.28)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2)
tsx:
specifier: 4.21.0
version: 4.21.0
@ -1664,7 +1664,7 @@ importers:
version: 19.2.3(@types/react@19.2.15)
'@vitejs/plugin-react':
specifier: ^6.0.1
version: 6.0.2(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
version: 6.0.2(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
date-fns:
specifier: ^4.1.0
version: 4.3.0
@ -1697,7 +1697,7 @@ importers:
version: 5.2.0(supports-color@7.2.0)(ts-node@10.9.2(@types/node@25.9.1)(typescript@6.0.2))(typescript@6.0.2)
vite-tsconfig-paths:
specifier: ^6.1.1
version: 6.1.1(supports-color@7.2.0)(typescript@6.0.2)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
version: 6.1.1(supports-color@7.2.0)(typescript@6.0.2)(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))
packages/rdx-utils:
dependencies:
@ -2125,15 +2125,6 @@ packages:
peerDependencies:
'@noble/ciphers': ^1.0.0
'@emnapi/core@1.10.0':
resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
'@emnapi/runtime@1.10.0':
resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
'@emnapi/wasi-threads@1.2.1':
resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
'@emotion/babel-plugin@11.13.5':
resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
@ -2941,12 +2932,6 @@ packages:
resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==}
engines: {node: '>=18'}
'@napi-rs/wasm-runtime@1.1.4':
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
'@noble/ciphers@1.3.0':
resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==}
engines: {node: ^14.21.3 || >=16}
@ -2983,8 +2968,8 @@ packages:
'@open-draft/until@2.1.0':
resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
'@oxc-project/types@0.132.0':
resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==}
'@oxc-project/types@0.150.0':
resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==}
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
@ -3283,97 +3268,98 @@ packages:
react-redux:
optional: true
'@rolldown/binding-android-arm64@1.0.2':
resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==}
'@rolldown/binding-android-arm-eabi@1.2.9':
resolution: {integrity: sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
'@rolldown/binding-android-arm64@1.2.9':
resolution: {integrity: sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@rolldown/binding-darwin-arm64@1.0.2':
resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==}
'@rolldown/binding-darwin-arm64@1.2.9':
resolution: {integrity: sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@rolldown/binding-darwin-x64@1.0.2':
resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==}
'@rolldown/binding-darwin-x64@1.2.9':
resolution: {integrity: sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@rolldown/binding-freebsd-x64@1.0.2':
resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==}
'@rolldown/binding-freebsd-x64@1.2.9':
resolution: {integrity: sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@rolldown/binding-linux-arm-gnueabihf@1.0.2':
resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==}
'@rolldown/binding-linux-arm-gnueabihf@1.2.9':
resolution: {integrity: sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@rolldown/binding-linux-arm64-gnu@1.0.2':
resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==}
'@rolldown/binding-linux-arm64-gnu@1.2.9':
resolution: {integrity: sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-arm64-musl@1.0.2':
resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==}
'@rolldown/binding-linux-arm64-musl@1.2.9':
resolution: {integrity: sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rolldown/binding-linux-ppc64-gnu@1.0.2':
resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==}
'@rolldown/binding-linux-ppc64-gnu@1.2.9':
resolution: {integrity: sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-s390x-gnu@1.0.2':
resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==}
'@rolldown/binding-linux-s390x-gnu@1.2.9':
resolution: {integrity: sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-gnu@1.0.2':
resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==}
'@rolldown/binding-linux-x64-gnu@1.2.9':
resolution: {integrity: sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-musl@1.0.2':
resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==}
'@rolldown/binding-linux-x64-musl@1.2.9':
resolution: {integrity: sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@rolldown/binding-openharmony-arm64@1.0.2':
resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==}
'@rolldown/binding-openharmony-arm64@1.2.9':
resolution: {integrity: sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@rolldown/binding-wasm32-wasi@1.0.2':
resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
'@rolldown/binding-win32-arm64-msvc@1.0.2':
resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==}
'@rolldown/binding-win32-arm64-msvc@1.2.9':
resolution: {integrity: sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@rolldown/binding-win32-x64-msvc@1.0.2':
resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==}
'@rolldown/binding-win32-x64-msvc@1.2.9':
resolution: {integrity: sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@ -3731,9 +3717,6 @@ packages:
cpu: [arm64]
os: [win32]
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
'@types/bcrypt@6.0.0':
resolution: {integrity: sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==}
@ -5579,30 +5562,60 @@ packages:
cpu: [arm64]
os: [android]
lightningcss-android-arm64@1.33.0:
resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
lightningcss-darwin-arm64@1.32.0:
resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-arm64@1.33.0:
resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.32.0:
resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-darwin-x64@1.33.0:
resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.32.0:
resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-freebsd-x64@1.33.0:
resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-linux-arm-gnueabihf@1.32.0:
resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm-gnueabihf@1.33.0:
resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm64-gnu@1.32.0:
resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
@ -5610,6 +5623,13 @@ packages:
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-gnu@1.33.0:
resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
@ -5617,6 +5637,13 @@ packages:
os: [linux]
libc: [musl]
lightningcss-linux-arm64-musl@1.33.0:
resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
@ -5624,6 +5651,13 @@ packages:
os: [linux]
libc: [glibc]
lightningcss-linux-x64-gnu@1.33.0:
resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
@ -5631,22 +5665,45 @@ packages:
os: [linux]
libc: [musl]
lightningcss-linux-x64-musl@1.33.0:
resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-arm64-msvc@1.33.0:
resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-x64-msvc@1.32.0:
resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss-win32-x64-msvc@1.33.0:
resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss@1.32.0:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
lightningcss@1.33.0:
resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
engines: {node: '>= 12.0.0'}
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@ -5914,8 +5971,8 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
nanoid@3.3.17:
resolution: {integrity: sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==}
nanoid@3.3.19:
resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@ -6200,6 +6257,10 @@ packages:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
picomatch@4.0.7:
resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
engines: {node: '>=12'}
pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@ -6305,8 +6366,8 @@ packages:
resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.5.25:
resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==}
postcss@8.5.28:
resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
engines: {node: ^10 || ^12 || >=14}
powershell-utils@0.1.0:
@ -6617,8 +6678,8 @@ packages:
engines: {node: 20 || >=22}
hasBin: true
rolldown@1.0.2:
resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==}
rolldown@1.2.9:
resolution: {integrity: sha512-hx/Pv0N1haXRb11qkfnK5MXB/iqr7i0yjWQqmO9uHqZpBgQSqzc8UsSnEpalsh+j1I8qQ2CkXAkJC8Br3dKSlg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@ -6943,6 +7004,10 @@ packages:
resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'}
tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
title-case@4.3.2:
resolution: {integrity: sha512-I/nkcBo73mO42Idfv08jhInV61IMb61OdIFxk+B4Gu1oBjWBPOLmhZdsli+oJCVaD+86pYQA93cJfFt224ZFAA==}
@ -7216,13 +7281,13 @@ packages:
peerDependencies:
vite: '*'
vite@8.0.14:
resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==}
vite@8.3.0:
resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
'@vitejs/devtools': ^0.1.18
'@vitejs/devtools': ^0.7.1
esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
@ -7698,22 +7763,6 @@ snapshots:
dependencies:
'@noble/ciphers': 1.3.0
'@emnapi/core@1.10.0':
dependencies:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.10.0':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
tslib: 2.8.1
optional: true
'@emotion/babel-plugin@11.13.5(supports-color@7.2.0)':
dependencies:
'@babel/helper-module-imports': 7.29.7(supports-color@7.2.0)
@ -8396,13 +8445,6 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.10.2
optional: true
'@noble/ciphers@1.3.0': {}
'@noble/curves@1.9.7':
@ -8434,7 +8476,7 @@ snapshots:
'@open-draft/until@2.1.0': {}
'@oxc-project/types@0.132.0': {}
'@oxc-project/types@0.150.0': {}
'@parcel/watcher-android-arm64@2.5.6':
optional: true
@ -8671,53 +8713,49 @@ snapshots:
react: 19.2.6
react-redux: 9.3.0(@types/react@19.2.15)(react@19.2.6)(redux@5.0.1)
'@rolldown/binding-android-arm64@1.0.2':
'@rolldown/binding-android-arm-eabi@1.2.9':
optional: true
'@rolldown/binding-darwin-arm64@1.0.2':
'@rolldown/binding-android-arm64@1.2.9':
optional: true
'@rolldown/binding-darwin-x64@1.0.2':
'@rolldown/binding-darwin-arm64@1.2.9':
optional: true
'@rolldown/binding-freebsd-x64@1.0.2':
'@rolldown/binding-darwin-x64@1.2.9':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.2':
'@rolldown/binding-freebsd-x64@1.2.9':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.2':
'@rolldown/binding-linux-arm-gnueabihf@1.2.9':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.2':
'@rolldown/binding-linux-arm64-gnu@1.2.9':
optional: true
'@rolldown/binding-linux-ppc64-gnu@1.0.2':
'@rolldown/binding-linux-arm64-musl@1.2.9':
optional: true
'@rolldown/binding-linux-s390x-gnu@1.0.2':
'@rolldown/binding-linux-ppc64-gnu@1.2.9':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.2':
'@rolldown/binding-linux-s390x-gnu@1.2.9':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.2':
'@rolldown/binding-linux-x64-gnu@1.2.9':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.2':
'@rolldown/binding-linux-x64-musl@1.2.9':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.2':
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)
'@rolldown/binding-openharmony-arm64@1.2.9':
optional: true
'@rolldown/binding-win32-arm64-msvc@1.0.2':
'@rolldown/binding-win32-arm64-msvc@1.2.9':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.2':
'@rolldown/binding-win32-x64-msvc@1.2.9':
optional: true
'@rolldown/pluginutils@1.0.1': {}
@ -8901,12 +8939,12 @@ snapshots:
postcss: 8.5.15
tailwindcss: 4.3.0
'@tailwindcss/vite@4.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))':
'@tailwindcss/vite@4.3.0(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))':
dependencies:
'@tailwindcss/node': 4.3.0
'@tailwindcss/oxide': 4.3.0
tailwindcss: 4.3.0
vite: 8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
vite: 8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
'@tanstack/query-core@5.100.14': {}
@ -8970,11 +9008,6 @@ snapshots:
'@turbo/windows-arm64@2.9.14':
optional: true
'@tybys/wasm-util@0.10.2':
dependencies:
tslib: 2.8.1
optional: true
'@types/bcrypt@6.0.0':
dependencies:
'@types/node': 25.9.1
@ -9290,10 +9323,10 @@ snapshots:
'@typescript-eslint/types': 8.60.0
eslint-visitor-keys: 5.0.1
'@vitejs/plugin-react@6.0.2(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))':
'@vitejs/plugin-react@6.0.2(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
vite: 8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
vite: 8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
accepts@1.3.8:
dependencies:
@ -10936,36 +10969,69 @@ snapshots:
lightningcss-android-arm64@1.32.0:
optional: true
lightningcss-android-arm64@1.33.0:
optional: true
lightningcss-darwin-arm64@1.32.0:
optional: true
lightningcss-darwin-arm64@1.33.0:
optional: true
lightningcss-darwin-x64@1.32.0:
optional: true
lightningcss-darwin-x64@1.33.0:
optional: true
lightningcss-freebsd-x64@1.32.0:
optional: true
lightningcss-freebsd-x64@1.33.0:
optional: true
lightningcss-linux-arm-gnueabihf@1.32.0:
optional: true
lightningcss-linux-arm-gnueabihf@1.33.0:
optional: true
lightningcss-linux-arm64-gnu@1.32.0:
optional: true
lightningcss-linux-arm64-gnu@1.33.0:
optional: true
lightningcss-linux-arm64-musl@1.32.0:
optional: true
lightningcss-linux-arm64-musl@1.33.0:
optional: true
lightningcss-linux-x64-gnu@1.32.0:
optional: true
lightningcss-linux-x64-gnu@1.33.0:
optional: true
lightningcss-linux-x64-musl@1.32.0:
optional: true
lightningcss-linux-x64-musl@1.33.0:
optional: true
lightningcss-win32-arm64-msvc@1.32.0:
optional: true
lightningcss-win32-arm64-msvc@1.33.0:
optional: true
lightningcss-win32-x64-msvc@1.32.0:
optional: true
lightningcss-win32-x64-msvc@1.33.0:
optional: true
lightningcss@1.32.0:
dependencies:
detect-libc: 2.1.2
@ -10982,6 +11048,22 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
lightningcss@1.33.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
lightningcss-android-arm64: 1.33.0
lightningcss-darwin-arm64: 1.33.0
lightningcss-darwin-x64: 1.33.0
lightningcss-freebsd-x64: 1.33.0
lightningcss-linux-arm-gnueabihf: 1.33.0
lightningcss-linux-arm64-gnu: 1.33.0
lightningcss-linux-arm64-musl: 1.33.0
lightningcss-linux-x64-gnu: 1.33.0
lightningcss-linux-x64-musl: 1.33.0
lightningcss-win32-arm64-msvc: 1.33.0
lightningcss-win32-x64-msvc: 1.33.0
lilconfig@2.1.0: {}
lilconfig@3.1.3: {}
@ -11217,7 +11299,7 @@ snapshots:
nanoid@3.3.12: {}
nanoid@3.3.17: {}
nanoid@3.3.19: {}
nanospinner@1.2.2:
dependencies:
@ -11497,6 +11579,8 @@ snapshots:
picomatch@4.0.4: {}
picomatch@4.0.7: {}
pify@4.0.1:
optional: true
@ -11546,12 +11630,12 @@ snapshots:
postcss: 8.5.15
tsx: 4.21.0
postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.25)(tsx@4.21.0):
postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.28)(tsx@4.21.0):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 2.7.0
postcss: 8.5.25
postcss: 8.5.28
tsx: 4.21.0
postcss-modules-extract-imports@3.1.0(postcss@8.5.15):
@ -11600,9 +11684,9 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
postcss@8.5.25:
postcss@8.5.28:
dependencies:
nanoid: 3.3.17
nanoid: 3.3.19
picocolors: 1.1.1
source-map-js: 1.2.1
@ -11915,26 +11999,26 @@ snapshots:
glob: 13.0.6
package-json-from-dist: 1.0.1
rolldown@1.0.2:
rolldown@1.2.9:
dependencies:
'@oxc-project/types': 0.132.0
'@oxc-project/types': 0.150.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
'@rolldown/binding-android-arm64': 1.0.2
'@rolldown/binding-darwin-arm64': 1.0.2
'@rolldown/binding-darwin-x64': 1.0.2
'@rolldown/binding-freebsd-x64': 1.0.2
'@rolldown/binding-linux-arm-gnueabihf': 1.0.2
'@rolldown/binding-linux-arm64-gnu': 1.0.2
'@rolldown/binding-linux-arm64-musl': 1.0.2
'@rolldown/binding-linux-ppc64-gnu': 1.0.2
'@rolldown/binding-linux-s390x-gnu': 1.0.2
'@rolldown/binding-linux-x64-gnu': 1.0.2
'@rolldown/binding-linux-x64-musl': 1.0.2
'@rolldown/binding-openharmony-arm64': 1.0.2
'@rolldown/binding-wasm32-wasi': 1.0.2
'@rolldown/binding-win32-arm64-msvc': 1.0.2
'@rolldown/binding-win32-x64-msvc': 1.0.2
'@rolldown/binding-android-arm-eabi': 1.2.9
'@rolldown/binding-android-arm64': 1.2.9
'@rolldown/binding-darwin-arm64': 1.2.9
'@rolldown/binding-darwin-x64': 1.2.9
'@rolldown/binding-freebsd-x64': 1.2.9
'@rolldown/binding-linux-arm-gnueabihf': 1.2.9
'@rolldown/binding-linux-arm64-gnu': 1.2.9
'@rolldown/binding-linux-arm64-musl': 1.2.9
'@rolldown/binding-linux-ppc64-gnu': 1.2.9
'@rolldown/binding-linux-s390x-gnu': 1.2.9
'@rolldown/binding-linux-x64-gnu': 1.2.9
'@rolldown/binding-linux-x64-musl': 1.2.9
'@rolldown/binding-openharmony-arm64': 1.2.9
'@rolldown/binding-win32-arm64-msvc': 1.2.9
'@rolldown/binding-win32-x64-msvc': 1.2.9
rollup@4.60.4:
dependencies:
@ -12328,6 +12412,11 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
title-case@4.3.2: {}
tldts-core@7.4.0: {}
@ -12423,7 +12512,7 @@ snapshots:
- tsx
- yaml
tsup@8.5.1(jiti@2.7.0)(postcss@8.5.25)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2):
tsup@8.5.1(jiti@2.7.0)(postcss@8.5.28)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.2):
dependencies:
bundle-require: 5.1.0(esbuild@0.27.7)
cac: 6.7.14
@ -12434,7 +12523,7 @@ snapshots:
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.25)(tsx@4.21.0)
postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.28)(tsx@4.21.0)
resolve-from: 5.0.0
rollup: 4.60.4
source-map: 0.7.6
@ -12443,7 +12532,7 @@ snapshots:
tinyglobby: 0.2.16
tree-kill: 1.2.2
optionalDependencies:
postcss: 8.5.25
postcss: 8.5.28
typescript: 6.0.2
transitivePeerDependencies:
- jiti
@ -12611,7 +12700,7 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
vite-plugin-html@3.2.2(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)):
vite-plugin-html@3.2.2(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)):
dependencies:
'@rollup/pluginutils': 4.2.1
colorette: 2.0.20
@ -12625,25 +12714,25 @@ snapshots:
html-minifier-terser: 6.1.0
node-html-parser: 5.4.2
pathe: 0.2.0
vite: 8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
vite: 8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
vite-tsconfig-paths@6.1.1(supports-color@7.2.0)(typescript@6.0.2)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)):
vite-tsconfig-paths@6.1.1(supports-color@7.2.0)(typescript@6.0.2)(vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)):
dependencies:
debug: 4.4.3(supports-color@7.2.0)
globrex: 0.1.2
tsconfck: 3.1.6(typescript@6.0.2)
vite: 8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
vite: 8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0)
transitivePeerDependencies:
- supports-color
- typescript
vite@8.0.14(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0):
vite@8.3.0(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass@1.100.0)(stylus@0.62.0(supports-color@7.2.0))(terser@5.48.0)(tsx@4.21.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
postcss: 8.5.25
rolldown: 1.0.2
tinyglobby: 0.2.16
lightningcss: 1.33.0
picomatch: 4.0.7
postcss: 8.5.28
rolldown: 1.2.9
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 25.9.1
esbuild: 0.27.7