Skip to content

Commit 6cf4491

Browse files
authored
fix: support max package length of 58 (#913)
1 parent da68eb3 commit 6cf4491

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

api/src/ids.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,11 @@ pub enum ScopeNameValidateError {
145145
}
146146

147147
/// A package name, like 'foo' or 'bar'. The name is not prefixed with an @.
148-
/// The name must be at least 2 character long, and at most 32 characters long.
148+
/// The name must be at least 2 character long, and at most 58 characters long.
149149
/// The name must only contain alphanumeric characters and hyphens.
150150
/// The name must not start or end with a hyphen.
151+
///
152+
/// 1 (@) + 20 (scope name) + 1 (/) + 58 (package name) = 80
151153
#[derive(Clone, PartialEq, Eq, Hash)]
152154
pub struct PackageName(String);
153155

@@ -157,7 +159,7 @@ impl PackageName {
157159
return Err(PackageNameValidateError::TooShort);
158160
}
159161

160-
if name.len() > 32 {
162+
if name.len() > 58 {
161163
return Err(PackageNameValidateError::TooLong);
162164
}
163165

@@ -270,7 +272,7 @@ pub enum PackageNameValidateError {
270272
#[error("package name must be at least 2 characters long")]
271273
TooShort,
272274

273-
#[error("package name must be at most 32 characters long")]
275+
#[error("package name must be at most 58 characters long")]
274276
TooLong,
275277

276278
#[error("package name must contain only lowercase ascii alphanumeric characters and hyphens")]
@@ -897,9 +899,10 @@ mod tests {
897899
assert!(PackageName::try_from("f").is_err());
898900
assert!(PackageName::try_from("Foo").is_err());
899901
assert!(PackageName::try_from("oooF").is_err());
900-
assert!(
901-
PackageName::try_from("very-long-name-is-very-very-very-long").is_err()
902-
);
902+
assert!(PackageName::try_from(
903+
"very-long-name-is-very-very-very-very-very-very-very-very-long"
904+
)
905+
.is_err());
903906
assert!(PackageName::try_from("foo_bar").is_err());
904907
assert!(PackageName::try_from("-foo").is_err());
905908
assert!(PackageName::try_from("foo-").is_err());

frontend/docs/packages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ by an author to the JSR site. Scopes are similar to npm organizations or GitHub
1313
accounts. [Learn more about scopes.](/docs/scopes)
1414

1515
Packages have a name. Package names are unique within a scope - no two packages
16-
in the same scope can have the same name. Package names must be between 2 and 20
16+
in the same scope can have the same name. Package names must be between 2 and 58
1717
characters long, and can only contain lowercase letters, numbers, and hyphens.
1818
They cannot start with a hyphen.
1919

frontend/islands/new.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ export function PackageName(
243243
if (name.value.startsWith("@")) {
244244
return "Enter only the package name, do not include the scope.";
245245
}
246-
if (name.value.length > 32) {
247-
return "Package name cannot be longer than 32 characters.";
246+
if (name.value.length > 58) {
247+
return "Package name cannot be longer than 58 characters.";
248248
}
249249
if (!/^[a-z0-9\-]+$/.test(name.value)) {
250250
return "Package name can only contain lowercase letters, numbers, and hyphens.";

0 commit comments

Comments
 (0)