summaryrefslogtreecommitdiff
path: root/cli/npm/common.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/common.rs')
-rw-r--r--cli/npm/common.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/cli/npm/common.rs b/cli/npm/common.rs
new file mode 100644
index 000000000..c7ae55f8f
--- /dev/null
+++ b/cli/npm/common.rs
@@ -0,0 +1,23 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+
+/// Gets the corresponding @types package for the provided package name.
+pub fn types_package_name(package_name: &str) -> String {
+ debug_assert!(!package_name.starts_with("@types/"));
+ // Scoped packages will get two underscores for each slash
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/tree/15f1ece08f7b498f4b9a2147c2a46e94416ca777#what-about-scoped-packages
+ format!("@types/{}", package_name.replace('/', "__"))
+}
+
+#[cfg(test)]
+mod test {
+ use super::types_package_name;
+
+ #[test]
+ fn test_types_package_name() {
+ assert_eq!(types_package_name("name"), "@types/name");
+ assert_eq!(
+ types_package_name("@scoped/package"),
+ "@types/@scoped__package"
+ );
+ }
+}