Skip to content

Commit f0ba88f

Browse files
committed
models/version: Use @cached decorator to expensive properties
1 parent 5518fb3 commit f0ba88f

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

app/models/version.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { alias } from '@ember/object/computed';
44

55
import { task } from 'ember-concurrency';
66
import semverParse from 'semver/functions/parse';
7+
import { cached } from 'tracked-toolbox';
78

89
import ajax from '../utils/ajax';
910

@@ -37,13 +38,13 @@ export default class Version extends Model {
3738
return Date.now() - this.created_at.getTime() < EIGHT_DAYS;
3839
}
3940

40-
get isFirst() {
41+
@cached get isFirst() {
4142
let { versions } = this.crate;
4243
let oldestVersion = versions.sortBy('created_at')[0];
4344
return oldestVersion === this;
4445
}
4546

46-
get semver() {
47+
@cached get semver() {
4748
return semverParse(this.num);
4849
}
4950

@@ -56,7 +57,7 @@ export default class Version extends Model {
5657
return `${semver.major}.${semver.major === 0 ? semver.minor : 'x'}`;
5758
}
5859

59-
get isHighestOfReleaseTrack() {
60+
@cached get isHighestOfReleaseTrack() {
6061
if (this.isPrerelease) {
6162
return false;
6263
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"fastboot-app-server": "3.0.0",
4646
"morgan": "1.10.0",
4747
"pretty-bytes": "5.5.0",
48-
"semver": "7.3.4"
48+
"semver": "7.3.4",
49+
"tracked-toolbox": "^1.2.1"
4950
},
5051
"devDependencies": {
5152
"@ember/optional-features": "2.0.0",

yarn.lock

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,7 +1481,7 @@
14811481
"@handlebars/parser" "^1.1.0"
14821482
simple-html-tokenizer "^0.5.10"
14831483

1484-
"@glimmer/tracking@1.0.3", "@glimmer/tracking@~1.0.3":
1484+
"@glimmer/tracking@1.0.3", "@glimmer/tracking@^1.0.0", "@glimmer/tracking@~1.0.3":
14851485
version "1.0.3"
14861486
resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.0.3.tgz#8b9b42aff6c206edeaaea178a95acc1eff62e61e"
14871487
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,
60626062
walk-sync "^0.3.3"
60636063
webpack "^4.43.0"
60646064

6065+
ember-cache-primitive-polyfill@^1.0.0:
6066+
version "1.0.1"
6067+
resolved "https://registry.yarnpkg.com/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz#a27075443bd87e5af286c1cd8a7df24e3b9f6715"
6068+
integrity sha512-hSPcvIKarA8wad2/b6jDd/eU+OtKmi6uP+iYQbzi5TQpjsqV6b4QdRqrLk7ClSRRKBAtdTuutx+m+X+WlEd2lw==
6069+
dependencies:
6070+
ember-cli-babel "^7.22.1"
6071+
ember-cli-version-checker "^5.1.1"
6072+
ember-compatibility-helpers "^1.2.1"
6073+
silent-error "^1.1.1"
6074+
60656075
ember-cli-app-version@4.0.0:
60666076
version "4.0.0"
60676077
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
60756085
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879"
60766086
integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==
60776087

6078-
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:
6088+
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:
60796089
version "7.23.1"
60806090
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.1.tgz#d1517228ede08a5d4b045c78a7429728e956b30b"
60816091
integrity sha512-qYggmt3hRs6QJ6cRkww3ahMpyP8IEV2KFrIRO/Z6hu9MkE/8Y28Xd5NjQl6fPV3oLoG0vwuHzhNe3Jr7Wec8zw==
@@ -14046,6 +14056,24 @@ tr46@^2.0.2:
1404614056
dependencies:
1404714057
punycode "^2.1.1"
1404814058

14059+
tracked-maps-and-sets@^2.0.0:
14060+
version "2.2.1"
14061+
resolved "https://registry.yarnpkg.com/tracked-maps-and-sets/-/tracked-maps-and-sets-2.2.1.tgz#323dd40540c561e8b0ffdec8bf129c68ec5025f9"
14062+
integrity sha512-XYrXh6L/GpGmVmG3KcN/qoDyi4FxHh8eZY/BA/RuoxynskV+GZSfwrX3R+5DR2CIkzkCx4zi4kkDRg1AMDfDhg==
14063+
dependencies:
14064+
"@glimmer/tracking" "^1.0.0"
14065+
ember-cli-babel "^7.17.2"
14066+
14067+
tracked-toolbox@^1.2.1:
14068+
version "1.2.1"
14069+
resolved "https://registry.yarnpkg.com/tracked-toolbox/-/tracked-toolbox-1.2.1.tgz#0750fbf76c80ff6ba7c583a7fd8cce4c60d9b846"
14070+
integrity sha512-SEAzpVDJNOf79IhztkUoYfwMA78pGs47k/35Dg23RCINdrnWNnXcCQAx6KOATsvyinqUJkzmTdNpwTgAbtSStg==
14071+
dependencies:
14072+
ember-cache-primitive-polyfill "^1.0.0"
14073+
ember-cli-babel "^7.21.0"
14074+
ember-cli-htmlbars "^4.2.0"
14075+
tracked-maps-and-sets "^2.0.0"
14076+
1404914077
tree-sync@^1.2.2:
1405014078
version "1.4.0"
1405114079
resolved "https://registry.yarnpkg.com/tree-sync/-/tree-sync-1.4.0.tgz#314598d13abaf752547d9335b8f95d9a137100d6"

0 commit comments

Comments
 (0)