diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..6c9d2f9b0
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,5 @@
+.git
+**/bower_components
+**/dist
+**/node_modules
+**/tmp
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 000000000..94be88a9f
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+coverage
+dist
+docs
+tmp
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 000000000..76865be8a
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,16 @@
+module.exports = {
+ root: true,
+ parserOptions: {
+ ecmaVersion: 6,
+ sourceType: 'module'
+ },
+ extends: 'eslint:recommended',
+ env: {
+ browser: true,
+ es6: true
+ },
+ globals: {
+ MathJax: true
+ },
+ rules: {}
+};
diff --git a/.gitignore b/.gitignore
index 31c888147..f9013e2ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,7 @@
.npmrc
npm-debug.log
testem.log
+.idea
# Never commit configuration or private settings
config/*.yml
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index 25e040aec..000000000
--- a/.jshintrc
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "predef": [
- "server",
- "document",
- "window",
- "-Promise"
- ],
- "browser": true,
- "boss": true,
- "curly": false,
- "debug": false,
- "devel": true,
- "eqeqeq": true,
- "evil": true,
- "forin": false,
- "immed": false,
- "laxbreak": false,
- "loopfunc": true,
- "newcap": true,
- "noarg": true,
- "noempty": false,
- "nonew": false,
- "nomen": false,
- "onevar": false,
- "plusplus": false,
- "regexp": false,
- "undef": true,
- "sub": true,
- "strict": false,
- "white": false,
- "eqnull": true,
- "esnext": true,
- "unused": true
-}
diff --git a/.template-lintrc.js b/.template-lintrc.js
index b1d321789..705cbb681 100644
--- a/.template-lintrc.js
+++ b/.template-lintrc.js
@@ -1,4 +1,4 @@
-/* jshint node:true */
+/* eslint-env node */
'use strict';
module.exports = {
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..fc3db56e6
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,60 @@
+FROM node:boron
+
+RUN apt-get update \
+ && apt-get install -y \
+ git \
+ # Next 2 needed for yarn
+ apt-transport-https \
+ ca-certificates \
+ # watchman
+ build-essential \
+ automake \
+ autoconf \
+ python-dev \
+ && apt-get clean \
+ && apt-get autoremove -y \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
+ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
+ && apt-get update \
+ && apt-get install -y \
+ yarn \
+ && apt-get clean \
+ && apt-get autoremove -y \
+ && rm -rf /var/lib/apt/lists/*
+
+ENV WATCHMAN_VERSION 4.7.0
+RUN cd /tmp \
+ && git clone https://github.com/facebook/watchman.git \
+ && cd watchman \
+ && git checkout v$WATCHMAN_VERSION \
+ && ./autogen.sh \
+ && ./configure --enable-statedir=/tmp \
+ && make \
+ && make install \
+ && mv watchman /usr/local/bin/watchman \
+ && rm -Rf /tmp/watchman
+
+RUN mkdir -p /code
+WORKDIR /code
+
+COPY ./package.json ./yarn.lock /code/
+RUN yarn --pure-lockfile
+
+COPY ./.bowerrc /code/.bowerrc
+COPY ./bower.json /code/bower.json
+RUN ./node_modules/bower/bin/bower install --allow-root --config.interactive=false
+
+COPY ./ /code/
+
+ARG GIT_COMMIT=
+ENV GIT_COMMIT ${GIT_COMMIT}
+
+ARG APP_ENV=production
+ENV APP_ENV ${APP_ENV}
+ARG BACKEND=local
+ENV BACKEND ${BACKEND}
+RUN ./node_modules/ember-cli/bin/ember build --env ${APP_ENV}
+
+CMD ["yarn", "test"]
diff --git a/addon/adapters/osf-adapter.js b/addon/adapters/osf-adapter.js
index 0c05a8d78..b28c0e2a2 100644
--- a/addon/adapters/osf-adapter.js
+++ b/addon/adapters/osf-adapter.js
@@ -93,7 +93,7 @@ export default DS.JSONAPIAdapter.extend(HasManyQuery.RESTAdapterMixin, GenericDa
* @param {String} url
* @param {Boolean} isBulk
**/
- _createRelated(store, snapshot, createdSnapshots, relationship, url, isBulk = false) { // jshint ignore:line
+ _createRelated(store, snapshot, createdSnapshots, relationship, url) { //, isBulk = false) {
// TODO support bulk create?
// if (isBulk) {
//
@@ -183,7 +183,7 @@ export default DS.JSONAPIAdapter.extend(HasManyQuery.RESTAdapterMixin, GenericDa
* @param {String} url
* @param {Boolean} isBulk
**/
- _deleteRelated(store, snapshot, deletedSnapshots, relationship, url, isBulk = false) { // jshint ignore:line
+ _deleteRelated(store, snapshot, deletedSnapshots) { //, relationship, url, isBulk = false) {
return this._removeRelated(...arguments).then(() => {
deletedSnapshots.forEach(s => s.record.unloadRecord());
});
diff --git a/addon/components/dropzone-widget/component.js b/addon/components/dropzone-widget/component.js
index f6c88e58c..ab029cf63 100644
--- a/addon/components/dropzone-widget/component.js
+++ b/addon/components/dropzone-widget/component.js
@@ -1,3 +1,5 @@
+/* global Dropzone */
+
import Ember from 'ember';
import config from 'ember-get-config';
@@ -32,10 +34,7 @@ export default Ember.Component.extend({
let preUpload = this.get('preUpload');
let dropzoneOptions = this.get('options') || {};
- if (!this.get('buildUrl') && !preUpload && !dropzoneOptions.url) {
- console.error('Need to define url somewhere');
- }
- let drop = new Dropzone(`#${this.elementId}`, { // jshint ignore:line
+ let drop = new Dropzone(`#${this.elementId}`, {
url: file => typeof this.get('buildUrl') === 'function' ? this.get('buildUrl')(file) : this.get('buildUrl'),
autoProcessQueue: false,
dictDefaultMessage: this.get('defaultMessage') || 'Drop files here to upload'
diff --git a/addon/components/file-widget/component.js b/addon/components/file-widget/component.js
index 7ce8e4598..97995d99f 100644
--- a/addon/components/file-widget/component.js
+++ b/addon/components/file-widget/component.js
@@ -62,12 +62,6 @@ export default Ember.Component.extend({
selectNodeFile(file) {
this.send('selectFile', file.get('links.download'));
},
- selectNode(node) {
- console.log(node);
- },
- selectFile(url) {
- console.log(url);
- },
preUpload() {
return new Ember.RSVP.Promise((resolve) => resolve());
}
diff --git a/addon/components/navbar-auth-dropdown/component.js b/addon/components/navbar-auth-dropdown/component.js
index 94bd1b923..20485b3ed 100644
--- a/addon/components/navbar-auth-dropdown/component.js
+++ b/addon/components/navbar-auth-dropdown/component.js
@@ -63,7 +63,7 @@ export default Ember.Component.extend({
actions: {
logout() {
const redirectUrl = this.get('redirectUrl');
- const query = redirectUrl ? '?' + Ember.$.param({ redirect_url: redirectUrl }) : '';
+ const query = redirectUrl ? '?' + Ember.$.param({ next_url: redirectUrl }) : '';
// TODO: May not work well if logging out from page that requires login- check?
this.get('session').invalidate()
.then(() => window.location.href = `${config.OSF.url}logout/${query}`);
diff --git a/addon/components/osf-footer/template.hbs b/addon/components/osf-footer/template.hbs
index 2245be837..36f900cb1 100644
--- a/addon/components/osf-footer/template.hbs
+++ b/addon/components/osf-footer/template.hbs
@@ -5,11 +5,11 @@
OSF
@@ -18,8 +18,8 @@
Center for Open Science
diff --git a/addon/mixins/commentable.js b/addon/mixins/commentable.js
index d136a556f..5b4f03f7e 100644
--- a/addon/mixins/commentable.js
+++ b/addon/mixins/commentable.js
@@ -84,7 +84,7 @@ export default Ember.Mixin.create({
*/
reportComment() {
// TODO: Implement
- console.log('Consider this comment reported');
+ // console.log('Consider this comment reported');
}
}
});
diff --git a/addon/mixins/host-app-name.js b/addon/mixins/host-app-name.js
new file mode 100644
index 000000000..72731255d
--- /dev/null
+++ b/addon/mixins/host-app-name.js
@@ -0,0 +1,38 @@
+import config from 'ember-get-config';
+import Ember from 'ember';
+
+/**
+ * @module ember-osf
+ * @submodule mixins
+ */
+
+/**
+ * This mixin provides an attribute that holds the host app name, and is intended to be used with other ember-osf components.
+ *
+ * Sample usage:
+ * ```
+ * // components/componentA.js
+ * import hostAppName from ‘ember-osf/mixins/host-app-name’;
+ *
+ * export default Component.extend(hostAppName);
+ * ```
+ *
+ * ```
+ * // components/ComponentB.js
+ * import hostAppName from ‘ember-osf/mixins/host-app-name’;
+ *
+ * export default Component.extend(hostAppName);
+ *
+ * ```
+ * The above example will result in both component A and component B sharing the same attribute hostAppName.
+ *
+ */
+
+export default Ember.Mixin.create({
+ /**
+ * The name of the hosting app is stored in the config/environment.js. Use the package ember-get-config to
+ * gain access to the app's config file.
+ * @property {String} hostAppName
+ */
+ hostAppName: config.appName
+});
diff --git a/addon/mixins/node-actions.js b/addon/mixins/node-actions.js
index 8c6f5fcac..1c4869dab 100644
--- a/addon/mixins/node-actions.js
+++ b/addon/mixins/node-actions.js
@@ -105,7 +105,7 @@ export default Ember.Mixin.create({
* @param {Boolean} sendEmail Whether user will receive an email when added. "default: true"
* @return {Promise} Returns a promise that resolves to the newly created contributor object.
*/
- addContributor(userId, permission, isBibliographic, sendEmail) { // jshint ignore:line
+ addContributor() {
return this.get('_node').addContributor(...arguments);
},
/**
@@ -116,7 +116,7 @@ export default Ember.Mixin.create({
* @param {Boolean} sendEmail Whether user will receive an email when added. "default: true"
* @return {Promise} Returns a promise that resolves to an array of added contributors
*/
- addContributors(contributors, sendEmail) { // jshint ignore:line
+ addContributors() {
return this.get('_node').addContributors(...arguments);
},
/**
@@ -141,7 +141,7 @@ export default Ember.Mixin.create({
* @return {Promise} Returns a promise that resolves to the updated node
* with edited contributor relationships.
*/
- updateContributors(contributors, permissionsChanges, bibliographicChanges) { // jshint ignore:line
+ updateContributors() {
return this.get('_node').updateContributors(...arguments);
},
@@ -155,7 +155,7 @@ export default Ember.Mixin.create({
* @return {Promise} Returns a promise that resolves to the updated node
* with edited contributor relationships.
*/
- updateContributor(contributor, permissions, bibliographic) { // jshint ignore:line
+ updateContributor() {
return this.get('_node').updateContributor(...arguments);
},
/**
diff --git a/addon/mixins/osf-cookie-login-route.js b/addon/mixins/osf-cookie-login-route.js
index fdefc0eb6..4f875f7c1 100644
--- a/addon/mixins/osf-cookie-login-route.js
+++ b/addon/mixins/osf-cookie-login-route.js
@@ -26,6 +26,6 @@ export default Ember.Mixin.create({
// Block transition until auth attempt resolves. If auth fails, let the page load normally.
return this.get('session').authenticate('authenticator:osf-cookie')
- .catch(err => console.log('Authentication failed: ', err));
+ .catch(err => Ember.Logger.log('Authentication failed: ', err));
}
});
diff --git a/addon/mixins/osf-token-login-route.js b/addon/mixins/osf-token-login-route.js
index 6bb0012e9..b82dc97d3 100644
--- a/addon/mixins/osf-token-login-route.js
+++ b/addon/mixins/osf-token-login-route.js
@@ -35,6 +35,6 @@ export default Ember.Mixin.create({
}
return this.get('session').authenticate('authenticator:osf-token', accessToken)
- .catch(err => console.log('Authentication failed: ', err));
+ .catch(err => Ember.Logger.log('Authentication failed: ', err));
}
});
diff --git a/addon/models/file-version.js b/addon/models/file-version.js
index b483b7ce2..d12ebb178 100644
--- a/addon/models/file-version.js
+++ b/addon/models/file-version.js
@@ -17,5 +17,6 @@ import OsfModel from './osf-model';
*/
export default OsfModel.extend({
size: DS.attr('number'),
+ dateCreated: DS.attr('date'),
contentType: DS.attr('fixstring')
});
diff --git a/addon/models/preprint-provider.js b/addon/models/preprint-provider.js
index bf4d11ae3..9f3c38858 100644
--- a/addon/models/preprint-provider.js
+++ b/addon/models/preprint-provider.js
@@ -6,6 +6,7 @@ export default OsfModel.extend({
logoPath: DS.attr('string'),
bannerPath: DS.attr('string'),
description: DS.attr('fixstring'),
+ domain: DS.attr('string'),
example: DS.attr('fixstring'),
advisoryBoard: DS.attr('string'),
emailContact: DS.attr('fixstring'),
diff --git a/addon/serializers/comment.js b/addon/serializers/comment.js
index f23d6ff17..94fea1be5 100644
--- a/addon/serializers/comment.js
+++ b/addon/serializers/comment.js
@@ -2,7 +2,7 @@ import Ember from 'ember';
import OsfSerializer from './osf-serializer';
export default OsfSerializer.extend({
- serialize(snapshot, options) { // jshint ignore:line
+ serialize(snapshot) {
// Add relationships field to identify comment target
let serialized = this._super(...arguments);
diff --git a/addon/serializers/osf-serializer.js b/addon/serializers/osf-serializer.js
index 09e653caa..bba353fef 100644
--- a/addon/serializers/osf-serializer.js
+++ b/addon/serializers/osf-serializer.js
@@ -104,7 +104,7 @@ export default DS.JSONAPISerializer.extend({
return serialized;
},
- serializeAttribute(snapshot, json, key, attribute) { // jshint ignore:line
+ serializeAttribute(snapshot, json, key) {
// In certain cases, a field may be omitted from the server payload, but have a value (undefined)
// when serialized from the model. (eg node.template_from)
// Omit fields with a value of undefined before sending to the server. (but still allow null to be sent)
@@ -114,7 +114,7 @@ export default DS.JSONAPISerializer.extend({
}
},
- normalizeArrayResponse(store, primaryModelClass, payload, id, requestType) { // jshint ignore:line
+ normalizeArrayResponse(store, primaryModelClass, payload) {
// Ember data does not yet support pagination. For any request that returns more than one result, add pagination data
// under meta, and then calculate total pages to be loaded.
let documentHash = this._super(...arguments);
diff --git a/app/mixins/host-app-name.js b/app/mixins/host-app-name.js
new file mode 100644
index 000000000..ecffa26f9
--- /dev/null
+++ b/app/mixins/host-app-name.js
@@ -0,0 +1 @@
+export {default} from 'ember-osf/mixins/host-app-name';
diff --git a/app/mixins/keen-tracker.js b/app/mixins/keen-tracker.js
index dbb4eb383..75555de90 100644
--- a/app/mixins/keen-tracker.js
+++ b/app/mixins/keen-tracker.js
@@ -1,9 +1,10 @@
+/* eslint-disable no-unused-vars */
// This helps ember-browserify find npm modules in ember-cli addons
-import md5 from 'npm:js-md5'; // jshint ignore:line
-import config from 'ember-get-config'; // jshint ignore:line
-import _get from 'npm:lodash/get'; // jshint ignore:line
-import Cookie from 'npm:js-cookie'; // jshint ignore:line
-import keenTracking from 'npm:keen-tracking'; // jshint ignore:line
+import md5 from 'npm:js-md5';
+import config from 'ember-get-config';
+import _get from 'npm:lodash/get';
+import Cookie from 'npm:js-cookie';
+import keenTracking from 'npm:keen-tracking';
export {default} from 'ember-osf/mixins/keen-tracker';
diff --git a/blueprints/.jshintrc b/blueprints/.jshintrc
deleted file mode 100644
index 33f4f6f4b..000000000
--- a/blueprints/.jshintrc
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "predef": [
- "console"
- ],
- "strict": false
-}
diff --git a/blueprints/ember-osf/index.js b/blueprints/ember-osf/index.js
index 559fb60d0..4a1a29452 100644
--- a/blueprints/ember-osf/index.js
+++ b/blueprints/ember-osf/index.js
@@ -1,4 +1,4 @@
-/*jshint node:true*/
+/* eslint-env node */
var fs = require('fs');
var path = require('path');
diff --git a/config/coverage.js b/config/coverage.js
index 0d2dde81b..d874270a2 100644
--- a/config/coverage.js
+++ b/config/coverage.js
@@ -1,3 +1,4 @@
+/* eslint-env node */
'use strict';
//See https://github.com/kategengler/ember-cli-code-coverage/issues/41
diff --git a/config/environment.js b/config/environment.js
index 17c660f6a..5305477a5 100644
--- a/config/environment.js
+++ b/config/environment.js
@@ -1,4 +1,4 @@
-/*jshint node:true*/
+/* eslint-env node */
'use strict';
module.exports = function(/* environment, appConfig */) {
diff --git a/ember-cli-build.js b/ember-cli-build.js
index a3753963a..6579fb538 100644
--- a/ember-cli-build.js
+++ b/ember-cli-build.js
@@ -1,5 +1,4 @@
-/*jshint node:true*/
-/* global require, module */
+/* eslint-env node */
var path = require('path');
var EmberAddon = require('ember-cli/lib/broccoli/ember-addon');
diff --git a/index.js b/index.js
index 5b2ceee8e..b64344582 100644
--- a/index.js
+++ b/index.js
@@ -1,4 +1,5 @@
-/* jshint node: true */
+/* eslint-env node */
+/* eslint no-console: ["error", { allow: ["warn", "error"] }] */
'use strict';
var path = require('path');
var config = require('config');
diff --git a/package.json b/package.json
index b7d3f07c7..99c30eb1b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ember-osf",
- "version": "0.3.0",
+ "version": "0.4.0",
"description": "Reusable ember models and components for interacting with the Open Science Framework",
"directories": {
"doc": "docs",
@@ -10,7 +10,7 @@
"build": "ember build",
"docs": "yuidoc",
"start": "ember server",
- "check-style": "./node_modules/jscs/bin/jscs .",
+ "check-style": "eslint .",
"test": "yarn run check-style && ember test",
"test:cover": "COVERAGE=true yarn test",
"bump-version": "npm --no-git-tag-version version ",
@@ -42,6 +42,7 @@
"ember-cli-bootstrap-sassy": "0.5.3",
"ember-cli-code-coverage": "0.3.11",
"ember-cli-dependency-checker": "^1.2.0",
+ "ember-cli-eslint": "3.0.3",
"ember-cli-inject-live-reload": "^1.3.1",
"ember-cli-mirage": "0.1.13",
"ember-cli-qunit": "^1.2.1",
@@ -67,8 +68,8 @@
"ember-power-select": "1.0.0-alpha.5",
"ember-resolver": "2.0.3",
"ember-toastr": "1.4.1",
+ "eslint": "^3.18.0",
"git-branch-is": "^0.1.0",
- "jscs": "3.0.4",
"loader": "2.1.0",
"loader.js": "4.0.3",
"moment": "^2.13.0",
@@ -103,31 +104,5 @@
},
"ember-addon": {
"configPath": "tests/dummy/config"
- },
- "jscsConfig": {
- "preset": "airbnb",
- "excludeFiles": [
- "package.json",
- "bower_components",
- "coverage",
- "dist",
- "docs",
- "tmp",
- "vendor",
- "app/locales",
- "tests/unit",
- "tests/integration",
- "tests/helpers",
- "tests/dummy/app/mirage"
- ],
- "requireSpacesInAnonymousFunctionExpression": false,
- "requireTrailingComma": false,
- "disallowTrailingComma": false,
- "requirePaddingNewLinesAfterBlocks": false,
- "validateIndentation": 4,
- "requirePaddingNewLinesBeforeLineComments": false,
- "maximumLineLength": false,
- "disallowSpaceBeforeComma": false,
- "requireSpacesInsideObjectBrackets": "all"
}
}
diff --git a/test-support/factories/citation.js b/test-support/factories/citation.js
new file mode 100644
index 000000000..61793977d
--- /dev/null
+++ b/test-support/factories/citation.js
@@ -0,0 +1,8 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('citation', {
+ default: {
+ citation: () => faker.lorem.words(10)
+ }
+});
diff --git a/test-support/factories/collection.js b/test-support/factories/collection.js
new file mode 100644
index 000000000..f010027d7
--- /dev/null
+++ b/test-support/factories/collection.js
@@ -0,0 +1,22 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('collection', {
+ default: {
+ title: () => faker.lorem.words(3),
+ dateCreated: () => faker.date.past(1),
+ dateModified: () => faker.date.recent(1),
+ bookmarks: false
+ },
+ traits: {
+ hasNodes: {
+ linkedNodes: FactoryGuy.hasMany('node', 3)
+ },
+ hasRegistrations: {
+ linkedRegistrations: FactoryGuy.hasMany('registration', 3)
+ },
+ isBookmark: {
+ bookmarks: true
+ }
+ }
+});
diff --git a/tests/factories/comment-report.js b/test-support/factories/comment-report.js
similarity index 76%
rename from tests/factories/comment-report.js
rename to test-support/factories/comment-report.js
index 8b0de5beb..048682a44 100644
--- a/tests/factories/comment-report.js
+++ b/test-support/factories/comment-report.js
@@ -3,6 +3,7 @@ import faker from 'faker';
FactoryGuy.define('comment-report', {
default: {
- category: () => faker.random.arrayElement(['hate', 'spam', 'violence'])
+ category: () => faker.random.arrayElement(['hate', 'spam', 'violence']),
+ text: FactoryGuy.belongsTo('comment')
},
});
diff --git a/tests/factories/comment.js b/test-support/factories/comment.js
similarity index 78%
rename from tests/factories/comment.js
rename to test-support/factories/comment.js
index 18463f080..6cff526ba 100644
--- a/tests/factories/comment.js
+++ b/test-support/factories/comment.js
@@ -28,5 +28,9 @@ FactoryGuy.define('comment', {
page: 'files'
},
// TODO: Add a hasReplies trait in the future to support replies- can we make reply page type match the specified parent type?
+ // Not sure if reply needs to have same page type for hasReplies to be useful. Can always make manual replies with relevant type
+ hasReplies: {
+ replies: FactoryGuy.hasMany('comment', 3)
+ }
}
});
diff --git a/tests/factories/contributor.js b/test-support/factories/contributor.js
similarity index 59%
rename from tests/factories/contributor.js
rename to test-support/factories/contributor.js
index 0cac37005..e5ac8d436 100644
--- a/tests/factories/contributor.js
+++ b/test-support/factories/contributor.js
@@ -4,7 +4,12 @@ import faker from 'faker';
FactoryGuy.define('contributor', {
default: {
bibliographic: () => faker.random.boolean(),
- permission: () => faker.random.arrayElement(['read', 'write', 'admin'])
+ permission: () => faker.random.arrayElement(['read', 'write', 'admin']),
// nodeID: // TODO: Field not defined in serializer. Find out meaning and add to factory.
+ users: FactoryGuy.belongsTo('user'),
+ index: () => faker.random.number(),
+ fullName: () => faker.lorem.words(2),
+ email: () => faker.internet.email(),
+ node: FactoryGuy.belongsTo('node')
}
});
diff --git a/test-support/factories/draft-registration.js b/test-support/factories/draft-registration.js
new file mode 100644
index 000000000..937cd275e
--- /dev/null
+++ b/test-support/factories/draft-registration.js
@@ -0,0 +1,13 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('draft-registration', {
+ default: {
+ registrationSupplement: () => faker.lorem.words(1),
+ datetimeInitiated: () => faker.date.past(1),
+ datetimeUpdated: () => faker.date.recent(),
+ branchedFrom: FactoryGuy.belongsTo('node'),
+ initiator: FactoryGuy.belongsTo('user'),
+ registrationSchema: FactoryGuy.belongsTo('metaschema')
+ }
+});
diff --git a/tests/factories/file-provider.js b/test-support/factories/file-provider.js
similarity index 88%
rename from tests/factories/file-provider.js
rename to test-support/factories/file-provider.js
index d0989b591..eaa1c041d 100644
--- a/tests/factories/file-provider.js
+++ b/test-support/factories/file-provider.js
@@ -6,6 +6,7 @@ FactoryGuy.define('file-provider', {
kind: 'folder',
path: '/',
provider: 'osfstorage',
+ node: FactoryGuy.belongsTo('node')
},
traits: {
hasFiles: {
diff --git a/tests/factories/file-version.js b/test-support/factories/file-version.js
similarity index 100%
rename from tests/factories/file-version.js
rename to test-support/factories/file-version.js
diff --git a/tests/factories/file.js b/test-support/factories/file.js
similarity index 100%
rename from tests/factories/file.js
rename to test-support/factories/file.js
diff --git a/tests/factories/institution.js b/test-support/factories/institution.js
similarity index 100%
rename from tests/factories/institution.js
rename to test-support/factories/institution.js
diff --git a/test-support/factories/license.js b/test-support/factories/license.js
new file mode 100644
index 000000000..5a05ee7f2
--- /dev/null
+++ b/test-support/factories/license.js
@@ -0,0 +1,9 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('license', {
+ default: {
+ name: () => faker.lorem.words(1),
+ text: () => faker.lorem.words(15)
+ }
+});
diff --git a/tests/factories/log.js b/test-support/factories/log.js
similarity index 100%
rename from tests/factories/log.js
rename to test-support/factories/log.js
diff --git a/test-support/factories/metaschema.js b/test-support/factories/metaschema.js
new file mode 100644
index 000000000..5e4776313
--- /dev/null
+++ b/test-support/factories/metaschema.js
@@ -0,0 +1,10 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('metaschema', {
+ default: {
+ name: () => faker.lorem.words(1),
+ schemaVersion: () => faker.random.number(),
+ schema: {}
+ }
+});
diff --git a/test-support/factories/node-link.js b/test-support/factories/node-link.js
new file mode 100644
index 000000000..774c6f938
--- /dev/null
+++ b/test-support/factories/node-link.js
@@ -0,0 +1,7 @@
+import FactoryGuy from 'ember-data-factory-guy';
+
+FactoryGuy.define('node-link', {
+ default: {
+ targetNode: FactoryGuy.belongsTo('node')
+ }
+});
diff --git a/tests/factories/node.js b/test-support/factories/node.js
similarity index 97%
rename from tests/factories/node.js
rename to test-support/factories/node.js
index af6ff4285..705d49c7c 100644
--- a/tests/factories/node.js
+++ b/test-support/factories/node.js
@@ -5,7 +5,7 @@ import permissions from 'ember-osf/const/permissions';
FactoryGuy.define('node', {
default: {
- title: () => faker.lorem.words(4).join(' '),
+ title: () => faker.lorem.words(4),
description: () => faker.lorem.paragraphs(2, '\n'),
// Extracted from Node model CATEGORY_MAP as of May 24, 2016
category: () => faker.random.arrayElement(
diff --git a/test-support/factories/preprint-provider.js b/test-support/factories/preprint-provider.js
new file mode 100644
index 000000000..124edcd9b
--- /dev/null
+++ b/test-support/factories/preprint-provider.js
@@ -0,0 +1,27 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('preprint-provider', {
+ default: {
+ name: () => faker.lorem.words(1),
+ logoPath: () => '/static/img/preprint_providers/' + faker.lorem.words(1) + '.png',
+ bannerPath: () => '/static/img/preprint_providers/' + faker.lorem.words(1) + '.png',
+ description: () => faker.lorem.words(3),
+ advisoryBoard: () => faker.lorem.paragraphs(2),
+ emailContact: 'contact+fake@osf.io',
+ emailSupport: 'support+fake@osf.io',
+ headerText: () => faker.lorem.words(3),
+ taxonomy: FactoryGuy.hasMany('taxonomy', 20),
+ },
+ traits: {
+ isOSF: {
+ id: 'osf'
+ },
+ hasPreprints: {
+ preprints: FactoryGuy.hasMany('preprint', 5)
+ },
+ hasLicenses: {
+ licensesAcceptable: FactoryGuy.hasMany('license', 3)
+ }
+ }
+});
diff --git a/test-support/factories/preprint.js b/test-support/factories/preprint.js
new file mode 100644
index 000000000..f504c03c1
--- /dev/null
+++ b/test-support/factories/preprint.js
@@ -0,0 +1,22 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('preprint', {
+ default: {
+ dateCreated: () => faker.date.past(2),
+ datePublished: () => faker.date.past(1),
+ dateModified: () => faker.date.recent(),
+ doi: () => '10.1000/' + String(faker.random.number()),
+ node: FactoryGuy.belongsTo('node'),
+ license: FactoryGuy.belongsTo('license'),
+ primaryFile: FactoryGuy.belongsTo('file'),
+ provider: FactoryGuy.belongsTo('preprint-provider'),
+ isPublished: false,
+ isPreprintOrphan: false
+ },
+ traits: {
+ hasBeenPublished: {
+ isPublished: true
+ }
+ }
+});
diff --git a/tests/factories/registration.js b/test-support/factories/registration.js
similarity index 100%
rename from tests/factories/registration.js
rename to test-support/factories/registration.js
diff --git a/test-support/factories/taxonomy.js b/test-support/factories/taxonomy.js
new file mode 100644
index 000000000..e9689dd17
--- /dev/null
+++ b/test-support/factories/taxonomy.js
@@ -0,0 +1,15 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('taxonomy', {
+ default: {
+ text: () => faker.lorem.words(2),
+ child_count: () => faker.random.number(),
+ parents: null
+ },
+ traits: {
+ hasParents: {
+ parents: () => [String(faker.random.number())]
+ }
+ }
+});
diff --git a/tests/factories/user.js b/test-support/factories/user.js
similarity index 89%
rename from tests/factories/user.js
rename to test-support/factories/user.js
index 4f5a61201..99de12b33 100644
--- a/tests/factories/user.js
+++ b/test-support/factories/user.js
@@ -6,18 +6,17 @@ FactoryGuy.define('user', {
fullName: () => faker.name.findName(),
givenName: () => faker.name.firstName(),
familyName: () => faker.name.lastName(),
-
dateRegistered: () => faker.date.past(1)
},
traits: {
// TODO: Consider writing tests that would force pagination of relationships (!)
- has_projects: {
+ hasProjects: {
nodes: () => FactoryGuy.hasMany('node', 3)
},
- has_registrations: {
+ hasRegistrations: {
registrations: () => FactoryGuy.hasMany('registration', 3)
},
- has_institutions: {
+ hasInstitutions: {
affiliatedInstitutions: () => FactoryGuy.hasMany('institution', 2)
}
}
diff --git a/test-support/factories/wiki.js b/test-support/factories/wiki.js
new file mode 100644
index 000000000..65280e05b
--- /dev/null
+++ b/test-support/factories/wiki.js
@@ -0,0 +1,16 @@
+import FactoryGuy from 'ember-data-factory-guy';
+import faker from 'faker';
+
+FactoryGuy.define('wiki', {
+ defaults: {
+ kind: 'file',
+ name: () => faker.lorem.words(2),
+ dateModified: () => faker.date.recent(),
+ contentType: 'text/markdown',
+ path: () => '/' + faker.lorem.words(1),
+ currentUserCanComment: () => faker.random.boolean(),
+ materializedPath: () => '/' + faker.lorem.words(1),
+ size: () => faker.random.number(),
+ node: FactoryGuy.belongsTo('node')
+ }
+});
diff --git a/tests/.eslintrc.js b/tests/.eslintrc.js
new file mode 100644
index 000000000..fbf255520
--- /dev/null
+++ b/tests/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ env: {
+ embertest: true
+ }
+};
diff --git a/tests/.jshintrc b/tests/.jshintrc
deleted file mode 100644
index 4f9f51d89..000000000
--- a/tests/.jshintrc
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "predef": [
- "server",
- "document",
- "window",
- "location",
- "setTimeout",
- "$",
- "-Promise",
- "define",
- "console",
- "visit",
- "exists",
- "fillIn",
- "click",
- "keyEvent",
- "triggerEvent",
- "find",
- "findWithAssert",
- "wait",
- "DS",
- "andThen",
- "currentURL",
- "currentPath",
- "currentRouteName"
- ],
- "node": false,
- "browser": false,
- "boss": true,
- "curly": true,
- "debug": false,
- "devel": false,
- "eqeqeq": true,
- "evil": true,
- "forin": false,
- "immed": false,
- "laxbreak": false,
- "newcap": true,
- "noarg": true,
- "noempty": false,
- "nonew": false,
- "nomen": false,
- "onevar": false,
- "plusplus": false,
- "regexp": false,
- "undef": true,
- "sub": true,
- "strict": false,
- "white": false,
- "eqnull": true,
- "esnext": true,
- "unused": true
-}
diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js
index 76628dff8..16877b04e 100644
--- a/tests/dummy/config/environment.js
+++ b/tests/dummy/config/environment.js
@@ -1,4 +1,4 @@
-/* jshint node: true */
+/* eslint-env node */
module.exports = function(environment) {
@@ -38,6 +38,7 @@ module.exports = function(environment) {
}
],
modulePrefix: 'dummy',
+ appName: 'Dummy App',
environment: environment,
baseURL: '/',
locationType: 'auto',
diff --git a/tests/factories/collection.js b/tests/factories/collection.js
deleted file mode 100644
index dd75221a1..000000000
--- a/tests/factories/collection.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import FactoryGuy from 'ember-data-factory-guy';
-import faker from 'faker';
-
-FactoryGuy.define('collection', {
- default: {
- title: faker.lorem.words(3),
- dateCreated: faker.date.past(1),
- dateModified: faker.date.recent(1)
- }
-});
diff --git a/tests/helpers/destroy-app.js b/tests/helpers/destroy-app.js
index 3a0114aae..c3d4d1abb 100644
--- a/tests/helpers/destroy-app.js
+++ b/tests/helpers/destroy-app.js
@@ -2,5 +2,4 @@ import Ember from 'ember';
export default function destroyApp(application) {
Ember.run(application, 'destroy');
- server.shutdown();
}
diff --git a/tests/unit/mixins/host-app-name-test.js b/tests/unit/mixins/host-app-name-test.js
new file mode 100644
index 000000000..1f44842fe
--- /dev/null
+++ b/tests/unit/mixins/host-app-name-test.js
@@ -0,0 +1,12 @@
+import Ember from 'ember';
+import hostAppName from 'dummy/mixins/host-app-name';
+import { module, test } from 'qunit';
+
+module('Unit | Mixin | host app name');
+
+test('host-app-name mixin holds the hosting application name', function(assert) {
+ let objectA = Ember.Component.extend(hostAppName);
+ let componentA = objectA.create();
+ assert.equal(hostAppName.detect(componentA), true);
+ assert.equal(componentA.get('hostAppName'), 'Dummy App');
+});
diff --git a/tests/unit/services/file-manager-test.js b/tests/unit/services/file-manager-test.js
index 4e72bcd6c..7252c450f 100644
--- a/tests/unit/services/file-manager-test.js
+++ b/tests/unit/services/file-manager-test.js
@@ -1,7 +1,9 @@
import Ember from 'ember';
-import { moduleFor, test } from 'ember-qunit';
-import FactoryGuy, { manualSetup, mockSetup, mockUpdate,
- mockTeardown, mockFindRecord, mockReload } from 'ember-data-factory-guy';
+import {moduleFor, test} from 'ember-qunit';
+import FactoryGuy, {
+ manualSetup, mockSetup, mockUpdate,
+ mockTeardown, mockFindRecord, mockReload
+} from 'ember-data-factory-guy';
/*
* assertions:
@@ -11,16 +13,16 @@ import FactoryGuy, { manualSetup, mockSetup, mockUpdate,
* - once for each key in expectedRequest.settings
*/
function mockWaterbutler(assert, expectedRequest, response) {
- Ember.$.mockjax(function(requestSettings) {
+ Ember.$.mockjax(function (requestSettings) {
if (requestSettings.url.indexOf(expectedRequest.url) === 0) {
return {
- response: function() {
+ response: function () {
assertURL(assert, requestSettings.url,
- expectedRequest.url, expectedRequest.query);
+ expectedRequest.url, expectedRequest.query);
assertHeaders(assert, requestSettings.headers,
- expectedRequest.headers);
+ expectedRequest.headers);
assertSettings(assert, requestSettings,
- expectedRequest.settings);
+ expectedRequest.settings);
this.responseText = response.data || {};
this.status = response.status;
}
@@ -40,34 +42,34 @@ function assertURL(assert, actual, expected, queryParams) {
assert.equal(actualBase, expected, 'correct base URL');
let expectedParams = [];
- for(let key in queryParams) {
+ for (let key in queryParams) {
expectedParams.push(`${key}=${queryParams[key]}`);
}
assert.deepEqual(actualParams.split('&').sort(), expectedParams.sort(),
- 'correct query params');
+ 'correct query params');
}
// assert once for each expected header
function assertHeaders(assert, actual, expected) {
for (let header in expected) {
assert.equal(actual[header], expected[header],
- `request has expected header '${header}'`);
+ `request has expected header '${header}'`);
}
}
// assert once for each expected ajax setting
function assertSettings(assert, actual, expected) {
for (let s in expected) {
- // Check for a JSON payload
- if (typeof expected[s] === 'object' &&
- typeof actual[s] === 'string') {
- let payload = JSON.parse(actual[s]);
- assert.deepEqual(payload, expected[s],
- `request has expected JSON payload '${s}'`);
- } else {
- assert.equal(actual[s], expected[s],
- `request has expected option '${s}'`);
- }
+ // Check for a JSON payload
+ if (typeof expected[s] === 'object' &&
+ typeof actual[s] === 'string') {
+ let payload = JSON.parse(actual[s]);
+ assert.deepEqual(payload, expected[s],
+ `request has expected JSON payload '${s}'`);
+ } else {
+ assert.equal(actual[s], expected[s],
+ `request has expected option '${s}'`);
+ }
}
}
@@ -102,7 +104,7 @@ moduleFor('service:file-manager', 'Unit | Service | file manager', {
}
});
-test('getContents sends valid waterbutler request', function(assert) {
+test('getContents sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -110,8 +112,8 @@ test('getContents sends valid waterbutler request', function(assert) {
let request = {
url: file.get('links').download,
- settings: { method: 'GET' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` }
+ settings: {method: 'GET'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`}
};
let response = {
status: 200,
@@ -119,16 +121,16 @@ test('getContents sends valid waterbutler request', function(assert) {
};
mockWaterbutler(assert, request, response);
- service.getContents(file).then(function(data) {
+ service.getContents(file).then(function (data) {
assert.equal(data, response.data);
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(false, 'promise should not reject on success');
done();
});
});
-test('getContents passes along error', function(assert) {
+test('getContents passes along error', function (assert) {
assert.expect(4);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -136,24 +138,24 @@ test('getContents passes along error', function(assert) {
let request = {
url: file.get('links').download,
- settings: { method: 'GET' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` }
+ settings: {method: 'GET'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`}
};
let response = {
status: 404
};
mockWaterbutler(assert, request, response);
- service.getContents(file).then(function() {
+ service.getContents(file).then(function () {
assert.ok(false, 'promise should reject');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('updateContents sends valid waterbutler request', function(assert) {
+test('updateContents sends valid waterbutler request', function (assert) {
assert.expect(6);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -161,29 +163,31 @@ test('updateContents sends valid waterbutler request', function(assert) {
let request = {
url: file.get('links').upload,
- query: { kind: 'file' },
- settings: { method: 'PUT', data: 'contents contents' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {kind: 'file'},
+ settings: {method: 'PUT', data: 'contents contents'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
};
- let freshModel = FactoryGuy.build('file', { id: file.id,
- dateModified: new Date() });
- mockFindRecord('file', {id: file.id}).returns({json:freshModel});
+ let freshModel = FactoryGuy.build('file', {
+ id: file.id,
+ dateModified: new Date()
+ });
+ mockFindRecord('file', {id: file.id}).returns({json: freshModel});
mockWaterbutler(assert, request, response);
- service.updateContents(file, request.settings.data).then(function(fresh) {
+ service.updateContents(file, request.settings.data).then(function (fresh) {
assert.equal(fresh.get('id'), file.get('id'));
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(false, 'promise should not reject on success');
done();
});
});
-test('updateContents passes along error', function(assert) {
+test('updateContents passes along error', function (assert) {
assert.expect(6);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -191,25 +195,25 @@ test('updateContents passes along error', function(assert) {
let request = {
url: file.get('links').upload,
- query: { kind: 'file' },
- settings: { method: 'PUT', data: 'contents contents' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {kind: 'file'},
+ settings: {method: 'PUT', data: 'contents contents'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 404,
};
mockWaterbutler(assert, request, response);
- service.updateContents(file, request.settings.data).then(function() {
+ service.updateContents(file, request.settings.data).then(function () {
assert.ok(false, 'promise should reject on error');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('addSubfolder sends valid waterbutler request', function(assert) {
+test('addSubfolder sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let folder = FactoryGuy.make('file', 'isFolder');
@@ -217,9 +221,9 @@ test('addSubfolder sends valid waterbutler request', function(assert) {
let request = {
url: folder.get('links').new_folder,
- query: { name: 'fooname', kind: 'folder' },
- settings: { method: 'PUT' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {name: 'fooname', kind: 'folder'},
+ settings: {method: 'PUT'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
@@ -228,14 +232,14 @@ test('addSubfolder sends valid waterbutler request', function(assert) {
let p = service.addSubfolder(folder, request.query.name);
- p.then(function() {
+ p.then(function () {
done();
- }).catch(function() {
+ }).catch(function () {
done();
});
});
-test('addSubfolder passes along error', function(assert) {
+test('addSubfolder passes along error', function (assert) {
assert.expect(5);
let service = this.subject();
let folder = FactoryGuy.make('file', 'isFolder');
@@ -243,25 +247,25 @@ test('addSubfolder passes along error', function(assert) {
let request = {
url: folder.get('links').new_folder,
- query: { name: 'fooname', kind: 'folder' },
- settings: { method: 'PUT' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {name: 'fooname', kind: 'folder'},
+ settings: {method: 'PUT'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 404,
};
mockWaterbutler(assert, request, response);
- service.addSubfolder(folder, request.query.name).then(function() {
+ service.addSubfolder(folder, request.query.name).then(function () {
assert.ok(false, 'promise should reject on error');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('uploadFile sends valid waterbutler request', function(assert) {
+test('uploadFile sends valid waterbutler request', function (assert) {
assert.expect(5);
let service = this.subject();
let folder = FactoryGuy.make('file', 'isFolder');
@@ -269,9 +273,9 @@ test('uploadFile sends valid waterbutler request', function(assert) {
let request = {
url: folder.get('links').upload,
- query: { name: 'fooname', kind: 'file' },
- settings: { method: 'PUT', data: 'contents contents' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {name: 'fooname', kind: 'file'},
+ settings: {method: 'PUT', data: 'contents contents'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
@@ -279,16 +283,16 @@ test('uploadFile sends valid waterbutler request', function(assert) {
mockWaterbutler(assert, request, response);
let p = service.uploadFile(folder, request.query.name,
- request.settings.data);
+ request.settings.data);
- p.then(function() {
+ p.then(function () {
done();
- }).catch(function() {
+ }).catch(function () {
done();
});
});
-test('uploadFile passes along error', function(assert) {
+test('uploadFile passes along error', function (assert) {
assert.expect(6);
let service = this.subject();
let file = FactoryGuy.make('file', 'isFolder');
@@ -296,9 +300,9 @@ test('uploadFile passes along error', function(assert) {
let request = {
url: file.get('links').upload,
- query: { name: 'fooname', kind: 'file' },
- settings: { method: 'PUT', data: 'contents contents' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ query: {name: 'fooname', kind: 'file'},
+ settings: {method: 'PUT', data: 'contents contents'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 401,
@@ -306,36 +310,37 @@ test('uploadFile passes along error', function(assert) {
mockWaterbutler(assert, request, response);
service.uploadFile(file, request.query.name,
- request.settings.data).then(function() {
+ request.settings.data).then(function () {
assert.ok(false, 'promise should reject on error');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('move sends valid waterbutler request', function(assert) {
+test('move sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let done = assert.async();
let file = FactoryGuy.make('file');
let folder = FactoryGuy.make('file', 'isFolder',
- { path: '/path/path/this/is/a/path/' });
+ {path: '/path/path/this/is/a/path/'});
let request = {
url: file.get('links').move,
- settings: { method: 'POST', data: {
+ settings: {
+ method: 'POST', data: {
action: 'move',
path: folder.get('path'),
}
},
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
data: {
data: {
- attributes: { name: file.get('name') }
+ attributes: {name: file.get('name')}
}
}
};
@@ -343,51 +348,52 @@ test('move sends valid waterbutler request', function(assert) {
let p = service.move(file, folder);
- p.then(function() {
+ p.then(function () {
done();
- }).catch(function() {
+ }).catch(function () {
done();
});
});
-test('move passes along error', function(assert) {
+test('move passes along error', function (assert) {
assert.expect(5);
let service = this.subject();
let done = assert.async();
let file = FactoryGuy.make('file');
let folder = FactoryGuy.make('file', 'isFolder',
- { path: '/path/path/this/is/a/path/' });
+ {path: '/path/path/this/is/a/path/'});
let request = {
url: file.get('links').move,
- settings: { method: 'POST', data: {
+ settings: {
+ method: 'POST', data: {
action: 'move',
path: folder.get('path'),
}
},
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 402,
};
mockWaterbutler(assert, request, response);
- service.move(file, folder).then(function() {
+ service.move(file, folder).then(function () {
assert.ok(false, 'promise should reject');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('copy sends valid waterbutler request', function(assert) {
+test('copy sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let done = assert.async();
let file = FactoryGuy.make('file');
let folder = FactoryGuy.make('file', 'isFolder',
- { path: '/path/path/this/is/a/path/' });
+ {path: '/path/path/this/is/a/path/'});
let request = {
url: file.get('links').move,
@@ -398,13 +404,13 @@ test('copy sends valid waterbutler request', function(assert) {
path: folder.get('path'),
}
},
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
data: {
data: {
- attributes: { name: file.get('name') }
+ attributes: {name: file.get('name')}
}
}
};
@@ -412,45 +418,46 @@ test('copy sends valid waterbutler request', function(assert) {
let p = service.copy(file, folder);
- p.then(function() {
+ p.then(function () {
done();
- }).catch(function() {
+ }).catch(function () {
done();
});
});
-test('copy passes along error', function(assert) {
+test('copy passes along error', function (assert) {
assert.expect(5);
let service = this.subject();
let done = assert.async();
let file = FactoryGuy.make('file');
let folder = FactoryGuy.make('file', 'isFolder',
- { path: '/path/path/this/is/a/path/' });
+ {path: '/path/path/this/is/a/path/'});
let request = {
url: file.get('links').move,
- settings: { method: 'POST', data: {
+ settings: {
+ method: 'POST', data: {
action: 'copy',
path: folder.get('path'),
}
},
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 402,
};
mockWaterbutler(assert, request, response);
- service.copy(file, folder).then(function() {
+ service.copy(file, folder).then(function () {
assert.ok(false, 'promise should reject');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('rename sends valid waterbutler request', function(assert) {
+test('rename sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -458,8 +465,8 @@ test('rename sends valid waterbutler request', function(assert) {
let request = {
url: file.get('links').move,
- settings: { method: 'POST', data: { action: 'rename', rename: 'flooby' } },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ settings: {method: 'POST', data: {action: 'rename', rename: 'flooby'}},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
@@ -475,14 +482,14 @@ test('rename sends valid waterbutler request', function(assert) {
let p = service.rename(file, request.settings.data.rename);
- p.then(function() {
+ p.then(function () {
done();
- }).catch(function() {
+ }).catch(function () {
done();
});
});
-test('rename passes along error', function(assert) {
+test('rename passes along error', function (assert) {
assert.expect(5);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -490,24 +497,24 @@ test('rename passes along error', function(assert) {
let request = {
url: file.get('links').move,
- settings: { method: 'POST', data: { action: 'rename', rename: 'flooby' } },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ settings: {method: 'POST', data: {action: 'rename', rename: 'flooby'}},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 401,
};
mockWaterbutler(assert, request, response);
- service.rename(file, request.settings.data.rename).then(function() {
+ service.rename(file, request.settings.data.rename).then(function () {
assert.ok(false, 'promise should reject');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('deleteFile sends valid waterbutler request', function(assert) {
+test('deleteFile sends valid waterbutler request', function (assert) {
assert.expect(4);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -515,24 +522,24 @@ test('deleteFile sends valid waterbutler request', function(assert) {
let request = {
url: file.get('links').delete,
- settings: { method: 'DELETE' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ settings: {method: 'DELETE'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 200,
};
mockWaterbutler(assert, request, response);
- service.deleteFile(file).then(function() {
+ service.deleteFile(file).then(function () {
assert.ok(true);
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(false, 'promise rejected!');
done();
});
});
-test('deleteFile passes along error', function(assert) {
+test('deleteFile passes along error', function (assert) {
assert.expect(4);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -540,24 +547,24 @@ test('deleteFile passes along error', function(assert) {
let request = {
url: file.get('links').delete,
- settings: { method: 'DELETE' },
- headers: { Authorization: `Bearer ${fakeAccessToken}` },
+ settings: {method: 'DELETE'},
+ headers: {Authorization: `Bearer ${fakeAccessToken}`},
};
let response = {
status: 401,
};
mockWaterbutler(assert, request, response);
- service.deleteFile(file).then(function() {
+ service.deleteFile(file).then(function () {
assert.ok(false, 'promise should reject');
done();
- }).catch(function() {
+ }).catch(function () {
assert.ok(true, 'promise rejects on error');
done();
});
});
-test('checkOut checks out', function(assert) {
+test('checkOut checks out', function (assert) {
assert.expect(2);
let service = this.subject();
let file = FactoryGuy.make('file');
@@ -572,10 +579,10 @@ test('checkOut checks out', function(assert) {
});
});
-test('checkIn checks in', function(assert) {
+test('checkIn checks in', function (assert) {
assert.expect(2);
let service = this.subject();
- let file = FactoryGuy.make('file', { checkout: fakeUserID });
+ let file = FactoryGuy.make('file', {checkout: fakeUserID});
let done = assert.async();
assert.equal(file.get('checkout'), fakeUserID, 'file.checkout already set');
@@ -587,13 +594,13 @@ test('checkIn checks in', function(assert) {
});
});
-test('checkOut fails on checked-out file', function(assert) {
+test('checkOut fails on checked-out file', function (assert) {
assert.expect(1);
let service = this.subject();
- let file = FactoryGuy.make('file', { checkout: 'someoneelse' });
+ let file = FactoryGuy.make('file', {checkout: 'someoneelse'});
let done = assert.async();
- mockUpdate(file).fails({ status: 403 });
+ mockUpdate(file).fails({status: 403});
service.checkIn(file).catch(() => {
assert.equal(file.get('checkout'), 'someoneelse', 'file.checkout unaffected by failure');
done();
diff --git a/yarn.lock b/yarn.lock
index 90a04521d..33e40fa93 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,10 +9,6 @@ JSONStream@^1.0.3:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
-"JSV@>= 4.0.x":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
-
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"
@@ -24,6 +20,16 @@ accepts@1.3.3, accepts@~1.3.3:
mime-types "~2.1.11"
negotiator "0.6.1"
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ dependencies:
+ acorn "^3.0.4"
+
+acorn@4.0.4, acorn@^4.0.3:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
+
acorn@^1.0.3:
version "1.2.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
@@ -32,18 +38,25 @@ acorn@^2.6.4, acorn@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
-acorn@^3.1.0:
+acorn@^3.0.4, acorn@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-acorn@^4.0.3:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
-
after@0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627"
+ajv-keywords@^1.0.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+
+ajv@^4.7.0:
+ version "4.11.5"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -132,7 +145,7 @@ are-we-there-yet@~1.1.2:
delegates "^1.0.0"
readable-stream "^2.0.0 || ^1.1.13"
-argparse@^1.0.2, argparse@^1.0.7, argparse@~1.0.2:
+argparse@^1.0.7, argparse@~1.0.2:
version "1.0.9"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
dependencies:
@@ -189,6 +202,16 @@ array-to-sentence@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/array-to-sentence/-/array-to-sentence-1.1.0.tgz#c804956dafa53232495b205a9452753a258d39fc"
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
@@ -263,10 +286,6 @@ async-foreach@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
-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.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"
@@ -277,6 +296,10 @@ async@^2.0.1:
dependencies:
lodash "^4.14.0"
+async@~0.2.6, async@~0.2.9:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -289,6 +312,14 @@ aws4@^1.2.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+babel-code-frame@^6.16.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^3.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"
@@ -420,30 +451,10 @@ babel-plugin-undefined-to-void@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz#7f578ef8b78dfae6003385d8417a61eda06e2f81"
-babel-runtime@^6.20.0, babel-runtime@^6.6.1:
- version "6.20.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.10.0"
-
-babel-types@^6.7.2:
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
- dependencies:
- babel-runtime "^6.20.0"
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^1.0.1"
-
babylon@^5.8.38:
version "5.8.38"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd"
-babylon@^6.7.0:
- version "6.15.0"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
-
backbone@^1.1.2:
version "1.3.3"
resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.3.3.tgz#4cc80ea7cb1631ac474889ce40f2f8bc683b2999"
@@ -810,6 +821,17 @@ broccoli-kitchen-sink-helpers@^0.3.1:
glob "^5.0.10"
mkdirp "^0.5.1"
+broccoli-lint-eslint@^3.1.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/broccoli-lint-eslint/-/broccoli-lint-eslint-3.2.1.tgz#6c88cd36f2999eab98b07538a382ef2c10d2b77f"
+ dependencies:
+ broccoli-persistent-filter "^1.2.0"
+ escape-string-regexp "^1.0.5"
+ eslint "^3.0.0"
+ js-string-escape "^1.0.1"
+ json-stable-stringify "^1.0.1"
+ md5-hex "^2.0.0"
+
broccoli-merge-trees@^0.2.1:
version "0.2.4"
resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-0.2.4.tgz#1936f63bb09e24246b1e91d8c53162c0f7b24c3c"
@@ -1126,10 +1148,20 @@ cached-path-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.0.tgz#d1094c577fbd9a8b8bd43c96af6188aa205d05f4"
+caller-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ dependencies:
+ callsites "^0.2.0"
+
callsite@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+
camelcase-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1196,7 +1228,7 @@ chalk@^0.5.1:
strip-ansi "^0.3.0"
supports-color "^0.2.0"
-chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.0:
+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
@@ -1230,6 +1262,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1:
dependencies:
inherits "^2.0.1"
+circular-json@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
+
clean-base-url@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/clean-base-url/-/clean-base-url-1.0.0.tgz#c901cf0a20b972435b0eccd52d056824a4351b7b"
@@ -1268,7 +1304,7 @@ cli-table2@^0.2.0:
optionalDependencies:
colors "^1.1.2"
-cli-table@^0.3.1, cli-table@~0.3.1:
+cli-table@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
dependencies:
@@ -1327,14 +1363,14 @@ cmd-shim@~2.0.2:
graceful-fs "^4.1.2"
mkdirp "~0.5.0"
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-colors@0.6.x:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
-
colors@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
@@ -1371,18 +1407,12 @@ commander@2.8.x:
dependencies:
graceful-readlink ">= 1.0.0"
-commander@^2.5.0, commander@^2.6.0, commander@^2.9.0, commander@~2.9.0:
+commander@^2.5.0, commander@^2.6.0, commander@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
graceful-readlink ">= 1.0.0"
-comment-parser@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.3.1.tgz#fd657aac8c1492d308c9a6100fc9b49d2435aba1"
- dependencies:
- readable-stream "^2.0.4"
-
commoner@~0.10.3:
version "0.10.8"
resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5"
@@ -1533,10 +1563,6 @@ core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-core-js@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
-
core-object@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/core-object/-/core-object-1.1.0.tgz#86d63918733cf9da1a5aae729e62c0a88e66ad0a"
@@ -1620,25 +1646,12 @@ crypto-browserify@^3.0.0:
public-encrypt "^4.0.0"
randombytes "^2.0.0"
-cst@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/cst/-/cst-0.3.0.tgz#67aa8b30274e0061e64366aea45c0652a5e61aef"
- dependencies:
- babel-runtime "^6.6.1"
- babel-types "^6.7.2"
- babylon "^6.7.0"
- source-map-support "^0.4.0"
-
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
dependencies:
array-find-index "^1.0.1"
-cycle@1.0.x:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
-
d@^0.1.1, d@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
@@ -1671,13 +1684,13 @@ debug@2.3.3:
dependencies:
ms "0.7.2"
-debug@2.6.1:
+debug@2.6.1, debug@^2.1.3:
version "2.6.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
dependencies:
ms "0.7.2"
-debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0:
+debug@^2.1.0, debug@^2.1.1, debug@^2.2.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b"
dependencies:
@@ -1691,10 +1704,6 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-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"
@@ -1724,6 +1733,18 @@ defs@~1.1.0:
tryor "~0.1.2"
yargs "~3.27.0"
+del@^2.0.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+ dependencies:
+ globby "^5.0.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ rimraf "^2.2.8"
+
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -1806,6 +1827,13 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0"
randombytes "^2.0.0"
+doctrine@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
dom-serializer@0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -2004,6 +2032,15 @@ ember-cli-dependency-checker@^1.2.0:
is-git-url "0.2.0"
semver "^4.1.0"
+ember-cli-eslint@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ember-cli-eslint/-/ember-cli-eslint-3.0.3.tgz#620abced2984be96a8747a47bfd41c5adbb9b968"
+ dependencies:
+ broccoli-lint-eslint "^3.1.0"
+ js-string-escape "^1.0.0"
+ rsvp "^3.2.1"
+ walk-sync "^0.3.0"
+
ember-cli-get-component-path-option@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771"
@@ -2782,6 +2819,53 @@ escope@^3.6.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint@^3.0.0, eslint@^3.18.0:
+ version "3.18.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b"
+ dependencies:
+ babel-code-frame "^6.16.0"
+ chalk "^1.1.3"
+ concat-stream "^1.5.2"
+ debug "^2.1.1"
+ doctrine "^2.0.0"
+ escope "^3.6.0"
+ espree "^3.4.0"
+ esquery "^1.0.0"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ glob "^7.0.3"
+ globals "^9.14.0"
+ ignore "^3.2.0"
+ imurmurhash "^0.1.4"
+ inquirer "^0.12.0"
+ is-my-json-valid "^2.10.0"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.5.1"
+ json-stable-stringify "^1.0.0"
+ levn "^0.3.0"
+ lodash "^4.0.0"
+ mkdirp "^0.5.0"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.1"
+ pluralize "^1.2.1"
+ progress "^1.1.8"
+ require-uncached "^1.0.2"
+ shelljs "^0.7.5"
+ strip-bom "^3.0.0"
+ strip-json-comments "~2.0.1"
+ table "^3.7.8"
+ text-table "~0.2.0"
+ user-home "^2.0.0"
+
+espree@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d"
+ dependencies:
+ acorn "4.0.4"
+ acorn-jsx "^3.0.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"
@@ -2802,6 +2886,12 @@ esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+esquery@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+ dependencies:
+ estraverse "^4.0.0"
+
esrecurse@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
@@ -2813,7 +2903,7 @@ estraverse@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-estraverse@^4.1.0, estraverse@^4.1.1:
+estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
@@ -2872,7 +2962,7 @@ exit-hook@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-exit@0.1.2, exit@0.1.x, exit@^0.1.2, exit@~0.1.2:
+exit@0.1.2, exit@0.1.x, exit@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -2956,10 +3046,6 @@ extsprintf@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
-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"
@@ -3014,6 +3100,13 @@ figures@^1.3.5:
escape-string-regexp "^1.0.5"
object-assign "^4.1.0"
+file-entry-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
filename-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
@@ -3074,6 +3167,15 @@ fireworm@^0.7.0:
lodash.flatten "^3.0.2"
minimatch "^3.0.2"
+flat-cache@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
+ dependencies:
+ circular-json "^0.3.1"
+ del "^2.0.2"
+ graceful-fs "^4.1.2"
+ write "^0.2.1"
+
for-in@^0.1.5:
version "0.1.6"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
@@ -3339,7 +3441,7 @@ glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.0, glo
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^5.0.1, glob@^5.0.10, glob@^5.0.15, glob@~5.0.0:
+glob@^5.0.10, glob@^5.0.15, glob@~5.0.0:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
dependencies:
@@ -3390,6 +3492,21 @@ globals@^6.4.0:
version "6.4.1"
resolved "https://registry.yarnpkg.com/globals/-/globals-6.4.1.tgz#8498032b3b6d1cc81eebc5f79690d8fe29fabf4f"
+globals@^9.14.0:
+ version "9.17.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
+
+globby@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
globule@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f"
@@ -3554,7 +3671,7 @@ htmlescape@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
-htmlparser2@3.8.3, htmlparser2@3.8.x:
+htmlparser2@3.8.x:
version "3.8.3"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
dependencies:
@@ -3591,10 +3708,6 @@ https-browserify@~0.0.0:
version "0.0.1"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
-i@0.3.x:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/i/-/i-0.3.5.tgz#1d2b854158ec8169113c6cb7f6b6801e99e211d5"
-
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"
@@ -3607,6 +3720,10 @@ iferr@^0.1.5, iferr@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ignore@^3.2.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
+
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -3640,10 +3757,6 @@ inflight@^1.0.4, inflight@~1.0.5:
once "^1.3.0"
wrappy "1"
-inherit@^2.2.2:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/inherit/-/inherit-2.2.6.tgz#f1614b06c8544e8128e4229c86347db73ad9788d"
-
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@@ -3685,6 +3798,24 @@ inline-source-map@~0.6.0:
dependencies:
source-map "~0.5.3"
+inquirer@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
+ dependencies:
+ ansi-escapes "^1.1.0"
+ ansi-regex "^2.0.0"
+ chalk "^1.0.0"
+ cli-cursor "^1.0.1"
+ cli-width "^2.0.0"
+ figures "^1.3.5"
+ lodash "^4.3.0"
+ readline2 "^1.0.1"
+ run-async "^0.1.0"
+ rx-lite "^3.1.2"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.0"
+ through "^2.3.6"
+
inquirer@^1.2.1:
version "1.2.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918"
@@ -3717,6 +3848,10 @@ insert-module-globals@^7.0.0:
through2 "^2.0.0"
xtend "^4.0.0"
+interpret@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
+
invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
@@ -3769,6 +3904,10 @@ is-fullwidth-code-point@^1.0.0:
dependencies:
number-is-nan "^1.0.0"
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+
is-git-url@0.2.0, is-git-url@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-git-url/-/is-git-url-0.2.0.tgz#b9ce0fb044821c88880213d602db03bdb255da1b"
@@ -3785,7 +3924,7 @@ is-integer@^1.0.4:
dependencies:
is-finite "^1.0.0"
-is-my-json-valid@^2.12.4:
+is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
version "2.15.0"
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
dependencies:
@@ -3804,6 +3943,22 @@ is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
+ dependencies:
+ path-is-inside "^1.0.1"
+
is-posix-bracket@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -3820,6 +3975,12 @@ is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+is-resolvable@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
+ dependencies:
+ tryit "^1.0.1"
+
is-stream@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -3864,7 +4025,7 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
-isstream@0.1.x, isstream@~0.1.2:
+isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -3917,7 +4078,7 @@ 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:
+js-string-escape@^1.0.0, js-string-escape@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
@@ -3925,6 +4086,10 @@ js-tokens@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.1.tgz#cc435a5c8b94ad15acb7983140fc80182c89aeae"
+js-tokens@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+
js-yaml@3.6.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
@@ -3932,73 +4097,17 @@ js-yaml@3.6.1:
argparse "^1.0.7"
esprima "^2.6.0"
-js-yaml@3.x, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.0, js-yaml@^3.6.1:
+js-yaml@3.x, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.5.1, js-yaml@^3.6.0, js-yaml@^3.6.1:
version "3.7.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
dependencies:
argparse "^1.0.7"
esprima "^2.6.0"
-js-yaml@~3.4.0:
- version "3.4.6"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.4.6.tgz#6be1b23f6249f53d293370fd4d1aaa63ce1b4eb0"
- dependencies:
- argparse "^1.0.2"
- esprima "^2.6.0"
- inherit "^2.2.2"
-
jsbn@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
-jscs-jsdoc@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/jscs-jsdoc/-/jscs-jsdoc-2.0.0.tgz#f53ebce029aa3125bd88290ba50d64d4510a4871"
- dependencies:
- comment-parser "^0.3.1"
- jsdoctypeparser "~1.2.0"
-
-jscs-preset-wikimedia@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/jscs-preset-wikimedia/-/jscs-preset-wikimedia-1.0.0.tgz#fff563342038fc2e8826b7bb7309c3ae3406fc7e"
-
-jscs@3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/jscs/-/jscs-3.0.4.tgz#614faa9265a40ca47da85d6c779a18ea9c8eb942"
- dependencies:
- chalk "~1.1.0"
- cli-table "~0.3.1"
- commander "~2.9.0"
- cst "^0.3.0"
- estraverse "^4.1.0"
- exit "~0.1.2"
- glob "^5.0.1"
- htmlparser2 "3.8.3"
- js-yaml "~3.4.0"
- jscs-jsdoc "^2.0.0"
- jscs-preset-wikimedia "~1.0.0"
- jsonlint "~1.6.2"
- lodash "~3.10.0"
- minimatch "~3.0.0"
- natural-compare "~1.2.2"
- pathval "~0.1.1"
- prompt "~0.2.14"
- reserved-words "^0.1.1"
- resolve "^1.1.6"
- strip-bom "^2.0.0"
- strip-json-comments "~1.0.2"
- to-double-quotes "^2.0.0"
- to-single-quotes "^2.0.0"
- vow "~0.4.8"
- vow-fs "~0.3.4"
- xmlbuilder "^3.1.0"
-
-jsdoctypeparser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz#e7dedc153a11849ffc5141144ae86a7ef0c25392"
- dependencies:
- lodash "^3.7.0"
-
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@@ -4060,13 +4169,6 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-jsonlint@~1.6.2:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.2.tgz#5737045085f55eb455c68b1ff4ebc01bd50e8830"
- dependencies:
- JSV ">= 4.0.x"
- nomnom ">= 1.5.x"
-
jsonparse@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.0.tgz#85fc245b1d9259acc6941960b905adf64e7de0e8"
@@ -4155,7 +4257,7 @@ leven@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/leven/-/leven-1.0.2.tgz#9144b6eebca5f1d0680169f1a6770dcea60b75c3"
-levn@~0.3.0:
+levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
dependencies:
@@ -4448,11 +4550,11 @@ lodash@3.7.x:
version "3.7.0"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45"
-lodash@^3.10.0, lodash@^3.10.1, lodash@^3.5.0, lodash@^3.7.0, lodash@^3.9.3, lodash@~3.10.0:
+lodash@^3.10.0, lodash@^3.10.1, lodash@^3.9.3:
version "3.10.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
-lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.5.1, lodash@^4.6.1:
+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.5.1, lodash@^4.6.1:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -4556,6 +4658,12 @@ md5-hex@^1.0.2, md5-hex@^1.2.1, md5-hex@^1.3.0:
dependencies:
md5-o-matic "^0.1.1"
+md5-hex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33"
+ dependencies:
+ md5-o-matic "^0.1.1"
+
md5-o-matic@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
@@ -4644,7 +4752,7 @@ minimalistic-assert@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.0, minimatch@~3.0.2:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
dependencies:
@@ -4670,7 +4778,7 @@ mkdirp@0.5.0:
dependencies:
minimist "0.0.8"
-mkdirp@0.5.x, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
@@ -4752,6 +4860,10 @@ mustache@^2.2.1:
version "2.3.0"
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.0.tgz#4028f7778b17708a489930a6e52ac3bca0da41d0"
+mute-stream@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
+
mute-stream@0.0.6, mute-stream@~0.0.4:
version "0.0.6"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
@@ -4760,13 +4872,9 @@ nan@^2.3.2:
version "2.5.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
-natural-compare@~1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.2.2.tgz#1f96d60e3141cac1b6d05653ce0daeac763af6aa"
-
-ncp@0.4.x:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.4.2.tgz#abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574"
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
negotiator@0.6.1:
version "0.6.1"
@@ -4873,13 +4981,6 @@ node-uuid@^1.4.3, node-uuid@~1.4.7:
version "1.4.7"
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
-"nomnom@>= 1.5.x":
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7"
- dependencies:
- chalk "~0.4.0"
- underscore "~1.6.0"
-
"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"
@@ -5096,7 +5197,7 @@ optimist@^0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
-optionator@^0.8.1:
+optionator@^0.8.1, optionator@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
dependencies:
@@ -5266,10 +5367,6 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-pathval@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pathval/-/pathval-0.1.1.tgz#08f911cdca9cce5942880da7817bc0b723b66d82"
-
pbkdf2@^3.0.3:
version "3.0.9"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
@@ -5308,13 +5405,9 @@ pinkie@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-pkginfo@0.3.x:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21"
-
-pkginfo@0.x.x:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65"
+pluralize@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
portfinder@^1.0.7:
version "1.0.10"
@@ -5354,7 +5447,7 @@ process@~0.11.0:
version "0.11.9"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
-progress@~1.1.8:
+progress@^1.1.8, progress@~1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
@@ -5364,16 +5457,6 @@ promise-map-series@^0.2.0, promise-map-series@^0.2.1:
dependencies:
rsvp "^3.0.14"
-prompt@~0.2.14:
- version "0.2.14"
- resolved "https://registry.yarnpkg.com/prompt/-/prompt-0.2.14.tgz#57754f64f543fd7b0845707c818ece618f05ffdc"
- dependencies:
- pkginfo "0.x.x"
- read "1.0.x"
- revalidator "0.1.x"
- utile "0.2.x"
- winston "0.8.x"
-
promzard@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee"
@@ -5417,15 +5500,15 @@ 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:
+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.1, qs@~6.2.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
-qs@~6.3.0:
+qs@^6.2.0, qs@~6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
@@ -5539,13 +5622,13 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
-read@1, read@1.0.x, read@~1.0.1, read@~1.0.7:
+read@1, read@~1.0.1, read@~1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
dependencies:
mute-stream "~0.0.4"
-"readable-stream@1 || 2", readable-stream@^2, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@~2.1.5:
+"readable-stream@1 || 2", readable-stream@^2, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@~2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
dependencies:
@@ -5595,6 +5678,14 @@ readdir-scoped-modules@^1.0.0:
graceful-fs "^4.1.2"
once "^1.3.0"
+readline2@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ mute-stream "0.0.5"
+
realize-package-specifier@~3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/realize-package-specifier/-/realize-package-specifier-3.0.3.tgz#d0def882952b8de3f67eba5e91199661271f41f4"
@@ -5620,6 +5711,12 @@ recast@^0.11.17, recast@^0.11.3:
private "~0.1.5"
source-map "~0.5.0"
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ dependencies:
+ resolve "^1.1.6"
+
redent@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -5643,10 +5740,6 @@ regenerate@^1.2.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
-regenerator-runtime@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
-
regenerator@0.8.40:
version "0.8.40"
resolved "https://registry.yarnpkg.com/regenerator/-/regenerator-0.8.40.tgz#a0e457c58ebdbae575c9f8cd75127e93756435d8"
@@ -5770,14 +5863,17 @@ require-main-filename@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+require-uncached@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+ dependencies:
+ caller-path "^0.1.0"
+ resolve-from "^1.0.0"
+
requires-port@1.x.x:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-reserved-words@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.1.tgz#6f7c15e5e5614c50da961630da46addc87c0cef2"
-
resolve-dir@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
@@ -5785,6 +5881,10 @@ resolve-dir@^0.1.0:
expand-tilde "^1.2.2"
global-modules "^0.2.3"
+resolve-from@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+
resolve@1.1.7, resolve@1.1.x:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
@@ -5804,17 +5904,13 @@ retry@^0.10.0, retry@~0.10.0:
version "0.10.1"
resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
-revalidator@0.1.x:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b"
-
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
dependencies:
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, rimraf@~2.5.4:
+rimraf@2, 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, rimraf@~2.5.4:
version "2.5.4"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
dependencies:
@@ -5840,12 +5936,22 @@ rsvp@~3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.2.1.tgz#07cb4a5df25add9e826ebc67dcc9fd89db27d84a"
+run-async@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
+ dependencies:
+ once "^1.3.0"
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
dependencies:
is-promise "^2.1.0"
+rx-lite@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
+
rx@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
@@ -5964,6 +6070,14 @@ shelljs@0.3.x:
version "0.3.0"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1"
+shelljs@^0.7.5:
+ version "0.7.7"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
shellwords@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
@@ -5999,6 +6113,10 @@ slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+
slide@^1.1.3, slide@^1.1.5, slide@~1.1.3, slide@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
@@ -6073,12 +6191,6 @@ source-map-support@^0.2.10:
dependencies:
source-map "0.1.32"
-source-map-support@^0.4.0:
- version "0.4.8"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
- dependencies:
- source-map "^0.5.3"
-
source-map-url@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
@@ -6095,7 +6207,7 @@ source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@0.5.6, source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3:
+source-map@0.5.6, source-map@^0.5.0, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
@@ -6161,10 +6273,6 @@ stable@~0.1.3:
version "0.1.5"
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.5.tgz#08232f60c732e9890784b5bed0734f8b32a887b9"
-stack-trace@0.0.x:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695"
-
"statuses@>= 1.3.1 < 2", statuses@~1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@@ -6212,6 +6320,13 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
+string-width@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e"
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^3.0.0"
+
string.prototype.codepointat@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78"
@@ -6258,16 +6373,24 @@ strip-bom@^2.0.0:
dependencies:
is-utf8 "^0.2.0"
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
strip-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
dependencies:
get-stdin "^4.0.1"
-strip-json-comments@1.0.x, strip-json-comments@~1.0.2:
+strip-json-comments@1.0.x:
version "1.0.4"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
styled_string@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a"
@@ -6312,6 +6435,17 @@ syntax-error@^1.1.1:
dependencies:
acorn "^2.7.0"
+table@^3.7.8:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
+ dependencies:
+ ajv "^4.7.0"
+ ajv-keywords "^1.0.0"
+ chalk "^1.1.1"
+ lodash "^4.0.0"
+ slice-ansi "0.0.4"
+ string-width "^2.0.0"
+
tap-parser@^3.0.2:
version "3.0.5"
resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-3.0.5.tgz#b947f69e0b3e53d4b92011f6cc552e16dadc7ec9"
@@ -6430,18 +6564,10 @@ to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-to-double-quotes@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-double-quotes/-/to-double-quotes-2.0.0.tgz#aaf231d6fa948949f819301bbab4484d8588e4a7"
-
-to-fast-properties@^1.0.0, to-fast-properties@^1.0.1:
+to-fast-properties@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
-to-single-quotes@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/to-single-quotes/-/to-single-quotes-2.0.1.tgz#7cc29151f0f5f2c41946f119f5932fe554170125"
-
tough-cookie@~2.3.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
@@ -6470,6 +6596,10 @@ try-resolve@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912"
+tryit@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+
tryor@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b"
@@ -6544,10 +6674,6 @@ underscore@>=1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
-underscore@~1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
-
unique-filename@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
@@ -6581,6 +6707,12 @@ user-home@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+user-home@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
+ dependencies:
+ os-homedir "^1.0.0"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -6595,22 +6727,11 @@ util@0.10.3, "util@>=0.10.3 <1", util@~0.10.1:
dependencies:
inherits "2.0.1"
-utile@0.2.x:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/utile/-/utile-0.2.1.tgz#930c88e99098d6220834c356cbd9a770522d90d7"
- dependencies:
- async "~0.2.9"
- deep-equal "*"
- i "0.3.x"
- mkdirp "0.x.x"
- ncp "0.4.x"
- rimraf "2.x.x"
-
utils-merge@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
-uuid@^2.0.1, uuid@^2.0.2:
+uuid@^2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
@@ -6647,25 +6768,6 @@ vm-browserify@~0.0.1:
dependencies:
indexof "0.0.1"
-vow-fs@~0.3.4:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/vow-fs/-/vow-fs-0.3.6.tgz#2d4c59be22e2bf2618ddf597ab4baa923be7200d"
- dependencies:
- glob "^7.0.5"
- uuid "^2.0.2"
- vow "^0.4.7"
- vow-queue "^0.4.1"
-
-vow-queue@^0.4.1:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/vow-queue/-/vow-queue-0.4.2.tgz#e7fe17160e15c7c4184d1b666a9bc64e18e30184"
- dependencies:
- vow "~0.4.0"
-
-vow@^0.4.7, vow@~0.4.0, vow@~0.4.8:
- version "0.4.13"
- resolved "https://registry.yarnpkg.com/vow/-/vow-0.4.13.tgz#e7c14f1bd9c8be0e7359a4597fe2d1ef6d1a7e88"
-
walk-sync@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.1.3.tgz#8a07261a00bda6cfb1be25e9f100fad57546f583"
@@ -6738,18 +6840,6 @@ window-size@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
-winston@0.8.x:
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/winston/-/winston-0.8.3.tgz#64b6abf4cd01adcaefd5009393b1d8e8bec19db0"
- dependencies:
- async "0.2.x"
- colors "0.6.x"
- cycle "1.0.x"
- eyes "0.1.x"
- isstream "0.1.x"
- pkginfo "0.3.x"
- stack-trace "0.0.x"
-
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
@@ -6789,6 +6879,12 @@ write-file-atomic@~1.2.0:
imurmurhash "^0.1.4"
slide "^1.1.5"
+write@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+ dependencies:
+ mkdirp "^0.5.1"
+
ws@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018"
@@ -6806,12 +6902,6 @@ xdg-basedir@^2.0.0:
dependencies:
os-homedir "^1.0.0"
-xmlbuilder@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-3.1.0.tgz#2c86888f2d4eade850fa38ca7f7223f7209516e1"
- dependencies:
- lodash "^3.5.0"
-
xmldom@^0.1.19:
version "0.1.27"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"