Spaces:
Running
Running
Commit
·
1628025
1
Parent(s):
1dea2ab
feat: auto find routes and controllers
Browse files- .vscode/settings.json +5 -0
- package-lock.json +416 -10
- package.json +2 -0
- src/index.route.ts +0 -20
- src/index.ts +2 -2
- src/lib/controllers/controller.base.ts +10 -0
- src/modules/common/decorators/prefix.decorator.ts +7 -0
- src/modules/user/users/controllers/auth.controller.ts +63 -39
- src/modules/user/users/routes/auth.route.ts +3 -3
- src/routes.ts +61 -0
- tsconfig.json +2 -1
.vscode/settings.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cSpell.words": [
|
| 3 |
+
"Routable"
|
| 4 |
+
]
|
| 5 |
+
}
|
package-lock.json
CHANGED
|
@@ -9,10 +9,12 @@
|
|
| 9 |
"version": "1.0.0",
|
| 10 |
"license": "ISC",
|
| 11 |
"dependencies": {
|
|
|
|
| 12 |
"bcrypt": "^5.1.1",
|
| 13 |
"cors": "^2.8.5",
|
| 14 |
"dotenv": "^16.3.1",
|
| 15 |
"express": "^4.18.2",
|
|
|
|
| 16 |
"http": "^0.0.1-security",
|
| 17 |
"joi": "^17.11.0",
|
| 18 |
"jsonwebtoken": "^9.0.2",
|
|
@@ -51,6 +53,68 @@
|
|
| 51 |
"@hapi/hoek": "^9.0.0"
|
| 52 |
}
|
| 53 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
"node_modules/@jridgewell/resolve-uri": {
|
| 55 |
"version": "3.1.1",
|
| 56 |
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
|
|
@@ -117,6 +181,15 @@
|
|
| 117 |
"sparse-bitfield": "^3.0.3"
|
| 118 |
}
|
| 119 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
"node_modules/@sideway/address": {
|
| 121 |
"version": "4.1.4",
|
| 122 |
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
|
|
@@ -202,6 +275,15 @@
|
|
| 202 |
"@types/send": "*"
|
| 203 |
}
|
| 204 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
"node_modules/@types/http-errors": {
|
| 206 |
"version": "2.0.4",
|
| 207 |
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
|
|
@@ -214,6 +296,11 @@
|
|
| 214 |
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
|
| 215 |
"dev": true
|
| 216 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
"node_modules/@types/node": {
|
| 218 |
"version": "20.10.4",
|
| 219 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
|
|
@@ -326,6 +413,17 @@
|
|
| 326 |
"node": ">=8"
|
| 327 |
}
|
| 328 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 329 |
"node_modules/anymatch": {
|
| 330 |
"version": "3.1.3",
|
| 331 |
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
|
@@ -484,6 +582,22 @@
|
|
| 484 |
"node": ">=10"
|
| 485 |
}
|
| 486 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 487 |
"node_modules/color-support": {
|
| 488 |
"version": "1.1.3",
|
| 489 |
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
|
@@ -552,6 +666,19 @@
|
|
| 552 |
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
| 553 |
"dev": true
|
| 554 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 555 |
"node_modules/debug": {
|
| 556 |
"version": "4.3.4",
|
| 557 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
|
@@ -631,6 +758,11 @@
|
|
| 631 |
"url": "https://github.com/motdotla/dotenv?sponsor=1"
|
| 632 |
}
|
| 633 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 634 |
"node_modules/ecdsa-sig-formatter": {
|
| 635 |
"version": "1.0.11",
|
| 636 |
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
|
@@ -803,6 +935,32 @@
|
|
| 803 |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
| 804 |
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
| 805 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 806 |
"node_modules/forwarded": {
|
| 807 |
"version": "0.2.0",
|
| 808 |
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
|
@@ -902,19 +1060,21 @@
|
|
| 902 |
}
|
| 903 |
},
|
| 904 |
"node_modules/glob": {
|
| 905 |
-
"version": "
|
| 906 |
-
"resolved": "https://registry.npmjs.org/glob/-/glob-
|
| 907 |
-
"integrity": "sha512-
|
| 908 |
"dependencies": {
|
| 909 |
-
"
|
| 910 |
-
"
|
| 911 |
-
"
|
| 912 |
-
"
|
| 913 |
-
"
|
| 914 |
-
|
|
|
|
|
|
|
| 915 |
},
|
| 916 |
"engines": {
|
| 917 |
-
"node": "
|
| 918 |
},
|
| 919 |
"funding": {
|
| 920 |
"url": "https://github.com/sponsors/isaacs"
|
|
@@ -932,6 +1092,28 @@
|
|
| 932 |
"node": ">= 6"
|
| 933 |
}
|
| 934 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 935 |
"node_modules/gopd": {
|
| 936 |
"version": "1.0.1",
|
| 937 |
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
|
@@ -1122,6 +1304,28 @@
|
|
| 1122 |
"node": ">=0.12.0"
|
| 1123 |
}
|
| 1124 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1125 |
"node_modules/joi": {
|
| 1126 |
"version": "17.11.0",
|
| 1127 |
"resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz",
|
|
@@ -1643,6 +1847,37 @@
|
|
| 1643 |
"node": ">=0.10.0"
|
| 1644 |
}
|
| 1645 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1646 |
"node_modules/path-to-regexp": {
|
| 1647 |
"version": "0.1.7",
|
| 1648 |
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
|
@@ -1755,6 +1990,25 @@
|
|
| 1755 |
"url": "https://github.com/sponsors/isaacs"
|
| 1756 |
}
|
| 1757 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1758 |
"node_modules/safe-buffer": {
|
| 1759 |
"version": "5.2.1",
|
| 1760 |
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
|
@@ -1872,6 +2126,25 @@
|
|
| 1872 |
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
| 1873 |
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
| 1874 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1875 |
"node_modules/side-channel": {
|
| 1876 |
"version": "1.0.4",
|
| 1877 |
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
|
@@ -1944,6 +2217,20 @@
|
|
| 1944 |
"node": ">=8"
|
| 1945 |
}
|
| 1946 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1947 |
"node_modules/strip-ansi": {
|
| 1948 |
"version": "6.0.1",
|
| 1949 |
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
@@ -1955,6 +2242,18 @@
|
|
| 1955 |
"node": ">=8"
|
| 1956 |
}
|
| 1957 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1958 |
"node_modules/supports-color": {
|
| 1959 |
"version": "5.5.0",
|
| 1960 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
|
@@ -2173,6 +2472,20 @@
|
|
| 2173 |
"node": ">=12"
|
| 2174 |
}
|
| 2175 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2176 |
"node_modules/wide-align": {
|
| 2177 |
"version": "1.1.5",
|
| 2178 |
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
|
@@ -2181,6 +2494,99 @@
|
|
| 2181 |
"string-width": "^1.0.2 || 2 || 3 || 4"
|
| 2182 |
}
|
| 2183 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2184 |
"node_modules/wrappy": {
|
| 2185 |
"version": "1.0.2",
|
| 2186 |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
|
|
| 9 |
"version": "1.0.0",
|
| 10 |
"license": "ISC",
|
| 11 |
"dependencies": {
|
| 12 |
+
"@types/glob": "^8.1.0",
|
| 13 |
"bcrypt": "^5.1.1",
|
| 14 |
"cors": "^2.8.5",
|
| 15 |
"dotenv": "^16.3.1",
|
| 16 |
"express": "^4.18.2",
|
| 17 |
+
"glob": "^10.3.10",
|
| 18 |
"http": "^0.0.1-security",
|
| 19 |
"joi": "^17.11.0",
|
| 20 |
"jsonwebtoken": "^9.0.2",
|
|
|
|
| 53 |
"@hapi/hoek": "^9.0.0"
|
| 54 |
}
|
| 55 |
},
|
| 56 |
+
"node_modules/@isaacs/cliui": {
|
| 57 |
+
"version": "8.0.2",
|
| 58 |
+
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
|
| 59 |
+
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
|
| 60 |
+
"dependencies": {
|
| 61 |
+
"string-width": "^5.1.2",
|
| 62 |
+
"string-width-cjs": "npm:string-width@^4.2.0",
|
| 63 |
+
"strip-ansi": "^7.0.1",
|
| 64 |
+
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
|
| 65 |
+
"wrap-ansi": "^8.1.0",
|
| 66 |
+
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
|
| 67 |
+
},
|
| 68 |
+
"engines": {
|
| 69 |
+
"node": ">=12"
|
| 70 |
+
}
|
| 71 |
+
},
|
| 72 |
+
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
|
| 73 |
+
"version": "6.0.1",
|
| 74 |
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
|
| 75 |
+
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
|
| 76 |
+
"engines": {
|
| 77 |
+
"node": ">=12"
|
| 78 |
+
},
|
| 79 |
+
"funding": {
|
| 80 |
+
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
| 81 |
+
}
|
| 82 |
+
},
|
| 83 |
+
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
|
| 84 |
+
"version": "9.2.2",
|
| 85 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
|
| 86 |
+
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
|
| 87 |
+
},
|
| 88 |
+
"node_modules/@isaacs/cliui/node_modules/string-width": {
|
| 89 |
+
"version": "5.1.2",
|
| 90 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
|
| 91 |
+
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
|
| 92 |
+
"dependencies": {
|
| 93 |
+
"eastasianwidth": "^0.2.0",
|
| 94 |
+
"emoji-regex": "^9.2.2",
|
| 95 |
+
"strip-ansi": "^7.0.1"
|
| 96 |
+
},
|
| 97 |
+
"engines": {
|
| 98 |
+
"node": ">=12"
|
| 99 |
+
},
|
| 100 |
+
"funding": {
|
| 101 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 102 |
+
}
|
| 103 |
+
},
|
| 104 |
+
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
|
| 105 |
+
"version": "7.1.0",
|
| 106 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
|
| 107 |
+
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
|
| 108 |
+
"dependencies": {
|
| 109 |
+
"ansi-regex": "^6.0.1"
|
| 110 |
+
},
|
| 111 |
+
"engines": {
|
| 112 |
+
"node": ">=12"
|
| 113 |
+
},
|
| 114 |
+
"funding": {
|
| 115 |
+
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
| 116 |
+
}
|
| 117 |
+
},
|
| 118 |
"node_modules/@jridgewell/resolve-uri": {
|
| 119 |
"version": "3.1.1",
|
| 120 |
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
|
|
|
|
| 181 |
"sparse-bitfield": "^3.0.3"
|
| 182 |
}
|
| 183 |
},
|
| 184 |
+
"node_modules/@pkgjs/parseargs": {
|
| 185 |
+
"version": "0.11.0",
|
| 186 |
+
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
|
| 187 |
+
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
|
| 188 |
+
"optional": true,
|
| 189 |
+
"engines": {
|
| 190 |
+
"node": ">=14"
|
| 191 |
+
}
|
| 192 |
+
},
|
| 193 |
"node_modules/@sideway/address": {
|
| 194 |
"version": "4.1.4",
|
| 195 |
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
|
|
|
|
| 275 |
"@types/send": "*"
|
| 276 |
}
|
| 277 |
},
|
| 278 |
+
"node_modules/@types/glob": {
|
| 279 |
+
"version": "8.1.0",
|
| 280 |
+
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
|
| 281 |
+
"integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
|
| 282 |
+
"dependencies": {
|
| 283 |
+
"@types/minimatch": "^5.1.2",
|
| 284 |
+
"@types/node": "*"
|
| 285 |
+
}
|
| 286 |
+
},
|
| 287 |
"node_modules/@types/http-errors": {
|
| 288 |
"version": "2.0.4",
|
| 289 |
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
|
|
|
|
| 296 |
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
|
| 297 |
"dev": true
|
| 298 |
},
|
| 299 |
+
"node_modules/@types/minimatch": {
|
| 300 |
+
"version": "5.1.2",
|
| 301 |
+
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
|
| 302 |
+
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
|
| 303 |
+
},
|
| 304 |
"node_modules/@types/node": {
|
| 305 |
"version": "20.10.4",
|
| 306 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
|
|
|
|
| 413 |
"node": ">=8"
|
| 414 |
}
|
| 415 |
},
|
| 416 |
+
"node_modules/ansi-styles": {
|
| 417 |
+
"version": "6.2.1",
|
| 418 |
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
|
| 419 |
+
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
|
| 420 |
+
"engines": {
|
| 421 |
+
"node": ">=12"
|
| 422 |
+
},
|
| 423 |
+
"funding": {
|
| 424 |
+
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
| 425 |
+
}
|
| 426 |
+
},
|
| 427 |
"node_modules/anymatch": {
|
| 428 |
"version": "3.1.3",
|
| 429 |
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
|
|
|
| 582 |
"node": ">=10"
|
| 583 |
}
|
| 584 |
},
|
| 585 |
+
"node_modules/color-convert": {
|
| 586 |
+
"version": "2.0.1",
|
| 587 |
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
| 588 |
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
| 589 |
+
"dependencies": {
|
| 590 |
+
"color-name": "~1.1.4"
|
| 591 |
+
},
|
| 592 |
+
"engines": {
|
| 593 |
+
"node": ">=7.0.0"
|
| 594 |
+
}
|
| 595 |
+
},
|
| 596 |
+
"node_modules/color-name": {
|
| 597 |
+
"version": "1.1.4",
|
| 598 |
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
| 599 |
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
| 600 |
+
},
|
| 601 |
"node_modules/color-support": {
|
| 602 |
"version": "1.1.3",
|
| 603 |
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
|
|
|
| 666 |
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
| 667 |
"dev": true
|
| 668 |
},
|
| 669 |
+
"node_modules/cross-spawn": {
|
| 670 |
+
"version": "7.0.3",
|
| 671 |
+
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
| 672 |
+
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
| 673 |
+
"dependencies": {
|
| 674 |
+
"path-key": "^3.1.0",
|
| 675 |
+
"shebang-command": "^2.0.0",
|
| 676 |
+
"which": "^2.0.1"
|
| 677 |
+
},
|
| 678 |
+
"engines": {
|
| 679 |
+
"node": ">= 8"
|
| 680 |
+
}
|
| 681 |
+
},
|
| 682 |
"node_modules/debug": {
|
| 683 |
"version": "4.3.4",
|
| 684 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
|
|
|
| 758 |
"url": "https://github.com/motdotla/dotenv?sponsor=1"
|
| 759 |
}
|
| 760 |
},
|
| 761 |
+
"node_modules/eastasianwidth": {
|
| 762 |
+
"version": "0.2.0",
|
| 763 |
+
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
| 764 |
+
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
|
| 765 |
+
},
|
| 766 |
"node_modules/ecdsa-sig-formatter": {
|
| 767 |
"version": "1.0.11",
|
| 768 |
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
|
|
|
| 935 |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
| 936 |
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
| 937 |
},
|
| 938 |
+
"node_modules/foreground-child": {
|
| 939 |
+
"version": "3.1.1",
|
| 940 |
+
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
|
| 941 |
+
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
|
| 942 |
+
"dependencies": {
|
| 943 |
+
"cross-spawn": "^7.0.0",
|
| 944 |
+
"signal-exit": "^4.0.1"
|
| 945 |
+
},
|
| 946 |
+
"engines": {
|
| 947 |
+
"node": ">=14"
|
| 948 |
+
},
|
| 949 |
+
"funding": {
|
| 950 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 951 |
+
}
|
| 952 |
+
},
|
| 953 |
+
"node_modules/foreground-child/node_modules/signal-exit": {
|
| 954 |
+
"version": "4.1.0",
|
| 955 |
+
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
|
| 956 |
+
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
| 957 |
+
"engines": {
|
| 958 |
+
"node": ">=14"
|
| 959 |
+
},
|
| 960 |
+
"funding": {
|
| 961 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 962 |
+
}
|
| 963 |
+
},
|
| 964 |
"node_modules/forwarded": {
|
| 965 |
"version": "0.2.0",
|
| 966 |
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
|
|
|
| 1060 |
}
|
| 1061 |
},
|
| 1062 |
"node_modules/glob": {
|
| 1063 |
+
"version": "10.3.10",
|
| 1064 |
+
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
|
| 1065 |
+
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
|
| 1066 |
"dependencies": {
|
| 1067 |
+
"foreground-child": "^3.1.0",
|
| 1068 |
+
"jackspeak": "^2.3.5",
|
| 1069 |
+
"minimatch": "^9.0.1",
|
| 1070 |
+
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
|
| 1071 |
+
"path-scurry": "^1.10.1"
|
| 1072 |
+
},
|
| 1073 |
+
"bin": {
|
| 1074 |
+
"glob": "dist/esm/bin.mjs"
|
| 1075 |
},
|
| 1076 |
"engines": {
|
| 1077 |
+
"node": ">=16 || 14 >=14.17"
|
| 1078 |
},
|
| 1079 |
"funding": {
|
| 1080 |
"url": "https://github.com/sponsors/isaacs"
|
|
|
|
| 1092 |
"node": ">= 6"
|
| 1093 |
}
|
| 1094 |
},
|
| 1095 |
+
"node_modules/glob/node_modules/brace-expansion": {
|
| 1096 |
+
"version": "2.0.1",
|
| 1097 |
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
| 1098 |
+
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
| 1099 |
+
"dependencies": {
|
| 1100 |
+
"balanced-match": "^1.0.0"
|
| 1101 |
+
}
|
| 1102 |
+
},
|
| 1103 |
+
"node_modules/glob/node_modules/minimatch": {
|
| 1104 |
+
"version": "9.0.3",
|
| 1105 |
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
|
| 1106 |
+
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
|
| 1107 |
+
"dependencies": {
|
| 1108 |
+
"brace-expansion": "^2.0.1"
|
| 1109 |
+
},
|
| 1110 |
+
"engines": {
|
| 1111 |
+
"node": ">=16 || 14 >=14.17"
|
| 1112 |
+
},
|
| 1113 |
+
"funding": {
|
| 1114 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 1115 |
+
}
|
| 1116 |
+
},
|
| 1117 |
"node_modules/gopd": {
|
| 1118 |
"version": "1.0.1",
|
| 1119 |
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
|
|
|
| 1304 |
"node": ">=0.12.0"
|
| 1305 |
}
|
| 1306 |
},
|
| 1307 |
+
"node_modules/isexe": {
|
| 1308 |
+
"version": "2.0.0",
|
| 1309 |
+
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
| 1310 |
+
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
|
| 1311 |
+
},
|
| 1312 |
+
"node_modules/jackspeak": {
|
| 1313 |
+
"version": "2.3.6",
|
| 1314 |
+
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
|
| 1315 |
+
"integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
|
| 1316 |
+
"dependencies": {
|
| 1317 |
+
"@isaacs/cliui": "^8.0.2"
|
| 1318 |
+
},
|
| 1319 |
+
"engines": {
|
| 1320 |
+
"node": ">=14"
|
| 1321 |
+
},
|
| 1322 |
+
"funding": {
|
| 1323 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 1324 |
+
},
|
| 1325 |
+
"optionalDependencies": {
|
| 1326 |
+
"@pkgjs/parseargs": "^0.11.0"
|
| 1327 |
+
}
|
| 1328 |
+
},
|
| 1329 |
"node_modules/joi": {
|
| 1330 |
"version": "17.11.0",
|
| 1331 |
"resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz",
|
|
|
|
| 1847 |
"node": ">=0.10.0"
|
| 1848 |
}
|
| 1849 |
},
|
| 1850 |
+
"node_modules/path-key": {
|
| 1851 |
+
"version": "3.1.1",
|
| 1852 |
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
| 1853 |
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
| 1854 |
+
"engines": {
|
| 1855 |
+
"node": ">=8"
|
| 1856 |
+
}
|
| 1857 |
+
},
|
| 1858 |
+
"node_modules/path-scurry": {
|
| 1859 |
+
"version": "1.10.1",
|
| 1860 |
+
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
|
| 1861 |
+
"integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
|
| 1862 |
+
"dependencies": {
|
| 1863 |
+
"lru-cache": "^9.1.1 || ^10.0.0",
|
| 1864 |
+
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
|
| 1865 |
+
},
|
| 1866 |
+
"engines": {
|
| 1867 |
+
"node": ">=16 || 14 >=14.17"
|
| 1868 |
+
},
|
| 1869 |
+
"funding": {
|
| 1870 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 1871 |
+
}
|
| 1872 |
+
},
|
| 1873 |
+
"node_modules/path-scurry/node_modules/lru-cache": {
|
| 1874 |
+
"version": "10.1.0",
|
| 1875 |
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
|
| 1876 |
+
"integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
|
| 1877 |
+
"engines": {
|
| 1878 |
+
"node": "14 || >=16.14"
|
| 1879 |
+
}
|
| 1880 |
+
},
|
| 1881 |
"node_modules/path-to-regexp": {
|
| 1882 |
"version": "0.1.7",
|
| 1883 |
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
|
|
|
| 1990 |
"url": "https://github.com/sponsors/isaacs"
|
| 1991 |
}
|
| 1992 |
},
|
| 1993 |
+
"node_modules/rimraf/node_modules/glob": {
|
| 1994 |
+
"version": "7.2.3",
|
| 1995 |
+
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
| 1996 |
+
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
| 1997 |
+
"dependencies": {
|
| 1998 |
+
"fs.realpath": "^1.0.0",
|
| 1999 |
+
"inflight": "^1.0.4",
|
| 2000 |
+
"inherits": "2",
|
| 2001 |
+
"minimatch": "^3.1.1",
|
| 2002 |
+
"once": "^1.3.0",
|
| 2003 |
+
"path-is-absolute": "^1.0.0"
|
| 2004 |
+
},
|
| 2005 |
+
"engines": {
|
| 2006 |
+
"node": "*"
|
| 2007 |
+
},
|
| 2008 |
+
"funding": {
|
| 2009 |
+
"url": "https://github.com/sponsors/isaacs"
|
| 2010 |
+
}
|
| 2011 |
+
},
|
| 2012 |
"node_modules/safe-buffer": {
|
| 2013 |
"version": "5.2.1",
|
| 2014 |
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
|
|
|
| 2126 |
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
| 2127 |
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
| 2128 |
},
|
| 2129 |
+
"node_modules/shebang-command": {
|
| 2130 |
+
"version": "2.0.0",
|
| 2131 |
+
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
| 2132 |
+
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
| 2133 |
+
"dependencies": {
|
| 2134 |
+
"shebang-regex": "^3.0.0"
|
| 2135 |
+
},
|
| 2136 |
+
"engines": {
|
| 2137 |
+
"node": ">=8"
|
| 2138 |
+
}
|
| 2139 |
+
},
|
| 2140 |
+
"node_modules/shebang-regex": {
|
| 2141 |
+
"version": "3.0.0",
|
| 2142 |
+
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
| 2143 |
+
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
| 2144 |
+
"engines": {
|
| 2145 |
+
"node": ">=8"
|
| 2146 |
+
}
|
| 2147 |
+
},
|
| 2148 |
"node_modules/side-channel": {
|
| 2149 |
"version": "1.0.4",
|
| 2150 |
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
|
|
|
| 2217 |
"node": ">=8"
|
| 2218 |
}
|
| 2219 |
},
|
| 2220 |
+
"node_modules/string-width-cjs": {
|
| 2221 |
+
"name": "string-width",
|
| 2222 |
+
"version": "4.2.3",
|
| 2223 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
| 2224 |
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
| 2225 |
+
"dependencies": {
|
| 2226 |
+
"emoji-regex": "^8.0.0",
|
| 2227 |
+
"is-fullwidth-code-point": "^3.0.0",
|
| 2228 |
+
"strip-ansi": "^6.0.1"
|
| 2229 |
+
},
|
| 2230 |
+
"engines": {
|
| 2231 |
+
"node": ">=8"
|
| 2232 |
+
}
|
| 2233 |
+
},
|
| 2234 |
"node_modules/strip-ansi": {
|
| 2235 |
"version": "6.0.1",
|
| 2236 |
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
|
|
| 2242 |
"node": ">=8"
|
| 2243 |
}
|
| 2244 |
},
|
| 2245 |
+
"node_modules/strip-ansi-cjs": {
|
| 2246 |
+
"name": "strip-ansi",
|
| 2247 |
+
"version": "6.0.1",
|
| 2248 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
| 2249 |
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
| 2250 |
+
"dependencies": {
|
| 2251 |
+
"ansi-regex": "^5.0.1"
|
| 2252 |
+
},
|
| 2253 |
+
"engines": {
|
| 2254 |
+
"node": ">=8"
|
| 2255 |
+
}
|
| 2256 |
+
},
|
| 2257 |
"node_modules/supports-color": {
|
| 2258 |
"version": "5.5.0",
|
| 2259 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
|
|
|
| 2472 |
"node": ">=12"
|
| 2473 |
}
|
| 2474 |
},
|
| 2475 |
+
"node_modules/which": {
|
| 2476 |
+
"version": "2.0.2",
|
| 2477 |
+
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
| 2478 |
+
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
| 2479 |
+
"dependencies": {
|
| 2480 |
+
"isexe": "^2.0.0"
|
| 2481 |
+
},
|
| 2482 |
+
"bin": {
|
| 2483 |
+
"node-which": "bin/node-which"
|
| 2484 |
+
},
|
| 2485 |
+
"engines": {
|
| 2486 |
+
"node": ">= 8"
|
| 2487 |
+
}
|
| 2488 |
+
},
|
| 2489 |
"node_modules/wide-align": {
|
| 2490 |
"version": "1.1.5",
|
| 2491 |
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
|
|
|
| 2494 |
"string-width": "^1.0.2 || 2 || 3 || 4"
|
| 2495 |
}
|
| 2496 |
},
|
| 2497 |
+
"node_modules/wrap-ansi": {
|
| 2498 |
+
"version": "8.1.0",
|
| 2499 |
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
|
| 2500 |
+
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
|
| 2501 |
+
"dependencies": {
|
| 2502 |
+
"ansi-styles": "^6.1.0",
|
| 2503 |
+
"string-width": "^5.0.1",
|
| 2504 |
+
"strip-ansi": "^7.0.1"
|
| 2505 |
+
},
|
| 2506 |
+
"engines": {
|
| 2507 |
+
"node": ">=12"
|
| 2508 |
+
},
|
| 2509 |
+
"funding": {
|
| 2510 |
+
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
| 2511 |
+
}
|
| 2512 |
+
},
|
| 2513 |
+
"node_modules/wrap-ansi-cjs": {
|
| 2514 |
+
"name": "wrap-ansi",
|
| 2515 |
+
"version": "7.0.0",
|
| 2516 |
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
| 2517 |
+
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
| 2518 |
+
"dependencies": {
|
| 2519 |
+
"ansi-styles": "^4.0.0",
|
| 2520 |
+
"string-width": "^4.1.0",
|
| 2521 |
+
"strip-ansi": "^6.0.0"
|
| 2522 |
+
},
|
| 2523 |
+
"engines": {
|
| 2524 |
+
"node": ">=10"
|
| 2525 |
+
},
|
| 2526 |
+
"funding": {
|
| 2527 |
+
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
| 2528 |
+
}
|
| 2529 |
+
},
|
| 2530 |
+
"node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
|
| 2531 |
+
"version": "4.3.0",
|
| 2532 |
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
| 2533 |
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
| 2534 |
+
"dependencies": {
|
| 2535 |
+
"color-convert": "^2.0.1"
|
| 2536 |
+
},
|
| 2537 |
+
"engines": {
|
| 2538 |
+
"node": ">=8"
|
| 2539 |
+
},
|
| 2540 |
+
"funding": {
|
| 2541 |
+
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
| 2542 |
+
}
|
| 2543 |
+
},
|
| 2544 |
+
"node_modules/wrap-ansi/node_modules/ansi-regex": {
|
| 2545 |
+
"version": "6.0.1",
|
| 2546 |
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
|
| 2547 |
+
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
|
| 2548 |
+
"engines": {
|
| 2549 |
+
"node": ">=12"
|
| 2550 |
+
},
|
| 2551 |
+
"funding": {
|
| 2552 |
+
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
| 2553 |
+
}
|
| 2554 |
+
},
|
| 2555 |
+
"node_modules/wrap-ansi/node_modules/emoji-regex": {
|
| 2556 |
+
"version": "9.2.2",
|
| 2557 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
|
| 2558 |
+
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
|
| 2559 |
+
},
|
| 2560 |
+
"node_modules/wrap-ansi/node_modules/string-width": {
|
| 2561 |
+
"version": "5.1.2",
|
| 2562 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
|
| 2563 |
+
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
|
| 2564 |
+
"dependencies": {
|
| 2565 |
+
"eastasianwidth": "^0.2.0",
|
| 2566 |
+
"emoji-regex": "^9.2.2",
|
| 2567 |
+
"strip-ansi": "^7.0.1"
|
| 2568 |
+
},
|
| 2569 |
+
"engines": {
|
| 2570 |
+
"node": ">=12"
|
| 2571 |
+
},
|
| 2572 |
+
"funding": {
|
| 2573 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 2574 |
+
}
|
| 2575 |
+
},
|
| 2576 |
+
"node_modules/wrap-ansi/node_modules/strip-ansi": {
|
| 2577 |
+
"version": "7.1.0",
|
| 2578 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
|
| 2579 |
+
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
|
| 2580 |
+
"dependencies": {
|
| 2581 |
+
"ansi-regex": "^6.0.1"
|
| 2582 |
+
},
|
| 2583 |
+
"engines": {
|
| 2584 |
+
"node": ">=12"
|
| 2585 |
+
},
|
| 2586 |
+
"funding": {
|
| 2587 |
+
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
| 2588 |
+
}
|
| 2589 |
+
},
|
| 2590 |
"node_modules/wrappy": {
|
| 2591 |
"version": "1.0.2",
|
| 2592 |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
package.json
CHANGED
|
@@ -18,10 +18,12 @@
|
|
| 18 |
"typescript": "^5.3.3"
|
| 19 |
},
|
| 20 |
"dependencies": {
|
|
|
|
| 21 |
"bcrypt": "^5.1.1",
|
| 22 |
"cors": "^2.8.5",
|
| 23 |
"dotenv": "^16.3.1",
|
| 24 |
"express": "^4.18.2",
|
|
|
|
| 25 |
"http": "^0.0.1-security",
|
| 26 |
"joi": "^17.11.0",
|
| 27 |
"jsonwebtoken": "^9.0.2",
|
|
|
|
| 18 |
"typescript": "^5.3.3"
|
| 19 |
},
|
| 20 |
"dependencies": {
|
| 21 |
+
"@types/glob": "^8.1.0",
|
| 22 |
"bcrypt": "^5.1.1",
|
| 23 |
"cors": "^2.8.5",
|
| 24 |
"dotenv": "^16.3.1",
|
| 25 |
"express": "^4.18.2",
|
| 26 |
+
"glob": "^10.3.10",
|
| 27 |
"http": "^0.0.1-security",
|
| 28 |
"joi": "^17.11.0",
|
| 29 |
"jsonwebtoken": "^9.0.2",
|
src/index.route.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
| 1 |
-
import express from "express";
|
| 2 |
-
|
| 3 |
-
import { userRoutes } from "./modules/user/index.route";
|
| 4 |
-
import { adminRouter } from "./modules/console/index.route";
|
| 5 |
-
|
| 6 |
-
const mainRouter = express.Router();
|
| 7 |
-
|
| 8 |
-
mainRouter.use("/user", userRoutes);
|
| 9 |
-
mainRouter.use("/admin", adminRouter);
|
| 10 |
-
|
| 11 |
-
mainRouter.get("/health", (_req: any, res: any) => {
|
| 12 |
-
res.status(200).json({ success: true, message: "Server is up!", code: 200 });
|
| 13 |
-
});
|
| 14 |
-
|
| 15 |
-
// catch non existing routes
|
| 16 |
-
mainRouter.all("*", (_req: any, res: any) => {
|
| 17 |
-
res.status(404).json({ success: false, message: "Invalid URL!", code: 404 });
|
| 18 |
-
});
|
| 19 |
-
|
| 20 |
-
export { mainRouter };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import express from "express";
|
|
| 2 |
import cors from "cors";
|
| 3 |
import { connectDatabase } from "./configs/database";
|
| 4 |
import { config } from "./configs/config";
|
| 5 |
-
import {
|
| 6 |
|
| 7 |
const main = async () => {
|
| 8 |
// set up database connection
|
|
@@ -17,7 +17,7 @@ const main = async () => {
|
|
| 17 |
app.use(express.json());
|
| 18 |
|
| 19 |
// set up routes
|
| 20 |
-
app
|
| 21 |
|
| 22 |
// start server
|
| 23 |
app.listen(config.port, () => {
|
|
|
|
| 2 |
import cors from "cors";
|
| 3 |
import { connectDatabase } from "./configs/database";
|
| 4 |
import { config } from "./configs/config";
|
| 5 |
+
import { setAppRoutes } from "./routes";
|
| 6 |
|
| 7 |
const main = async () => {
|
| 8 |
// set up database connection
|
|
|
|
| 17 |
app.use(express.json());
|
| 18 |
|
| 19 |
// set up routes
|
| 20 |
+
await setAppRoutes(app);
|
| 21 |
|
| 22 |
// start server
|
| 23 |
app.listen(config.port, () => {
|
src/lib/controllers/controller.base.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Router } from "express";
|
| 2 |
+
|
| 3 |
+
export abstract class BaseController {
|
| 4 |
+
public static router: Router = Router();
|
| 5 |
+
public static prefix: string = "/";
|
| 6 |
+
|
| 7 |
+
public static setRoutes(_router: Router) {
|
| 8 |
+
throw new Error(`routes not set for ${this.name}`);
|
| 9 |
+
}
|
| 10 |
+
}
|
src/modules/common/decorators/prefix.decorator.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { BaseController } from "../../../lib/controllers/controller.base";
|
| 2 |
+
|
| 3 |
+
export const Prefix = (prefix: string) => {
|
| 4 |
+
return (target: typeof BaseController) => {
|
| 5 |
+
target.prefix = prefix || target.prefix;
|
| 6 |
+
};
|
| 7 |
+
};
|
src/modules/user/users/controllers/auth.controller.ts
CHANGED
|
@@ -1,46 +1,70 @@
|
|
| 1 |
import { usersService } from "../services/users.service";
|
| 2 |
import { jwtHelper } from "../../../../helpers/jwt.helper";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
}
|
| 18 |
}
|
|
|
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
}
|
| 46 |
-
}
|
|
|
|
|
|
| 1 |
import { usersService } from "../services/users.service";
|
| 2 |
import { jwtHelper } from "../../../../helpers/jwt.helper";
|
| 3 |
+
import { BaseController } from "../../../../lib/controllers/controller.base";
|
| 4 |
+
import { validator } from "../../../../helpers/validation.helper";
|
| 5 |
+
import { userValidation } from "../validation/user.Validation";
|
| 6 |
+
import { Router } from "express";
|
| 7 |
+
import { Prefix } from "../../../common/decorators/prefix.decorator";
|
| 8 |
|
| 9 |
+
@Prefix("/user")
|
| 10 |
+
export class AuthController extends BaseController {
|
| 11 |
+
static setRoutes(router: Router): void {
|
| 12 |
+
router.post(
|
| 13 |
+
"/register",
|
| 14 |
+
validator(userValidation.createValidation),
|
| 15 |
+
AuthController.register
|
| 16 |
+
);
|
| 17 |
+
router.post(
|
| 18 |
+
"/login",
|
| 19 |
+
validator(userValidation.loginValidation),
|
| 20 |
+
AuthController.login
|
| 21 |
+
);
|
| 22 |
+
}
|
| 23 |
|
| 24 |
+
static async register(req, res) {
|
| 25 |
+
try {
|
| 26 |
+
let result = await usersService.create(req.body);
|
| 27 |
+
return res.status(result.code).json(result);
|
| 28 |
+
} catch (err) {
|
| 29 |
+
console.log(`err.message`, err.message);
|
| 30 |
+
return res.status(500).json({
|
| 31 |
+
success: false,
|
| 32 |
+
code: 500,
|
| 33 |
+
error: err.message,
|
| 34 |
+
});
|
|
|
|
| 35 |
}
|
| 36 |
+
}
|
| 37 |
|
| 38 |
+
static async login(req, res) {
|
| 39 |
+
try {
|
| 40 |
+
const { email, password } = req.body;
|
| 41 |
+
let result: {
|
| 42 |
+
success: boolean;
|
| 43 |
+
code: number;
|
| 44 |
+
record?: any;
|
| 45 |
+
message?: string;
|
| 46 |
+
} = await usersService.comparePassword(email, password);
|
| 47 |
+
if (!result.success) return res.status(result.code).json(result);
|
| 48 |
+
let payload = {
|
| 49 |
+
_id: result.record?._id,
|
| 50 |
+
name: result.record?.name,
|
| 51 |
+
email: result.record?.email,
|
| 52 |
+
number: result.record?.number,
|
| 53 |
+
role: result.record?.role,
|
| 54 |
+
};
|
| 55 |
+
const token = jwtHelper.generateToken(payload);
|
| 56 |
+
return res.status(result.code).json({
|
| 57 |
+
success: result.success,
|
| 58 |
+
token,
|
| 59 |
+
code: result.code,
|
| 60 |
+
record: result.record,
|
| 61 |
+
});
|
| 62 |
+
} catch (err) {
|
| 63 |
+
console.log(`err.message`, err.message);
|
| 64 |
+
return res.status(500).json({
|
| 65 |
+
success: false,
|
| 66 |
+
message: err.message,
|
| 67 |
+
});
|
| 68 |
}
|
| 69 |
+
}
|
| 70 |
+
}
|
src/modules/user/users/routes/auth.route.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
| 1 |
import express from "express";
|
| 2 |
-
import {
|
| 3 |
import { userValidation } from "../validation/user.Validation";
|
| 4 |
import { validator } from "../../../../helpers/validation.helper";
|
| 5 |
|
| 6 |
const app = express.Router();
|
| 7 |
|
| 8 |
-
app.post("/register", validator(userValidation.createValidation),
|
| 9 |
-
app.post("/login", validator(userValidation.loginValidation),
|
| 10 |
|
| 11 |
export { app as authRoutes };
|
| 12 |
|
|
|
|
| 1 |
import express from "express";
|
| 2 |
+
import { AuthController } from "../controllers/auth.controller";
|
| 3 |
import { userValidation } from "../validation/user.Validation";
|
| 4 |
import { validator } from "../../../../helpers/validation.helper";
|
| 5 |
|
| 6 |
const app = express.Router();
|
| 7 |
|
| 8 |
+
// app.post("/register", validator(userValidation.createValidation), AuthController.register);
|
| 9 |
+
// app.post("/login", validator(userValidation.loginValidation), AuthController.login);
|
| 10 |
|
| 11 |
export { app as authRoutes };
|
| 12 |
|
src/routes.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Router, Express } from "express";
|
| 2 |
+
|
| 3 |
+
import { userRoutes } from "./modules/user/index.route";
|
| 4 |
+
import { adminRouter } from "./modules/console/index.route";
|
| 5 |
+
|
| 6 |
+
import * as glob from "glob";
|
| 7 |
+
import path from "path";
|
| 8 |
+
import { BaseController } from "./lib/controllers/controller.base";
|
| 9 |
+
|
| 10 |
+
export const setAppRoutes = async (app: Express) => {
|
| 11 |
+
const mainRouter = Router();
|
| 12 |
+
|
| 13 |
+
await importControllers(mainRouter);
|
| 14 |
+
setCustomRoutes(mainRouter);
|
| 15 |
+
|
| 16 |
+
app.use("/api/v1", mainRouter);
|
| 17 |
+
};
|
| 18 |
+
|
| 19 |
+
/* custom routes */
|
| 20 |
+
|
| 21 |
+
const setCustomRoutes = (router: Router) => {
|
| 22 |
+
router.use("/admin", adminRouter);
|
| 23 |
+
|
| 24 |
+
router.get("/health", (_req: any, res: any) => {
|
| 25 |
+
res
|
| 26 |
+
.status(200)
|
| 27 |
+
.json({ success: true, message: "Server is up!", code: 200 });
|
| 28 |
+
});
|
| 29 |
+
|
| 30 |
+
router.all("*", (_req: any, res: any) => {
|
| 31 |
+
res
|
| 32 |
+
.status(404)
|
| 33 |
+
.json({ success: false, message: "Invalid URL!", code: 404 });
|
| 34 |
+
});
|
| 35 |
+
};
|
| 36 |
+
|
| 37 |
+
/* importing all controllers */
|
| 38 |
+
|
| 39 |
+
const findControllerFiles = (): string[] => {
|
| 40 |
+
return glob.sync(path.join(__dirname, "**/*.controller.{ts,js}"));
|
| 41 |
+
};
|
| 42 |
+
|
| 43 |
+
const importControllers = async (router: Router) => {
|
| 44 |
+
const files = findControllerFiles();
|
| 45 |
+
|
| 46 |
+
await Promise.all(
|
| 47 |
+
files.map(async (file) => {
|
| 48 |
+
const controller = await importController(file);
|
| 49 |
+
if (!controller) return;
|
| 50 |
+
controller.setRoutes(controller.router);
|
| 51 |
+
router.use(controller.prefix, controller.router);
|
| 52 |
+
})
|
| 53 |
+
);
|
| 54 |
+
};
|
| 55 |
+
|
| 56 |
+
const importController = async (file: string) => {
|
| 57 |
+
const controllers = Object.values(await import(file));
|
| 58 |
+
return controllers.find(
|
| 59 |
+
(controller: { router?: Router }) => controller.router
|
| 60 |
+
) as typeof BaseController;
|
| 61 |
+
};
|
tsconfig.json
CHANGED
|
@@ -6,7 +6,8 @@
|
|
| 6 |
"target": "es6",
|
| 7 |
"moduleResolution": "node",
|
| 8 |
"sourceMap": true,
|
| 9 |
-
"outDir": "dist"
|
|
|
|
| 10 |
},
|
| 11 |
"lib": ["es2015"]
|
| 12 |
}
|
|
|
|
| 6 |
"target": "es6",
|
| 7 |
"moduleResolution": "node",
|
| 8 |
"sourceMap": true,
|
| 9 |
+
"outDir": "dist",
|
| 10 |
+
"experimentalDecorators": true,
|
| 11 |
},
|
| 12 |
"lib": ["es2015"]
|
| 13 |
}
|