Skip to content

Commit 360965b

Browse files
committed
models/version: Use @cached decorator to expensive properties
1 parent 2b179f7 commit 360965b

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==
@@ -6060,6 +6060,16 @@ ember-auto-import@1.10.1, ember-auto-import@^1.10.0, ember-auto-import@^1.10.1,
60606060
walk-sync "^0.3.3"
60616061
webpack "^4.43.0"
60626062

6063+
ember-cache-primitive-polyfill@^1.0.0:
6064+
version "1.0.1"
6065+
resolved "https://registry.yarnpkg.com/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz#a27075443bd87e5af286c1cd8a7df24e3b9f6715"
6066+
integrity sha512-hSPcvIKarA8wad2/b6jDd/eU+OtKmi6uP+iYQbzi5TQpjsqV6b4QdRqrLk7ClSRRKBAtdTuutx+m+X+WlEd2lw==
6067+
dependencies:
6068+
ember-cli-babel "^7.22.1"
6069+
ember-cli-version-checker "^5.1.1"
6070+
ember-compatibility-helpers "^1.2.1"
6071+
silent-error "^1.1.1"
6072+
60636073
ember-cli-app-version@4.0.0:
60646074
version "4.0.0"
60656075
resolved "https://registry.yarnpkg.com/ember-cli-app-version/-/ember-cli-app-version-4.0.0.tgz#033057ec5fe4d3ecdf5ac5380d442e2dc9f7526a"
@@ -6073,7 +6083,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em
60736083
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879"
60746084
integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==
60756085

6076-
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:
6086+
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:
60776087
version "7.23.1"
60786088
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.1.tgz#d1517228ede08a5d4b045c78a7429728e956b30b"
60796089
integrity sha512-qYggmt3hRs6QJ6cRkww3ahMpyP8IEV2KFrIRO/Z6hu9MkE/8Y28Xd5NjQl6fPV3oLoG0vwuHzhNe3Jr7Wec8zw==
@@ -14044,6 +14054,24 @@ tr46@^2.0.2:
1404414054
dependencies:
1404514055
punycode "^2.1.1"
1404614056

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

0 commit comments

Comments
 (0)