upstream-radar 0.17.0 → 0.19.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.
- package/README.md +17 -1
- package/dist/src/cli.js +12 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/compatibility.d.ts +7 -1
- package/dist/src/compatibility.d.ts.map +1 -1
- package/dist/src/compatibility.js +68 -6
- package/dist/src/compatibility.js.map +1 -1
- package/dist/src/dsh-analysis.d.ts.map +1 -1
- package/dist/src/dsh-analysis.js +5 -2
- package/dist/src/dsh-analysis.js.map +1 -1
- package/dist/src/dsh-plugin.d.ts +3 -0
- package/dist/src/dsh-plugin.d.ts.map +1 -1
- package/dist/src/dsh-plugin.js +6 -2
- package/dist/src/dsh-plugin.js.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/npm-candidate.d.ts +23 -0
- package/dist/src/npm-candidate.d.ts.map +1 -0
- package/dist/src/npm-candidate.js +71 -0
- package/dist/src/npm-candidate.js.map +1 -0
- package/dist/src/npm.d.ts +11 -0
- package/dist/src/npm.d.ts.map +1 -1
- package/dist/src/npm.js +51 -0
- package/dist/src/npm.js.map +1 -1
- package/dist/src/radar-render.d.ts.map +1 -1
- package/dist/src/radar-render.js +13 -3
- package/dist/src/radar-render.js.map +1 -1
- package/dist/src/radar-state.d.ts.map +1 -1
- package/dist/src/radar-state.js +52 -1
- package/dist/src/radar-state.js.map +1 -1
- package/dist/src/radar-status.d.ts.map +1 -1
- package/dist/src/radar-status.js +3 -1
- package/dist/src/radar-status.js.map +1 -1
- package/dist/src/radar-types.d.ts +30 -1
- package/dist/src/radar-types.d.ts.map +1 -1
- package/dist/src/radar.d.ts +5 -2
- package/dist/src/radar.d.ts.map +1 -1
- package/dist/src/radar.js +235 -3
- package/dist/src/radar.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/README.zh-CN.md +18 -2
- package/package.json +2 -2
package/dist/src/radar-state.js
CHANGED
|
@@ -16,15 +16,56 @@ function validAffectedSources(value) {
|
|
|
16
16
|
const allowed = new Set(['profile', 'dsh-host']);
|
|
17
17
|
return new Set(value).size === value.length && value.every(item => typeof item === 'string' && allowed.has(item));
|
|
18
18
|
}
|
|
19
|
+
function validPackageCoordinate(value) {
|
|
20
|
+
const coordinate = asRecord(value);
|
|
21
|
+
return coordinate?.ecosystem === 'npm'
|
|
22
|
+
&& typeof coordinate.name === 'string' && coordinate.name.length > 0 && coordinate.name.length <= 512
|
|
23
|
+
&& typeof coordinate.version === 'string' && coordinate.version.length > 0 && coordinate.version.length <= 512;
|
|
24
|
+
}
|
|
25
|
+
function validCompatibilityDependencyCheck(value) {
|
|
26
|
+
const check = asRecord(value);
|
|
27
|
+
const findings = check?.findings;
|
|
28
|
+
if ((check?.status !== 'checked' && check?.status !== 'incomplete' && check?.status !== 'unavailable')
|
|
29
|
+
|| typeof check.nodeCount !== 'number' || !Number.isSafeInteger(check.nodeCount) || check.nodeCount < 0 || check.nodeCount > 1_000_000
|
|
30
|
+
|| typeof check.unresolvedCount !== 'number' || !Number.isSafeInteger(check.unresolvedCount) || check.unresolvedCount < 0 || check.unresolvedCount > 1_000_000
|
|
31
|
+
|| !Array.isArray(findings) || findings.length > 32
|
|
32
|
+
|| (check.error !== undefined && (typeof check.error !== 'string' || check.error.length > 2_048)))
|
|
33
|
+
return false;
|
|
34
|
+
return findings.every(rawFinding => {
|
|
35
|
+
const finding = asRecord(rawFinding);
|
|
36
|
+
const advisory = asRecord(finding?.advisory);
|
|
37
|
+
const paths = finding?.paths;
|
|
38
|
+
return validPackageCoordinate(finding?.package)
|
|
39
|
+
&& typeof advisory?.id === 'string' && advisory.id.length > 0 && advisory.id.length <= 256
|
|
40
|
+
&& typeof advisory.summary === 'string' && advisory.summary.length <= 8_192
|
|
41
|
+
&& typeof advisory.details === 'string' && advisory.details.length <= 64 * 1_024
|
|
42
|
+
&& (advisory.severity === 'unknown' || advisory.severity === 'info' || advisory.severity === 'low'
|
|
43
|
+
|| advisory.severity === 'medium' || advisory.severity === 'high' || advisory.severity === 'critical')
|
|
44
|
+
&& typeof advisory.modified === 'string' && advisory.modified.length <= 256
|
|
45
|
+
&& (advisory.published === undefined || (typeof advisory.published === 'string' && advisory.published.length <= 256))
|
|
46
|
+
&& (advisory.withdrawn === undefined || (typeof advisory.withdrawn === 'string' && advisory.withdrawn.length <= 256))
|
|
47
|
+
&& Array.isArray(advisory.aliases) && advisory.aliases.length <= 100
|
|
48
|
+
&& advisory.aliases.every(item => typeof item === 'string' && item.length <= 256)
|
|
49
|
+
&& Array.isArray(advisory.fixedVersions) && advisory.fixedVersions.length <= 128
|
|
50
|
+
&& advisory.fixedVersions.every(item => typeof item === 'string' && item.length <= 256)
|
|
51
|
+
&& Array.isArray(advisory.references) && advisory.references.length <= 100
|
|
52
|
+
&& advisory.references.every(item => typeof item === 'string' && item.length <= 4_096)
|
|
53
|
+
&& Array.isArray(paths) && paths.length <= 4
|
|
54
|
+
&& paths.every(path => Array.isArray(path) && path.length > 0 && path.length <= 64 && path.every(validPackageCoordinate));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
19
57
|
function validCompatibilityUpgradeCandidate(value) {
|
|
20
58
|
const candidate = asRecord(value);
|
|
21
59
|
const coordinate = asRecord(candidate?.candidate);
|
|
22
60
|
const signals = candidate?.signals;
|
|
61
|
+
const dependencyCheck = candidate?.dependencyCheck;
|
|
23
62
|
if (coordinate?.ecosystem !== 'npm'
|
|
24
63
|
|| typeof coordinate.name !== 'string' || coordinate.name.length === 0 || coordinate.name.length > 512
|
|
25
64
|
|| typeof coordinate.version !== 'string' || coordinate.version.length === 0 || coordinate.version.length > 512
|
|
26
65
|
|| !Array.isArray(signals) || signals.length > 64)
|
|
27
66
|
return false;
|
|
67
|
+
if (dependencyCheck !== undefined && !validCompatibilityDependencyCheck(dependencyCheck))
|
|
68
|
+
return false;
|
|
28
69
|
return signals.every(rawSignal => {
|
|
29
70
|
const signal = asRecord(rawSignal);
|
|
30
71
|
return typeof signal?.code === 'string' && signal.code.length > 0 && signal.code.length <= 256
|
|
@@ -41,8 +82,18 @@ function validCompatibilityUpgradePath(value) {
|
|
|
41
82
|
const evaluated = path?.evaluated;
|
|
42
83
|
const blockedCount = path?.blockedCount;
|
|
43
84
|
const blocked = path?.blocked;
|
|
85
|
+
const vulnerabilityStatus = path?.vulnerabilityStatus;
|
|
86
|
+
const dependencyStatus = path?.dependencyStatus;
|
|
87
|
+
const uncheckedCount = path?.uncheckedCount;
|
|
44
88
|
if (typeof evaluated !== 'number' || !Number.isSafeInteger(evaluated) || evaluated < 0 || evaluated > 1_000_000
|
|
45
89
|
|| typeof blockedCount !== 'number' || !Number.isSafeInteger(blockedCount) || blockedCount < 0 || blockedCount > evaluated
|
|
90
|
+
// 0.17.0 upgrade paths did not have this field; treat those persisted paths as legacy.
|
|
91
|
+
|| (vulnerabilityStatus !== undefined
|
|
92
|
+
&& vulnerabilityStatus !== 'checked' && vulnerabilityStatus !== 'unavailable' && vulnerabilityStatus !== 'not-requested')
|
|
93
|
+
|| (dependencyStatus !== undefined
|
|
94
|
+
&& dependencyStatus !== 'checked' && dependencyStatus !== 'partial' && dependencyStatus !== 'unavailable' && dependencyStatus !== 'not-requested')
|
|
95
|
+
|| (uncheckedCount !== undefined
|
|
96
|
+
&& (typeof uncheckedCount !== 'number' || !Number.isSafeInteger(uncheckedCount) || uncheckedCount < 0 || uncheckedCount > evaluated))
|
|
46
97
|
|| !Array.isArray(blocked) || blocked.length > 8
|
|
47
98
|
|| (path?.firstCandidate !== undefined && !validCompatibilityUpgradeCandidate(path.firstCandidate)))
|
|
48
99
|
return false;
|
|
@@ -67,7 +118,7 @@ export function parseRadarState(value) {
|
|
|
67
118
|
if (Object.keys(sourceHealth).length > 10 || Object.keys(activeSourceHealth).length > 1_000_000) {
|
|
68
119
|
throw new Error('radar state exceeds the source health limit');
|
|
69
120
|
}
|
|
70
|
-
const sourceNames = new Set(['osv', 'npm-releases', 'github-releases']);
|
|
121
|
+
const sourceNames = new Set(['osv', 'npm-releases', 'npm-candidate-graphs', 'github-releases']);
|
|
71
122
|
for (const [source, rawStatus] of Object.entries(sourceHealth)) {
|
|
72
123
|
const status = asRecord(rawStatus);
|
|
73
124
|
const failures = status?.consecutiveFailures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radar-state.js","sourceRoot":"","sources":["../../src/radar-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,kBAAkB,CAAA;AAEzB,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzF,OAAO,KAAgC,CAAA;AACzC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACjF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAChD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACnH,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAc;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,CAAA;IAClC,IAAI,UAAU,EAAE,SAAS,KAAK,KAAK;WAC9B,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;WACnG,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;WAC5G,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IACjE,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,OAAO,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG;eACzF,CAAC,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,gBAAgB,CAAC;eAC/G,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK;eACpE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;eACrG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAA;IACzG,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAA;IACjC,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,CAAA;IACvC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAA;IAC7B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,SAAS;WAC1G,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS;WACvH,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;WAC7C,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACnH,OAAO,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,IAAI,EAAE,MAAM,KAAK,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACjG,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IACxF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC9D,IAAI,mBAAmB,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IACrG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,IAAI,YAAY,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAC/F,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACzG,IAAI,kBAAkB,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAC5G,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACvE,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG,MAAM,EAAE,mBAAmB,CAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;eACvB,OAAO,MAAM,EAAE,eAAe,KAAK,QAAQ;eAC3C,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;eAC/D,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS;eACpC,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC;eACpF,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;mBAC7B,CAAC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,yDAAyD,MAAM,EAAE,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,IAAI,EAAE,MAAM,KAAK,oBAAoB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;eACnE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,EAAE,MAAM,KAAK,kBAAkB;eAC1E,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;eACpE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;YACtI,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1H,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IACtI,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IACzG,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,MAAM,KAAK,kBAAkB,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;eAClG,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;eAC5D,OAAO,QAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;eACzE,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,MAAM,KAAK,kBAAkB;eAC1D,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG;eAC1D,CAAC,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,wDAAwD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,MAAM,KAAK,kBAAkB;eAC1D,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG;eAC1D,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,wDAAwD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAe,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACtD,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC/G,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,eAAe,EAAE,CAAA;QAChF,IAAI,KAAK,YAAY,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClF,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAiB;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC,CAAA;IACjG,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9F,MAAM,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"radar-state.js","sourceRoot":"","sources":["../../src/radar-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radar-status.d.ts","sourceRoot":"","sources":["../../src/radar-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAA;AAEhG,eAAO,MAAM,mBAAmB,EAAG,sCAA+C,CAAA;AAIlF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAA;AAC1E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAClE,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,iBAAiB,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,mBAAmB,CAAA;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,qBAAqB,CAAA;IACjC,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,8BAA8B,EAAE,MAAM,CAAA;IACtC,gCAAgC,EAAE,MAAM,CAAA;IACxC,sBAAsB,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;CACrB;AAuBD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CA4CnB;
|
|
1
|
+
{"version":3,"file":"radar-status.d.ts","sourceRoot":"","sources":["../../src/radar-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAA;AAEhG,eAAO,MAAM,mBAAmB,EAAG,sCAA+C,CAAA;AAIlF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAA;AAC1E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAClE,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,iBAAiB,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,mBAAmB,CAAA;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,qBAAqB,CAAA;IACjC,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,8BAA8B,EAAE,MAAM,CAAA;IACtC,gCAAgC,EAAE,MAAM,CAAA;IACxC,sBAAsB,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;CACrB;AAuBD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CA4CnB;AAoBD,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAmCnE"}
|
package/dist/src/radar-status.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const RADAR_STATUS_SCHEMA = 'upstream-radar.radar-status/v1alpha1';
|
|
2
|
-
const RADAR_SOURCES = ['osv', 'npm-releases', 'github-releases'];
|
|
2
|
+
const RADAR_SOURCES = ['osv', 'npm-releases', 'npm-candidate-graphs', 'github-releases'];
|
|
3
3
|
function sourceStatus(source, status) {
|
|
4
4
|
if (status === undefined) {
|
|
5
5
|
return { source, status: 'not-run', consecutiveFailures: 0 };
|
|
@@ -61,6 +61,8 @@ function sourceLabel(source) {
|
|
|
61
61
|
return 'OSV';
|
|
62
62
|
if (source === 'npm-releases')
|
|
63
63
|
return 'npm releases';
|
|
64
|
+
if (source === 'npm-candidate-graphs')
|
|
65
|
+
return 'npm candidate dependency graphs';
|
|
64
66
|
return 'GitHub releases';
|
|
65
67
|
}
|
|
66
68
|
function plural(value, singular, multiple = `${singular}s`) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radar-status.js","sourceRoot":"","sources":["../../src/radar-status.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,sCAA+C,CAAA;AAElF,MAAM,aAAa,GAA2B,CAAC,KAAK,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"radar-status.js","sourceRoot":"","sources":["../../src/radar-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,14 @@ export interface AdvisoryMatch {
|
|
|
103
103
|
package: PackageCoordinate;
|
|
104
104
|
advisory: VulnerabilityAdvisory;
|
|
105
105
|
}
|
|
106
|
+
export type CandidateDependencyGraphStatus = 'checked' | 'incomplete' | 'unavailable';
|
|
107
|
+
/** Result of resolving one exact upgrade candidate without loading or executing its package code. */
|
|
108
|
+
export interface CandidateDependencyGraphObservation {
|
|
109
|
+
candidate: PackageCoordinate;
|
|
110
|
+
status: CandidateDependencyGraphStatus;
|
|
111
|
+
graph?: DependencyGraph;
|
|
112
|
+
error?: string;
|
|
113
|
+
}
|
|
106
114
|
export interface EventRoute {
|
|
107
115
|
owner?: string;
|
|
108
116
|
channels: string[];
|
|
@@ -135,16 +143,37 @@ export interface CompatibilitySignal {
|
|
|
135
143
|
before?: string;
|
|
136
144
|
after?: string;
|
|
137
145
|
}
|
|
146
|
+
export interface CompatibilityDependencyFinding {
|
|
147
|
+
package: PackageCoordinate;
|
|
148
|
+
advisory: VulnerabilityAdvisory;
|
|
149
|
+
paths: PackageCoordinate[][];
|
|
150
|
+
}
|
|
151
|
+
export interface CompatibilityDependencyCheck {
|
|
152
|
+
status: CandidateDependencyGraphStatus;
|
|
153
|
+
nodeCount: number;
|
|
154
|
+
unresolvedCount: number;
|
|
155
|
+
findings: CompatibilityDependencyFinding[];
|
|
156
|
+
error?: string;
|
|
157
|
+
}
|
|
138
158
|
export interface CompatibilityUpgradeCandidate {
|
|
139
159
|
candidate: PackageCoordinate;
|
|
140
160
|
signals: CompatibilitySignal[];
|
|
161
|
+
dependencyCheck?: CompatibilityDependencyCheck;
|
|
141
162
|
}
|
|
163
|
+
export type CompatibilityVulnerabilityStatus = 'checked' | 'unavailable' | 'not-requested';
|
|
164
|
+
export type CompatibilityDependencyStatus = 'checked' | 'partial' | 'unavailable' | 'not-requested';
|
|
142
165
|
/** A bounded explanation of which intermediate release is worth analyzing first. */
|
|
143
166
|
export interface CompatibilityUpgradePath {
|
|
144
167
|
/** Number of newer manifests considered from the npm packument. */
|
|
145
168
|
evaluated: number;
|
|
146
169
|
/** Number of considered candidates with a confirmed or strong blocker. */
|
|
147
170
|
blockedCount: number;
|
|
171
|
+
/** Whether exact candidate versions were checked against the configured OSV source. */
|
|
172
|
+
vulnerabilityStatus: CompatibilityVulnerabilityStatus;
|
|
173
|
+
/** Whether the candidate dependency graphs were checked; partial means only the earliest bounded prefix was resolved. */
|
|
174
|
+
dependencyStatus?: CompatibilityDependencyStatus;
|
|
175
|
+
/** Number of candidate versions without a complete dependency check. */
|
|
176
|
+
uncheckedCount?: number;
|
|
148
177
|
/** The first candidate without a deterministic blocker; this is not a safety verdict. */
|
|
149
178
|
firstCandidate?: CompatibilityUpgradeCandidate;
|
|
150
179
|
/** A small sample of blocked candidates, kept for an actionable alert. */
|
|
@@ -160,7 +189,7 @@ export interface CompatibilityEvent extends RadarEventBase {
|
|
|
160
189
|
releaseNotes?: string;
|
|
161
190
|
releaseNotesUrl?: string;
|
|
162
191
|
}
|
|
163
|
-
export type RadarSource = 'osv' | 'npm-releases' | 'github-releases';
|
|
192
|
+
export type RadarSource = 'osv' | 'npm-releases' | 'npm-candidate-graphs' | 'github-releases';
|
|
164
193
|
export interface SourceHealthStatus {
|
|
165
194
|
lastAttemptedAt: string;
|
|
166
195
|
lastSucceededAt?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radar-types.d.ts","sourceRoot":"","sources":["../../src/radar-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"radar-types.d.ts","sourceRoot":"","sources":["../../src/radar-types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/radar.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { ReleaseNotesSource } from './github-release.js';
|
|
2
2
|
import type { NpmReleaseObservation } from './npm-release.js';
|
|
3
|
-
import { type AdvisoryMatch, type AnalysisTask, type PackageCoordinate, type ProjectInventory, type RadarEvent, type RadarSource, type RadarState } from './radar-types.js';
|
|
3
|
+
import { type AdvisoryMatch, type AnalysisTask, type CandidateDependencyGraphObservation, type PackageCoordinate, type ProjectInventory, type RadarEvent, type RadarSource, type RadarState } from './radar-types.js';
|
|
4
4
|
export interface AdvisorySource {
|
|
5
5
|
query(packages: readonly PackageCoordinate[]): Promise<Map<string, AdvisoryMatch[]>>;
|
|
6
6
|
}
|
|
7
7
|
export interface ReleaseSource {
|
|
8
8
|
query(packages: readonly PackageCoordinate[]): Promise<Map<string, NpmReleaseObservation>>;
|
|
9
9
|
}
|
|
10
|
+
export interface CandidateDependencySource {
|
|
11
|
+
query(packages: readonly PackageCoordinate[]): Promise<Map<string, CandidateDependencyGraphObservation>>;
|
|
12
|
+
}
|
|
10
13
|
export interface RadarPollResult {
|
|
11
14
|
checkedAt: string;
|
|
12
15
|
packagesQueried: number;
|
|
@@ -21,5 +24,5 @@ export interface RadarPollResult {
|
|
|
21
24
|
}
|
|
22
25
|
export declare function emptyRadarState(): RadarState;
|
|
23
26
|
/** Query exact installed versions, calculate affected paths, and emit state transitions only. */
|
|
24
|
-
export declare function pollRadar(inventories: readonly ProjectInventory[], previousState: RadarState, source: AdvisorySource, now?: Date, releaseSource?: ReleaseSource, releaseNotesSource?: ReleaseNotesSource): Promise<RadarPollResult>;
|
|
27
|
+
export declare function pollRadar(inventories: readonly ProjectInventory[], previousState: RadarState, source: AdvisorySource, now?: Date, releaseSource?: ReleaseSource, releaseNotesSource?: ReleaseNotesSource, candidateDependencySource?: CandidateDependencySource): Promise<RadarPollResult>;
|
|
25
28
|
//# sourceMappingURL=radar.d.ts.map
|
package/dist/src/radar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radar.d.ts","sourceRoot":"","sources":["../../src/radar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"radar.d.ts","sourceRoot":"","sources":["../../src/radar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAG7D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mCAAmC,EAOxC,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EAQhB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;CACrF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAA;CAC3F;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAA;CACzG;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,YAAY,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7D,KAAK,EAAE,UAAU,CAAA;CAClB;AA8PD,wBAAgB,eAAe,IAAI,UAAU,CAS5C;AAED,iGAAiG;AACjG,wBAAsB,SAAS,CAC7B,WAAW,EAAE,SAAS,gBAAgB,EAAE,EACxC,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,cAAc,EACtB,GAAG,OAAa,EAChB,aAAa,CAAC,EAAE,aAAa,EAC7B,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,yBAAyB,CAAC,EAAE,yBAAyB,GACpD,OAAO,CAAC,eAAe,CAAC,CA+a1B"}
|
package/dist/src/radar.js
CHANGED
|
@@ -2,10 +2,16 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import { createAnalysisTask } from './dsh-analysis.js';
|
|
3
3
|
import { assessCompatibilityChanges } from './compatibility.js';
|
|
4
4
|
import { findDependencyPaths } from './graph.js';
|
|
5
|
+
import { MAX_CANDIDATE_GRAPHS } from './npm-candidate.js';
|
|
5
6
|
import { compareSemverValues } from './semver.js';
|
|
6
7
|
import { packageKey } from './osv.js';
|
|
7
8
|
import { RADAR_EVENT_SCHEMA, RADAR_STATE_SCHEMA, } from './radar-types.js';
|
|
8
9
|
const SOURCE_FAILURE_ALERT_THRESHOLD = 3;
|
|
10
|
+
const MAX_CANDIDATE_VULNERABILITY_QUERY = 50_000;
|
|
11
|
+
const MAX_DEEP_CANDIDATES_PER_STREAM = 4;
|
|
12
|
+
const MAX_CANDIDATE_DEPENDENCY_QUERY = 50_000;
|
|
13
|
+
const MAX_CANDIDATE_DEPENDENCY_FINDINGS = 32;
|
|
14
|
+
const MAX_CANDIDATE_DEPENDENCY_PATHS = 4;
|
|
9
15
|
function hash(value) {
|
|
10
16
|
return createHash('sha256').update(value).digest('hex').slice(0, 24);
|
|
11
17
|
}
|
|
@@ -57,6 +63,102 @@ function releaseCandidateStatus(observation) {
|
|
|
57
63
|
return 'older';
|
|
58
64
|
return 'same';
|
|
59
65
|
}
|
|
66
|
+
function candidateAdvisories(observation, matches) {
|
|
67
|
+
const result = new Map();
|
|
68
|
+
for (const candidate of observation.upgradeCandidates ?? []) {
|
|
69
|
+
const item = coordinate(candidate.name, candidate.version);
|
|
70
|
+
result.set(packageKey(item), (matches.get(packageKey(item)) ?? []).map(match => match.advisory));
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
function candidatePackages(releases) {
|
|
75
|
+
const result = new Map();
|
|
76
|
+
for (const observation of releases.values()) {
|
|
77
|
+
if (releaseCandidateStatus(observation) !== 'newer')
|
|
78
|
+
continue;
|
|
79
|
+
for (const candidate of observation.upgradeCandidates ?? []) {
|
|
80
|
+
const item = coordinate(candidate.name, candidate.version);
|
|
81
|
+
result.set(packageKey(item), item);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return [...result.values()];
|
|
85
|
+
}
|
|
86
|
+
function candidateGraphPackages(releases) {
|
|
87
|
+
const result = new Map();
|
|
88
|
+
for (const observation of releases.values()) {
|
|
89
|
+
if (releaseCandidateStatus(observation) !== 'newer')
|
|
90
|
+
continue;
|
|
91
|
+
for (const candidate of (observation.upgradeCandidates ?? []).slice(0, MAX_DEEP_CANDIDATES_PER_STREAM)) {
|
|
92
|
+
const item = coordinate(candidate.name, candidate.version);
|
|
93
|
+
result.set(packageKey(item), item);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return [...result.values()];
|
|
97
|
+
}
|
|
98
|
+
function candidateDependencyStatus(observation, checks, requested) {
|
|
99
|
+
if (!requested || observation.upgradeCandidates === undefined || observation.upgradeCandidates.length === 0) {
|
|
100
|
+
return 'not-requested';
|
|
101
|
+
}
|
|
102
|
+
const selected = observation.upgradeCandidates.slice(0, MAX_DEEP_CANDIDATES_PER_STREAM);
|
|
103
|
+
const selectedChecks = selected.map(candidate => checks.get(packageKey(coordinate(candidate.name, candidate.version))));
|
|
104
|
+
if (selectedChecks.some(check => check === undefined || check.status === 'unavailable')) {
|
|
105
|
+
return 'unavailable';
|
|
106
|
+
}
|
|
107
|
+
return observation.upgradeCandidates.length > selected.length || selectedChecks.some(check => check?.status === 'incomplete')
|
|
108
|
+
? 'partial'
|
|
109
|
+
: 'checked';
|
|
110
|
+
}
|
|
111
|
+
function findingKey(item) {
|
|
112
|
+
return `${packageKey(item.package)}\0${item.advisory.id}`;
|
|
113
|
+
}
|
|
114
|
+
function collectCandidateDependencyFindings(graph, matches) {
|
|
115
|
+
const grouped = new Map();
|
|
116
|
+
for (const node of graph.nodes) {
|
|
117
|
+
const affected = coordinate(node.name, node.version);
|
|
118
|
+
const paths = findDependencyPaths(graph, node.id, {
|
|
119
|
+
maxPaths: MAX_CANDIDATE_DEPENDENCY_PATHS,
|
|
120
|
+
maxDepth: 64,
|
|
121
|
+
}).map(path => path.map(item => coordinate(item.name, item.version)));
|
|
122
|
+
if (paths.length === 0)
|
|
123
|
+
continue;
|
|
124
|
+
for (const match of matches.get(packageKey(affected)) ?? []) {
|
|
125
|
+
const finding = {
|
|
126
|
+
package: { ...match.package },
|
|
127
|
+
advisory: { ...match.advisory },
|
|
128
|
+
paths: paths.map(path => [...path]),
|
|
129
|
+
};
|
|
130
|
+
const key = findingKey(finding);
|
|
131
|
+
const existing = grouped.get(key);
|
|
132
|
+
if (existing === undefined) {
|
|
133
|
+
grouped.set(key, finding);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const known = new Set(existing.paths.map(path => JSON.stringify(path)));
|
|
137
|
+
for (const path of finding.paths) {
|
|
138
|
+
const serialized = JSON.stringify(path);
|
|
139
|
+
if (known.has(serialized) || existing.paths.length >= MAX_CANDIDATE_DEPENDENCY_PATHS)
|
|
140
|
+
continue;
|
|
141
|
+
existing.paths.push(path);
|
|
142
|
+
known.add(serialized);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return [...grouped.values()]
|
|
147
|
+
.sort((left, right) => findingKey(left).localeCompare(findingKey(right)))
|
|
148
|
+
.slice(0, MAX_CANDIDATE_DEPENDENCY_FINDINGS);
|
|
149
|
+
}
|
|
150
|
+
function candidateDependencyCheck(observation) {
|
|
151
|
+
const status = observation === undefined || observation.graph === undefined
|
|
152
|
+
? 'unavailable'
|
|
153
|
+
: observation.status;
|
|
154
|
+
return {
|
|
155
|
+
status,
|
|
156
|
+
nodeCount: observation?.graph?.nodes.length ?? 0,
|
|
157
|
+
unresolvedCount: observation?.graph?.unresolved?.length ?? 0,
|
|
158
|
+
findings: [],
|
|
159
|
+
...(observation?.error === undefined ? {} : { error: observation.error }),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
60
162
|
function sourceHealthKey(projectId, source) {
|
|
61
163
|
return `${projectId}\0${source}`;
|
|
62
164
|
}
|
|
@@ -116,7 +218,7 @@ export function emptyRadarState() {
|
|
|
116
218
|
};
|
|
117
219
|
}
|
|
118
220
|
/** Query exact installed versions, calculate affected paths, and emit state transitions only. */
|
|
119
|
-
export async function pollRadar(inventories, previousState, source, now = new Date(), releaseSource, releaseNotesSource) {
|
|
221
|
+
export async function pollRadar(inventories, previousState, source, now = new Date(), releaseSource, releaseNotesSource, candidateDependencySource) {
|
|
120
222
|
if (previousState.schema !== RADAR_STATE_SCHEMA)
|
|
121
223
|
throw new Error('unsupported radar state schema');
|
|
122
224
|
if (!Number.isFinite(now.getTime()))
|
|
@@ -136,10 +238,11 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
136
238
|
}
|
|
137
239
|
let matches = new Map();
|
|
138
240
|
let vulnerabilityCheckSucceeded = true;
|
|
241
|
+
let osvSourceSucceeded = true;
|
|
242
|
+
let osvFailureMessage;
|
|
139
243
|
attemptedSources.add('osv');
|
|
140
244
|
try {
|
|
141
245
|
matches = await source.query([...uniquePackages.values()]);
|
|
142
|
-
sourceHealth = recordSourceHealth(sourceHealth, 'osv', checkedAt, true);
|
|
143
246
|
}
|
|
144
247
|
catch (error) {
|
|
145
248
|
const raw = error instanceof Error ? error.message : String(error);
|
|
@@ -148,7 +251,8 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
148
251
|
source: 'osv',
|
|
149
252
|
message,
|
|
150
253
|
});
|
|
151
|
-
|
|
254
|
+
osvSourceSucceeded = false;
|
|
255
|
+
osvFailureMessage = message;
|
|
152
256
|
vulnerabilityCheckSucceeded = false;
|
|
153
257
|
}
|
|
154
258
|
const current = vulnerabilityCheckSucceeded
|
|
@@ -253,6 +357,10 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
253
357
|
}
|
|
254
358
|
}
|
|
255
359
|
let activeCompatibility = previousState.activeCompatibility;
|
|
360
|
+
let candidateVulnerabilityMatches = new Map();
|
|
361
|
+
let candidateVulnerabilityStatus = 'not-requested';
|
|
362
|
+
let candidateDependencyChecks = new Map();
|
|
363
|
+
let candidateDependencySourceRequested = false;
|
|
256
364
|
if (releaseSource !== undefined) {
|
|
257
365
|
attemptedSources.add('npm-releases');
|
|
258
366
|
let releases;
|
|
@@ -273,6 +381,121 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
273
381
|
releases = new Map();
|
|
274
382
|
}
|
|
275
383
|
if (releaseCheckSucceeded) {
|
|
384
|
+
const candidateQueryPackages = candidatePackages(releases);
|
|
385
|
+
if (candidateQueryPackages.length > 0) {
|
|
386
|
+
if (candidateQueryPackages.length > MAX_CANDIDATE_VULNERABILITY_QUERY) {
|
|
387
|
+
const message = `OSV candidate query exceeds the ${MAX_CANDIDATE_VULNERABILITY_QUERY} package limit`;
|
|
388
|
+
sourceErrors.push({ source: 'osv', message });
|
|
389
|
+
osvSourceSucceeded = false;
|
|
390
|
+
osvFailureMessage = message;
|
|
391
|
+
candidateVulnerabilityStatus = 'unavailable';
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
try {
|
|
395
|
+
const queried = await source.query(candidateQueryPackages);
|
|
396
|
+
if (candidateQueryPackages.some(item => !queried.has(packageKey(item)))) {
|
|
397
|
+
throw new Error('OSV candidate response does not cover every submitted package version');
|
|
398
|
+
}
|
|
399
|
+
candidateVulnerabilityMatches = queried;
|
|
400
|
+
candidateVulnerabilityStatus = 'checked';
|
|
401
|
+
}
|
|
402
|
+
catch (error) {
|
|
403
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
404
|
+
const message = raw.replace(/[\u0000-\u001f\u007f-\u009f]/g, '?').slice(0, 2_048);
|
|
405
|
+
sourceErrors.push({ source: 'osv', message });
|
|
406
|
+
osvSourceSucceeded = false;
|
|
407
|
+
osvFailureMessage = message;
|
|
408
|
+
candidateVulnerabilityStatus = 'unavailable';
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
if (candidateDependencySource !== undefined) {
|
|
413
|
+
const graphCandidates = candidateGraphPackages(releases).slice(0, MAX_CANDIDATE_GRAPHS);
|
|
414
|
+
if (graphCandidates.length > 0) {
|
|
415
|
+
candidateDependencySourceRequested = true;
|
|
416
|
+
attemptedSources.add('npm-candidate-graphs');
|
|
417
|
+
let graphObservations = new Map();
|
|
418
|
+
let graphSourceSucceeded = false;
|
|
419
|
+
try {
|
|
420
|
+
graphObservations = await candidateDependencySource.query(graphCandidates);
|
|
421
|
+
if (graphCandidates.some(item => !graphObservations.has(packageKey(item)))) {
|
|
422
|
+
throw new Error('candidate dependency graph response does not cover every submitted package version');
|
|
423
|
+
}
|
|
424
|
+
graphSourceSucceeded = true;
|
|
425
|
+
sourceHealth = recordSourceHealth(sourceHealth, 'npm-candidate-graphs', checkedAt, true);
|
|
426
|
+
}
|
|
427
|
+
catch (error) {
|
|
428
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
429
|
+
const message = raw.replace(/[\u0000-\u001f\u007f-\u009f]/g, '?').slice(0, 2_048);
|
|
430
|
+
sourceErrors.push({
|
|
431
|
+
source: 'npm-candidate-graphs',
|
|
432
|
+
message,
|
|
433
|
+
});
|
|
434
|
+
sourceHealth = recordSourceHealth(sourceHealth, 'npm-candidate-graphs', checkedAt, false, message);
|
|
435
|
+
}
|
|
436
|
+
for (const candidate of graphCandidates) {
|
|
437
|
+
const key = packageKey(candidate);
|
|
438
|
+
candidateDependencyChecks.set(key, candidateDependencyCheck(graphSourceSucceeded ? graphObservations.get(key) : undefined));
|
|
439
|
+
}
|
|
440
|
+
if (graphSourceSucceeded) {
|
|
441
|
+
const dependencyQueryPackages = [...new Map([...graphObservations.values()]
|
|
442
|
+
.flatMap(observation => observation.graph === undefined || observation.status === 'unavailable'
|
|
443
|
+
? []
|
|
444
|
+
: observation.graph.nodes.map(node => {
|
|
445
|
+
const item = coordinate(node.name, node.version);
|
|
446
|
+
return [packageKey(item), item];
|
|
447
|
+
}))).values()];
|
|
448
|
+
if (dependencyQueryPackages.length > MAX_CANDIDATE_DEPENDENCY_QUERY) {
|
|
449
|
+
const message = `OSV candidate dependency query exceeds the ${MAX_CANDIDATE_DEPENDENCY_QUERY} package limit`;
|
|
450
|
+
sourceErrors.push({ source: 'osv', message });
|
|
451
|
+
osvSourceSucceeded = false;
|
|
452
|
+
osvFailureMessage = message;
|
|
453
|
+
for (const [key, check] of candidateDependencyChecks) {
|
|
454
|
+
candidateDependencyChecks.set(key, {
|
|
455
|
+
...check,
|
|
456
|
+
status: 'unavailable',
|
|
457
|
+
error: message,
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
else if (dependencyQueryPackages.length > 0) {
|
|
462
|
+
try {
|
|
463
|
+
const queried = await source.query(dependencyQueryPackages);
|
|
464
|
+
if (dependencyQueryPackages.some(item => !queried.has(packageKey(item)))) {
|
|
465
|
+
throw new Error('OSV candidate dependency response does not cover every submitted package version');
|
|
466
|
+
}
|
|
467
|
+
for (const candidate of graphCandidates) {
|
|
468
|
+
const key = packageKey(candidate);
|
|
469
|
+
const check = candidateDependencyChecks.get(key);
|
|
470
|
+
const observation = graphObservations.get(key);
|
|
471
|
+
if (check === undefined || observation?.graph === undefined || check.status === 'unavailable')
|
|
472
|
+
continue;
|
|
473
|
+
candidateDependencyChecks.set(key, {
|
|
474
|
+
...check,
|
|
475
|
+
findings: collectCandidateDependencyFindings(observation.graph, queried),
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
481
|
+
const message = raw.replace(/[\u0000-\u001f\u007f-\u009f]/g, '?').slice(0, 2_048);
|
|
482
|
+
sourceErrors.push({ source: 'osv', message });
|
|
483
|
+
osvSourceSucceeded = false;
|
|
484
|
+
osvFailureMessage = message;
|
|
485
|
+
for (const [key, check] of candidateDependencyChecks) {
|
|
486
|
+
if (check.status === 'unavailable')
|
|
487
|
+
continue;
|
|
488
|
+
candidateDependencyChecks.set(key, {
|
|
489
|
+
...check,
|
|
490
|
+
status: 'unavailable',
|
|
491
|
+
error: message,
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
276
499
|
let releaseNotes = new Map();
|
|
277
500
|
let releaseNotesCheckSucceeded = releaseNotesSource === undefined;
|
|
278
501
|
if (releaseNotesSource !== undefined) {
|
|
@@ -325,6 +548,14 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
325
548
|
candidate: observation.candidate,
|
|
326
549
|
detectedAt: checkedAt,
|
|
327
550
|
...(observation.upgradeCandidates === undefined ? {} : { upgradeCandidates: observation.upgradeCandidates }),
|
|
551
|
+
...(observation.upgradeCandidates === undefined ? {} : {
|
|
552
|
+
candidateVulnerabilities: candidateAdvisories(observation, candidateVulnerabilityMatches),
|
|
553
|
+
candidateVulnerabilityStatus,
|
|
554
|
+
...(candidateDependencySourceRequested ? {
|
|
555
|
+
candidateDependencyChecks,
|
|
556
|
+
candidateDependencyStatus: candidateDependencyStatus(observation, candidateDependencyChecks, true),
|
|
557
|
+
} : {}),
|
|
558
|
+
}),
|
|
328
559
|
...releaseNotesInput,
|
|
329
560
|
...releaseNotesUrlInput,
|
|
330
561
|
});
|
|
@@ -365,6 +596,7 @@ export async function pollRadar(inventories, previousState, source, now = new Da
|
|
|
365
596
|
activeCompatibility = Object.fromEntries(currentCompatibility);
|
|
366
597
|
}
|
|
367
598
|
}
|
|
599
|
+
sourceHealth = recordSourceHealth(sourceHealth, 'osv', checkedAt, osvSourceSucceeded, osvFailureMessage);
|
|
368
600
|
let activeSourceHealth = previousState.activeSourceHealth ?? {};
|
|
369
601
|
const currentSourceHealth = new Map(Object.entries(activeSourceHealth));
|
|
370
602
|
for (const inventory of inventories) {
|