@@ -39,7 +39,6 @@ use crate::utils::digest::is_sri_pin;
3939use crate :: vendor:: lock_inventory:: { http_url, LockIntegrity , LockfileEntry } ;
4040use crate :: vendor:: path:: parse_vendor_path;
4141
42-
4342// ── entry model ──
4443
4544/// One `packages:` entry of a pnpm lock, read with the entry grammar
@@ -283,7 +282,10 @@ fn lock_versions(text: &str) -> impl Iterator<Item = (Option<u32>, u32)> + '_ {
283282 let value = rest. trim ( ) . trim_matches ( |c| c == '\'' || c == '"' ) ;
284283 let mut parts = value. split ( '.' ) ;
285284 let major = parts. next ( ) . and_then ( |m| m. parse :: < u32 > ( ) . ok ( ) ) ;
286- let minor = parts. next ( ) . and_then ( |m| m. parse :: < u32 > ( ) . ok ( ) ) . unwrap_or ( 0 ) ;
285+ let minor = parts
286+ . next ( )
287+ . and_then ( |m| m. parse :: < u32 > ( ) . ok ( ) )
288+ . unwrap_or ( 0 ) ;
287289 Some ( ( major, minor) )
288290 } )
289291}
@@ -303,7 +305,8 @@ pub fn lock_version_major(text: &str) -> Option<u32> {
303305/// rejects it): a `shrinkwrapVersion` lock (pnpm 1–2) or lockfileVersion
304306/// 5.0–5.2 (pnpm 3–5). Later locks never get the `--store` note.
305307pub fn may_need_store_flag ( text : & str ) -> bool {
306- text. lines ( ) . any ( |line| line. starts_with ( "shrinkwrapVersion:" ) )
308+ text. lines ( )
309+ . any ( |line| line. starts_with ( "shrinkwrapVersion:" ) )
307310 || lock_versions ( text) . any ( |( major, minor) | major == Some ( 5 ) && minor <= 2 )
308311}
309312
@@ -491,7 +494,9 @@ pub(crate) fn vendored_npm_uuids(text: &str) -> HashSet<String> {
491494 if !in_section {
492495 continue ;
493496 }
494- if let Some ( uuid) = lines:: parse_key_line ( line, 2 ) . and_then ( |( key, _, _) | vendored_npm_uuid ( key) ) {
497+ if let Some ( uuid) =
498+ lines:: parse_key_line ( line, 2 ) . and_then ( |( key, _, _) | vendored_npm_uuid ( key) )
499+ {
495500 out. insert ( uuid) ;
496501 }
497502 }
@@ -508,17 +513,52 @@ mod tests {
508513 fn resolves_reads_every_key_generation_boundary_anchored ( ) {
509514 let lock = |keys : & str | format ! ( "lockfileVersion: '9.0'\n \n packages:\n \n {keys}" ) ;
510515 let yes = [
511- ( " left-pad@1.3.0:\n resolution: {integrity: sha512-x}\n " , "left-pad" , "1.3.0" ) ,
512- ( " /left-pad@1.3.0:\n resolution: {}\n " , "left-pad" , "1.3.0" ) ,
513- ( " /left-pad/1.3.0:\n resolution: {}\n " , "left-pad" , "1.3.0" ) ,
514- ( " 'left-pad@1.3.0(react@18.0.0)':\n dev: false\n " , "left-pad" , "1.3.0" ) ,
515- ( " /left-pad/1.3.0_react@18.0.0:\n dev: false\n " , "left-pad" , "1.3.0" ) ,
516- ( " '@scope/name@1.0.0':\n dev: false\n " , "@scope/name" , "1.0.0" ) ,
517- ( " /@scope/name@1.0.0:\n dev: false\n " , "@scope/name" , "1.0.0" ) ,
518- ( " /@scope/name/1.0.0:\n dev: false\n " , "@scope/name" , "1.0.0" ) ,
516+ (
517+ " left-pad@1.3.0:\n resolution: {integrity: sha512-x}\n " ,
518+ "left-pad" ,
519+ "1.3.0" ,
520+ ) ,
521+ (
522+ " /left-pad@1.3.0:\n resolution: {}\n " ,
523+ "left-pad" ,
524+ "1.3.0" ,
525+ ) ,
526+ (
527+ " /left-pad/1.3.0:\n resolution: {}\n " ,
528+ "left-pad" ,
529+ "1.3.0" ,
530+ ) ,
531+ (
532+ " 'left-pad@1.3.0(react@18.0.0)':\n dev: false\n " ,
533+ "left-pad" ,
534+ "1.3.0" ,
535+ ) ,
536+ (
537+ " /left-pad/1.3.0_react@18.0.0:\n dev: false\n " ,
538+ "left-pad" ,
539+ "1.3.0" ,
540+ ) ,
541+ (
542+ " '@scope/name@1.0.0':\n dev: false\n " ,
543+ "@scope/name" ,
544+ "1.0.0" ,
545+ ) ,
546+ (
547+ " /@scope/name@1.0.0:\n dev: false\n " ,
548+ "@scope/name" ,
549+ "1.0.0" ,
550+ ) ,
551+ (
552+ " /@scope/name/1.0.0:\n dev: false\n " ,
553+ "@scope/name" ,
554+ "1.0.0" ,
555+ ) ,
519556 ] ;
520557 for ( keys, name, version) in yes {
521- assert ! ( PnpmLock :: parse( & lock( keys) ) . resolves( name, version) , "{keys}" ) ;
558+ assert ! (
559+ PnpmLock :: parse( & lock( keys) ) . resolves( name, version) ,
560+ "{keys}"
561+ ) ;
522562 }
523563 let no = [
524564 ( " left-pad@1.3.0-beta.1:\n dev: false\n " , "left-pad" , "1.3.0" ) ,
@@ -534,7 +574,10 @@ mod tests {
534574 ) ,
535575 ] ;
536576 for ( keys, name, version) in no {
537- assert ! ( !PnpmLock :: parse( & lock( keys) ) . resolves( name, version) , "{keys}" ) ;
577+ assert ! (
578+ !PnpmLock :: parse( & lock( keys) ) . resolves( name, version) ,
579+ "{keys}"
580+ ) ;
538581 }
539582 // Keys outside `packages:` (importers, overrides) resolve nothing.
540583 let importers = "lockfileVersion: '9.0'\n \n importers:\n \n left-pad@1.3.0:\n x: y\n " ;
@@ -557,7 +600,10 @@ mod tests {
557600 let other = "22222222-2222-4222-8222-222222222222" ;
558601 assert ! ( !PnpmLock :: parse( text) . vendored_in_use( other) ) ;
559602 let crlf = text. replace ( '\n' , "\r \n " ) ;
560- assert ! ( PnpmLock :: parse( & crlf) . vendored_in_use( UUID ) , "CRLF reads like LF" ) ;
603+ assert ! (
604+ PnpmLock :: parse( & crlf) . vendored_in_use( UUID ) ,
605+ "CRLF reads like LF"
606+ ) ;
561607 }
562608 // An overrides declaration alone is not usage.
563609 let overrides = format ! (
0 commit comments