diff --git a/apps/server/.env.production b/apps/server/.env.production new file mode 100644 index 00000000..26633961 --- /dev/null +++ b/apps/server/.env.production @@ -0,0 +1,22 @@ +NODE_ENV=development +HOST=0.0.0.0 +PORT=3002 +FRONTEND_URL=http://localhost:5173 + + +DB_DIALECT=mysql +DB_HOST=localhost +DB_PORT=3306 +DB_NAME=uecko_erp +DB_USER=rodax +DB_PASSWORD=rodax + +DB_LOGGING=false +DB_SYNC_MODE=alter + +APP_TIMEZONE=Europe/Madrid +TRUST_PROXY=0 + +JWT_SECRET=supersecretkey +JWT_ACCESS_EXPIRATION=1h +JWT_REFRESH_EXPIRATION=7d diff --git a/apps/server/jest.config.ts b/apps/server/jest.config.ts deleted file mode 100644 index 781e835e..00000000 --- a/apps/server/jest.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { pathsToModuleNameMapper } from "ts-jest"; -import { compilerOptions } from "./tsconfig.json"; - -export default { - preset: "ts-jest", - testEnvironment: "node", - rootDir: "./", - testMatch: ["**/*.test.ts", "**/*.spec.ts"], - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: "/src/" }), - transform: { - "^.+\\.(ts|tsx)$": "ts-jest", - }, - collectCoverage: true, - coverageDirectory: "coverage", - coverageReporters: ["text", "lcov"], - clearMocks: true, - setupFilesAfterEnv: ["/tests/setup.ts"], -}; diff --git a/apps/server/package.json b/apps/server/package.json index db9f485b..bb9c1eac 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,22 +1,19 @@ { "name": "server", - "version": "1.0.0", - "description": "", - "main": "index.ts", + "version": "0.0.0", + "private": true, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", "scripts": { - "build": "tsc && tsup", - "dev": "node --import=tsx --watch src/index.ts", - "start:dev": "node --import=tsx --watch src/index.ts", - "start:prod": "node dist/index.js", - "clean": "rm -rf dist node_modules", + "build": "tsup src/index.ts --config tsup.config.ts", + "dev": "tsx watch src/index.ts", + "clean": "rimraf .turbo node_modules dist", + "start": "NODE_ENV=production node dist/index.js", "typecheck": "tsc --noEmit", - "test": "jest --config=./jest.config.ts --verbose", "lint": "biome lint --fix", "format": "biome format --write" }, - "keywords": [], - "author": "", - "license": "ISC", "devDependencies": { "@biomejs/biome": "^2.3.1", "@repo/typescript-config": "workspace:*", @@ -25,7 +22,6 @@ "@types/dinero.js": "^1.9.4", "@types/express": "^4.17.21", "@types/glob": "^8.1.0", - "@types/jest": "^29.5.14", "@types/jsonwebtoken": "^9.0.8", "@types/luxon": "^3.6.2", "@types/node": "^22.15.12", @@ -33,6 +29,7 @@ "@types/passport-jwt": "^4.0.1", "@types/passport-local": "^1.0.38", "@types/response-time": "^2.3.8", + "rimraf": "^6.0.0", "tsconfig-paths": "^4.2.0", "tsup": "8.5.0", "tsx": "4.20.6", @@ -76,21 +73,5 @@ }, "engines": { "node": ">=22" - }, - "tsup": { - "entry": [ - "src/index.ts" - ], - "outDir": "dist", - "format": [ - "esm", - "cjs" - ], - "target": "ES2022", - "sourcemap": true, - "clean": true, - "dts": true, - "splitting": false, - "skipNodeModulesBundle": true } } diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 960a338c..69dd802d 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -2,11 +2,10 @@ import cors, { CorsOptions } from "cors"; import express, { Application } from "express"; import helmet from "helmet"; import responseTime from "response-time"; -import { logger } from "./lib/logger"; - // ❗️ No cargamos dotenv aquí. Debe hacerse en el entrypoint o en ./config. // dotenv.config(); import { ENV } from "./config"; +import { logger } from "./lib/logger"; export function createApp(): Application { const app = express(); diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index c4cec492..3f5850a6 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -49,7 +49,6 @@ const serverStop = (server: http.Server) => { let destroyed = 0; for (const s of sockets) { try { - // @ts-ignore - algunos runtimes exponen destroy() / end() if (s.destroy && !s.destroyed) { s.destroy(); destroyed++; @@ -259,8 +258,7 @@ process.on("uncaughtException", async (error: Error) => { logger.info(`Server environment: ${currentState.environment}`); logger.info("To shut down your server, press + C at any time"); - // En entornos de desarrollo puede ser muy verboso - logger.info(JSON.stringify(listRoutes((app as any)._router, API_BASE_PATH), null, 3)); + logger.debug(JSON.stringify(listRoutes((app as any)._router, API_BASE_PATH), null, 3)); }); } catch (error) { // Arranque fallido → readiness sigue false diff --git a/apps/server/src/lib/list-routes.ts b/apps/server/src/lib/list-routes.ts index a2a1ca13..817d5d51 100644 --- a/apps/server/src/lib/list-routes.ts +++ b/apps/server/src/lib/list-routes.ts @@ -1,5 +1,6 @@ +import expressListRoutes from "express-list-routes"; + // Función para listar rutas export function listRoutes(app, basePath = "") { - const expressListRoutes = require("express-list-routes"); return expressListRoutes(app, { logger: false, prefix: basePath }); } diff --git a/apps/server/tests/setup.ts b/apps/server/tests/setup.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/server/tsup.config.ts b/apps/server/tsup.config.ts new file mode 100644 index 00000000..f7576c77 --- /dev/null +++ b/apps/server/tsup.config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from "tsup"; + +/** + * Build del servidor: + * - incluye código TS de `modules/*` (buildless) + * - consume código ya compilado de `packages/*` + * - genera un bundle único ESM en `dist/` + */ + +export default defineConfig({ + entry: ["src/index.ts"], // punto de entrada principal + format: ["esm"], // ESM nativo (Node 18+) + target: "node18", // objetivo de compilación + sourcemap: true, + clean: true, + treeshake: true, + dts: false, // opcional, genera .d.ts + outDir: "dist", + + // Paquetes de npm a mantener como externos (no se incluyen) + external: ["express", "zod", "react", "react-dom", "date-fns"], + + // Paquetes internos buildless que se deben incluir en el bundle + noExternal: [ + "@erp/auth", + "@erp/core", + "@erp/customers", + "@erp/customer-invoices", + "@erp/verifactu", + "@repo/rdx-logger", + ], +}); diff --git a/modules/auth/package.json b/modules/auth/package.json index da84925f..beef397e 100644 --- a/modules/auth/package.json +++ b/modules/auth/package.json @@ -1,6 +1,15 @@ { "name": "@erp/auth", "version": "0.0.1", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, + "exports": { ".": "./src/common/index.ts", "./api": "./src/api/index.ts", diff --git a/modules/auth/tsconfig.json b/modules/auth/tsconfig.json index 38385361..3e05b626 100644 --- a/modules/auth/tsconfig.json +++ b/modules/auth/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/modules/core/package.json b/modules/core/package.json index 0a7b7c9a..663ab73a 100644 --- a/modules/core/package.json +++ b/modules/core/package.json @@ -1,6 +1,15 @@ { "name": "@erp/core", "version": "0.0.1", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, + "exports": { ".": "./src/common/index.ts", "./common": "./src/common/index.ts", diff --git a/modules/core/src/api/infrastructure/express/express-controller.ts b/modules/core/src/api/infrastructure/express/express-controller.ts index 6e1e2939..5617f3f4 100644 --- a/modules/core/src/api/infrastructure/express/express-controller.ts +++ b/modules/core/src/api/infrastructure/express/express-controller.ts @@ -1,4 +1,4 @@ -import { Criteria, CriteriaFromUrlConverter } from "@repo/rdx-criteria/server"; +import { Criteria, CriteriaFromUrlConverter } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { NextFunction, Request, Response } from "express"; import httpStatus from "http-status"; @@ -91,6 +91,7 @@ export abstract class ExpressController { } protected ok(dto?: T, headers?: Record) { + // biome-ignore lint/suspicious/useIterableCallbackReturn: if (headers) Object.entries(headers).forEach(([k, v]) => this.res.setHeader(k, v)); return dto ? this.res.status(httpStatus.OK).json(dto) : this.res.sendStatus(httpStatus.OK); } diff --git a/modules/core/src/api/infrastructure/express/express-guards.ts b/modules/core/src/api/infrastructure/express/express-guards.ts index 69833177..ddd289f7 100644 --- a/modules/core/src/api/infrastructure/express/express-guards.ts +++ b/modules/core/src/api/infrastructure/express/express-guards.ts @@ -1,4 +1,4 @@ -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { NextFunction, Request, Response } from "express"; import { ApiError, ForbiddenApiError, UnauthorizedApiError, ValidationApiError } from "./errors"; import { ExpressController } from "./express-controller"; @@ -47,7 +47,7 @@ export function tenantGuard(): GuardFn { */ export function forbidQueryFieldGuard(field = "companyId"): GuardFn { return ({ req }: GuardContext) => { - if (Object.prototype.hasOwnProperty.call(req.query, field)) { + if (Object.hasOwn(req.query, field)) { return guardFail(new ValidationApiError(`Query param "${field}" is not allowed`)); } return guardOk(); diff --git a/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts b/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts index 9d5a9f94..dae011b2 100644 --- a/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts +++ b/modules/core/src/api/infrastructure/sequelize/sequelize-repository.ts @@ -1,4 +1,4 @@ -import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria/server"; +import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria"; import { IAggregateRootRepository, UniqueID } from "@repo/rdx-ddd"; import { Result } from "@repo/rdx-utils"; import { FindOptions, ModelDefined, Sequelize, Transaction } from "sequelize"; diff --git a/modules/core/tsconfig.json b/modules/core/tsconfig.json index 00dfcb5e..abb1702a 100644 --- a/modules/core/tsconfig.json +++ b/modules/core/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/modules/customer-invoices/package.json b/modules/customer-invoices/package.json index d45fab27..853c3332 100644 --- a/modules/customer-invoices/package.json +++ b/modules/customer-invoices/package.json @@ -1,8 +1,15 @@ { "name": "@erp/customer-invoices", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, + "exports": { ".": "./src/common/index.ts", "./common": "./src/common/index.ts", diff --git a/modules/customer-invoices/src/api/application/customer-invoice-application.service.ts b/modules/customer-invoices/src/api/application/customer-invoice-application.service.ts index d147da98..52b1174f 100644 --- a/modules/customer-invoices/src/api/application/customer-invoice-application.service.ts +++ b/modules/customer-invoices/src/api/application/customer-invoice-application.service.ts @@ -1,4 +1,4 @@ -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customer-invoices/src/api/application/presenters/queries/list-customer-invoices.presenter.ts b/modules/customer-invoices/src/api/application/presenters/queries/list-customer-invoices.presenter.ts index 7d0922d0..a4c483f6 100644 --- a/modules/customer-invoices/src/api/application/presenters/queries/list-customer-invoices.presenter.ts +++ b/modules/customer-invoices/src/api/application/presenters/queries/list-customer-invoices.presenter.ts @@ -1,5 +1,5 @@ import { Presenter } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { toEmptyString } from "@repo/rdx-ddd"; import { ArrayElement, Collection } from "@repo/rdx-utils"; import { ListCustomerInvoicesResponseDTO } from "../../../../common/dto"; diff --git a/modules/customer-invoices/src/api/application/use-cases/list-customer-invoices.use-case.ts b/modules/customer-invoices/src/api/application/use-cases/list-customer-invoices.use-case.ts index e82c320b..c5b78604 100644 --- a/modules/customer-invoices/src/api/application/use-cases/list-customer-invoices.use-case.ts +++ b/modules/customer-invoices/src/api/application/use-cases/list-customer-invoices.use-case.ts @@ -1,5 +1,5 @@ import { IPresenterRegistry, ITransactionManager } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customer-invoices/src/api/domain/repositories/customer-invoice-repository.interface.ts b/modules/customer-invoices/src/api/domain/repositories/customer-invoice-repository.interface.ts index 59283190..0c220aaf 100644 --- a/modules/customer-invoices/src/api/domain/repositories/customer-invoice-repository.interface.ts +++ b/modules/customer-invoices/src/api/domain/repositories/customer-invoice-repository.interface.ts @@ -1,4 +1,4 @@ -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { CustomerInvoiceListDTO } from "../../infrastructure"; diff --git a/modules/customer-invoices/src/api/infrastructure/express/controllers/list-customer-invoices.controller.ts b/modules/customer-invoices/src/api/infrastructure/express/controllers/list-customer-invoices.controller.ts index db9b3ccc..ccea7da2 100644 --- a/modules/customer-invoices/src/api/infrastructure/express/controllers/list-customer-invoices.controller.ts +++ b/modules/customer-invoices/src/api/infrastructure/express/controllers/list-customer-invoices.controller.ts @@ -1,5 +1,5 @@ -import { ExpressController, authGuard, forbidQueryFieldGuard, tenantGuard } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { authGuard, ExpressController, forbidQueryFieldGuard, tenantGuard } from "@erp/core/api"; +import { Criteria } from "@repo/rdx-criteria"; import { ListCustomerInvoicesUseCase } from "../../../application"; export class ListCustomerInvoicesController extends ExpressController { diff --git a/modules/customer-invoices/src/api/infrastructure/index.ts b/modules/customer-invoices/src/api/infrastructure/index.ts index cfb15542..f35c8878 100644 --- a/modules/customer-invoices/src/api/infrastructure/index.ts +++ b/modules/customer-invoices/src/api/infrastructure/index.ts @@ -1,3 +1,3 @@ +export * from "./express"; export * from "./mappers"; export * from "./sequelize"; -export * from "./express"; diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/customer-invoice.repository.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/customer-invoice.repository.ts index d0e37de8..32f0d04d 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/customer-invoice.repository.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/customer-invoice.repository.ts @@ -4,7 +4,7 @@ import { SequelizeRepository, translateSequelizeError, } from "@erp/core/api"; -import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria/server"; +import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-criteria-whitelist.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-criteria-whitelist.ts index 5f1373cd..150cb6a2 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-criteria-whitelist.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-criteria-whitelist.ts @@ -1,5 +1,5 @@ -import type { Criteria } from "@repo/rdx-criteria/server"; -import { Op, OrderItem, WhereOptions, literal } from "sequelize"; +import type { Criteria } from "@repo/rdx-criteria"; +import { literal, Op, OrderItem, WhereOptions } from "sequelize"; // Campos físicos (DB) que permitimos filtrar/ordenar const ALLOWED_FILTERS = { diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item-tax.model.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item-tax.model.ts index 0749776e..024b44ad 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item-tax.model.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item-tax.model.ts @@ -34,7 +34,18 @@ export class CustomerInvoiceItemTaxModel extends Model< declare item: NonAttribute; static associate(database: Sequelize) { - const { CustomerInvoiceItemModel } = database.models; + const models = database.models; + + const requiredModels = ["CustomerInvoiceItemModel"]; + + // Comprobamos que los modelos existan + for (const name of requiredModels) { + if (!models[name]) { + throw new Error(`[CustomerInvoiceItemTaxModel.associate] Missing model: ${name}`); + } + } + + const { CustomerInvoiceItemModel } = models; CustomerInvoiceItemTaxModel.belongsTo(CustomerInvoiceItemModel, { as: "item", @@ -45,7 +56,7 @@ export class CustomerInvoiceItemTaxModel extends Model< }); } - static hooks(database: Sequelize) {} + static hooks(_database: Sequelize) {} } export default (database: Sequelize) => { @@ -92,6 +103,7 @@ export default (database: Sequelize) => { }, { sequelize: database, + modelName: "CustomerInvoiceItemTaxModel", tableName: "customer_invoice_item_taxes", underscored: true, diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item.model.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item.model.ts index 95db8728..d398bf88 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item.model.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-item.model.ts @@ -66,8 +66,21 @@ export class CustomerInvoiceItemModel extends Model< declare taxes: NonAttribute; static associate(database: Sequelize) { - const { CustomerInvoiceModel, CustomerInvoiceItemModel, CustomerInvoiceItemTaxModel } = - database.models; + const models = database.models; + const requiredModels = [ + "CustomerInvoiceModel", + "CustomerInvoiceItemModel", + "CustomerInvoiceItemTaxModel", + ]; + + // Comprobamos que los modelos existan + for (const name of requiredModels) { + if (!models[name]) { + throw new Error(`[CustomerInvoiceItemModel.associate] Missing model: ${name}`); + } + } + + const { CustomerInvoiceModel, CustomerInvoiceItemModel, CustomerInvoiceItemTaxModel } = models; CustomerInvoiceItemModel.belongsTo(CustomerInvoiceModel, { as: "invoice", @@ -211,6 +224,7 @@ export default (database: Sequelize) => { }, { sequelize: database, + modelName: "CustomerInvoiceItemModel", tableName: "customer_invoice_items", underscored: true, diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-tax.model.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-tax.model.ts index b2d44146..3b35e63c 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-tax.model.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice-tax.model.ts @@ -34,6 +34,16 @@ export class CustomerInvoiceTaxModel extends Model< declare invoice: NonAttribute; static associate(database: Sequelize) { + const models = database.models; + const requiredModels = ["CustomerInvoiceModel"]; + + // Comprobamos que los modelos existan + for (const name of requiredModels) { + if (!models[name]) { + throw new Error(`[CustomerInvoiceTaxModel.associate] Missing model: ${name}`); + } + } + const { CustomerInvoiceModel } = database.models; CustomerInvoiceTaxModel.belongsTo(CustomerInvoiceModel, { @@ -44,7 +54,7 @@ export class CustomerInvoiceTaxModel extends Model< }); } - static hooks(database: Sequelize) {} + static hooks(_database: Sequelize) {} } export default (database: Sequelize) => { @@ -91,6 +101,7 @@ export default (database: Sequelize) => { }, { sequelize: database, + modelName: "CustomerInvoiceTaxModel", tableName: "customer_invoice_taxes", underscored: true, diff --git a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice.model.ts b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice.model.ts index d711ae1b..ba761b65 100644 --- a/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice.model.ts +++ b/modules/customer-invoices/src/api/infrastructure/sequelize/models/customer-invoice.model.ts @@ -1,3 +1,4 @@ +import { CustomerModel } from "@erp/customers/api"; import { CreationOptional, DataTypes, @@ -7,12 +8,12 @@ import { NonAttribute, Sequelize, } from "sequelize"; + import { CustomerInvoiceItemCreationAttributes, CustomerInvoiceItemModel, } from "./customer-invoice-item.model"; -import { CustomerModel } from "@erp/customers/api"; import { CustomerInvoiceTaxCreationAttributes, CustomerInvoiceTaxModel, @@ -95,13 +96,27 @@ export class CustomerInvoiceModel extends Model< declare current_customer: NonAttribute; static associate(database: Sequelize) { + const models = database.models; + const requiredModels = [ + "CustomerInvoiceModel", + "CustomerInvoiceItemModel", + "CustomerModel", + "CustomerInvoiceTaxModel", + ]; + + // Comprobamos que los modelos existan + for (const name of requiredModels) { + if (!models[name]) { + throw new Error(`[CustomerInvoiceModel.associate] Missing model: ${name}`); + } + } + const { CustomerInvoiceModel, CustomerInvoiceItemModel, CustomerModel, CustomerInvoiceTaxModel, - VerifactuRecordModel, - } = database.models; + } = models; CustomerInvoiceModel.belongsTo(CustomerModel, { as: "current_customer", @@ -128,7 +143,7 @@ export class CustomerInvoiceModel extends Model< }); } - static hooks(database: Sequelize) {} + static hooks(_database: Sequelize) {} } export default (database: Sequelize) => { @@ -352,6 +367,7 @@ export default (database: Sequelize) => { }, { sequelize: database, + modelName: "CustomerInvoiceModel", tableName: "customer_invoices", underscored: true, diff --git a/modules/customer-invoices/tsconfig.json b/modules/customer-invoices/tsconfig.json index b4a95fde..7cb1730d 100644 --- a/modules/customer-invoices/tsconfig.json +++ b/modules/customer-invoices/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/modules/customers/package.json b/modules/customers/package.json index aaff7bae..55320081 100644 --- a/modules/customers/package.json +++ b/modules/customers/package.json @@ -1,8 +1,15 @@ { "name": "@erp/customers", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, + "exports": { ".": "./src/common/index.ts", "./common": "./src/common/index.ts", @@ -11,6 +18,7 @@ "./globals.css": "./src/web/globals.css", "./components": "./src/web/components/index.ts" }, + "peerDependencies": { "@tanstack/react-query": "^5.74.11", "ag-grid-community": "^33.3.0", diff --git a/modules/customers/src/api/application/customer-application.service.ts b/modules/customers/src/api/application/customer-application.service.ts index 9332adff..c4aebd82 100644 --- a/modules/customers/src/api/application/customer-application.service.ts +++ b/modules/customers/src/api/application/customer-application.service.ts @@ -1,5 +1,5 @@ // application/customer-application-service.ts -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customers/src/api/application/presenters/queries/list-customers.presenter.ts b/modules/customers/src/api/application/presenters/queries/list-customers.presenter.ts index 2a9e005e..031c6eb3 100644 --- a/modules/customers/src/api/application/presenters/queries/list-customers.presenter.ts +++ b/modules/customers/src/api/application/presenters/queries/list-customers.presenter.ts @@ -1,6 +1,6 @@ import { CriteriaDTO } from "@erp/core"; import { Presenter } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { toEmptyString } from "@repo/rdx-ddd"; import { Collection } from "@repo/rdx-utils"; import { ListCustomersResponseDTO } from "../../../../common/dto"; diff --git a/modules/customers/src/api/application/use-cases/list-customers.use-case.ts b/modules/customers/src/api/application/use-cases/list-customers.use-case.ts index 178033a7..e0a00c2f 100644 --- a/modules/customers/src/api/application/use-cases/list-customers.use-case.ts +++ b/modules/customers/src/api/application/use-cases/list-customers.use-case.ts @@ -1,5 +1,5 @@ import { IPresenterRegistry, ITransactionManager } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customers/src/api/domain/repositories/customer-repository.interface.ts b/modules/customers/src/api/domain/repositories/customer-repository.interface.ts index 671b51a1..0592db3c 100644 --- a/modules/customers/src/api/domain/repositories/customer-repository.interface.ts +++ b/modules/customers/src/api/domain/repositories/customer-repository.interface.ts @@ -1,4 +1,4 @@ -import { Criteria } from "@repo/rdx-criteria/server"; +import { Criteria } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { CustomerListDTO } from "../../infrastructure/mappers"; diff --git a/modules/customers/src/api/infrastructure/express/controllers/list-customers.controller.ts b/modules/customers/src/api/infrastructure/express/controllers/list-customers.controller.ts index a9a9eb70..c098540a 100644 --- a/modules/customers/src/api/infrastructure/express/controllers/list-customers.controller.ts +++ b/modules/customers/src/api/infrastructure/express/controllers/list-customers.controller.ts @@ -1,5 +1,5 @@ -import { ExpressController, authGuard, forbidQueryFieldGuard, tenantGuard } from "@erp/core/api"; -import { Criteria } from "@repo/rdx-criteria/server"; +import { authGuard, ExpressController, forbidQueryFieldGuard, tenantGuard } from "@erp/core/api"; +import { Criteria } from "@repo/rdx-criteria"; import { ListCustomersUseCase } from "../../../application"; export class ListCustomersController extends ExpressController { diff --git a/modules/customers/src/api/infrastructure/sequelize/models/customer.model.ts b/modules/customers/src/api/infrastructure/sequelize/models/customer.model.ts index 345ba0b2..cd5c7dde 100644 --- a/modules/customers/src/api/infrastructure/sequelize/models/customer.model.ts +++ b/modules/customers/src/api/infrastructure/sequelize/models/customer.model.ts @@ -58,9 +58,9 @@ export class CustomerModel extends Model< declare factuges_id: CreationOptional; - static associate(database: Sequelize) {} + static associate(_database: Sequelize) {} - static hooks(database: Sequelize) {} + static hooks(_database: Sequelize) {} } export default (database: Sequelize) => { @@ -220,6 +220,7 @@ export default (database: Sequelize) => { }, { sequelize: database, + modelName: "CustomerModel", tableName: "customers", underscored: true, diff --git a/modules/customers/src/api/infrastructure/sequelize/repositories/customer.repository.ts b/modules/customers/src/api/infrastructure/sequelize/repositories/customer.repository.ts index 5dbc08d8..42cb71c8 100644 --- a/modules/customers/src/api/infrastructure/sequelize/repositories/customer.repository.ts +++ b/modules/customers/src/api/infrastructure/sequelize/repositories/customer.repository.ts @@ -4,7 +4,7 @@ import { SequelizeRepository, translateSequelizeError, } from "@erp/core/api"; -import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria/server"; +import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; diff --git a/modules/customers/tsconfig.json b/modules/customers/tsconfig.json index b4a95fde..80f6c284 100644 --- a/modules/customers/tsconfig.json +++ b/modules/customers/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@erp/customer-invoices/*": ["./src/*"] + "@erp/customers/*": ["./src/*"] }, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", diff --git a/modules/doc-numbering/package.json b/modules/doc-numbering/package.json index 2be280e0..f662c6b7 100644 --- a/modules/doc-numbering/package.json +++ b/modules/doc-numbering/package.json @@ -1,8 +1,14 @@ { "name": "@erp/doc-numbering", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, "exports": { "./api": "./src/api/index.ts" }, @@ -11,7 +17,9 @@ "express": "^4.18.2", "zod": "^4.1.11" }, - "devDependencies": { "@types/express": "^4.17.21" }, + "devDependencies": { + "@types/express": "^4.17.21" + }, "dependencies": { "@erp/auth": "workspace:*", "@erp/core": "workspace:*", diff --git a/modules/doc-numbering/tsconfig.json b/modules/doc-numbering/tsconfig.json index b4a95fde..6e8f7182 100644 --- a/modules/doc-numbering/tsconfig.json +++ b/modules/doc-numbering/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@erp/customer-invoices/*": ["./src/*"] + "@erp/doc-numbering/*": ["./src/*"] }, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", diff --git a/modules/verifactu/package.json b/modules/verifactu/package.json index 3a4f568e..ff80f056 100644 --- a/modules/verifactu/package.json +++ b/modules/verifactu/package.json @@ -1,8 +1,14 @@ { "name": "@erp/verifactu", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + + "scripts": { + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" + }, "exports": { "./api": "./src/api/index.ts", "./common": "./src/common/index.ts" diff --git a/modules/verifactu/src/api/infrastructure/sequelize/verifactu-record.repository.ts b/modules/verifactu/src/api/infrastructure/sequelize/verifactu-record.repository.ts index 8064e983..0633dc07 100644 --- a/modules/verifactu/src/api/infrastructure/sequelize/verifactu-record.repository.ts +++ b/modules/verifactu/src/api/infrastructure/sequelize/verifactu-record.repository.ts @@ -1,5 +1,5 @@ import { EntityNotFoundError, SequelizeRepository, translateSequelizeError } from "@erp/core/api"; -import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria/server"; +import { Criteria, CriteriaToSequelizeConverter } from "@repo/rdx-criteria"; import { UniqueID } from "@repo/rdx-ddd"; import { Collection, Result } from "@repo/rdx-utils"; import { Transaction } from "sequelize"; @@ -14,7 +14,7 @@ export class VerifactuRecordRepository extends SequelizeRepository implements IVerifactuRecordRepository { - getById(id: UniqueID, transaction?: unknown): Promise> { + getById(_id: UniqueID, _transactionn?: unknown): Promise> { throw new Error("Method not implemented."); } // Listado por tenant con criteria saneada @@ -238,7 +238,7 @@ export class VerifactuRecordRepository transaction: unknown ): Promise> { try { - const deleted = await VerifactuRecordModel.destroy({ + const _deleted = await VerifactuRecordModel.destroy({ where: { id: id.toString(), company_id: companyId.toString() }, transaction, }); diff --git a/modules/verifactu/tsconfig.json b/modules/verifactu/tsconfig.json index b4a95fde..c8efe34c 100644 --- a/modules/verifactu/tsconfig.json +++ b/modules/verifactu/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@erp/customer-invoices/*": ["./src/*"] + "@erp/verifactu/*": ["./src/*"] }, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", diff --git a/package.json b/package.json index e744fa09..dc6e44f1 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "ui:add": "pnpm --filter @repo/shadcn-ui ui:add", "create:package": "ts-node scripts/create-package.ts", "volta:install": "curl https://get.volta.sh | bash", - "clean": "find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \\;" + "clean": "turbo run clean && rimraf ./node_modules && rimraf ./package-lock.json" }, "devDependencies": { "@biomejs/biome": "2.3.1", @@ -24,12 +24,13 @@ "change-case": "^5.4.4", "inquirer": "^12.10.0", "plop": "^4.0.4", + "rimraf": "^5.0.5", "ts-node": "^10.9.2", "turbo": "^2.5.8", "typescript": "5.9.3" }, "engines": { - "node": ">=18" + "node": ">=22" }, - "packageManager": "pnpm@10.17.1" + "packageManager": "pnpm@10.20.0" } diff --git a/packages/rdx-criteria/package.json b/packages/rdx-criteria/package.json index 1b20acff..354ec77e 100644 --- a/packages/rdx-criteria/package.json +++ b/packages/rdx-criteria/package.json @@ -1,17 +1,23 @@ { "name": "@repo/rdx-criteria", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + "scripts": { - "clean": "rm -rf node_modules" + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" }, + "exports": { - ".": "./src/defaults.ts", - "./server": "./src/index.ts" + ".": "./src/index.ts" }, + "devDependencies": { - "@repo/typescript-config": "workspace:*" + "@repo/typescript-config": "workspace:*", + "rimraf": "^6.0.0", + "typescript": "^5.9.3" }, "dependencies": { "sequelize": "^6.37.5" diff --git a/packages/rdx-criteria/src/codelytv/Criteria.d.ts b/packages/rdx-criteria/src/codelytv/Criteria.d.ts new file mode 100644 index 00000000..63d3a24b --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Criteria.d.ts @@ -0,0 +1,15 @@ +import { FiltersPrimitives } from "./Filter"; +import { Filters } from "./Filters"; +import { Order } from "./Order"; +export declare class Criteria { + readonly filters: Filters; + readonly order: Order; + readonly pageSize: number | null; + readonly pageNumber: number | null; + constructor(filters: Filters, order: Order, pageSize: number | null, pageNumber: number | null); + static fromPrimitives(filters: FiltersPrimitives[], orderBy: string | null, orderType: string | null, pageSize: number | null, pageNumber: number | null): Criteria; + static withFilters(filters: FiltersPrimitives[]): Criteria; + hasOrder(): boolean; + hasFilters(): boolean; +} +//# sourceMappingURL=Criteria.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Criteria.d.ts.map b/packages/rdx-criteria/src/codelytv/Criteria.d.ts.map new file mode 100644 index 00000000..4053412a --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Criteria.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Criteria.d.ts","sourceRoot":"","sources":["Criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,QAAQ;aAEH,OAAO,EAAE,OAAO;aAChB,KAAK,EAAE,KAAK;aACZ,QAAQ,EAAE,MAAM,GAAG,IAAI;aACvB,UAAU,EAAE,MAAM,GAAG,IAAI;gBAHzB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,GAAG,IAAI;IAO1C,MAAM,CAAC,cAAc,CACpB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,GAAG,IAAI,GACvB,QAAQ;IASX,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,QAAQ;IAI1D,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;CAGrB"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Criteria.js b/packages/rdx-criteria/src/codelytv/Criteria.js new file mode 100644 index 00000000..cc49b98f --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Criteria.js @@ -0,0 +1,31 @@ +import { Filters } from "./Filters"; +import { InvalidCriteria } from "./InvalidCriteria"; +import { Order } from "./Order"; +export class Criteria { + filters; + order; + pageSize; + pageNumber; + constructor(filters, order, pageSize, pageNumber) { + this.filters = filters; + this.order = order; + this.pageSize = pageSize; + this.pageNumber = pageNumber; + if (pageNumber !== null && pageSize === null) { + throw new InvalidCriteria(); + } + } + static fromPrimitives(filters, orderBy, orderType, pageSize, pageNumber) { + return new Criteria(Filters.fromPrimitives(filters), Order.fromPrimitives(orderBy, orderType), pageSize, pageNumber); + } + static withFilters(filters) { + return Criteria.fromPrimitives(filters, null, null, null, null); + } + hasOrder() { + return !this.order.isNone(); + } + hasFilters() { + return !this.filters.isEmpty(); + } +} +//# sourceMappingURL=Criteria.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Criteria.js.map b/packages/rdx-criteria/src/codelytv/Criteria.js.map new file mode 100644 index 00000000..bd094cf3 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Criteria.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Criteria.js","sourceRoot":"","sources":["Criteria.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,OAAO,QAAQ;IAEH;IACA;IACA;IACA;IAJjB,YACiB,OAAgB,EAChB,KAAY,EACZ,QAAuB,EACvB,UAAyB;QAHzB,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAO;QACZ,aAAQ,GAAR,QAAQ,CAAe;QACvB,eAAU,GAAV,UAAU,CAAe;QAEzC,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,eAAe,EAAE,CAAC;QAC7B,CAAC;IACF,CAAC;IAED,MAAM,CAAC,cAAc,CACpB,OAA4B,EAC5B,OAAsB,EACtB,SAAwB,EACxB,QAAuB,EACvB,UAAyB;QAEzB,OAAO,IAAI,QAAQ,CAClB,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAC/B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EACxC,QAAQ,EACR,UAAU,CACV,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAA4B;QAC9C,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,QAAQ;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU;QACT,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filter.d.ts b/packages/rdx-criteria/src/codelytv/Filter.d.ts new file mode 100644 index 00000000..c5fcb90b --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filter.d.ts @@ -0,0 +1,17 @@ +import { FilterField } from "./FilterField"; +import { FilterOperator } from "./FilterOperator"; +import { FilterValue } from "./FilterValue"; +export type FiltersPrimitives = { + field: string; + operator: string; + value: string; +}; +export declare class Filter { + readonly field: FilterField; + readonly operator: FilterOperator; + readonly value: FilterValue; + constructor(field: FilterField, operator: FilterOperator, value: FilterValue); + static fromPrimitives(field: string, operator: string, value: string): Filter; + toPrimitives(): FiltersPrimitives; +} +//# sourceMappingURL=Filter.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filter.d.ts.map b/packages/rdx-criteria/src/codelytv/Filter.d.ts.map new file mode 100644 index 00000000..a80e1f7d --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["Filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAY,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,MAAM;IAClB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;gBAEhB,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW;IAM5E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAQ7E,YAAY,IAAI,iBAAiB;CAOjC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filter.js b/packages/rdx-criteria/src/codelytv/Filter.js new file mode 100644 index 00000000..cf087f3e --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filter.js @@ -0,0 +1,24 @@ +import { FilterField } from "./FilterField"; +import { FilterOperator, Operator } from "./FilterOperator"; +import { FilterValue } from "./FilterValue"; +export class Filter { + field; + operator; + value; + constructor(field, operator, value) { + this.field = field; + this.operator = operator; + this.value = value; + } + static fromPrimitives(field, operator, value) { + return new Filter(new FilterField(field), new FilterOperator(Operator[operator]), new FilterValue(value)); + } + toPrimitives() { + return { + field: this.field.value, + operator: this.operator.value, + value: this.value.value, + }; + } +} +//# sourceMappingURL=Filter.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filter.js.map b/packages/rdx-criteria/src/codelytv/Filter.js.map new file mode 100644 index 00000000..4b7df637 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Filter.js","sourceRoot":"","sources":["Filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,MAAM,OAAO,MAAM;IACT,KAAK,CAAc;IACnB,QAAQ,CAAiB;IACzB,KAAK,CAAc;IAE5B,YAAY,KAAkB,EAAE,QAAwB,EAAE,KAAkB;QAC3E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa;QACnE,OAAO,IAAI,MAAM,CAChB,IAAI,WAAW,CAAC,KAAK,CAAC,EACtB,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAiC,CAAC,CAAC,EAC/D,IAAI,WAAW,CAAC,KAAK,CAAC,CACtB,CAAC;IACH,CAAC;IAED,YAAY;QACX,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;SACvB,CAAC;IACH,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterField.d.ts b/packages/rdx-criteria/src/codelytv/FilterField.d.ts new file mode 100644 index 00000000..157dcc02 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterField.d.ts @@ -0,0 +1,5 @@ +export declare class FilterField { + readonly value: string; + constructor(value: string); +} +//# sourceMappingURL=FilterField.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterField.d.ts.map b/packages/rdx-criteria/src/codelytv/FilterField.d.ts.map new file mode 100644 index 00000000..e09e01b8 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterField.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterField.d.ts","sourceRoot":"","sources":["FilterField.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;aACK,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CACzC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterField.js b/packages/rdx-criteria/src/codelytv/FilterField.js new file mode 100644 index 00000000..04fb1f4b --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterField.js @@ -0,0 +1,7 @@ +export class FilterField { + value; + constructor(value) { + this.value = value; + } +} +//# sourceMappingURL=FilterField.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterField.js.map b/packages/rdx-criteria/src/codelytv/FilterField.js.map new file mode 100644 index 00000000..fc0f4abe --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterField.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterField.js","sourceRoot":"","sources":["FilterField.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACK;IAA5B,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;CAC7C"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts b/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts new file mode 100644 index 00000000..014ed576 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts @@ -0,0 +1,22 @@ +export declare enum Operator { + EQUAL = "=", + NOT_EQUAL = "!=", + GREATER_THAN = ">", + GREATER_THAN_OR_EQUAL = ">=", + LOWER_THAN = "<", + LOWER_THAN_OR_EQUAL = "<=", + CONTAINS = "CONTAINS", + NOT_CONTAINS = "NOT_CONTAINS" +} +export declare class FilterOperator { + readonly value: Operator; + constructor(value: Operator); + isContains(): boolean; + isNotContains(): boolean; + isNotEquals(): boolean; + isGreaterThan(): boolean; + isGreaterThanOrEqual(): boolean; + isLowerThan(): boolean; + isLowerThanOrEqual(): boolean; +} +//# sourceMappingURL=FilterOperator.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts.map b/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts.map new file mode 100644 index 00000000..b1eb871c --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterOperator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterOperator.d.ts","sourceRoot":"","sources":["FilterOperator.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACnB,KAAK,MAAM;IACX,SAAS,OAAO;IAChB,YAAY,MAAM;IAClB,qBAAqB,OAAO;IAC5B,UAAU,MAAM;IAChB,mBAAmB,OAAO;IAC1B,QAAQ,aAAa;IACrB,YAAY,iBAAiB;CAC7B;AAED,qBAAa,cAAc;aACE,KAAK,EAAE,QAAQ;gBAAf,KAAK,EAAE,QAAQ;IAE3C,UAAU,IAAI,OAAO;IAIrB,aAAa,IAAI,OAAO;IAIxB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,OAAO;IAIxB,oBAAoB,IAAI,OAAO;IAI/B,WAAW,IAAI,OAAO;IAItB,kBAAkB,IAAI,OAAO;CAG7B"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterOperator.js b/packages/rdx-criteria/src/codelytv/FilterOperator.js new file mode 100644 index 00000000..b330bcf6 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterOperator.js @@ -0,0 +1,39 @@ +export var Operator; +(function (Operator) { + Operator["EQUAL"] = "="; + Operator["NOT_EQUAL"] = "!="; + Operator["GREATER_THAN"] = ">"; + Operator["GREATER_THAN_OR_EQUAL"] = ">="; + Operator["LOWER_THAN"] = "<"; + Operator["LOWER_THAN_OR_EQUAL"] = "<="; + Operator["CONTAINS"] = "CONTAINS"; + Operator["NOT_CONTAINS"] = "NOT_CONTAINS"; +})(Operator || (Operator = {})); +export class FilterOperator { + value; + constructor(value) { + this.value = value; + } + isContains() { + return this.value.valueOf() === Operator.CONTAINS.valueOf(); + } + isNotContains() { + return this.value.valueOf() === Operator.NOT_CONTAINS.valueOf(); + } + isNotEquals() { + return this.value.valueOf() === Operator.NOT_EQUAL.valueOf(); + } + isGreaterThan() { + return this.value.valueOf() === Operator.GREATER_THAN.valueOf(); + } + isGreaterThanOrEqual() { + return this.value.valueOf() === Operator.GREATER_THAN_OR_EQUAL.valueOf(); + } + isLowerThan() { + return this.value.valueOf() === Operator.LOWER_THAN.valueOf(); + } + isLowerThanOrEqual() { + return this.value.valueOf() === Operator.LOWER_THAN_OR_EQUAL.valueOf(); + } +} +//# sourceMappingURL=FilterOperator.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterOperator.js.map b/packages/rdx-criteria/src/codelytv/FilterOperator.js.map new file mode 100644 index 00000000..bcfb5bd6 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterOperator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterOperator.js","sourceRoot":"","sources":["FilterOperator.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IACnB,uBAAW,CAAA;IACX,4BAAgB,CAAA;IAChB,8BAAkB,CAAA;IAClB,wCAA4B,CAAA;IAC5B,4BAAgB,CAAA;IAChB,sCAA0B,CAAA;IAC1B,iCAAqB,CAAA;IACrB,yCAA6B,CAAA;AAC9B,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AAED,MAAM,OAAO,cAAc;IACE;IAA5B,YAA4B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAE/C,UAAU;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;IACxE,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterValue.d.ts b/packages/rdx-criteria/src/codelytv/FilterValue.d.ts new file mode 100644 index 00000000..045e1ec1 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterValue.d.ts @@ -0,0 +1,5 @@ +export declare class FilterValue { + readonly value: string; + constructor(value: string); +} +//# sourceMappingURL=FilterValue.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterValue.d.ts.map b/packages/rdx-criteria/src/codelytv/FilterValue.d.ts.map new file mode 100644 index 00000000..c62a1a0c --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterValue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterValue.d.ts","sourceRoot":"","sources":["FilterValue.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;aACK,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CACzC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterValue.js b/packages/rdx-criteria/src/codelytv/FilterValue.js new file mode 100644 index 00000000..1b42e4c5 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterValue.js @@ -0,0 +1,7 @@ +export class FilterValue { + value; + constructor(value) { + this.value = value; + } +} +//# sourceMappingURL=FilterValue.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/FilterValue.js.map b/packages/rdx-criteria/src/codelytv/FilterValue.js.map new file mode 100644 index 00000000..a5c0ca77 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/FilterValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FilterValue.js","sourceRoot":"","sources":["FilterValue.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACK;IAA5B,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;CAC7C"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filters.d.ts b/packages/rdx-criteria/src/codelytv/Filters.d.ts new file mode 100644 index 00000000..56e87e43 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filters.d.ts @@ -0,0 +1,9 @@ +import { Filter, FiltersPrimitives } from "./Filter"; +export declare class Filters { + readonly value: Filter[]; + constructor(value: Filter[]); + static fromPrimitives(filters: FiltersPrimitives[]): Filters; + toPrimitives(): FiltersPrimitives[]; + isEmpty(): boolean; +} +//# sourceMappingURL=Filters.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filters.d.ts.map b/packages/rdx-criteria/src/codelytv/Filters.d.ts.map new file mode 100644 index 00000000..27e28a49 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filters.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["Filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAErD,qBAAa,OAAO;aACS,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;IAE3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAM5D,YAAY,IAAI,iBAAiB,EAAE;IAInC,OAAO,IAAI,OAAO;CAGlB"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filters.js b/packages/rdx-criteria/src/codelytv/Filters.js new file mode 100644 index 00000000..d5b8853f --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filters.js @@ -0,0 +1,17 @@ +import { Filter } from "./Filter"; +export class Filters { + value; + constructor(value) { + this.value = value; + } + static fromPrimitives(filters) { + return new Filters(filters.map((filter) => Filter.fromPrimitives(filter.field, filter.operator, filter.value))); + } + toPrimitives() { + return this.value.map((filter) => filter.toPrimitives()); + } + isEmpty() { + return this.value.length === 0; + } +} +//# sourceMappingURL=Filters.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Filters.js.map b/packages/rdx-criteria/src/codelytv/Filters.js.map new file mode 100644 index 00000000..de3ff8e4 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Filters.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Filters.js","sourceRoot":"","sources":["Filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,UAAU,CAAC;AAErD,MAAM,OAAO,OAAO;IACS;IAA5B,YAA4B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAE/C,MAAM,CAAC,cAAc,CAAC,OAA4B;QACjD,OAAO,IAAI,OAAO,CACjB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAC3F,CAAC;IACH,CAAC;IAED,YAAY;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAChC,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts b/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts new file mode 100644 index 00000000..870c5769 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts @@ -0,0 +1,4 @@ +export declare class InvalidCriteria extends Error { + constructor(); +} +//# sourceMappingURL=InvalidCriteria.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts.map b/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts.map new file mode 100644 index 00000000..42239fbf --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/InvalidCriteria.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InvalidCriteria.d.ts","sourceRoot":"","sources":["InvalidCriteria.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;;CAIzC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/InvalidCriteria.js b/packages/rdx-criteria/src/codelytv/InvalidCriteria.js new file mode 100644 index 00000000..2db446da --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/InvalidCriteria.js @@ -0,0 +1,6 @@ +export class InvalidCriteria extends Error { + constructor() { + super("Page size is required when page number is defined"); + } +} +//# sourceMappingURL=InvalidCriteria.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/InvalidCriteria.js.map b/packages/rdx-criteria/src/codelytv/InvalidCriteria.js.map new file mode 100644 index 00000000..8badc2dd --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/InvalidCriteria.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InvalidCriteria.js","sourceRoot":"","sources":["InvalidCriteria.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACzC;QACC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAC5D,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Order.d.ts b/packages/rdx-criteria/src/codelytv/Order.d.ts new file mode 100644 index 00000000..fdb36298 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Order.d.ts @@ -0,0 +1,11 @@ +import { OrderBy } from "./OrderBy"; +import { OrderType } from "./OrderType"; +export declare class Order { + readonly orderBy: OrderBy; + readonly orderType: OrderType; + constructor(orderBy: OrderBy, orderType: OrderType); + static none(): Order; + static fromPrimitives(orderBy: string | null, orderType: string | null): Order; + isNone(): boolean; +} +//# sourceMappingURL=Order.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Order.d.ts.map b/packages/rdx-criteria/src/codelytv/Order.d.ts.map new file mode 100644 index 00000000..e621b46b --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Order.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Order.d.ts","sourceRoot":"","sources":["Order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAEpD,qBAAa,KAAK;aAEA,OAAO,EAAE,OAAO;aAChB,SAAS,EAAE,SAAS;gBADpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS;IAGrC,MAAM,CAAC,IAAI,IAAI,KAAK;IAIpB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK;IAM9E,MAAM,IAAI,OAAO;CAGjB"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Order.js b/packages/rdx-criteria/src/codelytv/Order.js new file mode 100644 index 00000000..d74fc4b8 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Order.js @@ -0,0 +1,22 @@ +import { OrderBy } from "./OrderBy"; +import { OrderType, OrderTypes } from "./OrderType"; +export class Order { + orderBy; + orderType; + constructor(orderBy, orderType) { + this.orderBy = orderBy; + this.orderType = orderType; + } + static none() { + return new Order(new OrderBy(""), new OrderType(OrderTypes.NONE)); + } + static fromPrimitives(orderBy, orderType) { + return orderBy !== null + ? new Order(new OrderBy(orderBy), new OrderType(orderType)) + : Order.none(); + } + isNone() { + return this.orderType.isNone(); + } +} +//# sourceMappingURL=Order.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/Order.js.map b/packages/rdx-criteria/src/codelytv/Order.js.map new file mode 100644 index 00000000..930c1b5f --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/Order.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Order.js","sourceRoot":"","sources":["Order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,OAAO,KAAK;IAEA;IACA;IAFjB,YACiB,OAAgB,EAChB,SAAoB;QADpB,YAAO,GAAP,OAAO,CAAS;QAChB,cAAS,GAAT,SAAS,CAAW;IAClC,CAAC;IAEJ,MAAM,CAAC,IAAI;QACV,OAAO,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAsB,EAAE,SAAwB;QACrE,OAAO,OAAO,KAAK,IAAI;YACtB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,SAAuB,CAAC,CAAC;YACzE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderBy.d.ts b/packages/rdx-criteria/src/codelytv/OrderBy.d.ts new file mode 100644 index 00000000..079ed7a6 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderBy.d.ts @@ -0,0 +1,5 @@ +export declare class OrderBy { + readonly value: string; + constructor(value: string); +} +//# sourceMappingURL=OrderBy.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderBy.d.ts.map b/packages/rdx-criteria/src/codelytv/OrderBy.d.ts.map new file mode 100644 index 00000000..58e11316 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderBy.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OrderBy.d.ts","sourceRoot":"","sources":["OrderBy.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;aACS,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CACzC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderBy.js b/packages/rdx-criteria/src/codelytv/OrderBy.js new file mode 100644 index 00000000..2fbe0645 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderBy.js @@ -0,0 +1,7 @@ +export class OrderBy { + value; + constructor(value) { + this.value = value; + } +} +//# sourceMappingURL=OrderBy.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderBy.js.map b/packages/rdx-criteria/src/codelytv/OrderBy.js.map new file mode 100644 index 00000000..06045879 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OrderBy.js","sourceRoot":"","sources":["OrderBy.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IACS;IAA5B,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;CAC7C"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderType.d.ts b/packages/rdx-criteria/src/codelytv/OrderType.d.ts new file mode 100644 index 00000000..8a10cd04 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderType.d.ts @@ -0,0 +1,11 @@ +export declare enum OrderTypes { + ASC = "ASC", + DESC = "DESC", + NONE = "NONE" +} +export declare class OrderType { + readonly value: OrderTypes; + constructor(value: OrderTypes); + isNone(): boolean; +} +//# sourceMappingURL=OrderType.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderType.d.ts.map b/packages/rdx-criteria/src/codelytv/OrderType.d.ts.map new file mode 100644 index 00000000..e454c81b --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OrderType.d.ts","sourceRoot":"","sources":["OrderType.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;CACb;AAED,qBAAa,SAAS;aACO,KAAK,EAAE,UAAU;gBAAjB,KAAK,EAAE,UAAU;IAE7C,MAAM,IAAI,OAAO;CAGjB"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderType.js b/packages/rdx-criteria/src/codelytv/OrderType.js new file mode 100644 index 00000000..9e2aa6ed --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderType.js @@ -0,0 +1,16 @@ +export var OrderTypes; +(function (OrderTypes) { + OrderTypes["ASC"] = "ASC"; + OrderTypes["DESC"] = "DESC"; + OrderTypes["NONE"] = "NONE"; +})(OrderTypes || (OrderTypes = {})); +export class OrderType { + value; + constructor(value) { + this.value = value; + } + isNone() { + return this.value === OrderTypes.NONE; + } +} +//# sourceMappingURL=OrderType.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/OrderType.js.map b/packages/rdx-criteria/src/codelytv/OrderType.js.map new file mode 100644 index 00000000..feaffca8 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/OrderType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OrderType.js","sourceRoot":"","sources":["OrderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACrB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,2BAAa,CAAA;AACd,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,OAAO,SAAS;IACO;IAA5B,YAA4B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAEjD,MAAM;QACL,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC;IACvC,CAAC;CACD"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/index.d.ts b/packages/rdx-criteria/src/codelytv/index.d.ts new file mode 100644 index 00000000..9fc1a162 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/index.d.ts @@ -0,0 +1,11 @@ +export * from "./Criteria"; +export * from "./Filter"; +export * from "./FilterField"; +export * from "./FilterOperator"; +export * from "./Filters"; +export * from "./FilterValue"; +export * from "./InvalidCriteria"; +export * from "./Order"; +export * from "./OrderBy"; +export * from "./OrderType"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/index.d.ts.map b/packages/rdx-criteria/src/codelytv/index.d.ts.map new file mode 100644 index 00000000..cf9cf43a --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/index.js b/packages/rdx-criteria/src/codelytv/index.js new file mode 100644 index 00000000..62a536e1 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/index.js @@ -0,0 +1,11 @@ +export * from "./Criteria"; +export * from "./Filter"; +export * from "./FilterField"; +export * from "./FilterOperator"; +export * from "./Filters"; +export * from "./FilterValue"; +export * from "./InvalidCriteria"; +export * from "./Order"; +export * from "./OrderBy"; +export * from "./OrderType"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/rdx-criteria/src/codelytv/index.js.map b/packages/rdx-criteria/src/codelytv/index.js.map new file mode 100644 index 00000000..f3c71a81 --- /dev/null +++ b/packages/rdx-criteria/src/codelytv/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/rdx-criteria/src/types.d.ts b/packages/rdx-criteria/src/types.ts similarity index 94% rename from packages/rdx-criteria/src/types.d.ts rename to packages/rdx-criteria/src/types.ts index dfe6d2e8..9d441c8f 100644 --- a/packages/rdx-criteria/src/types.d.ts +++ b/packages/rdx-criteria/src/types.ts @@ -1,5 +1,5 @@ -import { FindOptions } from "sequelize"; -import { Criteria } from "./critera"; +import { FindOptions, Sequelize } from "sequelize"; +import { Criteria } from "./critera.js"; /** * Mapeo lógico→físico de campos. diff --git a/packages/rdx-criteria/tsconfig.json b/packages/rdx-criteria/tsconfig.json index 4401f691..ef26e5af 100644 --- a/packages/rdx-criteria/tsconfig.json +++ b/packages/rdx-criteria/tsconfig.json @@ -1,7 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { - "composite": true + "rootDir": "src" }, - "include": ["src"] + "include": ["src"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/packages/rdx-ddd/package.json b/packages/rdx-ddd/package.json index 2975abb8..b847980d 100644 --- a/packages/rdx-ddd/package.json +++ b/packages/rdx-ddd/package.json @@ -1,14 +1,19 @@ { "name": "@repo/rdx-ddd", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + "scripts": { - "clean": "rm -rf node_modules" + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" }, + "exports": { ".": "./src/index.ts" }, + "devDependencies": { "@repo/typescript-config": "workspace:*", "@types/node": "^22.15.12", diff --git a/packages/rdx-ddd/tsconfig.json b/packages/rdx-ddd/tsconfig.json index ae0d7f37..ef26e5af 100644 --- a/packages/rdx-ddd/tsconfig.json +++ b/packages/rdx-ddd/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { - "lib": ["es2022", "dom"], - "composite": true + "rootDir": "src" }, - "include": ["src"] + "include": ["src"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/packages/rdx-logger/package.json b/packages/rdx-logger/package.json index 4dfdf125..d2a36e0c 100644 --- a/packages/rdx-logger/package.json +++ b/packages/rdx-logger/package.json @@ -1,14 +1,19 @@ { "name": "@repo/rdx-logger", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + "scripts": { - "clean": "rm -rf node_modules" + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" }, + "exports": { ".": "./src/index.ts" }, + "devDependencies": { "typescript": "^5.9.3" }, diff --git a/packages/rdx-logger/tsconfig.json b/packages/rdx-logger/tsconfig.json index 38f86a52..ef26e5af 100644 --- a/packages/rdx-logger/tsconfig.json +++ b/packages/rdx-logger/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { - "composite": true + "rootDir": "src" }, "include": ["src"], - "exclude": ["src/**/__tests__/*"] + "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/packages/rdx-utils/package.json b/packages/rdx-utils/package.json index ceaf224a..4ae72068 100644 --- a/packages/rdx-utils/package.json +++ b/packages/rdx-utils/package.json @@ -1,14 +1,19 @@ { "name": "@repo/rdx-utils", "version": "0.0.1", - "main": "src/index.ts", - "types": "src/index.ts", + "private": true, + "type": "module", + "sideEffects": false, + "scripts": { - "clean": "rm -rf node_modules" + "typecheck": "tsc -p tsconfig.json --noEmit", + "clean": "rimraf .turbo node_modules dist" }, + "exports": { ".": "./src/index.ts" }, + "devDependencies": { "@repo/typescript-config": "workspace:*", "@types/node": "^22.15.12", diff --git a/packages/rdx-utils/tsconfig.json b/packages/rdx-utils/tsconfig.json index 38f86a52..ef26e5af 100644 --- a/packages/rdx-utils/tsconfig.json +++ b/packages/rdx-utils/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "@repo/typescript-config/buildless.json", "compilerOptions": { - "composite": true + "rootDir": "src" }, "include": ["src"], - "exclude": ["src/**/__tests__/*"] + "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/packages/typescript-config/buildable.json b/packages/typescript-config/buildable.json new file mode 100644 index 00000000..2ddaf070 --- /dev/null +++ b/packages/typescript-config/buildable.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "removeComments": false, + "noEmit": false + } +} diff --git a/packages/typescript-config/buildless.json b/packages/typescript-config/buildless.json new file mode 100644 index 00000000..7feb7fd7 --- /dev/null +++ b/packages/typescript-config/buildless.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "noEmit": true, + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a3accf1..1794ec3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: plop: specifier: ^4.0.4 version: 4.0.4(@types/node@22.18.10) + rimraf: + specifier: ^5.0.5 + version: 5.0.10 ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) @@ -159,9 +162,6 @@ importers: '@types/glob': specifier: ^8.1.0 version: 8.1.0 - '@types/jest': - specifier: ^29.5.14 - version: 29.5.14 '@types/jsonwebtoken': specifier: ^9.0.8 version: 9.0.10 @@ -183,6 +183,9 @@ importers: '@types/response-time': specifier: ^2.3.8 version: 2.3.9 + rimraf: + specifier: ^6.0.0 + version: 6.0.1 tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -745,9 +748,6 @@ importers: packages/rdx-criteria: dependencies: - '@codelytv/criteria': - specifier: ^2.0.0 - version: 2.0.0 sequelize: specifier: ^6.37.5 version: 6.37.7(mysql2@3.15.2) @@ -755,6 +755,12 @@ importers: '@repo/typescript-config': specifier: workspace:* version: link:../typescript-config + rimraf: + specifier: ^6.0.0 + version: 6.0.1 + typescript: + specifier: ^5.9.3 + version: 5.9.3 packages/rdx-ddd: dependencies: @@ -1282,9 +1288,6 @@ packages: cpu: [x64] os: [win32] - '@codelytv/criteria@2.0.0': - resolution: {integrity: sha512-EgXNABlN3vBsfIplqsEMcUX836SzoTeHoE4m8H/9pujiAw/vuDam27x+AnwpJmW2XHkzMk39G9wsejopFN4kTQ==} - '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -1716,6 +1719,14 @@ packages: '@types/node': optional: true + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1724,18 +1735,6 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -2613,9 +2612,6 @@ packages: '@sideway/pinpoint@2.0.0': resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@so-ric/colorspace@1.1.6': resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} @@ -2863,18 +2859,6 @@ packages: '@types/inquirer@9.0.9': resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==} - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - '@types/jsonwebtoken@9.0.10': resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} @@ -2959,9 +2943,6 @@ packages: '@types/serve-static@1.15.9': resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} @@ -2977,12 +2958,6 @@ packages: '@types/validator@13.15.3': resolution: {integrity: sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==} - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -3084,10 +3059,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} @@ -3348,10 +3319,6 @@ packages: peerDependencies: devtools-protocol: '*' - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -3694,10 +3661,6 @@ packages: devtools-protocol@0.0.1508733: resolution: {integrity: sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -3861,10 +3824,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -3915,10 +3874,6 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express-list-routes@1.3.1: resolution: {integrity: sha512-HC8gpFjmeoJv1f2vJVBJHThA9XXVSOzIQd0I6WvB9G/E7Yy6f8AnFkam7GJRz/+JJQG3fX49eXWhVqjdNj32dw==} @@ -4129,6 +4084,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -4445,31 +4405,15 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jake@10.9.4: resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -4688,6 +4632,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4769,6 +4717,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -5098,6 +5050,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -5239,10 +5195,6 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -5516,6 +5468,15 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + rollup@4.52.4: resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5738,10 +5699,6 @@ packages: stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -6588,8 +6545,6 @@ snapshots: '@biomejs/cli-win32-x64@2.3.1': optional: true - '@codelytv/criteria@2.0.0': {} - '@colors/colors@1.6.0': {} '@cspotcode/source-map-support@0.8.1': @@ -6976,6 +6931,12 @@ snapshots: optionalDependencies: '@types/node': 22.18.10 + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -6989,23 +6950,6 @@ snapshots: dependencies: minipass: 7.1.2 - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.18.10 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7884,8 +7828,6 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.27.8': {} - '@so-ric/colorspace@1.1.6': dependencies: color: 5.0.2 @@ -8167,21 +8109,6 @@ snapshots: '@types/through': 0.0.33 rxjs: 7.8.2 - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 @@ -8285,8 +8212,6 @@ snapshots: '@types/node': 22.18.10 '@types/send': 0.17.5 - '@types/stack-utils@2.0.3': {} - '@types/stylis@4.2.5': {} '@types/through@0.0.33': @@ -8299,12 +8224,6 @@ snapshots: '@types/validator@13.15.3': {} - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - '@types/yauzl@2.10.3': dependencies: '@types/node': 22.18.10 @@ -8421,8 +8340,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -8700,8 +8617,6 @@ snapshots: mitt: 3.0.1 zod: 3.25.76 - ci-info@3.9.0: {} - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -8985,8 +8900,6 @@ snapshots: devtools-protocol@0.0.1508733: {} - diff-sequences@29.6.3: {} - diff@4.0.2: {} dinero.js@1.9.1: {} @@ -9162,8 +9075,6 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escodegen@2.1.0: @@ -9214,14 +9125,6 @@ snapshots: expect-type@1.2.2: {} - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - express-list-routes@1.3.1: {} express@4.21.2: @@ -9488,6 +9391,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.1.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -9833,49 +9745,16 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jake@10.9.4: dependencies: async: 3.2.6 filelist: 1.0.4 picocolors: 1.1.1 - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-get-type@29.6.3: {} - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.18.10 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - jiti@2.6.1: {} joi@17.13.3: @@ -10079,6 +9958,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.2.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -10138,6 +10019,10 @@ snapshots: mimic-fn@2.1.0: {} + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -10497,6 +10382,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.2.2 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} path-type@4.0.0: {} @@ -10627,12 +10517,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - process@0.11.10: {} progress@2.0.3: {} @@ -10939,6 +10823,15 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rimraf@6.0.1: + dependencies: + glob: 11.0.3 + package-json-from-dist: 1.0.1 + rollup@4.52.4: dependencies: '@types/estree': 1.0.8 @@ -11171,10 +11064,6 @@ snapshots: stack-trace@0.0.10: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} statuses@2.0.1: {} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..032e9f48 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "NodeNext", + "lib": ["ES2022"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "noEmitOnError": true, + "types": [] + } +} diff --git a/tsconfig.json.bak b/tsconfig.json.bak new file mode 100644 index 00000000..24e2a1ef --- /dev/null +++ b/tsconfig.json.bak @@ -0,0 +1,4 @@ +{ + "extends": "@repo/typescript-config/root.json", + "include": ["apps", "modules", "packages"] +}