Skip to content

Commit 3bcfdfa

Browse files
authored
feat: is_package (#40)
1 parent a302cec commit 3bcfdfa

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/lib.rs

+47
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,12 @@ impl ConfigFile {
714714
self.json.imports.is_some() || self.json.scopes.is_some()
715715
}
716716

717+
pub fn is_package(&self) -> bool {
718+
self.json.name.is_some()
719+
&& self.json.version.is_some()
720+
&& self.json.exports.is_some()
721+
}
722+
717723
pub fn has_unstable(&self, name: &str) -> bool {
718724
self.json.unstable.iter().any(|v| v == name)
719725
}
@@ -2129,6 +2135,47 @@ mod tests {
21292135
);
21302136
}
21312137

2138+
#[test]
2139+
fn test_is_package() {
2140+
fn get_for_config(config_text: &str) -> bool {
2141+
let config_specifier = root_url().join("tsconfig.json").unwrap();
2142+
let config_file = ConfigFile::new(config_text, config_specifier).unwrap();
2143+
config_file.is_package()
2144+
}
2145+
2146+
assert!(!get_for_config("{}"));
2147+
assert!(!get_for_config(
2148+
r#"{
2149+
"name": "test"
2150+
}"#
2151+
));
2152+
assert!(!get_for_config(
2153+
r#"{
2154+
"name": "test",
2155+
"version": "1.0.0"
2156+
}"#
2157+
));
2158+
assert!(!get_for_config(
2159+
r#"{
2160+
"name": "test",
2161+
"exports": "./mod.ts"
2162+
}"#
2163+
));
2164+
assert!(!get_for_config(
2165+
r#"{
2166+
"version": "1.0.0",
2167+
"exports": "./mod.ts"
2168+
}"#
2169+
));
2170+
assert!(get_for_config(
2171+
r#"{
2172+
"name": "test",
2173+
"version": "1.0.0",
2174+
"exports": "./mod.ts"
2175+
}"#
2176+
));
2177+
}
2178+
21322179
fn root_url() -> Url {
21332180
if cfg!(windows) {
21342181
Url::parse("file://c:/deno/").unwrap()

0 commit comments

Comments
 (0)