Commit 5c576f129899e8136449bb7696a1848cd9e575c3

Authored by Angel Caceres
1 parent 09fba27c

Infra

  1 +{
  2 + "version": "0.2.0",
  3 + "configurations": [
  4 + {
  5 + "type": "node",
  6 + "request": "launch",
  7 + "name": "Base-Debugger",
  8 + "runtimeExecutable": "npm",
  9 + "runtimeArgs": ["run", "start:debug", "--", "--inspect-brk"],
  10 + "autoAttachChildProcesses": true,
  11 + "restart": true,
  12 + "sourceMaps": true,
  13 + "stopOnEntry": false,
  14 + "console": "integratedTerminal"
  15 + }
  16 + ]
  17 +}
@@ -11,9 +11,16 @@ @@ -11,9 +11,16 @@
11 "dependencies": { 11 "dependencies": {
12 "@nestjs/common": "^10.2.10", 12 "@nestjs/common": "^10.2.10",
13 "@nestjs/core": "^10.0.0", 13 "@nestjs/core": "^10.0.0",
  14 + "@nestjs/jwt": "^10.2.0",
14 "@nestjs/mapped-types": "^2.0.4", 15 "@nestjs/mapped-types": "^2.0.4",
  16 + "@nestjs/passport": "^10.0.2",
15 "@nestjs/platform-express": "^10.0.0", 17 "@nestjs/platform-express": "^10.0.0",
16 "@prisma/client": "^5.6.0", 18 "@prisma/client": "^5.6.0",
  19 + "bcrypt": "^5.1.1",
  20 + "cors": "^2.8.5",
  21 + "crypto-js": "^4.2.0",
  22 + "passport-jwt": "^4.0.1",
  23 + "passport-local": "^1.0.0",
17 "prisma": "^5.6.0", 24 "prisma": "^5.6.0",
18 "reflect-metadata": "^0.1.13", 25 "reflect-metadata": "^0.1.13",
19 "rxjs": "^7.8.1" 26 "rxjs": "^7.8.1"
@@ -22,9 +29,13 @@ @@ -22,9 +29,13 @@
22 "@nestjs/cli": "^10.0.0", 29 "@nestjs/cli": "^10.0.0",
23 "@nestjs/schematics": "^10.0.0", 30 "@nestjs/schematics": "^10.0.0",
24 "@nestjs/testing": "^10.0.0", 31 "@nestjs/testing": "^10.0.0",
  32 + "@types/bcrypt": "^5.0.2",
  33 + "@types/cors": "^2.8.17",
  34 + "@types/crypto-js": "^4.2.1",
25 "@types/express": "^4.17.17", 35 "@types/express": "^4.17.17",
26 "@types/jest": "^29.5.2", 36 "@types/jest": "^29.5.2",
27 "@types/node": "^20.3.1", 37 "@types/node": "^20.3.1",
  38 + "@types/passport-jwt": "^3.0.13",
28 "@types/supertest": "^2.0.12", 39 "@types/supertest": "^2.0.12",
29 "@typescript-eslint/eslint-plugin": "^6.0.0", 40 "@typescript-eslint/eslint-plugin": "^6.0.0",
30 "@typescript-eslint/parser": "^6.0.0", 41 "@typescript-eslint/parser": "^6.0.0",
@@ -1534,6 +1545,80 @@ @@ -1534,6 +1545,80 @@
1534 "node": ">=8" 1545 "node": ">=8"
1535 } 1546 }
1536 }, 1547 },
  1548 + "node_modules/@mapbox/node-pre-gyp": {
  1549 + "version": "1.0.11",
  1550 + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
  1551 + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
  1552 + "dependencies": {
  1553 + "detect-libc": "^2.0.0",
  1554 + "https-proxy-agent": "^5.0.0",
  1555 + "make-dir": "^3.1.0",
  1556 + "node-fetch": "^2.6.7",
  1557 + "nopt": "^5.0.0",
  1558 + "npmlog": "^5.0.1",
  1559 + "rimraf": "^3.0.2",
  1560 + "semver": "^7.3.5",
  1561 + "tar": "^6.1.11"
  1562 + },
  1563 + "bin": {
  1564 + "node-pre-gyp": "bin/node-pre-gyp"
  1565 + }
  1566 + },
  1567 + "node_modules/@mapbox/node-pre-gyp/node_modules/glob": {
  1568 + "version": "7.2.3",
  1569 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
  1570 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
  1571 + "dependencies": {
  1572 + "fs.realpath": "^1.0.0",
  1573 + "inflight": "^1.0.4",
  1574 + "inherits": "2",
  1575 + "minimatch": "^3.1.1",
  1576 + "once": "^1.3.0",
  1577 + "path-is-absolute": "^1.0.0"
  1578 + },
  1579 + "engines": {
  1580 + "node": "*"
  1581 + },
  1582 + "funding": {
  1583 + "url": "https://github.com/sponsors/isaacs"
  1584 + }
  1585 + },
  1586 + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
  1587 + "version": "3.1.0",
  1588 + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
  1589 + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
  1590 + "dependencies": {
  1591 + "semver": "^6.0.0"
  1592 + },
  1593 + "engines": {
  1594 + "node": ">=8"
  1595 + },
  1596 + "funding": {
  1597 + "url": "https://github.com/sponsors/sindresorhus"
  1598 + }
  1599 + },
  1600 + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": {
  1601 + "version": "6.3.1",
  1602 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
  1603 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
  1604 + "bin": {
  1605 + "semver": "bin/semver.js"
  1606 + }
  1607 + },
  1608 + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": {
  1609 + "version": "3.0.2",
  1610 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
  1611 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
  1612 + "dependencies": {
  1613 + "glob": "^7.1.3"
  1614 + },
  1615 + "bin": {
  1616 + "rimraf": "bin.js"
  1617 + },
  1618 + "funding": {
  1619 + "url": "https://github.com/sponsors/isaacs"
  1620 + }
  1621 + },
1537 "node_modules/@nestjs/cli": { 1622 "node_modules/@nestjs/cli": {
1538 "version": "10.2.1", 1623 "version": "10.2.1",
1539 "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.2.1.tgz", 1624 "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.2.1.tgz",
@@ -1661,6 +1746,18 @@ @@ -1661,6 +1746,18 @@
1661 } 1746 }
1662 } 1747 }
1663 }, 1748 },
  1749 + "node_modules/@nestjs/jwt": {
  1750 + "version": "10.2.0",
  1751 + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz",
  1752 + "integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==",
  1753 + "dependencies": {
  1754 + "@types/jsonwebtoken": "9.0.5",
  1755 + "jsonwebtoken": "9.0.2"
  1756 + },
  1757 + "peerDependencies": {
  1758 + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0"
  1759 + }
  1760 + },
1664 "node_modules/@nestjs/mapped-types": { 1761 "node_modules/@nestjs/mapped-types": {
1665 "version": "2.0.4", 1762 "version": "2.0.4",
1666 "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.4.tgz", 1763 "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.4.tgz",
@@ -1680,6 +1777,15 @@ @@ -1680,6 +1777,15 @@
1680 } 1777 }
1681 } 1778 }
1682 }, 1779 },
  1780 + "node_modules/@nestjs/passport": {
  1781 + "version": "10.0.2",
  1782 + "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.2.tgz",
  1783 + "integrity": "sha512-od31vfB2z3y05IDB5dWSbCGE2+pAf2k2WCBinNuTTOxN0O0+wtO1L3kawj/aCW3YR9uxsTOVbTDwtwgpNNsnjQ==",
  1784 + "peerDependencies": {
  1785 + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
  1786 + "passport": "^0.4.0 || ^0.5.0 || ^0.6.0"
  1787 + }
  1788 + },
1683 "node_modules/@nestjs/platform-express": { 1789 "node_modules/@nestjs/platform-express": {
1684 "version": "10.2.10", 1790 "version": "10.2.10",
1685 "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.2.10.tgz", 1791 "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.2.10.tgz",
@@ -1945,6 +2051,15 @@ @@ -1945,6 +2051,15 @@
1945 "@babel/types": "^7.20.7" 2051 "@babel/types": "^7.20.7"
1946 } 2052 }
1947 }, 2053 },
  2054 + "node_modules/@types/bcrypt": {
  2055 + "version": "5.0.2",
  2056 + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz",
  2057 + "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==",
  2058 + "dev": true,
  2059 + "dependencies": {
  2060 + "@types/node": "*"
  2061 + }
  2062 + },
1948 "node_modules/@types/body-parser": { 2063 "node_modules/@types/body-parser": {
1949 "version": "1.19.5", 2064 "version": "1.19.5",
1950 "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", 2065 "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -1970,6 +2085,21 @@ @@ -1970,6 +2085,21 @@
1970 "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", 2085 "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==",
1971 "dev": true 2086 "dev": true
1972 }, 2087 },
  2088 + "node_modules/@types/cors": {
  2089 + "version": "2.8.17",
  2090 + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
  2091 + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
  2092 + "dev": true,
  2093 + "dependencies": {
  2094 + "@types/node": "*"
  2095 + }
  2096 + },
  2097 + "node_modules/@types/crypto-js": {
  2098 + "version": "4.2.1",
  2099 + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.1.tgz",
  2100 + "integrity": "sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==",
  2101 + "dev": true
  2102 + },
1973 "node_modules/@types/eslint": { 2103 "node_modules/@types/eslint": {
1974 "version": "8.44.7", 2104 "version": "8.44.7",
1975 "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", 2105 "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz",
@@ -2075,6 +2205,14 @@ @@ -2075,6 +2205,14 @@
2075 "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 2205 "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
2076 "dev": true 2206 "dev": true
2077 }, 2207 },
  2208 + "node_modules/@types/jsonwebtoken": {
  2209 + "version": "9.0.5",
  2210 + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz",
  2211 + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==",
  2212 + "dependencies": {
  2213 + "@types/node": "*"
  2214 + }
  2215 + },
2078 "node_modules/@types/mime": { 2216 "node_modules/@types/mime": {
2079 "version": "1.3.5", 2217 "version": "1.3.5",
2080 "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", 2218 "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
@@ -2085,11 +2223,40 @@ @@ -2085,11 +2223,40 @@
2085 "version": "20.9.4", 2223 "version": "20.9.4",
2086 "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz", 2224 "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz",
2087 "integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==", 2225 "integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==",
2088 - "dev": true,  
2089 "dependencies": { 2226 "dependencies": {
2090 "undici-types": "~5.26.4" 2227 "undici-types": "~5.26.4"
2091 } 2228 }
2092 }, 2229 },
  2230 + "node_modules/@types/passport": {
  2231 + "version": "1.0.16",
  2232 + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.16.tgz",
  2233 + "integrity": "sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==",
  2234 + "dev": true,
  2235 + "dependencies": {
  2236 + "@types/express": "*"
  2237 + }
  2238 + },
  2239 + "node_modules/@types/passport-jwt": {
  2240 + "version": "3.0.13",
  2241 + "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-3.0.13.tgz",
  2242 + "integrity": "sha512-fjHaC6Bv8EpMMqzTnHP32SXlZGaNfBPC/Po5dmRGYi2Ky7ljXPbGnOy+SxZqa6iZvFgVhoJ1915Re3m93zmcfA==",
  2243 + "dev": true,
  2244 + "dependencies": {
  2245 + "@types/express": "*",
  2246 + "@types/jsonwebtoken": "*",
  2247 + "@types/passport-strategy": "*"
  2248 + }
  2249 + },
  2250 + "node_modules/@types/passport-strategy": {
  2251 + "version": "0.2.38",
  2252 + "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.38.tgz",
  2253 + "integrity": "sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==",
  2254 + "dev": true,
  2255 + "dependencies": {
  2256 + "@types/express": "*",
  2257 + "@types/passport": "*"
  2258 + }
  2259 + },
2093 "node_modules/@types/qs": { 2260 "node_modules/@types/qs": {
2094 "version": "6.9.10", 2261 "version": "6.9.10",
2095 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", 2262 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
@@ -2522,6 +2689,11 @@ @@ -2522,6 +2689,11 @@
2522 "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 2689 "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
2523 "dev": true 2690 "dev": true
2524 }, 2691 },
  2692 + "node_modules/abbrev": {
  2693 + "version": "1.1.1",
  2694 + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
  2695 + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
  2696 + },
2525 "node_modules/accepts": { 2697 "node_modules/accepts": {
2526 "version": "1.3.8", 2698 "version": "1.3.8",
2527 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 2699 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -2573,6 +2745,17 @@ @@ -2573,6 +2745,17 @@
2573 "node": ">=0.4.0" 2745 "node": ">=0.4.0"
2574 } 2746 }
2575 }, 2747 },
  2748 + "node_modules/agent-base": {
  2749 + "version": "6.0.2",
  2750 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
  2751 + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
  2752 + "dependencies": {
  2753 + "debug": "4"
  2754 + },
  2755 + "engines": {
  2756 + "node": ">= 6.0.0"
  2757 + }
  2758 + },
2576 "node_modules/ajv": { 2759 "node_modules/ajv": {
2577 "version": "8.12.0", 2760 "version": "8.12.0",
2578 "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", 2761 "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -2646,7 +2829,6 @@ @@ -2646,7 +2829,6 @@
2646 "version": "5.0.1", 2829 "version": "5.0.1",
2647 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2830 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2648 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2831 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2649 - "dev": true,  
2650 "engines": { 2832 "engines": {
2651 "node": ">=8" 2833 "node": ">=8"
2652 } 2834 }
@@ -2683,6 +2865,36 @@ @@ -2683,6 +2865,36 @@
2683 "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", 2865 "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
2684 "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" 2866 "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
2685 }, 2867 },
  2868 + "node_modules/aproba": {
  2869 + "version": "2.0.0",
  2870 + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
  2871 + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
  2872 + },
  2873 + "node_modules/are-we-there-yet": {
  2874 + "version": "2.0.0",
  2875 + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
  2876 + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
  2877 + "dependencies": {
  2878 + "delegates": "^1.0.0",
  2879 + "readable-stream": "^3.6.0"
  2880 + },
  2881 + "engines": {
  2882 + "node": ">=10"
  2883 + }
  2884 + },
  2885 + "node_modules/are-we-there-yet/node_modules/readable-stream": {
  2886 + "version": "3.6.2",
  2887 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
  2888 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
  2889 + "dependencies": {
  2890 + "inherits": "^2.0.3",
  2891 + "string_decoder": "^1.1.1",
  2892 + "util-deprecate": "^1.0.1"
  2893 + },
  2894 + "engines": {
  2895 + "node": ">= 6"
  2896 + }
  2897 + },
2686 "node_modules/arg": { 2898 "node_modules/arg": {
2687 "version": "4.1.3", 2899 "version": "4.1.3",
2688 "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 2900 "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -2846,8 +3058,7 @@ @@ -2846,8 +3058,7 @@
2846 "node_modules/balanced-match": { 3058 "node_modules/balanced-match": {
2847 "version": "1.0.2", 3059 "version": "1.0.2",
2848 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 3060 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2849 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",  
2850 - "dev": true 3061 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
2851 }, 3062 },
2852 "node_modules/base64-js": { 3063 "node_modules/base64-js": {
2853 "version": "1.5.1", 3064 "version": "1.5.1",
@@ -2869,6 +3080,19 @@ @@ -2869,6 +3080,19 @@
2869 } 3080 }
2870 ] 3081 ]
2871 }, 3082 },
  3083 + "node_modules/bcrypt": {
  3084 + "version": "5.1.1",
  3085 + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
  3086 + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
  3087 + "hasInstallScript": true,
  3088 + "dependencies": {
  3089 + "@mapbox/node-pre-gyp": "^1.0.11",
  3090 + "node-addon-api": "^5.0.0"
  3091 + },
  3092 + "engines": {
  3093 + "node": ">= 10.0.0"
  3094 + }
  3095 + },
2872 "node_modules/big-integer": { 3096 "node_modules/big-integer": {
2873 "version": "1.6.52", 3097 "version": "1.6.52",
2874 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", 3098 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
@@ -2964,7 +3188,6 @@ @@ -2964,7 +3188,6 @@
2964 "version": "1.1.11", 3188 "version": "1.1.11",
2965 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 3189 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2966 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 3190 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2967 - "dev": true,  
2968 "dependencies": { 3191 "dependencies": {
2969 "balanced-match": "^1.0.0", 3192 "balanced-match": "^1.0.0",
2970 "concat-map": "0.0.1" 3193 "concat-map": "0.0.1"
@@ -3059,6 +3282,11 @@ @@ -3059,6 +3282,11 @@
3059 "ieee754": "^1.1.13" 3282 "ieee754": "^1.1.13"
3060 } 3283 }
3061 }, 3284 },
  3285 + "node_modules/buffer-equal-constant-time": {
  3286 + "version": "1.0.1",
  3287 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
  3288 + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
  3289 + },
3062 "node_modules/buffer-from": { 3290 "node_modules/buffer-from": {
3063 "version": "1.1.2", 3291 "version": "1.1.2",
3064 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 3292 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -3206,6 +3434,14 @@ @@ -3206,6 +3434,14 @@
3206 "fsevents": "~2.3.2" 3434 "fsevents": "~2.3.2"
3207 } 3435 }
3208 }, 3436 },
  3437 + "node_modules/chownr": {
  3438 + "version": "2.0.0",
  3439 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
  3440 + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
  3441 + "engines": {
  3442 + "node": ">=10"
  3443 + }
  3444 + },
3209 "node_modules/chrome-trace-event": { 3445 "node_modules/chrome-trace-event": {
3210 "version": "1.0.3", 3446 "version": "1.0.3",
3211 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 3447 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -3356,6 +3592,14 @@ @@ -3356,6 +3592,14 @@
3356 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3592 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3357 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 3593 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
3358 }, 3594 },
  3595 + "node_modules/color-support": {
  3596 + "version": "1.1.3",
  3597 + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
  3598 + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
  3599 + "bin": {
  3600 + "color-support": "bin.js"
  3601 + }
  3602 + },
3359 "node_modules/combined-stream": { 3603 "node_modules/combined-stream": {
3360 "version": "1.0.8", 3604 "version": "1.0.8",
3361 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 3605 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -3405,8 +3649,7 @@ @@ -3405,8 +3649,7 @@
3405 "node_modules/concat-map": { 3649 "node_modules/concat-map": {
3406 "version": "0.0.1", 3650 "version": "0.0.1",
3407 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 3651 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
3408 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",  
3409 - "dev": true 3652 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
3410 }, 3653 },
3411 "node_modules/concat-stream": { 3654 "node_modules/concat-stream": {
3412 "version": "1.6.2", 3655 "version": "1.6.2",
@@ -3427,6 +3670,11 @@ @@ -3427,6 +3670,11 @@
3427 "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", 3670 "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
3428 "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" 3671 "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
3429 }, 3672 },
  3673 + "node_modules/console-control-strings": {
  3674 + "version": "1.1.0",
  3675 + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
  3676 + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
  3677 + },
3430 "node_modules/content-disposition": { 3678 "node_modules/content-disposition": {
3431 "version": "0.5.4", 3679 "version": "0.5.4",
3432 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 3680 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -3555,11 +3803,15 @@ @@ -3555,11 +3803,15 @@
3555 "node": ">= 8" 3803 "node": ">= 8"
3556 } 3804 }
3557 }, 3805 },
  3806 + "node_modules/crypto-js": {
  3807 + "version": "4.2.0",
  3808 + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
  3809 + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
  3810 + },
3558 "node_modules/debug": { 3811 "node_modules/debug": {
3559 "version": "4.3.4", 3812 "version": "4.3.4",
3560 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3813 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3561 "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3814 "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3562 - "dev": true,  
3563 "dependencies": { 3815 "dependencies": {
3564 "ms": "2.1.2" 3816 "ms": "2.1.2"
3565 }, 3817 },
@@ -3797,6 +4049,11 @@ @@ -3797,6 +4049,11 @@
3797 "node": ">=0.4.0" 4049 "node": ">=0.4.0"
3798 } 4050 }
3799 }, 4051 },
  4052 + "node_modules/delegates": {
  4053 + "version": "1.0.0",
  4054 + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
  4055 + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
  4056 + },
3800 "node_modules/depd": { 4057 "node_modules/depd": {
3801 "version": "2.0.0", 4058 "version": "2.0.0",
3802 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 4059 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -3814,6 +4071,14 @@ @@ -3814,6 +4071,14 @@
3814 "npm": "1.2.8000 || >= 1.4.16" 4071 "npm": "1.2.8000 || >= 1.4.16"
3815 } 4072 }
3816 }, 4073 },
  4074 + "node_modules/detect-libc": {
  4075 + "version": "2.0.2",
  4076 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
  4077 + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
  4078 + "engines": {
  4079 + "node": ">=8"
  4080 + }
  4081 + },
3817 "node_modules/detect-newline": { 4082 "node_modules/detect-newline": {
3818 "version": "3.1.0", 4083 "version": "3.1.0",
3819 "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", 4084 "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@@ -3881,6 +4146,14 @@ @@ -3881,6 +4146,14 @@
3881 "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 4146 "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
3882 "dev": true 4147 "dev": true
3883 }, 4148 },
  4149 + "node_modules/ecdsa-sig-formatter": {
  4150 + "version": "1.0.11",
  4151 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
  4152 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
  4153 + "dependencies": {
  4154 + "safe-buffer": "^5.0.1"
  4155 + }
  4156 + },
3884 "node_modules/ee-first": { 4157 "node_modules/ee-first": {
3885 "version": "1.1.1", 4158 "version": "1.1.1",
3886 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 4159 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -3907,8 +4180,7 @@ @@ -3907,8 +4180,7 @@
3907 "node_modules/emoji-regex": { 4180 "node_modules/emoji-regex": {
3908 "version": "8.0.0", 4181 "version": "8.0.0",
3909 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4182 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3910 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",  
3911 - "dev": true 4183 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
3912 }, 4184 },
3913 "node_modules/encodeurl": { 4185 "node_modules/encodeurl": {
3914 "version": "1.0.2", 4186 "version": "1.0.2",
@@ -4707,6 +4979,33 @@ @@ -4707,6 +4979,33 @@
4707 "node": ">=12" 4979 "node": ">=12"
4708 } 4980 }
4709 }, 4981 },
  4982 + "node_modules/fs-minipass": {
  4983 + "version": "2.1.0",
  4984 + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
  4985 + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
  4986 + "dependencies": {
  4987 + "minipass": "^3.0.0"
  4988 + },
  4989 + "engines": {
  4990 + "node": ">= 8"
  4991 + }
  4992 + },
  4993 + "node_modules/fs-minipass/node_modules/minipass": {
  4994 + "version": "3.3.6",
  4995 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
  4996 + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
  4997 + "dependencies": {
  4998 + "yallist": "^4.0.0"
  4999 + },
  5000 + "engines": {
  5001 + "node": ">=8"
  5002 + }
  5003 + },
  5004 + "node_modules/fs-minipass/node_modules/yallist": {
  5005 + "version": "4.0.0",
  5006 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
  5007 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
  5008 + },
4710 "node_modules/fs-monkey": { 5009 "node_modules/fs-monkey": {
4711 "version": "1.0.5", 5010 "version": "1.0.5",
4712 "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", 5011 "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
@@ -4716,8 +5015,7 @@ @@ -4716,8 +5015,7 @@
4716 "node_modules/fs.realpath": { 5015 "node_modules/fs.realpath": {
4717 "version": "1.0.0", 5016 "version": "1.0.0",
4718 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 5017 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
4719 - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",  
4720 - "dev": true 5018 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
4721 }, 5019 },
4722 "node_modules/fsevents": { 5020 "node_modules/fsevents": {
4723 "version": "2.3.3", 5021 "version": "2.3.3",
@@ -4741,6 +5039,30 @@ @@ -4741,6 +5039,30 @@
4741 "url": "https://github.com/sponsors/ljharb" 5039 "url": "https://github.com/sponsors/ljharb"
4742 } 5040 }
4743 }, 5041 },
  5042 + "node_modules/gauge": {
  5043 + "version": "3.0.2",
  5044 + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
  5045 + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
  5046 + "dependencies": {
  5047 + "aproba": "^1.0.3 || ^2.0.0",
  5048 + "color-support": "^1.1.2",
  5049 + "console-control-strings": "^1.0.0",
  5050 + "has-unicode": "^2.0.1",
  5051 + "object-assign": "^4.1.1",
  5052 + "signal-exit": "^3.0.0",
  5053 + "string-width": "^4.2.3",
  5054 + "strip-ansi": "^6.0.1",
  5055 + "wide-align": "^1.1.2"
  5056 + },
  5057 + "engines": {
  5058 + "node": ">=10"
  5059 + }
  5060 + },
  5061 + "node_modules/gauge/node_modules/signal-exit": {
  5062 + "version": "3.0.7",
  5063 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
  5064 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
  5065 + },
4744 "node_modules/gensync": { 5066 "node_modules/gensync": {
4745 "version": "1.0.0-beta.2", 5067 "version": "1.0.0-beta.2",
4746 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 5068 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -4966,6 +5288,11 @@ @@ -4966,6 +5288,11 @@
4966 "url": "https://github.com/sponsors/ljharb" 5288 "url": "https://github.com/sponsors/ljharb"
4967 } 5289 }
4968 }, 5290 },
  5291 + "node_modules/has-unicode": {
  5292 + "version": "2.0.1",
  5293 + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
  5294 + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
  5295 + },
4969 "node_modules/hasown": { 5296 "node_modules/hasown": {
4970 "version": "2.0.0", 5297 "version": "2.0.0",
4971 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", 5298 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -5007,6 +5334,18 @@ @@ -5007,6 +5334,18 @@
5007 "node": ">= 0.8" 5334 "node": ">= 0.8"
5008 } 5335 }
5009 }, 5336 },
  5337 + "node_modules/https-proxy-agent": {
  5338 + "version": "5.0.1",
  5339 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
  5340 + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
  5341 + "dependencies": {
  5342 + "agent-base": "6",
  5343 + "debug": "4"
  5344 + },
  5345 + "engines": {
  5346 + "node": ">= 6"
  5347 + }
  5348 + },
5010 "node_modules/human-signals": { 5349 "node_modules/human-signals": {
5011 "version": "2.1.0", 5350 "version": "2.1.0",
5012 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 5351 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -5104,7 +5443,6 @@ @@ -5104,7 +5443,6 @@
5104 "version": "1.0.6", 5443 "version": "1.0.6",
5105 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 5444 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
5106 "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 5445 "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
5107 - "dev": true,  
5108 "dependencies": { 5446 "dependencies": {
5109 "once": "^1.3.0", 5447 "once": "^1.3.0",
5110 "wrappy": "1" 5448 "wrappy": "1"
@@ -5216,7 +5554,6 @@ @@ -5216,7 +5554,6 @@
5216 "version": "3.0.0", 5554 "version": "3.0.0",
5217 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 5555 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
5218 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 5556 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
5219 - "dev": true,  
5220 "engines": { 5557 "engines": {
5221 "node": ">=8" 5558 "node": ">=8"
5222 } 5559 }
@@ -6148,6 +6485,46 @@ @@ -6148,6 +6485,46 @@
6148 "graceful-fs": "^4.1.6" 6485 "graceful-fs": "^4.1.6"
6149 } 6486 }
6150 }, 6487 },
  6488 + "node_modules/jsonwebtoken": {
  6489 + "version": "9.0.2",
  6490 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
  6491 + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
  6492 + "dependencies": {
  6493 + "jws": "^3.2.2",
  6494 + "lodash.includes": "^4.3.0",
  6495 + "lodash.isboolean": "^3.0.3",
  6496 + "lodash.isinteger": "^4.0.4",
  6497 + "lodash.isnumber": "^3.0.3",
  6498 + "lodash.isplainobject": "^4.0.6",
  6499 + "lodash.isstring": "^4.0.1",
  6500 + "lodash.once": "^4.0.0",
  6501 + "ms": "^2.1.1",
  6502 + "semver": "^7.5.4"
  6503 + },
  6504 + "engines": {
  6505 + "node": ">=12",
  6506 + "npm": ">=6"
  6507 + }
  6508 + },
  6509 + "node_modules/jwa": {
  6510 + "version": "1.4.1",
  6511 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
  6512 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
  6513 + "dependencies": {
  6514 + "buffer-equal-constant-time": "1.0.1",
  6515 + "ecdsa-sig-formatter": "1.0.11",
  6516 + "safe-buffer": "^5.0.1"
  6517 + }
  6518 + },
  6519 + "node_modules/jws": {
  6520 + "version": "3.2.2",
  6521 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
  6522 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
  6523 + "dependencies": {
  6524 + "jwa": "^1.4.1",
  6525 + "safe-buffer": "^5.0.1"
  6526 + }
  6527 + },
6151 "node_modules/keyv": { 6528 "node_modules/keyv": {
6152 "version": "4.5.4", 6529 "version": "4.5.4",
6153 "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 6530 "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -6224,6 +6601,36 @@ @@ -6224,6 +6601,36 @@
6224 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 6601 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
6225 "dev": true 6602 "dev": true
6226 }, 6603 },
  6604 + "node_modules/lodash.includes": {
  6605 + "version": "4.3.0",
  6606 + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
  6607 + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
  6608 + },
  6609 + "node_modules/lodash.isboolean": {
  6610 + "version": "3.0.3",
  6611 + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
  6612 + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
  6613 + },
  6614 + "node_modules/lodash.isinteger": {
  6615 + "version": "4.0.4",
  6616 + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
  6617 + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
  6618 + },
  6619 + "node_modules/lodash.isnumber": {
  6620 + "version": "3.0.3",
  6621 + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
  6622 + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
  6623 + },
  6624 + "node_modules/lodash.isplainobject": {
  6625 + "version": "4.0.6",
  6626 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
  6627 + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
  6628 + },
  6629 + "node_modules/lodash.isstring": {
  6630 + "version": "4.0.1",
  6631 + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
  6632 + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
  6633 + },
6227 "node_modules/lodash.memoize": { 6634 "node_modules/lodash.memoize": {
6228 "version": "4.1.2", 6635 "version": "4.1.2",
6229 "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 6636 "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -6236,6 +6643,11 @@ @@ -6236,6 +6643,11 @@
6236 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 6643 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
6237 "dev": true 6644 "dev": true
6238 }, 6645 },
  6646 + "node_modules/lodash.once": {
  6647 + "version": "4.1.1",
  6648 + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
  6649 + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
  6650 + },
6239 "node_modules/log-symbols": { 6651 "node_modules/log-symbols": {
6240 "version": "4.1.0", 6652 "version": "4.1.0",
6241 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 6653 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -6419,7 +6831,6 @@ @@ -6419,7 +6831,6 @@
6419 "version": "3.1.2", 6831 "version": "3.1.2",
6420 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 6832 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
6421 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 6833 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
6422 - "dev": true,  
6423 "dependencies": { 6834 "dependencies": {
6424 "brace-expansion": "^1.1.7" 6835 "brace-expansion": "^1.1.7"
6425 }, 6836 },
@@ -6444,6 +6855,34 @@ @@ -6444,6 +6855,34 @@
6444 "node": ">=16 || 14 >=14.17" 6855 "node": ">=16 || 14 >=14.17"
6445 } 6856 }
6446 }, 6857 },
  6858 + "node_modules/minizlib": {
  6859 + "version": "2.1.2",
  6860 + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
  6861 + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
  6862 + "dependencies": {
  6863 + "minipass": "^3.0.0",
  6864 + "yallist": "^4.0.0"
  6865 + },
  6866 + "engines": {
  6867 + "node": ">= 8"
  6868 + }
  6869 + },
  6870 + "node_modules/minizlib/node_modules/minipass": {
  6871 + "version": "3.3.6",
  6872 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
  6873 + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
  6874 + "dependencies": {
  6875 + "yallist": "^4.0.0"
  6876 + },
  6877 + "engines": {
  6878 + "node": ">=8"
  6879 + }
  6880 + },
  6881 + "node_modules/minizlib/node_modules/yallist": {
  6882 + "version": "4.0.0",
  6883 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
  6884 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
  6885 + },
6447 "node_modules/mkdirp": { 6886 "node_modules/mkdirp": {
6448 "version": "0.5.6", 6887 "version": "0.5.6",
6449 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 6888 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@@ -6458,8 +6897,7 @@ @@ -6458,8 +6897,7 @@
6458 "node_modules/ms": { 6897 "node_modules/ms": {
6459 "version": "2.1.2", 6898 "version": "2.1.2",
6460 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 6899 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
6461 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",  
6462 - "dev": true 6900 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
6463 }, 6901 },
6464 "node_modules/multer": { 6902 "node_modules/multer": {
6465 "version": "1.4.4-lts.1", 6903 "version": "1.4.4-lts.1",
@@ -6510,6 +6948,11 @@ @@ -6510,6 +6948,11 @@
6510 "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", 6948 "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
6511 "dev": true 6949 "dev": true
6512 }, 6950 },
  6951 + "node_modules/node-addon-api": {
  6952 + "version": "5.1.0",
  6953 + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
  6954 + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
  6955 + },
6513 "node_modules/node-emoji": { 6956 "node_modules/node-emoji": {
6514 "version": "1.11.0", 6957 "version": "1.11.0",
6515 "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", 6958 "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -6550,6 +6993,20 @@ @@ -6550,6 +6993,20 @@
6550 "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", 6993 "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
6551 "dev": true 6994 "dev": true
6552 }, 6995 },
  6996 + "node_modules/nopt": {
  6997 + "version": "5.0.0",
  6998 + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
  6999 + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
  7000 + "dependencies": {
  7001 + "abbrev": "1"
  7002 + },
  7003 + "bin": {
  7004 + "nopt": "bin/nopt.js"
  7005 + },
  7006 + "engines": {
  7007 + "node": ">=6"
  7008 + }
  7009 + },
6553 "node_modules/normalize-path": { 7010 "node_modules/normalize-path": {
6554 "version": "3.0.0", 7011 "version": "3.0.0",
6555 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 7012 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -6571,6 +7028,17 @@ @@ -6571,6 +7028,17 @@
6571 "node": ">=8" 7028 "node": ">=8"
6572 } 7029 }
6573 }, 7030 },
  7031 + "node_modules/npmlog": {
  7032 + "version": "5.0.1",
  7033 + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
  7034 + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
  7035 + "dependencies": {
  7036 + "are-we-there-yet": "^2.0.0",
  7037 + "console-control-strings": "^1.1.0",
  7038 + "gauge": "^3.0.0",
  7039 + "set-blocking": "^2.0.0"
  7040 + }
  7041 + },
6574 "node_modules/object-assign": { 7042 "node_modules/object-assign": {
6575 "version": "4.1.1", 7043 "version": "4.1.1",
6576 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 7044 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -6602,7 +7070,6 @@ @@ -6602,7 +7070,6 @@
6602 "version": "1.4.0", 7070 "version": "1.4.0",
6603 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 7071 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
6604 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 7072 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
6605 - "dev": true,  
6606 "dependencies": { 7073 "dependencies": {
6607 "wrappy": "1" 7074 "wrappy": "1"
6608 } 7075 }
@@ -6782,6 +7249,52 @@ @@ -6782,6 +7249,52 @@
6782 "node": ">= 0.8" 7249 "node": ">= 0.8"
6783 } 7250 }
6784 }, 7251 },
  7252 + "node_modules/passport": {
  7253 + "version": "0.6.0",
  7254 + "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz",
  7255 + "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==",
  7256 + "peer": true,
  7257 + "dependencies": {
  7258 + "passport-strategy": "1.x.x",
  7259 + "pause": "0.0.1",
  7260 + "utils-merge": "^1.0.1"
  7261 + },
  7262 + "engines": {
  7263 + "node": ">= 0.4.0"
  7264 + },
  7265 + "funding": {
  7266 + "type": "github",
  7267 + "url": "https://github.com/sponsors/jaredhanson"
  7268 + }
  7269 + },
  7270 + "node_modules/passport-jwt": {
  7271 + "version": "4.0.1",
  7272 + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz",
  7273 + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==",
  7274 + "dependencies": {
  7275 + "jsonwebtoken": "^9.0.0",
  7276 + "passport-strategy": "^1.0.0"
  7277 + }
  7278 + },
  7279 + "node_modules/passport-local": {
  7280 + "version": "1.0.0",
  7281 + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
  7282 + "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==",
  7283 + "dependencies": {
  7284 + "passport-strategy": "1.x.x"
  7285 + },
  7286 + "engines": {
  7287 + "node": ">= 0.4.0"
  7288 + }
  7289 + },
  7290 + "node_modules/passport-strategy": {
  7291 + "version": "1.0.0",
  7292 + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
  7293 + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==",
  7294 + "engines": {
  7295 + "node": ">= 0.4.0"
  7296 + }
  7297 + },
6785 "node_modules/path-exists": { 7298 "node_modules/path-exists": {
6786 "version": "4.0.0", 7299 "version": "4.0.0",
6787 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 7300 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -6795,7 +7308,6 @@ @@ -6795,7 +7308,6 @@
6795 "version": "1.0.1", 7308 "version": "1.0.1",
6796 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 7309 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
6797 "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 7310 "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
6798 - "dev": true,  
6799 "engines": { 7311 "engines": {
6800 "node": ">=0.10.0" 7312 "node": ">=0.10.0"
6801 } 7313 }
@@ -6854,6 +7366,12 @@ @@ -6854,6 +7366,12 @@
6854 "node": ">=8" 7366 "node": ">=8"
6855 } 7367 }
6856 }, 7368 },
  7369 + "node_modules/pause": {
  7370 + "version": "0.0.1",
  7371 + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
  7372 + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==",
  7373 + "peer": true
  7374 + },
6857 "node_modules/picocolors": { 7375 "node_modules/picocolors": {
6858 "version": "1.0.0", 7376 "version": "1.0.0",
6859 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 7377 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -7528,7 +8046,6 @@ @@ -7528,7 +8046,6 @@
7528 "version": "7.5.4", 8046 "version": "7.5.4",
7529 "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 8047 "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
7530 "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 8048 "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
7531 - "dev": true,  
7532 "dependencies": { 8049 "dependencies": {
7533 "lru-cache": "^6.0.0" 8050 "lru-cache": "^6.0.0"
7534 }, 8051 },
@@ -7543,7 +8060,6 @@ @@ -7543,7 +8060,6 @@
7543 "version": "6.0.0", 8060 "version": "6.0.0",
7544 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 8061 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
7545 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 8062 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
7546 - "dev": true,  
7547 "dependencies": { 8063 "dependencies": {
7548 "yallist": "^4.0.0" 8064 "yallist": "^4.0.0"
7549 }, 8065 },
@@ -7554,8 +8070,7 @@ @@ -7554,8 +8070,7 @@
7554 "node_modules/semver/node_modules/yallist": { 8070 "node_modules/semver/node_modules/yallist": {
7555 "version": "4.0.0", 8071 "version": "4.0.0",
7556 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 8072 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
7557 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",  
7558 - "dev": true 8073 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
7559 }, 8074 },
7560 "node_modules/send": { 8075 "node_modules/send": {
7561 "version": "0.18.0", 8076 "version": "0.18.0",
@@ -7621,6 +8136,11 @@ @@ -7621,6 +8136,11 @@
7621 "node": ">= 0.8.0" 8136 "node": ">= 0.8.0"
7622 } 8137 }
7623 }, 8138 },
  8139 + "node_modules/set-blocking": {
  8140 + "version": "2.0.0",
  8141 + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
  8142 + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
  8143 + },
7624 "node_modules/set-function-length": { 8144 "node_modules/set-function-length": {
7625 "version": "1.1.1", 8145 "version": "1.1.1",
7626 "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", 8146 "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
@@ -7839,7 +8359,6 @@ @@ -7839,7 +8359,6 @@
7839 "version": "4.2.3", 8359 "version": "4.2.3",
7840 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 8360 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
7841 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 8361 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
7842 - "dev": true,  
7843 "dependencies": { 8362 "dependencies": {
7844 "emoji-regex": "^8.0.0", 8363 "emoji-regex": "^8.0.0",
7845 "is-fullwidth-code-point": "^3.0.0", 8364 "is-fullwidth-code-point": "^3.0.0",
@@ -7868,7 +8387,6 @@ @@ -7868,7 +8387,6 @@
7868 "version": "6.0.1", 8387 "version": "6.0.1",
7869 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 8388 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
7870 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 8389 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
7871 - "dev": true,  
7872 "dependencies": { 8390 "dependencies": {
7873 "ansi-regex": "^5.0.1" 8391 "ansi-regex": "^5.0.1"
7874 }, 8392 },
@@ -8022,6 +8540,46 @@ @@ -8022,6 +8540,46 @@
8022 "node": ">=6" 8540 "node": ">=6"
8023 } 8541 }
8024 }, 8542 },
  8543 + "node_modules/tar": {
  8544 + "version": "6.2.0",
  8545 + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
  8546 + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
  8547 + "dependencies": {
  8548 + "chownr": "^2.0.0",
  8549 + "fs-minipass": "^2.0.0",
  8550 + "minipass": "^5.0.0",
  8551 + "minizlib": "^2.1.1",
  8552 + "mkdirp": "^1.0.3",
  8553 + "yallist": "^4.0.0"
  8554 + },
  8555 + "engines": {
  8556 + "node": ">=10"
  8557 + }
  8558 + },
  8559 + "node_modules/tar/node_modules/minipass": {
  8560 + "version": "5.0.0",
  8561 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
  8562 + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
  8563 + "engines": {
  8564 + "node": ">=8"
  8565 + }
  8566 + },
  8567 + "node_modules/tar/node_modules/mkdirp": {
  8568 + "version": "1.0.4",
  8569 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
  8570 + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
  8571 + "bin": {
  8572 + "mkdirp": "bin/cmd.js"
  8573 + },
  8574 + "engines": {
  8575 + "node": ">=10"
  8576 + }
  8577 + },
  8578 + "node_modules/tar/node_modules/yallist": {
  8579 + "version": "4.0.0",
  8580 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
  8581 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
  8582 + },
8025 "node_modules/terser": { 8583 "node_modules/terser": {
8026 "version": "5.24.0", 8584 "version": "5.24.0",
8027 "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", 8585 "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
@@ -8465,8 +9023,7 @@ @@ -8465,8 +9023,7 @@
8465 "node_modules/undici-types": { 9023 "node_modules/undici-types": {
8466 "version": "5.26.5", 9024 "version": "5.26.5",
8467 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 9025 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
8468 - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",  
8469 - "dev": true 9026 + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
8470 }, 9027 },
8471 "node_modules/universalify": { 9028 "node_modules/universalify": {
8472 "version": "2.0.1", 9029 "version": "2.0.1",
@@ -8721,6 +9278,14 @@ @@ -8721,6 +9278,14 @@
8721 "node": ">= 8" 9278 "node": ">= 8"
8722 } 9279 }
8723 }, 9280 },
  9281 + "node_modules/wide-align": {
  9282 + "version": "1.1.5",
  9283 + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
  9284 + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
  9285 + "dependencies": {
  9286 + "string-width": "^1.0.2 || 2 || 3 || 4"
  9287 + }
  9288 + },
8724 "node_modules/windows-release": { 9289 "node_modules/windows-release": {
8725 "version": "4.0.0", 9290 "version": "4.0.0",
8726 "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", 9291 "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz",
@@ -8824,8 +9389,7 @@ @@ -8824,8 +9389,7 @@
8824 "node_modules/wrappy": { 9389 "node_modules/wrappy": {
8825 "version": "1.0.2", 9390 "version": "1.0.2",
8826 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 9391 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
8827 - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",  
8828 - "dev": true 9392 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
8829 }, 9393 },
8830 "node_modules/write-file-atomic": { 9394 "node_modules/write-file-atomic": {
8831 "version": "4.0.2", 9395 "version": "4.0.2",
@@ -22,9 +22,16 @@ @@ -22,9 +22,16 @@
22 "dependencies": { 22 "dependencies": {
23 "@nestjs/common": "^10.2.10", 23 "@nestjs/common": "^10.2.10",
24 "@nestjs/core": "^10.0.0", 24 "@nestjs/core": "^10.0.0",
  25 + "@nestjs/jwt": "^10.2.0",
25 "@nestjs/mapped-types": "^2.0.4", 26 "@nestjs/mapped-types": "^2.0.4",
  27 + "@nestjs/passport": "^10.0.2",
26 "@nestjs/platform-express": "^10.0.0", 28 "@nestjs/platform-express": "^10.0.0",
27 "@prisma/client": "^5.6.0", 29 "@prisma/client": "^5.6.0",
  30 + "bcrypt": "^5.1.1",
  31 + "cors": "^2.8.5",
  32 + "crypto-js": "^4.2.0",
  33 + "passport-jwt": "^4.0.1",
  34 + "passport-local": "^1.0.0",
28 "prisma": "^5.6.0", 35 "prisma": "^5.6.0",
29 "reflect-metadata": "^0.1.13", 36 "reflect-metadata": "^0.1.13",
30 "rxjs": "^7.8.1" 37 "rxjs": "^7.8.1"
@@ -33,9 +40,13 @@ @@ -33,9 +40,13 @@
33 "@nestjs/cli": "^10.0.0", 40 "@nestjs/cli": "^10.0.0",
34 "@nestjs/schematics": "^10.0.0", 41 "@nestjs/schematics": "^10.0.0",
35 "@nestjs/testing": "^10.0.0", 42 "@nestjs/testing": "^10.0.0",
  43 + "@types/bcrypt": "^5.0.2",
  44 + "@types/cors": "^2.8.17",
  45 + "@types/crypto-js": "^4.2.1",
36 "@types/express": "^4.17.17", 46 "@types/express": "^4.17.17",
37 "@types/jest": "^29.5.2", 47 "@types/jest": "^29.5.2",
38 "@types/node": "^20.3.1", 48 "@types/node": "^20.3.1",
  49 + "@types/passport-jwt": "^3.0.13",
39 "@types/supertest": "^2.0.12", 50 "@types/supertest": "^2.0.12",
40 "@typescript-eslint/eslint-plugin": "^6.0.0", 51 "@typescript-eslint/eslint-plugin": "^6.0.0",
41 "@typescript-eslint/parser": "^6.0.0", 52 "@typescript-eslint/parser": "^6.0.0",
1 -generator client {  
2 - provider = "prisma-client-js"  
3 -}  
4 -  
5 -datasource db {  
6 - provider = "mysql"  
7 - url = env("DATABASE_URL")  
8 -}  
9 -  
10 -model User {  
11 - id String @id  
12 - name String  
13 - email String  
14 - password String  
15 - created_at DateTime @default(now())  
16 - updated_at DateTime?  
17 -}  
  1 +const CryptoJS = require('crypto-js');
  2 +
  3 +export const encryptBody = (data: any) => {
  4 + return {
  5 + data: CryptoJS.AES.encrypt(JSON.stringify(data), 'ditohash').toString()
  6 + };
  7 +};
1 -import { Controller, Get } from '@nestjs/common'; 1 +import { Controller } from '@nestjs/common';
2 import { AppService } from './app.service'; 2 import { AppService } from './app.service';
3 3
4 @Controller() 4 @Controller()
5 export class AppController { 5 export class AppController {
6 - constructor(private readonly appService: AppService) {}  
7 -  
8 - @Get()  
9 - getHello(): string {  
10 - return this.appService.getHello();  
11 - } 6 + constructor(private readonly appService: AppService) { }
12 } 7 }
1 -import { Module } from '@nestjs/common'; 1 +import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
2 import { AppController } from './app.controller'; 2 import { AppController } from './app.controller';
3 import { AppService } from './app.service'; 3 import { AppService } from './app.service';
4 import { UsersModule } from '../users/users.module'; 4 import { UsersModule } from '../users/users.module';
  5 +import { PrismaService } from 'src/config/prisma.service';
  6 +import { AuthModule } from '../auth/auth.module';
  7 +import { DescryptMiddleware } from './middlewares/decrypt.middleware';
  8 +// import cors from 'cors';
5 9
6 @Module({ 10 @Module({
7 - imports: [UsersModule], 11 + imports: [UsersModule, AuthModule],
8 controllers: [AppController], 12 controllers: [AppController],
9 - providers: [AppService], 13 + providers: [AppService, PrismaService],
10 }) 14 })
11 -export class AppModule {} 15 +export class AppModule implements NestModule {
  16 + configure(consumer: MiddlewareConsumer) {
  17 + consumer.apply(DescryptMiddleware).forRoutes('*');
  18 + }
  19 +}
  1 +import { Injectable, NestMiddleware } from '@nestjs/common';
  2 +import { Request, Response, NextFunction } from 'express';
  3 +const CryptoJS = require('crypto-js');
  4 +
  5 +@Injectable()
  6 +export class DescryptMiddleware implements NestMiddleware {
  7 + use(req: Request, res: Response, next: NextFunction) {
  8 + // req.body = (CryptoJS.AES.decrypt(req.body.data, 'ditohash').toString(CryptoJS.enc.Utf8));
  9 + console.log(
  10 + CryptoJS.AES.decrypt(req.body.data, 'ditohash').toString(
  11 + CryptoJS.enc.Utf8,
  12 + ),
  13 + );
  14 + next();
  15 + }
  16 +}
1 -import {  
2 - Controller,  
3 - Get,  
4 - Post,  
5 - Body,  
6 - Patch,  
7 - Param,  
8 - Delete,  
9 -} from '@nestjs/common'; 1 +import { Controller, Request, Post, UseGuards } from '@nestjs/common';
10 import { AuthService } from './auth.service'; 2 import { AuthService } from './auth.service';
11 -import { CreateAuthDto } from './dto/create-auth.dto';  
12 -import { UpdateAuthDto } from './dto/update-auth.dto'; 3 +import { AuthGuard } from '@nestjs/passport';
13 4
14 @Controller('auth') 5 @Controller('auth')
15 export class AuthController { 6 export class AuthController {
16 - constructor(private readonly authService: AuthService) {} 7 + constructor(private readonly authService: AuthService) { }
17 8
18 - @Post()  
19 - create(@Body() createAuthDto: CreateAuthDto) {  
20 - return this.authService.create(createAuthDto);  
21 - } 9 + // @Post()
  10 + // create(@Body() createAuthDto: CreateAuthDto) {
  11 + // return this.authService.create(createAuthDto);
  12 + // }
22 13
23 - @Get()  
24 - findAll() {  
25 - return this.authService.findAll(); 14 + @UseGuards(AuthGuard('local'))
  15 + @Post('login')
  16 + async login(@Request() req) {
  17 + return this.authService.login(req.user);
26 } 18 }
27 19
28 - @Get(':id')  
29 - findOne(@Param('id') id: string) {  
30 - return this.authService.findOne(+id);  
31 - } 20 + // @Get(':id')
  21 + // findOne(@Param('id') id: string) {
  22 + // return this.authService.findOne(+id);
  23 + // }
32 24
33 - @Patch(':id')  
34 - update(@Param('id') id: string, @Body() updateAuthDto: UpdateAuthDto) {  
35 - return this.authService.update(+id, updateAuthDto);  
36 - } 25 + // @Patch(':id')
  26 + // update(@Param('id') id: string, @Body() updateAuthDto: UpdateAuthDto) {
  27 + // return this.authService.update(+id, updateAuthDto);
  28 + // }
37 29
38 - @Delete(':id')  
39 - remove(@Param('id') id: string) {  
40 - return this.authService.remove(+id);  
41 - } 30 + // @Delete(':id')
  31 + // remove(@Param('id') id: string) {
  32 + // return this.authService.remove(+id);
  33 + // }
42 } 34 }
1 import { Module } from '@nestjs/common'; 1 import { Module } from '@nestjs/common';
2 import { AuthService } from './auth.service'; 2 import { AuthService } from './auth.service';
  3 +import { JwtModule } from '@nestjs/jwt';
  4 +import { jwtConstants } from './misc/constants';
  5 +import { PassportModule } from '@nestjs/passport';
  6 +import { LocalStrategy } from './strategies/local.strategy';
  7 +import { JwtStrategy } from './strategies/jwt.strategy';
  8 +import { UsersModule } from '../users/users.module';
  9 +import { UsersService } from '../users/users.service';
  10 +import { PrismaService } from 'src/config/prisma.service';
3 import { AuthController } from './auth.controller'; 11 import { AuthController } from './auth.controller';
4 12
5 @Module({ 13 @Module({
  14 + imports: [
  15 + UsersModule,
  16 + PassportModule,
  17 + JwtModule.register({
  18 + secret: jwtConstants.secret,
  19 + signOptions: { expiresIn: '3500s' },
  20 + }),
  21 + ],
6 controllers: [AuthController], 22 controllers: [AuthController],
7 - providers: [AuthService], 23 + providers: [
  24 + AuthService,
  25 + UsersService,
  26 + PrismaService,
  27 + LocalStrategy,
  28 + JwtStrategy,
  29 + ],
8 }) 30 })
9 -export class AuthModule {} 31 +export class AuthModule { }
1 -import { Injectable } from '@nestjs/common';  
2 -import { CreateAuthDto } from './dto/create-auth.dto';  
3 -import { UpdateAuthDto } from './dto/update-auth.dto'; 1 +import { Injectable, UnauthorizedException } from '@nestjs/common';
  2 +import { JwtService } from '@nestjs/jwt';
  3 +import { UsersService } from '../users/users.service';
  4 +import * as bcrypt from 'bcrypt'
4 5
5 @Injectable() 6 @Injectable()
6 export class AuthService { 7 export class AuthService {
7 - create(createAuthDto: CreateAuthDto) {  
8 - return 'This action adds a new auth';  
9 - }  
10 -  
11 - findAll() {  
12 - return `This action returns all auth`;  
13 - }  
14 -  
15 - findOne(id: number) {  
16 - return `This action returns a #${id} auth`;  
17 - } 8 + constructor(
  9 + private userService: UsersService,
  10 + private readonly jwtService: JwtService,
  11 + ) { }
18 12
19 - update(id: number, updateAuthDto: UpdateAuthDto) {  
20 - return `This action updates a #${id} auth`; 13 + async validateUser(email: string, pass: string): Promise<any> {
  14 + const user = await this.userService.findByMail(email);
  15 + if (bcrypt.compareSync(pass, user.password)) {
  16 + const { ...result } = user;
  17 + return result;
  18 + }
  19 + return null;
21 } 20 }
22 21
23 - remove(id: number) {  
24 - return `This action removes a #${id} auth`; 22 + async login(user: any) {
  23 + const payload = { username: user.email, sub: user.id };
  24 + return {
  25 + access_token: this.jwtService.sign(payload),
  26 + };
25 } 27 }
26 } 28 }
1 -export class CreateAuthDto {}  
1 -import { PartialType } from '@nestjs/mapped-types';  
2 -import { CreateAuthDto } from './create-auth.dto';  
3 -  
4 -export class UpdateAuthDto extends PartialType(CreateAuthDto) {}  
  1 +import { Injectable } from '@nestjs/common';
  2 +import { AuthGuard } from '@nestjs/passport';
  3 +
  4 +@Injectable()
  5 +export class JwtAuthGuard extends AuthGuard('jwt') { }
  1 +import { Injectable } from '@nestjs/common';
  2 +import { AuthGuard } from '@nestjs/passport';
  3 +
  4 +@Injectable()
  5 +export class LocalAuthGuard extends AuthGuard('local') { }
  1 +export const jwtConstants = { secret: 'ditobanxSecret' };
  1 +import { ExtractJwt, Strategy } from 'passport-jwt';
  2 +import { PassportStrategy } from '@nestjs/passport';
  3 +import { Injectable } from '@nestjs/common';
  4 +import { jwtConstants } from '../misc/constants';
  5 +
  6 +@Injectable()
  7 +export class JwtStrategy extends PassportStrategy(Strategy) {
  8 + constructor() {
  9 + super({
  10 + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  11 + ignoreExpiration: false,
  12 + secretOrKey: jwtConstants.secret,
  13 + });
  14 + }
  15 +
  16 + async validate(payload: any) {
  17 + return { userId: payload.sub, username: payload.username };
  18 + }
  19 +}
  1 +import { Strategy } from 'passport-local';
  2 +import { PassportStrategy } from '@nestjs/passport';
  3 +import { Injectable, UnauthorizedException } from '@nestjs/common';
  4 +import { AuthService } from '../auth.service';
  5 +
  6 +@Injectable()
  7 +export class LocalStrategy extends PassportStrategy(Strategy) {
  8 + constructor(private authService: AuthService) {
  9 + super({ usernameField: 'email' });
  10 + }
  11 +
  12 + async validate(username: string, password: string): Promise<any> {
  13 + const user = await this.authService.validateUser(username, password);
  14 + if (!user) {
  15 + throw new UnauthorizedException();
  16 + }
  17 + return user;
  18 + }
  19 +}
@@ -6,37 +6,32 @@ import { @@ -6,37 +6,32 @@ import {
6 Patch, 6 Patch,
7 Param, 7 Param,
8 Delete, 8 Delete,
  9 + UseGuards,
9 } from '@nestjs/common'; 10 } from '@nestjs/common';
10 import { UsersService } from './users.service'; 11 import { UsersService } from './users.service';
11 import { CreateUserDto } from './dto/create-user.dto'; 12 import { CreateUserDto } from './dto/create-user.dto';
12 import { UpdateUserDto } from './dto/update-user.dto'; 13 import { UpdateUserDto } from './dto/update-user.dto';
  14 +import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
  15 +import { encryptBody } from 'src/helpers/encryptor.helper';
13 16
14 @Controller('users') 17 @Controller('users')
15 export class UsersController { 18 export class UsersController {
16 - constructor(private readonly usersService: UsersService) {} 19 + constructor(private readonly usersService: UsersService) { }
17 20
18 @Post() 21 @Post()
19 create(@Body() createUserDto: CreateUserDto) { 22 create(@Body() createUserDto: CreateUserDto) {
20 - return this.usersService.create(createUserDto);  
21 - }  
22 -  
23 - @Get()  
24 - findAll() {  
25 - return this.usersService.findAll(); 23 + return this.usersService.create();
26 } 24 }
27 25
  26 + @UseGuards(JwtAuthGuard)
28 @Get(':id') 27 @Get(':id')
29 - findOne(@Param('id') id: string) {  
30 - return this.usersService.findOne(id); 28 + async findOne(@Param('id') id: string) {
  29 + return encryptBody(this.usersService.findOne(id));
31 } 30 }
32 31
33 - @Patch(':id')  
34 - update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {  
35 - return this.usersService.update(+id, updateUserDto);  
36 - }  
37 -  
38 - @Delete(':id')  
39 - remove(@Param('id') id: string) {  
40 - return this.usersService.remove(+id); 32 + @UseGuards(JwtAuthGuard)
  33 + @Get()
  34 + findAll() {
  35 + return this.usersService.findAll();
41 } 36 }
42 } 37 }
@@ -4,7 +4,8 @@ import { UsersController } from './users.controller'; @@ -4,7 +4,8 @@ import { UsersController } from './users.controller';
4 import { PrismaService } from 'src/config/prisma.service'; 4 import { PrismaService } from 'src/config/prisma.service';
5 5
6 @Module({ 6 @Module({
  7 + imports: [],
7 controllers: [UsersController], 8 controllers: [UsersController],
8 providers: [UsersService, PrismaService], 9 providers: [UsersService, PrismaService],
9 }) 10 })
10 -export class UsersModule {} 11 +export class UsersModule { }
1 import { Injectable } from '@nestjs/common'; 1 import { Injectable } from '@nestjs/common';
2 -import { CreateUserDto } from './dto/create-user.dto';  
3 -import { UpdateUserDto } from './dto/update-user.dto';  
4 import { PrismaService } from 'src/config/prisma.service'; 2 import { PrismaService } from 'src/config/prisma.service';
5 3
6 @Injectable() 4 @Injectable()
7 export class UsersService { 5 export class UsersService {
8 - constructor(private prisma: PrismaService) {}  
9 - create(createUserDto: CreateUserDto) {  
10 - return 'This action adds a new user';  
11 - } 6 + constructor(private prisma: PrismaService) { }
  7 + create() { }
12 8
13 findAll() { 9 findAll() {
14 - return this.prisma.user.findMany(); 10 + return this.prisma.user.findMany({
  11 + select: { id: true, email: true, name: true },
  12 + });
15 } 13 }
16 14
17 findOne(id: string) { 15 findOne(id: string) {
18 - return this.prisma.user.findUnique({ where: { id } }); 16 + return this.prisma.user.findUnique({
  17 + where: { id },
  18 + select: { id: true, email: true, name: true },
  19 + });
19 } 20 }
20 21
21 findByMail(email: string) { 22 findByMail(email: string) {
22 return this.prisma.user.findFirstOrThrow({ where: { email } }); 23 return this.prisma.user.findFirstOrThrow({ where: { email } });
23 } 24 }
24 -  
25 - update(id: number, updateUserDto: UpdateUserDto) {  
26 - return `This action updates a #${id} user`;  
27 - }  
28 -  
29 - remove(id: number) {  
30 - return `This action removes a #${id} user`;  
31 - }  
32 } 25 }
Please register or login to post a comment