update : bycryptjs
Build and Deploy / build_and_deploy (push) Has been cancelled

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