@@ -38,30 +38,25 @@ export default class Crate extends Model {
3838 @hasMany ( 'dependency' , { async : true , inverse : null } ) reverse_dependencies ;
3939
4040 @cached get versionIdsBySemver ( ) {
41- let { last } = this . loadVersionsTask ;
42- assert ( '`loadVersionsTask.perform()` must be called before calling `versionIdsBySemver`' , last != null ) ;
43- let versions = last ?. value ?? [ ] ;
44- return versions
45- . slice ( )
41+ let versions = this . versionsObj . values ( ) ;
42+ return Array . from ( versions )
4643 . sort ( compareVersionBySemver )
4744 . map ( v => v . id ) ;
4845 }
4946
5047 @cached get versionIdsByDate ( ) {
51- let { last } = this . loadVersionsTask ;
52- assert ( '`loadVersionsTask.perform()` must be called before calling `versionIdsByDate`' , last != null ) ;
53- let versions = last ?. value ?? [ ] ;
54- return versions
55- . slice ( )
48+ let versions = this . versionsObj . values ( ) ;
49+ return Array . from ( versions )
5650 . sort ( compareVersionByDate )
5751 . map ( v => v . id ) ;
5852 }
5953
60- @cached get versionsObj ( ) {
61- let { last } = this . loadVersionsTask ;
62- assert ( '`loadVersionsTask.perform()` must be called before calling `versionsObj`' , last != null ) ;
63- let versions = last ?. value ?? [ ] ;
64- return Object . fromEntries ( versions . slice ( ) . map ( v => [ v . id , v ] ) ) ;
54+ /** @return {Map<number, import("../models/version").default> } */
55+ @cached
56+ get versionsObj ( ) {
57+ let versionsRef = this . hasMany ( 'versions' ) ;
58+ let values = versionsRef . value ( ) ;
59+ return new Map ( values ?. map ( ref => [ ref . id , ref ] ) ) ;
6560 }
6661
6762 /** @return {Map<string, import("../models/version").default> } */
@@ -76,7 +71,7 @@ export default class Crate extends Model {
7671 let map = new Map ( ) ;
7772 let { versionsObj : versions , versionIdsBySemver } = this ;
7873 for ( let id of versionIdsBySemver ) {
79- let { releaseTrack, isPrerelease, yanked } = versions [ id ] ;
74+ let { releaseTrack, isPrerelease, yanked } = versions . get ( id ) ;
8075 if ( releaseTrack && ! isPrerelease && ! yanked && ! map . has ( releaseTrack ) ) {
8176 map . set ( releaseTrack , id ) ;
8277 }
0 commit comments