@@ -16,18 +16,27 @@ const bzlConfigPath = join(currentDir, '../../packages.bzl');
16
16
*
17
17
* `N.x.x` requires Angular `^N.0.0 || (N+1).0.0`
18
18
* `N.0.0-x` requires Angular `^N.0.0-0 || (N+1).0.0`
19
+ * `N.x.0-x` requires Angular `^N.0.0 || ^N.x.0-x || (N+1).0.0`
19
20
*
20
21
* The rationale is that we want to satisfy peer dependencies if we are publishing
21
22
* pre-releases for a major while Angular framework cuts pre-releases as well. e.g.
22
23
* Angular CDK v14.0.0-rc.1 should also work with `@angular/core@v14.0.0-rc.1`.
23
24
*/
24
25
export async function assertValidFrameworkPeerDependency ( newVersion : semver . SemVer ) {
25
26
const currentVersionRange = _extractAngularVersionPlaceholderOrThrow ( ) ;
26
- const isMajorWithPrerelease =
27
- newVersion . minor === 0 && newVersion . patch === 0 && ! ! newVersion . prerelease [ 0 ] ;
28
- const requiredRange = isMajorWithPrerelease
29
- ? `^${ newVersion . major } .0.0-0 || ^${ newVersion . major + 1 } .0.0`
30
- : `^${ newVersion . major } .0.0 || ^${ newVersion . major + 1 } .0.0` ;
27
+ const isMinor = newVersion . minor !== 0 ;
28
+ const isPrerelease = ! ! newVersion . prerelease [ 0 ] ;
29
+ let requiredRange : string ;
30
+
31
+ if ( isPrerelease ) {
32
+ requiredRange = isMinor
33
+ ? `^${ newVersion . major } .0.0 || ^${ newVersion . major } .${ newVersion . minor } .0-0 || ^${
34
+ newVersion . major + 1
35
+ } .0.0`
36
+ : `^${ newVersion . major } .0.0-0 || ^${ newVersion . major + 1 } .0.0` ;
37
+ } else {
38
+ requiredRange = `^${ newVersion . major } .0.0 || ^${ newVersion . major + 1 } .0.0` ;
39
+ }
31
40
32
41
if ( requiredRange !== currentVersionRange ) {
33
42
Log . error (
0 commit comments