Skip to content

Commit f7a0a40

Browse files
committed
mirage: Add default_version to crate serializer
1 parent 04cc94a commit f7a0a40

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

mirage/serializers/crate.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default BaseSerializer.extend({
1919
'id',
2020
'keywords',
2121
'links',
22+
'default_version',
2223
'newest_version',
2324
'name',
2425
'repository',
@@ -53,10 +54,17 @@ export default BaseSerializer.extend({
5354
_adjust(hash) {
5455
let versions = this.schema.versions.where({ crateId: hash.id });
5556
assert(`crate \`${hash.name}\` has no associated versions`, versions.length !== 0);
56-
versions = versions.filter(it => !it.yanked);
5757

58-
let versionNums = versions.models.map(it => it.num);
58+
let versionsByNum = Object.fromEntries(versions.models.map(it => [it.num, it]));
59+
let versionNums = Object.keys(versionsByNum);
5960
semverSort(versionNums, { loose: true });
61+
hash.default_version =
62+
versionNums.find(it => !prerelease(it, { loose: true }) && !versionsByNum[it].yanked) ??
63+
versionNums.find(it => !versionsByNum[it].yanked) ??
64+
versionNums[0];
65+
66+
versions = versions.filter(it => !it.yanked);
67+
versionNums = versionNums.filter(it => !versionsByNum[it].yanked);
6068
hash.max_version = versionNums[0] ?? '0.0.0';
6169
hash.max_stable_version = versionNums.find(it => !prerelease(it, { loose: true })) ?? null;
6270

tests/mirage/crates/get-by-id-test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module('Mirage | GET /api/v1/crates/:id', function (hooks) {
2727
badges: [],
2828
categories: [],
2929
created_at: '2010-06-16T21:30:45Z',
30+
default_version: '1.0.0-beta.1',
3031
description: 'This is the description for the crate called "rand"',
3132
documentation: null,
3233
downloads: 0,

tests/mirage/crates/list-test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ module('Mirage | GET /api/v1/crates', function (hooks) {
4444
badges: [],
4545
categories: [],
4646
created_at: '2010-06-16T21:30:45Z',
47+
default_version: '1.0.0',
4748
description: 'This is the description for the crate called "rand"',
4849
documentation: null,
4950
downloads: 0,

tests/mirage/summary-test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ module('Mirage | GET /api/v1/summary', function (hooks) {
4242
badges: [],
4343
categories: [],
4444
created_at: '2010-06-16T21:30:45Z',
45+
default_version: '1.0.0',
4546
description: 'This is the description for the crate called "crate-0"',
4647
documentation: null,
4748
downloads: 0,
@@ -69,6 +70,7 @@ module('Mirage | GET /api/v1/summary', function (hooks) {
6970
badges: [],
7071
categories: [],
7172
created_at: '2010-06-16T21:30:45Z',
73+
default_version: '1.0.4',
7274
description: 'This is the description for the crate called "crate-4"',
7375
documentation: null,
7476
downloads: 148_140,
@@ -96,6 +98,7 @@ module('Mirage | GET /api/v1/summary', function (hooks) {
9698
badges: [],
9799
categories: [],
98100
created_at: '2010-06-16T21:30:45Z',
101+
default_version: '1.0.0',
99102
description: 'This is the description for the crate called "crate-0"',
100103
documentation: null,
101104
downloads: 0,
@@ -123,6 +126,7 @@ module('Mirage | GET /api/v1/summary', function (hooks) {
123126
badges: [],
124127
categories: [],
125128
created_at: '2010-06-16T21:30:45Z',
129+
default_version: '1.0.0',
126130
description: 'This is the description for the crate called "crate-0"',
127131
documentation: null,
128132
downloads: 0,

0 commit comments

Comments
 (0)