diff --git a/.travis.yml b/.travis.yml
index 09e9427d4..dff195e0c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,4 +20,7 @@ install:
- ./node_modules/bower/bin/bower install --config.interactive=false
script:
-- yarn test
+ - yarn test:cover
+
+after_success:
+ - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
diff --git a/README.md b/README.md
index f0a3d4f35..d93e384c9 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,8 @@
`develop` Build Status: [![Build Status](https://travis-ci.org/CenterForOpenScience/ember-preprints.svg?branch=develop)](https://travis-ci.org/CenterForOpenScience/ember-preprints)
+[![Coverage Status](https://coveralls.io/repos/github/CenterForOpenScience/ember-preprints/badge.svg?branch=develop)](https://coveralls.io/github/CenterForOpenScience/ember-preprints?branch=develop)
+
This is the codebase for OSF preprints.
This guide will help you get started if you're interested.
diff --git a/app/components/preprint-form-authors.js b/app/components/preprint-form-authors.js
index ea77e62ca..ce81f9204 100644
--- a/app/components/preprint-form-authors.js
+++ b/app/components/preprint-form-authors.js
@@ -38,6 +38,7 @@ import Analytics from '../mixins/analytics';
export default CpPanelBodyComponent.extend(Analytics, {
valid: Ember.computed.alias('newContributorId'),
authorModification: false,
+ currentPage: 1,
// Permissions labels for dropdown
permissionOptions: permissionSelector,
parentContributorsAdded: false,
@@ -266,6 +267,20 @@ export default CpPanelBodyComponent.extend(Analytics, {
this.get('toast').error('Could not reorder contributors');
draggedContrib.rollbackAttributes();
});
+ },
+ // Action used by the pagination-pager component to the handle user-click event.
+ pageChanged(current) {
+ let query = this.get('query');
+ if (query) {
+ this.attrs.findContributors(query, current).then(() => {
+ this.set('addState', 'searchView');
+ this.set('currentPage', current);
+ })
+ .catch(() => {
+ this.get('toast').error('Could not perform search query.');
+ this.highlightSuccessOrFailure('author-search-box', this, 'error');
+ });
+ }
}
},
// TODO find alternative to jquery selectors. Temporary popover content for authors page.
diff --git a/app/components/search-result.js b/app/components/search-result.js
index 37381afa1..b9ff029cd 100644
--- a/app/components/search-result.js
+++ b/app/components/search-result.js
@@ -43,6 +43,18 @@ export default Ember.Component.extend(Analytics, {
return result.description.slice();
}),
+ justContributors: Ember.computed('result', function() {
+ return this.get('result.contributors').filter(item => !!item.users.bibliographic);
+ }),
+
+ shortContributorList: Ember.computed('justContributors', function() {
+ return this.get('justContributors').slice(0, Math.min(10, this.get('justContributors').length));
+ }),
+
+ hasMoreContributors: Ember.computed('justContributors', 'shortContributorList', function () {
+ return this.get('shortContributorList').length < this.get('justContributors').length;
+ }),
+
osfID: Ember.computed('result', function() {
let re = /osf.io\/(\w+)\/$/;
// NOTE / TODO : This will have to be removed later. Currently the only "true" preprints are solely from the OSF
diff --git a/app/components/supplementary-file-browser.js b/app/components/supplementary-file-browser.js
index c37cd346a..a921a90a3 100644
--- a/app/components/supplementary-file-browser.js
+++ b/app/components/supplementary-file-browser.js
@@ -1,6 +1,8 @@
import Ember from 'ember';
import loadAll from 'ember-osf/utils/load-relationship';
import Analytics from '../mixins/analytics';
+import fileDownloadPath from '../utils/file-download-path';
+
/**
* @module ember-preprints
* @submodule components
@@ -57,6 +59,10 @@ export default Ember.Component.extend(Analytics, {
});
}.observes('preprint'),
+ fileDownloadURL: Ember.computed('selectedFile', function() {
+ return fileDownloadPath(this.get('selectedFile'), this.get('node'));
+ }),
+
init() {
this._super(...arguments);
this.__files();
diff --git a/app/controllers/content.js b/app/controllers/content.js
index 6145e95f2..8c19707af 100644
--- a/app/controllers/content.js
+++ b/app/controllers/content.js
@@ -3,6 +3,7 @@ import loadAll from 'ember-osf/utils/load-relationship';
import config from 'ember-get-config';
import Analytics from '../mixins/analytics';
import permissions from 'ember-osf/const/permissions';
+import fileDownloadPath from '../utils/file-download-path';
/**
* Takes an object with query parameter name as the key and value, or [value, maxLength] as the values.
@@ -54,6 +55,7 @@ export default Ember.Controller.extend(Analytics, {
fullScreenMFR: false,
expandedAuthors: true,
showLicenseText: false,
+ fileDownloadURL: '',
expandedAbstract: false,
isAdmin: Ember.computed('node', function() {
// True if the current user has admin permissions for the node that contains the preprint
@@ -137,6 +139,12 @@ export default Ember.Controller.extend(Analytics, {
return text;
}),
+ _fileDownloadURL: Ember.observer('model.primaryFile', function() {
+ this.get('model.primaryFile').then(file => {
+ this.set('fileDownloadURL', fileDownloadPath(file, this.get('node')));
+ });
+ }),
+
useShortenedDescription: Ember.computed('node.description', function() {
return this.get('node.description') ? this.get('node.description').length > 350 : false;
}),
@@ -184,25 +192,20 @@ export default Ember.Controller.extend(Analytics, {
chooseFile(fileItem) {
this.set('activeFile', fileItem);
},
- shareLink(href, network, action) {
+ shareLink(href, category, action, label) {
const metrics = Ember.get(this, 'metrics');
- if (network.includes('email')) {
- metrics.trackEvent({
- category: 'link',
- action,
- label: `Preprints - Content - Email ${window.location.href}`
- });
- } else {
- window.open(href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=600,height=400');
- // TODO submit PR to ember-metrics for a trackSocial function for Google Analytics. For now, we'll use trackEvent.
- metrics.trackEvent({
- category: network,
- action,
- label: `Preprints - Content - ${window.location.href}`
- });
- }
+ // TODO submit PR to ember-metrics for a trackSocial function for Google Analytics. For now, we'll use trackEvent.
+ metrics.trackEvent({
+ category,
+ action,
+ label
+ });
+
+ if (label.includes('email'))
+ return;
+ window.open(href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=600,height=400');
return false;
}
},
diff --git a/app/controllers/discover.js b/app/controllers/discover.js
index 9a5c9e715..e22b102b4 100644
--- a/app/controllers/discover.js
+++ b/app/controllers/discover.js
@@ -50,7 +50,7 @@ export default Ember.Controller.extend(Analytics, {
subjectFilter: null,
queryBody: {},
providersPassed: false,
-
+ pageNumbers: [],
sortByOptions: ['Relevance', 'Upload date (oldest to newest)', 'Upload date (newest to oldest)'],
treeSubjects: Ember.computed('activeFilters', function() {
@@ -237,9 +237,21 @@ export default Ember.Controller.extend(Analytics, {
return this.set('results', results);
});
},
+ totalPages: Ember.computed('numberOfResults', 'size', function() {
+ return Math.ceil(this.get('numberOfResults') / this.get('size'));
+ }),
+
maxPages: Ember.computed('numberOfResults', function() {
return ((this.get('numberOfResults') / this.get('size')) | 0) + (this.get('numberOfResults') % 10 === 0 ? 0 : 1);
}),
+
+ // TODO update this property if a solution is found for the elastic search limitation.
+ // Ticket: SHARE-595
+ numPages: Ember.computed('size', 'totalPages', function() {
+ let maxPages = Math.ceil(10000 / this.get('size'));
+ return this.get('totalPages') < maxPages ? this.get('totalPages') : maxPages;
+ }),
+
getQueryBody() {
const facetFilters = this.get('activeFilters');
@@ -355,6 +367,11 @@ export default Ember.Controller.extend(Analytics, {
}
},
+ setLoadPage(pageNumber) {
+ this.set('page', pageNumber);
+ this.loadPage();
+ },
+
clearFilters() {
this._clearFilters();
@@ -399,5 +416,6 @@ export default Ember.Controller.extend(Analytics, {
label: `Preprints - Discover - ${filterType} ${item}`
});
},
+
},
});
diff --git a/app/controllers/index.js b/app/controllers/index.js
index e737d6c6a..a60baf6b2 100644
--- a/app/controllers/index.js
+++ b/app/controllers/index.js
@@ -60,4 +60,23 @@ export default Ember.Controller.extend(Analytics, {
this.set('currentDate', new Date());
},
+
+ actions: {
+ contactLink(href, category, action, label) {
+ const metrics = Ember.get(this, 'metrics');
+
+ // TODO submit PR to ember-metrics for a trackSocial function for Google Analytics. For now, we'll use trackEvent.
+ metrics.trackEvent({
+ category,
+ action,
+ label
+ });
+
+ if (label.includes('email'))
+ return;
+
+ window.open(href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=600,height=400');
+ return false;
+ }
+ }
});
diff --git a/app/controllers/submit.js b/app/controllers/submit.js
index 3a2b0d026..c5b6d6305 100644
--- a/app/controllers/submit.js
+++ b/app/controllers/submit.js
@@ -10,6 +10,8 @@ import TaggableMixin from 'ember-osf/mixins/taggable-mixin';
import loadAll from 'ember-osf/utils/load-relationship';
+import fixSpecialChar from 'ember-osf/utils/fix-special-char';
+
// Enum of available upload states > New project or existing project?
export const State = Object.freeze(Ember.Object.create({
START: 'start',
@@ -268,7 +270,11 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
basicsTags: Ember.computed('node', function() {
// Pending tags
let node = this.get('node');
- return node ? node.get('tags') : Ember.A();
+ let newTags = null;
+ if (node != null) {
+ newTags = node.get('tags').slice(0).map(fixSpecialChar);
+ }
+ return node ? newTags : Ember.A();
}),
tagsChanged: Ember.computed('basicsTags', 'node.tags', function() {
// Does the list of pending tags differ from the saved tags in the db?
@@ -276,7 +282,7 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
let nodeTags = this.get('node.tags');
let changed = false;
if (basicsTags && nodeTags) {
- changed = !(basicsTags.length === nodeTags.length && basicsTags.every((v, i)=> v === nodeTags[i]));
+ changed = !(basicsTags.length === nodeTags.length && basicsTags.every((v, i)=> fixSpecialChar(v) === fixSpecialChar(nodeTags[i])));
}
return changed;
}),
@@ -502,6 +508,7 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
});
let node = this.get('node');
this.set('basicsAbstract', this.get('node.description') || null);
+
if (node.get('title') !== this.get('nodeTitle')) {
let currentTitle = node.get('title');
node.set('title', this.get('nodeTitle'));
@@ -615,8 +622,10 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
let currentFile = this.get('store').peekRecord('file', this.get('model.primaryFile.id'));
this.set('file', null);
this.set('selectedFile', currentFile);
+
this.set('nodeTitle', this.get('node.title'));
this.set('titleValid', true);
+
},
clearDownstreamFields(section) {
//If user goes back and changes a section inside Upload, all fields downstream of that section need to clear.
@@ -658,7 +667,7 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
action: 'click',
label: `Preprints - ${this.get('editMode') ? 'Edit' : 'Submit'} - Discard Basics Changes`
});
- this.set('basicsTags', this.get('node.tags').slice(0));
+ this.set('basicsTags', this.get('node.tags').slice(0).map(fixSpecialChar));
this.set('basicsAbstract', this.get('node.description'));
this.set('basicsDOI', this.get('model.doi'));
let date = new Date();
@@ -779,6 +788,7 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
});
let tags = this.get('basicsTags').slice(0);
Ember.A(tags);
+
tags.pushObject(tag);
this.set('basicsTags', tags);
return tags;
@@ -801,7 +811,7 @@ export default Ember.Controller.extend(Analytics, BasicsValidations, NodeActions
/*
Discipline section
- */
+ */
setSubjects(subjects) {
// Sets subjectsList with pending subjects. Does not save.
this.toggleProperty('disciplineModifiedToggle'); // Need to observe if discipline in nested array has changed. Toggling this will force 'disciplineChanged' to be recalculated
diff --git a/app/mixins/setup-submit-controller.js b/app/mixins/setup-submit-controller.js
index bebbcf4b3..ea16273a4 100644
--- a/app/mixins/setup-submit-controller.js
+++ b/app/mixins/setup-submit-controller.js
@@ -13,6 +13,7 @@ import permissions from 'ember-osf/const/permissions';
*
* @class SetupSubmitControllerMixin
*/
+
export default Ember.Mixin.create({
theme: Ember.inject.service(),
panelActions: Ember.inject.service('panelActions'),
diff --git a/app/routes/content.js b/app/routes/content.js
index 915ca3875..65ab8e1fc 100644
--- a/app/routes/content.js
+++ b/app/routes/content.js
@@ -66,21 +66,24 @@ export default Ember.Route.extend(Analytics, ResetScrollMixin, SetupSubmitContro
return this._super(...arguments);
},
afterModel(preprint) {
- // Redirect if necessary
- preprint.get('provider')
+ const {origin, search} = window.location;
+ let contributors = Ember.A();
+
+ return preprint.get('provider')
.then(provider => {
const providerId = provider.get('id');
const themeId = this.get('theme.id');
const isOSF = providerId === 'osf';
- // If we're on the proper branded site, stay there.
+ // If we're on the proper branded site, stay here.
if ((!themeId && isOSF) || themeId === providerId)
- return;
+ return Promise.all([
+ provider,
+ preprint.get('node')
+ ]);
- // Otherwise, redirect to the branded page
+ // Otherwise, redirect to the proper branded site.
// Hard redirect instead of transition, in anticipation of Phase 2 where providers will have their own domains.
- const {origin, search} = window.location;
-
const urlParts = [
origin
];
@@ -94,74 +97,151 @@ export default Ember.Route.extend(Analytics, ResetScrollMixin, SetupSubmitContro
window.history.replaceState({}, document.title, url);
window.location.replace(url);
- });
- return preprint.get('node').then(node => {
- this.set('node', node);
+ return Promise.reject();
+ })
+ .then(([provider, node]) => {
+ this.set('node', node);
+
+ if (this.get('editMode')) {
+ const userPermissions = this.get('node.currentUserPermissions') || [];
- if (this.get('editMode')) {
- let userPermissions = this.get('node.currentUserPermissions') || [];
- if (userPermissions.indexOf(permissions.ADMIN) === -1) {
- this.replaceWith('forbidden'); // Non-admin trying to access edit form.
+ if (!userPermissions.includes(permissions.ADMIN)) {
+ this.replaceWith('forbidden'); // Non-admin trying to access edit form.
+ }
}
- }
- const {origin} = window.location;
- const image = this.get('theme.logoSharing');
- const imageUrl = `${origin.replace(/^https/, 'http')}${image.path}`;
-
- const ogp = [
- ['fb:app_id', config.FB_APP_ID],
- ['og:title', node.get('title')],
- ['og:image', imageUrl],
- ['og:image:secure_url', `${origin}${image.path}`], // We should always be on https in staging/prod
- ['og:image:width', image.width.toString()],
- ['og:image:height', image.height.toString()],
- ['og:image:type', image.type],
- ['og:url', window.location.href],
- ['og:description', node.get('description')],
- ['og:site_name', this.get('theme.provider.name')],
- ['og:type', 'article'],
- ['article:published_time', new Date(preprint.get('datePublished') || null).toISOString()]
- ];
-
- const modified = preprint.get('dateModified') || preprint.get('datePublished') || null;
-
- if (modified)
- ogp.push(['article:modified_time', new Date(modified).toISOString()]);
-
- const tags = [
- ...preprint.get('subjects').map(subjectBlock => subjectBlock.map(subject => subject.text)),
- ...node.get('tags')
- ];
-
- for (const tag of tags)
- ogp.push(['article:tag', tag]);
-
- let contributors = Ember.A();
-
- loadAll(node, 'contributors', contributors).then(() => {
- contributors.forEach(contributor => {
- ogp.push(
+ return Promise.all([
+ provider,
+ node,
+ preprint.get('license'),
+ preprint.get('primaryFile'),
+ loadAll(node, 'contributors', contributors)
+ ]);
+ })
+ .then(([provider, node, license, primaryFile]) => {
+ const title = node.get('title');
+ const description = node.get('description');
+ const doi = preprint.get('doi');
+ const image = this.get('theme.logoSharing');
+ const imageUrl = `${origin.replace(/^https/, 'http')}${image.path}`;
+ const dateCreated = new Date(preprint.get('dateCreated') || null);
+ const dateModified = new Date(preprint.get('dateModified') || dateCreated);
+ if (!preprint.get('datePublished'))
+ preprint.set('datePublished', dateCreated);
+ const providerName = provider.get('name');
+ const canonicalUrl = preprint.get('links.html');
+
+ // NOTE: Ordering of meta tags matters for scrapers (Facebook, LinkedIn, Google, etc)
+
+ // Open Graph Protocol
+ const openGraph = [
+ ['fb:app_id', config.FB_APP_ID],
+ ['og:title', title],
+ ['og:image', imageUrl],
+ ['og:image:secure_url', `${origin}${image.path}`], // We should always be on https in staging/prod
+ ['og:image:width', image.width.toString()],
+ ['og:image:height', image.height.toString()],
+ ['og:image:type', image.type],
+ ['og:url', canonicalUrl],
+ ['og:description', description],
+ ['og:site_name', providerName],
+ ['og:type', 'article'],
+ ['article:published_time', dateCreated.toISOString()],
+ ['article:modified_time', dateModified.toISOString()]
+ ];
+
+ // Highwire Press
+ const highwirePress = [
+ ['citation_title', title],
+ ['citation_description', description],
+ ['citation_public_url', canonicalUrl],
+ ['citation_publication_date', `${dateCreated.getFullYear()}/${dateCreated.getMonth() + 1}/${dateCreated.getDate()}`],
+ ['citation_doi', doi]
+ ];
+
+ // TODO map Eprints fields
+ // Eprints
+ const eprints = [];
+
+ // TODO map BE Press fields
+ // BE Press
+ const bePress = [];
+
+ // TODO map PRISM fields
+ // PRISM
+ const prism = [];
+
+ // Dublin Core
+ const dublinCore = [
+ ['dc.title', title],
+ ['dc.abstract', description],
+ ['dc.identifier', canonicalUrl],
+ ['dc.identifier', doi]
+ ];
+
+ const tags = [
+ ...preprint.get('subjects').map(subjectBlock => subjectBlock.map(subject => subject.text)),
+ ...node.get('tags')
+ ];
+
+ for (const tag of tags) {
+ openGraph.push(['article:tag', tag]);
+ highwirePress.push(['citation_keywords', tag]);
+ dublinCore.push(['dc.subject', tag]);
+ }
+
+ for (const contributor of contributors) {
+ const givenName = contributor.get('users.givenName');
+ const familyName = contributor.get('users.familyName');
+ const fullName = contributor.get('users.fullName');
+
+ openGraph.push(
['og:type', 'article:author'],
- ['profile:first_name', contributor.get('users.givenName')],
- ['profile:last_name', contributor.get('users.familyName')]
+ ['profile:first_name', givenName],
+ ['profile:last_name', familyName]
);
- });
+ highwirePress.push(['citation_author', fullName]);
+ dublinCore.push(['dc.creator', fullName]);
+ }
- this.set('headTags', ogp.map(item => (
- {
+ highwirePress.push(['citation_publisher', providerName]);
+ if (license) {
+ dublinCore.push(
+ ['dc.publisher', providerName],
+ ['dc.license', license.get('name')]
+ );
+ } else {
+ dublinCore.push(
+ ['dc.publisher', providerName],
+ ['dc.license', 'No licence']
+ );
+ }
+ if (/\.pdf$/.test(primaryFile.get('name'))) {
+ highwirePress.push(['citation_pdf_url', primaryFile.get('links').download]);
+ }
+
+ const headTags = [
+ openGraph,
+ highwirePress,
+ eprints,
+ bePress,
+ prism,
+ dublinCore
+ ]
+ .reduce((a, b) => a.concat(b), [])
+ .filter(item => item[1]) // Don't show tags with no content
+ .map(item => ({
type: 'meta',
attrs: {
property: item[0],
content: item[1]
}
- }
- )));
+ }));
+ this.set('headTags', headTags);
this.get('headTagsService').collectHeadTags();
});
- });
},
actions: {
error(error) {
diff --git a/app/styles/app.scss b/app/styles/app.scss
index 8595e43cf..9980d2da1 100644
--- a/app/styles/app.scss
+++ b/app/styles/app.scss
@@ -200,6 +200,13 @@ $logo-dir: 'img/provider_logos/';
background-image: url($logo-dir + 'psyarxiv-dark-small.png');
}
+.provider-bitss {
+ background-image: url($logo-dir + 'bitss-small.png');
+}
+.provider-bitss-dark {
+ background-image: url($logo-dir + 'bitss-dark-small.png');
+}
+
.provider-agrixiv {
background-image: url($logo-dir + 'agrixiv-small.svg');
}
@@ -213,7 +220,7 @@ $logo-dir: 'img/provider_logos/';
}
.provider-scielo-dark {
- background-image: url($logo-dir + 'scielo-banner.png');
+ background-image: url($logo-dir + 'scielo-dark-small.png');
}
.preprint-advisory {
@@ -331,7 +338,7 @@ ul.preprints-block-list {
padding-top: 90px;
}
.view-authors {
- color: #337ab7;
+ color: white;
a {
color: #6dd1de;
}
diff --git a/app/styles/brands/bitss.scss b/app/styles/brands/bitss.scss
new file mode 100644
index 000000000..8e4b0dde3
--- /dev/null
+++ b/app/styles/brands/bitss.scss
@@ -0,0 +1,37 @@
+@import 'brand';
+
+@include brand(
+ #e4f3ff,
+ black,
+ #1C4063,
+ #05233B,
+ black,
+ $logo-dir + 'bitss-banner.png',
+ $logo-dir + 'bitss-logo.png',
+ false,
+ true,
+ true
+);
+
+.navbar-title, .subject-item .btn, .subject-filter {
+ color: white;
+}
+
+.branded-nav {
+ a {
+ color: white;
+ }
+ a.active {
+ color: white !important;
+ }
+}
+
+.subject-item .btn:hover {
+ color: black;
+}
+
+#preprint-form-subjects .subject, #preprint-form-subjects .subject > .fa,
+#preprint-form-subjects ul li.selected:not(:hover),
+#preprint-form-subjects ul li:active {
+ color: white;
+}
diff --git a/app/styles/brands/scielo.scss b/app/styles/brands/scielo.scss
index 161fa2587..baa9295ca 100644
--- a/app/styles/brands/scielo.scss
+++ b/app/styles/brands/scielo.scss
@@ -8,7 +8,7 @@
white,
$logo-dir + 'scielo-banner.png',
$logo-dir + 'scielo-logo.png',
- true,
+ false,
false,
true
);
diff --git a/app/templates/components/confirm-share-preprint.hbs b/app/templates/components/confirm-share-preprint.hbs
index e13ab6bcb..d85e3dbfd 100644
--- a/app/templates/components/confirm-share-preprint.hbs
+++ b/app/templates/components/confirm-share-preprint.hbs
@@ -9,7 +9,7 @@
{{#bs-modal-footer}}
-
+
{{/bs-modal-footer}}
{{/bs-modal}}
diff --git a/app/templates/components/preprint-form-authors.hbs b/app/templates/components/preprint-form-authors.hbs
index 3dc683fec..42f3a498f 100644
--- a/app/templates/components/preprint-form-authors.hbs
+++ b/app/templates/components/preprint-form-authors.hbs
@@ -23,7 +23,7 @@
- {{result.fullName}}
+ {{result.fullName}}
{{#if (eq currentUser result)}}
{{t "components.preprint-form-authors.yourself"}}
{{/if}}
@@ -46,7 +46,9 @@
{{t "global.no_results_found"}}
{{/if}}
{{#if (gt pages 1)}}
- {{osf-paginator totalSearchResults=totalSearchResults fetchResults=(action findContributors) query=query}}
+
+ {{pagination-pager count=pages current=currentPage change=(action 'pageChanged')}}
+
{{/if}}
{{/if}}
{{#if (eq addState 'unregisteredView')}}
@@ -121,7 +123,7 @@
{{#if contrib.unregisteredContributor}}
{{contrib.unregisteredContributor}}
{{else}}
- {{contrib.users.fullName}}
+ {{contrib.users.fullName}}
{{/if}}
{{#if (and (permissionToRemoveContributor contrib currentUser isAdmin node) (conditionsForContribRemoval contrib contributors authorModification))}}
@@ -138,7 +140,7 @@
{{#if contrib.unregisteredContributor}}
{{contrib.unregisteredContributor}}
{{else}}
- {{contrib.users.fullName}}
+ {{contrib.users.fullName}}
{{/if}}
|
diff --git a/app/templates/components/preprint-form-header.hbs b/app/templates/components/preprint-form-header.hbs
index 7134f02fe..309b61dd6 100644
--- a/app/templates/components/preprint-form-header.hbs
+++ b/app/templates/components/preprint-form-header.hbs
@@ -44,7 +44,7 @@
{{#if tags}}
{{#each tags as |tag|~}}
- - {{~tag~}}
+ - {{~fix-special-char tag~}}
{{~/each}}
{{else}}
diff --git a/app/templates/components/preprint-navbar-branded.hbs b/app/templates/components/preprint-navbar-branded.hbs
index 16d8372fc..439a971e1 100644
--- a/app/templates/components/preprint-navbar-branded.hbs
+++ b/app/templates/components/preprint-navbar-branded.hbs
@@ -6,7 +6,7 @@
{{~/link-to}}
diff --git a/app/templates/content.hbs b/app/templates/content.hbs
index d0a789879..af2842b0f 100644
--- a/app/templates/content.hbs
+++ b/app/templates/content.hbs
@@ -11,7 +11,11 @@
{{#if authors}}
{{#each authors as |author index| ~}}
{{#if author.bibliographic}}
- {{author.users.givenName}} {{author.users.familyName}}
+ {{#if author.unregisteredContributor}}
+ {{author.unregisteredContributor}}
+ {{else}}
+ {{author.users.givenName}} {{author.users.familyName}}
+ {{/if}}
{{/if}}
{{~/each}}
{{else}}
@@ -64,15 +68,15 @@
{{!SHARE ROW}}
@@ -121,7 +125,7 @@
{{t "global.tags"}}
{{#if hasTag}}
{{#each node.tags as |tag|}}
-
{{tag}}
+
{{fix-special-char tag}}
{{/each}}
{{else}}
{{t "global.none"}}
diff --git a/app/templates/discover.hbs b/app/templates/discover.hbs
index 16eda19c9..1a6d255b9 100644
--- a/app/templates/discover.hbs
+++ b/app/templates/discover.hbs
@@ -134,25 +134,8 @@
{{#each results as |result|}}
{{search-result result=result select=(action 'updateFilters' 'subjects')}}
{{/each}}
-
-
-
- {{#if showPrev}}
-
- {{/if}}
-
-
-
- {{page}} {{t "discover.main.results.of"}} {{maxPages}}
-
-
-
-
- {{#if showNext}}
-
- {{/if}}
-
-
+
+ {{pagination-pager count=numPages current=page change=(action 'setLoadPage')}}
{{else}}
diff --git a/app/templates/index.hbs b/app/templates/index.hbs
index ab21a5679..30a71185d 100644
--- a/app/templates/index.hbs
+++ b/app/templates/index.hbs
@@ -89,7 +89,7 @@
{{t "index.services.bottom.div.line3"}}
-
{{t "index.services.bottom.contact"}}
+
{{t "index.services.bottom.contact"}}
diff --git a/app/utils/file-download-path.js b/app/utils/file-download-path.js
new file mode 100644
index 000000000..b005f33f8
--- /dev/null
+++ b/app/utils/file-download-path.js
@@ -0,0 +1,11 @@
+import config from 'ember-get-config';
+
+export default function fileDownloadPath(file, node) {
+ if (!file || !node) {
+ return;
+ }
+ if (file.get('guid')) {
+ return `${config.OSF.url}${file.get('guid')}/?action=download`;
+ }
+ return `${config.OSF.url}project/${node.get('id')}/files/osfstorage${file.get('path')}/?action=download`;
+}
diff --git a/config/environment.js b/config/environment.js
index 32408601f..4b562ff56 100644
--- a/config/environment.js
+++ b/config/environment.js
@@ -79,6 +79,16 @@ module.exports = function(environment) {
},
permissionLanguage: 'arxiv_trademark_license'
},
+ {
+ id: 'bitss',
+ logoSharing: { // T
+ path: '/assets/img/provider_logos/bitss-small.png',
+ type: 'image/png',
+ width: 1500,
+ height: 1500
+ },
+ permissionLanguage: 'no_trademark'
+ },
{
id: 'scielo',
logoSharing: {
diff --git a/package.json b/package.json
index 32e8a3f41..b85e1d810 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "preprint-service",
- "version": "0.105.3",
+ "version": "0.106.0",
"description": "Center for Open Science Preprint Service",
"private": true,
"directories": {
@@ -10,8 +10,9 @@
"build": "ember build",
"docs": "yuidoc",
"start": "ember server",
+ "check-style": "./node_modules/jscs/bin/jscs .",
"test": "yarn run check-style && ember test",
- "check-style": "./node_modules/jscs/bin/jscs ."
+ "test:cover": "COVERAGE=true yarn test"
},
"repository": {
"type": "git",
@@ -26,6 +27,7 @@
"devDependencies": {
"autoprefixer": "^6.3.7",
"broccoli-asset-rev": "^2.4.2",
+ "coveralls": "2.11.16",
"ember-ajax": "^2.0.1",
"ember-autosave": "2.0.1",
"ember-bootstrap": "0.7.2",
@@ -33,6 +35,7 @@
"ember-cli-app-version": "^1.0.0",
"ember-cli-babel": "^5.1.6",
"ember-cli-bootstrap-sassy": "0.5.3",
+ "ember-cli-code-coverage": "0.3.11",
"ember-cli-dependency-checker": "^1.2.0",
"ember-cli-dropzonejs": "0.7.0",
"ember-cli-htmlbars": "^1.0.3",
@@ -60,7 +63,7 @@
"ember-link-action": "0.0.35",
"ember-load-initializers": "^0.5.1",
"ember-metrics": "0.6.3",
- "ember-osf": "0.2.1",
+ "ember-osf": "0.3.0",
"ember-page-title": "3.0.6",
"ember-power-select": "1.0.0-beta.7",
"ember-read-more": "0.0.13",
@@ -72,10 +75,10 @@
"jscs": "^3.0.7",
"liquid-fire": "0.24.1",
"loader.js": "^4.0.1",
+ "pagination-pager": "2.4.2",
"phantomjs-prebuilt": "^2.1.11",
"postcss": "^5.1.0"
},
- "dependencies": {},
"bugs": {
"url": "https://github.com/CenterForOpenScience/ember-preprints/issues"
},
@@ -90,6 +93,7 @@
"config/environment.js",
"bower_components",
"node_modules",
+ "coverage",
"dist",
"docs",
"tmp",
diff --git a/public/assets/img/provider_logos/bitss-banner.png b/public/assets/img/provider_logos/bitss-banner.png
new file mode 100644
index 000000000..f92774173
Binary files /dev/null and b/public/assets/img/provider_logos/bitss-banner.png differ
diff --git a/public/assets/img/provider_logos/bitss-dark-small.png b/public/assets/img/provider_logos/bitss-dark-small.png
new file mode 100644
index 000000000..e994e8359
Binary files /dev/null and b/public/assets/img/provider_logos/bitss-dark-small.png differ
diff --git a/public/assets/img/provider_logos/bitss-logo.png b/public/assets/img/provider_logos/bitss-logo.png
new file mode 100644
index 000000000..f79a7dadb
Binary files /dev/null and b/public/assets/img/provider_logos/bitss-logo.png differ
diff --git a/public/assets/img/provider_logos/bitss-small.png b/public/assets/img/provider_logos/bitss-small.png
new file mode 100644
index 000000000..4560ee83e
Binary files /dev/null and b/public/assets/img/provider_logos/bitss-small.png differ
diff --git a/public/assets/img/provider_logos/scielo-dark-small.png b/public/assets/img/provider_logos/scielo-dark-small.png
new file mode 100644
index 000000000..659622d33
Binary files /dev/null and b/public/assets/img/provider_logos/scielo-dark-small.png differ
diff --git a/tests/unit/utils/file-download-path-test.js b/tests/unit/utils/file-download-path-test.js
new file mode 100644
index 000000000..0b75d1b14
--- /dev/null
+++ b/tests/unit/utils/file-download-path-test.js
@@ -0,0 +1,10 @@
+import fileDownloadPath from 'preprint-service/utils/file-download-path';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | file download path');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ let result = fileDownloadPath();
+ assert.ok(typeof result === 'undefined');
+});
diff --git a/yarn.lock b/yarn.lock
index 9973cb7f7..fcf34c183 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6,11 +6,7 @@
version "4.0.2"
resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
-abbrev@1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
-
-abbrev@~1.0.9:
+abbrev@1, abbrev@1.0.x, abbrev@~1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
@@ -63,14 +59,14 @@ ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
-ansi-regex@*, ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
ansi-styles@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
@@ -102,11 +98,7 @@ anymatch@^1.3.0:
arrify "^1.0.0"
micromatch "^2.1.5"
-aproba@^1.0.3:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
-
-aproba@~1.0.4:
+aproba@^1.0.3, aproba@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
@@ -202,10 +194,6 @@ ast-types@0.8.12:
version "0.8.12"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.12.tgz#a0d90e4351bb887716c83fd637ebf818af4adfcc"
-ast-types@0.8.15:
- version "0.8.15"
- resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.15.tgz#8eef0827f04dff0ec8857ba925abe3fea6194e52"
-
ast-types@0.9.5:
version "0.9.5"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.5.tgz#1a660a09945dbceb1f9c9cbb715002617424e04a"
@@ -228,7 +216,7 @@ async@0.2.x, async@~0.2.6, async@~0.2.9:
version "0.2.10"
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-async@^1.4.0, async@^1.5.2:
+async@1.x, async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -261,7 +249,7 @@ aws4@^1.2.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-babel-core@^5.0.0:
+babel-core@^5.0.0, babel-core@^5.8.38:
version "5.8.38"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-5.8.38.tgz#1fcaee79d7e61b750b00b8e54f6dfc9d0af86558"
dependencies:
@@ -485,6 +473,21 @@ bluebird@^3.1.1, bluebird@^3.4.6:
version "3.4.7"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
+body-parser@^1.15.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.16.1.tgz#51540d045adfa7a0c6995a014bb6b1ed9b802329"
+ dependencies:
+ bytes "2.4.0"
+ content-type "~1.0.2"
+ debug "2.6.1"
+ depd "~1.1.0"
+ http-errors "~1.5.1"
+ iconv-lite "0.4.15"
+ on-finished "~2.3.0"
+ qs "6.2.1"
+ raw-body "~2.2.0"
+ type-is "~1.6.14"
+
body@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069"
@@ -923,6 +926,10 @@ bytes@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
+bytes@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339"
+
callsite@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
@@ -1177,7 +1184,7 @@ component-emitter@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
-component-emitter@1.2.1:
+component-emitter@1.2.1, component-emitter@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
@@ -1206,7 +1213,7 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@1.5.0, concat-stream@^1.4.7:
+concat-stream@1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611"
dependencies:
@@ -1214,7 +1221,7 @@ concat-stream@1.5.0, concat-stream@^1.4.7:
readable-stream "~2.0.0"
typedarray "~0.0.5"
-concat-stream@^1.5.2:
+concat-stream@^1.4.7, concat-stream@^1.5.2:
version "1.6.0"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
dependencies:
@@ -1324,6 +1331,16 @@ core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+coveralls@2.11.16:
+ version "2.11.16"
+ resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.11.16.tgz#da9061265142ddee954f68379122be97be8ab4b1"
+ dependencies:
+ js-yaml "3.6.1"
+ lcov-parse "0.0.10"
+ log-driver "1.2.5"
+ minimist "1.2.0"
+ request "2.79.0"
+
cross-spawn-async@^2.1.1:
version "2.2.5"
resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc"
@@ -1408,7 +1425,7 @@ debug@2.6.1, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0:
dependencies:
ms "0.7.2"
-debuglog@*, debuglog@^1.0.1:
+debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -1420,6 +1437,10 @@ deep-equal@*:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
defaults@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
@@ -1614,6 +1635,27 @@ ember-cli-broccoli-sane-watcher@^2.0.3:
rsvp "^3.0.18"
sane "^1.1.1"
+ember-cli-code-coverage@0.3.11:
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/ember-cli-code-coverage/-/ember-cli-code-coverage-0.3.11.tgz#9012e14ec5d6ef27d7c6b89d4c8c22b5a49709be"
+ dependencies:
+ babel-core "^5.8.38"
+ body-parser "^1.15.0"
+ broccoli-filter "^1.2.3"
+ broccoli-funnel "^1.0.1"
+ broccoli-merge-trees "^1.1.1"
+ ember-cli-babel "^5.1.6"
+ escodegen "^1.8.0"
+ esprima "^2.7.2"
+ exists-sync "0.0.3"
+ extend "^3.0.0"
+ fs-extra "^0.26.7"
+ istanbul "^0.4.3"
+ node-dir "^0.1.16"
+ rsvp "^3.2.1"
+ source-map "0.5.6"
+ string.prototype.startswith "^0.2.0"
+
ember-cli-dependency-checker@1.3.0, ember-cli-dependency-checker@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-1.3.0.tgz#f0e8cb7f0f43c1e560494eaa9372804e7a088a2a"
@@ -2142,9 +2184,9 @@ ember-new-computed@^1.0.2:
dependencies:
ember-cli-babel "^5.1.5"
-ember-osf@0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/ember-osf/-/ember-osf-0.2.1.tgz#da0e49b6eea941aef5e48b044665430995215985"
+ember-osf@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/ember-osf/-/ember-osf-0.3.0.tgz#a433c9fb94db815f17c6d240c7ee5509df28d8fd"
dependencies:
broccoli-funnel "^1.0.1"
broccoli-merge-trees "^1.1.1"
@@ -2164,7 +2206,10 @@ ember-osf@0.2.1:
ember-sinon "0.5.1"
ember-sinon-qunit "1.3.3"
ember-truth-helpers "1.2.0"
+ js-cookie "^2.1.3"
+ js-md5 "^0.4.2"
js-yaml "^3.6.0"
+ keen-tracking "^1.1.3"
ember-page-title@3.0.6:
version "3.0.6"
@@ -2457,6 +2502,17 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+escodegen@1.8.x, escodegen@^1.8.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+ dependencies:
+ esprima "^2.7.1"
+ estraverse "^1.9.1"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.2.0"
+
esprima-fb@~12001.1.0-dev-harmony-fb:
version "12001.1.0-dev-harmony-fb"
resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-12001.1.0-dev-harmony-fb.tgz#d84400384ba95ce2678c617ad24a7f40808da915"
@@ -2465,19 +2521,23 @@ esprima-fb@~15001.1001.0-dev-harmony-fb:
version "15001.1001.0-dev-harmony-fb"
resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659"
-esprima@^2.6.0:
+esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1, esprima@^2.7.2:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-esprima@^3.1.1, esprima@~3.1.0:
+esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+estraverse@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
+
estraverse@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-esutils@^2.0.0:
+esutils@^2.0.0, esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@@ -2610,6 +2670,10 @@ eyes@0.1.x:
version "0.1.8"
resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
fast-ordered-set@^1.0.0, fast-ordered-set@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-ordered-set/-/fast-ordered-set-1.0.3.tgz#3fbb36634f7be79e4f7edbdb4a357dee25d184eb"
@@ -2665,8 +2729,8 @@ filename-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
filesize@^3.1.3:
- version "3.5.4"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.4.tgz#742fc7fb6aef4ee3878682600c22f840731e1fda"
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.5.tgz#3c2a5c14463919a218434721472b63cc30748992"
fill-range@^2.1.0:
version "2.2.3"
@@ -2789,7 +2853,7 @@ fs-extra@^0.24.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
-fs-extra@^0.26.0:
+fs-extra@^0.26.0, fs-extra@^0.26.7:
version "0.26.7"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
dependencies:
@@ -3035,7 +3099,7 @@ growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
-handlebars@^4.0.4:
+handlebars@^4.0.1, handlebars@^4.0.4:
version "4.0.6"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
dependencies:
@@ -3162,11 +3226,7 @@ homedir-polyfill@^1.0.0:
dependencies:
parse-passwd "^1.0.0"
-hosted-git-info@^2.1.4, hosted-git-info@^2.1.5:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5"
-
-hosted-git-info@~2.1.5:
+hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@~2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
@@ -3211,7 +3271,7 @@ i@0.3.x:
version "0.3.5"
resolved "https://registry.yarnpkg.com/i/-/i-0.3.5.tgz#1d2b854158ec8169113c6cb7f6b6801e99e211d5"
-iconv-lite@^0.4.5, iconv-lite@~0.4.13:
+iconv-lite@0.4.15, iconv-lite@^0.4.5, iconv-lite@~0.4.13:
version "0.4.15"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
@@ -3219,7 +3279,7 @@ iferr@^0.1.5, iferr@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
-imurmurhash@*, imurmurhash@^0.1.4:
+imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -3461,6 +3521,25 @@ isstream@0.1.x, isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+istanbul@^0.4.3:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
+ dependencies:
+ abbrev "1.0.x"
+ async "1.x"
+ escodegen "1.8.x"
+ esprima "2.7.x"
+ glob "^5.0.15"
+ handlebars "^4.0.1"
+ js-yaml "3.x"
+ mkdirp "0.5.x"
+ nopt "3.x"
+ once "1.x"
+ resolve "1.1.x"
+ supports-color "^3.1.0"
+ which "^1.1.1"
+ wordwrap "^1.0.0"
+
istextorbinary@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.1.0.tgz#dbed2a6f51be2f7475b68f89465811141b758874"
@@ -3483,6 +3562,18 @@ js-base64@^2.1.9:
version "2.1.9"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
+js-cookie@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.0.tgz#479c20d0a0bb6cab81491f917788cd025d6452f0"
+
+js-cookie@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.3.tgz#48071625217ac9ecfab8c343a13d42ec09ff0526"
+
+js-md5@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/js-md5/-/js-md5-0.4.2.tgz#8a1231e60ab392a6d3a75db6d532ec0c59667bc3"
+
js-string-escape@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
@@ -3491,12 +3582,12 @@ js-tokens@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.1.tgz#cc435a5c8b94ad15acb7983140fc80182c89aeae"
-js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.0, js-yaml@^3.6.1:
- version "3.8.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628"
+js-yaml@3.6.1, js-yaml@3.x, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.0, js-yaml@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
dependencies:
argparse "^1.0.7"
- esprima "^3.1.1"
+ esprima "^2.6.0"
js-yaml@~3.4.0:
version "3.4.6"
@@ -3632,6 +3723,20 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.3.6"
+keen-core@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/keen-core/-/keen-core-0.1.2.tgz#e8c107fdef227f56e6cf12eb59ef41ff38c37778"
+ dependencies:
+ component-emitter "^1.2.0"
+
+keen-tracking@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/keen-tracking/-/keen-tracking-1.1.3.tgz#1159d2066b90474472fb611ac31c37bc51d94b72"
+ dependencies:
+ component-emitter "^1.2.0"
+ js-cookie "2.1.0"
+ keen-core "0.1.2"
+
kew@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
@@ -3666,6 +3771,10 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
+lcov-parse@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
+
leek@0.0.24:
version "0.0.24"
resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda"
@@ -3678,6 +3787,13 @@ leven@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/leven/-/leven-1.0.2.tgz#9144b6eebca5f1d0680169f1a6770dcea60b75c3"
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
linkify-it@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f"
@@ -3755,10 +3871,6 @@ lodash._basefor@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2"
-lodash._baseindexof@*:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
-
lodash._baseuniq@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -3766,14 +3878,10 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.0.0"
lodash._root "~3.0.0"
-lodash._bindcallback@*, lodash._bindcallback@^3.0.0:
+lodash._bindcallback@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-lodash._cacheindexof@*:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
-
lodash._createassigner@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
@@ -3782,17 +3890,11 @@ lodash._createassigner@^3.0.0:
lodash._isiterateecall "^3.0.0"
lodash.restparam "^3.0.0"
-lodash._createcache@*:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
- dependencies:
- lodash._getnative "^3.0.0"
-
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
-lodash._getnative@*, lodash._getnative@^3.0.0:
+lodash._getnative@^3.0.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
@@ -3911,7 +4013,7 @@ lodash.omit@^4.1.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
-lodash.restparam@*, lodash.restparam@^3.0.0:
+lodash.restparam@^3.0.0:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
@@ -3963,6 +4065,10 @@ lodash@~4.16.4:
version "4.16.6"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777"
+log-driver@1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056"
+
lolex@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31"
@@ -4138,7 +4244,7 @@ minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3:
+minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -4230,6 +4336,12 @@ negotiator@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+node-dir@^0.1.16:
+ version "0.1.16"
+ resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4"
+ dependencies:
+ minimatch "^3.0.2"
+
node-fetch@^1.3.3:
version "1.6.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
@@ -4237,25 +4349,7 @@ node-fetch@^1.3.3:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-gyp@^3.3.1:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a"
- dependencies:
- fstream "^1.0.0"
- glob "^7.0.3"
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- mkdirp "^0.5.0"
- nopt "2 || 3"
- npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
- request "2"
- rimraf "2"
- semver "2.x || 3.x || 4 || 5"
- tar "^2.0.0"
- which "1"
-
-node-gyp@~3.4.0:
+node-gyp@^3.3.1, node-gyp@~3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.4.0.tgz#dda558393b3ecbbe24c9e6b8703c71194c63fa36"
dependencies:
@@ -4323,7 +4417,7 @@ node-uuid@~1.4.7:
chalk "~0.4.0"
underscore "~1.6.0"
-"nopt@2 || 3", nopt@^3.0.1, nopt@^3.0.3, nopt@~3.0.6:
+"nopt@2 || 3", nopt@3.x, nopt@^3.0.1, nopt@^3.0.3, nopt@~3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
dependencies:
@@ -4482,7 +4576,7 @@ npm@3.10.8:
gauge "~2.6.0"
set-blocking "~2.0.0"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@~4.0.0:
+npmlog@^4.0.0, npmlog@~4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
dependencies:
@@ -4536,7 +4630,7 @@ on-headers@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-once@^1.3.0, once@^1.3.3, once@~1.4.0:
+once@1.x, once@^1.3.0, once@^1.3.3, once@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@@ -4557,6 +4651,17 @@ optimist@^0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
+optionator@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
options@>=0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
@@ -4603,6 +4708,10 @@ output-file-sync@^1.1.0:
mkdirp "^0.5.1"
object-assign "^4.1.0"
+pagination-pager@2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/pagination-pager/-/pagination-pager-2.4.2.tgz#01f6a5f101de867193fc1d1dc16fbab6cd02e49d"
+
parse-glob@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
@@ -4672,6 +4781,10 @@ path-key@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af"
+path-parse@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+
path-posix@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/path-posix/-/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f"
@@ -4762,6 +4875,10 @@ postcss@^5.1.0, postcss@^5.2.15:
source-map "^0.5.6"
supports-color "^3.2.3"
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
@@ -4833,10 +4950,14 @@ q@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
-qs@6.2.0, qs@~6.2.0:
+qs@6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
+qs@6.2.1, qs@~6.2.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
+
qs@^6.2.0, qs@~6.3.0:
version "6.3.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d"
@@ -4875,6 +4996,14 @@ raw-body@~1.1.0:
bytes "1"
string_decoder "0.10"
+raw-body@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96"
+ dependencies:
+ bytes "2.4.0"
+ iconv-lite "0.4.15"
+ unpipe "1.0.0"
+
read-cmd-shim@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b"
@@ -4935,7 +5064,7 @@ read@1, read@1.0.x, read@~1.0.1, read@~1.0.7:
dependencies:
mute-stream "~0.0.4"
-"readable-stream@1 || 2", readable-stream@^2.0.2, readable-stream@~2.1.5:
+"readable-stream@1 || 2", readable-stream@^2, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@~2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
dependencies:
@@ -4956,18 +5085,7 @@ readable-stream@1.1:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^2, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.4, readable-stream@~2.0.0, readable-stream@~2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- string_decoder "~0.10.x"
- util-deprecate "~1.0.1"
-
-readable-stream@^2.2.2:
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.2.2:
version "2.2.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729"
dependencies:
@@ -4988,7 +5106,18 @@ readable-stream@~1.0.2:
isarray "0.0.1"
string_decoder "~0.10.x"
-readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
+readable-stream@~2.0.0, readable-stream@~2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdir-scoped-modules@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
dependencies:
@@ -5004,7 +5133,7 @@ realize-package-specifier@~3.0.3:
dezalgo "^1.0.1"
npm-package-arg "^4.1.1"
-recast@0.10.33:
+recast@0.10.33, recast@^0.10.10:
version "0.10.33"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.33.tgz#942808f7aa016f1fa7142c461d7e5704aaa8d697"
dependencies:
@@ -5013,15 +5142,6 @@ recast@0.10.33:
private "~0.1.5"
source-map "~0.5.0"
-recast@^0.10.10:
- version "0.10.43"
- resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.43.tgz#b95d50f6d60761a5f6252e15d80678168491ce7f"
- dependencies:
- ast-types "0.8.15"
- esprima-fb "~15001.1001.0-dev-harmony-fb"
- private "~0.1.5"
- source-map "~0.5.0"
-
recast@^0.11.17, recast@^0.11.3:
version "0.11.22"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.22.tgz#dedeb18fb001a2bbc6ac34475fda53dfe3d47dfa"
@@ -5116,7 +5236,7 @@ request-progress@~2.0.1:
dependencies:
throttleit "^1.0.0"
-request@2, request@^2.61.0, request@^2.74.0, request@~2.79.0:
+request@2, request@2.79.0, request@^2.61.0, request@^2.74.0, request@~2.79.0:
version "2.79.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
dependencies:
@@ -5190,9 +5310,15 @@ resolve-dir@^0.1.0:
expand-tilde "^1.2.2"
global-modules "^0.2.3"
+resolve@1.1.x:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+
resolve@^1.1.2, resolve@^1.1.6, resolve@^1.1.7:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c"
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.1.tgz#5d0a1632609b6b00a22284293db1d5d973676314"
+ dependencies:
+ path-parse "^1.0.5"
restore-cursor@^1.0.1:
version "1.0.1"
@@ -5216,8 +5342,8 @@ right-align@^0.1.1:
align-text "^0.1.1"
rimraf@2, rimraf@2.x.x, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.0.tgz#89b8a0fe432b9ff9ec9a925a00b6cdb3a91bbada"
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
dependencies:
glob "^7.0.5"
@@ -5476,10 +5602,16 @@ source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1:
+source-map@0.5.6, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+source-map@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
+ dependencies:
+ amdefine ">=0.0.4"
+
spawn-args@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.2.0.tgz#fb7d0bd1d70fd4316bd9e3dec389e65f9d6361bb"
@@ -5556,6 +5688,10 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
+string.prototype.startswith@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.startswith/-/string.prototype.startswith-0.2.0.tgz#da68982e353a4e9ac4a43b450a2045d1c445ae7b"
+
string_decoder@0.10, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@@ -5626,7 +5762,7 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-supports-color@^3.1.2, supports-color@^3.2.3:
+supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
dependencies:
@@ -5793,6 +5929,12 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ dependencies:
+ prelude-ls "~1.1.2"
+
type-is@~1.6.14:
version "1.6.14"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2"
@@ -5857,7 +5999,7 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
-unpipe@~1.0.0:
+unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -5908,7 +6050,7 @@ uuid@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
-validate-npm-package-license@*, validate-npm-package-license@^3.0.1:
+validate-npm-package-license@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
dependencies:
@@ -6002,7 +6144,7 @@ which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
-which@1, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@~1.2.10, which@~1.2.11:
+which@1, which@^1.1.1, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@~1.2.10, which@~1.2.11:
version "1.2.12"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
dependencies:
@@ -6042,6 +6184,10 @@ wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+wordwrap@^1.0.0, wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"