diff --git a/server/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json similarity index 98% rename from server/.devcontainer/devcontainer.json rename to .devcontainer/devcontainer.json index 3ced3c6..1e6bff9 100644 --- a/server/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ // Update the 'dockerComposeFile' list if you have more compose files or use different names. // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. "dockerComposeFile": [ - "../docker-compose.dev.yaml", + "../server/docker-compose.dev.yaml", "docker-compose.yml" ], diff --git a/server/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml similarity index 100% rename from server/.devcontainer/docker-compose.yml rename to .devcontainer/docker-compose.yml diff --git a/server/.env.test.example b/server/.env.test.example deleted file mode 100644 index 7a3f1a6..0000000 --- a/server/.env.test.example +++ /dev/null @@ -1 +0,0 @@ -DATABASE_URL = "postgresql://postgres:postgres@db:5432/supertest?schema=public" \ No newline at end of file diff --git a/server/.swcrc b/server/.swcrc new file mode 100644 index 0000000..aa46d4e --- /dev/null +++ b/server/.swcrc @@ -0,0 +1,18 @@ +{ + "$schema": "https://swc.rs/schema.json", + "sourceMaps": true, + "jsc": { + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "legacyDecorator": true, + "decoratorMetadata": true + }, + "baseUrl": "./", + "keepClassNames": true + }, + "minify": false +} diff --git a/server/docker-compose.dev.yaml b/server/docker-compose.dev.yaml index c8da08b..87abd20 100644 --- a/server/docker-compose.dev.yaml +++ b/server/docker-compose.dev.yaml @@ -7,11 +7,10 @@ services: ports: - '5000:5000' volumes: - - .:/home/node/app + - ..:/home/node/app extra_hosts: - "host.docker.internal:host-gateway" - db: build: .docker/postgres container_name: nogain-dev-db @@ -22,4 +21,4 @@ services: volumes: - ./.docker/postgres/data:/var/lib/postgresql/data ports: - - "5432:5432" \ No newline at end of file + - "5432:5432" \ No newline at end of file diff --git a/server/docker-compose.yaml b/server/docker-compose.yaml index 1ce12ce..d76f975 100644 --- a/server/docker-compose.yaml +++ b/server/docker-compose.yaml @@ -7,12 +7,11 @@ services: ports: - "5000:5000" volumes: - - .:/app + - .:/home/node/app depends_on: - db networks: - tcc-network - db: build: .docker/postgres container_name: backend-db diff --git a/server/jest.config.ts b/server/jest.config.ts index f0b658d..07837fc 100644 --- a/server/jest.config.ts +++ b/server/jest.config.ts @@ -1,198 +1,25 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -export default { - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "/tmp/jest_0", - - // Automatically clear mock calls, instances, contexts and results before every test - // clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - // collectCoverage: true, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - // collectCoverageFrom: undefined, - - // The directory where Jest should output its coverage files - // coverageDirectory: "coverage", - - // An array of regexp pattern strings used to skip coverage collection - // coveragePathIgnorePatterns: [ - // "/node_modules/" - // ], - - // Indicates which provider should be used to instrument code for coverage - // coverageProvider: "v8", - - // A list of reporter names that Jest uses when writing coverage reports - // coverageReporters: [ - // "json", - // "text", - // "lcov", - // "clover" - // ], - - // An object that configures minimum threshold enforcement for coverage results - // coverageThreshold: undefined, - - // A path to a custom dependency extractor - // dependencyExtractor: undefined, - - // Make calling deprecated APIs throw helpful error messages - // errorOnDeprecated: false, - - // The default configuration for fake timers - // fakeTimers: { - // "enableGlobally": false - // }, - - // Force coverage collection from ignored files using an array of glob patterns - // forceCoverageMatch: [], - - // A path to a module which exports an async function that is triggered once before all test suites - // globalSetup: undefined, - - // A path to a module which exports an async function that is triggered once after all test suites - // globalTeardown: undefined, - - // A set of global variables that need to be available in all test environments - // globals: {}, - - // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. - // maxWorkers: "50%", - - // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: [ - // "node_modules" - // ], - - // An array of file extensions your modules use - // moduleFileExtensions: [ - // "js", - // "mjs", - // "cjs", - // "jsx", - // "ts", - // "tsx", - // "json", - // "node" - // ], - - // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - // moduleNameMapper: {}, - - // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], - - // Activates notifications for test results - // notify: false, - - // An enum that specifies notification mode. Requires { notify: true } - // notifyMode: "failure-change", - - // A preset that is used as a base for Jest's configuration - // preset: "ts-jest", - - // Run tests from one or more projects - // projects: undefined, - - // Use this configuration option to add custom reporters to Jest - // reporters: undefined, - - // Automatically reset mock state before every test - // resetMocks: false, - - // Reset the module registry before running each individual test - // resetModules: false, - - // A path to a custom resolver - // resolver: undefined, - - // Automatically restore mock state and implementation before every test - // restoreMocks: false, - - // The root directory that Jest should scan for tests and modules within - // rootDir: undefined, - - // A list of paths to directories that Jest should use to search for files in - // roots: [ - // "" - // ], - - // Allows you to use a custom runner instead of Jest's default test runner - // runner: "jest-runner", - - // The paths to modules that run some code to configure or set up the testing environment before each test - // setupFiles: [], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - // setupFilesAfterEnv: [], - - // The number of seconds after which a test is considered as slow and reported as such in the results. - // slowTestThreshold: 5, - - // A list of paths to snapshot serializer modules Jest should use for snapshot testing - // snapshotSerializers: [], - - // The test environment that will be used for testing - // testEnvironment: "jest-environment-node", - - // Options that will be passed to the testEnvironment - // testEnvironmentOptions: {}, - - // Adds a location field to test results - // testLocationInResults: false, - - // The glob patterns Jest uses to detect test files - // testMatch: [ - // "**/__tests__/**/*.[jt]s?(x)", - // "**/?(*.)+(spec|test).[tj]s?(x)" - // ], - - // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - // testPathIgnorePatterns: [ - // "/node_modules/" - // ], - - // The regexp pattern or array of patterns that Jest uses to detect test files - // testRegex: [], - - // This option allows the use of a custom results processor - // testResultsProcessor: undefined, - - // This option allows use of a custom test runner - // testRunner: "jest-circus/runner", - - // A map from regular expressions to paths to transformers - // transform: undefined, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - // transformIgnorePatterns: [ - // "/node_modules/", - // "\\.pnp\\.[^\\/]+$" - // ], - - // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them - // unmockedModulePathPatterns: undefined, - - // Indicates whether each individual test should be reported during the run - // verbose: undefined, - - // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode - // watchPathIgnorePatterns: [], - - // Whether to use watchman for file crawling - // watchman: true, +import type { Config } from 'jest'; +const config: Config = { + moduleFileExtensions: ['ts', 'js', 'json'], + rootDir: './src', + testEnvironment: 'node', + testRegex: ".*\\.spec\\.ts$", + transform: { + '^.+\\.(t|j)s$': '@swc/jest', + }, + collectCoverageFrom: ['**/*.(t|j)s'], + coverageDirectory: '../coverage', + moduleNameMapper: { + '^src/(.*)$': '/$1', + }, + + setupFiles: ['reflect-metadata'], clearMocks: true, logHeapUsage: true, + coverageProvider: 'v8', +coveragePathIgnorePatterns: ['/node_modules/'], }; + + +export default config; \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json index b0777d6..ca14b4e 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -14,19 +14,22 @@ "@types/bcryptjs": "^3.0.0", "@types/jsonwebtoken": "^9.0.10", "@types/uuid": "^11.0.0", - "axios": "^1.13.4", "bcryptjs": "^3.0.3", "express": "^5.2.1", "express-validator": "^7.3.1", "jsonwebtoken": "^9.0.3", + "nodemon": "^3.1.11", "pg": "^8.17.2", + "pino": "^10.3.0", + "pino-http": "^11.0.0", "reflect-metadata": "^0.2.2", - "ts-node-dev": "^2.0.0", "zod": "^4.3.6" }, "devDependencies": { "@biomejs/biome": "^2.3.13", "@mermaid-js/mermaid-cli": "^11.12.0", + "@swc/core": "^1.15.11", + "@swc/jest": "^0.2.39", "@types/body-parser": "^1.19.6", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", @@ -92,7 +95,6 @@ "version": "7.28.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", @@ -460,7 +462,6 @@ "version": "7.28.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -718,6 +719,7 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -729,8 +731,7 @@ "node_modules/@electric-sql/pglite": { "version": "0.3.15", "devOptional": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -1169,6 +1170,19 @@ "node": ">=8" } }, + "node_modules/@jest/create-cache-key-function": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-30.2.0.tgz", + "integrity": "sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/diff-sequences": { "version": "30.0.1", "dev": true, @@ -1684,6 +1698,7 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1691,10 +1706,12 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -1859,6 +1876,12 @@ "@noble/hashes": "^1.1.5" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "dev": true, @@ -1902,7 +1925,6 @@ "node_modules/@prisma/client": { "version": "7.3.0", "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/client-runtime-utils": "7.3.0" }, @@ -2069,6 +2091,7 @@ "version": "2.6.1", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "debug": "^4.4.0", "extract-zip": "^2.0.1", @@ -2090,6 +2113,7 @@ "version": "7.7.3", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -2252,6 +2276,222 @@ "devOptional": true, "license": "MIT" }, + "node_modules/@swc/core": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz", + "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.11", + "@swc/core-darwin-x64": "1.15.11", + "@swc/core-linux-arm-gnueabihf": "1.15.11", + "@swc/core-linux-arm64-gnu": "1.15.11", + "@swc/core-linux-arm64-musl": "1.15.11", + "@swc/core-linux-x64-gnu": "1.15.11", + "@swc/core-linux-x64-musl": "1.15.11", + "@swc/core-win32-arm64-msvc": "1.15.11", + "@swc/core-win32-ia32-msvc": "1.15.11", + "@swc/core-win32-x64-msvc": "1.15.11" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", + "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", + "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", + "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", + "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", + "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", + "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", + "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", + "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", + "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", + "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@swc/helpers": { "version": "0.5.18", "dev": true, @@ -2260,6 +2500,34 @@ "tslib": "^2.8.0" } }, + "node_modules/@swc/jest": { + "version": "0.2.39", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.39.tgz", + "integrity": "sha512-eyokjOwYd0Q8RnMHri+8/FS1HIrIUKK/sRrFp8c1dThUOfNeCWbLmBP1P5VsKdvmkd25JaH+OKYwEYiAYg9YAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^30.0.0", + "@swc/counter": "^0.1.3", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, "node_modules/@tanstack/react-virtual": { "version": "3.13.18", "dev": true, @@ -2288,22 +2556,27 @@ "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@tsconfig/node10": { "version": "1.0.8", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.9", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.1", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.2", + "dev": true, "license": "MIT" }, "node_modules/@tybys/wasm-util": { @@ -2742,14 +3015,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "license": "MIT" - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "license": "MIT" - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "dev": true, @@ -2787,6 +3052,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -3095,8 +3361,78 @@ "node": ">=20" } }, + "node_modules/@zenuml/core/node_modules/pino": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@zenuml/core/node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/@zenuml/core/node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zenuml/core/node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zenuml/core/node_modules/sonic-boom": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", + "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/@zenuml/core/node_modules/thread-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", + "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/abort-controller": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, "license": "MIT", "dependencies": { @@ -3119,6 +3455,7 @@ }, "node_modules/acorn": { "version": "8.15.0", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -3129,6 +3466,7 @@ }, "node_modules/acorn-walk": { "version": "8.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -3138,6 +3476,7 @@ "version": "7.1.4", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -3201,6 +3540,7 @@ }, "node_modules/arg": { "version": "4.1.3", + "dev": true, "license": "MIT" }, "node_modules/argparse": { @@ -3220,6 +3560,7 @@ "version": "0.13.4", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.0.1" }, @@ -3229,11 +3570,11 @@ }, "node_modules/asynckit": { "version": "0.4.0", + "dev": true, "license": "MIT" }, "node_modules/atomic-sleep": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -3247,19 +3588,11 @@ "node": ">= 6.0.0" } }, - "node_modules/axios": { - "version": "1.13.4", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/b4a": { "version": "1.7.3", "dev": true, "license": "Apache-2.0", + "peer": true, "peerDependencies": { "react-native-b4a": "*" }, @@ -3406,6 +3739,7 @@ "version": "2.8.2", "dev": true, "license": "Apache-2.0", + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -3420,6 +3754,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", @@ -3444,6 +3779,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "engines": { "bare": ">=1.14.0" } @@ -3453,6 +3789,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "bare-os": "^3.0.1" } @@ -3462,6 +3799,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "streamx": "^2.21.0" }, @@ -3483,6 +3821,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -3518,6 +3857,7 @@ "version": "5.1.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" } @@ -3594,7 +3934,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3630,6 +3969,8 @@ }, "node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -3655,6 +3996,7 @@ "version": "0.2.13", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "*" } @@ -3665,6 +4007,7 @@ }, "node_modules/buffer-from": { "version": "1.1.2", + "dev": true, "license": "MIT" }, "node_modules/bytes": { @@ -3884,6 +4227,7 @@ "version": "0.11.0", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "mitt": "3.0.1", "zod": "3.23.8" @@ -3898,6 +4242,7 @@ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -4012,6 +4357,7 @@ }, "node_modules/combined-stream": { "version": "1.0.8", + "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -4107,6 +4453,7 @@ "version": "9.0.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -4131,12 +4478,14 @@ "node_modules/cosmiconfig/node_modules/argparse": { "version": "2.0.1", "dev": true, - "license": "Python-2.0" + "license": "Python-2.0", + "peer": true }, "node_modules/cosmiconfig/node_modules/js-yaml": { "version": "4.1.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -4146,6 +4495,7 @@ }, "node_modules/create-require": { "version": "1.1.1", + "dev": true, "license": "MIT" }, "node_modules/cross-spawn": { @@ -4175,13 +4525,13 @@ "node_modules/csstype": { "version": "3.2.3", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/cytoscape": { "version": "3.33.1", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10" } @@ -4567,7 +4917,6 @@ "version": "3.0.0", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -4659,6 +5008,7 @@ "version": "6.0.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -4721,6 +5071,7 @@ "version": "5.0.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -4740,6 +5091,7 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -4795,6 +5147,7 @@ }, "node_modules/diff": { "version": "4.0.2", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -4836,13 +5189,6 @@ "node": ">= 0.4" } }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "dev": true, @@ -4908,6 +5254,7 @@ "version": "1.4.5", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "once": "^1.4.0" } @@ -4927,6 +5274,7 @@ "version": "2.2.1", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -4965,6 +5313,7 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -5000,6 +5349,7 @@ "version": "2.1.0", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -5032,6 +5382,7 @@ "version": "5.3.0", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -5040,6 +5391,7 @@ "version": "2.0.3", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5053,6 +5405,8 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, "license": "MIT", "engines": { @@ -5061,6 +5415,8 @@ }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", "engines": { @@ -5071,6 +5427,7 @@ "version": "1.0.1", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-events": "^2.7.0" } @@ -5182,6 +5539,7 @@ "version": "2.0.1", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -5201,6 +5559,7 @@ "version": "5.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -5250,7 +5609,8 @@ "node_modules/fast-fifo": { "version": "1.3.2", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fast-glob": { "version": "3.3.3", @@ -5274,6 +5634,8 @@ }, "node_modules/fast-redact": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "dev": true, "license": "MIT", "engines": { @@ -5305,6 +5667,7 @@ "version": "1.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -5350,24 +5713,6 @@ "node": ">=8" } }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/foreground-child": { "version": "3.3.1", "devOptional": true, @@ -5396,6 +5741,7 @@ }, "node_modules/form-data": { "version": "4.0.5", + "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -5410,6 +5756,7 @@ }, "node_modules/form-data/node_modules/mime-db": { "version": "1.52.0", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -5417,6 +5764,7 @@ }, "node_modules/form-data/node_modules/mime-types": { "version": "2.1.35", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -5457,6 +5805,7 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -5498,7 +5847,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -5565,6 +5913,7 @@ "version": "6.0.5", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -5592,6 +5941,7 @@ }, "node_modules/glob": { "version": "7.2.3", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5687,6 +6037,7 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -5720,7 +6071,6 @@ "version": "4.11.4", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -5757,6 +6107,7 @@ "version": "7.0.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -5774,6 +6125,7 @@ "version": "7.0.6", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -5823,6 +6175,12 @@ ], "license": "BSD-3-Clause" }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "license": "ISC" + }, "node_modules/immer": { "version": "10.2.0", "dev": true, @@ -5836,6 +6194,7 @@ "version": "3.3.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5851,6 +6210,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -5892,6 +6252,7 @@ }, "node_modules/inflight": { "version": "1.0.6", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -5914,6 +6275,7 @@ "version": "10.1.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 12" } @@ -5942,6 +6304,7 @@ }, "node_modules/is-core-module": { "version": "2.16.1", + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -6128,7 +6491,6 @@ "version": "30.2.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.2.0", "@jest/types": "30.2.0", @@ -7451,6 +7813,13 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonwebtoken": { "version": "9.0.3", "license": "MIT", @@ -7686,6 +8055,7 @@ }, "node_modules/make-error": { "version": "1.3.6", + "dev": true, "license": "ISC" }, "node_modules/makeerror": { @@ -7774,7 +8144,6 @@ "version": "11.12.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", @@ -7893,6 +8262,7 @@ }, "node_modules/minimist": { "version": "1.2.6", + "dev": true, "license": "MIT" }, "node_modules/minipass": { @@ -7906,17 +8276,8 @@ "node_modules/mitt": { "version": "3.0.1", "dev": true, - "license": "MIT" - }, - "node_modules/mkdirp": { - "version": "1.0.4", "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } + "peer": true }, "node_modules/mlly": { "version": "1.8.0", @@ -8025,6 +8386,7 @@ "version": "2.0.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -8044,6 +8406,67 @@ "dev": true, "license": "MIT" }, + "node_modules/nodemon": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz", + "integrity": "sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "license": "MIT", @@ -8116,7 +8539,6 @@ }, "node_modules/on-exit-leak-free": { "version": "2.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -8190,6 +8612,7 @@ "version": "7.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -8208,6 +8631,7 @@ "version": "7.0.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -8235,6 +8659,7 @@ "version": "1.0.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -8281,6 +8706,7 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8296,6 +8722,7 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -8334,7 +8761,8 @@ "node_modules/pend": { "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/perfect-debounce": { "version": "1.0.0", @@ -8344,7 +8772,6 @@ "node_modules/pg": { "version": "8.17.2", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.10.1", "pg-pool": "^3.11.0", @@ -8439,38 +8866,52 @@ } }, "node_modules/pino": { - "version": "8.21.0", - "dev": true, + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.0.tgz", + "integrity": "sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==", "license": "MIT", "dependencies": { + "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.6.0" + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" }, "bin": { "pino": "bin.js" } }, "node_modules/pino-abstract-transport": { - "version": "1.2.0", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", "license": "MIT", "dependencies": { - "readable-stream": "^4.0.0", "split2": "^4.0.0" } }, + "node_modules/pino-http": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-11.0.0.tgz", + "integrity": "sha512-wqg5XIAGRRIWtTk8qPGxkbrfiwEWz1lgedVLvhLALudKXvg1/L2lTFgTGPJ4Z2e3qcRmxoFxDuSdMdMGNM6I1g==", + "license": "MIT", + "dependencies": { + "get-caller-file": "^2.0.5", + "pino": "^10.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0" + } + }, "node_modules/pino-std-serializers": { - "version": "6.2.2", - "dev": true, + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", + "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", "license": "MIT" }, "node_modules/pirates": { @@ -8534,7 +8975,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8738,7 +9178,6 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/config": "7.3.0", "@prisma/dev": "0.20.0", @@ -8787,6 +9226,8 @@ }, "node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, "license": "MIT", "engines": { @@ -8794,14 +9235,26 @@ } }, "node_modules/process-warning": { - "version": "3.0.0", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.4.0" } @@ -8831,6 +9284,7 @@ "version": "6.5.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -8849,18 +9303,28 @@ "version": "7.18.3", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": ">=12" } }, "node_modules/proxy-from-env": { "version": "1.1.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "license": "MIT" }, "node_modules/pump": { "version": "3.0.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -8899,6 +9363,7 @@ "version": "23.11.1", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@puppeteer/browsers": "2.6.1", "chromium-bidi": "0.11.0", @@ -8960,7 +9425,6 @@ }, "node_modules/quick-format-unescaped": { "version": "4.0.4", - "dev": true, "license": "MIT" }, "node_modules/radash": { @@ -9013,7 +9477,6 @@ "version": "19.2.4", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9022,7 +9485,6 @@ "version": "19.2.4", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -9045,6 +9507,8 @@ }, "node_modules/readable-stream": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -9070,7 +9534,6 @@ }, "node_modules/real-require": { "version": "0.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -9103,6 +9566,7 @@ }, "node_modules/resolve": { "version": "1.22.11", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", @@ -9155,16 +9619,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/robust-predicates": { "version": "3.0.2", "dev": true, @@ -9242,7 +9696,6 @@ }, "node_modules/safe-stable-stringify": { "version": "2.5.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -9402,6 +9855,30 @@ "devOptional": true, "license": "ISC" }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -9414,6 +9891,7 @@ "version": "4.2.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -9423,6 +9901,7 @@ "version": "2.8.7", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -9436,6 +9915,7 @@ "version": "8.0.5", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -9446,8 +9926,9 @@ } }, "node_modules/sonic-boom": { - "version": "3.8.1", - "dev": true, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -9455,6 +9936,7 @@ }, "node_modules/source-map": { "version": "0.6.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -9468,14 +9950,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/split2": { "version": "4.1.0", "license": "ISC", @@ -9523,6 +9997,7 @@ "version": "2.23.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", @@ -9531,6 +10006,8 @@ }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { @@ -9599,13 +10076,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "dev": true, @@ -9614,13 +10084,6 @@ "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stylis": { "version": "4.3.6", "dev": true, @@ -9703,6 +10166,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9743,7 +10207,6 @@ "version": "3.4.19", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -9815,6 +10278,7 @@ "version": "3.1.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -9828,6 +10292,7 @@ "version": "3.1.7", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -9851,6 +10316,7 @@ "version": "1.2.3", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "b4a": "^1.6.4" } @@ -9875,17 +10341,22 @@ } }, "node_modules/thread-stream": { - "version": "2.7.0", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", "license": "MIT", "dependencies": { "real-require": "^0.2.0" + }, + "engines": { + "node": ">=20" } }, "node_modules/through": { "version": "2.3.8", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tinyexec": { "version": "1.0.2", @@ -9930,7 +10401,6 @@ "version": "4.0.3", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9960,11 +10430,13 @@ "node": ">=0.6" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "license": "MIT", + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "license": "ISC", "bin": { - "tree-kill": "cli.js" + "nodetouch": "bin/nodetouch.js" } }, "node_modules/ts-dedent": { @@ -10055,6 +10527,7 @@ }, "node_modules/ts-node": { "version": "10.9.2", + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -10094,48 +10567,6 @@ } } }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, "node_modules/tslib": { "version": "2.8.1", "dev": true, @@ -10175,7 +10606,8 @@ "node_modules/typed-query-selector": { "version": "2.12.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/typedoc": { "version": "0.28.16", @@ -10223,6 +10655,7 @@ }, "node_modules/typescript": { "version": "5.9.3", + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -10258,6 +10691,7 @@ "version": "1.4.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -10281,11 +10715,18 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "7.16.0", "license": "MIT" @@ -10385,6 +10826,7 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", + "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { @@ -10598,6 +11040,7 @@ "version": "8.19.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -10638,7 +11081,6 @@ "version": "2.8.2", "dev": true, "license": "ISC", - "peer": true, "bin": { "yaml": "bin.mjs" }, @@ -10678,6 +11120,7 @@ "version": "2.10.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -10685,6 +11128,7 @@ }, "node_modules/yn": { "version": "3.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6" diff --git a/server/package.json b/server/package.json index 05c6336..3d3b148 100644 --- a/server/package.json +++ b/server/package.json @@ -6,10 +6,10 @@ "scripts": { "test": "jest", "start": "node ./src/server.ts", - "dev": "ts-node-dev --respawn --transpile-only --exit-child --watch src ./src/server.ts", + "dev": "nodemon --exec ts-node ./src/server.ts", "prisma:migrate:dev": "npx prisma migrate dev", "prisma:migrate:reset": "npx prisma migrate reset", - "prisma:db:seed": "npx prisma db seed ", + "prisma:db:seed": "npx prisma db seed", "format:write": "npx @biomejs/biome check --write" }, "prisma": { @@ -24,19 +24,22 @@ "@types/bcryptjs": "^3.0.0", "@types/jsonwebtoken": "^9.0.10", "@types/uuid": "^11.0.0", - "axios": "^1.13.4", "bcryptjs": "^3.0.3", "express": "^5.2.1", "express-validator": "^7.3.1", "jsonwebtoken": "^9.0.3", + "nodemon": "^3.1.11", "pg": "^8.17.2", + "pino": "^10.3.0", + "pino-http": "^11.0.0", "reflect-metadata": "^0.2.2", - "ts-node-dev": "^2.0.0", "zod": "^4.3.6" }, "devDependencies": { "@biomejs/biome": "^2.3.13", "@mermaid-js/mermaid-cli": "^11.12.0", + "@swc/core": "^1.15.11", + "@swc/jest": "^0.2.39", "@types/body-parser": "^1.19.6", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", diff --git a/server/prisma/seedClient.ts b/server/prisma/seedClient.ts index 97a2e36..8e136e6 100644 --- a/server/prisma/seedClient.ts +++ b/server/prisma/seedClient.ts @@ -1,30 +1,29 @@ import { PrismaClient, Roles } from "@prisma/client"; -import { prismaClient } from "../src/database/prismaClient"; +import { prisma } from "../src/database/prismaClient"; import { clients } from "./dataTest/client"; -const prisma = new PrismaClient(); async function runSeed() { - const listTrainingPLans = await prismaClient.training_plan.findMany({ + const listTrainingPLans = await prisma.training_plan.findMany({ select: { id: true, }, }); - const listDiscounts = await prismaClient.discount.findMany({ + const listDiscounts = await prisma.discount.findMany({ select: { id: true, }, }); - const listPersonalTrainer = await prismaClient.personalTrainer.findMany({ + const listPersonalTrainer = await prisma.personalTrainer.findMany({ select: { id: true, }, }); clients.map(async (client) => { - await prismaClient.user.create({ + await prisma.user.create({ data: { name: client.name, email: client.email, diff --git a/server/src/app.ts b/server/src/app.ts index fb7433b..f20637c 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -3,8 +3,14 @@ import express from "express"; import "reflect-metadata"; import { router } from "./routes"; import { authRouter } from "./routes/auth"; +import logger from "./logger/logger"; const app = express(); +app.use(logger); + + + + app.use(express.json()); app.use(bodyParser.json()); @@ -31,4 +37,6 @@ app.use("/api", router); // throw error; // }); + + export { app }; diff --git a/server/src/logger/logger.ts b/server/src/logger/logger.ts new file mode 100644 index 0000000..d145968 --- /dev/null +++ b/server/src/logger/logger.ts @@ -0,0 +1,12 @@ +import pino from 'pino'; +import pinoHttp from 'pino-http'; + +const baseLogger = pino({ + level: process.env.LOG_LEVEL || 'info', +}); + +const logger = pinoHttp({ + logger: baseLogger, +}); + +export default logger; \ No newline at end of file diff --git a/server/src/repositories/implementations/EmailAlreadyExist.ts b/server/src/repositories/implementations/EmailAlreadyExist.ts index e0c931c..2ec1e17 100644 --- a/server/src/repositories/implementations/EmailAlreadyExist.ts +++ b/server/src/repositories/implementations/EmailAlreadyExist.ts @@ -1,10 +1,10 @@ import type { User } from "@prisma/client"; -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IEmailAlreadyExist } from "./../IEmailAlreadyExist"; export class EmailAlreadyExist implements IEmailAlreadyExist { async handle(email: string): Promise { - const user = await prismaClient.user.findFirst({ + const user = await prisma.user.findFirst({ where: { email }, }); diff --git a/server/src/server.ts b/server/src/server.ts index 56bdd45..8131583 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -1,6 +1,10 @@ import { app } from "./app"; import { Config } from "./config/config"; +import logger from "./logger/logger"; -app.listen(Config.api.API_PORT, () => - console.log(`server is running on port ${Config.api.API_PORT}`), -); + +app.listen(Config.api.API_PORT, () => { + logger.logger.info( + `server is running on port ${Config.api.API_PORT}` + ); +}); \ No newline at end of file diff --git a/server/src/useCases/Discount/CreateDiscountUseCase.ts b/server/src/useCases/Discount/CreateDiscountUseCase.ts index 62887ca..1b84b7b 100644 --- a/server/src/useCases/Discount/CreateDiscountUseCase.ts +++ b/server/src/useCases/Discount/CreateDiscountUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { ICreateDiscountDTO } from "./../../repositories/dto/Discount/ICreateDiscountDTO"; export class CreateDiscountUseCase { async handle({ name, description, value }: ICreateDiscountDTO) { - const newDiscount = await prismaClient.discount.create({ + const newDiscount = await prisma.discount.create({ data: { name, description, diff --git a/server/src/useCases/Discount/GetAllDiscountUSeCase.ts b/server/src/useCases/Discount/GetAllDiscountUSeCase.ts index 283ea2d..201a732 100644 --- a/server/src/useCases/Discount/GetAllDiscountUSeCase.ts +++ b/server/src/useCases/Discount/GetAllDiscountUSeCase.ts @@ -1,8 +1,8 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; export class GetAllDiscountUseCase { async handle() { - const listDiscount = await prismaClient.discount.findMany({ + const listDiscount = await prisma.discount.findMany({ select: { id: true, name: true, diff --git a/server/src/useCases/Discount/GetDiscountByIDUseCase.ts b/server/src/useCases/Discount/GetDiscountByIDUseCase.ts index 1af9c33..711bddc 100644 --- a/server/src/useCases/Discount/GetDiscountByIDUseCase.ts +++ b/server/src/useCases/Discount/GetDiscountByIDUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IGetDiscountByIdDTO } from "./../../repositories/dto/Discount/IGetDiscountByIdDTO"; export class GetDiscountByIdUseCase { async handle({ id }: IGetDiscountByIdDTO) { - const discountExist = await prismaClient.discount.findUnique({ + const discountExist = await prisma.discount.findUnique({ where: { id, }, diff --git a/server/src/useCases/Employee/GetAllEmployeeUseCase.ts b/server/src/useCases/Employee/GetAllEmployeeUseCase.ts index c2b8159..cfd0b53 100644 --- a/server/src/useCases/Employee/GetAllEmployeeUseCase.ts +++ b/server/src/useCases/Employee/GetAllEmployeeUseCase.ts @@ -1,8 +1,8 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; export class GetAllEmployeesUseCase { async handle() { - const data = await prismaClient.employee.findMany({ + const data = await prisma.employee.findMany({ select: { id: true, status: true, diff --git a/server/src/useCases/Employee/GetEmployeeByIdUSeCase.ts b/server/src/useCases/Employee/GetEmployeeByIdUSeCase.ts index 6a1ae71..b00f015 100644 --- a/server/src/useCases/Employee/GetEmployeeByIdUSeCase.ts +++ b/server/src/useCases/Employee/GetEmployeeByIdUSeCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IGetEmployeeByIdDTO } from "./../../repositories/dto/Employee/IGetEmployeeByIdDTO"; export class GetEmployeeByIdUseCase { async handle({ id }: IGetEmployeeByIdDTO) { - const employeeData = await prismaClient.employee.findUnique({ + const employeeData = await prisma.employee.findUnique({ where: { id, }, diff --git a/server/src/useCases/Manager/CreateManagerUseCase.ts b/server/src/useCases/Manager/CreateManagerUseCase.ts index f98a206..6c3bb49 100644 --- a/server/src/useCases/Manager/CreateManagerUseCase.ts +++ b/server/src/useCases/Manager/CreateManagerUseCase.ts @@ -1,6 +1,6 @@ import { Roles } from "@prisma/client"; import { hash } from "bcryptjs"; -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { ICreateManagerDTO } from "../../repositories/dto/Manager/ICreateManagerDTO"; import { EmailAlreadyExist } from "../../repositories/implementations/EmailAlreadyExist"; @@ -16,7 +16,7 @@ export class CreateManagerUseCase { const hashedPassword = await hash("123456", 12); - const manager = await prismaClient.user.create({ + const manager = await prisma.user.create({ data: { name, email, diff --git a/server/src/useCases/PersonalTrainer/CreatePersonalTrainerUseCase.ts b/server/src/useCases/PersonalTrainer/CreatePersonalTrainerUseCase.ts index e1e4522..9059c7b 100644 --- a/server/src/useCases/PersonalTrainer/CreatePersonalTrainerUseCase.ts +++ b/server/src/useCases/PersonalTrainer/CreatePersonalTrainerUseCase.ts @@ -1,5 +1,5 @@ import { hash } from "bcryptjs"; -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { ICreatePersonalTrainerDTO } from "./../../repositories/dto/PersonalTrainer/ICreatePersonalTrainerDTO"; export class CreatePersonalTrainerUseCase { @@ -12,7 +12,7 @@ export class CreatePersonalTrainerUseCase { birth, value, }: ICreatePersonalTrainerDTO) { - const emailAlreadyExists = await prismaClient.user.findFirst({ + const emailAlreadyExists = await prisma.user.findFirst({ where: { email, }, @@ -24,7 +24,7 @@ export class CreatePersonalTrainerUseCase { const hashedPassword = await hash("123456", 12); - const personalTrainer = await prismaClient.user.create({ + const personalTrainer = await prisma.user.create({ data: { name, email, diff --git a/server/src/useCases/PersonalTrainer/GetAllPersonalTrainerUseCase.ts b/server/src/useCases/PersonalTrainer/GetAllPersonalTrainerUseCase.ts index 0888a75..06fac27 100644 --- a/server/src/useCases/PersonalTrainer/GetAllPersonalTrainerUseCase.ts +++ b/server/src/useCases/PersonalTrainer/GetAllPersonalTrainerUseCase.ts @@ -1,8 +1,8 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; export class GetAllPersonalTrainerUseCase { async handle() { - const data = await prismaClient.personalTrainer.findMany({ + const data = await prisma.personalTrainer.findMany({ select: { id: true, value: true, diff --git a/server/src/useCases/PersonalTrainer/GetPersonalTrainerByIdUseCase.ts b/server/src/useCases/PersonalTrainer/GetPersonalTrainerByIdUseCase.ts index 2f9aaed..da5362d 100644 --- a/server/src/useCases/PersonalTrainer/GetPersonalTrainerByIdUseCase.ts +++ b/server/src/useCases/PersonalTrainer/GetPersonalTrainerByIdUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IGetPersonalTrainerByIdDTO } from "./../../repositories/dto/PersonalTrainer/IGetPersonalTrainerByIdDTO"; export class GetPersonalTrainerByIdUseCase { async handle({ id }: IGetPersonalTrainerByIdDTO) { - const personalTrainerData = await prismaClient.personalTrainer.findUnique({ + const personalTrainerData = await prisma.personalTrainer.findUnique({ where: { id, }, diff --git a/server/src/useCases/TrainingPlan/CreateTrainingPlanUseCase.ts b/server/src/useCases/TrainingPlan/CreateTrainingPlanUseCase.ts index fbea7c0..35c94be 100644 --- a/server/src/useCases/TrainingPlan/CreateTrainingPlanUseCase.ts +++ b/server/src/useCases/TrainingPlan/CreateTrainingPlanUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { ICreateTrainingPlanDTO } from "../../repositories/dto/TrainingPlan/ICreateTrainingPlanDTO"; export class CreateTrainingPlanUseCase { async handle({ name, description, value }: ICreateTrainingPlanDTO) { - const createTraining = await prismaClient.training_plan.create({ + const createTraining = await prisma.training_plan.create({ data: { name, description, diff --git a/server/src/useCases/TrainingPlan/GetAllTrainingPlanUseCase.ts b/server/src/useCases/TrainingPlan/GetAllTrainingPlanUseCase.ts index f7b3f97..95906bd 100644 --- a/server/src/useCases/TrainingPlan/GetAllTrainingPlanUseCase.ts +++ b/server/src/useCases/TrainingPlan/GetAllTrainingPlanUseCase.ts @@ -1,8 +1,8 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; export class GetAllTrainingPlansUseCase { async handle() { - const listTrainingPlans = await prismaClient.training_plan.findMany({ + const listTrainingPlans = await prisma.training_plan.findMany({ select: { id: true, name: true, diff --git a/server/src/useCases/TrainingPlan/GetTrainingPlanByIdUseCase.ts b/server/src/useCases/TrainingPlan/GetTrainingPlanByIdUseCase.ts index 8ae7dce..4efb4c1 100644 --- a/server/src/useCases/TrainingPlan/GetTrainingPlanByIdUseCase.ts +++ b/server/src/useCases/TrainingPlan/GetTrainingPlanByIdUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IGetTrainingPlanByIdDTO } from "./../../repositories/dto/TrainingPlan/IGetTrainingPlanByIDTO"; export class GetTrainingPlanByIdUseCase { async handle({ id }: IGetTrainingPlanByIdDTO) { - const trainingPlanExist = await prismaClient.training_plan.findUnique({ + const trainingPlanExist = await prisma.training_plan.findUnique({ where: { id, }, diff --git a/server/src/useCases/User/GetUserbyIdUseCase.ts b/server/src/useCases/User/GetUserbyIdUseCase.ts index a229bac..f1ae52d 100644 --- a/server/src/useCases/User/GetUserbyIdUseCase.ts +++ b/server/src/useCases/User/GetUserbyIdUseCase.ts @@ -1,9 +1,9 @@ -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import type { IGetUserByIdDTO } from "./../../repositories/dto/User/IGetUserByIdDTO"; export class GetUserbyIdUseCase { async handle({ id }: IGetUserByIdDTO) { - const existingUser = await prismaClient.user.findUnique({ + const existingUser = await prisma.user.findUnique({ where: { id, }, diff --git a/server/src/useCases/refreshTokenUser/refreshTokenUseCase.ts b/server/src/useCases/refreshTokenUser/refreshTokenUseCase.ts index 74f3c37..743f40d 100644 --- a/server/src/useCases/refreshTokenUser/refreshTokenUseCase.ts +++ b/server/src/useCases/refreshTokenUser/refreshTokenUseCase.ts @@ -1,12 +1,12 @@ import dayjs from "dayjs"; -import { prismaClient } from "../../database/prismaClient"; +import { prisma } from "../../database/prismaClient"; import { GenerateRefreshTokenProvider } from "../../provider/GenerateRefreshTokenProvider"; import { GenerateTokenProvider } from "../../provider/GenerateTokenProvider"; export class RefreshTokenUseCase { async handle(refresh_Token: string) { - const refreshToken = await prismaClient.refreshToken.findFirst({ + const refreshToken = await prisma.refreshToken.findFirst({ where: { id: refresh_Token, }, @@ -24,7 +24,7 @@ export class RefreshTokenUseCase { const token = await generateTokenProvider.execute(refreshToken.userId); if (refreshTokenExpired) { - await prismaClient.refreshToken.deleteMany({ + await prisma.refreshToken.deleteMany({ where: { userId: refreshToken.userId, },