pub(super) fn is_likely_native_build(registry_name: &str) -> bool {
const EXACT: &[&str] = &[
"sharp",
"esbuild",
"fsevents",
"canvas",
"bcrypt",
"node-sass",
"sqlite3",
"better-sqlite3",
"lmdb",
"msgpackr-extract",
"sodium-native",
"node-gyp",
"prebuild-install",
"node-gyp-build",
];
if EXACT.contains(®istry_name) {
return true;
}
const PREFIXES: &[&str] = &[
"@swc/",
"@parcel/",
"@napi-rs/",
"@next/swc-",
"@rollup/rollup-",
"@esbuild/",
"@playwright/",
"@biomejs/",
];
PREFIXES.iter().any(|p| registry_name.starts_with(p))
}
#[cfg(test)]
mod critical_path_tests {
use super::is_likely_native_build;
#[test]
fn flags_exact_native_packages() {
for name in [
"sharp",
"esbuild",
"fsevents",
"node-gyp",
"better-sqlite3",
"sodium-native",
] {
assert!(is_likely_native_build(name), "{name} should match");
}
}
#[test]
fn flags_scoped_native_prefixes() {
for name in [
"@swc/core",
"@swc/cli",
"@parcel/source-map",
"@napi-rs/cli",
"@next/swc-linux-x64-gnu",
"@rollup/rollup-linux-x64-gnu",
"@esbuild/linux-x64",
"@playwright/test",
"@biomejs/biome",
] {
assert!(is_likely_native_build(name), "{name} should match");
}
}
#[test]
fn does_not_flag_pure_js_packages() {
for name in [
"react",
"lodash",
"@types/node",
"swc", "ws", "sass", "@scope/random",
] {
assert!(!is_likely_native_build(name), "{name} should NOT match");
}
}
#[test]
fn sort_is_stable_within_groups() {
let mut items = [
("react", 1),
("sharp", 2),
("lodash", 3),
("esbuild", 4),
("@types/node", 5),
("@swc/core", 6),
];
items.sort_by_key(|(name, _)| !is_likely_native_build(name));
let order: Vec<&str> = items.iter().map(|(n, _)| *n).collect();
assert_eq!(
order,
[
"sharp",
"esbuild",
"@swc/core",
"react",
"lodash",
"@types/node"
]
);
}
}