From 78d8795155a75c459116215f0b3c2605c913f2b3 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sun, 14 Jun 2026 08:49:13 +0330 Subject: [PATCH] update : bycryptjs --- package.json | 4 +- pnpm-lock.yaml | 241 +----------------- src/core/middlewares/validator.middleware.ts | 2 +- src/db/seeders/warrantySeeders.ts | 4 +- src/modules/IPG/PaymentGateway.ts | 7 +- src/modules/IPG/gateways/sep.ts | 43 ++-- src/modules/IPG/interface/IPG.ts | 2 +- src/modules/admin/admin.service.ts | 2 +- src/modules/admin/models/admin.model.ts | 2 +- src/modules/order/order.service.ts | 2 +- src/modules/payment/payment.controller.ts | 2 +- .../payment/providers/payment.service.ts | 21 +- .../product/Repository/productVarinat.ts | 1 - .../models/Abstraction/IProductVariant.ts | 2 +- .../product/providers/product.service.ts | 2 +- test-chatbot-socket.js | 1 - 16 files changed, 64 insertions(+), 274 deletions(-) diff --git a/package.json b/package.json index 3cc6d1b..bc78c96 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@nestjs/mapped-types": "^2.0.6", "ansi-colors": "^4.1.3", "axios": "^1.7.7", - "bcrypt": "^5.1.1", + "bcryptjs": "^2.4.3", "bullmq": "^5.25.6", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", @@ -74,7 +74,7 @@ "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", - "@types/bcrypt": "^5.0.2", + "@types/bcryptjs": "^2.4.6", "@types/compression": "^1.7.5", "@types/cookie-parser": "^1.4.10", "@types/cors": "^2.8.17", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6382377..82b8c8b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,9 +23,9 @@ importers: axios: specifier: ^1.7.7 version: 1.7.7 - bcrypt: - specifier: ^5.1.1 - version: 5.1.1 + bcryptjs: + specifier: ^2.4.3 + version: 2.4.3 bullmq: specifier: ^5.25.6 version: 5.25.6 @@ -138,9 +138,9 @@ importers: '@commitlint/config-conventional': specifier: ^19.5.0 version: 19.5.0 - '@types/bcrypt': - specifier: ^5.0.2 - version: 5.0.2 + '@types/bcryptjs': + specifier: ^2.4.6 + version: 2.4.6 '@types/compression': specifier: ^1.7.5 version: 1.7.5 @@ -708,10 +708,6 @@ packages: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - '@mongodb-js/saslprep@1.1.9': resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} @@ -1011,8 +1007,8 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/bcrypt@5.0.2': - resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} + '@types/bcryptjs@2.4.6': + resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -1182,9 +1178,6 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1207,10 +1200,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agentkeepalive@4.6.0: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} @@ -1256,14 +1245,6 @@ packages: append-field@1.0.0: resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -1327,9 +1308,8 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} - bcrypt@5.1.1: - resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} - engines: {node: '>= 10.0.0'} + bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -1413,10 +1393,6 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} @@ -1475,10 +1451,6 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} @@ -1518,9 +1490,6 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -1667,9 +1636,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -2047,10 +2013,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2069,11 +2031,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2184,9 +2141,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2201,10 +2155,6 @@ packages: http-status-codes@2.3.0: resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2586,10 +2536,6 @@ packages: resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} engines: {node: '>=12'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -2669,31 +2615,14 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} @@ -2806,9 +2735,6 @@ packages: node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-cache@5.1.2: resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} engines: {node: '>= 8.0.0'} @@ -2840,11 +2766,6 @@ packages: engines: {node: '>=10'} hasBin: true - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2853,10 +2774,6 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3197,9 +3114,6 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3389,10 +3303,6 @@ packages: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -3609,9 +3519,6 @@ packages: engines: {node: '>= 8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - winston-transport@4.9.0: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} @@ -3666,9 +3573,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.5.1: resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} @@ -4573,21 +4477,6 @@ snapshots: '@lukeed/csprng@1.1.0': {} - '@mapbox/node-pre-gyp@1.0.11': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - '@mongodb-js/saslprep@1.1.9': dependencies: sparse-bitfield: 3.0.3 @@ -4988,9 +4877,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@types/bcrypt@5.0.2': - dependencies: - '@types/node': 20.17.6 + '@types/bcryptjs@2.4.6': {} '@types/body-parser@1.19.5': dependencies: @@ -5222,8 +5109,6 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abbrev@1.1.1: {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -5243,12 +5128,6 @@ snapshots: acorn@8.14.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -5294,13 +5173,6 @@ snapshots: append-field@1.0.0: {} - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - arg@4.1.3: {} argparse@2.0.1: {} @@ -5383,13 +5255,7 @@ snapshots: dependencies: safe-buffer: 5.1.2 - bcrypt@5.1.1: - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - node-addon-api: 5.1.0 - transitivePeerDependencies: - - encoding - - supports-color + bcryptjs@2.4.3: {} binary-extensions@2.3.0: {} @@ -5505,8 +5371,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@2.0.0: {} - class-transformer@0.5.1: {} class-validator@0.14.1: @@ -5561,8 +5425,6 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 - color-support@1.1.3: {} - color@3.2.1: dependencies: color-convert: 1.9.3 @@ -5613,8 +5475,6 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - console-control-strings@1.1.0: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -5751,15 +5611,14 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} - denque@2.1.0: {} depd@2.0.0: {} destroy@1.2.0: {} - detect-libc@2.0.3: {} + detect-libc@2.0.3: + optional: true diff@4.0.2: {} @@ -6262,10 +6121,6 @@ snapshots: fresh@0.5.2: {} - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -6282,18 +6137,6 @@ snapshots: functions-have-names@1.2.3: {} - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - get-caller-file@2.0.5: {} get-east-asian-width@1.3.0: {} @@ -6418,8 +6261,6 @@ snapshots: dependencies: has-symbols: 1.0.3 - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -6436,13 +6277,6 @@ snapshots: http-status-codes@2.3.0: {} - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - human-signals@5.0.0: {} humanize-ms@1.2.1: @@ -6822,10 +6656,6 @@ snapshots: luxon@3.5.0: {} - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - make-error@1.3.6: {} math-intrinsics@1.1.0: {} @@ -6879,25 +6709,12 @@ snapshots: minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - mkdirp@0.5.6: dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} - moment@2.30.1: {} mongodb-connection-string-url@2.6.0: @@ -7044,8 +6861,6 @@ snapshots: node-abort-controller@3.1.1: {} - node-addon-api@5.1.0: {} - node-cache@5.1.2: dependencies: clone: 2.1.2 @@ -7076,23 +6891,12 @@ snapshots: touch: 3.1.1 undefsafe: 2.0.5 - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - normalize-path@3.0.0: {} npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - object-assign@4.1.1: {} object-inspect@1.13.3: {} @@ -7437,8 +7241,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -7647,15 +7449,6 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - text-extensions@2.4.0: {} text-hex@1.0.0: {} @@ -7866,10 +7659,6 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - winston-transport@4.9.0: dependencies: logform: 2.7.0 @@ -7926,8 +7715,6 @@ snapshots: y18n@5.0.8: {} - yallist@4.0.0: {} - yaml@2.5.1: {} yargs-parser@21.1.1: {} diff --git a/src/core/middlewares/validator.middleware.ts b/src/core/middlewares/validator.middleware.ts index e511500..29d27f4 100644 --- a/src/core/middlewares/validator.middleware.ts +++ b/src/core/middlewares/validator.middleware.ts @@ -140,4 +140,4 @@ export class ValidationMiddleware { return []; } -} \ No newline at end of file +} diff --git a/src/db/seeders/warrantySeeders.ts b/src/db/seeders/warrantySeeders.ts index 7f8048f..6975585 100644 --- a/src/db/seeders/warrantySeeders.ts +++ b/src/db/seeders/warrantySeeders.ts @@ -44,7 +44,7 @@ export const seedWarranty = async (logger: Logger) => { // Check for existing warranties and only create new ones to avoid duplicate key errors let createdCount = 0; let skippedCount = 0; - + for (const warranty of cleanedWarranties) { const existing = await WarrantyModel.findOne({ name: warranty.name }); if (!existing) { @@ -64,7 +64,7 @@ export const seedWarranty = async (logger: Logger) => { skippedCount++; } } - + logger.info(`Warranty seeding complete! (${createdCount} created, ${skippedCount} skipped)`); } else { logger.warn("No valid warranties found after filtering"); diff --git a/src/modules/IPG/PaymentGateway.ts b/src/modules/IPG/PaymentGateway.ts index 3021dcb..f382d36 100644 --- a/src/modules/IPG/PaymentGateway.ts +++ b/src/modules/IPG/PaymentGateway.ts @@ -30,9 +30,10 @@ class PaymentGateway implements IPaymentGateway { public async verifyPayment(gatewayType: GatewayProvider, data: VerifyPaymentData): Promise { const gateway = this.getGateway(gatewayType); - const verifyData = gatewayType === GatewayProvider.SEP - ? { refNum: data.refNum, amount: data.amount } - : { authority: data.authority, amount: data.amount }; + const verifyData = + gatewayType === GatewayProvider.SEP + ? { refNum: data.refNum, amount: data.amount } + : { authority: data.authority, amount: data.amount }; return await gateway.verifyPayment(verifyData); } diff --git a/src/modules/IPG/gateways/sep.ts b/src/modules/IPG/gateways/sep.ts index 6acbec1..48eaf21 100644 --- a/src/modules/IPG/gateways/sep.ts +++ b/src/modules/IPG/gateways/sep.ts @@ -12,19 +12,19 @@ interface SepRequestPaymentResponse { } interface SepVerifyPaymentResponse { TransactionDetail: { - "RRN": string, - "RefNum": string, - "MaskedPan": string, - "HashedPan": string, - "TerminalNumber": number, - "OrginalAmount": number, - "AffectiveAmount": number, - "StraceDate": string, - "StraceNo": string, - }, - "ResultCode": number, - "ResultDescription": string, - "Success": boolean + RRN: string; + RefNum: string; + MaskedPan: string; + HashedPan: string; + TerminalNumber: number; + OrginalAmount: number; + AffectiveAmount: number; + StraceDate: string; + StraceNo: string; + }; + ResultCode: number; + ResultDescription: string; + Success: boolean; } @injectable() @@ -47,7 +47,7 @@ class SepGateway implements IGateway { const purchaseData = { Action: "Token", TerminalId: this.terminalNumber, - Amount: amount * 10,//ریال + Amount: amount * 10, //ریال RedirectUrl: `${this.callBackURL}${callBackPath}`, ResNum: Date.now().toString(), CellNumber: _mobile, @@ -71,8 +71,6 @@ class SepGateway implements IGateway { } } - - async verifyPayment(data: { authority?: string; refNum?: string; amount: number }) { if (!this.gatewayApiUrl || !this.terminalNumber) { throw new InternalError(["SEP gateway is not configured"]); @@ -80,13 +78,14 @@ class SepGateway implements IGateway { try { const verifyData = { RefNum: data.refNum, TerminalNumber: this.terminalNumber }; - const response = await axios.post(`${this.gatewayApiUrl}/verifyTxnRandomSessionkey/ipg/VerifyTransaction`, + const response = await axios.post( + `${this.gatewayApiUrl}/verifyTxnRandomSessionkey/ipg/VerifyTransaction`, verifyData, - { headers: this.requestHeader } + { headers: this.requestHeader }, ); const sepResponse = response.data; - console.log('sepResponse verify response *', sepResponse) + console.log("sepResponse verify response *", sepResponse); // Normalize SEP response to match expected format // SEP considers ResultCode = 0 and Success = true as successful const isSuccess = sepResponse.ResultCode === 0 && sepResponse.Success === true; @@ -95,18 +94,18 @@ class SepGateway implements IGateway { let amountValid = true; if (sepResponse.TransactionDetail && sepResponse.TransactionDetail.OrginalAmount) { // According to SEP docs, OrginalAmount should match the expected amount - amountValid = sepResponse.TransactionDetail.OrginalAmount === data.amount*10; + amountValid = sepResponse.TransactionDetail.OrginalAmount === data.amount * 10; if (!amountValid) { this.logger.warn(`SEP amount mismatch: expected ${data.amount}, got ${sepResponse.TransactionDetail.OrginalAmount}`); } } return { - code: (isSuccess && amountValid) ? 100 : sepResponse.ResultCode, // Use 100 for success to match expected format + code: isSuccess && amountValid ? 100 : sepResponse.ResultCode, // Use 100 for success to match expected format message: sepResponse.ResultDescription, ref_id: data.refNum, // SEP uses refNum as transaction identifier success: isSuccess && amountValid, - raw_response: sepResponse // Keep original response for debugging + raw_response: sepResponse, // Keep original response for debugging }; } catch (error) { this.logger.error("error in SEP payment verification", error); diff --git a/src/modules/IPG/interface/IPG.ts b/src/modules/IPG/interface/IPG.ts index 48b8670..784a944 100644 --- a/src/modules/IPG/interface/IPG.ts +++ b/src/modules/IPG/interface/IPG.ts @@ -40,5 +40,5 @@ export interface NewPaymentData { export interface VerifyPaymentData { amount: number; authority?: string; - refNum?:string + refNum?: string; } diff --git a/src/modules/admin/admin.service.ts b/src/modules/admin/admin.service.ts index b5e690a..f2a4bbf 100644 --- a/src/modules/admin/admin.service.ts +++ b/src/modules/admin/admin.service.ts @@ -1,4 +1,4 @@ -import { compare, hash } from "bcrypt"; +import { compare, hash } from "bcryptjs"; import { inject, injectable } from "inversify"; import { LoginPassDTO } from "./DTO/loginPassword.dto"; diff --git a/src/modules/admin/models/admin.model.ts b/src/modules/admin/models/admin.model.ts index 6cd31ef..4665e58 100644 --- a/src/modules/admin/models/admin.model.ts +++ b/src/modules/admin/models/admin.model.ts @@ -1,4 +1,4 @@ -import { hash } from "bcrypt"; +import { hash } from "bcryptjs"; import { CallbackError, Schema, model } from "mongoose"; import { IAdmin } from "./Abstraction/IAdmin"; diff --git a/src/modules/order/order.service.ts b/src/modules/order/order.service.ts index a850b9d..f0cb25c 100644 --- a/src/modules/order/order.service.ts +++ b/src/modules/order/order.service.ts @@ -58,7 +58,7 @@ class OrderService { const province = userAddress.province as unknown as IProvince; console.log("city", city); console.log("province", province); - if(!city?.name || !province?.name ){ + if (!city?.name || !province?.name) { throw new BadRequestError(AddressMessage.INVALID_ADDRESS); } const shipmentAddress: IShipmentAddress = { diff --git a/src/modules/payment/payment.controller.ts b/src/modules/payment/payment.controller.ts index d4cf415..3e44b4e 100644 --- a/src/modules/payment/payment.controller.ts +++ b/src/modules/payment/payment.controller.ts @@ -115,7 +115,7 @@ class PaymentController extends BaseController { @response() res: Response, @requestBody() dto: VerifyOnlinePaymentDTO, ) { - const verifyCallbackData = { + const verifyCallbackData = { status: dto.State, refNum: dto.RefNum, authority: dto.Token, diff --git a/src/modules/payment/providers/payment.service.ts b/src/modules/payment/providers/payment.service.ts index a142c8e..041eee4 100644 --- a/src/modules/payment/providers/payment.service.ts +++ b/src/modules/payment/providers/payment.service.ts @@ -165,7 +165,6 @@ class PaymentService { const session = await startSession(); session.startTransaction(); try { - // For SEP gateway, check if refNum has already been used as transaction_id if (gateway === GatewayProvider.SEP && refNum) { const existingPayment = await this.cartPaymentRepo.model.findOne({ transaction_id: refNum }).session(session); @@ -185,17 +184,14 @@ class PaymentService { // Handle unsuccessful payment status if (status !== "OK") { - return this.buildPaymentResponse(status ?? 'Nok', PaymentMessage.PaymentNotSuccessful, paymentData._id.toString(), order._id); + return this.buildPaymentResponse(status ?? "Nok", PaymentMessage.PaymentNotSuccessful, paymentData._id.toString(), order._id); } // Verify payment through gateway const verifyData = - gateway === GatewayProvider.SEP - ? { refNum, amount: paymentData.totalPrice } - : { authority, amount: paymentData.totalPrice }; + gateway === GatewayProvider.SEP ? { refNum, amount: paymentData.totalPrice } : { authority, amount: paymentData.totalPrice }; const data = await this.paymentGateway.verifyPayment(gateway, verifyData); - if (data.code === 100 || data.code === 101) { await this.handleSellerNotify(order._id, user, session); // For SEP gateway, save refNum as transaction_id; for Zarinpal, save ref_id @@ -397,8 +393,17 @@ class PaymentService { } //################################################################## //################################################################## - private async updatePaymentStatusAndReference(paymentId: string, transactionId: string | null, status: PaymentStatus, session: ClientSession) { - return await this.cartPaymentRepo.model.findByIdAndUpdate(paymentId, { paymentStatus: status, transaction_id: transactionId }, { session }); + private async updatePaymentStatusAndReference( + paymentId: string, + transactionId: string | null, + status: PaymentStatus, + session: ClientSession, + ) { + return await this.cartPaymentRepo.model.findByIdAndUpdate( + paymentId, + { paymentStatus: status, transaction_id: transactionId }, + { session }, + ); } } diff --git a/src/modules/product/Repository/productVarinat.ts b/src/modules/product/Repository/productVarinat.ts index 78aa2fc..c4fde56 100644 --- a/src/modules/product/Repository/productVarinat.ts +++ b/src/modules/product/Repository/productVarinat.ts @@ -130,7 +130,6 @@ export class ProductVariantRepository extends BaseRepository { }, }, - { $addFields: { product_id: "$product._id", diff --git a/src/modules/product/models/Abstraction/IProductVariant.ts b/src/modules/product/models/Abstraction/IProductVariant.ts index b63c4f2..f5fb370 100644 --- a/src/modules/product/models/Abstraction/IProductVariant.ts +++ b/src/modules/product/models/Abstraction/IProductVariant.ts @@ -22,7 +22,7 @@ export interface IProductVariant { dimensions: IDimensions; sellerSpecialCode: string; themeValue: Types.ObjectId; - deleted: boolean + deleted: boolean; } export interface IPrice { diff --git a/src/modules/product/providers/product.service.ts b/src/modules/product/providers/product.service.ts index a70f3d3..9b75b5f 100644 --- a/src/modules/product/providers/product.service.ts +++ b/src/modules/product/providers/product.service.ts @@ -1105,7 +1105,7 @@ class ProductService { async softDeleteProductVariant(variantId: string) { await this.productVariantRepo.model.findOneAndUpdate({ _id: variantId }, { deleted: true }); - return { message: 'Deleted successfully' } + return { message: "Deleted successfully" }; } //################################################################ diff --git a/test-chatbot-socket.js b/test-chatbot-socket.js index e7e3f5c..7138b1f 100644 --- a/test-chatbot-socket.js +++ b/test-chatbot-socket.js @@ -96,4 +96,3 @@ socket.on("connect_error", (error) => { // Keep the script running process.stdin.resume(); -