From 416f1367aa57906b331a4a2f5e34a939be454f2e Mon Sep 17 00:00:00 2001 From: david Date: Wed, 30 Apr 2025 20:26:39 +0200 Subject: [PATCH] . --- .vscode/launch.json | 4 +- apps/server/nodemon.json | 6 + apps/server/package.json | 10 +- apps/server/src/app.ts | 3 +- apps/server/src/config/database.ts | 108 +++-- apps/server/src/core/helpers/model-loader.ts | 81 ++-- apps/server/src/core/helpers/module-loader.ts | 13 +- apps/server/src/index.ts | 52 ++- apps/server/tsconfig.json | 46 +- modules/invoices/package.json | 6 +- .../application/create-invoice.use-case.ts | 5 +- .../application/delete-invoice.use-case.ts | 5 +- .../application/get-invoice.use-case.ts | 5 +- .../application/list-invoices.use-case.ts | 28 +- .../application/update-invoice.use-case.bak | 4 +- .../src/server/domain/aggregates/invoice.ts | 3 +- .../invoice-customer/invoice-address.ts | 3 +- .../invoice-customer/invoice-customer.ts | 3 +- .../__tests__/invoice-item.test.ts | 2 +- .../entities/invoice-items/invoice-item.ts | 3 +- .../entities/invoice-items/invoice-items.ts | 2 +- .../invoice-repository.interface.ts | 3 +- .../services/invoice-service.interface.ts | 3 +- .../server/domain/services/invoice.service.ts | 3 +- .../value-objects/invoice-address-type.ts | 3 +- .../value-objects/invoice-item-description.ts | 3 +- .../domain/value-objects/invoice-number.ts | 3 +- .../domain/value-objects/invoice-serie.ts | 3 +- .../domain/value-objects/invoice-status.ts | 3 +- modules/invoices/src/server/index.ts | 7 +- .../intrastructure/express/invoices.routes.ts | 5 +- .../mappers/invoice-item.mapper.ts | 13 +- .../intrastructure/mappers/invoice.mapper.ts | 11 +- .../server/intrastructure/sequelize/index.ts | 12 +- .../sequelize/invoice-item.model.ts | 35 +- .../intrastructure/sequelize/invoice.model.ts | 37 +- .../sequelize/invoice.repository.ts | 52 +-- .../create-invoice.controller.ts | 3 +- .../controllers/create-invoice/index.ts | 5 +- .../get-invoice/get-invoice.controller.ts | 3 +- .../controllers/get-invoice/index.ts | 3 +- .../presenter/InvoiceItem.presenter.ts.bak | 2 +- .../controllers/list-invoices/index.ts | 3 +- .../presenter/list-invoices.presenter.ts | 2 +- modules/invoices/tsconfig.json | 46 +- package.json | 7 +- packages/rdx-auth/package.json | 8 +- .../list-users/list-users.use-case.ts | 3 +- .../application/register/register.use-case.ts | 3 +- .../domain/aggregates/authenticated-user.ts | 3 +- .../rdx-auth/src/domain/aggregates/role.ts | 3 +- .../rdx-auth/src/domain/aggregates/user.ts | 3 +- .../src/domain/entities/jwt-payload.ts | 3 +- .../src/domain/entities/login-data.ts | 3 +- .../src/domain/entities/logout-data.ts | 3 +- .../src/domain/entities/register-data.ts | 3 +- .../src/domain/entities/tab-context.ts | 3 +- .../domain/events/user-authenticated.event.ts | 2 +- ...authenticated-user-repository.interface.ts | 3 +- .../tab-context-repository.interface.ts | 3 +- .../repositories/user-repository.interface.ts | 3 +- .../domain/services/auth-service.interface.ts | 3 +- .../src/domain/services/auth.service.ts | 3 +- .../services/tab-context-service.interface.ts | 3 +- .../domain/services/tab-context.service.ts | 3 +- .../domain/services/user-service.interface.ts | 3 +- .../src/domain/services/user.service.ts | 3 +- .../domain/value-objects/auth-user-roles.ts | 3 +- .../src/domain/value-objects/hash-password.ts | 3 +- .../domain/value-objects/plain-password.ts | 3 +- .../src/domain/value-objects/token.ts | 3 +- .../src/domain/value-objects/username.ts | 3 +- .../mappers/tab-context.mapper.ts | 3 +- .../infraestructure/mappers/user.mapper.ts | 3 +- .../middleware/passport-auth.middleware.ts | 2 +- .../authenticated-user.repository.ts | 4 +- .../sequelize/user.repository.ts | 4 +- .../listUsers/list-users.presenter.ts | 2 +- packages/rdx-core/package.json | 17 +- .../aggregate-root-repository.interface.ts | 0 .../src/domain}/aggregate-root.ts | 2 +- .../src/domain}/domain-entity.ts | 0 .../src/domain}/events/domain-event-handle.ts | 0 .../domain}/events/domain-event.interface.ts | 0 .../src/domain}/events/domain-event.ts | 0 .../src/domain}/events/index.ts | 0 .../src => rdx-core/src/domain}/index.ts | 0 .../__tests__/email-address.test.ts | 0 .../__tests__/money-value.test.ts | 0 .../value-objects/__tests__/name.spec.ts | 0 .../__tests__/percentage.test.ts | 0 .../__tests__/phone-number.test.ts | 0 .../__tests__/postal-address.test.ts | 0 .../value-objects/__tests__/quantity.spec.ts | 0 .../value-objects/__tests__/slug.spec.ts | 0 .../__tests__/tin-number.test.ts | 0 .../value-objects/__tests__/unique-id.test.ts | 0 .../value-objects/__tests__/utc-date.test.ts | 0 .../__tests__/value-objects.test.ts | 0 .../domain}/value-objects/email-address.ts | 2 +- .../src/domain}/value-objects/index.ts | 0 .../src/domain}/value-objects/money-value.ts | 2 +- .../src/domain}/value-objects/name.ts | 2 +- .../src/domain}/value-objects/percentage.ts | 2 +- .../src/domain}/value-objects/phone-number.ts | 2 +- .../domain}/value-objects/postal-address.ts | 2 +- .../src/domain}/value-objects/quantity.ts | 2 +- .../src/domain}/value-objects/slug.ts | 2 +- .../src/domain}/value-objects/tin-number.ts | 2 +- .../src/domain}/value-objects/unique-id.ts | 2 +- .../src/domain}/value-objects/utc-date.ts | 2 +- .../src/domain}/value-objects/value-object.ts | 0 .../src/helpers/collection.ts | 0 .../src/helpers/index.ts | 1 + .../src/helpers/maybe.ts | 0 .../src/helpers/modules}/index.ts | 0 .../modules}/module-client.interface.ts | 0 .../modules}/module-server.interface.ts | 0 .../src/helpers/modules}/types.ts | 11 +- .../src/helpers/result.ts | 0 .../src/helpers/utils.ts | 0 packages/rdx-core/src/index.ts | 2 + packages/rdx-core/src/infrastructure/index.ts | 1 + .../src/infrastructure/logger.ts} | 35 +- .../sequelize/sequelize-mapper.ts | 4 +- .../sequelize/sequelize-repository.ts | 16 +- .../express/express-controller.ts | 2 +- .../middlewares/global-error-handler.ts | 2 +- packages/rdx-core/tsconfig.json | 6 +- packages/rdx-ddd-domain/package.json | 40 -- packages/rdx-ddd-domain/tsconfig.json | 16 - packages/rdx-ddd-domain/turbo.json | 9 - packages/rdx-logger/package.json | 44 -- packages/rdx-logger/tsconfig.json | 16 - packages/rdx-logger/turbo.json | 8 - packages/rdx-modules/package.json | 39 -- packages/rdx-modules/tsconfig.json | 16 - packages/rdx-modules/turbo.json | 8 - packages/rdx-utils/package.json | 29 -- packages/rdx-utils/src/index.ts | 1 - packages/rdx-utils/tsconfig.json | 16 - packages/rdx-utils/turbo.json | 8 - pnpm-lock.yaml | 441 +++++------------- pnpm-workspace.yaml | 4 +- turbo.json | 5 +- 145 files changed, 650 insertions(+), 933 deletions(-) create mode 100644 apps/server/nodemon.json rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/aggregate-root-repository.interface.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/aggregate-root.ts (96%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/domain-entity.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/events/domain-event-handle.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/events/domain-event.interface.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/events/domain-event.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/events/index.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/index.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/email-address.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/money-value.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/name.spec.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/percentage.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/phone-number.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/postal-address.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/quantity.spec.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/slug.spec.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/tin-number.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/unique-id.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/utc-date.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/__tests__/value-objects.test.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/email-address.ts (96%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/index.ts (100%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/money-value.ts (99%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/name.ts (97%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/percentage.ts (98%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/phone-number.ts (97%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/postal-address.ts (98%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/quantity.ts (98%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/slug.ts (96%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/tin-number.ts (96%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/unique-id.ts (96%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/utc-date.ts (98%) rename packages/{rdx-ddd-domain/src => rdx-core/src/domain}/value-objects/value-object.ts (100%) rename packages/{rdx-utils => rdx-core}/src/helpers/collection.ts (100%) rename packages/{rdx-utils => rdx-core}/src/helpers/index.ts (79%) rename packages/{rdx-utils => rdx-core}/src/helpers/maybe.ts (100%) rename packages/{rdx-modules/src => rdx-core/src/helpers/modules}/index.ts (100%) rename packages/{rdx-modules/src => rdx-core/src/helpers/modules}/module-client.interface.ts (100%) rename packages/{rdx-modules/src => rdx-core/src/helpers/modules}/module-server.interface.ts (100%) rename packages/{rdx-modules/src => rdx-core/src/helpers/modules}/types.ts (50%) rename packages/{rdx-utils => rdx-core}/src/helpers/result.ts (100%) rename packages/{rdx-utils => rdx-core}/src/helpers/utils.ts (100%) rename packages/{rdx-logger/src/index.ts => rdx-core/src/infrastructure/logger.ts} (78%) delete mode 100644 packages/rdx-ddd-domain/package.json delete mode 100644 packages/rdx-ddd-domain/tsconfig.json delete mode 100644 packages/rdx-ddd-domain/turbo.json delete mode 100644 packages/rdx-logger/package.json delete mode 100644 packages/rdx-logger/tsconfig.json delete mode 100644 packages/rdx-logger/turbo.json delete mode 100644 packages/rdx-modules/package.json delete mode 100644 packages/rdx-modules/tsconfig.json delete mode 100644 packages/rdx-modules/turbo.json delete mode 100644 packages/rdx-utils/package.json delete mode 100644 packages/rdx-utils/src/index.ts delete mode 100644 packages/rdx-utils/tsconfig.json delete mode 100644 packages/rdx-utils/turbo.json diff --git a/.vscode/launch.json b/.vscode/launch.json index cf2f180..438befe 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -22,6 +22,7 @@ "request": "launch", "program": "${workspaceFolder}/apps/server/src/index.ts", "runtimeArgs": ["-r", "ts-node/register"], + "envFile": "${workspaceFolder}/apps/server/.env", "env": { "NODE_ENV": "development", "NODE_OPTIONS": "--inspect=0" @@ -40,12 +41,11 @@ "type": "node", "request": "launch", "program": "${workspaceFolder}/apps/server/src/index.ts", - "runtimeArgs": ["--nolazy", "-r", "ts-node/register", "-r", "tsconfig-paths/register"], + "runtimeArgs": ["--require", "tsconfig-paths/register", "--inspect"], "cwd": "${workspaceFolder}", "outFiles": ["${workspaceFolder}/**/*.js"], "sourceMaps": true, "envFile": "${workspaceFolder}/apps/server/.env", - "preLaunchTask": "build", "internalConsoleOptions": "openOnSessionStart" }, { diff --git a/apps/server/nodemon.json b/apps/server/nodemon.json new file mode 100644 index 0000000..c38e668 --- /dev/null +++ b/apps/server/nodemon.json @@ -0,0 +1,6 @@ +{ + "watch": ["../../packages", "../../modules", "src"], + "ext": "ts,js,json", + "ignore": ["dist", "node_modules"], + "exec": "ts-node -r tsconfig-paths/register src/index.ts" +} diff --git a/apps/server/package.json b/apps/server/package.json index 5277da2..4361b62 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -6,8 +6,8 @@ "scripts": { "build": "tsc", "clean": "rm -rf dist && rm -rf node_modules", - "dev": "ts-node-dev --respawn --inspect --transpile-only --require tsconfig-paths/register src/index.ts", - "dev:nodemon": "nodemon --exec \"node -r esbuild-register ./src/index.ts\" -e .ts", + "dev:2": "ts-node-dev --respawn --inspect --transpile-only --require tsconfig-paths/register src/index.ts", + "dev": "nodemon --watch ../../packages --watch ../../modules --watch ./src --ext ts,js,json --exec ts-node-dev -r tsconfig-paths/register src/index.ts", "lint": "tsc --noEmit && eslint \"src/**/*.ts*\" --max-warnings 0", "start": "node -r esbuild-register ./src/index.ts", "test": "jest --detectOpenHandles" @@ -17,10 +17,6 @@ }, "dependencies": { "@rdx/core": "workspace:*", - "@rdx/ddd-domain": "workspace:*", - "@rdx/logger": "workspace:*", - "@rdx/modules": "workspace:*", - "@rdx/utils": "workspace:*", "@modules/invoices": "workspace:*", "bcrypt": "^5.1.1", "body-parser": "^2.2.0", @@ -41,7 +37,7 @@ "path": "^0.12.7", "reflect-metadata": "^0.2.2", "response-time": "^2.3.3", - "sequelize": "^6.37.7", + "sequelize": "^6.37.5", "zod": "^3.24.3" }, "devDependencies": { diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 44e453e..9023d32 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -1,5 +1,4 @@ -import { globalErrorHandler } from "@rdx/core"; -import { logger } from "@rdx/logger"; +import { globalErrorHandler, logger } from "@rdx/core"; import dotenv from "dotenv"; import express, { Application } from "express"; import helmet from "helmet"; diff --git a/apps/server/src/config/database.ts b/apps/server/src/config/database.ts index 0f99d3d..196c825 100644 --- a/apps/server/src/config/database.ts +++ b/apps/server/src/config/database.ts @@ -1,48 +1,82 @@ -import { logger } from "@rdx/logger"; +import { logger } from "@rdx/core"; import dotenv from "dotenv"; import { Sequelize } from "sequelize"; dotenv.config(); -export const sequelize = new Sequelize( - process.env.DB_NAME as string, // database - process.env.DB_USER as string, // username - process.env.DB_PASSWORD as string, // password - { - host: process.env.DB_HOST as string, - dialect: "mysql", - port: parseInt(process.env.DB_PORT || "3306", 10), - dialectOptions: { - multipleStatements: true, - dateStrings: true, - typeCast: true, - //timezone: "Z", - }, - pool: { - max: 10, - min: 0, - acquire: 30000, - idle: 10000, - }, - logQueryParameters: true, - logging: process.env.DB_LOGGING === "true" ? logger.debug : false, - define: { - charset: "utf8mb4", - collate: "utf8mb4_unicode_ci", - //freezeTableName: true, - underscored: true, - timestamps: true, - }, - } -); +let sequelizeInstance: Sequelize | null = null; + +function getDatabase(): Sequelize { + if (sequelizeInstance) { + return sequelizeInstance; + } + + sequelizeInstance = new Sequelize( + process.env.DB_NAME as string, + process.env.DB_USER as string, + process.env.DB_PASSWORD as string, + { + host: process.env.DB_HOST as string, + dialect: "mysql", + port: parseInt(process.env.DB_PORT || "3306", 10), + dialectOptions: { + multipleStatements: true, + dateStrings: true, + typeCast: true, + }, + pool: { + max: 10, + min: 0, + acquire: 30000, + idle: 10000, + }, + logQueryParameters: true, + logging: process.env.DB_LOGGING === "true" ? logger.debug : false, + define: { + charset: "utf8mb4", + collate: "utf8mb4_unicode_ci", + underscored: true, + timestamps: true, + }, + } + ); + + return sequelizeInstance; +} + +export async function tryConnectToDatabase() { + const database = getDatabase(); + + if (!database) { + const error = new Error("❌ Database not found."); + logger.error({ + message: error.message, + label: "tryConnectToDatabase", + }); + throw error; + } + logger.info({ message: `🔸 Connecting to database...`, label: "tryConnectToDatabase" }); -export async function connectToDatabase(): Promise { try { - await sequelize.authenticate(); + await database.authenticate(); //await registerModels(); - logger.info(`✔️${" "}Database connection established successfully.`); + logger.info({ + message: `✔️${" "}Database connection established successfully.`, + label: "tryConnectToDatabase", + meta: { + host: process.env.DB_HOST, + port: process.env.DB_PORT, + database: process.env.DB_NAME, + user: process.env.DB_USER, + }, + }); + return database; } catch (error) { - logger.error("❌ Unable to connect to the database:", error); - process.exit(1); + logger.error({ + message: `❌ Unable to connect to the database: ${(error as Error).message}`, + error, + label: "tryConnectToDatabase", + }); + throw error; } } diff --git a/apps/server/src/core/helpers/model-loader.ts b/apps/server/src/core/helpers/model-loader.ts index eb58f4d..34831cf 100644 --- a/apps/server/src/core/helpers/model-loader.ts +++ b/apps/server/src/core/helpers/model-loader.ts @@ -1,56 +1,59 @@ -import { logger } from "@rdx/logger"; -import { ModelInitializer, ModuleParams } from "@rdx/modules"; +import { logger, ModuleParams } from "@rdx/core"; -const registeredModels: Map = new Map(); -const initializedModels = new Set(); +const allModelInitializers: any[] = []; +const registeredModels: { [key: string]: any } = {}; /** * 🔹 Registra todos los modelos en Sequelize */ -export const registerModel = (models: ModelInitializer[], params: ModuleParams) => { - for (const initModelFn of models) { - const model = initModelFn(); - if (model) { - registeredModels.set(model.name, model); - } - } +export const registerModels = (models: any[], params?: ModuleParams) => { + allModelInitializers.push(...models); }; export const initModels = async (params: ModuleParams) => { - registeredModels.forEach((_, name) => loadModel(name, params)); + logger.info({ message: `Init models...`, label: "initModels" }); + + const { database } = params; + if (!database) { + const error = new Error("❌ Database not found."); + logger.error({ + message: error.message, + label: "initModels", + }); + throw error; + } + + // Inicializar modelos + allModelInitializers.forEach((initializer) => { + const model = initializer(database); + registeredModels[model.name] = model; + logger.info({ + message: `🔸 Model "${model.name}" registered (sequelize)`, + label: "registerModel", + }); + }); + + // Configurar asociaciones + Object.values(registeredModels).forEach((model) => { + if (typeof model.associate === "function") { + model.associate(database); + } + }); try { // Sincronizamos DB en modo desarrollo - const { database } = params; if (process.env.NODE_ENV !== "production") { await database.sync({ force: false, alter: true }); - logger.info(`✔️${" "}Database synchronized successfully.`); + logger.info({ message: `✔️${" "}Database synchronized successfully.`, label: "initModels" }); } else { - logger.warning("⚠️ Running in production mode - Skipping database sync."); + logger.warning({ + message: "⚠️ Running in production mode - Skipping database sync.", + label: "initModels", + }); } - } catch (error) { - logger.error("❌ Error synchronizing database:", error); - process.exit(1); + } catch (err) { + const error = err as Error; + logger.error({ message: "❌ Error synchronizing database:", error, label: "initModels" }); + throw error; } }; - -export const loadModel = (name: string, params: ModuleParams) => { - if (initializedModels.has(name)) return; - - const model = registeredModels.get(name); - if (!model) throw new Error(`❌ Model "${name}" not found.`); - - const { database } = params; - - // Asociaciones y hooks de los modelos, si existen - if (model.associate) { - model.associate(database); - } - - if (model.hooks) { - model.hooks(database); - } - - initializedModels.add(name); - logger.info(`🔸 Model "${model.name}" registered (sequelize)`); -}; diff --git a/apps/server/src/core/helpers/module-loader.ts b/apps/server/src/core/helpers/module-loader.ts index 8e99687..09e1130 100644 --- a/apps/server/src/core/helpers/module-loader.ts +++ b/apps/server/src/core/helpers/module-loader.ts @@ -1,6 +1,5 @@ -import { logger } from "@rdx/logger"; -import { IModuleServer, ModuleParams } from "@rdx/modules"; -import { initModels, registerModel } from "./model-loader"; +import { IModuleServer, logger, ModuleParams } from "@rdx/core"; +import { initModels, registerModels } from "./model-loader"; import { registerService } from "./service-registry"; const registeredModules: Map = new Map(); @@ -13,11 +12,11 @@ export function registerModule(pkg: IModuleServer) { registeredModules.set(pkg.metadata.name, pkg); } -export function initModules(params: ModuleParams) { +export async function initModules(params: ModuleParams) { registeredModules.forEach((_, name) => { loadModule(name, params); }); - initModels(params); + await initModels(params); } const loadModule = (name: string, params: ModuleParams) => { @@ -37,7 +36,7 @@ const loadModule = (name: string, params: ModuleParams) => { // Registrar modelos de Sequelize, si los expone if (pkgApi?.models) { - registerModel(pkgApi.models, params); + registerModels(pkgApi.models, params); } // Registrar sus servicios, si los expone @@ -49,5 +48,5 @@ const loadModule = (name: string, params: ModuleParams) => { } initializedModules.add(name); - logger.info(`✅ Paquete "${name}" registrado.`); + logger.info({ message: `✅ Module "${name}" registered`, label: "loadModule" }); }; diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index b8e62eb..959537b 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -1,9 +1,10 @@ -import { logger } from "@rdx/logger"; +import { logger } from "@rdx/core"; import http from "http"; import { DateTime } from "luxon"; +import os from "os"; import { createApp } from "./app"; import { ENV } from "./config"; -import { connectToDatabase, sequelize as database } from "./config/database"; +import { tryConnectToDatabase } from "./config/database"; import { initModules } from "./core/helpers"; import { registerModules } from "./modules"; @@ -42,13 +43,17 @@ const serverStop = (server: http.Server) => { // Manejo de errores al iniciar el servidor const serverError = (error: NodeJS.ErrnoException) => { - logger.info(`⛔️ Server wasn't able to start properly.`); + logger.error({ + message: `⛔️ Server wasn't able to start properly.`, + label: "serverError0", + error, + }); if (error.code === "EADDRINUSE") { - logger.error(error.message); + logger.error({ message: error.message, error, label: "serverError1" }); //logger.error(`The port ${error.port} is already used by another application.`); } else { - logger.error(error); + logger.error({ message: error.message, error, label: "serverError2" }); } // Dependiendo de la criticidad, podrías forzar el proceso a salir @@ -113,7 +118,7 @@ process.on("uncaughtException", (error: Error) => { }); // Arranca el servidor si la conexión a la base de datos va bien -(async (app) => { +(async () => { try { const now = DateTime.now(); logger.info(`Time: ${now.toLocaleString(DateTime.DATETIME_FULL)} ${now.zoneName}`); @@ -121,18 +126,45 @@ process.on("uncaughtException", (error: Error) => { logger.info(`Environment: ${currentState.environment}`); logger.info(`Process PID: ${process.pid}`); - await connectToDatabase(); // Lógica de inicialización de DB, si procede: // initStructure(sequelizeConn.connection); // insertUsers(); - initModules({ app, database: database, baseRoutePath: "/api/v1" }); + const database = await tryConnectToDatabase(); + + await initModules({ app, database, baseRoutePath: "/api/v1" }); server.listen(currentState.port, () => { + server.emit("listening"); + + const networkInterfaces = os.networkInterfaces(); + const addresses: string[] = []; + + // Obtiene todas las direcciones IPv4 + for (const interfaceName in networkInterfaces) { + const networkInterface = networkInterfaces[interfaceName]; + if (networkInterface) { + for (const iface of networkInterface) { + if (iface.family === "IPv4" && !iface.internal) { + addresses.push(iface.address); + } + } + } + } + + addresses.forEach((address) => { + logger.info(`⚡️ Server accessible at: http://${address}:${currentState.port}`); + }); + logger.info(`Server started at: ${DateTime.now().toLocaleString(DateTime.DATETIME_FULL)}`); + logger.info(`Server PID: ${process.pid}`); + logger.info( + `Server launched in: ${DateTime.now().diff(currentState.launchedAt).toMillis()} ms` + ); + logger.info(`Server path: ${currentState.appPath}`); + logger.info(`Server environment: ${currentState.environment}`); logger.info("To shut down your server, press + C at any time"); - logger.info(`⚡️ Server: http://${currentState.host}:${currentState.port}`); }); } catch (error) { serverError(error as NodeJS.ErrnoException); } -})(app); +})(); diff --git a/apps/server/tsconfig.json b/apps/server/tsconfig.json index 0e1daaf..09faa8d 100644 --- a/apps/server/tsconfig.json +++ b/apps/server/tsconfig.json @@ -1,10 +1,50 @@ { "extends": "@repo/typescript-config/base.json", "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", + /* Basic Options */ + "target": "ES2022" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": ["ES2022", "dom"] /* Specify library files to be included in the compilation. */, + + "allowJs": false /* Allow javascript files to be compiled. */, + "pretty": true, + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "preserve" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist/" /* Redirect output structure to the directory. */, + //"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + // "composite": true, /* Enable project compilation */ + "removeComments": true /* Do not emit comments to output. */, + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "skipLibCheck": false /* Skip type checking of declaration files. */, + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + "noUnusedLocals": false /* Report errors on unused locals. */, + "noUnusedParameters": false /* Report errors on unused parameters. */, + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + //"baseUrl": "./" /* Base directory to resolve non-absolute module names. */, + "rootDir": "./src", - "types": ["node", "jest"], + //"types": ["node", "jest"], "baseUrl": "./", "paths": { diff --git a/modules/invoices/package.json b/modules/invoices/package.json index 4fd6b62..8006455 100644 --- a/modules/invoices/package.json +++ b/modules/invoices/package.json @@ -52,10 +52,6 @@ }, "dependencies": { "@rdx/core": "workspace:*", - "@rdx/ddd-domain": "workspace:*", - "@rdx/logger": "workspace:*", - "@rdx/modules": "workspace:*", - "@rdx/utils": "workspace:*", "bcrypt": "^5.1.1", "body-parser": "^2.2.0", "cors": "^2.8.5", @@ -75,7 +71,7 @@ "path": "^0.12.7", "reflect-metadata": "^0.2.2", "response-time": "^2.3.3", - "sequelize": "^6.37.7", + "sequelize": "^6.37.5", "zod": "^3.24.3" } } diff --git a/modules/invoices/src/server/application/create-invoice.use-case.ts b/modules/invoices/src/server/application/create-invoice.use-case.ts index 775db83..2ccf292 100644 --- a/modules/invoices/src/server/application/create-invoice.use-case.ts +++ b/modules/invoices/src/server/application/create-invoice.use-case.ts @@ -1,7 +1,4 @@ -import { ITransactionManager } from "@rdx/core"; -import { UniqueID, UtcDate } from "@rdx/ddd-domain"; -import { logger } from "@rdx/logger"; -import { Result } from "@rdx/utils"; +import { ITransactionManager, logger, Result, UniqueID, UtcDate } from "@rdx/core"; import { IInvoiceService, Invoice } from "../domain"; import { IInvoiceProps, InvoiceNumber, InvoiceSerie, InvoiceStatus } from "../domain"; diff --git a/modules/invoices/src/server/application/delete-invoice.use-case.ts b/modules/invoices/src/server/application/delete-invoice.use-case.ts index fb91ed5..d940f0c 100644 --- a/modules/invoices/src/server/application/delete-invoice.use-case.ts +++ b/modules/invoices/src/server/application/delete-invoice.use-case.ts @@ -1,7 +1,4 @@ -import { ITransactionManager } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; -import { logger } from "@rdx/logger"; -import { Result } from "@rdx/utils"; +import { ITransactionManager, logger, Result, UniqueID } from "@rdx/core"; import { IInvoiceService } from "../domain"; export class DeleteInvoiceUseCase { diff --git a/modules/invoices/src/server/application/get-invoice.use-case.ts b/modules/invoices/src/server/application/get-invoice.use-case.ts index 224b027..821d729 100644 --- a/modules/invoices/src/server/application/get-invoice.use-case.ts +++ b/modules/invoices/src/server/application/get-invoice.use-case.ts @@ -1,7 +1,4 @@ -import { ITransactionManager } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; -import { logger } from "@rdx/logger"; -import { Result } from "@rdx/utils"; +import { ITransactionManager, logger, Result, UniqueID } from "@rdx/core"; import { IInvoiceService, Invoice } from "../domain"; export class GetInvoiceUseCase { diff --git a/modules/invoices/src/server/application/list-invoices.use-case.ts b/modules/invoices/src/server/application/list-invoices.use-case.ts index b56db8e..8dce6db 100644 --- a/modules/invoices/src/server/application/list-invoices.use-case.ts +++ b/modules/invoices/src/server/application/list-invoices.use-case.ts @@ -1,6 +1,4 @@ -import { ITransactionManager } from "@rdx/core"; -import { logger } from "@rdx/logger"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, ITransactionManager, logger, Result } from "@rdx/core"; import { IInvoiceService, Invoice } from "../domain"; export class ListInvoicesUseCase { @@ -14,7 +12,29 @@ export class ListInvoicesUseCase { try { return await this.invoiceService.findInvoices(transaction); } catch (error: unknown) { - logger.error(error as Error); + logger.error({ + //message: error as Error, + message: "hola", + label: "ListInvoicesUseCase", + }); + // Aquí puedes manejar el error de manera más específica si es necesario + // Por ejemplo, puedes lanzar un error personalizado o registrar el error + + // logger.error({ message: error, label: "ListInvoicesUseCase" }); + // return Result.fail(new Error("Error al listar las facturas")); + + // O simplemente devolver el error original + // return Result.fail(error as Error); + + // Si el error es un Error de Sequelize, puedes manejarlo de manera diferente + // if (error instanceof SequelizeError) { + // return Result.fail(new Error("Error de base de datos")); + // } + // Si el error es un Error de Sequelize, puedes manejarlo de manera diferente + // if (error instanceof SequelizeError) { + // return Result.fail(new Error("Error de base de datos")); + // } + return Result.fail(error as Error); } }); diff --git a/modules/invoices/src/server/application/update-invoice.use-case.bak b/modules/invoices/src/server/application/update-invoice.use-case.bak index e65b699..b6e424d 100644 --- a/modules/invoices/src/server/application/update-invoice.use-case.bak +++ b/modules/invoices/src/server/application/update-invoice.use-case.bak @@ -1,7 +1,7 @@ import { ITransactionManager } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; +import { UniqueID } from "@rdx/core"; import { logger } from "@rdx/logger"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result } from "@rdx/core"; import { IInvoiceService, Invoice, InvoiceItem } from "../domain"; import { IInvoiceProps, InvoiceNumber, InvoiceStatus } from "../domain"; diff --git a/modules/invoices/src/server/domain/aggregates/invoice.ts b/modules/invoices/src/server/domain/aggregates/invoice.ts index c85f6d0..955e122 100644 --- a/modules/invoices/src/server/domain/aggregates/invoice.ts +++ b/modules/invoices/src/server/domain/aggregates/invoice.ts @@ -1,5 +1,4 @@ -import { AggregateRoot, MoneyValue, UniqueID, UtcDate } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { AggregateRoot, Collection, MoneyValue, Result, UniqueID, UtcDate } from "@rdx/core"; import { InvoiceCustomer, InvoiceItem, InvoiceItems } from "../entities"; import { InvoiceNumber, InvoiceSerie, InvoiceStatus } from "../value-objects"; diff --git a/modules/invoices/src/server/domain/entities/invoice-customer/invoice-address.ts b/modules/invoices/src/server/domain/entities/invoice-customer/invoice-address.ts index 0cdfcca..e7a3ed9 100644 --- a/modules/invoices/src/server/domain/entities/invoice-customer/invoice-address.ts +++ b/modules/invoices/src/server/domain/entities/invoice-customer/invoice-address.ts @@ -1,5 +1,4 @@ -import { EmailAddress, Name, PostalAddress, ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Name, PostalAddress, Result, ValueObject } from "@rdx/core"; import { PhoneNumber } from "libphonenumber-js"; import { InvoiceAddressType } from "../../value-objects"; diff --git a/modules/invoices/src/server/domain/entities/invoice-customer/invoice-customer.ts b/modules/invoices/src/server/domain/entities/invoice-customer/invoice-customer.ts index e239ff1..2395cae 100644 --- a/modules/invoices/src/server/domain/entities/invoice-customer/invoice-customer.ts +++ b/modules/invoices/src/server/domain/entities/invoice-customer/invoice-customer.ts @@ -1,5 +1,4 @@ -import { DomainEntity, Name, TINNumber, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, Name, Result, TINNumber, UniqueID } from "@rdx/core"; import { InvoiceAddress } from "./invoice-address"; export interface IInvoiceCustomerProps { diff --git a/modules/invoices/src/server/domain/entities/invoice-items/__tests__/invoice-item.test.ts b/modules/invoices/src/server/domain/entities/invoice-items/__tests__/invoice-item.test.ts index 07fc8d4..cf5f772 100644 --- a/modules/invoices/src/server/domain/entities/invoice-items/__tests__/invoice-item.test.ts +++ b/modules/invoices/src/server/domain/entities/invoice-items/__tests__/invoice-item.test.ts @@ -1,4 +1,4 @@ -import { MoneyValue, Quantity } from "@rdx/ddd-domain"; +import { MoneyValue, Quantity } from "@rdx/core"; import { InvoiceItemDescription } from "../../../value-objects"; import { InvoiceItem } from "../invoice-item"; diff --git a/modules/invoices/src/server/domain/entities/invoice-items/invoice-item.ts b/modules/invoices/src/server/domain/entities/invoice-items/invoice-item.ts index 9724747..4627758 100644 --- a/modules/invoices/src/server/domain/entities/invoice-items/invoice-item.ts +++ b/modules/invoices/src/server/domain/entities/invoice-items/invoice-item.ts @@ -1,5 +1,4 @@ -import { DomainEntity, MoneyValue, Percentage, Quantity, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, MoneyValue, Percentage, Quantity, Result, UniqueID } from "@rdx/core"; import { InvoiceItemDescription } from "../../value-objects"; export interface IInvoiceItemProps { diff --git a/modules/invoices/src/server/domain/entities/invoice-items/invoice-items.ts b/modules/invoices/src/server/domain/entities/invoice-items/invoice-items.ts index caa43f7..549cfb6 100644 --- a/modules/invoices/src/server/domain/entities/invoice-items/invoice-items.ts +++ b/modules/invoices/src/server/domain/entities/invoice-items/invoice-items.ts @@ -1,4 +1,4 @@ -import { Collection } from "@rdx/utils"; +import { Collection } from "@rdx/core"; import { InvoiceItem } from "./invoice-item"; export class InvoiceItems extends Collection { diff --git a/modules/invoices/src/server/domain/repositories/invoice-repository.interface.ts b/modules/invoices/src/server/domain/repositories/invoice-repository.interface.ts index 203d398..8a20e99 100644 --- a/modules/invoices/src/server/domain/repositories/invoice-repository.interface.ts +++ b/modules/invoices/src/server/domain/repositories/invoice-repository.interface.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result, UniqueID } from "@rdx/core"; import { Invoice } from "../aggregates"; export interface IInvoiceRepository { diff --git a/modules/invoices/src/server/domain/services/invoice-service.interface.ts b/modules/invoices/src/server/domain/services/invoice-service.interface.ts index d0a3266..2584204 100644 --- a/modules/invoices/src/server/domain/services/invoice-service.interface.ts +++ b/modules/invoices/src/server/domain/services/invoice-service.interface.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result, UniqueID } from "@rdx/core"; import { IInvoiceProps, Invoice } from "../aggregates"; export interface IInvoiceService { diff --git a/modules/invoices/src/server/domain/services/invoice.service.ts b/modules/invoices/src/server/domain/services/invoice.service.ts index e8e097e..24b2170 100644 --- a/modules/invoices/src/server/domain/services/invoice.service.ts +++ b/modules/invoices/src/server/domain/services/invoice.service.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result, UniqueID } from "@rdx/core"; import { Transaction } from "sequelize"; import { IInvoiceProps, Invoice } from "../aggregates"; import { IInvoiceRepository } from "../repositories"; diff --git a/modules/invoices/src/server/domain/value-objects/invoice-address-type.ts b/modules/invoices/src/server/domain/value-objects/invoice-address-type.ts index 9f0f344..a709684 100644 --- a/modules/invoices/src/server/domain/value-objects/invoice-address-type.ts +++ b/modules/invoices/src/server/domain/value-objects/invoice-address-type.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; interface IInvoiceAddressTypeProps { value: string; diff --git a/modules/invoices/src/server/domain/value-objects/invoice-item-description.ts b/modules/invoices/src/server/domain/value-objects/invoice-item-description.ts index a0fc4a9..466583f 100644 --- a/modules/invoices/src/server/domain/value-objects/invoice-item-description.ts +++ b/modules/invoices/src/server/domain/value-objects/invoice-item-description.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Maybe, Result } from "@rdx/utils"; +import { Maybe, Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface IInvoiceItemDescriptionProps { diff --git a/modules/invoices/src/server/domain/value-objects/invoice-number.ts b/modules/invoices/src/server/domain/value-objects/invoice-number.ts index 8407b29..3c5cbf7 100644 --- a/modules/invoices/src/server/domain/value-objects/invoice-number.ts +++ b/modules/invoices/src/server/domain/value-objects/invoice-number.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface IInvoiceNumberProps { diff --git a/modules/invoices/src/server/domain/value-objects/invoice-serie.ts b/modules/invoices/src/server/domain/value-objects/invoice-serie.ts index db7176b..8aeb1dd 100644 --- a/modules/invoices/src/server/domain/value-objects/invoice-serie.ts +++ b/modules/invoices/src/server/domain/value-objects/invoice-serie.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Maybe, Result } from "@rdx/utils"; +import { Maybe, Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface IInvoiceSerieProps { diff --git a/modules/invoices/src/server/domain/value-objects/invoice-status.ts b/modules/invoices/src/server/domain/value-objects/invoice-status.ts index 9fc908c..54d83e3 100644 --- a/modules/invoices/src/server/domain/value-objects/invoice-status.ts +++ b/modules/invoices/src/server/domain/value-objects/invoice-status.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; interface IInvoiceStatusProps { value: string; diff --git a/modules/invoices/src/server/index.ts b/modules/invoices/src/server/index.ts index a1acc10..8a47932 100644 --- a/modules/invoices/src/server/index.ts +++ b/modules/invoices/src/server/index.ts @@ -1,7 +1,6 @@ /* import { getService } from "@apps/server/src/core/service-registry"; */ -import { logger } from "@rdx/logger"; -import { IModuleServer, ModuleParams } from "@rdx/modules"; -import { initInvoiceModel, invoicesRouter } from "./intrastructure"; +import { IModuleServer, ModuleParams, logger } from "@rdx/core"; +import { invoicesRouter, models } from "./intrastructure"; export const invoicesModule: IModuleServer = { metadata: { @@ -18,7 +17,7 @@ export const invoicesModule: IModuleServer = { const { database } = params; logger.info({ message: "🚀 Invoices module dependencies registered", label: "invoices" }); return { - models: [() => initInvoiceModel(database)], + models, services: { getInvoice: () => {}, /*...*/ diff --git a/modules/invoices/src/server/intrastructure/express/invoices.routes.ts b/modules/invoices/src/server/intrastructure/express/invoices.routes.ts index 766c46d..838e78b 100644 --- a/modules/invoices/src/server/intrastructure/express/invoices.routes.ts +++ b/modules/invoices/src/server/intrastructure/express/invoices.routes.ts @@ -1,8 +1,7 @@ -import { buildGetInvoiceController, buildListInvoicesController } from "../../presentation"; - -import { ModuleParams } from "@rdx/modules"; +import { ModuleParams } from "@rdx/core"; import { Application, NextFunction, Request, Response, Router } from "express"; import { Sequelize } from "sequelize"; +import { buildGetInvoiceController, buildListInvoicesController } from "../../presentation"; export const invoicesRouter = (params: ModuleParams) => { const { app, database, baseRoutePath } = params as { diff --git a/modules/invoices/src/server/intrastructure/mappers/invoice-item.mapper.ts b/modules/invoices/src/server/intrastructure/mappers/invoice-item.mapper.ts index 9efa44e..fa33251 100644 --- a/modules/invoices/src/server/intrastructure/mappers/invoice-item.mapper.ts +++ b/modules/invoices/src/server/intrastructure/mappers/invoice-item.mapper.ts @@ -1,7 +1,14 @@ import { Invoice, InvoiceItem, InvoiceItemDescription } from "#/server/domain"; -import { ISequelizeMapper, MapperParamsType, SequelizeMapper } from "@rdx/core"; -import { MoneyValue, Percentage, Quantity, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { + ISequelizeMapper, + MapperParamsType, + MoneyValue, + Percentage, + Quantity, + Result, + SequelizeMapper, + UniqueID, +} from "@rdx/core"; import { InferCreationAttributes } from "sequelize"; import { InvoiceItemCreationAttributes, InvoiceItemModel, InvoiceModel } from "../sequelize"; diff --git a/modules/invoices/src/server/intrastructure/mappers/invoice.mapper.ts b/modules/invoices/src/server/intrastructure/mappers/invoice.mapper.ts index 0385e37..4c1abd5 100644 --- a/modules/invoices/src/server/intrastructure/mappers/invoice.mapper.ts +++ b/modules/invoices/src/server/intrastructure/mappers/invoice.mapper.ts @@ -1,7 +1,12 @@ import { Invoice, InvoiceNumber, InvoiceSerie, InvoiceStatus } from "#/server/domain"; -import { ISequelizeMapper, MapperParamsType, SequelizeMapper } from "@rdx/core"; -import { UniqueID, UtcDate } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { + ISequelizeMapper, + MapperParamsType, + Result, + SequelizeMapper, + UniqueID, + UtcDate, +} from "@rdx/core"; import { InvoiceCreationAttributes, InvoiceModel } from "../sequelize"; import { InvoiceItemMapper } from "./invoice-item.mapper"; diff --git a/modules/invoices/src/server/intrastructure/sequelize/index.ts b/modules/invoices/src/server/intrastructure/sequelize/index.ts index 3725f32..7503273 100644 --- a/modules/invoices/src/server/intrastructure/sequelize/index.ts +++ b/modules/invoices/src/server/intrastructure/sequelize/index.ts @@ -1,11 +1,9 @@ -import { IInvoiceRepository } from "../../domain"; -import { invoiceRepository } from "./invoice.repository"; +import invoiceItemModelInit from "./invoice-item.model"; +import invoiceModelInit from "./invoice.model"; -export * from "./invoice-item.model"; +export * from "./invoice-item.model"; // exporta las clases, tipos export * from "./invoice.model"; - export * from "./invoice.repository"; -export const createInvoiceRepository = (): IInvoiceRepository => { - return invoiceRepository; -}; +// Array de inicializadores para que registerModels() lo use +export const models = [invoiceItemModelInit, invoiceModelInit]; diff --git a/modules/invoices/src/server/intrastructure/sequelize/invoice-item.model.ts b/modules/invoices/src/server/intrastructure/sequelize/invoice-item.model.ts index 198dc27..ae856aa 100644 --- a/modules/invoices/src/server/intrastructure/sequelize/invoice-item.model.ts +++ b/modules/invoices/src/server/intrastructure/sequelize/invoice-item.model.ts @@ -4,25 +4,20 @@ import { InferAttributes, InferCreationAttributes, Model, + NonAttribute, Sequelize, } from "sequelize"; +import { InvoiceModel } from "./invoice.model"; -export type InvoiceItemCreationAttributes = InferCreationAttributes & {}; +export type InvoiceItemCreationAttributes = InferCreationAttributes< + InvoiceItemModel, + { omit: "invoice" } +>; export class InvoiceItemModel extends Model< InferAttributes, - InvoiceItemCreationAttributes + InferCreationAttributes > { - static associate(connection: Sequelize) { - /*const { Invoice_Model, InvoiceItem_Model } = connection.models; - - InvoiceItem_Model.belongsTo(Invoice_Model, { - as: "invoice", - foreignKey: "invoice_id", - onDelete: "CASCADE", - });*/ - } - declare item_id: string; declare invoice_id: string; @@ -47,10 +42,20 @@ export class InvoiceItemModel extends Model< declare total_amount: CreationOptional; declare total_scale: CreationOptional; - //declare invoice?: NonAttribute; + declare invoice: NonAttribute; + + static associate(database: Sequelize) { + /*const { Invoice_Model, InvoiceItem_Model } = connection.models; + + InvoiceItem_Model.belongsTo(Invoice_Model, { + as: "invoice", + foreignKey: "invoice_id", + onDelete: "CASCADE", + });*/ + } } -export default (sequelize: Sequelize) => { +export default (database: Sequelize) => { InvoiceItemModel.init( { item_id: { @@ -153,7 +158,7 @@ export default (sequelize: Sequelize) => { }, }, { - sequelize, + sequelize: database, tableName: "invoice_items", defaultScope: {}, diff --git a/modules/invoices/src/server/intrastructure/sequelize/invoice.model.ts b/modules/invoices/src/server/intrastructure/sequelize/invoice.model.ts index 75d3284..1d4bb7c 100644 --- a/modules/invoices/src/server/intrastructure/sequelize/invoice.model.ts +++ b/modules/invoices/src/server/intrastructure/sequelize/invoice.model.ts @@ -13,17 +13,10 @@ export type InvoiceCreationAttributes = InferCreationAttributes, InvoiceCreationAttributes> { - static associate(connection: Sequelize) { - const { InvoiceModel, InvoiceItemModel } = connection.models; - - InvoiceModel.hasMany(InvoiceItemModel, { - as: "items", - foreignKey: "invoice_id", - onDelete: "CASCADE", - }); - } - +export class InvoiceModel extends Model< + InferAttributes, + InferCreationAttributes +> { declare id: string; declare invoice_status: string; @@ -42,14 +35,23 @@ export class InvoiceModel extends Model, InvoiceCr declare total_amount: CreationOptional; declare total_scale: CreationOptional; - // Relationships + // Relaciones declare items: NonAttribute; //declare customer: NonAttribute; + + static associate(database: Sequelize) { + const { InvoiceModel, InvoiceItemModel } = database.models; + + InvoiceModel.hasMany(InvoiceItemModel, { + as: "items", + foreignKey: "invoice_id", + onDelete: "CASCADE", + }); + } } -const initInvoiceModel = (sequelize: Sequelize) => { - return sequelize.define( - "InvoiceModel", +export default (database: Sequelize) => { + InvoiceModel.init( { id: { type: new DataTypes.UUID(), @@ -118,6 +120,7 @@ const initInvoiceModel = (sequelize: Sequelize) => { }, }, { + sequelize: database, tableName: "invoices", paranoid: true, // softs deletes @@ -136,6 +139,6 @@ const initInvoiceModel = (sequelize: Sequelize) => { scopes: {}, } ); -}; -export { initInvoiceModel }; + return InvoiceModel; +}; diff --git a/modules/invoices/src/server/intrastructure/sequelize/invoice.repository.ts b/modules/invoices/src/server/intrastructure/sequelize/invoice.repository.ts index a546b53..2fc1dbc 100644 --- a/modules/invoices/src/server/intrastructure/sequelize/invoice.repository.ts +++ b/modules/invoices/src/server/intrastructure/sequelize/invoice.repository.ts @@ -1,13 +1,11 @@ -import { SequelizeRepository } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; -import { Transaction } from "sequelize"; +import { Collection, logger, Result, SequelizeRepository, UniqueID } from "@rdx/core"; +import { Sequelize, Transaction } from "sequelize"; import { IInvoiceRepository, Invoice } from "../../domain"; -import { IInvoiceMapper, invoiceMapper } from "../mappers/invoice.mapper"; +import { IInvoiceMapper } from "../mappers/invoice.mapper"; import { InvoiceItemModel } from "./invoice-item.model"; import { InvoiceModel } from "./invoice.model"; -class InvoiceRepository extends SequelizeRepository implements IInvoiceRepository { +export class InvoiceRepository extends SequelizeRepository implements IInvoiceRepository { private readonly _mapper!: IInvoiceMapper; /** @@ -21,8 +19,8 @@ class InvoiceRepository extends SequelizeRepository implements IInvoice return null; } - constructor(mapper: IInvoiceMapper) { - super(); + constructor(database: Sequelize, mapper: IInvoiceMapper) { + super(database); this._mapper = mapper; } @@ -38,25 +36,28 @@ class InvoiceRepository extends SequelizeRepository implements IInvoice async findAll(transaction?: Transaction): Promise, Error>> { try { - const rawInvoices: any = await this._findAll( - InvoiceModel, - { - include: [ - { - model: InvoiceItemModel, - as: "items", - }, - ], - }, - transaction - ); + const rawInvoices = await InvoiceModel.findAll({ + include: [ + { + model: InvoiceItemModel, + as: "items", + }, + ], + transaction, + }); - if (!rawInvoices === true) { - return Result.fail(new Error("Invoice with email not exists")); - } + /*if (!rawInvoices === true) { + return Result.fail(new Error("Invoice not exists")); + }*/ + + logger.debug({ + message: "rawInvoices", + label: "InvoiceRepository", + meta: { data: rawInvoices }, + }); return this._mapper.mapArrayToDomain(rawInvoices); - } catch (error: any) { + } catch (error: unknown) { return this._handleDatabaseError(error, this._customErrorMapper); } } @@ -106,6 +107,3 @@ class InvoiceRepository extends SequelizeRepository implements IInvoice await this._save(InvoiceModel, invoice.id, invoiceData, {}, transaction); } } - -const invoiceRepository = new InvoiceRepository(invoiceMapper); -export { invoiceRepository }; diff --git a/modules/invoices/src/server/presentation/controllers/create-invoice/create-invoice.controller.ts b/modules/invoices/src/server/presentation/controllers/create-invoice/create-invoice.controller.ts index 06c1324..69d7407 100644 --- a/modules/invoices/src/server/presentation/controllers/create-invoice/create-invoice.controller.ts +++ b/modules/invoices/src/server/presentation/controllers/create-invoice/create-invoice.controller.ts @@ -1,5 +1,4 @@ -import { ExpressController } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; +import { ExpressController, UniqueID } from "@rdx/core"; import { CreateInvoiceUseCase } from "../../../application"; import { ICreateInvoiceRequestDTO } from "../../dto"; import { ICreateInvoicePresenter } from "./presenter"; diff --git a/modules/invoices/src/server/presentation/controllers/create-invoice/index.ts b/modules/invoices/src/server/presentation/controllers/create-invoice/index.ts index bdf1714..fbd4373 100644 --- a/modules/invoices/src/server/presentation/controllers/create-invoice/index.ts +++ b/modules/invoices/src/server/presentation/controllers/create-invoice/index.ts @@ -1,13 +1,14 @@ -import { CreateInvoiceUseCase } from "#/server/application"; import { InvoiceService } from "#/server/domain"; -import { invoiceRepository } from "#/server/intrastructure"; +import { invoiceMapper, InvoiceRepository } from "#/server/intrastructure"; import { SequelizeTransactionManager } from "@rdx/core"; import { Sequelize } from "sequelize"; +import { CreateInvoiceUseCase } from "../../../application"; import { CreateInvoiceController } from "./create-invoice.controller"; import { createInvoicePresenter } from "./presenter"; export const buildCreateInvoiceController = (database: Sequelize) => { const transactionManager = new SequelizeTransactionManager(database); + const invoiceRepository = new InvoiceRepository(database, invoiceMapper); const invoiceService = new InvoiceService(invoiceRepository); const useCase = new CreateInvoiceUseCase(invoiceService, transactionManager); diff --git a/modules/invoices/src/server/presentation/controllers/get-invoice/get-invoice.controller.ts b/modules/invoices/src/server/presentation/controllers/get-invoice/get-invoice.controller.ts index 624d366..b60f387 100644 --- a/modules/invoices/src/server/presentation/controllers/get-invoice/get-invoice.controller.ts +++ b/modules/invoices/src/server/presentation/controllers/get-invoice/get-invoice.controller.ts @@ -1,6 +1,5 @@ import { GetInvoiceUseCase } from "#/server/application"; -import { ExpressController } from "@rdx/core"; -import { UniqueID } from "@rdx/ddd-domain"; +import { ExpressController, UniqueID } from "@rdx/core"; import { IGetInvoicePresenter } from "./presenter"; export class GetInvoiceController extends ExpressController { diff --git a/modules/invoices/src/server/presentation/controllers/get-invoice/index.ts b/modules/invoices/src/server/presentation/controllers/get-invoice/index.ts index 6342a77..ab789dd 100644 --- a/modules/invoices/src/server/presentation/controllers/get-invoice/index.ts +++ b/modules/invoices/src/server/presentation/controllers/get-invoice/index.ts @@ -1,6 +1,6 @@ import { GetInvoiceUseCase } from "#/server/application"; import { InvoiceService } from "#/server/domain"; -import { invoiceRepository } from "#/server/intrastructure"; +import { invoiceMapper, InvoiceRepository } from "#/server/intrastructure"; import { SequelizeTransactionManager } from "@rdx/core"; import { Sequelize } from "sequelize"; import { GetInvoiceController } from "./get-invoice.controller"; @@ -8,6 +8,7 @@ import { getInvoicePresenter } from "./presenter"; export const buildGetInvoiceController = (database: Sequelize) => { const transactionManager = new SequelizeTransactionManager(database); + const invoiceRepository = new InvoiceRepository(database, invoiceMapper); const invoiceService = new InvoiceService(invoiceRepository); const useCase = new GetInvoiceUseCase(invoiceService, transactionManager); diff --git a/modules/invoices/src/server/presentation/controllers/get-invoice/presenter/InvoiceItem.presenter.ts.bak b/modules/invoices/src/server/presentation/controllers/get-invoice/presenter/InvoiceItem.presenter.ts.bak index 8599c3d..72d37f0 100644 --- a/modules/invoices/src/server/presentation/controllers/get-invoice/presenter/InvoiceItem.presenter.ts.bak +++ b/modules/invoices/src/server/presentation/controllers/get-invoice/presenter/InvoiceItem.presenter.ts.bak @@ -1,6 +1,6 @@ import { InvoiceItem } from "#/server/domain"; import { IInvoicingContext } from "#/server/intrastructure"; -import { Collection } from "@rdx/utils"; +import { Collection } from "@rdx/core"; export const invoiceItemPresenter = (items: Collection, context: IInvoicingContext) => items.totalCount > 0 diff --git a/modules/invoices/src/server/presentation/controllers/list-invoices/index.ts b/modules/invoices/src/server/presentation/controllers/list-invoices/index.ts index 862dce9..b495e7b 100644 --- a/modules/invoices/src/server/presentation/controllers/list-invoices/index.ts +++ b/modules/invoices/src/server/presentation/controllers/list-invoices/index.ts @@ -1,6 +1,6 @@ import { ListInvoicesUseCase } from "#/server/application"; import { InvoiceService } from "#/server/domain"; -import { invoiceRepository } from "#/server/intrastructure"; +import { invoiceMapper, InvoiceRepository } from "#/server/intrastructure"; import { SequelizeTransactionManager } from "@rdx/core"; import { Sequelize } from "sequelize"; import { ListInvoicesController } from "./list-invoices.controller"; @@ -8,6 +8,7 @@ import { listInvoicesPresenter } from "./presenter"; export const buildListInvoicesController = (database: Sequelize) => { const transactionManager = new SequelizeTransactionManager(database); + const invoiceRepository = new InvoiceRepository(database, invoiceMapper); const invoiceService = new InvoiceService(invoiceRepository); const useCase = new ListInvoicesUseCase(invoiceService, transactionManager); diff --git a/modules/invoices/src/server/presentation/controllers/list-invoices/presenter/list-invoices.presenter.ts b/modules/invoices/src/server/presentation/controllers/list-invoices/presenter/list-invoices.presenter.ts index 0726831..d61c327 100644 --- a/modules/invoices/src/server/presentation/controllers/list-invoices/presenter/list-invoices.presenter.ts +++ b/modules/invoices/src/server/presentation/controllers/list-invoices/presenter/list-invoices.presenter.ts @@ -1,6 +1,6 @@ import { Invoice } from "#/server/domain"; import { IListInvoicesResponseDTO } from "#/server/presentation/dto"; -import { Collection } from "@rdx/utils"; +import { Collection } from "@rdx/core"; export interface IListInvoicesPresenter { toDTO: (invoices: Collection) => IListInvoicesResponseDTO[]; diff --git a/modules/invoices/tsconfig.json b/modules/invoices/tsconfig.json index f31ea88..f37e5e8 100644 --- a/modules/invoices/tsconfig.json +++ b/modules/invoices/tsconfig.json @@ -1,10 +1,50 @@ { "extends": "@repo/typescript-config/base.json", "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", + /* Basic Options */ + "target": "ES2022" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": ["ES2022", "dom"] /* Specify library files to be included in the compilation. */, + + "allowJs": false /* Allow javascript files to be compiled. */, + "pretty": true, + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "preserve" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist/" /* Redirect output structure to the directory. */, + //"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + // "composite": true, /* Enable project compilation */ + "removeComments": true /* Do not emit comments to output. */, + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "skipLibCheck": false /* Skip type checking of declaration files. */, + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + "noUnusedLocals": false /* Report errors on unused locals. */, + "noUnusedParameters": false /* Report errors on unused parameters. */, + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + //"baseUrl": "./" /* Base directory to resolve non-absolute module names. */, + "rootDir": "./src", - "types": ["node", "jest"], + //"types": ["node", "jest"], "baseUrl": "./", "paths": { diff --git a/package.json b/package.json index 412aeb9..1b66ebd 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,18 @@ "version": "0.0.0", "private": true, "scripts": { + "dev:server": "pnpm run dev --filter './apps/server'", + "dev:server:watch": "nodemon --watch ./apps/server --ext ts --exec ts-node-dev -r tsconfig-paths/register ./apps/server/src/index.ts", + "dev": "turbo run dev", "build": "turbo run build", "clean": "turbo run clean && rm -rf node_modules", - "dev": "turbo run dev", "format": "prettier --write \"**/*.{ts,tsx,md}\"", "lint": "turbo run lint", "test": "turbo run test" }, "devDependencies": { "eslint": "^9.25.1", + "nodemon": "^3.1.10", "prettier": "^3.5.3", "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", @@ -20,5 +23,5 @@ "engines": { "node": ">=22.13.1" }, - "packageManager": "pnpm@10.9.0" + "packageManager": "pnpm@10.10.0" } diff --git a/packages/rdx-auth/package.json b/packages/rdx-auth/package.json index c2d26c5..3102397 100644 --- a/packages/rdx-auth/package.json +++ b/packages/rdx-auth/package.json @@ -10,7 +10,7 @@ ], "scripts": { "build": "tsc", - "clean": "rm -rf dist && rm -rf node_modules", + "clean": "rm -rf dist && rm -rf node_modules", "lint": "eslint src/", "lint:fix": "eslint src/ --fix", "typecheck": "tsc --noEmit", @@ -52,10 +52,6 @@ }, "dependencies": { "@rdx/core": "workspace:*", - "@rdx/ddd-domain": "workspace:*", - "@rdx/logger": "workspace:*", - "@rdx/modules": "workspace:*", - "@rdx/utils": "workspace:*", "bcrypt": "^5.1.1", "body-parser": "^2.2.0", "cors": "^2.8.5", @@ -75,7 +71,7 @@ "path": "^0.12.7", "reflect-metadata": "^0.2.2", "response-time": "^2.3.3", - "sequelize": "^6.37.7", + "sequelize": "^6.37.5", "zod": "^3.24.3" } } diff --git a/packages/rdx-auth/src/application/list-users/list-users.use-case.ts b/packages/rdx-auth/src/application/list-users/list-users.use-case.ts index 41c827c..f449e47 100644 --- a/packages/rdx-auth/src/application/list-users/list-users.use-case.ts +++ b/packages/rdx-auth/src/application/list-users/list-users.use-case.ts @@ -1,6 +1,5 @@ import { IUserService, User } from "@/domain"; -import { ITransactionManager } from "@rdx/core"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, ITransactionManager, Result } from "@rdx/core"; export class ListUsersUseCase { constructor( diff --git a/packages/rdx-auth/src/application/register/register.use-case.ts b/packages/rdx-auth/src/application/register/register.use-case.ts index 81d6a06..44cf461 100644 --- a/packages/rdx-auth/src/application/register/register.use-case.ts +++ b/packages/rdx-auth/src/application/register/register.use-case.ts @@ -1,7 +1,6 @@ import { IAuthService, RegisterData } from "@/domain"; -import { ITransactionManager } from "@rdx/core"; +import { ITransactionManager, Result } from "@rdx/core"; import { logger } from "@rdx/logger"; -import { Result } from "@rdx/utils"; export class RegisterUseCase { constructor( diff --git a/packages/rdx-auth/src/domain/aggregates/authenticated-user.ts b/packages/rdx-auth/src/domain/aggregates/authenticated-user.ts index e7c8270..63d9bbd 100644 --- a/packages/rdx-auth/src/domain/aggregates/authenticated-user.ts +++ b/packages/rdx-auth/src/domain/aggregates/authenticated-user.ts @@ -1,5 +1,4 @@ -import { AggregateRoot, EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { AggregateRoot, EmailAddress, Result, UniqueID } from "@rdx/core"; import { UserAuthenticatedEvent } from "../events"; import { HashPassword, PlainPassword, Username } from "../value-objects"; diff --git a/packages/rdx-auth/src/domain/aggregates/role.ts b/packages/rdx-auth/src/domain/aggregates/role.ts index 420c0d8..9a475c8 100644 --- a/packages/rdx-auth/src/domain/aggregates/role.ts +++ b/packages/rdx-auth/src/domain/aggregates/role.ts @@ -1,5 +1,4 @@ -import { AggregateRoot, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { AggregateRoot, Result, UniqueID } from "@rdx/core"; export interface IRoleProps {} diff --git a/packages/rdx-auth/src/domain/aggregates/user.ts b/packages/rdx-auth/src/domain/aggregates/user.ts index 7c64b4f..812da85 100644 --- a/packages/rdx-auth/src/domain/aggregates/user.ts +++ b/packages/rdx-auth/src/domain/aggregates/user.ts @@ -1,5 +1,4 @@ -import { AggregateRoot, EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { AggregateRoot, EmailAddress, Result, UniqueID } from "@rdx/core"; import { UserAuthenticatedEvent } from "../events"; import { Username } from "../value-objects"; diff --git a/packages/rdx-auth/src/domain/entities/jwt-payload.ts b/packages/rdx-auth/src/domain/entities/jwt-payload.ts index fb352e0..bd4e00b 100644 --- a/packages/rdx-auth/src/domain/entities/jwt-payload.ts +++ b/packages/rdx-auth/src/domain/entities/jwt-payload.ts @@ -1,5 +1,4 @@ -import { DomainEntity, EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, EmailAddress, Result, UniqueID } from "@rdx/core"; export interface IJWTPayloadProps { tabId: UniqueID; diff --git a/packages/rdx-auth/src/domain/entities/login-data.ts b/packages/rdx-auth/src/domain/entities/login-data.ts index 9c7fe32..92482dd 100644 --- a/packages/rdx-auth/src/domain/entities/login-data.ts +++ b/packages/rdx-auth/src/domain/entities/login-data.ts @@ -1,5 +1,4 @@ -import { DomainEntity, EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, EmailAddress, Result, UniqueID } from "@rdx/core"; import { PlainPassword } from "../value-objects"; export interface ILoginDataProps { diff --git a/packages/rdx-auth/src/domain/entities/logout-data.ts b/packages/rdx-auth/src/domain/entities/logout-data.ts index a8ce332..9687353 100644 --- a/packages/rdx-auth/src/domain/entities/logout-data.ts +++ b/packages/rdx-auth/src/domain/entities/logout-data.ts @@ -1,5 +1,4 @@ -import { DomainEntity, EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, EmailAddress, Result, UniqueID } from "@rdx/core"; export interface ILogoutDataProps { email: EmailAddress; diff --git a/packages/rdx-auth/src/domain/entities/register-data.ts b/packages/rdx-auth/src/domain/entities/register-data.ts index 209c6ca..deb1247 100644 --- a/packages/rdx-auth/src/domain/entities/register-data.ts +++ b/packages/rdx-auth/src/domain/entities/register-data.ts @@ -1,5 +1,4 @@ -import { DomainEntity, EmailAddress } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, EmailAddress, Result } from "@rdx/core"; import { HashPassword, Username } from "../value-objects"; export interface IRegisterDataProps { diff --git a/packages/rdx-auth/src/domain/entities/tab-context.ts b/packages/rdx-auth/src/domain/entities/tab-context.ts index 4728d44..0334d07 100644 --- a/packages/rdx-auth/src/domain/entities/tab-context.ts +++ b/packages/rdx-auth/src/domain/entities/tab-context.ts @@ -1,5 +1,4 @@ -import { DomainEntity, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { DomainEntity, Result, UniqueID } from "@rdx/core"; export interface ITabContextProps { tabId: UniqueID; diff --git a/packages/rdx-auth/src/domain/events/user-authenticated.event.ts b/packages/rdx-auth/src/domain/events/user-authenticated.event.ts index 7bfa19b..b1e3560 100644 --- a/packages/rdx-auth/src/domain/events/user-authenticated.event.ts +++ b/packages/rdx-auth/src/domain/events/user-authenticated.event.ts @@ -1,4 +1,4 @@ -import { IDomainEvent, UniqueID } from "@rdx/ddd-domain"; +import { IDomainEvent, UniqueID } from "@rdx/core"; export class UserAuthenticatedEvent implements IDomainEvent { public readonly eventName = "UserAuthenticated"; diff --git a/packages/rdx-auth/src/domain/repositories/authenticated-user-repository.interface.ts b/packages/rdx-auth/src/domain/repositories/authenticated-user-repository.interface.ts index f36d63b..30b33d7 100644 --- a/packages/rdx-auth/src/domain/repositories/authenticated-user-repository.interface.ts +++ b/packages/rdx-auth/src/domain/repositories/authenticated-user-repository.interface.ts @@ -1,5 +1,4 @@ -import { EmailAddress } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Result } from "@rdx/core"; import { AuthenticatedUser } from "../aggregates"; import { Username } from "../value-objects"; diff --git a/packages/rdx-auth/src/domain/repositories/tab-context-repository.interface.ts b/packages/rdx-auth/src/domain/repositories/tab-context-repository.interface.ts index fb2c660..b652e0c 100644 --- a/packages/rdx-auth/src/domain/repositories/tab-context-repository.interface.ts +++ b/packages/rdx-auth/src/domain/repositories/tab-context-repository.interface.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, UniqueID } from "@rdx/core"; import { Transaction } from "sequelize"; import { TabContext } from "../entities"; diff --git a/packages/rdx-auth/src/domain/repositories/user-repository.interface.ts b/packages/rdx-auth/src/domain/repositories/user-repository.interface.ts index b0dafb8..1ee8557 100644 --- a/packages/rdx-auth/src/domain/repositories/user-repository.interface.ts +++ b/packages/rdx-auth/src/domain/repositories/user-repository.interface.ts @@ -1,5 +1,4 @@ -import { EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, EmailAddress, Result, UniqueID } from "@rdx/core"; import { User } from "../aggregates"; export interface IUserRepository { diff --git a/packages/rdx-auth/src/domain/services/auth-service.interface.ts b/packages/rdx-auth/src/domain/services/auth-service.interface.ts index 262887e..f4d9888 100644 --- a/packages/rdx-auth/src/domain/services/auth-service.interface.ts +++ b/packages/rdx-auth/src/domain/services/auth-service.interface.ts @@ -1,5 +1,4 @@ -import { EmailAddress } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Result } from "@rdx/core"; import { AuthenticatedUser, IJWTPayload, diff --git a/packages/rdx-auth/src/domain/services/auth.service.ts b/packages/rdx-auth/src/domain/services/auth.service.ts index 6d6b88a..59faa4c 100644 --- a/packages/rdx-auth/src/domain/services/auth.service.ts +++ b/packages/rdx-auth/src/domain/services/auth.service.ts @@ -1,5 +1,4 @@ -import { EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Result, UniqueID } from "@rdx/core"; import { AuthenticatedUser, IAuthenticatedUserRepository, diff --git a/packages/rdx-auth/src/domain/services/tab-context-service.interface.ts b/packages/rdx-auth/src/domain/services/tab-context-service.interface.ts index 4fff4f7..9c76aa9 100644 --- a/packages/rdx-auth/src/domain/services/tab-context-service.interface.ts +++ b/packages/rdx-auth/src/domain/services/tab-context-service.interface.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, UniqueID } from "@rdx/core"; import { TabContext } from "../entities"; export interface ITabContextService { diff --git a/packages/rdx-auth/src/domain/services/tab-context.service.ts b/packages/rdx-auth/src/domain/services/tab-context.service.ts index d35b98a..ac16695 100644 --- a/packages/rdx-auth/src/domain/services/tab-context.service.ts +++ b/packages/rdx-auth/src/domain/services/tab-context.service.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, UniqueID } from "@rdx/core"; import { TabContext } from "../entities"; import { ITabContextRepository } from "../repositories"; import { ITabContextService } from "./tab-context-service.interface"; diff --git a/packages/rdx-auth/src/domain/services/user-service.interface.ts b/packages/rdx-auth/src/domain/services/user-service.interface.ts index ebeb202..3f2d3bd 100644 --- a/packages/rdx-auth/src/domain/services/user-service.interface.ts +++ b/packages/rdx-auth/src/domain/services/user-service.interface.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result, UniqueID } from "@rdx/core"; import { User } from "../aggregates"; export interface IUserService { diff --git a/packages/rdx-auth/src/domain/services/user.service.ts b/packages/rdx-auth/src/domain/services/user.service.ts index 56a7055..3dbfa29 100644 --- a/packages/rdx-auth/src/domain/services/user.service.ts +++ b/packages/rdx-auth/src/domain/services/user.service.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, Result, UniqueID } from "@rdx/core"; import { IUserRepository, User } from ".."; import { IUserService } from "./user-service.interface"; diff --git a/packages/rdx-auth/src/domain/value-objects/auth-user-roles.ts b/packages/rdx-auth/src/domain/value-objects/auth-user-roles.ts index ce46b0c..04b1fd1 100644 --- a/packages/rdx-auth/src/domain/value-objects/auth-user-roles.ts +++ b/packages/rdx-auth/src/domain/value-objects/auth-user-roles.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import { z } from "zod"; const RoleSchema = z.enum(["Admin", "User", "Manager", "Editor"]); diff --git a/packages/rdx-auth/src/domain/value-objects/hash-password.ts b/packages/rdx-auth/src/domain/value-objects/hash-password.ts index f5a5e95..376e08e 100644 --- a/packages/rdx-auth/src/domain/value-objects/hash-password.ts +++ b/packages/rdx-auth/src/domain/value-objects/hash-password.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import bcrypt from "bcrypt"; import { z } from "zod"; diff --git a/packages/rdx-auth/src/domain/value-objects/plain-password.ts b/packages/rdx-auth/src/domain/value-objects/plain-password.ts index ce01740..76d2cb3 100644 --- a/packages/rdx-auth/src/domain/value-objects/plain-password.ts +++ b/packages/rdx-auth/src/domain/value-objects/plain-password.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface PlainPasswordProps { diff --git a/packages/rdx-auth/src/domain/value-objects/token.ts b/packages/rdx-auth/src/domain/value-objects/token.ts index 1d7b48b..9bda34b 100644 --- a/packages/rdx-auth/src/domain/value-objects/token.ts +++ b/packages/rdx-auth/src/domain/value-objects/token.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface TokenProps { diff --git a/packages/rdx-auth/src/domain/value-objects/username.ts b/packages/rdx-auth/src/domain/value-objects/username.ts index 91b7c91..4c0c19e 100644 --- a/packages/rdx-auth/src/domain/value-objects/username.ts +++ b/packages/rdx-auth/src/domain/value-objects/username.ts @@ -1,5 +1,4 @@ -import { ValueObject } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, ValueObject } from "@rdx/core"; import { z } from "zod"; interface UsernameProps { diff --git a/packages/rdx-auth/src/infraestructure/mappers/tab-context.mapper.ts b/packages/rdx-auth/src/infraestructure/mappers/tab-context.mapper.ts index b137620..ff7cdae 100644 --- a/packages/rdx-auth/src/infraestructure/mappers/tab-context.mapper.ts +++ b/packages/rdx-auth/src/infraestructure/mappers/tab-context.mapper.ts @@ -1,5 +1,4 @@ -import { UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { Result, UniqueID } from "@rdx/core"; import { ISequelizeMapper, MapperParamsType, SequelizeMapper } from "../../../common"; import { TabContext } from "../../domain"; import { TabContextCreationAttributes, TabContextModel } from "../sequelize"; diff --git a/packages/rdx-auth/src/infraestructure/mappers/user.mapper.ts b/packages/rdx-auth/src/infraestructure/mappers/user.mapper.ts index 9f4b59b..ffd59c1 100644 --- a/packages/rdx-auth/src/infraestructure/mappers/user.mapper.ts +++ b/packages/rdx-auth/src/infraestructure/mappers/user.mapper.ts @@ -1,5 +1,4 @@ -import { EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Result, UniqueID } from "@rdx/core"; import { ISequelizeMapper, MapperParamsType, SequelizeMapper } from "../../../common"; import { User, Username } from "../../domain"; import { UserCreationAttributes, UserModel } from "../sequelize"; diff --git a/packages/rdx-auth/src/infraestructure/middleware/passport-auth.middleware.ts b/packages/rdx-auth/src/infraestructure/middleware/passport-auth.middleware.ts index 229c708..34ed84d 100644 --- a/packages/rdx-auth/src/infraestructure/middleware/passport-auth.middleware.ts +++ b/packages/rdx-auth/src/infraestructure/middleware/passport-auth.middleware.ts @@ -1,5 +1,5 @@ //import { authProvider } from "@contexts/auth/infraestructure"; -import { UniqueID } from "@rdx/ddd-domain"; +import { UniqueID } from "@rdx/core"; import { NextFunction, Response } from "express"; import { ApiError, ExpressController } from "../../../common"; import { AuthenticatedRequest } from "../../../common/presentation/express/types"; diff --git a/packages/rdx-auth/src/infraestructure/sequelize/authenticated-user.repository.ts b/packages/rdx-auth/src/infraestructure/sequelize/authenticated-user.repository.ts index 0e7576f..815f017 100644 --- a/packages/rdx-auth/src/infraestructure/sequelize/authenticated-user.repository.ts +++ b/packages/rdx-auth/src/infraestructure/sequelize/authenticated-user.repository.ts @@ -1,6 +1,4 @@ -import { SequelizeRepository } from "@rdx/core"; -import { EmailAddress } from "@rdx/ddd-domain"; -import { Result } from "@rdx/utils"; +import { EmailAddress, Result, SequelizeRepository } from "@rdx/core"; import { Transaction } from "sequelize"; import { AuthenticatedUser, IAuthenticatedUserRepository, Username } from "../../domain"; import { authenticatedUserMapper, IAuthenticatedUserMapper } from "../mappers"; diff --git a/packages/rdx-auth/src/infraestructure/sequelize/user.repository.ts b/packages/rdx-auth/src/infraestructure/sequelize/user.repository.ts index 8a685d3..8e3f6d0 100644 --- a/packages/rdx-auth/src/infraestructure/sequelize/user.repository.ts +++ b/packages/rdx-auth/src/infraestructure/sequelize/user.repository.ts @@ -1,7 +1,5 @@ import { IUserRepository, User } from "@/domain"; -import { SequelizeRepository } from "@rdx/core"; -import { EmailAddress, UniqueID } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; +import { Collection, EmailAddress, Result, SequelizeRepository, UniqueID } from "@rdx/core"; import { Transaction } from "sequelize"; import { IUserMapper, userMapper } from "../mappers"; import { UserModel } from "./user.model"; diff --git a/packages/rdx-auth/src/presentation/controllers/listUsers/list-users.presenter.ts b/packages/rdx-auth/src/presentation/controllers/listUsers/list-users.presenter.ts index 22f6212..168dfd6 100644 --- a/packages/rdx-auth/src/presentation/controllers/listUsers/list-users.presenter.ts +++ b/packages/rdx-auth/src/presentation/controllers/listUsers/list-users.presenter.ts @@ -1,4 +1,4 @@ -import { Collection, ensureString } from "@rdx/utils"; +import { Collection, ensureString } from "@rdx/core"; import { User } from "../../../domain"; import { IListUsersResponseDTO } from "../../dto"; diff --git a/packages/rdx-core/package.json b/packages/rdx-core/package.json index 663b9dd..8c2aec0 100644 --- a/packages/rdx-core/package.json +++ b/packages/rdx-core/package.json @@ -42,6 +42,8 @@ "@types/supertest": "^6.0.3", "@typescript-eslint/eslint-plugin": "^8.31.0", "@typescript-eslint/parser": "^8.31.0", + "@types/winston": "^2.4.4", + "@types/react": "^19.1.2", "esbuild": "^0.25.3", "esbuild-register": "^3.6.0", "eslint": "^9.25.1", @@ -51,10 +53,6 @@ "typescript": "5.8.3" }, "dependencies": { - "@rdx/ddd-domain": "workspace:*", - "@rdx/logger": "workspace:*", - "@rdx/modules": "workspace:*", - "@rdx/utils": "workspace:*", "bcrypt": "^5.1.1", "body-parser": "^2.2.0", "cors": "^2.8.5", @@ -74,7 +72,14 @@ "path": "^0.12.7", "reflect-metadata": "^0.2.2", "response-time": "^2.3.3", - "sequelize": "^6.37.7", - "zod": "^3.24.3" + "zod": "^3.24.3", + "cls-rtracer": "^2.6.3", + "winston": "^3.17.0", + "winston-daily-rotate-file": "^5.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "sequelize": "^6.37.5", + "shallow-equal-object": "^1.1.1", + "uuid": "^11.1.0" } } diff --git a/packages/rdx-ddd-domain/src/aggregate-root-repository.interface.ts b/packages/rdx-core/src/domain/aggregate-root-repository.interface.ts similarity index 100% rename from packages/rdx-ddd-domain/src/aggregate-root-repository.interface.ts rename to packages/rdx-core/src/domain/aggregate-root-repository.interface.ts diff --git a/packages/rdx-ddd-domain/src/aggregate-root.ts b/packages/rdx-core/src/domain/aggregate-root.ts similarity index 96% rename from packages/rdx-ddd-domain/src/aggregate-root.ts rename to packages/rdx-core/src/domain/aggregate-root.ts index f27a50b..7d23af6 100644 --- a/packages/rdx-ddd-domain/src/aggregate-root.ts +++ b/packages/rdx-core/src/domain/aggregate-root.ts @@ -1,4 +1,4 @@ -import { logger } from "@rdx/logger"; +import { logger } from "../infrastructure"; import { DomainEntity } from "./domain-entity"; import { IDomainEvent } from "./events"; diff --git a/packages/rdx-ddd-domain/src/domain-entity.ts b/packages/rdx-core/src/domain/domain-entity.ts similarity index 100% rename from packages/rdx-ddd-domain/src/domain-entity.ts rename to packages/rdx-core/src/domain/domain-entity.ts diff --git a/packages/rdx-ddd-domain/src/events/domain-event-handle.ts b/packages/rdx-core/src/domain/events/domain-event-handle.ts similarity index 100% rename from packages/rdx-ddd-domain/src/events/domain-event-handle.ts rename to packages/rdx-core/src/domain/events/domain-event-handle.ts diff --git a/packages/rdx-ddd-domain/src/events/domain-event.interface.ts b/packages/rdx-core/src/domain/events/domain-event.interface.ts similarity index 100% rename from packages/rdx-ddd-domain/src/events/domain-event.interface.ts rename to packages/rdx-core/src/domain/events/domain-event.interface.ts diff --git a/packages/rdx-ddd-domain/src/events/domain-event.ts b/packages/rdx-core/src/domain/events/domain-event.ts similarity index 100% rename from packages/rdx-ddd-domain/src/events/domain-event.ts rename to packages/rdx-core/src/domain/events/domain-event.ts diff --git a/packages/rdx-ddd-domain/src/events/index.ts b/packages/rdx-core/src/domain/events/index.ts similarity index 100% rename from packages/rdx-ddd-domain/src/events/index.ts rename to packages/rdx-core/src/domain/events/index.ts diff --git a/packages/rdx-ddd-domain/src/index.ts b/packages/rdx-core/src/domain/index.ts similarity index 100% rename from packages/rdx-ddd-domain/src/index.ts rename to packages/rdx-core/src/domain/index.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/email-address.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/email-address.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/email-address.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/email-address.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/money-value.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/money-value.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/money-value.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/money-value.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/name.spec.ts b/packages/rdx-core/src/domain/value-objects/__tests__/name.spec.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/name.spec.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/name.spec.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/percentage.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/percentage.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/percentage.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/percentage.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/phone-number.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/phone-number.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/phone-number.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/phone-number.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/postal-address.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/postal-address.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/postal-address.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/postal-address.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/quantity.spec.ts b/packages/rdx-core/src/domain/value-objects/__tests__/quantity.spec.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/quantity.spec.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/quantity.spec.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/slug.spec.ts b/packages/rdx-core/src/domain/value-objects/__tests__/slug.spec.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/slug.spec.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/slug.spec.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/tin-number.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/tin-number.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/tin-number.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/tin-number.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/unique-id.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/unique-id.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/unique-id.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/unique-id.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/utc-date.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/utc-date.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/utc-date.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/utc-date.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/__tests__/value-objects.test.ts b/packages/rdx-core/src/domain/value-objects/__tests__/value-objects.test.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/__tests__/value-objects.test.ts rename to packages/rdx-core/src/domain/value-objects/__tests__/value-objects.test.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/email-address.ts b/packages/rdx-core/src/domain/value-objects/email-address.ts similarity index 96% rename from packages/rdx-ddd-domain/src/value-objects/email-address.ts rename to packages/rdx-core/src/domain/value-objects/email-address.ts index 9de02b7..eb09e46 100644 --- a/packages/rdx-ddd-domain/src/value-objects/email-address.ts +++ b/packages/rdx-core/src/domain/value-objects/email-address.ts @@ -1,5 +1,5 @@ -import { Result, Maybe } from "@rdx/utils"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface EmailAddressProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/index.ts b/packages/rdx-core/src/domain/value-objects/index.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/index.ts rename to packages/rdx-core/src/domain/value-objects/index.ts diff --git a/packages/rdx-ddd-domain/src/value-objects/money-value.ts b/packages/rdx-core/src/domain/value-objects/money-value.ts similarity index 99% rename from packages/rdx-ddd-domain/src/value-objects/money-value.ts rename to packages/rdx-core/src/domain/value-objects/money-value.ts index a86bb44..2307a09 100644 --- a/packages/rdx-ddd-domain/src/value-objects/money-value.ts +++ b/packages/rdx-core/src/domain/value-objects/money-value.ts @@ -1,5 +1,5 @@ -import { Result } from "@rdx/utils"; import DineroFactory, { Currency, Dinero } from "dinero.js"; +import { Result } from "../../helpers"; import { Percentage } from "./percentage"; import { Quantity } from "./quantity"; import { ValueObject } from "./value-object"; diff --git a/packages/rdx-ddd-domain/src/value-objects/name.ts b/packages/rdx-core/src/domain/value-objects/name.ts similarity index 97% rename from packages/rdx-ddd-domain/src/value-objects/name.ts rename to packages/rdx-core/src/domain/value-objects/name.ts index bd2ab17..466b7ac 100644 --- a/packages/rdx-ddd-domain/src/value-objects/name.ts +++ b/packages/rdx-core/src/domain/value-objects/name.ts @@ -1,5 +1,5 @@ -import { Maybe, Result } from "@rdx/utils"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface INameProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/percentage.ts b/packages/rdx-core/src/domain/value-objects/percentage.ts similarity index 98% rename from packages/rdx-ddd-domain/src/value-objects/percentage.ts rename to packages/rdx-core/src/domain/value-objects/percentage.ts index a69f5d6..dc624ec 100644 --- a/packages/rdx-ddd-domain/src/value-objects/percentage.ts +++ b/packages/rdx-core/src/domain/value-objects/percentage.ts @@ -1,5 +1,5 @@ -import { Result } from "@rdx/utils"; import { z } from "zod"; +import { Result } from "../../helpers"; import { ValueObject } from "./value-object"; const DEFAULT_SCALE = 2; diff --git a/packages/rdx-ddd-domain/src/value-objects/phone-number.ts b/packages/rdx-core/src/domain/value-objects/phone-number.ts similarity index 97% rename from packages/rdx-ddd-domain/src/value-objects/phone-number.ts rename to packages/rdx-core/src/domain/value-objects/phone-number.ts index d71755a..c171f2d 100644 --- a/packages/rdx-ddd-domain/src/value-objects/phone-number.ts +++ b/packages/rdx-core/src/domain/value-objects/phone-number.ts @@ -1,6 +1,6 @@ -import { Maybe, Result } from "@rdx/utils"; import { isValidPhoneNumber, parsePhoneNumberWithError } from "libphonenumber-js"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface PhoneNumberProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/postal-address.ts b/packages/rdx-core/src/domain/value-objects/postal-address.ts similarity index 98% rename from packages/rdx-ddd-domain/src/value-objects/postal-address.ts rename to packages/rdx-core/src/domain/value-objects/postal-address.ts index 3ebfc57..acc36ef 100644 --- a/packages/rdx-ddd-domain/src/value-objects/postal-address.ts +++ b/packages/rdx-core/src/domain/value-objects/postal-address.ts @@ -1,5 +1,5 @@ -import { Maybe, Result } from "@rdx/utils"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; // 📌 Validaciones usando `zod` diff --git a/packages/rdx-ddd-domain/src/value-objects/quantity.ts b/packages/rdx-core/src/domain/value-objects/quantity.ts similarity index 98% rename from packages/rdx-ddd-domain/src/value-objects/quantity.ts rename to packages/rdx-core/src/domain/value-objects/quantity.ts index 906aed6..4e27c13 100644 --- a/packages/rdx-ddd-domain/src/value-objects/quantity.ts +++ b/packages/rdx-core/src/domain/value-objects/quantity.ts @@ -1,5 +1,5 @@ -import { Result } from "@rdx/utils"; import { z } from "zod"; +import { Result } from "../../helpers"; import { ValueObject } from "./value-object"; const DEFAULT_SCALE = 2; diff --git a/packages/rdx-ddd-domain/src/value-objects/slug.ts b/packages/rdx-core/src/domain/value-objects/slug.ts similarity index 96% rename from packages/rdx-ddd-domain/src/value-objects/slug.ts rename to packages/rdx-core/src/domain/value-objects/slug.ts index 355aa9a..0831e1d 100644 --- a/packages/rdx-ddd-domain/src/value-objects/slug.ts +++ b/packages/rdx-core/src/domain/value-objects/slug.ts @@ -1,5 +1,5 @@ -import { Maybe, Result } from "@rdx/utils"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface SlugProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/tin-number.ts b/packages/rdx-core/src/domain/value-objects/tin-number.ts similarity index 96% rename from packages/rdx-ddd-domain/src/value-objects/tin-number.ts rename to packages/rdx-core/src/domain/value-objects/tin-number.ts index 6202915..0041cc3 100644 --- a/packages/rdx-ddd-domain/src/value-objects/tin-number.ts +++ b/packages/rdx-core/src/domain/value-objects/tin-number.ts @@ -1,5 +1,5 @@ -import { Maybe, Result } from "@rdx/utils"; import { z } from "zod"; +import { Maybe, Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface TINNumberProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/unique-id.ts b/packages/rdx-core/src/domain/value-objects/unique-id.ts similarity index 96% rename from packages/rdx-ddd-domain/src/value-objects/unique-id.ts rename to packages/rdx-core/src/domain/value-objects/unique-id.ts index f730940..d1d31a5 100644 --- a/packages/rdx-ddd-domain/src/value-objects/unique-id.ts +++ b/packages/rdx-core/src/domain/value-objects/unique-id.ts @@ -1,6 +1,6 @@ -import { Result } from "@rdx/utils"; import { v4 as uuidv4 } from "uuid"; import { z } from "zod"; +import { Result } from "../../helpers"; import { ValueObject } from "./value-object"; export class UniqueID extends ValueObject { diff --git a/packages/rdx-ddd-domain/src/value-objects/utc-date.ts b/packages/rdx-core/src/domain/value-objects/utc-date.ts similarity index 98% rename from packages/rdx-ddd-domain/src/value-objects/utc-date.ts rename to packages/rdx-core/src/domain/value-objects/utc-date.ts index 0832d33..470d0fa 100644 --- a/packages/rdx-ddd-domain/src/value-objects/utc-date.ts +++ b/packages/rdx-core/src/domain/value-objects/utc-date.ts @@ -1,5 +1,5 @@ -import { Result } from "@rdx/utils"; import { z } from "zod"; +import { Result } from "../../helpers"; import { ValueObject } from "./value-object"; interface IUtcDateProps { diff --git a/packages/rdx-ddd-domain/src/value-objects/value-object.ts b/packages/rdx-core/src/domain/value-objects/value-object.ts similarity index 100% rename from packages/rdx-ddd-domain/src/value-objects/value-object.ts rename to packages/rdx-core/src/domain/value-objects/value-object.ts diff --git a/packages/rdx-utils/src/helpers/collection.ts b/packages/rdx-core/src/helpers/collection.ts similarity index 100% rename from packages/rdx-utils/src/helpers/collection.ts rename to packages/rdx-core/src/helpers/collection.ts diff --git a/packages/rdx-utils/src/helpers/index.ts b/packages/rdx-core/src/helpers/index.ts similarity index 79% rename from packages/rdx-utils/src/helpers/index.ts rename to packages/rdx-core/src/helpers/index.ts index 5d1da0b..4626021 100644 --- a/packages/rdx-utils/src/helpers/index.ts +++ b/packages/rdx-core/src/helpers/index.ts @@ -1,4 +1,5 @@ export * from "./collection"; export * from "./maybe"; +export * from "./modules"; export * from "./result"; export * from "./utils"; diff --git a/packages/rdx-utils/src/helpers/maybe.ts b/packages/rdx-core/src/helpers/maybe.ts similarity index 100% rename from packages/rdx-utils/src/helpers/maybe.ts rename to packages/rdx-core/src/helpers/maybe.ts diff --git a/packages/rdx-modules/src/index.ts b/packages/rdx-core/src/helpers/modules/index.ts similarity index 100% rename from packages/rdx-modules/src/index.ts rename to packages/rdx-core/src/helpers/modules/index.ts diff --git a/packages/rdx-modules/src/module-client.interface.ts b/packages/rdx-core/src/helpers/modules/module-client.interface.ts similarity index 100% rename from packages/rdx-modules/src/module-client.interface.ts rename to packages/rdx-core/src/helpers/modules/module-client.interface.ts diff --git a/packages/rdx-modules/src/module-server.interface.ts b/packages/rdx-core/src/helpers/modules/module-server.interface.ts similarity index 100% rename from packages/rdx-modules/src/module-server.interface.ts rename to packages/rdx-core/src/helpers/modules/module-server.interface.ts diff --git a/packages/rdx-modules/src/types.ts b/packages/rdx-core/src/helpers/modules/types.ts similarity index 50% rename from packages/rdx-modules/src/types.ts rename to packages/rdx-core/src/helpers/modules/types.ts index dc65d52..733af53 100644 --- a/packages/rdx-modules/src/types.ts +++ b/packages/rdx-core/src/helpers/modules/types.ts @@ -1,10 +1,17 @@ // Contiene tipos comunes entre cliente y servidor +import { Model, ModelStatic, Sequelize } from "sequelize"; + +export interface SequelizeModel extends Model { + initialize: (sequelize: Sequelize) => void; + associate?: (models: { [key: string]: ModelStatic }) => void; +} + export type ModuleParams = { [key: string]: any; }; -export type ModelInitializer = () => any; +//export type ModelInitializer = typeof SequelizeModel; export interface ModuleMetadata { name: string; @@ -14,6 +21,6 @@ export interface ModuleMetadata { } export interface ModuleDependencies { - models?: ModelInitializer[]; + models?: any[]; services?: { [key: string]: any }; } diff --git a/packages/rdx-utils/src/helpers/result.ts b/packages/rdx-core/src/helpers/result.ts similarity index 100% rename from packages/rdx-utils/src/helpers/result.ts rename to packages/rdx-core/src/helpers/result.ts diff --git a/packages/rdx-utils/src/helpers/utils.ts b/packages/rdx-core/src/helpers/utils.ts similarity index 100% rename from packages/rdx-utils/src/helpers/utils.ts rename to packages/rdx-core/src/helpers/utils.ts diff --git a/packages/rdx-core/src/index.ts b/packages/rdx-core/src/index.ts index 818ca8c..b230b39 100644 --- a/packages/rdx-core/src/index.ts +++ b/packages/rdx-core/src/index.ts @@ -1,2 +1,4 @@ +export * from "./domain"; +export * from "./helpers"; export * from "./infrastructure"; export * from "./presentation"; diff --git a/packages/rdx-core/src/infrastructure/index.ts b/packages/rdx-core/src/infrastructure/index.ts index 7b38a8f..25ad94d 100644 --- a/packages/rdx-core/src/infrastructure/index.ts +++ b/packages/rdx-core/src/infrastructure/index.ts @@ -1,2 +1,3 @@ export * from "./database"; +export * from "./logger"; export * from "./sequelize"; diff --git a/packages/rdx-logger/src/index.ts b/packages/rdx-core/src/infrastructure/logger.ts similarity index 78% rename from packages/rdx-logger/src/index.ts rename to packages/rdx-core/src/infrastructure/logger.ts index a3e24f1..84ddf94 100644 --- a/packages/rdx-logger/src/index.ts +++ b/packages/rdx-core/src/infrastructure/logger.ts @@ -12,30 +12,39 @@ const initLogger = () => { const isProduction = process.env.NODE_ENV === "production"; const consoleFormat = format.combine( + format.errors({ stack: !isProduction }), format.colorize(), format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), format.align(), format.splat(), - format.errors({ stack: !isProduction }), format.printf((info) => { + const { level, timestamp, stack, label, meta, error } = info; const rid = rTracer.id(); + let message = info.message; - if (typeof info.message === "object") { - info.message = JSON.stringify(info.message, null, 3); + if (typeof message === "object") { + message = JSON.stringify(message, null, 3); } - let out = - isProduction && rid - ? `${info.timestamp} [request-id:${rid}] - ${info.level}: [${info.label}]: ${info.message}` - : `${info.timestamp} - ${info.level}: [${info.label}]: ${info.message}`; + let out = `${timestamp}`; - /*if (info.metadata["error"]) { - out = `${out} ${info.metadata.error}`; - if (info.metadata?.error?.stack) { - out = `${out} ${info.metadata.error.stack}`; - } - }*/ + if (rid) { + out = `${out} [request-id:${rid}]`; + } + + out = `${out} - ${level}: [${label}]: ${message}`; + if (stack) { + out = `${out} - ${stack}`; + } + + if (meta) { + out = `${out} - ${JSON.stringify(meta, null, 3)}`; + } + + if (error) { + out = `${out} - ${JSON.stringify(error, null, 3)}`; + } return out; }) diff --git a/packages/rdx-core/src/infrastructure/sequelize/sequelize-mapper.ts b/packages/rdx-core/src/infrastructure/sequelize/sequelize-mapper.ts index f120193..0d80006 100644 --- a/packages/rdx-core/src/infrastructure/sequelize/sequelize-mapper.ts +++ b/packages/rdx-core/src/infrastructure/sequelize/sequelize-mapper.ts @@ -1,6 +1,6 @@ -import { DomainEntity } from "@rdx/ddd-domain"; -import { Collection, Result } from "@rdx/utils"; import { Model } from "sequelize"; +import { DomainEntity } from "../../domain"; +import { Collection, Result } from "../../helpers"; export type MapperParamsType = Record; diff --git a/packages/rdx-core/src/infrastructure/sequelize/sequelize-repository.ts b/packages/rdx-core/src/infrastructure/sequelize/sequelize-repository.ts index 57337df..8083035 100644 --- a/packages/rdx-core/src/infrastructure/sequelize/sequelize-repository.ts +++ b/packages/rdx-core/src/infrastructure/sequelize/sequelize-repository.ts @@ -1,9 +1,15 @@ -import { IAggregateRootRepository, UniqueID } from "@rdx/ddd-domain"; -import { logger } from "@rdx/logger"; -import { Result } from "@rdx/utils"; -import { ModelDefined, Transaction } from "sequelize"; +import { ModelDefined, Sequelize, Transaction } from "sequelize"; +import { IAggregateRootRepository, UniqueID } from "../../domain"; +import { Result } from "../../helpers"; +import { logger } from "../logger"; export abstract class SequelizeRepository implements IAggregateRootRepository { + protected readonly _database!: Sequelize; + + constructor(database: Sequelize) { + this._database = database; + } + protected async _findAll( model: ModelDefined, //queryCriteria?: IQueryCriteria, @@ -135,7 +141,7 @@ export abstract class SequelizeRepository implements IAggregateRootRepository ): Result { const _error = error as Error; - logger.error(`Database error: ${_error.message}`); + logger.error({ message: `Database error: ${_error.message}`, label: "SequelizeRepository" }); // Si la clase hija proporciona un mapeo personalizado, lo usa if (errorMapper) { diff --git a/packages/rdx-core/src/presentation/express/express-controller.ts b/packages/rdx-core/src/presentation/express/express-controller.ts index fea02f3..a11dbbe 100644 --- a/packages/rdx-core/src/presentation/express/express-controller.ts +++ b/packages/rdx-core/src/presentation/express/express-controller.ts @@ -1,6 +1,6 @@ -import { logger } from "@rdx/logger"; import { NextFunction, Request, Response } from "express"; import httpStatus from "http-status"; +import { logger } from "../../infrastructure"; import { ApiError } from "./api-error"; export abstract class ExpressController { diff --git a/packages/rdx-core/src/presentation/express/middlewares/global-error-handler.ts b/packages/rdx-core/src/presentation/express/middlewares/global-error-handler.ts index f6717a5..b35e953 100644 --- a/packages/rdx-core/src/presentation/express/middlewares/global-error-handler.ts +++ b/packages/rdx-core/src/presentation/express/middlewares/global-error-handler.ts @@ -1,6 +1,6 @@ import { NextFunction, Request, Response } from "express"; +import { logger } from "../../../infrastructure"; import { ApiError } from "../api-error"; -import { logger } from "@rdx/logger"; export const globalErrorHandler = async ( error: Error, diff --git a/packages/rdx-core/tsconfig.json b/packages/rdx-core/tsconfig.json index 6132f74..eead847 100644 --- a/packages/rdx-core/tsconfig.json +++ b/packages/rdx-core/tsconfig.json @@ -4,11 +4,7 @@ "sourceMap": true, "outDir": "./dist", "rootDir": "./src", - "types": ["node"], - - "paths": { - "@/*": ["./src/*"] - } + "types": ["node"] }, "files": ["src/index.ts"], "include": ["src/index.ts"], diff --git a/packages/rdx-ddd-domain/package.json b/packages/rdx-ddd-domain/package.json deleted file mode 100644 index 2f1691a..0000000 --- a/packages/rdx-ddd-domain/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@rdx/ddd-domain", - "version": "0.0.0", - "private": true, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**" - ], - "scripts": { - "build": "tsc", - "clean": "rm -rf dist && rm -rf node_modules", - "lint": "eslint src/", - "lint:fix": "eslint src/ --fix", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "jest": { - "preset": "@repo/jest-presets/node" - }, - "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/dinero.js": "^1.9.4", - "@types/node": "^22.15.2", - "jest": "^29.7.0", - "typescript": "^5.8.3" - }, - "dependencies": { - "@rdx/logger": "workspace:*", - "@rdx/utils": "workspace:*", - "dinero.js": "^1.9.1", - "libphonenumber-js": "^1.12.7", - "shallow-equal-object": "^1.1.1", - "uuid": "^11.1.0", - "zod": "^3.24.3" - } -} diff --git a/packages/rdx-ddd-domain/tsconfig.json b/packages/rdx-ddd-domain/tsconfig.json deleted file mode 100644 index 6132f74..0000000 --- a/packages/rdx-ddd-domain/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@repo/typescript-config/base.json", - "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./src", - "types": ["node"], - - "paths": { - "@/*": ["./src/*"] - } - }, - "files": ["src/index.ts"], - "include": ["src/index.ts"], - "exclude": ["node_modules", "dist", "**/*/__tests__"] -} diff --git a/packages/rdx-ddd-domain/turbo.json b/packages/rdx-ddd-domain/turbo.json deleted file mode 100644 index 52a7d7a..0000000 --- a/packages/rdx-ddd-domain/turbo.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**"] - } - } -} diff --git a/packages/rdx-logger/package.json b/packages/rdx-logger/package.json deleted file mode 100644 index c94bdeb..0000000 --- a/packages/rdx-logger/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "@rdx/logger", - "version": "0.0.0", - "private": true, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**" - ], - "scripts": { - "build": "tsc", - "clean": "rm -rf dist && rm -rf node_modules", - "lint": "eslint src/", - "lint:fix": "eslint src/ --fix", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "jest": { - "preset": "@repo/jest-presets/node" - }, - "devDependencies": { - "@jest/globals": "^29.7.0", - "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/dotenv": "^8.2.3", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.14", - "@types/node": "^22.15.2", - "@types/react": "^19.1.2", - "@types/winston": "^2.4.4", - "eslint": "^9.25.1", - "jest": "^29.7.0", - "typescript": "^5.8.3" - }, - "dependencies": { - "cls-rtracer": "^2.6.3", - "dotenv": "^16.5.0", - "path": "^0.12.7", - "winston": "^3.17.0", - "winston-daily-rotate-file": "^5.0.0" - } -} diff --git a/packages/rdx-logger/tsconfig.json b/packages/rdx-logger/tsconfig.json deleted file mode 100644 index 6132f74..0000000 --- a/packages/rdx-logger/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@repo/typescript-config/base.json", - "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./src", - "types": ["node"], - - "paths": { - "@/*": ["./src/*"] - } - }, - "files": ["src/index.ts"], - "include": ["src/index.ts"], - "exclude": ["node_modules", "dist", "**/*/__tests__"] -} diff --git a/packages/rdx-logger/turbo.json b/packages/rdx-logger/turbo.json deleted file mode 100644 index 35be9c6..0000000 --- a/packages/rdx-logger/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "build": { - "outputs": ["dist/**"] - } - } -} diff --git a/packages/rdx-modules/package.json b/packages/rdx-modules/package.json deleted file mode 100644 index 8da1f53..0000000 --- a/packages/rdx-modules/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@rdx/modules", - "version": "0.0.0", - "private": true, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**" - ], - "scripts": { - "build": "tsc", - "clean": "rm -rf dist && rm -rf node_modules", - "lint": "eslint src/", - "lint:fix": "eslint src/ --fix", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "jest": { - "preset": "@repo/jest-presets/node" - }, - "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.14", - "@types/node": "^22.15.2", - "@types/react": "^19.1.2", - "jest": "^29.7.0", - "typescript": "^5.8.3" - }, - "dependencies": { - "express": "^4.21.2", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "sequelize": "^6.37.7" - } -} diff --git a/packages/rdx-modules/tsconfig.json b/packages/rdx-modules/tsconfig.json deleted file mode 100644 index 6132f74..0000000 --- a/packages/rdx-modules/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@repo/typescript-config/base.json", - "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./src", - "types": ["node"], - - "paths": { - "@/*": ["./src/*"] - } - }, - "files": ["src/index.ts"], - "include": ["src/index.ts"], - "exclude": ["node_modules", "dist", "**/*/__tests__"] -} diff --git a/packages/rdx-modules/turbo.json b/packages/rdx-modules/turbo.json deleted file mode 100644 index 35be9c6..0000000 --- a/packages/rdx-modules/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "build": { - "outputs": ["dist/**"] - } - } -} diff --git a/packages/rdx-utils/package.json b/packages/rdx-utils/package.json deleted file mode 100644 index c077568..0000000 --- a/packages/rdx-utils/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@rdx/utils", - "version": "0.0.0", - "private": true, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**" - ], - "scripts": { - "build": "tsc", - "clean": "rm -rf dist && rm -rf node_modules", - "lint": "eslint src/", - "lint:fix": "eslint src/ --fix", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "jest": { - "preset": "@repo/jest-presets/node" - }, - "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/node": "^22.15.2", - "typescript": "^5.8.3" - } -} diff --git a/packages/rdx-utils/src/index.ts b/packages/rdx-utils/src/index.ts deleted file mode 100644 index d4e09d7..0000000 --- a/packages/rdx-utils/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./helpers"; diff --git a/packages/rdx-utils/tsconfig.json b/packages/rdx-utils/tsconfig.json deleted file mode 100644 index 6132f74..0000000 --- a/packages/rdx-utils/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@repo/typescript-config/base.json", - "compilerOptions": { - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./src", - "types": ["node"], - - "paths": { - "@/*": ["./src/*"] - } - }, - "files": ["src/index.ts"], - "include": ["src/index.ts"], - "exclude": ["node_modules", "dist", "**/*/__tests__"] -} diff --git a/packages/rdx-utils/turbo.json b/packages/rdx-utils/turbo.json deleted file mode 100644 index 35be9c6..0000000 --- a/packages/rdx-utils/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "build": { - "outputs": ["dist/**"] - } - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4c0026..48da640 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: eslint: specifier: ^9.25.1 version: 9.25.1 + nodemon: + specifier: ^3.1.10 + version: 3.1.10 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -32,18 +35,6 @@ importers: '@rdx/core': specifier: workspace:* version: link:../../packages/rdx-core - '@rdx/ddd-domain': - specifier: workspace:* - version: link:../../packages/rdx-ddd-domain - '@rdx/logger': - specifier: workspace:* - version: link:../../packages/rdx-logger - '@rdx/modules': - specifier: workspace:* - version: link:../../packages/rdx-modules - '@rdx/utils': - specifier: workspace:* - version: link:../../packages/rdx-utils bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -102,7 +93,7 @@ importers: specifier: ^2.3.3 version: 2.3.3 sequelize: - specifier: ^6.37.7 + specifier: ^6.37.5 version: 6.37.7(mysql2@3.14.0) zod: specifier: ^3.24.3 @@ -228,7 +219,7 @@ importers: version: 19.1.2(@types/react@19.1.2) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.3(@types/node@22.15.2)) + version: 4.4.1(vite@6.3.4(@types/node@22.15.2)) eslint: specifier: ^9.25.1 version: 9.25.1 @@ -237,25 +228,13 @@ importers: version: 5.8.3 vite: specifier: ^6.3.3 - version: 6.3.3(@types/node@22.15.2) + version: 6.3.4(@types/node@22.15.2) modules/invoices: dependencies: '@rdx/core': specifier: workspace:* version: link:../../packages/rdx-core - '@rdx/ddd-domain': - specifier: workspace:* - version: link:../../packages/rdx-ddd-domain - '@rdx/logger': - specifier: workspace:* - version: link:../../packages/rdx-logger - '@rdx/modules': - specifier: workspace:* - version: link:../../packages/rdx-modules - '@rdx/utils': - specifier: workspace:* - version: link:../../packages/rdx-utils bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -314,7 +293,7 @@ importers: specifier: ^2.3.3 version: 2.3.3 sequelize: - specifier: ^6.37.7 + specifier: ^6.37.5 version: 6.37.7(mysql2@3.14.0) zod: specifier: ^3.24.3 @@ -449,18 +428,6 @@ importers: '@rdx/core': specifier: workspace:* version: link:../rdx-core - '@rdx/ddd-domain': - specifier: workspace:* - version: link:../rdx-ddd-domain - '@rdx/logger': - specifier: workspace:* - version: link:../rdx-logger - '@rdx/modules': - specifier: workspace:* - version: link:../rdx-modules - '@rdx/utils': - specifier: workspace:* - version: link:../rdx-utils bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -519,7 +486,7 @@ importers: specifier: ^2.3.3 version: 2.3.3 sequelize: - specifier: ^6.37.7 + specifier: ^6.37.5 version: 6.37.7(mysql2@3.14.0) zod: specifier: ^3.24.3 @@ -615,24 +582,15 @@ importers: packages/rdx-core: dependencies: - '@rdx/ddd-domain': - specifier: workspace:* - version: link:../rdx-ddd-domain - '@rdx/logger': - specifier: workspace:* - version: link:../rdx-logger - '@rdx/modules': - specifier: workspace:* - version: link:../rdx-modules - '@rdx/utils': - specifier: workspace:* - version: link:../rdx-utils bcrypt: specifier: ^5.1.1 version: 5.1.1 body-parser: specifier: ^2.2.0 version: 2.2.0 + cls-rtracer: + specifier: ^2.6.3 + version: 2.6.3 cors: specifier: ^2.8.5 version: 2.8.5 @@ -678,6 +636,12 @@ importers: path: specifier: ^0.12.7 version: 0.12.7 + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -685,8 +649,20 @@ importers: specifier: ^2.3.3 version: 2.3.3 sequelize: - specifier: ^6.37.7 + specifier: ^6.37.5 version: 6.37.7(mysql2@3.14.0) + shallow-equal-object: + specifier: ^1.1.1 + version: 1.1.1 + uuid: + specifier: ^11.1.0 + version: 11.1.0 + winston: + specifier: ^3.17.0 + version: 3.17.0 + winston-daily-rotate-file: + specifier: ^5.0.0 + version: 5.0.0(winston@3.17.0) zod: specifier: ^3.24.3 version: 3.24.3 @@ -745,12 +721,18 @@ importers: '@types/passport-local': specifier: ^1.0.38 version: 1.0.38 + '@types/react': + specifier: ^19.1.2 + version: 19.1.2 '@types/response-time': specifier: ^2.3.8 version: 2.3.8 '@types/supertest': specifier: ^6.0.3 version: 6.0.3 + '@types/winston': + specifier: ^2.4.4 + version: 2.4.4 '@typescript-eslint/eslint-plugin': specifier: ^8.31.0 version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) @@ -809,171 +791,6 @@ importers: specifier: ^5.8.3 version: 5.8.3 - packages/rdx-ddd-domain: - dependencies: - '@rdx/logger': - specifier: workspace:* - version: link:../rdx-logger - '@rdx/utils': - specifier: workspace:* - version: link:../rdx-utils - dinero.js: - specifier: ^1.9.1 - version: 1.9.1 - libphonenumber-js: - specifier: ^1.12.7 - version: 1.12.7 - shallow-equal-object: - specifier: ^1.1.1 - version: 1.1.1 - uuid: - specifier: ^11.1.0 - version: 11.1.0 - zod: - specifier: ^3.24.3 - version: 3.24.3 - devDependencies: - '@repo/eslint-config': - specifier: workspace:* - version: link:../eslint-config - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets - '@repo/typescript-config': - specifier: workspace:* - version: link:../typescript-config - '@types/dinero.js': - specifier: ^1.9.4 - version: 1.9.4 - '@types/node': - specifier: ^22.15.2 - version: 22.15.2 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.2)(ts-node@10.9.2(@types/node@22.15.2)(typescript@5.8.3)) - typescript: - specifier: ^5.8.3 - version: 5.8.3 - - packages/rdx-logger: - dependencies: - cls-rtracer: - specifier: ^2.6.3 - version: 2.6.3 - dotenv: - specifier: ^16.5.0 - version: 16.5.0 - path: - specifier: ^0.12.7 - version: 0.12.7 - winston: - specifier: ^3.17.0 - version: 3.17.0 - winston-daily-rotate-file: - specifier: ^5.0.0 - version: 5.0.0(winston@3.17.0) - devDependencies: - '@jest/globals': - specifier: ^29.7.0 - version: 29.7.0 - '@repo/eslint-config': - specifier: workspace:* - version: link:../eslint-config - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets - '@repo/typescript-config': - specifier: workspace:* - version: link:../typescript-config - '@types/dotenv': - specifier: ^8.2.3 - version: 8.2.3 - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/jest': - specifier: ^29.5.14 - version: 29.5.14 - '@types/node': - specifier: ^22.15.2 - version: 22.15.2 - '@types/react': - specifier: ^19.1.2 - version: 19.1.2 - '@types/winston': - specifier: ^2.4.4 - version: 2.4.4 - eslint: - specifier: ^9.25.1 - version: 9.25.1 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.2)(ts-node@10.9.2(@types/node@22.15.2)(typescript@5.8.3)) - typescript: - specifier: ^5.8.3 - version: 5.8.3 - - packages/rdx-modules: - dependencies: - express: - specifier: ^4.21.2 - version: 4.21.2 - react: - specifier: ^19.1.0 - version: 19.1.0 - react-dom: - specifier: ^19.1.0 - version: 19.1.0(react@19.1.0) - sequelize: - specifier: ^6.37.7 - version: 6.37.7(mysql2@3.14.0) - devDependencies: - '@repo/eslint-config': - specifier: workspace:* - version: link:../eslint-config - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets - '@repo/typescript-config': - specifier: workspace:* - version: link:../typescript-config - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/jest': - specifier: ^29.5.14 - version: 29.5.14 - '@types/node': - specifier: ^22.15.2 - version: 22.15.2 - '@types/react': - specifier: ^19.1.2 - version: 19.1.2 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.2)(ts-node@10.9.2(@types/node@22.15.2)(typescript@5.8.3)) - typescript: - specifier: ^5.8.3 - version: 5.8.3 - - packages/rdx-utils: - devDependencies: - '@repo/eslint-config': - specifier: workspace:* - version: link:../eslint-config - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets - '@repo/typescript-config': - specifier: workspace:* - version: link:../typescript-config - '@types/node': - specifier: ^22.15.2 - version: 22.15.2 - typescript: - specifier: ^5.8.3 - version: 5.8.3 - packages/typescript-config: {} packages/ui: @@ -1589,103 +1406,103 @@ packages: '@paralleldrive/cuid2@2.2.2': resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} - '@rollup/rollup-android-arm-eabi@4.40.0': - resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} + '@rollup/rollup-android-arm-eabi@4.40.1': + resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.0': - resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} + '@rollup/rollup-android-arm64@4.40.1': + resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.0': - resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} + '@rollup/rollup-darwin-arm64@4.40.1': + resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.0': - resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} + '@rollup/rollup-darwin-x64@4.40.1': + resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.0': - resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + '@rollup/rollup-freebsd-arm64@4.40.1': + resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.0': - resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + '@rollup/rollup-freebsd-x64@4.40.1': + resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': - resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.0': - resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.1': + resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.0': - resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} + '@rollup/rollup-linux-arm64-gnu@4.40.1': + resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.0': - resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} + '@rollup/rollup-linux-arm64-musl@4.40.1': + resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': - resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': - resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.0': - resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.1': + resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.0': - resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + '@rollup/rollup-linux-riscv64-musl@4.40.1': + resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.0': - resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} + '@rollup/rollup-linux-s390x-gnu@4.40.1': + resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.0': - resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + '@rollup/rollup-linux-x64-gnu@4.40.1': + resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.0': - resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} + '@rollup/rollup-linux-x64-musl@4.40.1': + resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.0': - resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.1': + resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.0': - resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} + '@rollup/rollup-win32-ia32-msvc@4.40.1': + resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.0': - resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} + '@rollup/rollup-win32-x64-msvc@4.40.1': + resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} cpu: [x64] os: [win32] @@ -1746,10 +1563,6 @@ packages: '@types/dinero.js@1.9.4': resolution: {integrity: sha512-mtJnan4ajy9MqvoJGVXu0tC9EAAzFjeoKc3d+8AW+H/Od9+8IiC59ymjrZF+JdTToyDvkLReacTsc50Z8eYr6Q==} - '@types/dotenv@8.2.3': - resolution: {integrity: sha512-g2FXjlDX/cYuc5CiQvyU/6kkbP1JtmGzh0obW50zD7OKeILVL0NSpPWLXVfqoAGQjom2/SLLx9zHq0KXvD6mbw==} - deprecated: This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed. - '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} @@ -3912,8 +3725,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.40.0: - resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + rollup@4.40.1: + resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4436,8 +4249,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@6.3.3: - resolution: {integrity: sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==} + vite@6.3.4: + resolution: {integrity: sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -5313,64 +5126,64 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 - '@rollup/rollup-android-arm-eabi@4.40.0': + '@rollup/rollup-android-arm-eabi@4.40.1': optional: true - '@rollup/rollup-android-arm64@4.40.0': + '@rollup/rollup-android-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-arm64@4.40.0': + '@rollup/rollup-darwin-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-x64@4.40.0': + '@rollup/rollup-darwin-x64@4.40.1': optional: true - '@rollup/rollup-freebsd-arm64@4.40.0': + '@rollup/rollup-freebsd-arm64@4.40.1': optional: true - '@rollup/rollup-freebsd-x64@4.40.0': + '@rollup/rollup-freebsd-x64@4.40.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.0': + '@rollup/rollup-linux-arm64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.0': + '@rollup/rollup-linux-arm64-musl@4.40.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.0': + '@rollup/rollup-linux-riscv64-musl@4.40.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.0': + '@rollup/rollup-linux-s390x-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.0': + '@rollup/rollup-linux-x64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-musl@4.40.0': + '@rollup/rollup-linux-x64-musl@4.40.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.0': + '@rollup/rollup-win32-arm64-msvc@4.40.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.0': + '@rollup/rollup-win32-ia32-msvc@4.40.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.0': + '@rollup/rollup-win32-x64-msvc@4.40.1': optional: true '@rtsao/scc@1.1.0': {} @@ -5439,10 +5252,6 @@ snapshots: '@types/dinero.js@1.9.4': {} - '@types/dotenv@8.2.3': - dependencies: - dotenv: 16.5.0 - '@types/estree@1.0.7': {} '@types/express-serve-static-core@4.19.6': @@ -5671,14 +5480,14 @@ snapshots: '@typescript-eslint/types': 8.31.0 eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-react@4.4.1(vite@6.3.3(@types/node@22.15.2))': + '@vitejs/plugin-react@4.4.1(vite@6.3.4(@types/node@22.15.2))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.3(@types/node@22.15.2) + vite: 6.3.4(@types/node@22.15.2) transitivePeerDependencies: - supports-color @@ -7971,30 +7780,30 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.40.0: + rollup@4.40.1: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.0 - '@rollup/rollup-android-arm64': 4.40.0 - '@rollup/rollup-darwin-arm64': 4.40.0 - '@rollup/rollup-darwin-x64': 4.40.0 - '@rollup/rollup-freebsd-arm64': 4.40.0 - '@rollup/rollup-freebsd-x64': 4.40.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 - '@rollup/rollup-linux-arm-musleabihf': 4.40.0 - '@rollup/rollup-linux-arm64-gnu': 4.40.0 - '@rollup/rollup-linux-arm64-musl': 4.40.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 - '@rollup/rollup-linux-riscv64-gnu': 4.40.0 - '@rollup/rollup-linux-riscv64-musl': 4.40.0 - '@rollup/rollup-linux-s390x-gnu': 4.40.0 - '@rollup/rollup-linux-x64-gnu': 4.40.0 - '@rollup/rollup-linux-x64-musl': 4.40.0 - '@rollup/rollup-win32-arm64-msvc': 4.40.0 - '@rollup/rollup-win32-ia32-msvc': 4.40.0 - '@rollup/rollup-win32-x64-msvc': 4.40.0 + '@rollup/rollup-android-arm-eabi': 4.40.1 + '@rollup/rollup-android-arm64': 4.40.1 + '@rollup/rollup-darwin-arm64': 4.40.1 + '@rollup/rollup-darwin-x64': 4.40.1 + '@rollup/rollup-freebsd-arm64': 4.40.1 + '@rollup/rollup-freebsd-x64': 4.40.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 + '@rollup/rollup-linux-arm-musleabihf': 4.40.1 + '@rollup/rollup-linux-arm64-gnu': 4.40.1 + '@rollup/rollup-linux-arm64-musl': 4.40.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-musl': 4.40.1 + '@rollup/rollup-linux-s390x-gnu': 4.40.1 + '@rollup/rollup-linux-x64-gnu': 4.40.1 + '@rollup/rollup-linux-x64-musl': 4.40.1 + '@rollup/rollup-win32-arm64-msvc': 4.40.1 + '@rollup/rollup-win32-ia32-msvc': 4.40.1 + '@rollup/rollup-win32-x64-msvc': 4.40.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -8547,13 +8356,13 @@ snapshots: vary@1.1.2: {} - vite@6.3.3(@types/node@22.15.2): + vite@6.3.4(@types/node@22.15.2): dependencies: esbuild: 0.25.3 fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.40.0 + rollup: 4.40.1 tinyglobby: 0.2.13 optionalDependencies: '@types/node': 22.15.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6e0abd9..3fd79a9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,5 @@ packages: - - apps/* - - modules/* - packages/* - "!packages/rdx-auth/*" + - modules/* + - apps/* diff --git a/turbo.json b/turbo.json index 38864b9..283a2ec 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,5 @@ { "$schema": "https://turborepo.com/schema.json", - "ui": "tui", "tasks": { "build": { "dependsOn": ["^build"], @@ -21,6 +20,10 @@ }, "clean": { "cache": false + }, + "watch": { + "cache": false, + "outputs": [] } } }