Skip to content

Commit 5eae4f4

Browse files
committed
Merge remote-tracking branch 'upstream/master' into hide-graph-from-percy
2 parents 029d66c + 97ecbf3 commit 5eae4f4

File tree

12 files changed

+22534
-22336
lines changed

12 files changed

+22534
-22336
lines changed

mirage/fixtures/crates.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
/* eslint-disable quotes */
22
export default [
3+
{
4+
badges: [
5+
{
6+
badge_type: 'maintenance',
7+
attributes: {
8+
status: 'actively-developed',
9+
},
10+
},
11+
],
12+
created_at: '2014-11-23T09:01:21Z',
13+
description: 'A Kinetic protocol library written in Rust',
14+
documentation: 'https://icorderi.github.io/kinetic-rust/doc/kinetic/',
15+
downloads: 225,
16+
recent_downloads: 125,
17+
homepage: 'https://icorderi.github.io/icorderi/kinetic-rust',
18+
id: 'kinetic-rust',
19+
keywords: ['Protocol', 'Kinetic', 'Storage'],
20+
max_version: '0.0.16',
21+
name: 'kinetic-rust',
22+
repository: 'https://github.com/icorderi/kinetic-rust/',
23+
updated_at: '2015-04-21T00:15:49Z',
24+
versions: null,
25+
},
326
{
427
badges: [
528
{
@@ -201,29 +224,6 @@ export default [
201224
updated_at: '2015-11-11T00:10:43Z',
202225
versions: null,
203226
},
204-
{
205-
badges: [
206-
{
207-
badge_type: 'maintenance',
208-
attributes: {
209-
status: 'actively-developed',
210-
},
211-
},
212-
],
213-
created_at: '2014-11-23T09:01:21Z',
214-
description: 'A Kinetic protocol library written in Rust',
215-
documentation: 'https://icorderi.github.io/kinetic-rust/doc/kinetic/',
216-
downloads: 225,
217-
recent_downloads: 125,
218-
homepage: 'https://icorderi.github.io/icorderi/kinetic-rust',
219-
id: 'kinetic-rust',
220-
keywords: ['Protocol', 'Kinetic', 'Storage'],
221-
max_version: '0.0.16',
222-
name: 'kinetic-rust',
223-
repository: 'https://github.com/icorderi/kinetic-rust/',
224-
updated_at: '2015-04-21T00:15:49Z',
225-
versions: null,
226-
},
227227
{
228228
created_at: '2014-11-29T17:51:55Z',
229229
description: 'Rustless is a REST-like API micro-framework for Rust.',

package-lock.json

Lines changed: 22326 additions & 22213 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"broccoli-asset-rev": "^3.0.0",
3636
"ember-a11y-testing": "^2.0.0",
3737
"ember-auto-import": "^1.5.3",
38-
"ember-cli": "~3.14.0",
38+
"ember-cli": "~3.15.0",
3939
"ember-cli-app-version": "^3.1.3",
4040
"ember-cli-babel": "^7.13.2",
4141
"ember-cli-clipboard": "^0.9.0",
@@ -44,20 +44,19 @@
4444
"ember-cli-dependency-lint": "^1.1.3",
4545
"ember-cli-fastboot": "^2.2.1",
4646
"ember-cli-htmlbars": "^4.2.0",
47-
"ember-cli-htmlbars-inline-precompile": "^1.0.2",
4847
"ember-cli-inject-live-reload": "1.6.1",
4948
"ember-cli-meta-tags": "^5.3.0",
50-
"ember-cli-mirage": "^0.4.7",
49+
"ember-cli-mirage": "^1.1.6",
5150
"ember-cli-moment-shim": "^3.7.1",
5251
"ember-cli-sass": "^10.0.1",
5352
"ember-cli-sri": "2.1.1",
5453
"ember-cli-uglify": "^3.0.0",
5554
"ember-component-attributes": "^0.1.3",
5655
"ember-concurrency": "^1.1.3",
57-
"ember-data": "~2.18.2",
56+
"ember-data": "~3.15.0",
5857
"ember-disable-prototype-extensions": "^1.1.3",
5958
"ember-exam": "^4.0.9",
60-
"ember-export-application-global": "^2.0.0",
59+
"ember-export-application-global": "^2.0.1",
6160
"ember-fetch": "^7.0.0",
6261
"ember-keyboard": "^5.0.0",
6362
"ember-load-initializers": "^2.1.1",
@@ -68,26 +67,26 @@
6867
"ember-promise-helpers": "^1.0.9",
6968
"ember-qunit": "^4.6.0",
7069
"ember-resolver": "^7.0.0",
71-
"ember-router-scroll": "^0.4.0",
72-
"ember-source": "~3.1.0",
73-
"ember-svg-jar": "^1.1.1",
70+
"ember-router-scroll": "^1.3.3",
7471
"ember-template-lint": "^1.12.1",
75-
"ember-test-selectors": "^0.3.7",
72+
"ember-source": "~3.15.0",
73+
"ember-svg-jar": "^2.2.3",
74+
"ember-test-selectors": "^3.0.0",
7675
"ember-web-app": "^2.2.0",
7776
"emberx-select": "^3.1.1",
7877
"eslint": "^6.3.0",
7978
"eslint-config-prettier": "^6.7.0",
8079
"eslint-plugin-ember": "^7.7.2",
8180
"eslint-plugin-prettier": "^3.1.2",
8281
"faker": "^4.1.0",
83-
"loader.js": "^4.5.1",
84-
"normalize.css": "^7.0.0",
82+
"loader.js": "^4.7.0",
83+
"normalize.css": "^8.0.1",
8584
"nyc": "^14.1.1",
86-
"prettier": "^1.13.4",
85+
"prettier": "^1.19.1",
8786
"qunit-dom": "^0.9.2",
8887
"sass": "^1.23.0-module.beta.1",
8988
"semver": "^6.3.0",
90-
"timekeeper": "^2.1.0"
89+
"timekeeper": "^2.2.0"
9190
},
9291
"engines": {
9392
"node": "^12.9.1",

src/controllers/krate/metadata.rs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use crate::controllers::frontend_prelude::*;
88
use crate::models::{
99
Category, Crate, CrateCategory, CrateKeyword, CrateVersions, Keyword, RecentCrateDownloads,
10-
User, Version,
10+
User, Version, VersionOwnerAction,
1111
};
1212
use crate::schema::*;
1313
use crate::views::{
@@ -105,13 +105,26 @@ pub fn show(req: &mut dyn Request) -> AppResult<Response> {
105105
let conn = req.db_conn()?;
106106
let krate = Crate::by_name(name).first::<Crate>(&*conn)?;
107107

108-
let mut versions_and_publishers: Vec<(Version, Option<User>)> = krate
108+
let mut versions_and_publishers = krate
109109
.all_versions()
110110
.left_outer_join(users::table)
111111
.select((versions::all_columns, users::all_columns.nullable()))
112-
.load(&*conn)?;
112+
.load::<(Version, Option<User>)>(&*conn)?;
113113
versions_and_publishers.sort_by(|a, b| b.0.num.cmp(&a.0.num));
114-
let ids = versions_and_publishers.iter().map(|v| v.0.id).collect();
114+
let versions = versions_and_publishers
115+
.iter()
116+
.map(|(v, _)| v)
117+
.cloned()
118+
.collect::<Vec<_>>();
119+
let versions_publishers_and_audit_actions = versions_and_publishers
120+
.into_iter()
121+
.zip(VersionOwnerAction::for_versions(&conn, &versions)?.into_iter())
122+
.map(|((v, pb), aas)| (v, pb, aas))
123+
.collect::<Vec<_>>();
124+
let ids = versions_publishers_and_audit_actions
125+
.iter()
126+
.map(|v| v.0.id)
127+
.collect();
115128

116129
let kws = CrateKeyword::belonging_to(&krate)
117130
.inner_join(keywords::table)
@@ -149,9 +162,9 @@ pub fn show(req: &mut dyn Request) -> AppResult<Response> {
149162
false,
150163
recent_downloads,
151164
),
152-
versions: versions_and_publishers
165+
versions: versions_publishers_and_audit_actions
153166
.into_iter()
154-
.map(|(v, pb)| v.encodable(&krate.name, pb))
167+
.map(|(v, pb, aas)| v.encodable(&krate.name, pb, aas))
155168
.collect(),
156169
keywords: kws.into_iter().map(Keyword::encodable).collect(),
157170
categories: cats.into_iter().map(Category::encodable).collect(),
@@ -193,9 +206,15 @@ pub fn versions(req: &mut dyn Request) -> AppResult<Response> {
193206
.select((versions::all_columns, users::all_columns.nullable()))
194207
.load(&*conn)?;
195208
versions_and_publishers.sort_by(|a, b| b.0.num.cmp(&a.0.num));
209+
let versions = versions_and_publishers
210+
.iter()
211+
.map(|(v, _)| v)
212+
.cloned()
213+
.collect::<Vec<_>>();
196214
let versions = versions_and_publishers
197215
.into_iter()
198-
.map(|(v, pb)| v.encodable(crate_name, pb))
216+
.zip(VersionOwnerAction::for_versions(&conn, &versions)?.into_iter())
217+
.map(|((v, pb), aas)| v.encodable(crate_name, pb, aas))
199218
.collect();
200219

201220
#[derive(Serialize)]
@@ -220,7 +239,7 @@ pub fn reverse_dependencies(req: &mut dyn Request) -> AppResult<Response> {
220239

221240
let version_ids: Vec<i32> = rev_deps.iter().map(|dep| dep.version_id).collect();
222241

223-
let versions = versions::table
242+
let versions_and_publishers = versions::table
224243
.filter(versions::id.eq(any(version_ids)))
225244
.inner_join(crates::table)
226245
.left_outer_join(users::table)
@@ -229,9 +248,18 @@ pub fn reverse_dependencies(req: &mut dyn Request) -> AppResult<Response> {
229248
crates::name,
230249
users::all_columns.nullable(),
231250
))
232-
.load::<(Version, String, Option<User>)>(&*conn)?
251+
.load::<(Version, String, Option<User>)>(&*conn)?;
252+
let versions = versions_and_publishers
253+
.iter()
254+
.map(|(v, _, _)| v)
255+
.cloned()
256+
.collect::<Vec<_>>();
257+
let versions = versions_and_publishers
233258
.into_iter()
234-
.map(|(version, krate_name, user)| version.encodable(&krate_name, user))
259+
.zip(VersionOwnerAction::for_versions(&conn, &versions)?.into_iter())
260+
.map(|((version, krate_name, published_by), actions)| {
261+
version.encodable(&krate_name, published_by, actions)
262+
})
235263
.collect();
236264

237265
#[derive(Serialize)]

src/controllers/user/me.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ use crate::controllers::helpers::*;
66
use crate::email;
77
use crate::util::errors::AppError;
88

9-
use crate::models::{CrateOwner, Email, Follow, NewEmail, OwnerKind, User, Version};
9+
use crate::models::{
10+
CrateOwner, Email, Follow, NewEmail, OwnerKind, User, Version, VersionOwnerAction,
11+
};
1012
use crate::schema::{crate_owners, crates, emails, follows, users, versions};
1113
use crate::views::{EncodableMe, EncodableVersion, OwnedCrate};
1214

@@ -79,12 +81,19 @@ pub fn updates(req: &mut dyn Request) -> AppResult<Response> {
7981
))
8082
.paginate(&req.query())?
8183
.load::<(Version, String, Option<User>)>(&*conn)?;
82-
8384
let more = data.next_page_params().is_some();
85+
let versions = data.iter().map(|(v, _, _)| v).cloned().collect::<Vec<_>>();
86+
let data = data
87+
.into_iter()
88+
.zip(VersionOwnerAction::for_versions(&conn, &versions)?.into_iter())
89+
.map(|((v, cn, pb), voas)| (v, cn, pb, voas))
90+
.collect::<Vec<_>>();
8491

8592
let versions = data
8693
.into_iter()
87-
.map(|(version, crate_name, published_by)| version.encodable(&crate_name, published_by))
94+
.map(|(version, crate_name, published_by, actions)| {
95+
version.encodable(&crate_name, published_by, actions)
96+
})
8897
.collect();
8998

9099
#[derive(Serialize)]
@@ -233,7 +242,7 @@ pub fn update_email_notifications(req: &mut dyn Request) -> AppResult<Response>
233242
let user = req.user()?;
234243
let conn = req.db_conn()?;
235244

236-
// Build inserts from existing crates beloning to the current user
245+
// Build inserts from existing crates belonging to the current user
237246
let to_insert = CrateOwner::by_owner_kind(OwnerKind::User)
238247
.filter(owner_id.eq(user.id))
239248
.select((crate_id, owner_id, owner_kind, email_notifications))

src/controllers/version/deprecated.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
88
use crate::controllers::frontend_prelude::*;
99

10-
use crate::models::{Crate, User, Version};
10+
use crate::models::{Crate, User, Version, VersionOwnerAction};
1111
use crate::schema::*;
1212
use crate::views::EncodableVersion;
1313

@@ -22,7 +22,7 @@ pub fn index(req: &mut dyn Request) -> AppResult<Response> {
2222
.filter_map(|(ref a, ref b)| if *a == "ids[]" { b.parse().ok() } else { None })
2323
.collect::<Vec<i32>>();
2424

25-
let versions = versions::table
25+
let versions_and_publishers = versions::table
2626
.inner_join(crates::table)
2727
.left_outer_join(users::table)
2828
.select((
@@ -31,9 +31,18 @@ pub fn index(req: &mut dyn Request) -> AppResult<Response> {
3131
users::all_columns.nullable(),
3232
))
3333
.filter(versions::id.eq(any(ids)))
34-
.load::<(Version, String, Option<User>)>(&*conn)?
34+
.load::<(Version, String, Option<User>)>(&*conn)?;
35+
let versions = versions_and_publishers
36+
.iter()
37+
.map(|(v, _, _)| v)
38+
.cloned()
39+
.collect::<Vec<_>>();
40+
let versions = versions_and_publishers
3541
.into_iter()
36-
.map(|(version, crate_name, published_by)| version.encodable(&crate_name, published_by))
42+
.zip(VersionOwnerAction::for_versions(&conn, &versions)?.into_iter())
43+
.map(|((version, crate_name, published_by), actions)| {
44+
version.encodable(&crate_name, published_by, actions)
45+
})
3746
.collect();
3847

3948
#[derive(Serialize)]
@@ -60,12 +69,13 @@ pub fn show_by_id(req: &mut dyn Request) -> AppResult<Response> {
6069
users::all_columns.nullable(),
6170
))
6271
.first(&*conn)?;
72+
let audit_actions = VersionOwnerAction::by_version(&conn, &version)?;
6373

6474
#[derive(Serialize)]
6575
struct R {
6676
version: EncodableVersion,
6777
}
6878
Ok(req.json(&R {
69-
version: version.encodable(&krate.name, published_by),
79+
version: version.encodable(&krate.name, published_by, audit_actions),
7080
}))
7181
}

src/controllers/version/metadata.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
77
use crate::controllers::frontend_prelude::*;
88

9+
use crate::models::VersionOwnerAction;
910
use crate::schema::*;
1011
use crate::views::{EncodableDependency, EncodablePublicUser, EncodableVersion};
1112

@@ -70,12 +71,13 @@ pub fn show(req: &mut dyn Request) -> AppResult<Response> {
7071
let (version, krate) = version_and_crate(req)?;
7172
let conn = req.db_conn()?;
7273
let published_by = version.published_by(&conn);
74+
let actions = VersionOwnerAction::by_version(&conn, &version)?;
7375

7476
#[derive(Serialize)]
7577
struct R {
7678
version: EncodableVersion,
7779
}
7880
Ok(req.json(&R {
79-
version: version.encodable(&krate.name, published_by),
81+
version: version.encodable(&krate.name, published_by, actions),
8082
}))
8183
}

0 commit comments

Comments
 (0)