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}} {{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}}
{{#if (eq selectedFile.id preprint.primaryFile.id)}} - {{t "content.share.download_preprint"}} + {{t "content.share.download_preprint"}} {{else}} - {{t "content.share.download_file"}} + {{t "content.share.download_file"}} {{/if}} {{t "content.version"}}: {{selectedFile.currentVersion}}
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"