depvitals 0.3.0 → 0.4.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 (77) hide show
  1. package/README.md +72 -3
  2. package/dist/cli/entry.js +8 -21
  3. package/dist/cli/entry.js.map +1 -1
  4. package/dist/cli/parseCliArgs.d.ts +5 -2
  5. package/dist/cli/parseCliArgs.d.ts.map +1 -1
  6. package/dist/cli/parseCliArgs.js +51 -36
  7. package/dist/cli/parseCliArgs.js.map +1 -1
  8. package/dist/cli/runCli.d.ts +4 -5
  9. package/dist/cli/runCli.d.ts.map +1 -1
  10. package/dist/cli/runCli.js +39 -49
  11. package/dist/cli/runCli.js.map +1 -1
  12. package/dist/config/ignoreDependencies.d.ts +2 -0
  13. package/dist/config/ignoreDependencies.d.ts.map +1 -1
  14. package/dist/config/ignoreDependencies.js +5 -1
  15. package/dist/config/ignoreDependencies.js.map +1 -1
  16. package/dist/config/readProjectConfig.d.ts +5 -0
  17. package/dist/config/readProjectConfig.d.ts.map +1 -1
  18. package/dist/config/readProjectConfig.js +24 -10
  19. package/dist/config/readProjectConfig.js.map +1 -1
  20. package/dist/core/analyzeProject.d.ts +35 -0
  21. package/dist/core/analyzeProject.d.ts.map +1 -1
  22. package/dist/core/analyzeProject.js +161 -25
  23. package/dist/core/analyzeProject.js.map +1 -1
  24. package/dist/core/evidence.d.ts +67 -0
  25. package/dist/core/evidence.d.ts.map +1 -0
  26. package/dist/core/evidence.js +115 -0
  27. package/dist/core/evidence.js.map +1 -0
  28. package/dist/core/scanContext.d.ts +20 -0
  29. package/dist/core/scanContext.d.ts.map +1 -0
  30. package/dist/core/scanContext.js +43 -0
  31. package/dist/core/scanContext.js.map +1 -0
  32. package/dist/detectors/eslintManifestConfig.d.ts +18 -0
  33. package/dist/detectors/eslintManifestConfig.d.ts.map +1 -1
  34. package/dist/detectors/eslintManifestConfig.js +55 -76
  35. package/dist/detectors/eslintManifestConfig.js.map +1 -1
  36. package/dist/detectors/eslintRcJsonConfig.d.ts +8 -2
  37. package/dist/detectors/eslintRcJsonConfig.d.ts.map +1 -1
  38. package/dist/detectors/eslintRcJsonConfig.js +25 -11
  39. package/dist/detectors/eslintRcJsonConfig.js.map +1 -1
  40. package/dist/detectors/jestManifestConfig.d.ts +15 -3
  41. package/dist/detectors/jestManifestConfig.d.ts.map +1 -1
  42. package/dist/detectors/jestManifestConfig.js +57 -79
  43. package/dist/detectors/jestManifestConfig.js.map +1 -1
  44. package/dist/reporters/jsonReporter.d.ts +39 -0
  45. package/dist/reporters/jsonReporter.d.ts.map +1 -0
  46. package/dist/reporters/jsonReporter.js +91 -0
  47. package/dist/reporters/jsonReporter.js.map +1 -0
  48. package/dist/reporters/terminalReporter.d.ts +15 -4
  49. package/dist/reporters/terminalReporter.d.ts.map +1 -1
  50. package/dist/reporters/terminalReporter.js +64 -4
  51. package/dist/reporters/terminalReporter.js.map +1 -1
  52. package/dist/scanner/moduleSpecifiers.d.ts +10 -0
  53. package/dist/scanner/moduleSpecifiers.d.ts.map +1 -1
  54. package/dist/scanner/moduleSpecifiers.js +46 -8
  55. package/dist/scanner/moduleSpecifiers.js.map +1 -1
  56. package/dist/scanner/projectManifest.d.ts +9 -0
  57. package/dist/scanner/projectManifest.d.ts.map +1 -1
  58. package/dist/scanner/projectManifest.js +7 -1
  59. package/dist/scanner/projectManifest.js.map +1 -1
  60. package/dist/scanner/scriptUsage.d.ts +13 -0
  61. package/dist/scanner/scriptUsage.d.ts.map +1 -1
  62. package/dist/scanner/scriptUsage.js +102 -32
  63. package/dist/scanner/scriptUsage.js.map +1 -1
  64. package/dist/scanner/sourceFiles.d.ts +5 -0
  65. package/dist/scanner/sourceFiles.d.ts.map +1 -1
  66. package/dist/scanner/sourceFiles.js +7 -0
  67. package/dist/scanner/sourceFiles.js.map +1 -1
  68. package/package.json +4 -2
  69. package/schemas/README.md +47 -0
  70. package/schemas/examples/README.md +27 -0
  71. package/schemas/examples/explain-excluded.json +53 -0
  72. package/schemas/examples/explain-missing.json +65 -0
  73. package/schemas/examples/explain-node-preload.json +70 -0
  74. package/schemas/examples/explain-unknown.json +53 -0
  75. package/schemas/examples/scan-clean.json +40 -0
  76. package/schemas/examples/scan-findings.json +80 -0
  77. package/schemas/report-v1.schema.json +376 -0
@@ -0,0 +1,376 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/MatiasRicardi/depvitals/v0.4.0/schemas/report-v1.schema.json",
4
+ "title": "DepVitals report schema version 1",
5
+ "description": "Dependency scan and exact-package explanation documents. Counts, ordering, status consistency and provenance semantics are described in the accompanying README; consumers must check cross-field invariants in addition to schema validation.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "tool",
10
+ "mode",
11
+ "project",
12
+ "scope",
13
+ "findings",
14
+ "counts",
15
+ "packages",
16
+ "query"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": {
20
+ "const": 1
21
+ },
22
+ "tool": {
23
+ "type": "object",
24
+ "required": ["name", "version"],
25
+ "properties": {
26
+ "name": {
27
+ "const": "depvitals"
28
+ },
29
+ "version": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ }
33
+ },
34
+ "additionalProperties": true
35
+ },
36
+ "mode": {
37
+ "enum": ["scan", "explain"]
38
+ },
39
+ "project": {
40
+ "type": "object",
41
+ "required": ["root"],
42
+ "properties": {
43
+ "root": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ }
47
+ },
48
+ "additionalProperties": true
49
+ },
50
+ "scope": {
51
+ "type": "object",
52
+ "required": ["sourceExtensions", "excludedDirectories", "ignorePaths", "ignoreDependencies"],
53
+ "properties": {
54
+ "sourceExtensions": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string",
58
+ "minLength": 1
59
+ },
60
+ "uniqueItems": true
61
+ },
62
+ "excludedDirectories": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "string",
66
+ "minLength": 1
67
+ },
68
+ "uniqueItems": true
69
+ },
70
+ "ignorePaths": {
71
+ "type": "array",
72
+ "items": {
73
+ "type": "string",
74
+ "minLength": 1
75
+ },
76
+ "uniqueItems": true
77
+ },
78
+ "ignoreDependencies": {
79
+ "type": "array",
80
+ "items": {
81
+ "type": "string",
82
+ "minLength": 1
83
+ },
84
+ "uniqueItems": true
85
+ }
86
+ },
87
+ "additionalProperties": true
88
+ },
89
+ "findings": {
90
+ "type": "object",
91
+ "required": ["unusedDependencies", "unusedDevDependencies", "missingDependencies"],
92
+ "properties": {
93
+ "unusedDependencies": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string"
97
+ },
98
+ "uniqueItems": true
99
+ },
100
+ "unusedDevDependencies": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "string"
104
+ },
105
+ "uniqueItems": true
106
+ },
107
+ "missingDependencies": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "string"
111
+ },
112
+ "uniqueItems": true
113
+ }
114
+ },
115
+ "additionalProperties": true
116
+ },
117
+ "counts": {
118
+ "type": "object",
119
+ "required": ["unusedDependencies", "unusedDevDependencies", "missingDependencies"],
120
+ "properties": {
121
+ "unusedDependencies": {
122
+ "type": "integer",
123
+ "minimum": 0
124
+ },
125
+ "unusedDevDependencies": {
126
+ "type": "integer",
127
+ "minimum": 0
128
+ },
129
+ "missingDependencies": {
130
+ "type": "integer",
131
+ "minimum": 0
132
+ }
133
+ },
134
+ "additionalProperties": true
135
+ },
136
+ "packages": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "object",
140
+ "required": [
141
+ "name",
142
+ "status",
143
+ "declaredIn",
144
+ "excluded",
145
+ "underlyingFindings",
146
+ "findings",
147
+ "evidence"
148
+ ],
149
+ "properties": {
150
+ "name": {
151
+ "type": "string"
152
+ },
153
+ "status": {
154
+ "enum": ["used", "unused", "missing", "excluded", "declared", "unknown"]
155
+ },
156
+ "declaredIn": {
157
+ "type": "array",
158
+ "items": {
159
+ "enum": [
160
+ "dependencies",
161
+ "devDependencies",
162
+ "peerDependencies",
163
+ "optionalDependencies"
164
+ ]
165
+ },
166
+ "uniqueItems": true
167
+ },
168
+ "excluded": {
169
+ "type": "boolean"
170
+ },
171
+ "underlyingFindings": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "string",
175
+ "enum": ["unusedDependencies", "unusedDevDependencies", "missingDependencies"]
176
+ },
177
+ "uniqueItems": true
178
+ },
179
+ "findings": {
180
+ "type": "array",
181
+ "items": {
182
+ "type": "string",
183
+ "enum": ["unusedDependencies", "unusedDevDependencies", "missingDependencies"]
184
+ },
185
+ "uniqueItems": true
186
+ },
187
+ "evidence": {
188
+ "type": "array",
189
+ "items": {
190
+ "oneOf": [
191
+ {
192
+ "type": "object",
193
+ "required": ["kind", "file", "reference", "specifier", "position"],
194
+ "properties": {
195
+ "kind": {
196
+ "const": "source"
197
+ },
198
+ "file": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ },
202
+ "reference": {
203
+ "enum": ["import", "export-from", "dynamic-import", "require"]
204
+ },
205
+ "specifier": {
206
+ "type": "string"
207
+ },
208
+ "position": {
209
+ "type": "object",
210
+ "required": ["offset", "line", "column"],
211
+ "properties": {
212
+ "offset": {
213
+ "type": "integer",
214
+ "minimum": 0
215
+ },
216
+ "line": {
217
+ "type": "integer",
218
+ "minimum": 1
219
+ },
220
+ "column": {
221
+ "type": "integer",
222
+ "minimum": 1
223
+ }
224
+ },
225
+ "additionalProperties": true
226
+ }
227
+ },
228
+ "additionalProperties": true
229
+ },
230
+ {
231
+ "type": "object",
232
+ "required": ["kind", "file", "pointer", "command", "via", "occurrence"],
233
+ "properties": {
234
+ "kind": {
235
+ "const": "script"
236
+ },
237
+ "file": {
238
+ "const": "package.json"
239
+ },
240
+ "pointer": {
241
+ "type": "string",
242
+ "pattern": "^/scripts/"
243
+ },
244
+ "command": {
245
+ "type": "string",
246
+ "minLength": 1
247
+ },
248
+ "via": {
249
+ "enum": ["direct", "mapping", "runner", "node-preload"]
250
+ },
251
+ "occurrence": {
252
+ "type": "integer",
253
+ "minimum": 0
254
+ }
255
+ },
256
+ "additionalProperties": true
257
+ },
258
+ {
259
+ "type": "object",
260
+ "required": ["kind", "file", "pointer", "value", "detector"],
261
+ "properties": {
262
+ "kind": {
263
+ "const": "config"
264
+ },
265
+ "file": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ },
269
+ "pointer": {
270
+ "type": "string",
271
+ "pattern": "^/"
272
+ },
273
+ "value": {
274
+ "type": "string"
275
+ },
276
+ "detector": {
277
+ "enum": ["eslint", "jest"]
278
+ }
279
+ },
280
+ "additionalProperties": true
281
+ }
282
+ ]
283
+ }
284
+ }
285
+ },
286
+ "additionalProperties": true
287
+ }
288
+ },
289
+ "query": {
290
+ "anyOf": [
291
+ {
292
+ "type": "null"
293
+ },
294
+ {
295
+ "type": "object",
296
+ "required": ["packageName", "known"],
297
+ "properties": {
298
+ "packageName": {
299
+ "type": "string",
300
+ "minLength": 1,
301
+ "maxLength": 214,
302
+ "pattern": "^(?:[A-Za-z0-9][A-Za-z0-9._-]*|@[A-Za-z0-9][A-Za-z0-9._-]*/[A-Za-z0-9][A-Za-z0-9._-]*)(?![\\s\\S])"
303
+ },
304
+ "known": {
305
+ "type": "boolean"
306
+ }
307
+ },
308
+ "additionalProperties": true
309
+ }
310
+ ]
311
+ }
312
+ },
313
+ "additionalProperties": true,
314
+ "allOf": [
315
+ {
316
+ "if": {
317
+ "properties": {
318
+ "mode": {
319
+ "const": "scan"
320
+ }
321
+ }
322
+ },
323
+ "then": {
324
+ "properties": {
325
+ "query": {
326
+ "type": "null"
327
+ },
328
+ "packages": {
329
+ "items": {
330
+ "properties": {
331
+ "status": {
332
+ "not": {
333
+ "const": "unknown"
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ },
342
+ {
343
+ "if": {
344
+ "properties": {
345
+ "mode": {
346
+ "const": "explain"
347
+ }
348
+ }
349
+ },
350
+ "then": {
351
+ "properties": {
352
+ "query": {
353
+ "type": "object",
354
+ "required": ["packageName", "known"],
355
+ "properties": {
356
+ "packageName": {
357
+ "type": "string",
358
+ "minLength": 1,
359
+ "maxLength": 214,
360
+ "pattern": "^(?:[A-Za-z0-9][A-Za-z0-9._-]*|@[A-Za-z0-9][A-Za-z0-9._-]*/[A-Za-z0-9][A-Za-z0-9._-]*)(?![\\s\\S])"
361
+ },
362
+ "known": {
363
+ "type": "boolean"
364
+ }
365
+ },
366
+ "additionalProperties": true
367
+ },
368
+ "packages": {
369
+ "minItems": 1,
370
+ "maxItems": 1
371
+ }
372
+ }
373
+ }
374
+ }
375
+ ]
376
+ }