From db53ac072109b62f02309421742c76f8cbeda85c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Jul 2019 13:40:43 +0200 Subject: [PATCH] Update Test & linting packages (major) (#10858) no issue - Updated Test & linting packages - Updated use of hasOwnProperty - Using Object.prototype.hasOwnProperty instead (ref. eslint.org/docs/rules/no-prototype-builtins) - Removed already defined built-in global variable Intl - Applied `--fix` with lint command on `core/test` folder - The rules were broken because some of them were made stricter for `eslint: recommended` ruleset (ref. https://eslint.org/docs/user-guide/migrating-to-6.0.0#eslint-recommended-changes) - Removed redundant global variable declarations to pass linting --- core/server/adapters/scheduling/utils.js | 2 +- core/server/api/shared/frame.js | 12 +- core/server/api/shared/pipeline.js | 2 +- core/server/api/v0.1/index.js | 10 +- core/server/api/v0.1/utils.js | 14 +- .../serializers/output/utils/extra-attrs.js | 2 +- core/server/data/db/connection.js | 2 +- .../data/importer/importers/data/base.js | 2 +- .../data/importer/importers/data/index.js | 2 +- .../data/importer/importers/data/users.js | 2 +- core/server/data/importer/index.js | 4 +- core/server/data/schema/checks.js | 16 +- core/server/data/schema/commands.js | 18 +- core/server/data/validation/index.js | 12 +- core/server/ghost-server.js | 2 +- core/server/lib/common/i18n.js | 2 - core/server/models/base/index.js | 30 +- core/server/models/base/listeners.js | 2 +- core/server/models/settings.js | 4 +- core/server/services/auth/utils.js | 4 +- core/server/update-check.js | 4 +- .../web/shared/middlewares/cache-control.js | 2 +- core/server/web/site/app.js | 2 +- .../acceptance/old/admin/integrations_spec.js | 6 +- .../acceptance/old/admin/settings_spec.js | 12 +- .../acceptance/old/content/authors_spec.js | 4 +- .../test/acceptance/old/content/posts_spec.js | 11 +- .../acceptance/old/content/settings_spec.js | 4 +- .../regression/api/v0.1/notifications_spec.js | 4 +- .../regression/api/v0.1/public_api_spec.js | 6 +- .../test/regression/api/v0.1/settings_spec.js | 12 +- core/test/regression/api/v2/admin/db_spec.js | 4 +- .../regression/api/v2/admin/posts_spec.js | 2 +- .../regression/api/v2/content/posts_spec.js | 2 +- .../regression/api/v2/content/tags_spec.js | 2 +- .../test/regression/importer/importer_spec.js | 86 +-- .../regression/models/model_posts_spec.js | 8 +- core/test/unit/api/shared/headers_spec.js | 12 +- .../unit/api/shared/validators/handle_spec.js | 8 +- .../api/shared/validators/input/all_spec.js | 2 +- .../unit/api/v0.1/decorators/urls_spec.js | 2 +- .../v2/utils/serializers/input/pages_spec.js | 10 +- .../v2/utils/serializers/input/posts_spec.js | 26 +- .../serializers/output/utils/mapper_spec.js | 4 +- .../serializers/output/utils/url_spec.js | 2 +- .../v2/utils/validators/input/pages_spec.js | 12 +- .../v2/utils/validators/input/posts_spec.js | 12 +- .../v2/utils/validators/input/tags_spec.js | 10 +- .../apps/private-blogging/controller_spec.js | 1 - .../apps/private-blogging/middleware_spec.js | 1 - core/test/unit/data/meta/title_spec.js | 2 +- core/test/unit/helpers/ghost_head_spec.js | 34 +- core/test/unit/helpers/img_url_spec.js | 6 +- core/test/unit/lib/image/manipulator_spec.js | 2 +- .../unit/lib/mobiledoc/cards/gallery_spec.js | 2 +- .../converters/mobiledoc-converter_spec.js | 2 +- core/test/unit/lib/promise/sequence_spec.js | 2 +- core/test/unit/models/base/index_spec.js | 4 +- core/test/unit/models/post_spec.js | 6 +- core/test/unit/models/session_spec.js | 2 +- .../unit/services/auth/members/index_spec.js | 16 +- .../permissions/parse-context_spec.js | 2 +- .../routing/StaticRoutesRouter_spec.js | 2 +- .../services/settings/ensure-settings_spec.js | 2 +- .../unit/services/settings/settings_spec.js | 4 +- .../unit/services/settings/validate_spec.js | 8 +- .../unit/services/themes/validate_spec.js | 4 +- .../test/unit/web/middleware/api/cors_spec.js | 2 +- .../web/middleware/image/normalize_spec.js | 4 +- core/test/utils/fixtures/data-generator.js | 2 +- core/test/utils/index.js | 6 +- package.json | 6 +- yarn.lock | 597 +++++++++++++++--- 73 files changed, 778 insertions(+), 356 deletions(-) diff --git a/core/server/adapters/scheduling/utils.js b/core/server/adapters/scheduling/utils.js index 4d5b4e5ff1..39c3078fb2 100644 --- a/core/server/adapters/scheduling/utils.js +++ b/core/server/adapters/scheduling/utils.js @@ -31,7 +31,7 @@ exports.createAdapter = function (options) { })); } - if (cache.hasOwnProperty(activeAdapter)) { + if (Object.prototype.hasOwnProperty.call(cache, activeAdapter)) { return cache[activeAdapter]; } diff --git a/core/server/api/shared/frame.js b/core/server/api/shared/frame.js index 5991b6b0e5..f690a1616c 100644 --- a/core/server/api/shared/frame.js +++ b/core/server/api/shared/frame.js @@ -45,15 +45,15 @@ class Frame { apiConfig.options = apiConfig.options(this); } - if (this.original.hasOwnProperty('query')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'query')) { Object.assign(this.options, _.pick(this.original.query, apiConfig.options)); } - if (this.original.hasOwnProperty('params')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'params')) { Object.assign(this.options, _.pick(this.original.params, apiConfig.options)); } - if (this.original.hasOwnProperty('options')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'options')) { Object.assign(this.options, _.pick(this.original.options, apiConfig.options)); } } @@ -68,15 +68,15 @@ class Frame { apiConfig.data = apiConfig.data(this); } - if (this.original.hasOwnProperty('query')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'query')) { Object.assign(this.data, _.pick(this.original.query, apiConfig.data)); } - if (this.original.hasOwnProperty('params')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'params')) { Object.assign(this.data, _.pick(this.original.params, apiConfig.data)); } - if (this.original.hasOwnProperty('options')) { + if (Object.prototype.hasOwnProperty.call(this.original, 'options')) { Object.assign(this.data, _.pick(this.original.options, apiConfig.data)); } } diff --git a/core/server/api/shared/pipeline.js b/core/server/api/shared/pipeline.js index 3853612035..1ea6490661 100644 --- a/core/server/api/shared/pipeline.js +++ b/core/server/api/shared/pipeline.js @@ -105,7 +105,7 @@ const STAGES = { const tasks = []; // CASE: it's required to put the permission key to avoid security holes - if (!apiImpl.hasOwnProperty('permissions')) { + if (!Object.prototype.hasOwnProperty.call(apiImpl, 'permissions')) { return Promise.reject(new common.errors.IncorrectUsageError()); } diff --git a/core/server/api/v0.1/index.js b/core/server/api/v0.1/index.js index 337bdb8ff8..e128b0058b 100644 --- a/core/server/api/v0.1/index.js +++ b/core/server/api/v0.1/index.js @@ -121,24 +121,24 @@ const locationHeader = (req, result) => { statusQuery; if (req.method === 'POST') { - if (result.hasOwnProperty('posts')) { + if (Object.prototype.hasOwnProperty.call(result, 'posts')) { newObject = result.posts[0]; statusQuery = `/?status=${newObject.status}`; location = urlUtils.urlJoin(apiRoot, 'posts', newObject.id, statusQuery); - } else if (result.hasOwnProperty('notifications')) { + } else if (Object.prototype.hasOwnProperty.call(result, 'notifications')) { newObject = result.notifications[0]; // CASE: you add one notification, but it's a duplicate, the API will return {notifications: []} if (newObject) { location = urlUtils.urlJoin(apiRoot, 'notifications', newObject.id, '/'); } - } else if (result.hasOwnProperty('users')) { + } else if (Object.prototype.hasOwnProperty.call(result, 'users')) { newObject = result.users[0]; location = urlUtils.urlJoin(apiRoot, 'users', newObject.id, '/'); - } else if (result.hasOwnProperty('tags')) { + } else if (Object.prototype.hasOwnProperty.call(result, 'tags')) { newObject = result.tags[0]; location = urlUtils.urlJoin(apiRoot, 'tags', newObject.id, '/'); - } else if (result.hasOwnProperty('webhooks')) { + } else if (Object.prototype.hasOwnProperty.call(result, 'webhooks')) { newObject = result.webhooks[0]; location = urlUtils.urlJoin(apiRoot, 'webhooks', newObject.id, '/'); } diff --git a/core/server/api/v0.1/utils.js b/core/server/api/v0.1/utils.js index 427c9178f2..3c50b9f652 100644 --- a/core/server/api/v0.1/utils.js +++ b/core/server/api/v0.1/utils.js @@ -329,7 +329,7 @@ utils = { * * @deprecated: `author`, will be removed in Ghost 3.0 */ - if (object.posts[0].hasOwnProperty('author')) { + if (Object.prototype.hasOwnProperty.call(object.posts[0], 'author')) { object.posts[0].author_id = object.posts[0].author; delete object.posts[0].author; } @@ -352,7 +352,7 @@ utils = { * * @TODO: remove `id` restriction in Ghost 3.0 */ - if (object.posts[0].hasOwnProperty('authors')) { + if (Object.prototype.hasOwnProperty.call(object.posts[0], 'authors')) { if (!_.isArray(object.posts[0].authors) || (object.posts[0].authors.length && _.filter(object.posts[0].authors, 'id').length !== object.posts[0].authors.length)) { return Promise.reject(new common.errors.BadRequestError({ @@ -374,11 +374,11 @@ utils = { */ if (object.posts[0].authors && object.posts[0].authors.length) { _.each(object.posts[0].authors, (author, index) => { - if (author.hasOwnProperty('roles')) { + if (Object.prototype.hasOwnProperty.call(author, 'roles')) { delete object.posts[0].authors[index].roles; } - if (author.hasOwnProperty('permissions')) { + if (Object.prototype.hasOwnProperty.call(author, 'permissions')) { delete object.posts[0].authors[index].permissions; } }); @@ -391,15 +391,15 @@ utils = { * * See @TODO on the fn description. This information lives in two places. Not nice. */ - if (object.posts[0].hasOwnProperty('tags')) { + if (Object.prototype.hasOwnProperty.call(object.posts[0], 'tags')) { if (_.isArray(object.posts[0].tags) && object.posts[0].tags.length) { _.each(object.posts[0].tags, (tag, index) => { - if (tag.hasOwnProperty('parent')) { + if (Object.prototype.hasOwnProperty.call(tag, 'parent')) { object.posts[0].tags[index].parent_id = tag.parent; delete object.posts[0].tags[index].parent; } - if (tag.hasOwnProperty('posts')) { + if (Object.prototype.hasOwnProperty.call(tag, 'posts')) { delete object.posts[0].tags[index].posts; } }); diff --git a/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js b/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js index bbc651b4af..7a3f3d6a01 100644 --- a/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +++ b/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js @@ -1,7 +1,7 @@ module.exports.forPost = (frame, model, attrs) => { const _ = require('lodash'); - if (!frame.options.hasOwnProperty('columns') || + if (!Object.prototype.hasOwnProperty.call(frame.options, 'columns') || (frame.options.columns.includes('excerpt') && frame.options.formats && frame.options.formats.includes('plaintext'))) { if (_.isEmpty(attrs.custom_excerpt)) { const plaintext = model.get('plaintext'); diff --git a/core/server/data/db/connection.js b/core/server/data/db/connection.js index 2ad5b5b701..78f5135375 100644 --- a/core/server/data/db/connection.js +++ b/core/server/data/db/connection.js @@ -11,7 +11,7 @@ function configure(dbConfig) { var client = dbConfig.client; if (client === 'sqlite3') { - dbConfig.useNullAsDefault = dbConfig.hasOwnProperty('useNullAsDefault') ? dbConfig.useNullAsDefault : true; + dbConfig.useNullAsDefault = Object.prototype.hasOwnProperty.call(dbConfig, 'useNullAsDefault') ? dbConfig.useNullAsDefault : true; } if (client === 'mysql') { diff --git a/core/server/data/importer/importers/data/base.js b/core/server/data/importer/importers/data/base.js index 41787e5f25..bdea18af6e 100644 --- a/core/server/data/importer/importers/data/base.js +++ b/core/server/data/importer/importers/data/base.js @@ -183,7 +183,7 @@ class Base { let userReferenceProblems = {}; const handleObject = (obj, key) => { - if (!obj.hasOwnProperty(key)) { + if (!Object.prototype.hasOwnProperty.call(obj, key)) { return; } diff --git a/core/server/data/importer/importers/data/index.js b/core/server/data/importer/importers/data/index.js index 1c8badbc78..f19d0ae6f7 100644 --- a/core/server/data/importer/importers/data/index.js +++ b/core/server/data/importer/importers/data/index.js @@ -48,7 +48,7 @@ DataImporter = { } }; - if (!importOptions.hasOwnProperty('returnImportedData')) { + if (!Object.prototype.hasOwnProperty.call(importOptions, 'returnImportedData')) { importOptions.returnImportedData = false; } diff --git a/core/server/data/importer/importers/data/users.js b/core/server/data/importer/importers/data/users.js index 27b91db5a2..970d754756 100644 --- a/core/server/data/importer/importers/data/users.js +++ b/core/server/data/importer/importers/data/users.js @@ -34,7 +34,7 @@ class UsersImporter extends BaseImporter { // NOTE: sort out duplicated roles based on incremental id _.each(this.requiredFromFile.roles_users, (attachedRole) => { - if (lookup.hasOwnProperty(attachedRole.user_id)) { + if (Object.prototype.hasOwnProperty.call(lookup, attachedRole.user_id)) { if (lookup[attachedRole.user_id].id < attachedRole.id) { lookup[attachedRole.user_id] = attachedRole; } diff --git a/core/server/data/importer/index.js b/core/server/data/importer/index.js index cf7fa0a991..16965bf21d 100644 --- a/core/server/data/importer/index.js +++ b/core/server/data/importer/index.js @@ -235,7 +235,7 @@ _.extend(ImportManager.prototype, { baseDir = self.getBaseDirectory(zipDirectory); _.each(self.handlers, function (handler) { - if (importData.hasOwnProperty(handler.type)) { + if (Object.prototype.hasOwnProperty.call(importData, handler.type)) { // This limitation is here to reduce the complexity of the importer for now return Promise.reject(new common.errors.UnsupportedMediaTypeError({ message: common.i18n.t('errors.data.importer.index.zipContainsMultipleDataFormats') @@ -326,7 +326,7 @@ _.extend(ImportManager.prototype, { importOptions = importOptions || {}; var ops = []; _.each(this.importers, function (importer) { - if (importData.hasOwnProperty(importer.type)) { + if (Object.prototype.hasOwnProperty.call(importData, importer.type)) { ops.push(function () { return importer.doImport(importData[importer.type], importOptions); }); diff --git a/core/server/data/schema/checks.js b/core/server/data/schema/checks.js index 293b27c9e1..b0b9316d9e 100644 --- a/core/server/data/schema/checks.js +++ b/core/server/data/schema/checks.js @@ -1,21 +1,21 @@ function isPost(jsonData) { - return jsonData.hasOwnProperty('html') && - jsonData.hasOwnProperty('title') && jsonData.hasOwnProperty('slug'); + return Object.prototype.hasOwnProperty.call(jsonData, 'html') && + Object.prototype.hasOwnProperty.call(jsonData, 'title') && Object.prototype.hasOwnProperty.call(jsonData, 'slug'); } function isTag(jsonData) { - return jsonData.hasOwnProperty('name') && jsonData.hasOwnProperty('slug') && - jsonData.hasOwnProperty('description') && jsonData.hasOwnProperty('feature_image'); + return Object.prototype.hasOwnProperty.call(jsonData, 'name') && Object.prototype.hasOwnProperty.call(jsonData, 'slug') && + Object.prototype.hasOwnProperty.call(jsonData, 'description') && Object.prototype.hasOwnProperty.call(jsonData, 'feature_image'); } function isUser(jsonData) { - return jsonData.hasOwnProperty('bio') && jsonData.hasOwnProperty('website') && - jsonData.hasOwnProperty('profile_image') && jsonData.hasOwnProperty('location'); + return Object.prototype.hasOwnProperty.call(jsonData, 'bio') && Object.prototype.hasOwnProperty.call(jsonData, 'website') && + Object.prototype.hasOwnProperty.call(jsonData, 'profile_image') && Object.prototype.hasOwnProperty.call(jsonData, 'location'); } function isNav(jsonData) { - return jsonData.hasOwnProperty('label') && jsonData.hasOwnProperty('url') && - jsonData.hasOwnProperty('slug') && jsonData.hasOwnProperty('current'); + return Object.prototype.hasOwnProperty.call(jsonData, 'label') && Object.prototype.hasOwnProperty.call(jsonData, 'url') && + Object.prototype.hasOwnProperty.call(jsonData, 'slug') && Object.prototype.hasOwnProperty.call(jsonData, 'current'); } module.exports = { diff --git a/core/server/data/schema/commands.js b/core/server/data/schema/commands.js index 13558108ec..6b3e9695dd 100644 --- a/core/server/data/schema/commands.js +++ b/core/server/data/schema/commands.js @@ -10,10 +10,10 @@ function addTableColumn(tableName, table, columnName) { columnSpec = schema[tableName][columnName]; // creation distinguishes between text with fieldtype, string with maxlength and all others - if (columnSpec.type === 'text' && columnSpec.hasOwnProperty('fieldtype')) { + if (columnSpec.type === 'text' && Object.prototype.hasOwnProperty.call(columnSpec, 'fieldtype')) { column = table[columnSpec.type](columnName, columnSpec.fieldtype); } else if (columnSpec.type === 'string') { - if (columnSpec.hasOwnProperty('maxlength')) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'maxlength')) { column = table[columnSpec.type](columnName, columnSpec.maxlength); } else { column = table[columnSpec.type](columnName, 191); @@ -22,28 +22,28 @@ function addTableColumn(tableName, table, columnName) { column = table[columnSpec.type](columnName); } - if (columnSpec.hasOwnProperty('nullable') && columnSpec.nullable === true) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'nullable') && columnSpec.nullable === true) { column.nullable(); } else { column.nullable(false); } - if (columnSpec.hasOwnProperty('primary') && columnSpec.primary === true) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'primary') && columnSpec.primary === true) { column.primary(); } - if (columnSpec.hasOwnProperty('unique') && columnSpec.unique) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'unique') && columnSpec.unique) { column.unique(); } - if (columnSpec.hasOwnProperty('unsigned') && columnSpec.unsigned) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'unsigned') && columnSpec.unsigned) { column.unsigned(); } - if (columnSpec.hasOwnProperty('references')) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'references')) { // check if table exists? column.references(columnSpec.references); } - if (columnSpec.hasOwnProperty('defaultTo')) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'defaultTo')) { column.defaultTo(columnSpec.defaultTo); } - if (columnSpec.hasOwnProperty('index') && columnSpec.index === true) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'index') && columnSpec.index === true) { column.index(); } } diff --git a/core/server/data/validation/index.js b/core/server/data/validation/index.js index 6b4a617610..58136d3650 100644 --- a/core/server/data/validation/index.js +++ b/core/server/data/validation/index.js @@ -190,9 +190,9 @@ validateSchema = function validateSchema(tableName, model, options) { } // check nullable - if (schema[tableName][columnKey].hasOwnProperty('nullable') && + if (Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'nullable') && schema[tableName][columnKey].nullable !== true && - !schema[tableName][columnKey].hasOwnProperty('defaultTo') + !Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'defaultTo') ) { if (validator.empty(strVal)) { message = common.i18n.t('notices.data.validation.index.valueCannotBeBlank', { @@ -207,7 +207,7 @@ validateSchema = function validateSchema(tableName, model, options) { } // validate boolean columns - if (schema[tableName][columnKey].hasOwnProperty('type') + if (Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'type') && schema[tableName][columnKey].type === 'bool') { if (!(validator.isBoolean(strVal) || validator.empty(strVal))) { message = common.i18n.t('notices.data.validation.index.valueMustBeBoolean', { @@ -229,7 +229,7 @@ validateSchema = function validateSchema(tableName, model, options) { // TODO: check if mandatory values should be enforced if (model.get(columnKey) !== null && model.get(columnKey) !== undefined) { // check length - if (schema[tableName][columnKey].hasOwnProperty('maxlength')) { + if (Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'maxlength')) { if (!validator.isLength(strVal, 0, schema[tableName][columnKey].maxlength)) { message = common.i18n.t('notices.data.validation.index.valueExceedsMaxLength', { @@ -245,12 +245,12 @@ validateSchema = function validateSchema(tableName, model, options) { } // check validations objects - if (schema[tableName][columnKey].hasOwnProperty('validations')) { + if (Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'validations')) { validationErrors = validationErrors.concat(validate(strVal, columnKey, schema[tableName][columnKey].validations, tableName)); } // check type - if (schema[tableName][columnKey].hasOwnProperty('type')) { + if (Object.prototype.hasOwnProperty.call(schema[tableName][columnKey], 'type')) { if (schema[tableName][columnKey].type === 'integer' && !validator.isInt(strVal)) { message = common.i18n.t('notices.data.validation.index.valueIsNotInteger', { tableName: tableName, diff --git a/core/server/ghost-server.js b/core/server/ghost-server.js index 682dd0f4f0..be01f94aee 100644 --- a/core/server/ghost-server.js +++ b/core/server/ghost-server.js @@ -45,7 +45,7 @@ GhostServer.prototype.start = function (externalApp) { }; return new Promise(function (resolve, reject) { - if (config.get('server').hasOwnProperty('socket')) { + if (Object.prototype.hasOwnProperty.call(config.get('server'), 'socket')) { socketConfig = config.get('server').socket; if (_.isString(socketConfig)) { diff --git a/core/server/lib/common/i18n.js b/core/server/lib/common/i18n.js index 56c188b5f1..c0bef401ae 100644 --- a/core/server/lib/common/i18n.js +++ b/core/server/lib/common/i18n.js @@ -1,5 +1,3 @@ -/* global Intl */ - const supportedLocales = ['en'], chalk = require('chalk'), fs = require('fs-extra'), diff --git a/core/server/models/base/index.js b/core/server/models/base/index.js index 3570c115b8..2746f8b39c 100644 --- a/core/server/models/base/index.js +++ b/core/server/models/base/index.js @@ -312,25 +312,25 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ * Exceptions: internal context or importing */ onCreating: function onCreating(model, attr, options) { - if (schema.tables[this.tableName].hasOwnProperty('created_by')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'created_by')) { if (!options.importing || (options.importing && !this.get('created_by'))) { this.set('created_by', String(this.contextUser(options))); } } - if (schema.tables[this.tableName].hasOwnProperty('updated_by')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'updated_by')) { if (!options.importing) { this.set('updated_by', String(this.contextUser(options))); } } - if (schema.tables[this.tableName].hasOwnProperty('created_at')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'created_at')) { if (!model.get('created_at')) { model.set('created_at', new Date()); } } - if (schema.tables[this.tableName].hasOwnProperty('updated_at')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'updated_at')) { if (!model.get('updated_at')) { model.set('updated_at', new Date()); } @@ -378,20 +378,20 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ model.changed = _.omit(model.changed, this.relationships); } - if (schema.tables[this.tableName].hasOwnProperty('updated_by')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'updated_by')) { if (!options.importing && !options.migrating) { this.set('updated_by', String(this.contextUser(options))); } } if (options && options.context && !options.context.internal && !options.importing) { - if (schema.tables[this.tableName].hasOwnProperty('created_at')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'created_at')) { if (model.hasDateChanged('created_at', {beforeWrite: true})) { model.set('created_at', this.previous('created_at')); } } - if (schema.tables[this.tableName].hasOwnProperty('created_by')) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'created_by')) { if (model.hasChanged('created_by')) { model.set('created_by', String(this.previous('created_by'))); } @@ -399,7 +399,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ } // CASE: do not allow setting only the `updated_at` field, exception: importing - if (schema.tables[this.tableName].hasOwnProperty('updated_at') && !options.importing) { + if (Object.prototype.hasOwnProperty.call(schema.tables[this.tableName], 'updated_at') && !options.importing) { if (options.migrating) { model.set('updated_at', model.previous('updated_at')); } else if (Object.keys(model.changed).length === 1 && model.changed.updated_at) { @@ -445,7 +445,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ _.each(attrs, function each(value, key) { if (value !== null - && schema.tables[self.tableName].hasOwnProperty(key) + && Object.prototype.hasOwnProperty.call(schema.tables[self.tableName], key) && schema.tables[self.tableName][key].type === 'dateTime') { attrs[key] = moment(value).format('YYYY-MM-DD HH:mm:ss'); } @@ -467,7 +467,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ _.each(attrs, function each(value, key) { if (value !== null - && schema.tables[self.tableName].hasOwnProperty(key) + && Object.prototype.hasOwnProperty.call(schema.tables[self.tableName], key) && schema.tables[self.tableName][key].type === 'dateTime') { dateMoment = moment(value); @@ -488,7 +488,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ fixBools: function fixBools(attrs) { var self = this; _.each(attrs, function each(value, key) { - if (schema.tables[self.tableName].hasOwnProperty(key) + if (Object.prototype.hasOwnProperty.call(schema.tables[self.tableName], key) && schema.tables[self.tableName][key].type === 'bool') { attrs[key] = value ? true : false; } @@ -605,7 +605,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ if (this.relationships) { this.relationships.forEach((relation) => { - if (this._previousRelations && this._previousRelations.hasOwnProperty(relation)) { + if (this._previousRelations && Object.prototype.hasOwnProperty.call(this._previousRelations, relation)) { clonedModel.related(relation).models = this._previousRelations[relation].models; } }); @@ -737,7 +737,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ _.each(data, (value, property) => { if (value !== null - && schema.tables[tableName].hasOwnProperty(property) + && Object.prototype.hasOwnProperty.call(schema.tables[tableName], property) && schema.tables[tableName][property].type === 'dateTime' && typeof value === 'string' ) { @@ -758,7 +758,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ _.each(data[property], (relation, indexInArr) => { _.each(relation, (value, relationProperty) => { if (value !== null - && schema.tables[this.prototype.relationshipBelongsTo[property]].hasOwnProperty(relationProperty) + && Object.prototype.hasOwnProperty.call(schema.tables[this.prototype.relationshipBelongsTo[property]], relationProperty) && schema.tables[this.prototype.relationshipBelongsTo[property]][relationProperty].type === 'dateTime' && typeof value === 'string' ) { @@ -792,7 +792,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ unfilteredOptions = unfilteredOptions || {}; filterConfig = filterConfig || {}; - if (unfilteredOptions.hasOwnProperty('include')) { + if (Object.prototype.hasOwnProperty.call(unfilteredOptions, 'include')) { throw new common.errors.IncorrectUsageError({ message: 'The model layer expects using `withRelated`.' }); diff --git a/core/server/models/base/listeners.js b/core/server/models/base/listeners.js index bff70e3615..558fb05d7c 100644 --- a/core/server/models/base/listeners.js +++ b/core/server/models/base/listeners.js @@ -137,7 +137,7 @@ common.events.on('settings.notifications.edited', function (settingModel) { allNotifications = allNotifications.filter(function (notification) { // Do not delete the release notification - if (notification.hasOwnProperty('custom') && !notification.custom) { + if (Object.prototype.hasOwnProperty.call(notification, 'custom') && !notification.custom) { return true; } diff --git a/core/server/models/settings.js b/core/server/models/settings.js index 38539b77f4..6623ea67ba 100644 --- a/core/server/models/settings.js +++ b/core/server/models/settings.js @@ -181,11 +181,11 @@ Settings = ghostBookshelf.Model.extend({ return setting.save(item, options); } else { // If we have a value, set it. - if (item.hasOwnProperty('value')) { + if (Object.prototype.hasOwnProperty.call(item, 'value')) { setting.set('value', item.value); } // Internal context can overwrite type (for fixture migrations) - if (options.context && options.context.internal && item.hasOwnProperty('type')) { + if (options.context && options.context.internal && Object.prototype.hasOwnProperty.call(item, 'type')) { setting.set('type', item.type); } diff --git a/core/server/services/auth/utils.js b/core/server/services/auth/utils.js index 06afdfe15c..7157778285 100644 --- a/core/server/services/auth/utils.js +++ b/core/server/services/auth/utils.js @@ -132,6 +132,6 @@ module.exports.getBearerAutorizationToken = function (req) { }; module.exports.hasGrantType = function hasGrantType(req, type) { - return req.body && req.body.hasOwnProperty('grant_type') && req.body.grant_type === type - || req.query && req.query.hasOwnProperty('grant_type') && req.query.grant_type === type; + return req.body && Object.prototype.hasOwnProperty.call(req.body, 'grant_type') && req.body.grant_type === type + || req.query && Object.prototype.hasOwnProperty.call(req.query, 'grant_type') && req.query.grant_type === type; }; diff --git a/core/server/update-check.js b/core/server/update-check.js index ca51d19acb..06fd55f91b 100644 --- a/core/server/update-check.js +++ b/core/server/update-check.js @@ -72,7 +72,7 @@ function createCustomNotification(notification) { status: message.status || 'alert', type: message.type || 'info', id: message.id, - dismissible: message.hasOwnProperty('dismissible') ? message.dismissible : true, + dismissible: Object.prototype.hasOwnProperty.call(message, 'dismissible') ? message.dismissible : true, top: !!message.top, message: message.content }; @@ -240,7 +240,7 @@ function updateCheckResponse(response) { */ if (_.isArray(response)) { notifications = response; - } else if ((response.hasOwnProperty('notifications') && _.isArray(response.notifications))) { + } else if ((Object.prototype.hasOwnProperty.call(response, 'notifications') && _.isArray(response.notifications))) { notifications = response.notifications; } else { // CASE: default right now diff --git a/core/server/web/shared/middlewares/cache-control.js b/core/server/web/shared/middlewares/cache-control.js index 8a62bdb098..f04cdfe9ba 100644 --- a/core/server/web/shared/middlewares/cache-control.js +++ b/core/server/web/shared/middlewares/cache-control.js @@ -17,7 +17,7 @@ const cacheControl = (options) => { let output; - if (isString(options) && profiles.hasOwnProperty(options)) { + if (isString(options) && Object.prototype.hasOwnProperty.call(profiles, options)) { output = profiles[options]; } diff --git a/core/server/web/site/app.js b/core/server/web/site/app.js index 1155c9ee7b..ffe91a6672 100644 --- a/core/server/web/site/app.js +++ b/core/server/web/site/app.js @@ -144,7 +144,7 @@ module.exports = function setupSiteApp(options = {}) { config.get('apps:internal').forEach((appName) => { const app = require(path.join(config.get('paths').internalAppPath, appName)); - if (app.hasOwnProperty('setupMiddleware')) { + if (Object.prototype.hasOwnProperty.call(app, 'setupMiddleware')) { app.setupMiddleware(siteApp); } }); diff --git a/core/test/acceptance/old/admin/integrations_spec.js b/core/test/acceptance/old/admin/integrations_spec.js index c8f8e7ab2f..ee381ec3dc 100644 --- a/core/test/acceptance/old/admin/integrations_spec.js +++ b/core/test/acceptance/old/admin/integrations_spec.js @@ -70,7 +70,7 @@ describe('Integrations API', function () { name: 'Integratatron4000', webhooks: [{ event: 'something', - target_url: 'http://example.com', + target_url: 'http://example.com' }] }] }) @@ -177,7 +177,7 @@ describe('Integrations API', function () { should.equal(body.meta.pagination.next, null); should.equal(body.meta.pagination.prev, null); - body.integrations.forEach(integration => { + body.integrations.forEach((integration) => { should.exist(integration.api_keys); }); @@ -241,7 +241,7 @@ describe('Integrations API', function () { .set('Origin', config.get('url')) .send({ integrations: [{ - name: 'Webhook-less Integration', + name: 'Webhook-less Integration' }] }) .expect(201) diff --git a/core/test/acceptance/old/admin/settings_spec.js b/core/test/acceptance/old/admin/settings_spec.js index 64679c247d..6787779aa0 100644 --- a/core/test/acceptance/old/admin/settings_spec.js +++ b/core/test/acceptance/old/admin/settings_spec.js @@ -161,23 +161,23 @@ describe('Settings API', function () { }); }); - it('Can download routes.yaml', ()=> { + it('Can download routes.yaml', () => { return request.get(localUtils.API.getApiQuery('settings/routes/yaml/')) .set('Origin', config.get('url')) .set('Accept', 'application/yaml') .expect(200) - .then((res)=> { + .then((res) => { res.headers['content-disposition'].should.eql('Attachment; filename="routes.yaml"'); res.headers['content-type'].should.eql('application/yaml; charset=utf-8'); res.headers['content-length'].should.eql('138'); }); }); - it('Can upload routes.yaml', ()=> { + it('Can upload routes.yaml', () => { const newRoutesYamlPath = `${os.tmpdir()}/routes.yaml`; return fs.writeFile(newRoutesYamlPath, 'routes:\ncollections:\ntaxonomies:\n') - .then(()=> { + .then(() => { return request .post(localUtils.API.getApiQuery('settings/routes/yaml/')) .set('Origin', config.get('url')) @@ -185,10 +185,10 @@ describe('Settings API', function () { .expect('Content-Type', /application\/json/) .expect(200); }) - .then((res)=> { + .then((res) => { res.headers['x-cache-invalidate'].should.eql('/*'); }) - .finally(()=> { + .finally(() => { return ghostServer.stop(); }); }); diff --git a/core/test/acceptance/old/content/authors_spec.js b/core/test/acceptance/old/content/authors_spec.js index dd15696006..503447224b 100644 --- a/core/test/acceptance/old/content/authors_spec.js +++ b/core/test/acceptance/old/content/authors_spec.js @@ -61,7 +61,7 @@ describe('Authors Content API', function () { // Public api returns all authors, but no status! Locked/Inactive authors can still have written articles. models.Author.findPage(Object.assign({status: 'all'}, testUtils.context.internal)) .then((response) => { - _.map(response.data, (model) => model.toJSON()).length.should.eql(3); + _.map(response.data, model => model.toJSON()).length.should.eql(3); done(); }); }); @@ -93,7 +93,7 @@ describe('Authors Content API', function () { const ids = jsonResponse.authors .filter(author => (author.slug !== 'ghost')) - .map(user=> user.id); + .map(user => user.id); ids.should.eql([ testUtils.DataGenerator.Content.users[3].id, diff --git a/core/test/acceptance/old/content/posts_spec.js b/core/test/acceptance/old/content/posts_spec.js index d333082843..ef43e68ac8 100644 --- a/core/test/acceptance/old/content/posts_spec.js +++ b/core/test/acceptance/old/content/posts_spec.js @@ -114,7 +114,7 @@ describe('Posts Content API', function () { testUtils.DataGenerator.Content.posts[4].id, testUtils.DataGenerator.Content.posts[2].id, testUtils.DataGenerator.Content.posts[1].id, - testUtils.DataGenerator.Content.posts[0].id, + testUtils.DataGenerator.Content.posts[0].id ]); // Each post must either be featured or have the tag 'kitchen-sink' @@ -170,8 +170,13 @@ describe('Posts Content API', function () { }); primaryAuthors.should.matchAny(/joe-bloggs|ghost'/); - _.filter(primaryAuthors, (value) => {return value === 'ghost';}).length.should.eql(7); - _.filter(primaryAuthors, (value) => {return value === 'joe-bloggs';}).length.should.eql(4); + _.filter(primaryAuthors, (value) => { + return value === 'ghost'; + }).length.should.eql(7); + + _.filter(primaryAuthors, (value) => { + return value === 'joe-bloggs'; + }).length.should.eql(4); done(); }); diff --git a/core/test/acceptance/old/content/settings_spec.js b/core/test/acceptance/old/content/settings_spec.js index 4fe341375b..fa15574d80 100644 --- a/core/test/acceptance/old/content/settings_spec.js +++ b/core/test/acceptance/old/content/settings_spec.js @@ -59,8 +59,8 @@ describe('Settings Content API', function () { return; } - let defaultKey = _.findKey(publicSettings, (v) => v === key); - let defaultValue = _.find(defaultSettings, (setting) => setting.key === defaultKey).defaultValue; + let defaultKey = _.findKey(publicSettings, v => v === key); + let defaultValue = _.find(defaultSettings, setting => setting.key === defaultKey).defaultValue; // Convert empty strings to null defaultValue = defaultValue || null; diff --git a/core/test/regression/api/v0.1/notifications_spec.js b/core/test/regression/api/v0.1/notifications_spec.js index cd87213543..8420f7b39b 100644 --- a/core/test/regression/api/v0.1/notifications_spec.js +++ b/core/test/regression/api/v0.1/notifications_spec.js @@ -144,7 +144,7 @@ describe('Notifications API', function () { .expect('Content-Type', /json/) .expect('Cache-Control', testUtils.cacheRules.private) .expect(200) - .then(res => { + .then((res) => { const jsonResponse = res.body; jsonResponse.notifications.should.be.an.Array().with.lengthOf(4); @@ -210,7 +210,7 @@ describe('Notifications API', function () { .expect('Content-Type', /json/) .expect('Cache-Control', testUtils.cacheRules.private) .expect(404) - .then(res => { + .then((res) => { res.body.errors[0].message.should.equal('Notification does not exist.'); }); }); diff --git a/core/test/regression/api/v0.1/public_api_spec.js b/core/test/regression/api/v0.1/public_api_spec.js index c599abe1cf..04fed7f4d4 100644 --- a/core/test/regression/api/v0.1/public_api_spec.js +++ b/core/test/regression/api/v0.1/public_api_spec.js @@ -116,7 +116,7 @@ describe('Public API', function () { testUtils.DataGenerator.Content.posts[4].id, testUtils.DataGenerator.Content.posts[2].id, testUtils.DataGenerator.Content.posts[1].id, - testUtils.DataGenerator.Content.posts[0].id, + testUtils.DataGenerator.Content.posts[0].id ]); // API does not return drafts @@ -755,7 +755,7 @@ describe('Public API', function () { // Public api returns all users, but no status! Locked/Inactive users can still have written articles. models.User.findPage(Object.assign({status: 'all'}, testUtils.context.internal)) .then((response) => { - _.map(response.data, (model) => model.toJSON()).length.should.eql(7); + _.map(response.data, model => model.toJSON()).length.should.eql(7); done(); }); }); @@ -903,7 +903,7 @@ describe('Public API', function () { const ids = jsonResponse.users .filter(user => (user.slug !== 'ghost')) .filter(user => (user.slug !== 'inactive')) - .map(user=> user.id); + .map(user => user.id); ids.should.eql([ testUtils.DataGenerator.Content.users[1].id, diff --git a/core/test/regression/api/v0.1/settings_spec.js b/core/test/regression/api/v0.1/settings_spec.js index ef8206ae07..3f44854108 100644 --- a/core/test/regression/api/v0.1/settings_spec.js +++ b/core/test/regression/api/v0.1/settings_spec.js @@ -251,23 +251,23 @@ describe('Settings API', function () { }); }); - it('can download routes.yaml', ()=> { + it('can download routes.yaml', () => { return request.get(localUtils.API.getApiQuery('settings/routes/yaml/')) .set('Authorization', 'Bearer ' + accesstoken) .set('Accept', 'application/yaml') .expect(200) - .then((res)=> { + .then((res) => { res.headers['content-disposition'].should.eql('Attachment; filename="routes.yaml"'); res.headers['content-type'].should.eql('application/yaml; charset=utf-8'); res.headers['content-length'].should.eql('138'); }); }); - it('can upload routes.yaml', ()=> { + it('can upload routes.yaml', () => { const newRoutesYamlPath = `${os.tmpdir()}/routes.yaml`; return fs.writeFile(newRoutesYamlPath, 'routes:\ncollections:\ntaxonomies:\n') - .then(()=> { + .then(() => { return request .post(localUtils.API.getApiQuery('settings/routes/yaml/')) .set('Authorization', 'Bearer ' + accesstoken) @@ -276,10 +276,10 @@ describe('Settings API', function () { .expect('Content-Type', /application\/json/) .expect(200); }) - .then((res)=> { + .then((res) => { res.headers['x-cache-invalidate'].should.eql('/*'); }) - .finally(()=> { + .finally(() => { return ghostServer.stop(); }); }); diff --git a/core/test/regression/api/v2/admin/db_spec.js b/core/test/regression/api/v2/admin/db_spec.js index 8c90cdd8a9..1addd89f88 100644 --- a/core/test/regression/api/v2/admin/db_spec.js +++ b/core/test/regression/api/v2/admin/db_spec.js @@ -147,7 +147,7 @@ describe('DB API', () => { return request.post(localUtils.API.getApiQuery(`db/backup${schedulerQuery}`)) .expect('Content-Type', /json/) .expect(403) - .then(res => { + .then((res) => { should.exist(res.body.errors); res.body.errors[0].type.should.eql('NoPermissionError'); fsStub.called.should.eql(false); @@ -161,7 +161,7 @@ describe('DB API', () => { .set('Origin', config.get('url')) .expect('Content-Type', /json/) .expect(401) - .then(res => { + .then((res) => { should.exist(res.body.errors); res.body.errors[0].type.should.eql('UnauthorizedError'); fsStub.called.should.eql(false); diff --git a/core/test/regression/api/v2/admin/posts_spec.js b/core/test/regression/api/v2/admin/posts_spec.js index effa7b2d88..1ca40e0495 100644 --- a/core/test/regression/api/v2/admin/posts_spec.js +++ b/core/test/regression/api/v2/admin/posts_spec.js @@ -130,7 +130,7 @@ describe('Posts API', function () { .set('Origin', config.get('url')) .send({ posts: [{ - title: '', + title: '' }] }) .expect('Content-Type', /json/) diff --git a/core/test/regression/api/v2/content/posts_spec.js b/core/test/regression/api/v2/content/posts_spec.js index 594837c0d4..c4fc234d10 100644 --- a/core/test/regression/api/v2/content/posts_spec.js +++ b/core/test/regression/api/v2/content/posts_spec.js @@ -150,7 +150,7 @@ describe('Posts', function () { .expect('Content-Type', /json/) .expect('Cache-Control', testUtils.cacheRules.private) .expect(200) - .then((res)=> { + .then((res) => { localUtils.API.checkResponse(res.body.posts[0], 'post', null, null, ['id', 'title', 'slug']); }); }); diff --git a/core/test/regression/api/v2/content/tags_spec.js b/core/test/regression/api/v2/content/tags_spec.js index 96a1c87ca7..f12130c20a 100644 --- a/core/test/regression/api/v2/content/tags_spec.js +++ b/core/test/regression/api/v2/content/tags_spec.js @@ -32,7 +32,7 @@ describe('Tags', function () { .expect('Content-Type', /json/) .expect('Cache-Control', testUtils.cacheRules.private) .expect(200) - .then((res)=> { + .then((res) => { localUtils.API.checkResponse(res.body.tags[0], 'tag', null, null, ['id', 'name', 'slug']); }); }); diff --git a/core/test/regression/importer/importer_spec.js b/core/test/regression/importer/importer_spec.js index 53d0da69ea..6f0393133a 100644 --- a/core/test/regression/importer/importer_spec.js +++ b/core/test/regression/importer/importer_spec.js @@ -285,7 +285,7 @@ describe('Integration: Importer', function () { exportData.data.posts_tags = [ testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, exportData.data.tags[0].id), - testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, exportData.data.tags[1].id), + testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, exportData.data.tags[1].id) ]; return dataImporter.doImport(exportData, importOptions) @@ -319,7 +319,7 @@ describe('Integration: Importer', function () { exportData.data.posts_tags = [ testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, '100'), - testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, '200'), + testUtils.DataGenerator.forKnex.createPostsTags(exportData.data.posts[0].id, '200') ]; return dataImporter.doImport(exportData, importOptions) @@ -521,8 +521,8 @@ describe('Integration: Importer', function () { importedData.length.should.equal(2, 'Did not get data successfully'); - const users = importedData[0].data.map((model) => model.toJSON()); - const posts = importedData[1].data.map((model) => model.toJSON()); + const users = importedData[0].data.map(model => model.toJSON()); + const posts = importedData[1].data.map(model => model.toJSON()); posts.length.should.equal(1, 'Wrong number of posts'); users.length.should.equal(2, 'Wrong number of users'); @@ -583,11 +583,11 @@ describe('Integration: Importer', function () { .then(function () { return Promise.all([ models.Post.findPage(Object.assign({withRelated: ['tags']}, testUtils.context.internal)), - models.Tag.findPage(Object.assign({order: 'slug ASC'}, testUtils.context.internal)), + models.Tag.findPage(Object.assign({order: 'slug ASC'}, testUtils.context.internal)) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON()); - const tags = result[1].data.map((model) => model.toJSON()); + const posts = result[0].data.map(model => model.toJSON()); + const tags = result[1].data.map(model => model.toJSON()); posts.length.should.equal(exportData.data.posts.length, 'Wrong number of posts'); @@ -633,7 +633,7 @@ describe('Integration: Importer', function () { exportData.data.roles_users = [ testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[0].id, exportData.data.roles[0].id), testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[2].id, exportData.data.roles[2].id), - testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[3].id, exportData.data.roles[4].id), + testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[3].id, exportData.data.roles[4].id) ]; exportData.data.posts[0] = testUtils.DataGenerator.forKnex.createPost({ @@ -642,7 +642,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[0].id, created_by: exportData.data.users[0].id, updated_by: exportData.data.users[1].id, - published_by: exportData.data.users[1].id, + published_by: exportData.data.users[1].id }); exportData.data.posts[1] = testUtils.DataGenerator.forKnex.createPost({ slug: 'post2', @@ -650,7 +650,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[3].id, created_by: exportData.data.users[2].id, updated_by: exportData.data.users[0].id, - published_by: exportData.data.users[1].id, + published_by: exportData.data.users[1].id }); exportData.data.posts[2] = testUtils.DataGenerator.forKnex.createPost({ slug: 'post3', @@ -658,7 +658,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[0].id, created_by: exportData.data.users[3].id, updated_by: exportData.data.users[3].id, - published_by: exportData.data.users[3].id, + published_by: exportData.data.users[3].id }); exportData.data.tags[0] = testUtils.DataGenerator.forKnex.createTag({ @@ -689,9 +689,9 @@ describe('Integration: Importer', function () { models.User.findPage(userOptions) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(postOptions)); - const tags = result[1].data.map((model) => model.toJSON(tagOptions)); - const users = result[2].data.map((model) => model.toJSON(userOptions)); + const posts = result[0].data.map(model => model.toJSON(postOptions)); + const tags = result[1].data.map(model => model.toJSON(tagOptions)); + const users = result[2].data.map(model => model.toJSON(userOptions)); posts.length.should.equal(exportData.data.posts.length, 'Wrong number of posts'); @@ -790,7 +790,7 @@ describe('Integration: Importer', function () { exportData.data.roles_users = [ testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[0].id, exportData.data.roles[0].id), - testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[0].id, exportData.data.roles[4].id), + testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[0].id, exportData.data.roles[4].id) ]; return dataImporter.doImport(exportData, importOptions) @@ -799,7 +799,7 @@ describe('Integration: Importer', function () { models.User.findPage(Object.assign({withRelated: ['roles']}, testUtils.context.internal)) ]); }).then(function (result) { - const users = result[0].data.map((model) => model.toJSON()); + const users = result[0].data.map(model => model.toJSON()); users.length.should.eql(2); users[1].slug.should.eql(exportData.data.users[0].slug); @@ -831,8 +831,8 @@ describe('Integration: Importer', function () { models.Post.findPage(Object.assign({withRelated: ['tags']}, testUtils.context.internal)) ]); }).then(function (result) { - const tags = result[0].data.map((model) => model.toJSON()); - const posts = result[1].data.map((model) => model.toJSON()); + const tags = result[0].data.map(model => model.toJSON()); + const posts = result[1].data.map(model => model.toJSON()); posts.length.should.eql(1); tags.length.should.eql(1); @@ -942,7 +942,7 @@ describe('Integration: Importer', function () { models.Post.findPage(testUtils.context.internal) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON()); + const posts = result[0].data.map(model => model.toJSON()); posts.length.should.eql(2); posts[0].comment_id.should.eql(exportData.data.posts[1].id); @@ -1017,7 +1017,7 @@ describe('Integration: Importer', function () { testUtils.DataGenerator.forKnex.createPostsAuthors(exportData.data.posts[2].id, exportData.data.users[4].id, 2), testUtils.DataGenerator.forKnex.createPostsAuthors(exportData.data.posts[2].id, exportData.data.users[4].id, 2), - testUtils.DataGenerator.forKnex.createPostsAuthors(exportData.data.posts[1].id, exportData.data.users[5].id), + testUtils.DataGenerator.forKnex.createPostsAuthors(exportData.data.posts[1].id, exportData.data.users[5].id) ]; delete exportData.data.posts_authors[9].sort_order; @@ -1034,8 +1034,8 @@ describe('Integration: Importer', function () { models.User.findPage(testUtils.context.internal) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON()); - const users = result[1].data.map((model) => model.toJSON()); + const posts = result[0].data.map(model => model.toJSON()); + const users = result[1].data.map(model => model.toJSON()); // 2 duplicates, 1 owner, 4 imported users users.length.should.eql(exportData.data.users.length - 2 + 1); @@ -1063,7 +1063,7 @@ describe('Integration: Importer', function () { }); }); - it('import 2.0 Koenig post format', ()=> { + it('import 2.0 Koenig post format', () => { const exportData = exportedLatestBody().db[0]; exportData.data.posts[0] = testUtils.DataGenerator.forKnex.createPost({ @@ -1075,7 +1075,7 @@ describe('Integration: Importer', function () { cards: [ ['image', { src: 'source', - cardWidth: 'wide', + cardWidth: 'wide' }], ['markdown', { cardName: 'markdown', @@ -1117,7 +1117,7 @@ describe('Integration: Importer', function () { models.Post.findPage(options) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(options)); + const posts = result[0].data.map(model => model.toJSON(options)); posts.length.should.eql(2); @@ -1167,7 +1167,7 @@ describe('Integration: Importer', function () { exportData.data.roles_users = [ testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[0].id, exportData.data.roles[0].id), testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[2].id, exportData.data.roles[2].id), - testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[3].id, exportData.data.roles[4].id), + testUtils.DataGenerator.forKnex.createUsersRoles(exportData.data.users[3].id, exportData.data.roles[4].id) ]; exportData.data.posts[0] = testUtils.DataGenerator.forKnex.createPost({ @@ -1176,7 +1176,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[0].id, created_by: exportData.data.users[0].id, updated_by: exportData.data.users[1].id, - published_by: exportData.data.users[1].id, + published_by: exportData.data.users[1].id }); exportData.data.posts[1] = testUtils.DataGenerator.forKnex.createPost({ slug: 'post2', @@ -1184,7 +1184,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[3].id, created_by: exportData.data.users[2].id, updated_by: exportData.data.users[0].id, - published_by: exportData.data.users[1].id, + published_by: exportData.data.users[1].id }); exportData.data.posts[2] = testUtils.DataGenerator.forKnex.createPost({ slug: 'post3', @@ -1192,7 +1192,7 @@ describe('Integration: Importer', function () { author_id: exportData.data.users[0].id, created_by: exportData.data.users[3].id, updated_by: exportData.data.users[3].id, - published_by: exportData.data.users[3].id, + published_by: exportData.data.users[3].id }); exportData.data.tags[0] = testUtils.DataGenerator.forKnex.createTag({ @@ -1258,9 +1258,9 @@ describe('Integration: Importer', function () { models.ClientTrustedDomain.findAll(testUtils.context.internal) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(postOptions)); - const tags = result[1].data.map((model) => model.toJSON(tagOptions)); - const users = result[2].data.map((model) => model.toJSON(userOptions)); + const posts = result[0].data.map(model => model.toJSON(postOptions)); + const tags = result[1].data.map(model => model.toJSON(tagOptions)); + const users = result[2].data.map(model => model.toJSON(userOptions)); let clients = result[3]; let trustedDomains = result[4]; @@ -1325,7 +1325,7 @@ describe('1.0', function () { models.Post.findPage(testUtils.context.internal) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON()); + const posts = result[0].data.map(model => model.toJSON()); posts.length.should.eql(2); posts[0].comment_id.should.eql(exportData.data.posts[1].id); @@ -1334,7 +1334,7 @@ describe('1.0', function () { }); describe('migrate mobiledoc/html', () => { - it('invalid mobiledoc structure', ()=> { + it('invalid mobiledoc structure', () => { const exportData = exportedPreviousBody().db[0]; exportData.data.posts[0] = testUtils.DataGenerator.forKnex.createPost({ @@ -1356,7 +1356,7 @@ describe('1.0', function () { models.Post.findPage(options) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(options)); + const posts = result[0].data.map(model => model.toJSON(options)); posts.length.should.eql(2); should(posts[0].html).eql(null); @@ -1367,7 +1367,7 @@ describe('1.0', function () { }); }); - it('mobiledoc is null, html field is set', ()=> { + it('mobiledoc is null, html field is set', () => { const exportData = exportedPreviousBody().db[0]; exportData.data.posts[0] = testUtils.DataGenerator.forKnex.createPost({ @@ -1385,7 +1385,7 @@ describe('1.0', function () { models.Post.findPage(options) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(options)); + const posts = result[0].data.map(model => model.toJSON(options)); posts.length.should.eql(1); should(posts[0].html).eql(null); @@ -1411,7 +1411,7 @@ describe('1.0', function () { models.Post.findPage(options) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(options)); + const posts = result[0].data.map(model => model.toJSON(options)); posts.length.should.eql(1); should(posts[0].html).eql(null); @@ -1436,7 +1436,7 @@ describe('1.0', function () { models.Post.findPage(options) ]); }).then(function (result) { - const posts = result[0].data.map((model) => model.toJSON(options)); + const posts = result[0].data.map(model => model.toJSON(options)); posts.length.should.eql(1); posts[0].html.should.eql('
this is great feature
\ncustom html preserved!
', + html: 'this is great feature
\ncustom html preserved!
' } ] } @@ -517,7 +517,7 @@ describe('Unit: v2/utils/serializers/input/posts', function () { { id: 'id1', authors: ['email1', 'email2'], - tags: ['name1', 'name2'], + tags: ['name1', 'name2'] } ] } diff --git a/core/test/unit/api/v2/utils/serializers/output/utils/mapper_spec.js b/core/test/unit/api/v2/utils/serializers/output/utils/mapper_spec.js index ad37c7e32b..f5bf9aa19a 100644 --- a/core/test/unit/api/v2/utils/serializers/output/utils/mapper_spec.js +++ b/core/test/unit/api/v2/utils/serializers/output/utils/mapper_spec.js @@ -120,7 +120,7 @@ describe('Unit: v2/utils/serializers/output/utils/mapper', () => { const frame = { options: { context: {} - }, + } }; const tag = tagModel(testUtils.DataGenerator.forKnex.createTag({ @@ -156,7 +156,7 @@ describe('Unit: v2/utils/serializers/output/utils/mapper', () => { should.exist(mapped.api_keys); - mapped.api_keys.forEach(key => { + mapped.api_keys.forEach((key) => { if (key.type === 'admin') { const [id, secret] = key.secret.split(':'); should.exist(id); diff --git a/core/test/unit/api/v2/utils/serializers/output/utils/url_spec.js b/core/test/unit/api/v2/utils/serializers/output/utils/url_spec.js index d4b3237ed9..34372659d9 100644 --- a/core/test/unit/api/v2/utils/serializers/output/utils/url_spec.js +++ b/core/test/unit/api/v2/utils/serializers/output/utils/url_spec.js @@ -28,7 +28,7 @@ describe('Unit: v2/utils/serializers/output/utils/url', () => { it('meta & models & relations', () => { const post = pageModel(testUtils.DataGenerator.forKnex.createPost({ id: 'id1', - feature_image: 'value', + feature_image: 'value' })); urlUtil.forPost(post.id, post, {options: {}}); diff --git a/core/test/unit/api/v2/utils/validators/input/pages_spec.js b/core/test/unit/api/v2/utils/validators/input/pages_spec.js index dc8a8d4185..8e42f576c8 100644 --- a/core/test/unit/api/v2/utils/validators/input/pages_spec.js +++ b/core/test/unit/api/v2/utils/validators/input/pages_spec.js @@ -81,7 +81,7 @@ describe('Unit: v2/utils/validators/input/pages', function () { data: { pages: [{ what: 'a fail' - }], + }] } }; @@ -99,7 +99,7 @@ describe('Unit: v2/utils/validators/input/pages', function () { pages: [{ title: 'pass', authors: [{id: 'correct'}] - }], + }] } }; @@ -118,7 +118,7 @@ describe('Unit: v2/utils/validators/input/pages', function () { created_by: 'strip me', updated_by: 'strip me', published_by: 'strip me' - }], + }] } }; @@ -147,10 +147,10 @@ describe('Unit: v2/utils/validators/input/pages', function () { locale: [123, new Date(), _.repeat('a', 7)], visibility: [123, new Date(), 'abc'], meta_title: [123, new Date(), _.repeat('a', 301)], - meta_description: [123, new Date(), _.repeat('a', 501)], + meta_description: [123, new Date(), _.repeat('a', 501)] }; - Object.keys(fieldMap).forEach(key => { + Object.keys(fieldMap).forEach((key) => { it(`should fail for bad ${key}`, function () { const badValues = fieldMap[key]; @@ -302,7 +302,7 @@ describe('Unit: v2/utils/validators/input/pages', function () { pages: [{ title: 'pass', updated_at: new Date().toISOString() - }], + }] } }; diff --git a/core/test/unit/api/v2/utils/validators/input/posts_spec.js b/core/test/unit/api/v2/utils/validators/input/posts_spec.js index ad485895e1..29ff716b19 100644 --- a/core/test/unit/api/v2/utils/validators/input/posts_spec.js +++ b/core/test/unit/api/v2/utils/validators/input/posts_spec.js @@ -81,7 +81,7 @@ describe('Unit: v2/utils/validators/input/posts', function () { data: { posts: [{ what: 'a fail' - }], + }] } }; @@ -99,7 +99,7 @@ describe('Unit: v2/utils/validators/input/posts', function () { posts: [{ title: 'pass', authors: [{id: 'correct'}] - }], + }] } }; @@ -118,7 +118,7 @@ describe('Unit: v2/utils/validators/input/posts', function () { created_by: 'strip me', updated_by: 'strip me', published_by: 'strip me' - }], + }] } }; @@ -147,10 +147,10 @@ describe('Unit: v2/utils/validators/input/posts', function () { locale: [123, new Date(), _.repeat('a', 7)], visibility: [123, new Date(), 'abc'], meta_title: [123, new Date(), _.repeat('a', 301)], - meta_description: [123, new Date(), _.repeat('a', 501)], + meta_description: [123, new Date(), _.repeat('a', 501)] }; - Object.keys(fieldMap).forEach(key => { + Object.keys(fieldMap).forEach((key) => { it(`should fail for bad ${key}`, function () { const badValues = fieldMap[key]; @@ -302,7 +302,7 @@ describe('Unit: v2/utils/validators/input/posts', function () { posts: [{ title: 'pass', updated_at: new Date().toISOString() - }], + }] } }; diff --git a/core/test/unit/api/v2/utils/validators/input/tags_spec.js b/core/test/unit/api/v2/utils/validators/input/tags_spec.js index 78d7d7d7d3..8d949641e4 100644 --- a/core/test/unit/api/v2/utils/validators/input/tags_spec.js +++ b/core/test/unit/api/v2/utils/validators/input/tags_spec.js @@ -81,7 +81,7 @@ describe('Unit: v2/utils/validators/input/tags', function () { data: { tags: [{ what: 'a fail' - }], + }] } }; @@ -98,7 +98,7 @@ describe('Unit: v2/utils/validators/input/tags', function () { data: { tags: [{ name: 'pass' - }], + }] } }; @@ -116,7 +116,7 @@ describe('Unit: v2/utils/validators/input/tags', function () { created_by: 'strip me', updated_at: 'strip me', updated_by: 'strip me' - }], + }] } }; @@ -144,7 +144,7 @@ describe('Unit: v2/utils/validators/input/tags', function () { meta_description: [123, new Date(), _.repeat('a', 501)] }; - Object.keys(fieldMap).forEach(key => { + Object.keys(fieldMap).forEach((key) => { it(`should fail for bad ${key}`, function () { const badValues = fieldMap[key]; @@ -232,7 +232,7 @@ describe('Unit: v2/utils/validators/input/tags', function () { data: { tags: [{ name: 'pass' - }], + }] } }; diff --git a/core/test/unit/apps/private-blogging/controller_spec.js b/core/test/unit/apps/private-blogging/controller_spec.js index f881d67188..a5e0bf8798 100644 --- a/core/test/unit/apps/private-blogging/controller_spec.js +++ b/core/test/unit/apps/private-blogging/controller_spec.js @@ -1,4 +1,3 @@ -/*globals describe, beforeEach, afterEach, it*/ var should = require('should'), sinon = require('sinon'), path = require('path'), diff --git a/core/test/unit/apps/private-blogging/middleware_spec.js b/core/test/unit/apps/private-blogging/middleware_spec.js index 74216b2eca..4fdc29f08d 100644 --- a/core/test/unit/apps/private-blogging/middleware_spec.js +++ b/core/test/unit/apps/private-blogging/middleware_spec.js @@ -1,4 +1,3 @@ -/*globals describe, beforeEach, afterEach, it*/ var should = require('should'), sinon = require('sinon'), crypto = require('crypto'), diff --git a/core/test/unit/data/meta/title_spec.js b/core/test/unit/data/meta/title_spec.js index 75e6067d43..31db341b1e 100644 --- a/core/test/unit/data/meta/title_spec.js +++ b/core/test/unit/data/meta/title_spec.js @@ -104,7 +104,7 @@ describe('getTitle', function () { pagination: { total: 40, page: 23 - }, + } }, { hash: { page: ' p.%' diff --git a/core/test/unit/helpers/ghost_head_spec.js b/core/test/unit/helpers/ghost_head_spec.js index 4df0b5bc81..cf7e8bfe96 100644 --- a/core/test/unit/helpers/ghost_head_spec.js +++ b/core/test/unit/helpers/ghost_head_spec.js @@ -71,14 +71,14 @@ describe('{{ghost_head}} helper', function () { })); /** AUTHORS - related to posts */ - authors.push(createUser({ // Author 0 + authors.push(createUser({// Author 0 profile_image: '/content/images/test-author-image.png', website: 'http://authorwebsite.com', facebook: 'testuser', - twitter: '@testuser', + twitter: '@testuser' })); - authors.push(createUser({ // Author 1 + authors.push(createUser({// Author 1 name: 'Author name', slug: 'author2', profile_image: '/content/images/test-author-image.png', @@ -88,7 +88,7 @@ describe('{{ghost_head}} helper', function () { twitter: '@testuser' })); - authors.push(createUser({ // Author 2 + authors.push(createUser({// Author 2 name: 'Author name', slug: 'author3', profile_image: '/content/images/test-author-image.png', @@ -98,7 +98,7 @@ describe('{{ghost_head}} helper', function () { bio: 'Author bio' })); - authors.push(createUser({ // Author 3 + authors.push(createUser({// Author 3 name: 'Author name', url: 'http://testauthorurl.com', slug: 'author4', @@ -108,11 +108,11 @@ describe('{{ghost_head}} helper', function () { twitter: '@testuser' })); - authors.push(createUser({ // Author 4 + authors.push(createUser({// Author 4 name: 'Author name' })); - authors.push(createUser({ // Author 5 + authors.push(createUser({// Author 5 name: 'Author name', url: 'http://testauthorurl.com', slug: 'author8', @@ -124,7 +124,7 @@ describe('{{ghost_head}} helper', function () { /** POSTS */ - posts.push(createPost({ // Post 0 + posts.push(createPost({// Post 0 meta_description: 'all about our blog', title: 'About', feature_image: '/content/images/test-image-about.png', @@ -133,7 +133,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[0] })); - posts.push(createPost({ // Post 1 + posts.push(createPost({// Post 1 meta_description: 'all about our blog', title: 'About', feature_image: '/content/images/test-image-about.png', @@ -148,7 +148,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[0] })); - posts.push(createPost({ // Post 2 + posts.push(createPost({// Post 2 meta_description: 'blog description', title: 'Welcome to Ghost', feature_image: '/content/images/test-image.png', @@ -166,7 +166,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[1] })); - posts.push(createPost({ // Post 3 + posts.push(createPost({// Post 3 meta_description: 'blog description', custom_excerpt: 'post custom excerpt', title: 'Welcome to Ghost', @@ -185,7 +185,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[2] })); - posts.push(createPost({ // Post 4 + posts.push(createPost({// Post 4 title: 'Welcome to Ghost', mobiledoc: testUtils.DataGenerator.markdownToMobiledoc('This is a short post'), authors: [ @@ -194,7 +194,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[3] })); - posts.push(createPost({ // Post 5 + posts.push(createPost({// Post 5 meta_description: 'blog description', title: 'Welcome to Ghost', feature_image: '/content/images/test-image.png', @@ -213,7 +213,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[3] })); - posts.push(createPost({ // Post 6 + posts.push(createPost({// Post 6 meta_description: 'blog "test" description', title: 'title', meta_title: 'Welcome to Ghost "test"', @@ -229,7 +229,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[3] })); - posts.push(createPost({ // Post 7 + posts.push(createPost({// Post 7 meta_description: 'blog description', title: 'Welcome to Ghost', feature_image: '/content/images/test-image.png', @@ -240,7 +240,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[3] })); - posts.push(createPost({ // Post 8 + posts.push(createPost({// Post 8 meta_description: 'blog description', title: 'Welcome to Ghost', feature_image: null, @@ -255,7 +255,7 @@ describe('{{ghost_head}} helper', function () { primary_author: authors[5] })); - posts.push(createPost({ // Post 9 + posts.push(createPost({// Post 9 title: 'Welcome to Ghost', mobiledoc: testUtils.DataGenerator.markdownToMobiledoc('This is a short post'), tags: [ diff --git a/core/test/unit/helpers/img_url_spec.js b/core/test/unit/helpers/img_url_spec.js index 9f8c40fb5c..41114529c5 100644 --- a/core/test/unit/helpers/img_url_spec.js +++ b/core/test/unit/helpers/img_url_spec.js @@ -128,7 +128,7 @@ describe('{{image}} helper', function () { it('should output correct url for absolute paths which are internal', function () { var rendered = helpers.img_url('http://localhost:82832/content/images/my-coole-img.jpg', { hash: { - size: 'medium', + size: 'medium' }, data: { config: { @@ -146,7 +146,7 @@ describe('{{image}} helper', function () { it('should output the correct url for protocol relative urls', function () { var rendered = helpers.img_url('//website.com/whatever/my-coole-img.jpg', { hash: { - size: 'medium', + size: 'medium' }, data: { config: { @@ -164,7 +164,7 @@ describe('{{image}} helper', function () { it('should output the correct url for relative paths', function () { var rendered = helpers.img_url('/content/images/my-coole-img.jpg', { hash: { - size: 'medium', + size: 'medium' }, data: { config: { diff --git a/core/test/unit/lib/image/manipulator_spec.js b/core/test/unit/lib/image/manipulator_spec.js index 48bc046cc1..b06b74826d 100644 --- a/core/test/unit/lib/image/manipulator_spec.js +++ b/core/test/unit/lib/image/manipulator_spec.js @@ -48,7 +48,7 @@ describe('lib/image: manipulator', function () { sharpInstance = { resize: sinon.stub().returnsThis(), rotate: sinon.stub().returnsThis(), - toBuffer: sinon.stub(), + toBuffer: sinon.stub() }; sharp = sinon.stub().callsFake(() => { diff --git a/core/test/unit/lib/mobiledoc/cards/gallery_spec.js b/core/test/unit/lib/mobiledoc/cards/gallery_spec.js index 2b2ac2bdf6..35f4dcb099 100644 --- a/core/test/unit/lib/mobiledoc/cards/gallery_spec.js +++ b/core/test/unit/lib/mobiledoc/cards/gallery_spec.js @@ -122,7 +122,7 @@ describe('Gallery card', function () { { row: 0, fileName: 'NatGeo02.jpg', - src: '/content/images/2018/08/NatGeo02-10.jpg', + src: '/content/images/2018/08/NatGeo02-10.jpg' }, { row: 0, diff --git a/core/test/unit/lib/mobiledoc/converters/mobiledoc-converter_spec.js b/core/test/unit/lib/mobiledoc/converters/mobiledoc-converter_spec.js index 209b560b26..7e45bde51f 100644 --- a/core/test/unit/lib/mobiledoc/converters/mobiledoc-converter_spec.js +++ b/core/test/unit/lib/mobiledoc/converters/mobiledoc-converter_spec.js @@ -53,7 +53,7 @@ describe('Mobiledoc converter', function () { [10, 3], [10, 4], [10, 5], - [1, 'p', []], + [1, 'p', []] ] }; diff --git a/core/test/unit/lib/promise/sequence_spec.js b/core/test/unit/lib/promise/sequence_spec.js index bcee4a7e35..1bfe6d19a2 100644 --- a/core/test/unit/lib/promise/sequence_spec.js +++ b/core/test/unit/lib/promise/sequence_spec.js @@ -18,7 +18,7 @@ describe('Unit: lib/promise/sequence', function () { }, function c() { return Promise.resolve('chio'); - }, + } ]; return sequence(tasks) .then(function (result) { diff --git a/core/test/unit/models/base/index_spec.js b/core/test/unit/models/base/index_spec.js index 278589ebbf..8846565458 100644 --- a/core/test/unit/models/base/index_spec.js +++ b/core/test/unit/models/base/index_spec.js @@ -286,7 +286,7 @@ describe('Models: base', function () { life: 'suffering' }; const unfilteredOptions = { - id: 'something real special', + id: 'something real special' }; const model = models.Base.Model.forge({}); const savedModel = models.Base.Model.forge({}); @@ -342,7 +342,7 @@ describe('Models: base', function () { db: 'cooper' }; const unfilteredOptions = { - id: 'something real special', + id: 'something real special' }; const model = models.Base.Model.forge({}); const filterOptionsSpy = sinon.spy(models.Base.Model, 'filterOptions'); diff --git a/core/test/unit/models/post_spec.js b/core/test/unit/models/post_spec.js index ba1d0d5345..46c14a9a15 100644 --- a/core/test/unit/models/post_spec.js +++ b/core/test/unit/models/post_spec.js @@ -229,7 +229,7 @@ describe('Unit: models/post', function () { 'published', 'draft', 'published', - false, + false ]); queries[1].sql.should.eql('select `posts`.* from `posts` where ((`posts`.`status` in (?, ?) and `posts`.`status` = ?) and (`posts`.`page` = ?)) order by CASE WHEN posts.status = \'scheduled\' THEN 1 WHEN posts.status = \'draft\' THEN 2 ELSE 3 END ASC,CASE WHEN posts.status != \'draft\' THEN posts.published_at END DESC,posts.updated_at DESC,posts.id DESC'); @@ -237,7 +237,7 @@ describe('Unit: models/post', function () { 'published', 'draft', 'published', - false, + false ]); }); }); @@ -252,7 +252,7 @@ describe('Unit: models/post', function () { it('ensure mobiledoc revisions are never exposed', function () { const post = { mobiledoc: 'test', - mobiledoc_revisions: [], + mobiledoc_revisions: [] }; const json = toJSON(post, {formats: ['mobiledoc']}); diff --git a/core/test/unit/models/session_spec.js b/core/test/unit/models/session_spec.js index 855c3931e9..54bd390ffc 100644 --- a/core/test/unit/models/session_spec.js +++ b/core/test/unit/models/session_spec.js @@ -214,7 +214,7 @@ describe('Unit: models/session', function () { should.equal(findOneStub.args[0][1], filteredOptions); should.deepEqual(editStub.args[0][0], { - session_data: data.session_data, + session_data: data.session_data }); should.deepEqual(editStub.args[0][1], { diff --git a/core/test/unit/services/auth/members/index_spec.js b/core/test/unit/services/auth/members/index_spec.js index f85f633bdc..72566bd776 100644 --- a/core/test/unit/services/auth/members/index_spec.js +++ b/core/test/unit/services/auth/members/index_spec.js @@ -13,7 +13,9 @@ describe.skip('Auth Service - Members', function () { describe('authenticateMembersToken', function () { it('calls next without an error if there is no authorization header', function () { members.authenticateMembersToken({ - get() { return null; } + get() { + return null; + } }, {}, function next(err) { const actual = err; const expected = undefined; @@ -24,7 +26,9 @@ describe.skip('Auth Service - Members', function () { it('calls next without an error if the authorization header does not match the GhostMembers scheme', function () { members.authenticateMembersToken({ - get() { return 'DodgyScheme credscredscreds'; } + get() { + return 'DodgyScheme credscredscreds'; + } }, {}, function next(err) { const actual = err; const expected = undefined; @@ -35,7 +39,9 @@ describe.skip('Auth Service - Members', function () { describe('attempts to verify the credentials as a JWT, allowing the "NONE" algorithm', function () { it('calls next with an UnauthorizedError if the verification fails', function () { members.authenticateMembersToken({ - get() { return 'GhostMembers notafuckentoken'; } + get() { + return 'GhostMembers notafuckentoken'; + } }, {}, function next(err) { const actual = err instanceof UnauthorizedError; const expected = true; @@ -51,7 +57,9 @@ describe.skip('Auth Service - Members', function () { algorithm: 'none' }); const req = { - get() { return `GhostMembers ${token}`; } + get() { + return `GhostMembers ${token}`; + } }; members.authenticateMembersToken(req, {}, function next(err) { should.equal(err, undefined); diff --git a/core/test/unit/services/permissions/parse-context_spec.js b/core/test/unit/services/permissions/parse-context_spec.js index be0908cfe1..a6646e919b 100644 --- a/core/test/unit/services/permissions/parse-context_spec.js +++ b/core/test/unit/services/permissions/parse-context_spec.js @@ -60,7 +60,7 @@ describe('Permissions', function () { it('should return api_key and public context if content api_key provided', function () { parseContext({api_key: { id: 1, - type: 'content', + type: 'content' }, integration: {id: 2}}).should.eql({ internal: false, external: false, diff --git a/core/test/unit/services/routing/StaticRoutesRouter_spec.js b/core/test/unit/services/routing/StaticRoutesRouter_spec.js index 5a34a69ff6..6836b78f39 100644 --- a/core/test/unit/services/routing/StaticRoutesRouter_spec.js +++ b/core/test/unit/services/routing/StaticRoutesRouter_spec.js @@ -165,7 +165,7 @@ describe('UNIT - services/routing/StaticRoutesRouter', function () { it('initialise with controller+data', function () { const staticRoutesRouter = new StaticRoutesRouter('/channel/', { controller: 'channel', - data: {query: {}, router: {}}, + data: {query: {}, router: {}} }); should.not.exist(staticRoutesRouter.getFilter()); diff --git a/core/test/unit/services/settings/ensure-settings_spec.js b/core/test/unit/services/settings/ensure-settings_spec.js index 220d679e7a..a7c4fc0a4c 100644 --- a/core/test/unit/services/settings/ensure-settings_spec.js +++ b/core/test/unit/services/settings/ensure-settings_spec.js @@ -71,7 +71,7 @@ describe('UNIT > Settings Service ensure settings:', function () { fs.readFile.withArgs(path.join(__dirname, '../../../utils/fixtures/settings/routes.yaml'), 'utf8').rejects(fsError); return ensureSettings(['routes']) - .then(()=> { + .then(() => { throw new Error('Expected test to fail'); }) .catch((error) => { diff --git a/core/test/unit/services/settings/settings_spec.js b/core/test/unit/services/settings/settings_spec.js index 0751483af1..7d0a69cd2d 100644 --- a/core/test/unit/services/settings/settings_spec.js +++ b/core/test/unit/services/settings/settings_spec.js @@ -26,7 +26,7 @@ describe('UNIT > Settings Service:', function () { collections: { '/': { permalink: '/{slug}/', - template: [ 'home', 'index' ] + template: ['home', 'index'] } }, resources: {tag: '/tag/{slug}/', author: '/author/{slug}/'} @@ -86,7 +86,7 @@ describe('UNIT > Settings Service:', function () { collections: { '/': { permalink: '/{slug}/', - template: [ 'home', 'index' ] + template: ['home', 'index'] } }, resources: {tag: '/tag/{slug}/', author: '/author/{slug}/'} diff --git a/core/test/unit/services/settings/validate_spec.js b/core/test/unit/services/settings/validate_spec.js index c03e09eba8..feae205b4e 100644 --- a/core/test/unit/services/settings/validate_spec.js +++ b/core/test/unit/services/settings/validate_spec.js @@ -257,7 +257,7 @@ describe('UNIT: services/settings/validate', function () { }, taxonomies: { tag: '/tags/{slug}/', - author: '/authors/{slug}/', + author: '/authors/{slug}/' } }); @@ -611,7 +611,7 @@ describe('UNIT: services/settings/validate', function () { status: 'draft' } } - }, + } } }); @@ -1038,7 +1038,7 @@ describe('UNIT: services/settings/validate', function () { }, taxonomies: { tag: '/tags/{slug}/', - author: '/authors/{slug}/', + author: '/authors/{slug}/' } }); @@ -1388,7 +1388,7 @@ describe('UNIT: services/settings/validate', function () { status: 'draft' } } - }, + } } }); diff --git a/core/test/unit/services/themes/validate_spec.js b/core/test/unit/services/themes/validate_spec.js index 925aa546ef..511e2a7f0c 100644 --- a/core/test/unit/services/themes/validate_spec.js +++ b/core/test/unit/services/themes/validate_spec.js @@ -71,7 +71,7 @@ describe('Themes', function () { level: 'error', rule: 'Replace the{{#if author.cover}}
helper with {{#if author.cover_image}}
',
details: 'The cover
attribute was replaced with cover_image
.{{#if author.cover}}
you need to use {{#if author.cover_image}}
.author
here.',
- failures: [ {} ],
+ failures: [{}],
code: 'GS001-DEPR-CON-AC'
}
]
@@ -99,7 +99,7 @@ describe('Themes', function () {
level: 'error',
rule: 'Replace the {{#if author.cover}}
helper with {{#if author.cover_image}}
',
details: 'The cover
attribute was replaced with cover_image
.{{#if author.cover}}
you need to use {{#if author.cover_image}}
.author
here.',
- failures: [ {} ],
+ failures: [{}],
code: 'GS001-DEPR-CON-AC'
}
]
diff --git a/core/test/unit/web/middleware/api/cors_spec.js b/core/test/unit/web/middleware/api/cors_spec.js
index 69ed3a0dfd..6b88e545f7 100644
--- a/core/test/unit/web/middleware/api/cors_spec.js
+++ b/core/test/unit/web/middleware/api/cors_spec.js
@@ -161,7 +161,7 @@ describe('cors', function () {
cors.__set__('urlUtils', urlUtils.getInstance({
url: 'https://blog',
- adminUrl: origin,
+ adminUrl: origin
}));
req.get = sinon.stub().withArgs('origin').returns(origin);
diff --git a/core/test/unit/web/middleware/image/normalize_spec.js b/core/test/unit/web/middleware/image/normalize_spec.js
index e880f491cd..50db2ee459 100644
--- a/core/test/unit/web/middleware/image/normalize_spec.js
+++ b/core/test/unit/web/middleware/image/normalize_spec.js
@@ -47,7 +47,7 @@ describe('normalize', function () {
it('should not do manipulation without resize flag set', function (done) {
configUtils.set({
imageOptimization: {
- resize: false,
+ resize: false
}
});
@@ -60,7 +60,7 @@ describe('normalize', function () {
it('should not create files array when processing fails', function (done) {
image.manipulator.process.rejects();
- normalize(req, res, ()=> {
+ normalize(req, res, () => {
common.logging.error.calledOnce.should.be.true();
req.file.should.not.be.equal(undefined);
should.not.exist(req.files);
diff --git a/core/test/utils/fixtures/data-generator.js b/core/test/utils/fixtures/data-generator.js
index be6a2ab57c..525f3fd442 100644
--- a/core/test/utils/fixtures/data-generator.js
+++ b/core/test/utils/fixtures/data-generator.js
@@ -891,7 +891,7 @@ DataGenerator.forKnex = (function () {
const api_keys = [
createBasic(DataGenerator.Content.api_keys[0]),
createBasic(DataGenerator.Content.api_keys[1]),
- createBasic(DataGenerator.Content.api_keys[2]),
+ createBasic(DataGenerator.Content.api_keys[2])
];
return {
diff --git a/core/test/utils/index.js b/core/test/utils/index.js
index 693de22493..1fbe7e538d 100644
--- a/core/test/utils/index.js
+++ b/core/test/utils/index.js
@@ -500,7 +500,7 @@ fixtures = {
return Promise.map(DataGenerator.forKnex.api_keys, function (api_key) {
return models.ApiKey.add(api_key, module.exports.context.internal);
});
- },
+ }
};
/** Test Utility Functions **/
@@ -1132,7 +1132,7 @@ module.exports = {
urlService.resetGenerators();
urlService.resources.reset({ignoreDBReady: true});
}
- },
+ }
},
teardown: teardown,
truncate: truncate,
@@ -1200,7 +1200,7 @@ module.exports = {
admin: {user: {roles: [DataGenerator.Content.roles[0]]}},
editor: {user: {roles: [DataGenerator.Content.roles[1]]}},
author: {user: {roles: [DataGenerator.Content.roles[2]]}},
- contributor: {user: {roles: [DataGenerator.Content.roles[4]]}},
+ contributor: {user: {roles: [DataGenerator.Content.roles[4]]}}
},
users: {
ids: {
diff --git a/package.json b/package.json
index 3e4b7f0461..14a6f0b112 100644
--- a/package.json
+++ b/package.json
@@ -129,7 +129,7 @@
"sqlite3": "4.0.9"
},
"devDependencies": {
- "eslint": "5.12.1",
+ "eslint": "6.0.1",
"eslint-plugin-ghost": "0.1.0",
"grunt": "1.0.4",
"grunt-bg-shell": "2.3.3",
@@ -147,7 +147,7 @@
"grunt-subgrunt": "1.3.0",
"grunt-update-submodules": "0.4.1",
"matchdep": "2.0.0",
- "mocha": "5.2.0",
+ "mocha": "6.1.4",
"mock-knex": "0.4.5",
"nock": "10.0.6",
"proxyquire": "2.1.0",
@@ -155,7 +155,7 @@
"should": "13.2.3",
"should-http": "0.1.1",
"sinon": "7.2.3",
- "supertest": "3.4.1",
+ "supertest": "4.0.2",
"tmp": "0.0.33"
}
}
diff --git a/yarn.lock b/yarn.lock
index bedefc00b7..717e40eeab 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -342,7 +342,7 @@ acorn@^5.5.0:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
-acorn@^6.0.1, acorn@^6.0.2:
+acorn@^6.0.1:
version "6.0.5"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a"
@@ -351,6 +351,11 @@ acorn@^6.0.4:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818"
integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==
+acorn@^6.0.7:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
+ integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
+
addressparser@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-0.3.2.tgz#59873f35e8fcf6c7361c10239261d76e15348bb2"
@@ -359,7 +364,7 @@ ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
-ajv@6.10.0:
+ajv@6.10.0, ajv@^6.10.0, ajv@^6.9.1:
version "6.10.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
@@ -378,7 +383,7 @@ ajv@^5.2.3, ajv@^5.3.0:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
-ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1:
+ajv@^6.5.5:
version "6.7.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96"
dependencies:
@@ -422,10 +427,20 @@ analytics-node@3.3.0:
remove-trailing-slash "^0.1.0"
uuid "^3.2.1"
+ansi-colors@3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
+ integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+
ansi-escapes@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
+ansi-escapes@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -438,6 +453,11 @@ ansi-regex@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@@ -1034,6 +1054,11 @@ camelcase@^4.1.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
caniuse-api@^1.5.2:
version "1.6.1"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
@@ -1078,7 +1103,7 @@ chalk@2.4.1:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
-chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2, chalk@~2.4.1:
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2, chalk@~2.4.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
dependencies:
@@ -1174,6 +1199,15 @@ cliui@^3.0.3:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
clone-response@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
@@ -1283,10 +1317,6 @@ commander@2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
-commander@2.15.1:
- version "2.15.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
-
commander@^2.15.1, commander@^2.19.0, commander@^2.9.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
@@ -1659,15 +1689,15 @@ debug@3.1.0, debug@=3.1.0:
dependencies:
ms "2.0.0"
-debug@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
+debug@3.2.6, debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
dependencies:
ms "^2.1.1"
-debug@^3.1.0:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+debug@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
dependencies:
ms "^2.1.1"
@@ -1685,7 +1715,7 @@ decamelize-keys@^1.0.0:
decamelize "^1.1.0"
map-obj "^1.0.0"
-decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2:
+decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -1727,6 +1757,13 @@ defer-to-connect@^1.0.1:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e"
integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
define-property@^0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
@@ -1824,6 +1861,13 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
dom-serializer@0, dom-serializer@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -1942,6 +1986,11 @@ emits@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/emits/-/emits-3.0.0.tgz#32752bba95e1707b219562384ab9bb8b1fd62f70"
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -1975,6 +2024,27 @@ error@^7.0.0:
string-template "~0.2.1"
xtend "~4.0.0"
+es-abstract@^1.5.1:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
es6-promise@^4.2.6:
version "4.2.6"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f"
@@ -2026,9 +2096,10 @@ eslint-scope@^3.7.1:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
@@ -2041,46 +2112,46 @@ eslint-visitor-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
-eslint@5.12.1:
- version "5.12.1"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.1.tgz#5ca9931fb9029d04e7be92b03ce3b58edfac7e3b"
+eslint@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.1.tgz#4a32181d72cb999d6f54151df7d337131f81cda7"
+ integrity sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==
dependencies:
"@babel/code-frame" "^7.0.0"
- ajv "^6.5.3"
+ ajv "^6.10.0"
chalk "^2.1.0"
cross-spawn "^6.0.5"
debug "^4.0.1"
- doctrine "^2.1.0"
- eslint-scope "^4.0.0"
+ doctrine "^3.0.0"
+ eslint-scope "^4.0.3"
eslint-utils "^1.3.1"
eslint-visitor-keys "^1.0.0"
- espree "^5.0.0"
+ espree "^6.0.0"
esquery "^1.0.1"
esutils "^2.0.2"
- file-entry-cache "^2.0.0"
+ file-entry-cache "^5.0.1"
functional-red-black-tree "^1.0.1"
- glob "^7.1.2"
+ glob-parent "^3.1.0"
globals "^11.7.0"
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
- inquirer "^6.1.0"
- js-yaml "^3.12.0"
+ inquirer "^6.2.2"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
- lodash "^4.17.5"
+ lodash "^4.17.11"
minimatch "^3.0.4"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
- path-is-inside "^1.0.2"
- pluralize "^7.0.0"
progress "^2.0.0"
regexpp "^2.0.1"
semver "^5.5.1"
strip-ansi "^4.0.0"
strip-json-comments "^2.0.1"
- table "^5.0.2"
+ table "^5.2.3"
text-table "^0.2.0"
eslint@^4.15.0, eslint@^4.19.1:
@@ -2133,11 +2204,12 @@ espree@^3.5.4:
acorn "^5.5.0"
acorn-jsx "^3.0.0"
-espree@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c"
+espree@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6"
+ integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==
dependencies:
- acorn "^6.0.2"
+ acorn "^6.0.7"
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
@@ -2382,9 +2454,10 @@ external-editor@^2.0.4:
iconv-lite "^0.4.17"
tmp "^0.0.33"
-external-editor@^3.0.0:
+external-editor@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
+ integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
dependencies:
chardet "^0.7.0"
iconv-lite "^0.4.24"
@@ -2480,6 +2553,13 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
file-sync-cmp@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"
@@ -2529,6 +2609,13 @@ find-root@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+find-up@3.0.0, find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
find-up@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -2581,6 +2668,27 @@ flat-cache@^1.2.1:
rimraf "~2.6.2"
write "^0.2.1"
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flat@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2"
+ integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==
+ dependencies:
+ is-buffer "~2.0.3"
+
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
@@ -2730,6 +2838,16 @@ generate-object-property@^1.0.0:
dependencies:
is-property "^1.0.0"
+get-caller-file@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
get-func-name@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
@@ -2835,6 +2953,17 @@ glob@7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
@@ -2857,17 +2986,6 @@ glob@^6.0.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
glob@~5.0.0:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
@@ -3201,6 +3319,11 @@ has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -3232,7 +3355,7 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has@^1.0.1:
+has@^1.0.1, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
dependencies:
@@ -3242,7 +3365,7 @@ he@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
-he@^1.2.0:
+he@1.2.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -3493,22 +3616,23 @@ inquirer@^3.0.6:
strip-ansi "^4.0.0"
through "^2.3.6"
-inquirer@^6.1.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52"
+inquirer@^6.2.2:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.4.1.tgz#7bd9e5ab0567cd23b41b0180b68e0cfa82fc3c0b"
+ integrity sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==
dependencies:
- ansi-escapes "^3.0.0"
- chalk "^2.0.0"
+ ansi-escapes "^3.2.0"
+ chalk "^2.4.2"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
- external-editor "^3.0.0"
+ external-editor "^3.0.3"
figures "^2.0.0"
- lodash "^4.17.10"
+ lodash "^4.17.11"
mute-stream "0.0.7"
run-async "^2.2.0"
- rxjs "^6.1.0"
+ rxjs "^6.4.0"
string-width "^2.1.0"
- strip-ansi "^5.0.0"
+ strip-ansi "^5.1.0"
through "^2.3.6"
interpret@^1.1.0:
@@ -3546,6 +3670,11 @@ invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+invert-kv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
+ integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+
ip-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-3.0.0.tgz#0a934694b4066558c46294244a23cc33116bf732"
@@ -3595,12 +3724,22 @@ is-buffer@^1.1.5, is-buffer@~1.1.1:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+is-buffer@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
+ integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
+
is-builtin-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
dependencies:
builtin-modules "^1.0.0"
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -3613,6 +3752,11 @@ is-data-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
is-descriptor@^0.1.0:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
@@ -3700,6 +3844,13 @@ is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@@ -3724,6 +3875,13 @@ is-svg@^2.0.0:
dependencies:
html-comment-regex "^1.1.0"
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -3804,7 +3962,7 @@ js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@3.13.1, js-yaml@~3.13.0:
+js-yaml@3.13.1, js-yaml@^3.13.1, js-yaml@~3.13.0:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
@@ -3812,7 +3970,7 @@ js-yaml@3.13.1, js-yaml@~3.13.0:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^3.12.0, js-yaml@^3.9.1:
+js-yaml@^3.9.1:
version "3.12.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600"
dependencies:
@@ -4099,6 +4257,13 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
+lcid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
+ integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+ dependencies:
+ invert-kv "^2.0.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"
@@ -4157,6 +4322,14 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
lodash-es@^4.17.11:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0"
@@ -4295,6 +4468,13 @@ lodash@4.17.11, lodash@^4.13.1, lodash@^4.14.2, lodash@^4.16.4, lodash@^4.17.10,
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
+log-symbols@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
lolex@^2.3.2:
version "2.7.5"
resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733"
@@ -4377,6 +4557,13 @@ make-iterator@^1.0.0:
dependencies:
kind-of "^6.0.2"
+map-age-cleaner@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
map-cache@^0.2.0, map-cache@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -4456,6 +4643,15 @@ media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+mem@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
+
meow@^3.3.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
@@ -4573,6 +4769,11 @@ mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+mimic-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
mimic-response@^1.0.0, mimic-response@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
@@ -4658,21 +4859,34 @@ mobiledoc-text-renderer@0.3.2:
resolved "https://registry.yarnpkg.com/mobiledoc-text-renderer/-/mobiledoc-text-renderer-0.3.2.tgz#126a167a6cf8b6cd7e58c85feb18043603834580"
integrity sha1-EmoWemz4ts1+WMhf6xgENgODRYA=
-mocha@5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
+mocha@6.1.4:
+ version "6.1.4"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640"
+ integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==
dependencies:
+ ansi-colors "3.2.3"
browser-stdout "1.3.1"
- commander "2.15.1"
- debug "3.1.0"
+ debug "3.2.6"
diff "3.5.0"
escape-string-regexp "1.0.5"
- glob "7.1.2"
+ find-up "3.0.0"
+ glob "7.1.3"
growl "1.10.5"
- he "1.1.1"
+ he "1.2.0"
+ js-yaml "3.13.1"
+ log-symbols "2.2.0"
minimatch "3.0.4"
mkdirp "0.5.1"
- supports-color "5.4.0"
+ ms "2.1.1"
+ node-environment-flags "1.0.5"
+ object.assign "4.1.0"
+ strip-json-comments "2.0.1"
+ supports-color "6.0.0"
+ which "1.3.1"
+ wide-align "1.1.3"
+ yargs "13.2.2"
+ yargs-parser "13.0.0"
+ yargs-unparser "1.5.0"
mocha@^4.0.0:
version "4.1.0"
@@ -4913,6 +5127,14 @@ node-abi@^2.7.0:
dependencies:
semver "^5.4.1"
+node-environment-flags@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a"
+ integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+ semver "^5.7.0"
+
node-fetch@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5"
@@ -5111,12 +5333,27 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
+object-keys@^1.0.11, object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
object-visit@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
dependencies:
isobject "^3.0.0"
+object.assign@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
object.defaults@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
@@ -5126,6 +5363,14 @@ object.defaults@^1.1.0:
for-own "^1.0.0"
isobject "^3.0.0"
+object.getownpropertydescriptors@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+ integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.1"
+
object.map@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37"
@@ -5198,6 +5443,15 @@ os-locale@^1.4.0:
dependencies:
lcid "^1.0.0"
+os-locale@^3.0.0, os-locale@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+ integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+ dependencies:
+ execa "^1.0.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -5214,10 +5468,20 @@ p-cancelable@^1.0.0:
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
+
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
@@ -5225,6 +5489,13 @@ p-limit@^1.1.0:
dependencies:
p-try "^1.0.0"
+p-limit@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ dependencies:
+ p-try "^2.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -5232,11 +5503,23 @@ p-locate@^2.0.0:
dependencies:
p-limit "^1.1.0"
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
parent-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5"
@@ -6228,6 +6511,21 @@ require-dir@^1.0.0:
resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817"
integrity sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+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"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
@@ -6294,7 +6592,7 @@ rewire@4.0.1:
dependencies:
eslint "^4.19.1"
-rimraf@2, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
+rimraf@2, rimraf@2.6.3, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
dependencies:
@@ -6329,9 +6627,10 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-rxjs@^6.1.0:
- version "6.3.3"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55"
+rxjs@^6.4.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
+ integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
dependencies:
tslib "^1.9.0"
@@ -6401,6 +6700,11 @@ semver@6.2.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db"
integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==
+semver@^5.7.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
semver@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65"
@@ -6466,7 +6770,7 @@ serve-static@1.14.1:
parseurl "~1.3.3"
send "0.17.1"
-set-blocking@~2.0.0:
+set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -6643,9 +6947,10 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
-slice-ansi@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7"
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
dependencies:
ansi-styles "^3.2.0"
astral-regex "^1.0.0"
@@ -6864,13 +7169,22 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string-width@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
string_decoder@0.10, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@@ -6905,6 +7219,13 @@ strip-ansi@^5.0.0:
dependencies:
ansi-regex "^4.0.0"
+strip-ansi@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
strip-bom@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
@@ -6931,7 +7252,7 @@ strip-indent@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
-strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+strip-json-comments@2.0.1, strip-json-comments@^2.0.1, 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"
@@ -6960,9 +7281,10 @@ superagent@^3.8.3:
qs "^6.5.1"
readable-stream "^2.3.5"
-supertest@3.4.1:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.4.1.tgz#91b19ea34804c205769d0ff5ad947aff3eb2731d"
+supertest@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36"
+ integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==
dependencies:
methods "^1.1.2"
superagent "^3.8.3"
@@ -6973,9 +7295,10 @@ supports-color@4.4.0:
dependencies:
has-flag "^2.0.0"
-supports-color@5.4.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
+supports-color@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a"
+ integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
dependencies:
has-flag "^3.0.0"
@@ -7034,14 +7357,15 @@ table@4.0.2:
slice-ansi "1.0.0"
string-width "^2.1.1"
-table@^5.0.2:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/table/-/table-5.2.1.tgz#e78463702b1be9f7131c39860bcfb1b81114c2a1"
+table@^5.2.3:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8"
+ integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==
dependencies:
- ajv "^6.6.1"
+ ajv "^6.9.1"
lodash "^4.17.11"
- slice-ansi "2.0.0"
- string-width "^2.1.1"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
tar-fs@^1.13.0:
version "1.16.3"
@@ -7476,17 +7800,22 @@ whet.extend@~0.9.9:
version "0.9.9"
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
which-pm-runs@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
-which@1, which@^1.2.14, which@^1.2.9, which@~1.3.0:
+which@1, which@1.3.1, which@^1.2.14, which@^1.2.9, which@~1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
dependencies:
isexe "^2.0.0"
-wide-align@^1.1.0:
+wide-align@1.1.3, wide-align@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
dependencies:
@@ -7515,6 +7844,13 @@ wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
write@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
@@ -7568,6 +7904,11 @@ y18n@^3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
@@ -7576,6 +7917,14 @@ yallist@^3.0.0, yallist@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+yargs-parser@13.0.0:
+ version "13.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b"
+ integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
yargs-parser@^10.0.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
@@ -7583,6 +7932,66 @@ yargs-parser@^10.0.0:
dependencies:
camelcase "^4.1.0"
+yargs-parser@^11.1.1:
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
+ integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^13.0.0:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-unparser@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d"
+ integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==
+ dependencies:
+ flat "^4.1.0"
+ lodash "^4.17.11"
+ yargs "^12.0.5"
+
+yargs@13.2.2:
+ version "13.2.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993"
+ integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==
+ dependencies:
+ cliui "^4.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.0.0"
+
+yargs@^12.0.5:
+ version "12.0.5"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
+ integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^1.0.1"
+ os-locale "^3.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1 || ^4.0.0"
+ yargs-parser "^11.1.1"
+
yargs@^3.19.0:
version "3.32.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"