@@ -1690,13 +1690,16 @@ export enum NodeResolutionFeatures {
16901690 // allowing `*` in the LHS of an export to be followed by more content, eg `"./whatever/*.js"`
16911691 // not supported in node 12 - https://github.com/nodejs/Release/issues/690
16921692 ExportsPatternTrailers = 1 << 4 ,
1693- AllFeatures = Imports | SelfName | Exports | ExportsPatternTrailers ,
1693+ // allowing `#/` root imports in package.json imports field
1694+ // not supported until mass adoption - https://github.com/nodejs/node/pull/60864
1695+ ImportsPatternRoot = 1 << 6 ,
1696+ AllFeatures = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot ,
16941697
16951698 Node16Default = Imports | SelfName | Exports | ExportsPatternTrailers ,
16961699
16971700 NodeNextDefault = AllFeatures ,
16981701
1699- BundlerDefault = Imports | SelfName | Exports | ExportsPatternTrailers ,
1702+ BundlerDefault = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot ,
17001703
17011704 EsmMode = 1 << 5 ,
17021705}
@@ -2646,7 +2649,7 @@ function loadModuleFromExports(scope: PackageJsonInfo, extensions: Extensions, s
26462649}
26472650
26482651function loadModuleFromImports ( extensions : Extensions , moduleName : string , directory : string , state : ModuleResolutionState , cache : ModuleResolutionCache | undefined , redirectedReference : ResolvedProjectReference | undefined ) : SearchResult < Resolved > {
2649- if ( moduleName === "#" ) {
2652+ if ( moduleName === "#" || ( startsWith ( moduleName , "#/" ) && ! ( state . features & NodeResolutionFeatures . ImportsPatternRoot ) ) ) {
26502653 if ( state . traceEnabled ) {
26512654 trace ( state . host , Diagnostics . Invalid_import_specifier_0_has_no_possible_resolutions , moduleName ) ;
26522655 }
0 commit comments