@@ -17,6 +17,7 @@ use deno_package_json::PackageJsonRc;
17
17
use deno_semver:: package:: PackageNv ;
18
18
use deno_semver:: package:: PackageReq ;
19
19
use deno_semver:: RangeSetOrTag ;
20
+ use deno_semver:: Version ;
20
21
use deno_semver:: VersionReq ;
21
22
use discovery:: discover_workspace_config_files;
22
23
use discovery:: ConfigFileDiscovery ;
@@ -59,6 +60,7 @@ pub use resolver::CreateResolverOptions;
59
60
pub use resolver:: MappedResolution ;
60
61
pub use resolver:: MappedResolutionError ;
61
62
pub use resolver:: PackageJsonDepResolution ;
63
+ pub use resolver:: ResolverWorkspaceJsrPackage ;
62
64
pub use resolver:: SpecifiedImportMap ;
63
65
pub use resolver:: WorkspaceResolvePkgJsonFolderError ;
64
66
pub use resolver:: WorkspaceResolvePkgJsonFolderErrorKind ;
@@ -384,27 +386,46 @@ impl Workspace {
384
386
. filter_map ( |f| f. deno_json . as_ref ( ) )
385
387
}
386
388
389
+ pub fn resolver_jsr_pkgs (
390
+ & self ,
391
+ ) -> impl Iterator < Item = ResolverWorkspaceJsrPackage > + ' _ {
392
+ self . deno_jsons ( ) . filter_map ( |config_file| {
393
+ let name = config_file. json . name . as_ref ( ) ?;
394
+ let version = config_file
395
+ . json
396
+ . version
397
+ . as_ref ( )
398
+ . and_then ( |v| Version :: parse_standard ( v) . ok ( ) ) ;
399
+ let exports_config = config_file. to_exports_config ( ) . ok ( ) ?;
400
+ Some ( ResolverWorkspaceJsrPackage {
401
+ base : Url :: from_directory_path ( config_file. dir_path ( ) ) . unwrap ( ) ,
402
+ name : name. to_string ( ) ,
403
+ version,
404
+ exports : exports_config. into_map ( ) ,
405
+ } )
406
+ } )
407
+ }
408
+
387
409
pub fn package_jsons ( & self ) -> impl Iterator < Item = & PackageJsonRc > {
388
410
self
389
411
. config_folders
390
412
. values ( )
391
413
. filter_map ( |f| f. pkg_json . as_ref ( ) )
392
414
}
393
415
394
- pub fn jsr_packages ( self : & WorkspaceRc ) -> Vec < JsrPackageConfig > {
395
- self
396
- . deno_jsons ( )
397
- . filter_map ( |c| {
398
- if !c. is_package ( ) {
399
- return None ;
400
- }
401
- Some ( JsrPackageConfig {
402
- member_dir : self . resolve_member_dir ( & c. specifier ) ,
403
- name : c. json . name . clone ( ) ?,
404
- config_file : c. clone ( ) ,
405
- } )
416
+ pub fn jsr_packages < ' a > (
417
+ self : & ' a WorkspaceRc ,
418
+ ) -> impl Iterator < Item = JsrPackageConfig > + ' a {
419
+ self . deno_jsons ( ) . filter_map ( |c| {
420
+ if !c. is_package ( ) {
421
+ return None ;
422
+ }
423
+ Some ( JsrPackageConfig {
424
+ member_dir : self . resolve_member_dir ( & c. specifier ) ,
425
+ name : c. json . name . clone ( ) ?,
426
+ config_file : c. clone ( ) ,
406
427
} )
407
- . collect ( )
428
+ } )
408
429
}
409
430
410
431
pub fn npm_packages ( self : & WorkspaceRc ) -> Vec < NpmPackageConfig > {
@@ -1163,7 +1184,7 @@ impl WorkspaceDirectory {
1163
1184
}
1164
1185
}
1165
1186
if self . dir_url == self . workspace . root_dir {
1166
- self . workspace . jsr_packages ( )
1187
+ self . workspace . jsr_packages ( ) . collect ( )
1167
1188
} else {
1168
1189
// nothing to publish
1169
1190
Vec :: new ( )
0 commit comments