git-repo-analyzer-test 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.github/copilot-instructions.md +108 -0
  2. package/.idea/aianalyzer.iml +9 -0
  3. package/.idea/misc.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/vcs.xml +6 -0
  6. package/API_REFERENCE.md +244 -0
  7. package/ENHANCEMENTS.md +282 -0
  8. package/README.md +179 -0
  9. package/USAGE.md +189 -0
  10. package/analysis.txt +0 -0
  11. package/bin/cli.js +135 -0
  12. package/docs/SONARCLOUD_ANALYSIS_COVERED.md +144 -0
  13. package/docs/SonarCloud_Presentation_Points.md +81 -0
  14. package/docs/UI_IMPROVEMENTS.md +117 -0
  15. package/package-lock_cmd.json +542 -0
  16. package/package.json +44 -0
  17. package/package_command.json +16 -0
  18. package/public/analysis-options.json +31 -0
  19. package/public/images/README.txt +2 -0
  20. package/public/images/rws-logo.png +0 -0
  21. package/public/index.html +2433 -0
  22. package/repositories.example.txt +17 -0
  23. package/sample-repos.txt +20 -0
  24. package/src/analyzers/accessibility.js +47 -0
  25. package/src/analyzers/cicd-enhanced.js +113 -0
  26. package/src/analyzers/codeReview-enhanced.js +599 -0
  27. package/src/analyzers/codeReview-enhanced.js:Zone.Identifier +3 -0
  28. package/src/analyzers/codeReview.js +171 -0
  29. package/src/analyzers/codeReview.js:Zone.Identifier +3 -0
  30. package/src/analyzers/documentation-enhanced.js +137 -0
  31. package/src/analyzers/performance-enhanced.js +747 -0
  32. package/src/analyzers/performance-enhanced.js:Zone.Identifier +3 -0
  33. package/src/analyzers/performance.js +211 -0
  34. package/src/analyzers/performance.js:Zone.Identifier +3 -0
  35. package/src/analyzers/performance_cmd.js +216 -0
  36. package/src/analyzers/quality-enhanced.js +386 -0
  37. package/src/analyzers/quality-enhanced.js:Zone.Identifier +3 -0
  38. package/src/analyzers/quality.js +92 -0
  39. package/src/analyzers/quality.js:Zone.Identifier +3 -0
  40. package/src/analyzers/security-enhanced.js +512 -0
  41. package/src/analyzers/security-enhanced.js:Zone.Identifier +3 -0
  42. package/src/analyzers/snyk-ai.js:Zone.Identifier +3 -0
  43. package/src/analyzers/sonarcloud.js +928 -0
  44. package/src/analyzers/vulnerability.js +185 -0
  45. package/src/analyzers/vulnerability.js:Zone.Identifier +3 -0
  46. package/src/cli.js:Zone.Identifier +3 -0
  47. package/src/config.js +43 -0
  48. package/src/core/analyzerEngine.js +68 -0
  49. package/src/core/reportGenerator.js +21 -0
  50. package/src/gemini.js +321 -0
  51. package/src/github/client.js +124 -0
  52. package/src/github/client.js:Zone.Identifier +3 -0
  53. package/src/index.js +93 -0
  54. package/src/index_cmd.js +130 -0
  55. package/src/openai.js +297 -0
  56. package/src/report/generator.js +459 -0
  57. package/src/report/generator_cmd.js +459 -0
  58. package/src/report/pdf-generator.js +387 -0
  59. package/src/report/pdf-generator.js:Zone.Identifier +3 -0
  60. package/src/server.js +431 -0
  61. package/src/server.js:Zone.Identifier +3 -0
  62. package/src/server_cmd.js +434 -0
  63. package/src/sonarcloud/client.js +365 -0
  64. package/src/sonarcloud/scanner.js +171 -0
  65. package/src.zip +0 -0
@@ -0,0 +1,542 @@
1
+ {
2
+ "name": "ai-repo-analyzer-test",
3
+ "version": "1.0.11",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "ai-repo-analyzer-test",
9
+ "version": "1.0.11",
10
+ "dependencies": {
11
+ "axios": "^1.14.0",
12
+ "chalk": "^5.6.2",
13
+ "commander": "^11.1.0",
14
+ "dotenv": "^17.4.1",
15
+ "simple-git": "^3.x",
16
+ "table": "^6.x"
17
+ },
18
+ "bin": {
19
+ "ai-repo-analyzer": "bin/cli.js"
20
+ }
21
+ },
22
+ "node_modules/@kwsites/file-exists": {
23
+ "version": "1.1.1",
24
+ "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
25
+ "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
26
+ "dependencies": {
27
+ "debug": "^4.1.1"
28
+ }
29
+ },
30
+ "node_modules/@kwsites/promise-deferred": {
31
+ "version": "1.1.1",
32
+ "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
33
+ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
34
+ },
35
+ "node_modules/@simple-git/args-pathspec": {
36
+ "version": "1.0.2",
37
+ "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.2.tgz",
38
+ "integrity": "sha512-nEFVejViHUoL8wU8GTcwqrvqfUG40S5ts6S4fr1u1Ki5CklXlRDYThPVA/qurTmCYFGnaX3XpVUmICLHdvhLaA=="
39
+ },
40
+ "node_modules/@simple-git/argv-parser": {
41
+ "version": "1.0.3",
42
+ "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.0.3.tgz",
43
+ "integrity": "sha512-NMKv9sJcSN2VvnPT9Ja7eKfGy8Q8mMFLwPTCcuZMtv3+mYcLIZflg31S/tp2XCCyiY7YAx6cgBHQ0fwA2fWHpQ==",
44
+ "dependencies": {
45
+ "@simple-git/args-pathspec": "^1.0.2"
46
+ }
47
+ },
48
+ "node_modules/ajv": {
49
+ "version": "8.18.0",
50
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
51
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
52
+ "dependencies": {
53
+ "fast-deep-equal": "^3.1.3",
54
+ "fast-uri": "^3.0.1",
55
+ "json-schema-traverse": "^1.0.0",
56
+ "require-from-string": "^2.0.2"
57
+ },
58
+ "funding": {
59
+ "type": "github",
60
+ "url": "https://github.com/sponsors/epoberezkin"
61
+ }
62
+ },
63
+ "node_modules/ansi-regex": {
64
+ "version": "5.0.1",
65
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
66
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
67
+ "engines": {
68
+ "node": ">=8"
69
+ }
70
+ },
71
+ "node_modules/ansi-styles": {
72
+ "version": "4.3.0",
73
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
74
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
75
+ "dependencies": {
76
+ "color-convert": "^2.0.1"
77
+ },
78
+ "engines": {
79
+ "node": ">=8"
80
+ },
81
+ "funding": {
82
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
83
+ }
84
+ },
85
+ "node_modules/astral-regex": {
86
+ "version": "2.0.0",
87
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
88
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
89
+ "engines": {
90
+ "node": ">=8"
91
+ }
92
+ },
93
+ "node_modules/asynckit": {
94
+ "version": "0.4.0",
95
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
96
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
97
+ },
98
+ "node_modules/axios": {
99
+ "version": "1.14.0",
100
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz",
101
+ "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==",
102
+ "dependencies": {
103
+ "follow-redirects": "^1.15.11",
104
+ "form-data": "^4.0.5",
105
+ "proxy-from-env": "^2.1.0"
106
+ }
107
+ },
108
+ "node_modules/call-bind-apply-helpers": {
109
+ "version": "1.0.2",
110
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
111
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
112
+ "dependencies": {
113
+ "es-errors": "^1.3.0",
114
+ "function-bind": "^1.1.2"
115
+ },
116
+ "engines": {
117
+ "node": ">= 0.4"
118
+ }
119
+ },
120
+ "node_modules/chalk": {
121
+ "version": "5.6.2",
122
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
123
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
124
+ "engines": {
125
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
126
+ },
127
+ "funding": {
128
+ "url": "https://github.com/chalk/chalk?sponsor=1"
129
+ }
130
+ },
131
+ "node_modules/color-convert": {
132
+ "version": "2.0.1",
133
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
134
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
135
+ "dependencies": {
136
+ "color-name": "~1.1.4"
137
+ },
138
+ "engines": {
139
+ "node": ">=7.0.0"
140
+ }
141
+ },
142
+ "node_modules/color-name": {
143
+ "version": "1.1.4",
144
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
145
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
146
+ },
147
+ "node_modules/combined-stream": {
148
+ "version": "1.0.8",
149
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
150
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
151
+ "dependencies": {
152
+ "delayed-stream": "~1.0.0"
153
+ },
154
+ "engines": {
155
+ "node": ">= 0.8"
156
+ }
157
+ },
158
+ "node_modules/commander": {
159
+ "version": "11.1.0",
160
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
161
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
162
+ "engines": {
163
+ "node": ">=16"
164
+ }
165
+ },
166
+ "node_modules/debug": {
167
+ "version": "4.4.3",
168
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
169
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
170
+ "dependencies": {
171
+ "ms": "^2.1.3"
172
+ },
173
+ "engines": {
174
+ "node": ">=6.0"
175
+ },
176
+ "peerDependenciesMeta": {
177
+ "supports-color": {
178
+ "optional": true
179
+ }
180
+ }
181
+ },
182
+ "node_modules/delayed-stream": {
183
+ "version": "1.0.0",
184
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
185
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
186
+ "engines": {
187
+ "node": ">=0.4.0"
188
+ }
189
+ },
190
+ "node_modules/dotenv": {
191
+ "version": "17.4.1",
192
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz",
193
+ "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==",
194
+ "engines": {
195
+ "node": ">=12"
196
+ },
197
+ "funding": {
198
+ "url": "https://dotenvx.com"
199
+ }
200
+ },
201
+ "node_modules/dunder-proto": {
202
+ "version": "1.0.1",
203
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
204
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
205
+ "dependencies": {
206
+ "call-bind-apply-helpers": "^1.0.1",
207
+ "es-errors": "^1.3.0",
208
+ "gopd": "^1.2.0"
209
+ },
210
+ "engines": {
211
+ "node": ">= 0.4"
212
+ }
213
+ },
214
+ "node_modules/emoji-regex": {
215
+ "version": "8.0.0",
216
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
217
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
218
+ },
219
+ "node_modules/es-define-property": {
220
+ "version": "1.0.1",
221
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
222
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
223
+ "engines": {
224
+ "node": ">= 0.4"
225
+ }
226
+ },
227
+ "node_modules/es-errors": {
228
+ "version": "1.3.0",
229
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
230
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
231
+ "engines": {
232
+ "node": ">= 0.4"
233
+ }
234
+ },
235
+ "node_modules/es-object-atoms": {
236
+ "version": "1.1.1",
237
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
238
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
239
+ "dependencies": {
240
+ "es-errors": "^1.3.0"
241
+ },
242
+ "engines": {
243
+ "node": ">= 0.4"
244
+ }
245
+ },
246
+ "node_modules/es-set-tostringtag": {
247
+ "version": "2.1.0",
248
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
249
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
250
+ "dependencies": {
251
+ "es-errors": "^1.3.0",
252
+ "get-intrinsic": "^1.2.6",
253
+ "has-tostringtag": "^1.0.2",
254
+ "hasown": "^2.0.2"
255
+ },
256
+ "engines": {
257
+ "node": ">= 0.4"
258
+ }
259
+ },
260
+ "node_modules/fast-deep-equal": {
261
+ "version": "3.1.3",
262
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
263
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
264
+ },
265
+ "node_modules/fast-uri": {
266
+ "version": "3.1.0",
267
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
268
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
269
+ "funding": [
270
+ {
271
+ "type": "github",
272
+ "url": "https://github.com/sponsors/fastify"
273
+ },
274
+ {
275
+ "type": "opencollective",
276
+ "url": "https://opencollective.com/fastify"
277
+ }
278
+ ]
279
+ },
280
+ "node_modules/follow-redirects": {
281
+ "version": "1.15.11",
282
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
283
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
284
+ "funding": [
285
+ {
286
+ "type": "individual",
287
+ "url": "https://github.com/sponsors/RubenVerborgh"
288
+ }
289
+ ],
290
+ "engines": {
291
+ "node": ">=4.0"
292
+ },
293
+ "peerDependenciesMeta": {
294
+ "debug": {
295
+ "optional": true
296
+ }
297
+ }
298
+ },
299
+ "node_modules/form-data": {
300
+ "version": "4.0.5",
301
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
302
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
303
+ "dependencies": {
304
+ "asynckit": "^0.4.0",
305
+ "combined-stream": "^1.0.8",
306
+ "es-set-tostringtag": "^2.1.0",
307
+ "hasown": "^2.0.2",
308
+ "mime-types": "^2.1.12"
309
+ },
310
+ "engines": {
311
+ "node": ">= 6"
312
+ }
313
+ },
314
+ "node_modules/function-bind": {
315
+ "version": "1.1.2",
316
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
317
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
318
+ "funding": {
319
+ "url": "https://github.com/sponsors/ljharb"
320
+ }
321
+ },
322
+ "node_modules/get-intrinsic": {
323
+ "version": "1.3.0",
324
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
325
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
326
+ "dependencies": {
327
+ "call-bind-apply-helpers": "^1.0.2",
328
+ "es-define-property": "^1.0.1",
329
+ "es-errors": "^1.3.0",
330
+ "es-object-atoms": "^1.1.1",
331
+ "function-bind": "^1.1.2",
332
+ "get-proto": "^1.0.1",
333
+ "gopd": "^1.2.0",
334
+ "has-symbols": "^1.1.0",
335
+ "hasown": "^2.0.2",
336
+ "math-intrinsics": "^1.1.0"
337
+ },
338
+ "engines": {
339
+ "node": ">= 0.4"
340
+ },
341
+ "funding": {
342
+ "url": "https://github.com/sponsors/ljharb"
343
+ }
344
+ },
345
+ "node_modules/get-proto": {
346
+ "version": "1.0.1",
347
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
348
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
349
+ "dependencies": {
350
+ "dunder-proto": "^1.0.1",
351
+ "es-object-atoms": "^1.0.0"
352
+ },
353
+ "engines": {
354
+ "node": ">= 0.4"
355
+ }
356
+ },
357
+ "node_modules/gopd": {
358
+ "version": "1.2.0",
359
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
360
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
361
+ "engines": {
362
+ "node": ">= 0.4"
363
+ },
364
+ "funding": {
365
+ "url": "https://github.com/sponsors/ljharb"
366
+ }
367
+ },
368
+ "node_modules/has-symbols": {
369
+ "version": "1.1.0",
370
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
371
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
372
+ "engines": {
373
+ "node": ">= 0.4"
374
+ },
375
+ "funding": {
376
+ "url": "https://github.com/sponsors/ljharb"
377
+ }
378
+ },
379
+ "node_modules/has-tostringtag": {
380
+ "version": "1.0.2",
381
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
382
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
383
+ "dependencies": {
384
+ "has-symbols": "^1.0.3"
385
+ },
386
+ "engines": {
387
+ "node": ">= 0.4"
388
+ },
389
+ "funding": {
390
+ "url": "https://github.com/sponsors/ljharb"
391
+ }
392
+ },
393
+ "node_modules/hasown": {
394
+ "version": "2.0.2",
395
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
396
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
397
+ "dependencies": {
398
+ "function-bind": "^1.1.2"
399
+ },
400
+ "engines": {
401
+ "node": ">= 0.4"
402
+ }
403
+ },
404
+ "node_modules/is-fullwidth-code-point": {
405
+ "version": "3.0.0",
406
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
407
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
408
+ "engines": {
409
+ "node": ">=8"
410
+ }
411
+ },
412
+ "node_modules/json-schema-traverse": {
413
+ "version": "1.0.0",
414
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
415
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
416
+ },
417
+ "node_modules/lodash.truncate": {
418
+ "version": "4.4.2",
419
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
420
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="
421
+ },
422
+ "node_modules/math-intrinsics": {
423
+ "version": "1.1.0",
424
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
425
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
426
+ "engines": {
427
+ "node": ">= 0.4"
428
+ }
429
+ },
430
+ "node_modules/mime-db": {
431
+ "version": "1.52.0",
432
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
433
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
434
+ "engines": {
435
+ "node": ">= 0.6"
436
+ }
437
+ },
438
+ "node_modules/mime-types": {
439
+ "version": "2.1.35",
440
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
441
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
442
+ "dependencies": {
443
+ "mime-db": "1.52.0"
444
+ },
445
+ "engines": {
446
+ "node": ">= 0.6"
447
+ }
448
+ },
449
+ "node_modules/ms": {
450
+ "version": "2.1.3",
451
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
452
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
453
+ },
454
+ "node_modules/proxy-from-env": {
455
+ "version": "2.1.0",
456
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
457
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
458
+ "engines": {
459
+ "node": ">=10"
460
+ }
461
+ },
462
+ "node_modules/require-from-string": {
463
+ "version": "2.0.2",
464
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
465
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
466
+ "engines": {
467
+ "node": ">=0.10.0"
468
+ }
469
+ },
470
+ "node_modules/simple-git": {
471
+ "version": "3.35.2",
472
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.35.2.tgz",
473
+ "integrity": "sha512-ZMjl06lzTm1EScxEGuM6+mEX+NQd14h/B3x0vWU+YOXAMF8sicyi1K4cjTfj5is+35ChJEHDl1EjypzYFWH2FA==",
474
+ "dependencies": {
475
+ "@kwsites/file-exists": "^1.1.1",
476
+ "@kwsites/promise-deferred": "^1.1.1",
477
+ "@simple-git/args-pathspec": "^1.0.2",
478
+ "@simple-git/argv-parser": "^1.0.3",
479
+ "debug": "^4.4.0"
480
+ },
481
+ "funding": {
482
+ "type": "github",
483
+ "url": "https://github.com/steveukx/git-js?sponsor=1"
484
+ }
485
+ },
486
+ "node_modules/slice-ansi": {
487
+ "version": "4.0.0",
488
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
489
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
490
+ "dependencies": {
491
+ "ansi-styles": "^4.0.0",
492
+ "astral-regex": "^2.0.0",
493
+ "is-fullwidth-code-point": "^3.0.0"
494
+ },
495
+ "engines": {
496
+ "node": ">=10"
497
+ },
498
+ "funding": {
499
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
500
+ }
501
+ },
502
+ "node_modules/string-width": {
503
+ "version": "4.2.3",
504
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
505
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
506
+ "dependencies": {
507
+ "emoji-regex": "^8.0.0",
508
+ "is-fullwidth-code-point": "^3.0.0",
509
+ "strip-ansi": "^6.0.1"
510
+ },
511
+ "engines": {
512
+ "node": ">=8"
513
+ }
514
+ },
515
+ "node_modules/strip-ansi": {
516
+ "version": "6.0.1",
517
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
518
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
519
+ "dependencies": {
520
+ "ansi-regex": "^5.0.1"
521
+ },
522
+ "engines": {
523
+ "node": ">=8"
524
+ }
525
+ },
526
+ "node_modules/table": {
527
+ "version": "6.9.0",
528
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
529
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
530
+ "dependencies": {
531
+ "ajv": "^8.0.1",
532
+ "lodash.truncate": "^4.4.2",
533
+ "slice-ansi": "^4.0.0",
534
+ "string-width": "^4.2.3",
535
+ "strip-ansi": "^6.0.1"
536
+ },
537
+ "engines": {
538
+ "node": ">=10.0.0"
539
+ }
540
+ }
541
+ }
542
+ }
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "git-repo-analyzer-test",
3
+ "version": "1.0.0",
4
+ "description": "Scan GitHub repositories and generate quality reports analyzing code quality, vulnerabilities, code review metrics, and performance",
5
+ "main": "src/index.js",
6
+ "repo-analyzer": "./bin/cli.js",
7
+ "type": "module",
8
+ "scripts": {
9
+ "start": "node src/index.js",
10
+ "dev": "node --watch src/index.js",
11
+ "server": "node src/server.js",
12
+ "test": "echo \"Error: no test specified\" && exit 1",
13
+ "analyze": "node src/cli.js"
14
+ },
15
+ "keywords": [
16
+ "github",
17
+ "repository",
18
+ "analysis",
19
+ "code-quality",
20
+ "vulnerability",
21
+ "performance",
22
+ "code-review"
23
+ ],
24
+ "author": "",
25
+ "license": "MIT",
26
+ "dependencies": {
27
+ "@google/generative-ai": "^0.21.0",
28
+ "@sonar/scan": "^4.3.4",
29
+ "axios": "^1.6.0",
30
+ "axios-retry": "^4.5.0",
31
+ "chalk": "^5.3.0",
32
+ "commander": "^11.0.0",
33
+ "dotenv": "^16.3.1",
34
+ "express": "^4.22.1",
35
+ "openai": "^4.104.0",
36
+ "pdfkit": "^0.17.2",
37
+ "simple-git": "^3.27.0",
38
+ "table": "^6.8.1"
39
+ },
40
+ "devDependencies": {
41
+ "eslint": "^10.0.0",
42
+ "prettier": "^3.0.0"
43
+ }
44
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "ai-repo-analyzer-test",
3
+ "version": "1.0.11",
4
+ "type": "module",
5
+ "bin": {
6
+ "ai-repo-analyzer": "./bin/cli.js"
7
+ },
8
+ "dependencies": {
9
+ "axios": "^1.14.0",
10
+ "chalk": "^5.6.2",
11
+ "commander": "^11.1.0",
12
+ "dotenv": "^17.4.1",
13
+ "table": "^6.x",
14
+ "simple-git": "^3.x"
15
+ }
16
+ }
@@ -0,0 +1,31 @@
1
+ [
2
+ { "key": "architecture", "value" : "Architecture Review", "modelName": "openai" },
3
+ { "key": "folder_structure", "value" : "Folder Structure Review", "modelName": "openai" },
4
+ { "key": "code_smells", "value" : "Code Smells", "modelName": "openai" },
5
+ { "key": "improvement_suggestions", "value" : "Improvement Suggestions", "modelName": "openai" },
6
+ { "key": "deep_logic", "value" : "Deep Logic Analysis", "modelName": "openai" },
7
+ { "key": "best_practices", "value" : "Best Practices Validation", "modelName": "openai" },
8
+ { "key": "performance Review & Bottlenecks", "value" : "Performance Review & Bottlenecks", "modelName": "openai" },
9
+ { "key": "dependencies", "value" : "Dependency Analysis", "modelName": "openai" },
10
+ { "key": "documentation", "value" : "Documentation Quality Review", "modelName": "openai" },
11
+ { "key": "prioritized_actions", "value" : "Prioritized Action Items", "modelName": "openai" },
12
+ { "key": "code_quality", "value" : "Code Quality Summary", "modelName": "openai" },
13
+ { "key": "security", "value" : "Security Review (AI Deep Scan)", "modelName": "openai" },
14
+ { "key": "complexity", "value" : "Code Complexity Analysis", "modelName": "openai" },
15
+ { "key": "test_coverage", "value" : "Test Coverage & Quality Review", "modelName": "openai" },
16
+ { "key": "dead_code", "value" : "Dead Code & Unused Assets", "modelName": "openai" },
17
+ { "key": "architecture_smells", "value" : "Architecture Smells Detection", "modelName": "openai" },
18
+ { "key": "logging", "value" : "Error Handling & Logging Review", "modelName": "openai" },
19
+ { "key": "db_queries", "value" : "Database Query Efficiency Review", "modelName": "openai" },
20
+ { "key": "cloud_readiness", "value" : "Cloud & Deployment Readiness", "modelName": "openai" },
21
+ { "key": "style_consistency", "value" : "Code Style Consistency", "modelName": "openai" },
22
+ { "key": "maintainability", "value" : "Maintainability & Readability", "modelName": "openai" },
23
+ { "key": "endpoint_review", "value" : "API Endpoint Quality Review", "modelName": "openai" },
24
+ { "key": "config_review", "value" : "Configuration & Environment Review", "modelName": "openai" },
25
+ { "key": "security_issues", "value" : "Security Issues (Static Analysis)", "modelName": "sonar" },
26
+ { "key": "performance_issues", "value" : "Performance Issues (Static Analysis)", "modelName": "sonar" },
27
+ { "key": "api_usage_review", "value" : "API Usage Review (Static Analysis)", "modelName": "sonar" },
28
+ { "key": "risk_score", "value" : "Overall Risk Scoring", "modelName": "openai" },
29
+ { "key": "summary", "value" : "Management Summary (High-Level)", "modelName": "openai" },
30
+ {"key": "accessibility", "value": "Accessibility (WCAG 2.1)", "modelName": "openai"}
31
+ ]
@@ -0,0 +1,2 @@
1
+ Place rws-logo.png here for the top bar logo.
2
+ The app will show the logo from images/rws-logo.png and fall back to the default icon if the file is missing.
Binary file