fix(security): add http-cache-semantics and postcss-selector-parser floors #131
3 changed files with 37 additions and 6 deletions
12
package-lock.json
generated
12
package-lock.json
generated
|
|
@ -7068,9 +7068,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/http-cache-semantics": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
|
||||
"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.3.0.tgz",
|
||||
"integrity": "sha512-M5t5LlJpS1UHMjvwRQVdFHvPISGeLAxNcrWuJkeGh0KxsqCHZ1O3NXZU/8x7cD0BDcGW8kapxMKTvwlqrNkHkA==",
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
|
|
@ -9682,9 +9682,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
|
||||
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
|
||||
"version": "6.1.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
|
||||
"integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@
|
|||
"@xmldom/xmldom": "^0.8.15",
|
||||
"uuid": "^11.1.1",
|
||||
"postcss": "^8.5.18",
|
||||
"postcss-selector-parser@^6.0.0": "^6.1.3",
|
||||
"http-cache-semantics": "^4.3.0",
|
||||
"js-yaml@^3.0.0": "^3.15.2",
|
||||
"js-yaml@^4.0.0": "^4.3.2",
|
||||
"brace-expansion@^1.0.0": "^1.1.21",
|
||||
|
|
|
|||
|
|
@ -306,6 +306,35 @@ check('every installed undici copy is >= 6.28.1', () => {
|
|||
);
|
||||
});
|
||||
|
||||
// --- Override floors (#128, #129) ---
|
||||
// http-cache-semantics: blanket floor, a single copy (@expo/ngrok > got).
|
||||
// postcss-selector-parser: version-scoped to major 6 (tailwindcss@3 pipeline);
|
||||
// any other major is unexpected and must fail loudly.
|
||||
|
||||
check('every installed http-cache-semantics copy is >= 4.3.0', () => {
|
||||
const copies = installedCopies('http-cache-semantics');
|
||||
assert.ok(copies.length > 0, 'http-cache-semantics is not installed');
|
||||
const strays = copies.filter((c) => !versionAtLeast(c.version, '4.3.0'));
|
||||
assert.deepEqual(
|
||||
strays.map((c) => `${c.version} at ${path.relative(ROOT, c.dir)}`),
|
||||
[],
|
||||
'http-cache-semantics must be >= 4.3.0'
|
||||
);
|
||||
});
|
||||
|
||||
check('every installed postcss-selector-parser copy is 6.x and >= 6.1.3', () => {
|
||||
const copies = installedCopies('postcss-selector-parser');
|
||||
assert.ok(copies.length > 0, 'postcss-selector-parser is not installed');
|
||||
const strays = copies.filter(
|
||||
(c) => majorOf(c.version) !== '6' || !versionAtLeast(c.version, '6.1.3')
|
||||
);
|
||||
assert.deepEqual(
|
||||
strays.map((c) => `${c.version} at ${path.relative(ROOT, c.dir)}`),
|
||||
[],
|
||||
'postcss-selector-parser must be 6.x >= 6.1.3'
|
||||
);
|
||||
});
|
||||
|
||||
// The call that broke under the blanket override: each minimatch copy must
|
||||
// still expand braces through its own brace-expansion major.
|
||||
check('every installed minimatch copy still matches globs and braces', () => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue