@@ -46,13 +46,11 @@ use deno_semver::VersionReq;
4646use deno_semver:: jsr:: JsrDepPackageReq ;
4747use deno_semver:: jsr:: JsrPackageNvReference ;
4848use deno_semver:: jsr:: JsrPackageReqReference ;
49- use deno_semver:: npm:: NpmPackageNvReference ;
5049use deno_semver:: npm:: NpmPackageReqReference ;
5150use deno_semver:: package:: PackageNv ;
5251use deno_semver:: package:: PackageNvReference ;
5352use deno_semver:: package:: PackageReq ;
5453use deno_semver:: package:: PackageReqReferenceParseError ;
55- use deno_semver:: package:: PackageSubPath ;
5654use futures:: FutureExt ;
5755use futures:: future:: LocalBoxFuture ;
5856use futures:: stream:: FuturesOrdered ;
@@ -1226,7 +1224,6 @@ impl Module {
12261224 Module :: Js ( module) => & module. specifier ,
12271225 Module :: Json ( module) => & module. specifier ,
12281226 Module :: Wasm ( module) => & module. specifier ,
1229- #[ allow( deprecated) ]
12301227 Module :: Npm ( module) => & module. specifier ,
12311228 Module :: Node ( module) => & module. specifier ,
12321229 Module :: External ( module) => & module. specifier ,
@@ -1343,25 +1340,16 @@ static EMPTY_DEPS: std::sync::OnceLock<IndexMap<String, Dependency>> =
13431340 std:: sync:: OnceLock :: new ( ) ;
13441341
13451342/// An npm package entrypoint.
1343+ ///
1344+ /// Note that deno_graph does NOT store the resolved version of npm specifiers.
1345+ /// That needs to be retreived from the npm snapshot, which is the single
1346+ /// source of truth on that matter.
13461347#[ derive( Debug , Clone , Serialize ) ]
13471348#[ serde( rename_all = "camelCase" ) ]
13481349pub struct NpmModule {
1349- // We need to change the NpmModule to instead only store an NpmReqReference
1350- // and then map the req reference through the npm snapshot instead (have a single
1351- // source of truth). This is necessary because deno_npm now does deduplication
1352- // and so it will update on the fly the req to nv mapping, but then these
1353- // properties in deno_graph won't get updated.
1354- #[ deprecated(
1355- since = "0.103.1" ,
1356- note = "Map the npm package req ref through the npm snapshot instead."
1357- ) ]
13581350 pub specifier : ModuleSpecifier ,
1359- #[ deprecated(
1360- since = "0.103.1" ,
1361- note = "Map the npm package req ref through the npm snapshot instead."
1362- ) ]
13631351 #[ serde( skip_serializing) ]
1364- pub nv_reference : NpmPackageNvReference ,
1352+ pub pkg_req_ref : NpmPackageReqReference ,
13651353}
13661354
13671355/// Represents a module which is not statically analyzed and is only available
@@ -2200,8 +2188,6 @@ pub struct ModuleGraph {
22002188 pub imports : IndexMap < ModuleSpecifier , GraphImport > ,
22012189 pub redirects : BTreeMap < ModuleSpecifier , ModuleSpecifier > ,
22022190 #[ serde( skip_serializing) ]
2203- pub npm_packages : IndexSet < PackageNv > ,
2204- #[ serde( skip_serializing) ]
22052191 pub has_node_specifier : bool ,
22062192 #[ serde( rename = "packages" ) ]
22072193 #[ serde( skip_serializing_if = "PackageSpecifiers::is_empty" ) ]
@@ -2220,7 +2206,6 @@ impl ModuleGraph {
22202206 module_slots : Default :: default ( ) ,
22212207 imports : Default :: default ( ) ,
22222208 redirects : Default :: default ( ) ,
2223- npm_packages : Default :: default ( ) ,
22242209 has_node_specifier : false ,
22252210 packages : Default :: default ( ) ,
22262211 npm_dep_graph_result : Ok ( ( ) ) ,
@@ -2417,7 +2402,6 @@ impl ModuleGraph {
24172402 }
24182403 new_graph. imports . clone_from ( & self . imports ) ;
24192404 new_graph. roots = roots. iter ( ) . map ( |r| ( * r) . to_owned ( ) ) . collect ( ) ;
2420- new_graph. npm_packages . clone_from ( & self . npm_packages ) ;
24212405 // todo(dsherret): it should be a bit smarter about this, but this is not terrible
24222406 new_graph. packages . clone_from ( & self . packages ) ;
24232407 new_graph. has_node_specifier = self . has_node_specifier ;
@@ -2437,7 +2421,6 @@ impl ModuleGraph {
24372421 let mut seen_pending =
24382422 SeenPendingCollection :: with_capacity ( specifiers_count) ;
24392423 seen_pending. extend ( self . roots . iter ( ) . cloned ( ) ) ;
2440- let mut found_nvs = HashSet :: with_capacity ( self . npm_packages . len ( ) ) ;
24412424 let mut has_node_specifier = false ;
24422425
24432426 let handle_dependencies =
@@ -2489,10 +2472,7 @@ impl ModuleGraph {
24892472 wasm_module. source_dts = Default :: default ( ) ;
24902473 handle_dependencies ( & mut seen_pending, & mut wasm_module. dependencies ) ;
24912474 }
2492- Module :: Npm ( module) => {
2493- #[ allow( deprecated) ]
2494- found_nvs. insert ( module. nv_reference . nv ( ) . clone ( ) ) ;
2495- }
2475+ Module :: Npm ( _) => { }
24962476 Module :: Node ( _) => {
24972477 has_node_specifier = true ;
24982478 }
@@ -2507,7 +2487,6 @@ impl ModuleGraph {
25072487 self
25082488 . module_slots
25092489 . retain ( |specifier, _| seen_pending. has_seen ( specifier) ) ;
2510- self . npm_packages . retain ( |nv| found_nvs. contains ( nv) ) ;
25112490 self
25122491 . redirects
25132492 . retain ( |redirect, _| seen_pending. has_seen ( redirect) ) ;
@@ -6344,7 +6323,6 @@ fn validate_jsr_specifier(
63446323/// Pending information to insert into the module graph once
63456324/// npm specifier resolution has been finalized.
63466325struct NpmSpecifierBuildPendingInfo {
6347- found_pkg_nvs : IndexSet < PackageNv > ,
63486326 module_slots : HashMap < ModuleSpecifier , ModuleSlot > ,
63496327 dependencies_resolution : Option < Result < ( ) , Arc < dyn JsErrorClass > > > ,
63506328 redirects : HashMap < ModuleSpecifier , ModuleSpecifier > ,
@@ -6353,7 +6331,6 @@ struct NpmSpecifierBuildPendingInfo {
63536331impl NpmSpecifierBuildPendingInfo {
63546332 pub fn with_capacity ( capacity : usize ) -> Self {
63556333 Self {
6356- found_pkg_nvs : IndexSet :: with_capacity ( capacity) ,
63576334 module_slots : HashMap :: with_capacity ( capacity) ,
63586335 dependencies_resolution : None ,
63596336 redirects : HashMap :: with_capacity ( capacity) ,
@@ -6451,11 +6428,10 @@ impl<'a> NpmSpecifierResolver<'a> {
64516428 let items = items_by_req. get ( & req) . unwrap ( ) ;
64526429 for item in items {
64536430 match & resolution {
6454- Ok ( pkg_nv ) => {
6455- self . add_nv_for_item (
6431+ Ok ( _ ) => {
6432+ self . add_req_ref_for_item (
64566433 item. specifier . clone ( ) ,
6457- pkg_nv. clone ( ) ,
6458- item. package_ref . sub_path ( ) . map ( PackageSubPath :: from_str) ,
6434+ item. package_ref . clone ( ) ,
64596435 ) ;
64606436 }
64616437 Err ( err) => {
@@ -6483,7 +6459,7 @@ impl<'a> NpmSpecifierResolver<'a> {
64836459 . await ;
64846460 assert_eq ! ( result. results. len( ) , 1 ) ;
64856461 match result. results . remove ( 0 ) {
6486- Ok ( pkg_nv ) => {
6462+ Ok ( _ ) => {
64876463 if let Err ( err) = result. dep_graph_result {
64886464 self . pending_info . module_slots . insert (
64896465 item. specifier . clone ( ) ,
@@ -6497,11 +6473,7 @@ impl<'a> NpmSpecifierResolver<'a> {
64976473 ) ,
64986474 ) ;
64996475 } else {
6500- self . add_nv_for_item (
6501- item. specifier ,
6502- pkg_nv,
6503- item. package_ref . into_inner ( ) . sub_path ,
6504- ) ;
6476+ self . add_req_ref_for_item ( item. specifier , item. package_ref ) ;
65056477 }
65066478 }
65076479 Err ( err) => {
@@ -6521,31 +6493,16 @@ impl<'a> NpmSpecifierResolver<'a> {
65216493 }
65226494 }
65236495
6524- fn add_nv_for_item (
6496+ fn add_req_ref_for_item (
65256497 & mut self ,
65266498 specifier : ModuleSpecifier ,
6527- pkg_nv : PackageNv ,
6528- sub_path : Option < SmallStackString > ,
6499+ pkg_req_ref : NpmPackageReqReference ,
65296500 ) {
6530- let pkg_id_ref = NpmPackageNvReference :: new ( PackageNvReference {
6531- nv : pkg_nv. clone ( ) ,
6532- sub_path,
6533- } ) ;
6534- let resolved_specifier = pkg_id_ref. as_specifier ( ) ;
6535- if resolved_specifier != specifier {
6536- self
6537- . pending_info
6538- . redirects
6539- . insert ( specifier. clone ( ) , resolved_specifier. clone ( ) ) ;
6540- }
6541- self . pending_info . found_pkg_nvs . insert ( pkg_nv) ;
65426501 self . pending_info . module_slots . insert (
6543- resolved_specifier . clone ( ) ,
6502+ specifier . clone ( ) ,
65446503 ModuleSlot :: Module ( Module :: Npm ( NpmModule {
6545- #[ allow( deprecated) ]
6546- specifier : resolved_specifier,
6547- #[ allow( deprecated) ]
6548- nv_reference : pkg_id_ref,
6504+ specifier,
6505+ pkg_req_ref,
65496506 } ) ) ,
65506507 ) ;
65516508 }
@@ -6563,7 +6520,6 @@ impl<'a> NpmSpecifierResolver<'a> {
65636520 graph. redirects . entry ( key) . or_insert ( value) ;
65646521 }
65656522
6566- graph. npm_packages . extend ( pending_info. found_pkg_nvs ) ;
65676523 if let Some ( result) = pending_info. dependencies_resolution {
65686524 graph. npm_dep_graph_result = result;
65696525 }
0 commit comments