tuain-ecosystem-lib
v1.3.22
Published
Servicio de gestión de ecosistemas digitales de la plataforma Tuain
Readme
tuain-ecosystem-lib
Librería de gestión del ecosistema digital de la plataforma Tuain. Expone un EcosystemManager con un
gestor por dominio (terceros, sucursales, usuarios, productos, precios, dispositivos, terminales,
grupos, parámetros, setups y ambiente).
const EcosystemManager = require('tuain-ecosystem-lib');
const ecosystem = new EcosystemManager(databaseParams, logger, errMgr, privateKeyFile, databasePool, options);
const [error, groups] = await ecosystem.storeManager.findAllStoresGroups();Todo método devuelve la tupla [error, resultado]: error es un objeto del gestor de errores
(@tuain/error-manager) y es null cuando la operación salió bien.
Requisitos
- Node >= 18
- Un pool de conexión a MongoDB que exponga
db()(el drivermongodb3.x queda del lado del consumidor: la librería no lo empaqueta, para que exista una sola copia del driver).
Desarrollo
npm install
npm test # pruebas (levanta un MongoDB efímero)
npm run test:coverage # pruebas + reporte de cobertura (exige 90% global)
npm run test:watch
npm run lint
npm run format:check
npm run build # genera dist/index.js
npm run verify # build + pruebas + revisión del tarballPruebas
Las pruebas corren con jest sobre un MongoDB real y efímero (mongodb-memory-server), no
sobre dobles: la mayor parte de la lógica de la librería son queries y agregaciones, y un doble no
las prueba. La primera corrida descarga el binario de mongod (~80 MB) y lo deja en caché.
test/queries/— contratos deconfig/db-queries(funciones puras: forma del filtro o del pipeline).test/managers/— cada manager delib/ecosystemcontra la base real, camino feliz y ramas de error.test/integration/— pruebas transversales: catálogo de errores de los 11 managers, regresiones de ramas de error y el artefacto empaquetado.test/helpers/— arranque de mongod, construcción del manager y del gestor de errores.test/fixtures/— constructores de documentos.
mongod se levanta una sola vez por corrida (globalSetup) y se comparte entre los workers de
jest; cada worker usa su propia base (ecosystem_test_<workerId>) y las colecciones se vacían antes
de cada prueba, así que las pruebas siguen corriendo en paralelo sin pisarse.
jest.config.js exige 90% global en sentencias, ramas, funciones y líneas: una corrida que baje de
ahí falla aunque todas las pruebas pasen.
En Ubuntu 24.04 los binarios de mongod 4.4/5.0 no arrancan (se enlazan contra libssl1.1 y el sistema
solo trae OpenSSL 3), por eso se usa 7.0.x. Se puede cambiar con MONGOMS_VERSION.
Publicación
Lo que se publica en npm es solo el artefacto empaquetado, no el código fuente:
npm run buildgeneradist/index.js: un único CommonJS con todo el código propio bundleado y minificado (esbuild). Las dependencias declaradas quedan externas.package.jsonapunta a ese archivo (main) yfileslimita el tarball adist,package.jsony este README.prepublishOnlycorre el build y las pruebas, así quenpm publishno puede publicar un artefacto desactualizado ni con pruebas rojas.
npm version patch # o minor / major
npm publishdist/ no se versiona: es un artefacto generado.
Restricción del empaquetado: no puede haber
requirecalculados en tiempo de ejecución. Por esoconfig/db-queries/index.jsdeclara sus dominios con requires explícitos; al agregar un dominio nuevo hay que registrarlo ahí (hay una prueba que lo verifica).
