diff --git a/app/models/version.js b/app/models/version.js index ef354dfc142..7a6a7857b74 100644 --- a/app/models/version.js +++ b/app/models/version.js @@ -4,6 +4,7 @@ import { alias } from '@ember/object/computed'; import { task } from 'ember-concurrency'; import semverParse from 'semver/functions/parse'; +import { cached } from 'tracked-toolbox'; import ajax from '../utils/ajax'; @@ -37,13 +38,13 @@ export default class Version extends Model { return Date.now() - this.created_at.getTime() < EIGHT_DAYS; } - get isFirst() { + @cached get isFirst() { let { versions } = this.crate; let oldestVersion = versions.sortBy('created_at')[0]; return oldestVersion === this; } - get semver() { + @cached get semver() { return semverParse(this.num); } @@ -56,7 +57,7 @@ export default class Version extends Model { return `${semver.major}.${semver.major === 0 ? semver.minor : 'x'}`; } - get isHighestOfReleaseTrack() { + @cached get isHighestOfReleaseTrack() { if (this.isPrerelease) { return false; } diff --git a/package.json b/package.json index e25054c6eb6..9db5e0623ca 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "fastboot-app-server": "3.0.0", "morgan": "1.10.0", "pretty-bytes": "5.5.0", - "semver": "7.3.4" + "semver": "7.3.4", + "tracked-toolbox": "^1.2.1" }, "devDependencies": { "@ember/optional-features": "2.0.0", diff --git a/yarn.lock b/yarn.lock index 036e5370fb7..7895b468be2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1481,7 +1481,7 @@ "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/tracking@1.0.3", "@glimmer/tracking@~1.0.3": +"@glimmer/tracking@1.0.3", "@glimmer/tracking@^1.0.0", "@glimmer/tracking@~1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.0.3.tgz#8b9b42aff6c206edeaaea178a95acc1eff62e61e" integrity sha512-21WR13vPdzt1IQ6JmPPAu4szjV9yKdmLHV3nD0MLDj6/EoYv1c2PqpFBBlp++6xW8OnyDa++cQ8OFoQDP+MRpA== @@ -6062,6 +6062,16 @@ ember-auto-import@1.10.1, ember-auto-import@^1.10.0, ember-auto-import@^1.10.1, walk-sync "^0.3.3" webpack "^4.43.0" +ember-cache-primitive-polyfill@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz#a27075443bd87e5af286c1cd8a7df24e3b9f6715" + integrity sha512-hSPcvIKarA8wad2/b6jDd/eU+OtKmi6uP+iYQbzi5TQpjsqV6b4QdRqrLk7ClSRRKBAtdTuutx+m+X+WlEd2lw== + dependencies: + ember-cli-babel "^7.22.1" + ember-cli-version-checker "^5.1.1" + ember-compatibility-helpers "^1.2.1" + silent-error "^1.1.1" + ember-cli-app-version@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ember-cli-app-version/-/ember-cli-app-version-4.0.0.tgz#033057ec5fe4d3ecdf5ac5380d442e2dc9f7526a" @@ -6075,7 +6085,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw== -ember-cli-babel@7.23.1, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: +ember-cli-babel@7.23.1, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: version "7.23.1" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.1.tgz#d1517228ede08a5d4b045c78a7429728e956b30b" integrity sha512-qYggmt3hRs6QJ6cRkww3ahMpyP8IEV2KFrIRO/Z6hu9MkE/8Y28Xd5NjQl6fPV3oLoG0vwuHzhNe3Jr7Wec8zw== @@ -14046,6 +14056,24 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" +tracked-maps-and-sets@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tracked-maps-and-sets/-/tracked-maps-and-sets-2.2.1.tgz#323dd40540c561e8b0ffdec8bf129c68ec5025f9" + integrity sha512-XYrXh6L/GpGmVmG3KcN/qoDyi4FxHh8eZY/BA/RuoxynskV+GZSfwrX3R+5DR2CIkzkCx4zi4kkDRg1AMDfDhg== + dependencies: + "@glimmer/tracking" "^1.0.0" + ember-cli-babel "^7.17.2" + +tracked-toolbox@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/tracked-toolbox/-/tracked-toolbox-1.2.1.tgz#0750fbf76c80ff6ba7c583a7fd8cce4c60d9b846" + integrity sha512-SEAzpVDJNOf79IhztkUoYfwMA78pGs47k/35Dg23RCINdrnWNnXcCQAx6KOATsvyinqUJkzmTdNpwTgAbtSStg== + dependencies: + ember-cache-primitive-polyfill "^1.0.0" + ember-cli-babel "^7.21.0" + ember-cli-htmlbars "^4.2.0" + tracked-maps-and-sets "^2.0.0" + tree-sync@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/tree-sync/-/tree-sync-1.4.0.tgz#314598d13abaf752547d9335b8f95d9a137100d6"