({
- url: `${apiUrl}/${resource}/${id}`,
- method: "GET",
- });
-
- return response.data;
- },
-
- /*saveOne: async (params: ISaveOneDataProviderParams
): Promise => {
- const { resource, data, id } = params;
-
- console.log(params);
-
- const result = await httpClient.request({
- url: `${apiUrl}/${resource}/${id}`,
- method: "PUT",
- data,
- });
-
- return result.data;
- },*/
-
- createOne: async (params: ICreateOneDataProviderParams
): Promise => {
- const { resource, data } = params;
-
- const response = await httpClient.request({
- url: `${apiUrl}/${resource}`,
- method: "POST",
- data,
- });
-
- return response.data;
- },
-
- updateOne: async (params: IUpdateOneDataProviderParams
): Promise => {
- const { resource, data, id } = params;
-
- const response = await httpClient.request({
- url: `${apiUrl}/${resource}/${id}`,
- method: "PUT",
- data,
- });
-
- return response.data;
- },
-
- removeOne: async (params: IRemoveOneDataProviderParams) => {
- const { resource, id } = params;
-
- await httpClient.request({
- url: `${apiUrl}/${resource}/${id}`,
- method: "DELETE",
- });
-
- return;
- },
-
- uploadFile: async (params: IUploadFileDataProviderParam): Promise => {
- const { path, file, key, onUploadProgress } = params;
- const url = `${apiUrl}/${path}`;
-
- const formData = new FormData();
- formData.append(key || "file", file);
-
- //console.log(file);
-
- const response = await httpClient.post(url, formData, {
- headers: {
- "Content-Type": "multipart/form-data",
- },
- onUploadProgress,
- });
-
- return response.data;
- },
-
- downloadPDF: async (
- params: IDownloadPDFDataProviderParams
- ): Promise => {
- const { url, config } = params;
-
- const response = await httpClient.get(url, {
- responseType: "arraybuffer", // Esto es necesario para recibir los datos en formato ArrayBuffer
- ...config,
- });
-
- // Extraer el nombre del archivo de la cabecera Content-Disposition
- const contentDisposition = response.headers["content-disposition"];
- let filename = "downloaded-file.pdf"; // Valor por defecto si no se encuentra el nombre en la cabecera
-
- if (contentDisposition) {
- const match = contentDisposition.match(/filename="?(.+)"?/);
- if (match && match[1]) {
- filename = match[1];
- }
- }
-
- // Crear un Blob con los datos descargados
- const filedata = new Blob([response.data], { type: "application/pdf" });
-
- return {
- filename,
- filedata,
- };
- },
-
- custom: async (params: ICustomDataProviderParam): Promise => {
- const { url, path, method, responseType, headers, signal, data, ...payload } = params;
- let requestUrl: string;
-
- if (path) {
- requestUrl = `${apiUrl}/${path}`;
- } else if (url) {
- requestUrl = url;
- } else {
- throw new Error('"url" or "path" param is missing');
- }
-
- //console.log(apiUrl, path, url, requestUrl.toString());
-
- // Preparar la respuesta personalizada
- // biome-ignore lint/suspicious/noExplicitAny:
- let customResponse: any;
-
- // Configurar opciones comunes para la petición
- const config = {
- url: requestUrl.toString(),
- method,
- responseType,
- signal,
- ...payload,
- ...defaultAxiosRequestConfig,
- };
-
- switch (method) {
- case "put":
- case "post":
- case "patch":
- customResponse = await httpClient.request({
- ...config,
- data,
- });
- break;
- case "delete":
- customResponse = await httpClient.delete(requestUrl.toString(), {
- responseType,
- headers,
- ...payload,
- });
- break;
- default:
- customResponse = await httpClient.get(requestUrl.toString(), {
- responseType,
- signal,
- headers,
- ...payload,
- });
- break;
- }
-
- return customResponse.data;
- },
-
- /*getMany: async ({ resource }) => {
- const { body } = await httpClient.request({
- url: `${apiUrl}/${resource}`,
- method: "GET",
- //...defaultRequestConfig,
- });
-
- return body;
- },*/
-
- /*create: async ({ resource, values }) => {
- const url = `${apiUrl}/${resource}`;
-
- const { body } = await httpClient.post(url, values, defaultRequestConfig);
-
- return body;
- },*/
-
- /*createMany: async ({ resource, values }) => {
- const response = await Promise.all(
- values.map(async (param) => {
- const { body } = await httpClient.post(
- `${apiUrl}/${resource}`,
- param
- //defaultRequestConfig,
- );
- return body;
- })
- );
-
- return response;
- },*/
-
- /*update: async ({ resource, id, values }) => {
- const url = `${apiUrl}/${resource}/${id}`;
- const { body } = await httpClient.patch(url, values, defaultRequestConfig);
- return body;
- },*/
-
- /*updateMany: async ({ resource, ids, values }) => {
- const response = await Promise.all(
- ids.map(async (id) => {
- const { body } = await httpClient.patch(
- `${apiUrl}/${resource}/${id}`,
- values
- //defaultRequestConfig,
- );
- return body;
- })
- );
-
- return response;
- },*/
-
- // removeMany: async ({ resource, ids }) => {
- // const url = `${apiUrl}/${resource}/bulk-delete`;
-
- // const { body } = await httpClient.request({
- // url,
- // method: "PATCH",
- // data: {
- // ids,
- // },
- // //defaultRequestConfig,
- // });
-
- // return body;
- // },
-
- // upload: async ({ resource, file, onUploadProgress }) => {
- // const url = `${apiUrl}/${resource}`;
- // const options = {
- // //...defaultRequestConfig,
- // onUploadProgress,
- // headers: {
- // //...defaultRequestConfig.headers,
- // "Content-Type": "multipart/form-data",
- // },
- // };
-
- // const formData = new FormData();
- // formData.append("file", file);
-
- // const { body } = await httpClient.post(url, formData, options);
- // return body;
- // },
-
- /*uploadMany: async ({ resource, values }) => {
- const url = `${apiUrl}/${resource}`;
- const options = {
- //...defaultRequestConfig,
- headers: {
- ...defaultRequestConfig.headers,
- 'Content-Type': 'multipart/form-data'
- }
- };
-
- const response = await Promise.all(
- values.map(async (value) => {
- const { body } = await httpClient.post(
- url,
- value,
- options
- );
- return body;
- }),
- );
-
- return response;
- },*/
-
- /*custom: async ({ url, method, filters, sort, payload, query, headers }) => {
- let requestUrl = `${url}?`;
-
- if (sort) {
- const generatedSort = extractSortParams(sort);
- if (generatedSort) {
- const { _sort, _order } = generatedSort;
- const sortQuery = {
- _sort: _sort.join(","),
- _order: _order.join(","),
- };
- requestUrl = `${requestUrl}&${queryString.stringify(sortQuery)}`;
- }
- }
-
- if (filters) {
- const filterQuery = extractFilterParams(filters);
- requestUrl = `${requestUrl}&${queryString.stringify(filterQuery)}`;
- }
-
- if (query) {
- requestUrl = `${requestUrl}&${queryString.stringify(query)}`;
- }
-
- if (headers) {
- httpClient.defaults.headers = {
- ...httpClient.defaults.headers,
- ...headers,
- };
- }
-
- let axiosResponse;
- switch (method) {
- case "put":
- case "post":
- case "patch":
- axiosResponse = await httpClient[method](url, payload);
- break;
- case "remove":
- axiosResponse = await httpClient.delete(url);
- break;
- default:
- axiosResponse = await httpClient.get(requestUrl);
- break;
- }
-
- const { data } = axiosResponse;
-
- return Promise.resolve({ data });
- },*/
-});
-
-const extractSortParams = (sort: ISortItemDataProviderParam[] = []) =>
- sort.map(({ field, order }) => `${order === "DESC" ? "-" : "+"}${field}`);
-
-const extractFilterParams = (filters: IFilterItemDataProviderParam[] = []) =>
- filters
- .filter(({ field }) => field !== "q")
- .map(({ field, operator, value }) => `${field}[${operator}]${value}`);
-
-const generateQuickSearch = (
- quickSearchTerm: string[] = [],
- filters: IFilterItemDataProviderParam[] = []
-) =>
- filters.find(({ field }) => field === "q")?.value
- ? [filters.find(({ field }) => field === "q")?.value ?? ""]
- : quickSearchTerm;
-
-const extractPaginationParams = (pagination?: IPaginationDataProviderParam) => {
- const { pageIndex = INITIAL_PAGE_INDEX, pageSize = INITIAL_PAGE_SIZE } = pagination || {};
-
- return {
- page: pageIndex,
- limit: pageSize,
- };
-};
diff --git a/apps/web/src/lib/axios/setup-interceptors.ts b/apps/web/src/lib/axios/setup-interceptors.ts
deleted file mode 100644
index f893cb8c..00000000
--- a/apps/web/src/lib/axios/setup-interceptors.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import {
- AxiosError,
- type AxiosInstance,
- type AxiosResponse,
- type InternalAxiosRequestConfig,
-} from "axios";
-import { getApiAuthorization } from "../api";
-
-const onRequest = (request: InternalAxiosRequestConfig): InternalAxiosRequestConfig => {
- request.headers.Authorization = getApiAuthorization();
- return request;
-};
-
-const onRequestError = (error: AxiosError): Promise => {
- /*console.group("[request error]");
- console.dir(error);
- console.groupEnd();*/
-
- return Promise.reject(error);
-};
-
-const onResponse = (response: AxiosResponse): AxiosResponse => {
- /*console.group("[response]");
- console.dir(response);
- console.groupEnd();*/
-
- const config = response?.config;
- if (config.raw) {
- return response;
- }
-
- /*if (response.status === 200) {
- const data = response?.data;
- if (!data) {
- throw new HttpError("API Error. No data!");
- }
- return data;
- }*/
- //throw new HttpError("API Error! Invalid status code!");
-
- return response;
-};
-
-const onResponseError = (error: AxiosError): Promise => {
- console.debug("[response error]");
-
- if (error.response) {
- // La respuesta fue hecha y el servidor respondió con un código de estado
- // que esta fuera del rango de 2xx
- console.debug("1 => El servidor respondió con un código de estado > 200");
-
- const data = error.response.data;
- const status = error.response.status;
-
- console.debug(data);
- console.debug(status);
-
- /*
-
- {
- detail: "Quote data not valid",
- instance: "/api/v1/quotes",
- status: 422,
- title: "Unprocessable Entity",
- type: "about:blank",
- context: {
- params: {
- },
- query: {
- },
- body: {
- date: "2024-08-13",
- customer_information: "",
- reference: "",
- status: "draft",
- id: "9c1c6073-127a-4bde-a73c-6229efb51ad0",
- },
- },
- extra: {
- errors: [
- {
- reference: "{reference} is not allowed to be empty",
- },
- {
- customer_information: "{customer_information} is not allowed to be empty",
- },
- ],
- },
- }
-
- */
-
- switch (status) {
- case 400:
- console.error("Bad Request");
- break;
- case 401:
- console.error("UnAuthorized");
- //window.location.href = "/logout";
- break;
- case 403:
- console.error("Forbidden");
- break;
- /*AppEvents.publish(Events.N_Error, {
- message: "Forbidden",
- description: "Operation ",
- });*/
- case 404:
- console.error("Not found");
- break;
-
- case 422:
- console.error("Unprocessable Content");
- break;
- }
- return Promise.reject(data);
- } else if (error.request) {
- // La petición fue hecha pero no se recibió respuesta
- console.debug("2 => El servidor no respondió");
- console.error(error);
- } else {
- if (error.code === "ERR_CANCELED") {
- // La petición fue hecha pero se ha cancelado
- console.debug("3 => Petición cancelada");
- } else {
- // Algo paso al preparar la petición que lanzo un Error
- console.debug("4 => Error desconocido");
- console.error(error);
- }
- }
- console.groupEnd();
- return Promise.reject(error);
-};
-
-export function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {
- axiosInstance.interceptors.request.use(onRequest, onRequestError);
- axiosInstance.interceptors.response.use(onResponse, onResponseError);
- return axiosInstance;
-}
diff --git a/apps/web/src/locales/i18n.ts b/apps/web/src/locales/i18n.ts
index 73725f12..495ce9a8 100644
--- a/apps/web/src/locales/i18n.ts
+++ b/apps/web/src/locales/i18n.ts
@@ -20,7 +20,7 @@ i18n
detection: {
order: ["navigator"],
},
- debug: import.meta.env.MODE === "development",
+ debug: import.meta.env.DEV,
fallbackLng: "es",
interpolation: {
escapeValue: false,
diff --git a/apps/web/tsconfig.app.json b/apps/web/tsconfig.app.json
index e301ec5d..9eb96c89 100644
--- a/apps/web/tsconfig.app.json
+++ b/apps/web/tsconfig.app.json
@@ -27,10 +27,6 @@
"noUncheckedSideEffectImports": true,
"allowUnreachableCode": true
},
- "include": [
- "src",
- "../../modules/core/src/web/hooks/use-datasource/use-datasource.tsx",
- "../../modules/core/src/web/hooks/use-datasource/datasource.interface.ts"
- ],
+ "include": ["src"],
"exclude": ["node_modules"]
}
diff --git a/apps/web/vite.config.mts b/apps/web/vite.config.mts
index 506e619d..c991ec11 100644
--- a/apps/web/vite.config.mts
+++ b/apps/web/vite.config.mts
@@ -1,11 +1,12 @@
-import { defineConfig } from "vite";
-import react from "@vitejs/plugin-react";
+import favicons from "@peterek/vite-plugin-favicons";
import tailwindcss from "@tailwindcss/vite";
+import react from "@vitejs/plugin-react";
import path from "path";
+import { defineConfig } from "vite";
// https://vite.dev/config/
export default defineConfig({
- plugins: [react(), tailwindcss()],
+ plugins: [react(), tailwindcss(), favicons("public/logo.svg")],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
diff --git a/modules/auth/package.json b/modules/auth/package.json
index 47b13f76..488f120d 100644
--- a/modules/auth/package.json
+++ b/modules/auth/package.json
@@ -4,13 +4,9 @@
"main": "src/index.ts",
"types": "src/index.ts",
"exports": {
- ".": "./src/index.ts",
+ ".": "./src/common/index.ts",
"./api": "./src/api/index.ts",
- "./dto": "./src/common/dto/index.ts",
- "./hooks/*": ["./src/web/hooks/*.tsx", "./src/hooks/*.ts"],
- "./components": "./src/web/components/index.tsx",
- "./components/*": "./src/web/components/*.tsx",
- "./locales": "./src/common/locales/index.tsx"
+ "./client": "./src/web/index.ts"
},
"peerDependencies": {
"react": "^18 || ^19",
@@ -28,6 +24,7 @@
"@erp/core": "workspace:*",
"react": "^19.1.0",
"react-dom": "^19.1.0",
- "react-router-dom": "^6.26.0"
+ "react-router-dom": "^6.26.0",
+ "react-secure-storage": "^1.3.2"
}
}
diff --git a/modules/auth/src/index.ts b/modules/auth/src/index.ts
deleted file mode 100644
index 534a9fcf..00000000
--- a/modules/auth/src/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from "./api";
-export * from "./common";
-export * from "./web";
diff --git a/modules/auth/src/web/components/auth-guard.tsx b/modules/auth/src/web/components/auth-guard.tsx
new file mode 100644
index 00000000..35a9aa28
--- /dev/null
+++ b/modules/auth/src/web/components/auth-guard.tsx
@@ -0,0 +1,15 @@
+import { JSX } from "react";
+import { Navigate } from "react-router-dom";
+
+/**
+ * Protege una ruta para usuarios autenticados.
+ */
+export const AuthGuard = ({ children }: { children: JSX.Element }) => {
+ const { isAuthenticated } = useAuth();
+
+ if (!isAuthenticated) {
+ return ;
+ }
+
+ return children;
+};
diff --git a/modules/auth/src/web/components/protected-route.tsx b/modules/auth/src/web/components/protected-route.tsx
index e87dc72e..a44b20f4 100644
--- a/modules/auth/src/web/components/protected-route.tsx
+++ b/modules/auth/src/web/components/protected-route.tsx
@@ -1,7 +1,7 @@
import { ErrorOverlay, LoadingOverlay } from "@repo/rdx-ui/components";
import React, { useId } from "react";
import { Navigate, useLocation } from "react-router-dom";
-import { useGetProfile, useIsLoggedIn } from "../hooks";
+import { useGetProfile, useIsLoggedIn } from "../hooks.old";
type ProctectRouteProps = {
children?: React.ReactNode;
diff --git a/modules/auth/src/web/hooks/auth-actions.ts b/modules/auth/src/web/hooks.old/auth-actions.ts
similarity index 100%
rename from modules/auth/src/web/hooks/auth-actions.ts
rename to modules/auth/src/web/hooks.old/auth-actions.ts
diff --git a/modules/auth/src/web/hooks/auth-context.tsx b/modules/auth/src/web/hooks.old/auth-context.tsx
similarity index 100%
rename from modules/auth/src/web/hooks/auth-context.tsx
rename to modules/auth/src/web/hooks.old/auth-context.tsx
diff --git a/modules/auth/src/web/hooks.old/index.ts b/modules/auth/src/web/hooks.old/index.ts
new file mode 100644
index 00000000..07f02fb2
--- /dev/null
+++ b/modules/auth/src/web/hooks.old/index.ts
@@ -0,0 +1,6 @@
+export * from "./auth-actions";
+export * from "./auth-context";
+export * from "./use-auth";
+export * from "./use-get-profile";
+export * from "./use-is-logged-in";
+export * from "./use-login";
diff --git a/modules/auth/src/web/hooks/use-auth.tsx b/modules/auth/src/web/hooks.old/use-auth.tsx
similarity index 100%
rename from modules/auth/src/web/hooks/use-auth.tsx
rename to modules/auth/src/web/hooks.old/use-auth.tsx
diff --git a/modules/auth/src/web/hooks/use-get-profile.ts b/modules/auth/src/web/hooks.old/use-get-profile.ts
similarity index 100%
rename from modules/auth/src/web/hooks/use-get-profile.ts
rename to modules/auth/src/web/hooks.old/use-get-profile.ts
diff --git a/modules/auth/src/web/hooks/use-is-logged-in.tsx b/modules/auth/src/web/hooks.old/use-is-logged-in.tsx
similarity index 100%
rename from modules/auth/src/web/hooks/use-is-logged-in.tsx
rename to modules/auth/src/web/hooks.old/use-is-logged-in.tsx
diff --git a/modules/auth/src/web/hooks/use-login.tsx b/modules/auth/src/web/hooks.old/use-login.tsx
similarity index 100%
rename from modules/auth/src/web/hooks/use-login.tsx
rename to modules/auth/src/web/hooks.old/use-login.tsx
diff --git a/modules/auth/src/web/hooks/use-logout.tsx b/modules/auth/src/web/hooks.old/use-logout.tsx
similarity index 100%
rename from modules/auth/src/web/hooks/use-logout.tsx
rename to modules/auth/src/web/hooks.old/use-logout.tsx
diff --git a/modules/auth/src/web/hooks/index.ts b/modules/auth/src/web/hooks/index.ts
index 07f02fb2..e69de29b 100644
--- a/modules/auth/src/web/hooks/index.ts
+++ b/modules/auth/src/web/hooks/index.ts
@@ -1,6 +0,0 @@
-export * from "./auth-actions";
-export * from "./auth-context";
-export * from "./use-auth";
-export * from "./use-get-profile";
-export * from "./use-is-logged-in";
-export * from "./use-login";
diff --git a/modules/auth/src/web/hooks/useAuth.tsx b/modules/auth/src/web/hooks/useAuth.tsx
new file mode 100644
index 00000000..fb856840
--- /dev/null
+++ b/modules/auth/src/web/hooks/useAuth.tsx
@@ -0,0 +1,49 @@
+import { createContext, useContext, useEffect, useState } from "react";
+
+interface AuthContextType {
+ token: string | null;
+ isAuthenticated: boolean;
+ login: (email: string, password: string) => Promise;
+ logout: () => void;
+}
+
+const AuthContext = createContext(undefined);
+
+/**
+ * Proveedor de autenticación para toda la app.
+ */
+export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
+ const [token, setToken] = useState(getAccessToken());
+
+ useEffect(() => {
+ setToken(getAccessToken());
+ }, []);
+
+ const login = async (email: string, password: string) => {
+ const { access_token } = await authService.login({ email, password });
+ localStorage.setItem("access_token", access_token);
+ setToken(access_token);
+ };
+
+ const logout = () => {
+ clearAccessToken();
+ setToken(null);
+ };
+
+ return (
+
+ {children}
+
+ );
+};
+
+/**
+ * Hook para acceder al contexto de autenticación.
+ */
+export const useAuth = (): AuthContextType => {
+ const context = useContext(AuthContext);
+ if (!context) {
+ throw new Error("useAuth debe usarse dentro de ");
+ }
+ return context;
+};
diff --git a/modules/auth/src/web/hooks/useCurrentUser.ts b/modules/auth/src/web/hooks/useCurrentUser.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/modules/auth/src/web/hooks/useIsAuthenticated.ts b/modules/auth/src/web/hooks/useIsAuthenticated.ts
new file mode 100644
index 00000000..d5731091
--- /dev/null
+++ b/modules/auth/src/web/hooks/useIsAuthenticated.ts
@@ -0,0 +1,9 @@
+import { useAuth } from "./useAuth";
+
+/**
+ * Devuelve un booleano reactivo si el usuario está autenticado.
+ */
+export const useIsAuthenticated = () => {
+ const { isAuthenticated } = useAuth();
+ return isAuthenticated;
+};
diff --git a/modules/auth/src/web/index.ts b/modules/auth/src/web/index.ts
new file mode 100644
index 00000000..a23b02f4
--- /dev/null
+++ b/modules/auth/src/web/index.ts
@@ -0,0 +1,2 @@
+export * from "./components";
+export * from "./lib";
diff --git a/modules/auth/src/web/lib/access-token-setup.ts b/modules/auth/src/web/lib/access-token-setup.ts
new file mode 100644
index 00000000..52312fc3
--- /dev/null
+++ b/modules/auth/src/web/lib/access-token-setup.ts
@@ -0,0 +1,23 @@
+import secureLocalStorage from "react-secure-storage";
+
+/**
+ * Servicio para manejar la obtención del token JWT desde el almacenamiento local.
+ * Este archivo puede evolucionar a un AuthService más completo en el futuro.
+ */
+
+/**
+ * Obtiene el token JWT almacenado localmente.
+ *
+ * @returns El token como string, o null si no está disponible.
+ */
+export const getAccessToken = (tokenStorageKey: string): string | null => {
+ const authInfo = secureLocalStorage.getItem(tokenStorageKey) as { token?: string } | null;
+ return typeof authInfo?.token === "string" ? authInfo.token : null;
+};
+
+/**
+ * Limpia el token JWT del almacenamiento local.
+ */
+export const clearAccessToken = (tokenStorageKey: string): void => {
+ secureLocalStorage.removeItem(tokenStorageKey);
+};
diff --git a/modules/auth/src/web/lib/index.ts b/modules/auth/src/web/lib/index.ts
new file mode 100644
index 00000000..b1d422fd
--- /dev/null
+++ b/modules/auth/src/web/lib/index.ts
@@ -0,0 +1 @@
+export * from "./access-token-setup";
diff --git a/modules/auth/src/web/services/auth-service.ts b/modules/auth/src/web/services/auth-service.ts
new file mode 100644
index 00000000..20a75eb4
--- /dev/null
+++ b/modules/auth/src/web/services/auth-service.ts
@@ -0,0 +1,17 @@
+export const authService = createAuthActions(axiosClient);
+
+/**
+ * Autentica al usuario con email y password, y guarda el token en localStorage.
+ */
+export const login = async (email: string, password: string): Promise => {
+ const { access_token } = await authService.login({ email, password });
+ setAccessToken(access_token);
+};
+
+/**
+ * Limpia el token local y ejecuta el logout remoto (si aplica).
+ */
+export const logout = async (): Promise => {
+ await authService.logout(); // opcional: puede no existir en backend
+ clearAccessToken();
+};
diff --git a/modules/auth/src/web/services/index.ts b/modules/auth/src/web/services/index.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/modules/auth/src/web/services/me-service.ts b/modules/auth/src/web/services/me-service.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/modules/auth/src/web/services/types.ts b/modules/auth/src/web/services/types.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/modules/auth/src/web/services/user-service.ts b/modules/auth/src/web/services/user-service.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/modules/core/package.json b/modules/core/package.json
index d3639177..e537d676 100644
--- a/modules/core/package.json
+++ b/modules/core/package.json
@@ -4,18 +4,9 @@
"main": "src/index.ts",
"types": "src/index.ts",
"exports": {
- ".": "./src/index.ts",
- "./dto": "./src/dto/index.ts",
- "./hooks": "./src/web/hooks/index.ts",
- "./components": "./src/web/components/index.tsx",
- "./components/*": "./src/web/components/*.tsx"
- },
- "peerDependencies": {
- "express": "^4.18.2",
- "joi": "^17.13.3",
- "react": "^18 || ^19",
- "react-dom": "^18 || ^19",
- "sequelize": "^6.37.5"
+ ".": "./src/common/index.ts",
+ "./api": "./src/api/index.ts",
+ "./client": "./src/web/index.ts"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
@@ -33,12 +24,9 @@
"@repo/rdx-criteria": "workspace:*",
"@tanstack/react-query": "^5.75.4",
"axios": "^1.9.0",
- "express": "^4.18.2",
"http-status": "^2.1.0",
"joi": "^17.13.3",
"libphonenumber-js": "^1.11.20",
- "react": "^19.1.0",
- "react-dom": "^19.1.0",
"react-router-dom": "^6.26.0",
"sequelize": "^6.37.5"
}
diff --git a/modules/core/src/index.ts b/modules/core/src/api/index.ts
similarity index 73%
rename from modules/core/src/index.ts
rename to modules/core/src/api/index.ts
index 88533e86..346376b1 100644
--- a/modules/core/src/index.ts
+++ b/modules/core/src/api/index.ts
@@ -1,4 +1,4 @@
-export * from "./dto";
+export * from "../common/dto";
export * from "./infrastructure";
export * from "./logger";
export * from "./modules";
diff --git a/modules/core/src/infrastructure/database/index.ts b/modules/core/src/api/infrastructure/database/index.ts
similarity index 100%
rename from modules/core/src/infrastructure/database/index.ts
rename to modules/core/src/api/infrastructure/database/index.ts
diff --git a/modules/core/src/infrastructure/database/transaction-manager.interface.ts b/modules/core/src/api/infrastructure/database/transaction-manager.interface.ts
similarity index 100%
rename from modules/core/src/infrastructure/database/transaction-manager.interface.ts
rename to modules/core/src/api/infrastructure/database/transaction-manager.interface.ts
diff --git a/modules/core/src/infrastructure/database/transaction-manager.ts b/modules/core/src/api/infrastructure/database/transaction-manager.ts
similarity index 100%
rename from modules/core/src/infrastructure/database/transaction-manager.ts
rename to modules/core/src/api/infrastructure/database/transaction-manager.ts
diff --git a/modules/core/src/infrastructure/express/api-error.ts b/modules/core/src/api/infrastructure/express/api-error.ts
similarity index 100%
rename from modules/core/src/infrastructure/express/api-error.ts
rename to modules/core/src/api/infrastructure/express/api-error.ts
diff --git a/modules/core/src/infrastructure/express/express-controller.ts b/modules/core/src/api/infrastructure/express/express-controller.ts
similarity index 99%
rename from modules/core/src/infrastructure/express/express-controller.ts
rename to modules/core/src/api/infrastructure/express/express-controller.ts
index f1030dab..12cb0712 100644
--- a/modules/core/src/infrastructure/express/express-controller.ts
+++ b/modules/core/src/api/infrastructure/express/express-controller.ts
@@ -1,4 +1,4 @@
-import { Criteria, CriteriaFromUrlConverter } from "@repo/rdx-criteria";
+import { Criteria, CriteriaFromUrlConverter } from "@repo/rdx-criteria/server";
import { NextFunction, Request, Response } from "express";
import httpStatus from "http-status";
import { ApiError } from "./api-error";
diff --git a/modules/core/src/infrastructure/express/index.ts b/modules/core/src/api/infrastructure/express/index.ts
similarity index 100%
rename from modules/core/src/infrastructure/express/index.ts
rename to modules/core/src/api/infrastructure/express/index.ts
diff --git a/modules/core/src/infrastructure/express/middlewares/global-error-handler.ts b/modules/core/src/api/infrastructure/express/middlewares/global-error-handler.ts
similarity index 100%
rename from modules/core/src/infrastructure/express/middlewares/global-error-handler.ts
rename to modules/core/src/api/infrastructure/express/middlewares/global-error-handler.ts
diff --git a/modules/core/src/infrastructure/express/middlewares/index.ts b/modules/core/src/api/infrastructure/express/middlewares/index.ts
similarity index 100%
rename from modules/core/src/infrastructure/express/middlewares/index.ts
rename to modules/core/src/api/infrastructure/express/middlewares/index.ts
diff --git a/modules/core/src/infrastructure/express/validate-request-dto.ts b/modules/core/src/api/infrastructure/express/validate-request-dto.ts
similarity index 100%
rename from modules/core/src/infrastructure/express/validate-request-dto.ts
rename to modules/core/src/api/infrastructure/express/validate-request-dto.ts
diff --git a/modules/core/src/infrastructure/index.ts b/modules/core/src/api/infrastructure/index.ts
similarity index 100%
rename from modules/core/src/infrastructure/index.ts
rename to modules/core/src/api/infrastructure/index.ts
diff --git a/modules/core/src/infrastructure/sequelize/index.ts b/modules/core/src/api/infrastructure/sequelize/index.ts
similarity index 100%
rename from modules/core/src/infrastructure/sequelize/index.ts
rename to modules/core/src/api/infrastructure/sequelize/index.ts
diff --git a/modules/core/src/infrastructure/sequelize/sequelize-mapper.ts b/modules/core/src/api/infrastructure/sequelize/sequelize-mapper.ts
similarity index 100%
rename from modules/core/src/infrastructure/sequelize/sequelize-mapper.ts
rename to modules/core/src/api/infrastructure/sequelize/sequelize-mapper.ts
diff --git a/modules/core/src/infrastructure/sequelize/sequelize-repository.ts b/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts
similarity index 99%
rename from modules/core/src/infrastructure/sequelize/sequelize-repository.ts
rename to modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts
index f793ed14..aac2ddb9 100644
--- a/modules/core/src/infrastructure/sequelize/sequelize-repository.ts
+++ b/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts
@@ -1,4 +1,4 @@
-import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria";
+import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria/server";
import { IAggregateRootRepository, UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { FindOptions, ModelDefined, Sequelize, Transaction } from "sequelize";
diff --git a/modules/core/src/infrastructure/sequelize/sequelize-transaction-manager.ts b/modules/core/src/api/infrastructure/sequelize/sequelize-transaction-manager.ts
similarity index 100%
rename from modules/core/src/infrastructure/sequelize/sequelize-transaction-manager.ts
rename to modules/core/src/api/infrastructure/sequelize/sequelize-transaction-manager.ts
diff --git a/modules/core/src/logger/index.ts b/modules/core/src/api/logger/index.ts
similarity index 100%
rename from modules/core/src/logger/index.ts
rename to modules/core/src/api/logger/index.ts
diff --git a/modules/core/src/logger/logger.interface.ts b/modules/core/src/api/logger/logger.interface.ts
similarity index 100%
rename from modules/core/src/logger/logger.interface.ts
rename to modules/core/src/api/logger/logger.interface.ts
diff --git a/modules/core/src/modules/index.ts b/modules/core/src/api/modules/index.ts
similarity index 100%
rename from modules/core/src/modules/index.ts
rename to modules/core/src/api/modules/index.ts
diff --git a/modules/core/src/modules/module-client.interface.ts b/modules/core/src/api/modules/module-client.interface.ts
similarity index 100%
rename from modules/core/src/modules/module-client.interface.ts
rename to modules/core/src/api/modules/module-client.interface.ts
diff --git a/modules/core/src/modules/module-server.interface.ts b/modules/core/src/api/modules/module-server.interface.ts
similarity index 100%
rename from modules/core/src/modules/module-server.interface.ts
rename to modules/core/src/api/modules/module-server.interface.ts
diff --git a/modules/core/src/modules/types.ts b/modules/core/src/api/modules/types.ts
similarity index 100%
rename from modules/core/src/modules/types.ts
rename to modules/core/src/api/modules/types.ts
diff --git a/modules/core/src/dto/error.dto.ts b/modules/core/src/common/dto/error.dto.ts
similarity index 100%
rename from modules/core/src/dto/error.dto.ts
rename to modules/core/src/common/dto/error.dto.ts
diff --git a/modules/core/src/dto/index.ts b/modules/core/src/common/dto/index.ts
similarity index 100%
rename from modules/core/src/dto/index.ts
rename to modules/core/src/common/dto/index.ts
diff --git a/modules/core/src/dto/list.dto.ts b/modules/core/src/common/dto/list.dto.ts
similarity index 100%
rename from modules/core/src/dto/list.dto.ts
rename to modules/core/src/common/dto/list.dto.ts
diff --git a/modules/core/src/dto/metadata.dto.ts b/modules/core/src/common/dto/metadata.dto.ts
similarity index 100%
rename from modules/core/src/dto/metadata.dto.ts
rename to modules/core/src/common/dto/metadata.dto.ts
diff --git a/modules/core/src/dto/money.dto.ts b/modules/core/src/common/dto/money.dto.ts
similarity index 100%
rename from modules/core/src/dto/money.dto.ts
rename to modules/core/src/common/dto/money.dto.ts
diff --git a/modules/core/src/dto/percentage.dto.ts b/modules/core/src/common/dto/percentage.dto.ts
similarity index 100%
rename from modules/core/src/dto/percentage.dto.ts
rename to modules/core/src/common/dto/percentage.dto.ts
diff --git a/modules/core/src/dto/quantity.dto.ts b/modules/core/src/common/dto/quantity.dto.ts
similarity index 100%
rename from modules/core/src/dto/quantity.dto.ts
rename to modules/core/src/common/dto/quantity.dto.ts
diff --git a/modules/core/src/dto/tax-type.dto.ts b/modules/core/src/common/dto/tax-type.dto.ts
similarity index 100%
rename from modules/core/src/dto/tax-type.dto.ts
rename to modules/core/src/common/dto/tax-type.dto.ts
diff --git a/modules/core/src/web/api/axios/create-axios-data-source.ts b/modules/core/src/web/api/axios/create-axios-data-source.ts
new file mode 100644
index 00000000..26856182
--- /dev/null
+++ b/modules/core/src/web/api/axios/create-axios-data-source.ts
@@ -0,0 +1,35 @@
+import { AxiosInstance } from "axios";
+import { IDataSource } from "../datasource.interface";
+
+export const createAxiosDataSource = (client: AxiosInstance): IDataSource => {
+ return {
+ getList: async (resource: string, params?: Record) => {
+ const res = await client.get(resource, { params });
+ return res.data;
+ },
+
+ getOne: async (resource: string, id: string | number) => {
+ const res = await client.get(`${resource}/${id}`);
+ return res.data;
+ },
+
+ getMany: async (resource: string, ids: Array) => {
+ const res = await client.get(`${resource}`, { params: { ids } });
+ return res.data;
+ },
+
+ createOne: async (resource: string, data: Partial) => {
+ const res = await client.post(resource, data);
+ return res.data;
+ },
+
+ updateOne: async (resource: string, id: string | number, data: Partial) => {
+ const res = await client.put(`${resource}/${id}`, data);
+ return res.data;
+ },
+
+ deleteOne: async (resource: string, id: string | number) => {
+ await client.delete(`${resource}/${id}`);
+ },
+ };
+};
diff --git a/modules/core/src/web/api/axios/create-axios-instance.ts b/modules/core/src/web/api/axios/create-axios-instance.ts
new file mode 100644
index 00000000..3004d24d
--- /dev/null
+++ b/modules/core/src/web/api/axios/create-axios-instance.ts
@@ -0,0 +1,47 @@
+import axios, { AxiosInstance } from "axios";
+import { setupInterceptors } from "./setup-interceptors";
+
+/**
+ * Configuración necesaria para crear una instancia de Axios personalizada.
+ */
+export interface AxiosFactoryConfig {
+ /** URL base del backend API. */
+ baseURL: string;
+
+ /**
+ * Función que retorna el token JWT actual.
+ * Debe devolver `null` si no hay token disponible.
+ */
+ getAccessToken: () => string | null;
+
+ /**
+ * Función opcional que se ejecuta cuando ocurre un error de autenticación (por ejemplo, 401).
+ */
+ onAuthError?: () => void;
+}
+
+/**
+ * Crea una instancia de Axios preconfigurada con interceptores.
+ *
+ * @param config - Configuración necesaria para inicializar Axios correctamente.
+ * @returns Instancia de Axios lista para usarse.
+ */
+export const createAxiosInstance = ({
+ baseURL,
+ getAccessToken,
+ onAuthError,
+}: AxiosFactoryConfig): AxiosInstance => {
+ const instance = axios.create({
+ baseURL,
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ "Cache-Control": "no-cache",
+ "Access-Control-Allow-Origin": "*", // Could work and fix the previous problem, but not in all APIs
+ },
+ });
+
+ setupInterceptors(instance, getAccessToken, onAuthError);
+
+ return instance;
+};
diff --git a/modules/core/src/web/api/axios/index.ts b/modules/core/src/web/api/axios/index.ts
new file mode 100644
index 00000000..0ee47f2b
--- /dev/null
+++ b/modules/core/src/web/api/axios/index.ts
@@ -0,0 +1,2 @@
+export * from "./create-axios-data-source";
+export * from "./create-axios-instance";
diff --git a/modules/core/src/web/api/axios/setup-interceptors.ts b/modules/core/src/web/api/axios/setup-interceptors.ts
new file mode 100644
index 00000000..56da5a48
--- /dev/null
+++ b/modules/core/src/web/api/axios/setup-interceptors.ts
@@ -0,0 +1,37 @@
+import { AxiosError, AxiosInstance, InternalAxiosRequestConfig } from "axios";
+
+/**
+ * Configura interceptores para una instancia de Axios.
+ *
+ * @param instance - Instancia de Axios que será modificada.
+ * @param getAccessToken - Función que devuelve el token JWT actual.
+ * @param onAuthError - Función opcional que se ejecuta ante errores de autenticación (status 401).
+ */
+export const setupInterceptors = (
+ instance: AxiosInstance,
+ getAccessToken: () => string | null,
+ onAuthError?: () => void
+): void => {
+ instance.interceptors.request.use(
+ (config: InternalAxiosRequestConfig) => {
+ const token = getAccessToken();
+ if (token && config.headers) {
+ config.headers.Authorization = `Bearer ${token}`;
+ }
+ return config;
+ },
+ (error: unknown) => {
+ return Promise.reject(error);
+ }
+ );
+
+ instance.interceptors.response.use(
+ (response) => response,
+ (error: AxiosError) => {
+ if (error.response?.status === 401 && onAuthError) {
+ onAuthError();
+ }
+ return Promise.reject(error);
+ }
+ );
+};
diff --git a/modules/core/src/web/api/datasource-context.tsx b/modules/core/src/web/api/datasource-context.tsx
new file mode 100644
index 00000000..3e2d8129
--- /dev/null
+++ b/modules/core/src/web/api/datasource-context.tsx
@@ -0,0 +1,20 @@
+import { createContext, useContext } from "react";
+import { IDataSource } from "./datasource.interface";
+
+const DataSourceContext = createContext(null);
+
+export const DataSourceProvider = ({
+ dataSource,
+ children,
+}: {
+ dataSource: IDataSource;
+ children: React.ReactNode;
+}) => {children};
+
+export const useDataSource = (): IDataSource => {
+ const context = useContext(DataSourceContext);
+ if (!context) {
+ throw new Error("useDataSource debe usarse dentro de ");
+ }
+ return context;
+};
diff --git a/modules/core/src/web/api/datasource.interface.ts b/modules/core/src/web/api/datasource.interface.ts
new file mode 100644
index 00000000..a4ed5a25
--- /dev/null
+++ b/modules/core/src/web/api/datasource.interface.ts
@@ -0,0 +1,8 @@
+export interface IDataSource {
+ getList(resource: string, params?: Record): Promise;
+ getOne(resource: string, id: string | number): Promise;
+ getMany(resource: string, ids: Array): Promise;
+ createOne(resource: string, data: Partial): Promise;
+ updateOne(resource: string, id: string | number, data: Partial): Promise;
+ deleteOne(resource: string, id: string | number): Promise;
+}
diff --git a/modules/core/src/web/api/index.ts b/modules/core/src/web/api/index.ts
new file mode 100644
index 00000000..660d38b6
--- /dev/null
+++ b/modules/core/src/web/api/index.ts
@@ -0,0 +1,3 @@
+export * from "./axios";
+export * from "./datasource-context";
+export * from "./datasource.interface";
diff --git a/modules/core/src/web/hooks/use-datasource/datasource.interface.ts b/modules/core/src/web/hooks/use-datasource/datasource.interface.ts
deleted file mode 100644
index d009fdfa..00000000
--- a/modules/core/src/web/hooks/use-datasource/datasource.interface.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import type { IListResponseDTO } from "@erp/core";
-import { type AxiosHeaderValue, type ResponseType } from "axios";
-
-export interface IPaginationDataProviderParam {
- pageIndex: number;
- pageSize: number;
-}
-
-export interface ISortItemDataProviderParam {
- order: string;
- field: string;
-}
-
-export interface IFilterItemDataProviderParam {
- field: string;
- operator?: string;
- value?: string;
-}
-
-export interface IGetListDataProviderParams {
- resource: string;
- quickSearchTerm?: string[];
- pagination?: IPaginationDataProviderParam;
- sort?: ISortItemDataProviderParam[];
- filters?: IFilterItemDataProviderParam[];
-}
-
-export interface IGetOneDataProviderParams {
- resource: string;
- id: string;
-}
-
-export interface ISaveOneDataProviderParams {
- resource: string;
- data: T;
- id: string;
-}
-
-export interface ICreateOneDataProviderParams {
- resource: string;
- data: T;
-}
-
-export interface IUpdateOneDataProviderParams {
- resource: string;
- data: T;
- id: string;
-}
-
-export interface IRemoveOneDataProviderParams {
- resource: string;
- id: string;
-}
-
-export interface IDownloadPDFDataProviderParams {
- url: string;
- config?: {
- [key: string]: unknown;
- };
-}
-
-export interface IDownloadPDFDataProviderResponse {
- filename: string;
- filedata: Blob;
-}
-
-export interface IUploadFileDataProviderParam {
- path: string;
- //resource: string;
- //id: string;
- file: File;
- key: string;
- onUploadProgress?: any;
-}
-
-export interface ICustomDataProviderParam {
- url?: string;
- path?: string;
- method: "get" | "delete" | "head" | "options" | "post" | "put" | "patch";
- signal?: AbortSignal;
- responseType?: ResponseType;
- headers?: {
- [key: string]: AxiosHeaderValue;
- };
- [key: string]: unknown;
-}
-
-export interface IDataSource {
- name: () => string;
- getList: (params: IGetListDataProviderParams) => Promise>;
- getOne: (params: IGetOneDataProviderParams) => Promise;
- //saveOne: (params: ISaveOneDataProviderParams
) => Promise;
- createOne: (params: ICreateOneDataProviderParams
) => Promise;
- updateOne: (params: IUpdateOneDataProviderParams
) => Promise;
- removeOne: (params: IRemoveOneDataProviderParams) => Promise;
- downloadPDF: (
- params: IDownloadPDFDataProviderParams
- ) => Promise;
- uploadFile: (params: IUploadFileDataProviderParam) => Promise;
- custom: (params: ICustomDataProviderParam) => Promise;
-
- getApiUrl: () => string;
- getApiAuthorization: () => string;
-
- //create: () => any;
- //createMany: () => any;
- //removeMany: () => any;
- //getMany: () => any;
- //update: () => any;
- //updateMany: () => any;
- //upload: () => any;
- //custom: () => any;
- //getApiUrl: () => string;
-}
diff --git a/modules/core/src/web/hooks/use-datasource/index.ts b/modules/core/src/web/hooks/use-datasource/index.ts
index 3076a7ab..e69de29b 100644
--- a/modules/core/src/web/hooks/use-datasource/index.ts
+++ b/modules/core/src/web/hooks/use-datasource/index.ts
@@ -1,3 +0,0 @@
-export * from "./datasource.interface";
-export * from "./use-datasource";
-export * from "./use-list";
diff --git a/modules/core/src/web/hooks/use-datasource/use-datasource.tsx b/modules/core/src/web/hooks/use-datasource/use-datasource.tsx
deleted file mode 100644
index fa424eef..00000000
--- a/modules/core/src/web/hooks/use-datasource/use-datasource.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { type PropsWithChildren, createContext, useContext } from "react";
-import { IDataSource } from "./datasource.interface";
-
-export const DataSourceContext = createContext(undefined);
-
-export const DataSourceProvider = ({
- dataSource,
- children,
-}: PropsWithChildren<{
- dataSource: IDataSource;
-}>) => {children};
-
-export const useDataSource = () => {
- const context = useContext(DataSourceContext);
- if (context === undefined)
- throw new Error("useDataSource must be used within a DataSourceProvider");
-
- return context;
-};
diff --git a/modules/core/src/web/hooks/use-datasource/use-list.ts b/modules/core/src/web/hooks/use-datasource/use-list.ts
index 3f48a697..e6aa7890 100644
--- a/modules/core/src/web/hooks/use-datasource/use-list.ts
+++ b/modules/core/src/web/hooks/use-datasource/use-list.ts
@@ -7,7 +7,7 @@ import {
useQuery,
} from "@tanstack/react-query";
-import { isResponseAListDTO } from "@erp/core/dto";
+import { isResponseAListDTO } from "@erp/core/common/dto";
import {
UseLoadingOvertimeOptionsProps,
UseLoadingOvertimeReturnType,
diff --git a/modules/core/src/web/index.ts b/modules/core/src/web/index.ts
index 007f69d0..4b5050c6 100644
--- a/modules/core/src/web/index.ts
+++ b/modules/core/src/web/index.ts
@@ -1 +1,3 @@
+export * from "./api";
+export * from "./components";
export * from "./hooks";
diff --git a/modules/invoices/package.json b/modules/invoices/package.json
index 13d1de85..996926ef 100644
--- a/modules/invoices/package.json
+++ b/modules/invoices/package.json
@@ -13,25 +13,12 @@
"./components/*": "./src/web/components/*.tsx",
"./locales": "./src/common/locales/index.tsx"
},
- "peerDependencies": {
- "ag-grid-community": "^33.3.0",
- "ag-grid-react": "^33.3.0",
- "express": "^4.18.2",
- "i18next": "^25.1.1",
- "lucide-react": "^0.503.0",
- "react": "^18 || ^19",
- "react-dom": "^18 || ^19",
- "react-i18next": "^15.5.1",
- "react-router-dom": "^6.26.0",
- "sequelize": "^6.37.5"
- },
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@types/express": "^4.17.21",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.3",
"@types/react-i18next": "^8.1.0",
- "sequelize": "^6.37.5",
"typescript": "^5.8.3"
},
"dependencies": {
@@ -50,6 +37,7 @@
"react-dom": "^19.1.0",
"react-i18next": "^15.5.1",
"react-router-dom": "^6.26.0",
+ "sequelize": "^6.37.5",
"slugify": "^1.6.6",
"zod": "^3.24.4"
}
diff --git a/modules/invoices/src/api/application/list-invoices.use-case.ts b/modules/invoices/src/api/application/list-invoices.use-case.ts
index 2d665333..906ff0ca 100644
--- a/modules/invoices/src/api/application/list-invoices.use-case.ts
+++ b/modules/invoices/src/api/application/list-invoices.use-case.ts
@@ -1,5 +1,5 @@
import { ITransactionManager } from "@erp/core";
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { Collection, Result } from "@repo/rdx-utils";
import { Transaction } from "sequelize";
import { IInvoiceService, Invoice } from "../domain";
diff --git a/modules/invoices/src/api/domain/repositories/invoice-repository.interface.ts b/modules/invoices/src/api/domain/repositories/invoice-repository.interface.ts
index ddedc080..8d62bcf4 100644
--- a/modules/invoices/src/api/domain/repositories/invoice-repository.interface.ts
+++ b/modules/invoices/src/api/domain/repositories/invoice-repository.interface.ts
@@ -1,4 +1,4 @@
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { UniqueID } from "@repo/rdx-ddd";
import { Collection, Result } from "@repo/rdx-utils";
import { Invoice } from "../aggregates";
diff --git a/modules/invoices/src/api/domain/services/invoice-service.interface.ts b/modules/invoices/src/api/domain/services/invoice-service.interface.ts
index 7e0f771d..26206bc4 100644
--- a/modules/invoices/src/api/domain/services/invoice-service.interface.ts
+++ b/modules/invoices/src/api/domain/services/invoice-service.interface.ts
@@ -1,4 +1,4 @@
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { UniqueID } from "@repo/rdx-ddd";
import { Collection, Result } from "@repo/rdx-utils";
import { IInvoiceProps, Invoice } from "../aggregates";
diff --git a/modules/invoices/src/api/domain/services/invoice.service.ts b/modules/invoices/src/api/domain/services/invoice.service.ts
index f64d312d..8305c424 100644
--- a/modules/invoices/src/api/domain/services/invoice.service.ts
+++ b/modules/invoices/src/api/domain/services/invoice.service.ts
@@ -1,4 +1,4 @@
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { UniqueID } from "@repo/rdx-ddd";
import { Collection, Result } from "@repo/rdx-utils";
import { Transaction } from "sequelize";
diff --git a/modules/invoices/src/api/infrastructure/sequelize/invoice.repository.ts b/modules/invoices/src/api/infrastructure/sequelize/invoice.repository.ts
index 08feadcc..d17b3e6c 100644
--- a/modules/invoices/src/api/infrastructure/sequelize/invoice.repository.ts
+++ b/modules/invoices/src/api/infrastructure/sequelize/invoice.repository.ts
@@ -1,5 +1,5 @@
import { SequelizeRepository } from "@erp/core";
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { UniqueID } from "@repo/rdx-ddd";
import { Collection, Result } from "@repo/rdx-utils";
import { Sequelize, Transaction } from "sequelize";
diff --git a/modules/invoices/src/api/presentation/list-invoices/presenter/list-invoices.presenter.ts b/modules/invoices/src/api/presentation/list-invoices/presenter/list-invoices.presenter.ts
index 74caf81c..f4c795a3 100644
--- a/modules/invoices/src/api/presentation/list-invoices/presenter/list-invoices.presenter.ts
+++ b/modules/invoices/src/api/presentation/list-invoices/presenter/list-invoices.presenter.ts
@@ -1,5 +1,5 @@
import { IListResponseDTO } from "@erp/core";
-import { Criteria } from "@repo/rdx-criteria";
+import { Criteria } from "@repo/rdx-criteria/server";
import { Collection } from "@repo/rdx-utils";
import { IListInvoicesResponseDTO } from "../../../../common/dto";
import { Invoice } from "../../../domain";
diff --git a/modules/invoices/src/web/components/invoices-grid.tsx b/modules/invoices/src/web/components/invoices-grid.tsx
index de7e21aa..728b6667 100644
--- a/modules/invoices/src/web/components/invoices-grid.tsx
+++ b/modules/invoices/src/web/components/invoices-grid.tsx
@@ -50,26 +50,32 @@ interface IRow {
export const InvoicesGrid = () => {
const { useList } = useInvoices();
- const { data, isPending, isError, error } = useList({});
+ const { data, isLoading, isPending, isError, error } = useList({});
// Column Definitions: Defines & controls grid columns.
const [colDefs] = useState([
+ { field: "invoice_number" },
+ { field: "invoice_series" },
{
- field: "mission",
- filter: true,
- minWidth: 200,
+ field: "status",
},
- { field: "company", filter: false },
- { field: "location" },
- { field: "date" },
+
+ { field: "issue_date" },
+ { field: "operation_date" },
{
- field: "price",
+ field: "subtotal",
valueFormatter: (params: ValueFormatterParams) => {
- return `£${params.value.toLocaleString()}`;
+ return "0 €";
+ //return `£${params.value.toLocaleString()}`;
+ },
+ },
+ {
+ field: "total",
+ valueFormatter: (params: ValueFormatterParams) => {
+ return "0 €";
+ //return `£${params.value.toLocaleString()}`;
},
},
- { field: "successful" },
- { field: "rocket" },
]);
// Apply settings across all columns
@@ -92,7 +98,7 @@ export const InvoicesGrid = () => {
>
=16.8.0'
+ '@emnapi/runtime@1.4.3':
+ resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
+
+ '@emotion/babel-plugin@11.13.5':
+ resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
+
+ '@emotion/cache@11.14.0':
+ resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==}
+
+ '@emotion/hash@0.9.2':
+ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
+
'@emotion/is-prop-valid@1.3.1':
resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==}
'@emotion/memoize@0.9.0':
resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
+ '@emotion/react@11.14.0':
+ resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/serialize@1.3.3':
+ resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==}
+
+ '@emotion/sheet@1.4.0':
+ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
+
+ '@emotion/styled@11.14.0':
+ resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==}
+ peerDependencies:
+ '@emotion/react': ^11.0.0-rc.0
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/unitless@0.10.0':
+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0':
+ resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==}
+ peerDependencies:
+ react: '>=16.8.0'
+
+ '@emotion/utils@1.4.2':
+ resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==}
+
+ '@emotion/weak-memoize@0.4.0':
+ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
+
'@esbuild/aix-ppc64@0.25.4':
resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==}
engines: {node: '>=18'}
@@ -1176,11 +1333,122 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+ '@hookform/devtools@4.4.0':
+ resolution: {integrity: sha512-Mtlic+uigoYBPXlfvPBfiYYUZuyMrD3pTjDpVIhL6eCZTvQkHsKBSKeZCvXWUZr8fqrkzDg27N+ZuazLKq6Vmg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+ react-dom: ^16.8.0 || ^17 || ^18 || ^19
+
'@hookform/resolvers@5.0.1':
resolution: {integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==}
peerDependencies:
react-hook-form: ^7.55.0
+ '@img/sharp-darwin-arm64@0.33.5':
+ resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-darwin-x64@0.33.5':
+ resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
+ resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-x64@1.0.4':
+ resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-linux-arm64@1.0.4':
+ resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-arm@1.0.5':
+ resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-s390x@1.0.4':
+ resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-x64@1.0.4':
+ resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
+ resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
+ resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linux-arm64@0.33.5':
+ resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linux-arm@0.33.5':
+ resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-linux-s390x@0.33.5':
+ resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-linux-x64@0.33.5':
+ resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-arm64@0.33.5':
+ resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-x64@0.33.5':
+ resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-wasm32@0.33.5':
+ resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+
+ '@img/sharp-win32-ia32@0.33.5':
+ resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@img/sharp-win32-x64@0.33.5':
+ resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+
'@inquirer/checkbox@4.1.5':
resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==}
engines: {node: '>=18'}
@@ -1306,6 +1574,10 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
+ '@isaacs/fs-minipass@4.0.1':
+ resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
+ engines: {node: '>=18.0.0'}
+
'@istanbuljs/load-nyc-config@1.1.0':
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'}
@@ -1502,6 +1774,12 @@ packages:
resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
engines: {node: '>= 10.0.0'}
+ '@peterek/vite-plugin-favicons@2.1.0':
+ resolution: {integrity: sha512-jx2eg6xXTXB+zezx6tPoS3WVlO7Kfep+brnmt4P5Jf4sdbNul1HqhyzlsRHORbXgs/MxF3fmRiaRU3dcgs49wQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ vite: '>=5.0.0'
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -2122,6 +2400,10 @@ packages:
resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==}
engines: {node: '>=14.0.0'}
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+
'@rollup/rollup-android-arm-eabi@4.40.2':
resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==}
cpu: [arm]
@@ -2250,60 +2532,117 @@ packages:
'@tailwindcss/node@4.1.5':
resolution: {integrity: sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==}
+ '@tailwindcss/node@4.1.7':
+ resolution: {integrity: sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==}
+
'@tailwindcss/oxide-android-arm64@4.1.5':
resolution: {integrity: sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
+ '@tailwindcss/oxide-android-arm64@4.1.7':
+ resolution: {integrity: sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
'@tailwindcss/oxide-darwin-arm64@4.1.5':
resolution: {integrity: sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
+ '@tailwindcss/oxide-darwin-arm64@4.1.7':
+ resolution: {integrity: sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
'@tailwindcss/oxide-darwin-x64@4.1.5':
resolution: {integrity: sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
+ '@tailwindcss/oxide-darwin-x64@4.1.7':
+ resolution: {integrity: sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
'@tailwindcss/oxide-freebsd-x64@4.1.5':
resolution: {integrity: sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
+ '@tailwindcss/oxide-freebsd-x64@4.1.7':
+ resolution: {integrity: sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5':
resolution: {integrity: sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7':
+ resolution: {integrity: sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.5':
resolution: {integrity: sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.7':
+ resolution: {integrity: sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.5':
resolution: {integrity: sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.7':
+ resolution: {integrity: sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.5':
resolution: {integrity: sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.7':
+ resolution: {integrity: sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-x64-musl@4.1.5':
resolution: {integrity: sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@tailwindcss/oxide-linux-x64-musl@4.1.7':
+ resolution: {integrity: sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
'@tailwindcss/oxide-wasm32-wasi@4.1.5':
resolution: {integrity: sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==}
engines: {node: '>=14.0.0'}
@@ -2316,28 +2655,70 @@ packages:
- '@emnapi/wasi-threads'
- tslib
+ '@tailwindcss/oxide-wasm32-wasi@4.1.7':
+ resolution: {integrity: sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ bundledDependencies:
+ - '@napi-rs/wasm-runtime'
+ - '@emnapi/core'
+ - '@emnapi/runtime'
+ - '@tybys/wasm-util'
+ - '@emnapi/wasi-threads'
+ - tslib
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.5':
resolution: {integrity: sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.7':
+ resolution: {integrity: sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.5':
resolution: {integrity: sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.7':
+ resolution: {integrity: sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
'@tailwindcss/oxide@4.1.5':
resolution: {integrity: sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==}
engines: {node: '>= 10'}
+ '@tailwindcss/oxide@4.1.7':
+ resolution: {integrity: sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==}
+ engines: {node: '>= 10'}
+
'@tailwindcss/postcss@4.1.5':
resolution: {integrity: sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==}
+ '@tailwindcss/vite@4.1.7':
+ resolution: {integrity: sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6
+
'@tanstack/query-core@5.75.4':
resolution: {integrity: sha512-pcqOUgWG9oGlzkfRQQMMsEFmtQu0wq81A414CtELZGq+ztVwSTAaoB3AZRAXQJs88LmNMk2YpUKuQbrvzNDyRg==}
+ '@tanstack/query-devtools@5.76.0':
+ resolution: {integrity: sha512-1p92nqOBPYVqVDU0Ua5nzHenC6EGZNrLnB2OZphYw8CNA1exuvI97FVgIKON7Uug3uQqvH/QY8suUKpQo8qHNQ==}
+
+ '@tanstack/react-query-devtools@5.77.2':
+ resolution: {integrity: sha512-TxB9boB0dmTJByAfh36kbhvohNHZiPJe+m+PCnbnfL+gdDHJbp174S6BwbU2dHx980njeAKFmWz8tgHNKG3itw==}
+ peerDependencies:
+ '@tanstack/react-query': ^5.77.2
+ react: ^18 || ^19
+
'@tanstack/react-query@5.75.4':
resolution: {integrity: sha512-Vf65pzYRkf8fk9SP1ncIZjvaXszBhtsvpf+h45Y/9kOywOrVZfBGUpCdffdsVzbmBzmz6TCFes9bM0d3pRrIsA==}
peerDependencies:
@@ -2490,6 +2871,9 @@ packages:
'@types/jsonwebtoken@9.0.9':
resolution: {integrity: sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==}
+ '@types/lodash@4.17.17':
+ resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==}
+
'@types/luxon@3.6.2':
resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==}
@@ -2760,6 +3144,9 @@ packages:
resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -2820,6 +3207,9 @@ packages:
camel-case@3.0.0:
resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
+ camel-case@4.1.2:
+ resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+
camelcase@5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
@@ -2861,6 +3251,10 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
+ chownr@3.0.0:
+ resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
+ engines: {node: '>=18'}
+
ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
@@ -2871,6 +3265,10 @@ packages:
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+ clean-css@5.3.3:
+ resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
+ engines: {node: '>= 10.0'}
+
clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -2943,6 +3341,13 @@ packages:
color@3.2.1:
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
+ color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+
colorspace@1.1.4:
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
@@ -2961,9 +3366,20 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
+ commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ connect-history-api-fallback@1.6.0:
+ resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==}
+ engines: {node: '>=0.8'}
+
+ consola@2.15.3:
+ resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
+
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -2982,6 +3398,9 @@ packages:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
+ convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -3018,6 +3437,16 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
+ crypto-js@4.2.0:
+ resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
+
+ css-select@4.3.0:
+ resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+
+ css-what@6.1.0:
+ resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
+ engines: {node: '>= 6'}
+
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -3139,6 +3568,10 @@ packages:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -3177,9 +3610,29 @@ packages:
dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+ dom-serializer@1.4.1:
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
+ domhandler@4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
+
+ domutils@2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+
dot-case@2.1.1:
resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==}
+ dot-case@3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+
+ dotenv-expand@8.0.3:
+ resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==}
+ engines: {node: '>=12'}
+
dotenv@16.5.0:
resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
engines: {node: '>=12'}
@@ -3246,6 +3699,9 @@ packages:
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
engines: {node: '>=10.13.0'}
+ entities@2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+
errno@0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
hasBin: true
@@ -3298,6 +3754,10 @@ packages:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
escodegen@2.1.0:
resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
engines: {node: '>=6.0'}
@@ -3312,6 +3772,9 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -3357,6 +3820,10 @@ packages:
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ favicons@7.2.0:
+ resolution: {integrity: sha512-k/2rVBRIRzOeom3wI9jBPaSEvoTSQEW4iM0EveBmBBKFxO8mSyyRWtDlfC3VnEfu0avmjrMzy8/ZFPSe6F71Hw==}
+ engines: {node: '>=14.0.0'}
+
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
@@ -3389,6 +3856,9 @@ packages:
resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
engines: {node: '>= 0.8'}
+ find-root@1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
@@ -3522,6 +3992,10 @@ packages:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
+ globals@16.2.0:
+ resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==}
+ engines: {node: '>=18'}
+
globby@10.0.2:
resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==}
engines: {node: '>=8'}
@@ -3568,6 +4042,10 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
header-case@1.0.1:
resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==}
@@ -3575,9 +4053,17 @@ packages:
resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==}
engines: {node: '>=18.0.0'}
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ html-minifier-terser@6.1.0:
+ resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
html-parse-stringify@3.0.1:
resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==}
@@ -3608,6 +4094,9 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
+ i18next-browser-languagedetector@8.1.0:
+ resolution: {integrity: sha512-mHZxNx1Lq09xt5kCauZ/4bsXOEA2pfpwSoU11/QTJB+pD94iONFwp+ohqi///PwiFvjFOxe1akYCdHyFo1ng5Q==}
+
i18next@25.1.1:
resolution: {integrity: sha512-FZcp3vk3PXc8onasbsWYahfeDIWX4LkKr4vd01xeXrmqyNXlVNtVecEIw2K1o8z3xYrHMcd1bwYQub+3g7zqCw==}
peerDependencies:
@@ -4020,64 +4509,128 @@ packages:
cpu: [arm64]
os: [darwin]
+ lightningcss-darwin-arm64@1.30.1:
+ resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
lightningcss-darwin-x64@1.29.2:
resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
+ lightningcss-darwin-x64@1.30.1:
+ resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
lightningcss-freebsd-x64@1.29.2:
resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
+ lightningcss-freebsd-x64@1.30.1:
+ resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
lightningcss-linux-arm-gnueabihf@1.29.2:
resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
+ lightningcss-linux-arm-gnueabihf@1.30.1:
+ resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
lightningcss-linux-arm64-gnu@1.29.2:
resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ lightningcss-linux-arm64-gnu@1.30.1:
+ resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
lightningcss-linux-arm64-musl@1.29.2:
resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ lightningcss-linux-arm64-musl@1.30.1:
+ resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
lightningcss-linux-x64-gnu@1.29.2:
resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ lightningcss-linux-x64-gnu@1.30.1:
+ resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
lightningcss-linux-x64-musl@1.29.2:
resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ lightningcss-linux-x64-musl@1.30.1:
+ resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
lightningcss-win32-arm64-msvc@1.29.2:
resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
+ lightningcss-win32-arm64-msvc@1.30.1:
+ resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
lightningcss-win32-x64-msvc@1.29.2:
resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
+ lightningcss-win32-x64-msvc@1.30.1:
+ resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
lightningcss@1.29.2:
resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
engines: {node: '>= 12.0.0'}
+ lightningcss@1.30.1:
+ resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
+ engines: {node: '>= 12.0.0'}
+
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -4089,6 +4642,11 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ little-state-machine@4.8.1:
+ resolution: {integrity: sha512-liPHqaWMQ7rzZryQUDnbZ1Gclnnai3dIyaJ0nAgwZRXMzqbYrydrlCI0NDojRUbE5VYh5vu6hygEUZiH77nQkQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+
load-tsconfig@0.2.5:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4163,6 +4721,9 @@ packages:
lower-case@1.1.4:
resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
+ lower-case@2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -4186,6 +4747,9 @@ packages:
resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==}
engines: {node: '>=12'}
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -4277,6 +4841,10 @@ packages:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
+ minizlib@3.0.2:
+ resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==}
+ engines: {node: '>= 18'}
+
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
@@ -4286,6 +4854,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
module-alias@2.2.3:
resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==}
@@ -4311,6 +4884,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ murmurhash-js@1.0.0:
+ resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==}
+
mute-stream@0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
@@ -4362,6 +4938,9 @@ packages:
no-case@2.3.2:
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
+ no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+
node-addon-api@5.1.0:
resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
@@ -4377,6 +4956,9 @@ packages:
encoding:
optional: true
+ node-html-parser@5.4.2:
+ resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==}
+
node-int64@0.4.0:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
@@ -4408,6 +4990,9 @@ packages:
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
deprecated: This package is no longer supported.
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -4484,6 +5069,9 @@ packages:
param-case@2.1.1:
resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==}
+ param-case@3.0.4:
+ resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -4503,6 +5091,9 @@ packages:
pascal-case@2.0.1:
resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==}
+ pascal-case@3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+
passport-jwt@4.0.1:
resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==}
@@ -4550,6 +5141,9 @@ packages:
path@0.12.7:
resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==}
+ pathe@0.2.0:
+ resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
+
pause@0.0.1:
resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==}
@@ -4729,6 +5323,12 @@ packages:
peerDependencies:
react: '>=16.13.1'
+ react-hook-form-persist@3.0.0:
+ resolution: {integrity: sha512-6nwW65JyFpBem9RjLYAWvIFxOLoCk0E13iB9e5yeF5jeHlwx1ua0M77FvwhPpD8eaCz7hG4ziCdOxRcnJVUSxQ==}
+ peerDependencies:
+ react: '>= 16.3'
+ react-hook-form: '>= 6'
+
react-hook-form@7.56.2:
resolution: {integrity: sha512-vpfuHuQMF/L6GpuQ4c3ZDo+pRYxIi40gQqsCmmfUBwm+oqvBhKhwghCuj2o00YCgSfU6bR9KC/xnQGWm3Gr08A==}
engines: {node: '>=18.0.0'}
@@ -4800,6 +5400,14 @@ packages:
peerDependencies:
react: '>=16.8'
+ react-secure-storage@1.3.2:
+ resolution: {integrity: sha512-pNCyksbLXWIYRS9vCzERXdIMErtx9Ik70TPtLKivcq44+zYybbxA72wpp5ivghK9Xe0gRku2w/7zBy/9n+RtKA==}
+
+ react-simple-animate@3.5.3:
+ resolution: {integrity: sha512-Ob+SmB5J1tXDEZyOe2Hf950K4M8VaWBBmQ3cS2BUnTORqHjhK0iKG8fB+bo47ZL15t8d3g/Y0roiqH05UBjG7A==}
+ peerDependencies:
+ react-dom: ^16.8.0 || ^17 || ^18 || ^19
+
react-smooth@4.0.4:
resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==}
peerDependencies:
@@ -4854,6 +5462,10 @@ packages:
resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
engines: {node: '>=0.10.0'}
+ relateurl@0.2.7:
+ resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
+ engines: {node: '>= 0.10'}
+
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -5030,6 +5642,10 @@ packages:
shallow-equal-object@1.1.1:
resolution: {integrity: sha512-9DDzYRlzCwF2CemeF0aOFk5T5KMrjG7HldcW7utwYhA/limuGHn3No8KhpDE8BrO7GLaSRJumNKReipZBybd7A==}
+ sharp@0.33.5:
+ resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -5106,6 +5722,10 @@ packages:
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -5185,6 +5805,9 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ stylis@4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+
stylus@0.62.0:
resolution: {integrity: sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==}
hasBin: true
@@ -5219,8 +5842,8 @@ packages:
tailwindcss@4.1.5:
resolution: {integrity: sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==}
- tailwindcss@4.1.6:
- resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==}
+ tailwindcss@4.1.7:
+ resolution: {integrity: sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==}
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
@@ -5230,6 +5853,10 @@ packages:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
+ tar@7.4.3:
+ resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
+ engines: {node: '>=18'}
+
terser@5.39.0:
resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
engines: {node: '>=10'}
@@ -5492,6 +6119,12 @@ packages:
'@types/react':
optional: true
+ use-deep-compare-effect@1.8.1:
+ resolution: {integrity: sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==}
+ engines: {node: '>=10', npm: '>=6'}
+ peerDependencies:
+ react: '>=16.13'
+
use-sidecar@1.1.3:
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
@@ -5557,6 +6190,11 @@ packages:
victory-vendor@36.9.2:
resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
+ vite-plugin-html@3.2.2:
+ resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==}
+ peerDependencies:
+ vite: '>=2.0.0'
+
vite-tsconfig-paths@5.1.4:
resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
peerDependencies:
@@ -5674,6 +6312,14 @@ packages:
resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ xml2js@0.6.2:
+ resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
+ engines: {node: '>=4.0.0'}
+
+ xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
@@ -5684,6 +6330,10 @@ packages:
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yallist@5.0.0:
+ resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
+ engines: {node: '>=18'}
+
yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
@@ -6011,13 +6661,93 @@ snapshots:
react: 19.1.0
tslib: 2.8.1
+ '@emnapi/runtime@1.4.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emotion/babel-plugin@11.13.5':
+ dependencies:
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/runtime': 7.27.1
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/serialize': 1.3.3
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/cache@11.14.0':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+ '@emotion/sheet': 1.4.0
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ stylis: 4.2.0
+
+ '@emotion/hash@0.9.2': {}
+
'@emotion/is-prop-valid@1.3.1':
dependencies:
'@emotion/memoize': 0.9.0
- optional: true
- '@emotion/memoize@0.9.0':
- optional: true
+ '@emotion/memoize@0.9.0': {}
+
+ '@emotion/react@11.14.0(@types/react@19.1.3)(react@19.1.0)':
+ dependencies:
+ '@babel/runtime': 7.27.1
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0)
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/serialize@1.3.3':
+ dependencies:
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/unitless': 0.10.0
+ '@emotion/utils': 1.4.2
+ csstype: 3.1.3
+
+ '@emotion/sheet@1.4.0': {}
+
+ '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.3)(react@19.1.0))(@types/react@19.1.3)(react@19.1.0)':
+ dependencies:
+ '@babel/runtime': 7.27.1
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/is-prop-valid': 1.3.1
+ '@emotion/react': 11.14.0(@types/react@19.1.3)(react@19.1.0)
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0)
+ '@emotion/utils': 1.4.2
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/unitless@0.10.0': {}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)':
+ dependencies:
+ react: 19.1.0
+
+ '@emotion/utils@1.4.2': {}
+
+ '@emotion/weak-memoize@0.4.0': {}
'@esbuild/aix-ppc64@0.25.4':
optional: true
@@ -6117,11 +6847,102 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
+ '@hookform/devtools@4.4.0(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@emotion/react': 11.14.0(@types/react@19.1.3)(react@19.1.0)
+ '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.3)(react@19.1.0))(@types/react@19.1.3)(react@19.1.0)
+ '@types/lodash': 4.17.17
+ little-state-machine: 4.8.1(react@19.1.0)
+ lodash: 4.17.21
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ react-simple-animate: 3.5.3(react-dom@19.1.0(react@19.1.0))
+ use-deep-compare-effect: 1.8.1(react@19.1.0)
+ uuid: 8.3.2
+ transitivePeerDependencies:
+ - '@types/react'
+ - supports-color
+
'@hookform/resolvers@5.0.1(react-hook-form@7.56.2(react@19.1.0))':
dependencies:
'@standard-schema/utils': 0.3.0
react-hook-form: 7.56.2(react@19.1.0)
+ '@img/sharp-darwin-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-darwin-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-darwin-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm@1.0.5':
+ optional: true
+
+ '@img/sharp-libvips-linux-s390x@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-linux-arm@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.0.5
+ optional: true
+
+ '@img/sharp-linux-s390x@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.0.4
+ optional: true
+
+ '@img/sharp-linux-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-linuxmusl-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-linuxmusl-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-wasm32@0.33.5':
+ dependencies:
+ '@emnapi/runtime': 1.4.3
+ optional: true
+
+ '@img/sharp-win32-ia32@0.33.5':
+ optional: true
+
+ '@img/sharp-win32-x64@0.33.5':
+ optional: true
+
'@inquirer/checkbox@4.1.5(@types/node@22.15.12)':
dependencies:
'@inquirer/core': 10.1.10(@types/node@22.15.12)
@@ -6247,6 +7068,10 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
+ '@isaacs/fs-minipass@4.0.1':
+ dependencies:
+ minipass: 7.1.2
+
'@istanbuljs/load-nyc-config@1.1.0':
dependencies:
camelcase: 5.3.1
@@ -6433,7 +7258,6 @@ snapshots:
dependencies:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
- optional: true
'@jridgewell/sourcemap-codec@1.5.0': {}
@@ -6534,6 +7358,11 @@ snapshots:
'@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1
+ '@peterek/vite-plugin-favicons@2.1.0(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))':
+ dependencies:
+ favicons: 7.2.0
+ vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
+
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -7192,6 +8021,11 @@ snapshots:
'@remix-run/router@1.23.0': {}
+ '@rollup/pluginutils@4.2.1':
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+
'@rollup/rollup-android-arm-eabi@4.40.2':
optional: true
@@ -7289,42 +8123,88 @@ snapshots:
lightningcss: 1.29.2
tailwindcss: 4.1.5
+ '@tailwindcss/node@4.1.7':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ enhanced-resolve: 5.18.1
+ jiti: 2.4.2
+ lightningcss: 1.30.1
+ magic-string: 0.30.17
+ source-map-js: 1.2.1
+ tailwindcss: 4.1.7
+
'@tailwindcss/oxide-android-arm64@4.1.5':
optional: true
+ '@tailwindcss/oxide-android-arm64@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-darwin-arm64@4.1.5':
optional: true
+ '@tailwindcss/oxide-darwin-arm64@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-darwin-x64@4.1.5':
optional: true
+ '@tailwindcss/oxide-darwin-x64@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-freebsd-x64@4.1.5':
optional: true
+ '@tailwindcss/oxide-freebsd-x64@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5':
optional: true
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.5':
optional: true
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.5':
optional: true
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.5':
optional: true
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-linux-x64-musl@4.1.5':
optional: true
+ '@tailwindcss/oxide-linux-x64-musl@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-wasm32-wasi@4.1.5':
optional: true
+ '@tailwindcss/oxide-wasm32-wasi@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.5':
optional: true
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.7':
+ optional: true
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.5':
optional: true
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.7':
+ optional: true
+
'@tailwindcss/oxide@4.1.5':
optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.1.5
@@ -7340,6 +8220,24 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.5
'@tailwindcss/oxide-win32-x64-msvc': 4.1.5
+ '@tailwindcss/oxide@4.1.7':
+ dependencies:
+ detect-libc: 2.0.4
+ tar: 7.4.3
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.1.7
+ '@tailwindcss/oxide-darwin-arm64': 4.1.7
+ '@tailwindcss/oxide-darwin-x64': 4.1.7
+ '@tailwindcss/oxide-freebsd-x64': 4.1.7
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.7
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.1.7
+ '@tailwindcss/oxide-linux-arm64-musl': 4.1.7
+ '@tailwindcss/oxide-linux-x64-gnu': 4.1.7
+ '@tailwindcss/oxide-linux-x64-musl': 4.1.7
+ '@tailwindcss/oxide-wasm32-wasi': 4.1.7
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.1.7
+ '@tailwindcss/oxide-win32-x64-msvc': 4.1.7
+
'@tailwindcss/postcss@4.1.5':
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -7348,8 +8246,23 @@ snapshots:
postcss: 8.5.3
tailwindcss: 4.1.5
+ '@tailwindcss/vite@4.1.7(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))':
+ dependencies:
+ '@tailwindcss/node': 4.1.7
+ '@tailwindcss/oxide': 4.1.7
+ tailwindcss: 4.1.7
+ vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
+
'@tanstack/query-core@5.75.4': {}
+ '@tanstack/query-devtools@5.76.0': {}
+
+ '@tanstack/react-query-devtools@5.77.2(@tanstack/react-query@5.75.4(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@tanstack/query-devtools': 5.76.0
+ '@tanstack/react-query': 5.75.4(react@19.1.0)
+ react: 19.1.0
+
'@tanstack/react-query@5.75.4(react@19.1.0)':
dependencies:
'@tanstack/query-core': 5.75.4
@@ -7543,6 +8456,8 @@ snapshots:
'@types/ms': 2.1.0
'@types/node': 22.15.12
+ '@types/lodash@4.17.17': {}
+
'@types/luxon@3.6.2': {}
'@types/mime@1.3.5': {}
@@ -7555,8 +8470,7 @@ snapshots:
dependencies:
undici-types: 6.21.0
- '@types/parse-json@4.0.2':
- optional: true
+ '@types/parse-json@4.0.2': {}
'@types/passport-jwt@4.0.1':
dependencies:
@@ -7642,14 +8556,14 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))':
+ '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))':
dependencies:
'@babel/core': 7.27.1
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1)
'@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1)
'@types/babel__core': 7.20.5
react-refresh: 0.17.0
- vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
+ vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
transitivePeerDependencies:
- supports-color
@@ -7807,7 +8721,6 @@ snapshots:
'@babel/runtime': 7.27.1
cosmiconfig: 7.1.0
resolve: 1.22.10
- optional: true
babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1):
dependencies:
@@ -7871,6 +8784,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ boolbase@1.0.0: {}
+
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -7934,6 +8849,11 @@ snapshots:
no-case: 2.3.2
upper-case: 1.1.3
+ camel-case@4.1.2:
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: 2.8.1
+
camelcase@5.3.1: {}
camelcase@6.3.0: {}
@@ -7987,6 +8907,8 @@ snapshots:
chownr@2.0.0: {}
+ chownr@3.0.0: {}
+
ci-info@3.9.0: {}
cjs-module-lexer@1.4.3: {}
@@ -7995,6 +8917,10 @@ snapshots:
dependencies:
clsx: 2.1.1
+ clean-css@5.3.3:
+ dependencies:
+ source-map: 0.6.1
+
clean-stack@2.2.0: {}
cli-cursor@3.1.0:
@@ -8061,6 +8987,13 @@ snapshots:
color-convert: 1.9.3
color-string: 1.9.1
+ color@4.2.3:
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+
+ colorette@2.0.20: {}
+
colorspace@1.1.4:
dependencies:
color: 3.2.1
@@ -8072,13 +9005,18 @@ snapshots:
commander@10.0.1: {}
- commander@2.20.3:
- optional: true
+ commander@2.20.3: {}
commander@4.1.1: {}
+ commander@8.3.0: {}
+
concat-map@0.0.1: {}
+ connect-history-api-fallback@1.6.0: {}
+
+ consola@2.15.3: {}
+
consola@3.4.2: {}
console-control-strings@1.1.0: {}
@@ -8094,6 +9032,8 @@ snapshots:
content-type@1.0.5: {}
+ convert-source-map@1.9.0: {}
+
convert-source-map@2.0.0: {}
cookie-signature@1.0.6: {}
@@ -8118,7 +9058,6 @@ snapshots:
parse-json: 5.2.0
path-type: 4.0.0
yaml: 1.10.2
- optional: true
create-jest@29.7.0(@types/node@22.15.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.12)(typescript@5.8.3)):
dependencies:
@@ -8143,6 +9082,18 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ crypto-js@4.2.0: {}
+
+ css-select@4.3.0:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.1.0
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ nth-check: 2.1.1
+
+ css-what@6.1.0: {}
+
cssesc@3.0.0: {}
csstype@3.1.3: {}
@@ -8236,6 +9187,8 @@ snapshots:
depd@2.0.0: {}
+ dequal@2.0.3: {}
+
destroy@1.2.0: {}
detect-libc@1.0.3: {}
@@ -8261,10 +9214,35 @@ snapshots:
'@babel/runtime': 7.27.1
csstype: 3.1.3
+ dom-serializer@1.4.1:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ entities: 2.2.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@4.3.1:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@2.8.0:
+ dependencies:
+ dom-serializer: 1.4.1
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+
dot-case@2.1.1:
dependencies:
no-case: 2.3.2
+ dot-case@3.0.4:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.8.1
+
+ dotenv-expand@8.0.3: {}
+
dotenv@16.5.0: {}
dottie@2.0.6: {}
@@ -8318,6 +9296,8 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.1
+ entities@2.2.0: {}
+
errno@0.1.8:
dependencies:
prr: 1.0.1
@@ -8389,6 +9369,8 @@ snapshots:
escape-string-regexp@2.0.0: {}
+ escape-string-regexp@4.0.0: {}
+
escodegen@2.1.0:
dependencies:
esprima: 4.0.1
@@ -8401,6 +9383,8 @@ snapshots:
estraverse@5.3.0: {}
+ estree-walker@2.0.2: {}
+
esutils@2.0.3: {}
etag@1.8.1: {}
@@ -8487,6 +9471,12 @@ snapshots:
dependencies:
reusify: 1.1.0
+ favicons@7.2.0:
+ dependencies:
+ escape-html: 1.0.3
+ sharp: 0.33.5
+ xml2js: 0.6.2
+
fb-watchman@2.0.2:
dependencies:
bser: 2.1.1
@@ -8525,6 +9515,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ find-root@1.1.0: {}
+
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
@@ -8665,6 +9657,8 @@ snapshots:
globals@11.12.0: {}
+ globals@16.2.0: {}
+
globby@10.0.2:
dependencies:
'@types/glob': 7.2.0
@@ -8712,6 +9706,8 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ he@1.2.0: {}
+
header-case@1.0.1:
dependencies:
no-case: 2.3.2
@@ -8719,8 +9715,22 @@ snapshots:
helmet@8.1.0: {}
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
html-escaper@2.0.2: {}
+ html-minifier-terser@6.1.0:
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: 5.3.3
+ commander: 8.3.0
+ he: 1.2.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: 5.39.0
+
html-parse-stringify@3.0.1:
dependencies:
void-elements: 3.1.0
@@ -8760,6 +9770,10 @@ snapshots:
human-signals@2.1.0: {}
+ i18next-browser-languagedetector@8.1.0:
+ dependencies:
+ '@babel/runtime': 7.27.1
+
i18next@25.1.1(typescript@5.8.3):
dependencies:
'@babel/runtime': 7.27.1
@@ -8791,7 +9805,6 @@ snapshots:
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
- optional: true
import-local@3.2.0:
dependencies:
@@ -9370,33 +10383,63 @@ snapshots:
lightningcss-darwin-arm64@1.29.2:
optional: true
+ lightningcss-darwin-arm64@1.30.1:
+ optional: true
+
lightningcss-darwin-x64@1.29.2:
optional: true
+ lightningcss-darwin-x64@1.30.1:
+ optional: true
+
lightningcss-freebsd-x64@1.29.2:
optional: true
+ lightningcss-freebsd-x64@1.30.1:
+ optional: true
+
lightningcss-linux-arm-gnueabihf@1.29.2:
optional: true
+ lightningcss-linux-arm-gnueabihf@1.30.1:
+ optional: true
+
lightningcss-linux-arm64-gnu@1.29.2:
optional: true
+ lightningcss-linux-arm64-gnu@1.30.1:
+ optional: true
+
lightningcss-linux-arm64-musl@1.29.2:
optional: true
+ lightningcss-linux-arm64-musl@1.30.1:
+ optional: true
+
lightningcss-linux-x64-gnu@1.29.2:
optional: true
+ lightningcss-linux-x64-gnu@1.30.1:
+ optional: true
+
lightningcss-linux-x64-musl@1.29.2:
optional: true
+ lightningcss-linux-x64-musl@1.30.1:
+ optional: true
+
lightningcss-win32-arm64-msvc@1.29.2:
optional: true
+ lightningcss-win32-arm64-msvc@1.30.1:
+ optional: true
+
lightningcss-win32-x64-msvc@1.29.2:
optional: true
+ lightningcss-win32-x64-msvc@1.30.1:
+ optional: true
+
lightningcss@1.29.2:
dependencies:
detect-libc: 2.0.4
@@ -9412,12 +10455,31 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.29.2
lightningcss-win32-x64-msvc: 1.29.2
+ lightningcss@1.30.1:
+ dependencies:
+ detect-libc: 2.0.4
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.30.1
+ lightningcss-darwin-x64: 1.30.1
+ lightningcss-freebsd-x64: 1.30.1
+ lightningcss-linux-arm-gnueabihf: 1.30.1
+ lightningcss-linux-arm64-gnu: 1.30.1
+ lightningcss-linux-arm64-musl: 1.30.1
+ lightningcss-linux-x64-gnu: 1.30.1
+ lightningcss-linux-x64-musl: 1.30.1
+ lightningcss-win32-arm64-msvc: 1.30.1
+ lightningcss-win32-x64-msvc: 1.30.1
+
lilconfig@2.1.0: {}
lilconfig@3.1.3: {}
lines-and-columns@1.2.4: {}
+ little-state-machine@4.8.1(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+
load-tsconfig@0.2.5: {}
loader-utils@3.3.1: {}
@@ -9480,6 +10542,10 @@ snapshots:
lower-case@1.1.4: {}
+ lower-case@2.0.2:
+ dependencies:
+ tslib: 2.8.1
+
lru-cache@10.4.3: {}
lru-cache@5.1.1:
@@ -9496,6 +10562,10 @@ snapshots:
luxon@3.6.1: {}
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
make-dir@2.1.0:
dependencies:
pify: 4.0.1
@@ -9570,12 +10640,18 @@ snapshots:
minipass: 3.3.6
yallist: 4.0.0
+ minizlib@3.0.2:
+ dependencies:
+ minipass: 7.1.2
+
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
mkdirp@1.0.4: {}
+ mkdirp@3.0.1: {}
+
module-alias@2.2.3: {}
moment-timezone@0.5.48:
@@ -9596,6 +10672,8 @@ snapshots:
ms@2.1.3: {}
+ murmurhash-js@1.0.0: {}
+
mute-stream@0.0.8: {}
mute-stream@2.0.0: {}
@@ -9647,6 +10725,11 @@ snapshots:
dependencies:
lower-case: 1.1.4
+ no-case@3.0.4:
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.8.1
+
node-addon-api@5.1.0: {}
node-addon-api@7.1.1: {}
@@ -9655,6 +10738,11 @@ snapshots:
dependencies:
whatwg-url: 5.0.0
+ node-html-parser@5.4.2:
+ dependencies:
+ css-select: 4.3.0
+ he: 1.2.0
+
node-int64@0.4.0: {}
node-plop@0.26.3:
@@ -9692,6 +10780,10 @@ snapshots:
gauge: 3.0.2
set-blocking: 2.0.0
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
object-assign@4.1.1: {}
object-hash@3.0.0: {}
@@ -9783,10 +10875,14 @@ snapshots:
dependencies:
no-case: 2.3.2
+ param-case@3.0.4:
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.8.1
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
- optional: true
parse-json@5.2.0:
dependencies:
@@ -9804,6 +10900,11 @@ snapshots:
camel-case: 3.0.0
upper-case-first: 1.1.2
+ pascal-case@3.1.2:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.8.1
+
passport-jwt@4.0.1:
dependencies:
jsonwebtoken: 9.0.2
@@ -9847,6 +10948,8 @@ snapshots:
process: 0.11.10
util: 0.10.4
+ pathe@0.2.0: {}
+
pause@0.0.1: {}
pg-connection-string@2.8.5: {}
@@ -10016,6 +11119,11 @@ snapshots:
'@babel/runtime': 7.27.1
react: 19.1.0
+ react-hook-form-persist@3.0.0(react-hook-form@7.56.2(react@19.1.0))(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+ react-hook-form: 7.56.2(react@19.1.0)
+
react-hook-form@7.56.2(react@19.1.0):
dependencies:
react: 19.1.0
@@ -10072,6 +11180,15 @@ snapshots:
'@remix-run/router': 1.23.0
react: 19.1.0
+ react-secure-storage@1.3.2:
+ dependencies:
+ crypto-js: 4.2.0
+ murmurhash-js: 1.0.0
+
+ react-simple-animate@3.5.3(react-dom@19.1.0(react@19.1.0)):
+ dependencies:
+ react-dom: 19.1.0(react@19.1.0)
+
react-smooth@4.0.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
fast-equals: 5.2.2
@@ -10135,6 +11252,8 @@ snapshots:
dependencies:
rc: 1.2.8
+ relateurl@0.2.7: {}
+
require-directory@2.1.1: {}
reserved-words@0.1.2: {}
@@ -10143,8 +11262,7 @@ snapshots:
dependencies:
resolve-from: 5.0.0
- resolve-from@4.0.0:
- optional: true
+ resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -10234,8 +11352,7 @@ snapshots:
sax@1.3.0: {}
- sax@1.4.1:
- optional: true
+ sax@1.4.1: {}
scheduler@0.26.0: {}
@@ -10313,6 +11430,32 @@ snapshots:
shallow-equal-object@1.1.1: {}
+ sharp@0.33.5:
+ dependencies:
+ color: 4.2.3
+ detect-libc: 2.0.4
+ semver: 7.7.1
+ optionalDependencies:
+ '@img/sharp-darwin-arm64': 0.33.5
+ '@img/sharp-darwin-x64': 0.33.5
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
+ '@img/sharp-libvips-darwin-x64': 1.0.4
+ '@img/sharp-libvips-linux-arm': 1.0.5
+ '@img/sharp-libvips-linux-arm64': 1.0.4
+ '@img/sharp-libvips-linux-s390x': 1.0.4
+ '@img/sharp-libvips-linux-x64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
+ '@img/sharp-linux-arm': 0.33.5
+ '@img/sharp-linux-arm64': 0.33.5
+ '@img/sharp-linux-s390x': 0.33.5
+ '@img/sharp-linux-x64': 0.33.5
+ '@img/sharp-linuxmusl-arm64': 0.33.5
+ '@img/sharp-linuxmusl-x64': 0.33.5
+ '@img/sharp-wasm32': 0.33.5
+ '@img/sharp-win32-ia32': 0.33.5
+ '@img/sharp-win32-x64': 0.33.5
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
@@ -10396,7 +11539,8 @@ snapshots:
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
- optional: true
+
+ source-map@0.5.7: {}
source-map@0.6.1: {}
@@ -10461,6 +11605,8 @@ snapshots:
strip-json-comments@3.1.1: {}
+ stylis@4.2.0: {}
+
stylus@0.62.0:
dependencies:
'@adobe/css-tools': 4.3.3
@@ -10504,7 +11650,7 @@ snapshots:
tailwindcss@4.1.5: {}
- tailwindcss@4.1.6: {}
+ tailwindcss@4.1.7: {}
tapable@2.2.1: {}
@@ -10517,13 +11663,21 @@ snapshots:
mkdirp: 1.0.4
yallist: 4.0.0
+ tar@7.4.3:
+ dependencies:
+ '@isaacs/fs-minipass': 4.0.1
+ chownr: 3.0.0
+ minipass: 7.1.2
+ minizlib: 3.0.2
+ mkdirp: 3.0.1
+ yallist: 5.0.0
+
terser@5.39.0:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.14.1
commander: 2.20.3
source-map-support: 0.5.21
- optional: true
test-exclude@6.0.0:
dependencies:
@@ -10775,6 +11929,12 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.3
+ use-deep-compare-effect@1.8.1(react@19.1.0):
+ dependencies:
+ '@babel/runtime': 7.27.1
+ dequal: 2.0.3
+ react: 19.1.0
+
use-sidecar@1.1.3(@types/react@19.1.3)(react@19.1.0):
dependencies:
detect-node-es: 1.1.0
@@ -10841,18 +12001,34 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)):
+ vite-plugin-html@3.2.2(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)):
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ colorette: 2.0.20
+ connect-history-api-fallback: 1.6.0
+ consola: 2.15.3
+ dotenv: 16.5.0
+ dotenv-expand: 8.0.3
+ ejs: 3.1.10
+ fast-glob: 3.3.3
+ fs-extra: 10.1.0
+ html-minifier-terser: 6.1.0
+ node-html-parser: 5.4.2
+ pathe: 0.2.0
+ vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
+
+ vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)):
dependencies:
debug: 4.4.0
globrex: 0.1.2
tsconfck: 3.1.5(typescript@5.8.3)
optionalDependencies:
- vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
+ vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)
transitivePeerDependencies:
- supports-color
- typescript
- vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1):
+ vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1):
dependencies:
esbuild: 0.25.4
fdir: 6.4.4(picomatch@4.0.2)
@@ -10865,7 +12041,7 @@ snapshots:
fsevents: 2.3.3
jiti: 2.4.2
less: 4.3.0
- lightningcss: 1.29.2
+ lightningcss: 1.30.1
sass: 1.87.0
stylus: 0.62.0
terser: 5.39.0
@@ -10964,12 +12140,21 @@ snapshots:
imurmurhash: 0.1.4
signal-exit: 3.0.7
+ xml2js@0.6.2:
+ dependencies:
+ sax: 1.4.1
+ xmlbuilder: 11.0.1
+
+ xmlbuilder@11.0.1: {}
+
y18n@5.0.8: {}
yallist@3.1.1: {}
yallist@4.0.0: {}
+ yallist@5.0.0: {}
+
yaml@1.10.2: {}
yaml@2.7.1:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index cf45eb65..4f0b2deb 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,16 +1,13 @@
packages:
- - packages/*
+ - packages/*
- modules/*
- apps/*
- - "!apps/web"
-
-
+ignoredBuiltDependencies:
+ - esbuild
onlyBuiltDependencies:
- '@biomejs/biome'
- '@parcel/watcher'
- '@tailwindcss/oxide'
- bcrypt
- core-js-pure
-
-ignoredBuiltDependencies:
- - esbuild
+ - sharp