From 84817e3976176639c397c6f58ffd5d5d92c0d45f Mon Sep 17 00:00:00 2001 From: Machiko Yasuda Date: Mon, 26 Feb 2018 16:41:09 -0800 Subject: [PATCH 001/201] docs(jsdoc): document all Meteor Template helpers in 1 @namespace --- client/modules/core/helpers/apps.js | 71 +++++++++---------- client/modules/core/helpers/layout.js | 8 +-- client/modules/core/helpers/permissions.js | 33 +++++---- client/modules/core/helpers/templates.js | 65 +++++++++++------ client/modules/i18n/helpers.js | 6 +- client/modules/router/helpers.js | 26 ++++--- .../core/accounts/client/helpers/templates.js | 7 +- .../templates/dropdown/helpers/templates.js | 5 +- .../core/checkout/client/helpers/cart.js | 20 +++--- .../core/ui-tagnav/client/helpers/tags.js | 7 ++ 10 files changed, 144 insertions(+), 104 deletions(-) diff --git a/client/modules/core/helpers/apps.js b/client/modules/core/helpers/apps.js index c0bb4a328ca..069d336d800 100644 --- a/client/modules/core/helpers/apps.js +++ b/client/modules/core/helpers/apps.js @@ -6,44 +6,17 @@ import { Reaction } from "/client/api"; import { Packages, Shops } from "/lib/collections"; import { Registry } from "/lib/collections/schemas/registry"; - /** - * - * reactionApps - * provides="" - * enabled=true - * context= true filter templates to current route - * returns matching package registry objects - * @example {{#each reactionApps provides="settings" name=packageName container=container}} - * @example {{#each reactionApps provides="userAccountDropdown" enabled=true}} - * @example - * {{#each reactionApps provides="social" name="reaction-social"}} - * {{> Template.dynamic template=template data=customSocialSettings }} - * {{/each}} - * - * @typedef optionHash - * @type {object} - * @property {string} name - name of a package. - * @property {string} provides -purpose of this package as identified to the registry - * @property {string} container - filter registry entries for matching container. - * @property {string} shopId - filter to only display results matching shopId, not returned - * @property {string} template - filter registry entries for matching template - * @type {optionHash} - * - * @return {optionHash} returns an array of filtered, structure reactionApps - * [{ - * enabled: true - * label: "Stripe" - * name: "reaction-stripe" - * packageId: "QqkGsQCDRhg2LSn8J" - * priority: 1 - * provides: "paymentMethod" - * template: "stripePaymentForm" - * etc: "additional properties as defined in Packages.registry" - * ... - * }] + * @method Apps + * @typedef optionHash + * @type {object} + * @property {string} name - name of a package. + * @property {string} provides -purpose of this package as identified to the registry + * @property {string} container - filter registry entries for matching container. + * @property {string} shopId - filter to only display results matching shopId, not returned + * @property {string} template - filter registry entries for matching template + * @return {optionHash} returns an array of filtered, structure reactionApps */ - export function Apps(optionHash) { const filter = {}; const registryFilter = {}; @@ -180,5 +153,29 @@ export function Apps(optionHash) { return sortedApps; } -// Register global template helper +/** + * + * @method reactionApps + * @memberof Templates + * @summary Return an array of filtered, structured `reactionApps` as a Template Helper + * @example {{#each reactionApps provides="settings" name=packageName container=container}} + * @example {{#each reactionApps provides="userAccountDropdown" enabled=true}} + * @property {string} name - name of a package. + * @property {string} provides -purpose of this package as identified to the registry + * @property {string} container - filter registry entries for matching container. + * @property {string} shopId - filter to only display results matching shopId, not returned + * @property {string} template - filter registry entries for matching template + * @return {optionHash} returns an array of filtered, structure reactionApps + * ```[{ + * enabled: true + * label: "Stripe" + * name: "reaction-stripe" + * packageId: "QqkGsQCDRhg2LSn8J" + * priority: 1 + * provides: "paymentMethod" + * template: "stripePaymentForm" + * etc: "additional properties as defined in Packages.registry" + * ... + * }]``` + */ Template.registerHelper("reactionApps", (optionHash) => Reaction.Apps(optionHash)); diff --git a/client/modules/core/helpers/layout.js b/client/modules/core/helpers/layout.js index 4ffde08b0cd..340ac7577f7 100644 --- a/client/modules/core/helpers/layout.js +++ b/client/modules/core/helpers/layout.js @@ -6,12 +6,12 @@ import Logger from "/client/modules/logger"; import * as Collections from "/lib/collections"; /** - * reactionTemplate helper - * use the reactionTemplate helper when you are using templates defined + * @name reactionTemplate + * @summary use the reactionTemplate helper when you are using templates defined * as workflow templates in the package registery.Layout * use "collection" on the layout to indicate a workflow source - * - * @summary reactionTemplate provides templates as defined in ReactionRegistry.Layout + * @memberof Template + * @description reactionTemplate provides templates as defined in ReactionRegistry.Layout * @param {Object} options - workflow defaults to "coreLayout/coreWorkflow" * @returns {Array} returns an array with labels, templates that match workflow */ diff --git a/client/modules/core/helpers/permissions.js b/client/modules/core/helpers/permissions.js index f10de0abe38..cd6435f8122 100644 --- a/client/modules/core/helpers/permissions.js +++ b/client/modules/core/helpers/permissions.js @@ -2,16 +2,11 @@ import { Meteor } from "meteor/meteor"; import { Template } from "meteor/templating"; import { Reaction } from "/client/api"; -/* - * Methods for the reaction permissions - * helpers for roles, uses alanning:meteor-roles - * see: http://alanning.github.io/meteor-roles/classes/Roles.html - * use: {{hasPermission admin userId}} - */ - /** - * hasPermission template helper - * @summary check current user hasPermission + * @method hasPermission + * @memberof Template + * @summary check current user hasPermission, uses [alanning:meteor-roles](http://alanning.github.io/meteor-roles/classes/Roles.html) + * @example {{hasPermission admin userId}} * @param {String|Array} "permissions" * @param {String} checkUserId - optional Meteor.userId, default to current * @return {Boolean} @@ -33,29 +28,33 @@ Template.registerHelper("hasPermission", (permissions, options) => { }); /** - * hasOwnerAccess template helper - * @summary check if user has owner access + * @method hasOwnerAccess + * @memberof Template + * @summary check if user has owner access, uses [alanning:meteor-roles](http://alanning.github.io/meteor-roles/classes/Roles.html) * @return {Boolean} return true if owner */ Template.registerHelper("hasOwnerAccess", () => Reaction.hasOwnerAccess()); /** - * hasAdminAccess template helper - * @summary check if user has admin access + * @method hasAdminAccess + * @memberof Template + * @summary check if user has admin access, uses [alanning:meteor-roles](http://alanning.github.io/meteor-roles/classes/Roles.html) * @return {Boolean} return true if admin */ Template.registerHelper("hasAdminAccess", () => Reaction.hasAdminAccess()); /** - * hasDashboardAccess template helper - * @summary check if user has dashboard access + * @method hasDashboardAccess + * @memberof Template + * @summary check if user has dashboard access, uses [alanning:meteor-roles](http://alanning.github.io/meteor-roles/classes/Roles.html) * @return {Boolean} return true if user has dashboard permission */ Template.registerHelper("hasDashboardAccess", () => Reaction.hasDashboardAccess()); /** - * allowGuestCheckout template helper - * @summary check if guest users are allowed to checkout + * @method allowGuestCheckout + * @memberof Template + * @summary check if guest users are allowed to checkout, uses [alanning:meteor-roles](http://alanning.github.io/meteor-roles/classes/Roles.html) * @return {Boolean} return true if shop has guest checkout enabled */ Template.registerHelper("allowGuestCheckout", () => Reaction.allowGuestCheckout()); diff --git a/client/modules/core/helpers/templates.js b/client/modules/core/helpers/templates.js index 66f7c013f0a..cd3509cfdc8 100644 --- a/client/modules/core/helpers/templates.js +++ b/client/modules/core/helpers/templates.js @@ -11,6 +11,12 @@ import * as Collections from "/lib/collections"; import * as Schemas from "/lib/collections/schemas"; import { toCamelCase } from "/lib/api"; +/** + * @file Meteor Blaze Template helper methods - Use these helpers in Meteor Blaze templates with `{{ }}` + * Read more about Meteor Blaze helpers in the [Blaze Documentation](blazejs.org/api/templates.html#Template-registerHelper). + * @namespace Templates + */ + // Lazyload moment-timezone.months const monthOptionsVar = new ReactiveVar([]); async function lazyLoadMonths() { @@ -47,11 +53,11 @@ Template.registerHelper("Collections", () => Collections); Template.registerHelper("Schemas", () => Schemas); /** - * currentUser + * @method currentUser + * @memberof Templates * @summary overrides Meteor Package.blaze currentUser method * @return {Boolean} returns true/null if user has registered */ - Template.registerHelper("currentUser", () => { if (typeof Reaction === "object") { const shopId = Reaction.getShopId(); @@ -67,11 +73,17 @@ Template.registerHelper("currentUser", () => { return null; }); - +/** + * @method monthOptions + * @memberof Templates + * @summary Get monthOptionsVar ReactiveVar + * @param {Boolean} [showDefaultOption] + * @return {Array} returns array of months + */ Template.registerHelper("monthOptions", (showDefaultOption = true) => { const label = i18next.t("app.monthOptions", "Choose month"); - // Call to get monthOptinosVar ReactiveVar + // Call to get monthOptionsVar ReactiveVar lazyLoadMonths(); let monthOptions = []; @@ -88,8 +100,10 @@ Template.registerHelper("monthOptions", (showDefaultOption = true) => { }); /** - * yearOptions + * @method yearOptions + * @memberof Templates * @summary formats moment.js next 9 years into array for autoform selector + * @param {Boolean} [showDefaultOption] * @return {Array} returns array of years [value:, label:] */ Template.registerHelper("yearOptions", (showDefaultOption = true) => { @@ -115,7 +129,7 @@ Template.registerHelper("yearOptions", (showDefaultOption = true) => { }); /** - * camelToSpace + * @method camelToSpace * @summary convert a camelcased string to spaces * @param {String} str - camelcased string * @return {String} returns space formatted string @@ -126,7 +140,8 @@ Template.registerHelper("camelToSpace", (str) => { }); /** - * toLowerCase + * @method toLowerCase + * @memberof Templates * @summary convert a string to lower case * @param {String} str - string * @return {String} returns lowercased string @@ -134,7 +149,8 @@ Template.registerHelper("camelToSpace", (str) => { Template.registerHelper("toLowerCase", (str) => str.toLowerCase()); /** - * toUpperCase + * @method toUpperCase + * @memberof Templates * @summary convert a string to upper case * @param {String} str - string * @return {String} returns uppercased string @@ -142,7 +158,8 @@ Template.registerHelper("toLowerCase", (str) => str.toLowerCase()); Template.registerHelper("toUpperCase", (str) => str.toUpperCase()); /** - * capitalize + * @method capitalize + * @memberof Templates * @summary capitalize first character of string * @param {String} str - string * @return {String} returns string with first letter capitalized @@ -150,7 +167,8 @@ Template.registerHelper("toUpperCase", (str) => str.toUpperCase()); Template.registerHelper("capitalize", (str) => str.charAt(0).toUpperCase() + str.slice(1)); /** - * toCamelCase + * @method toCamelCase + * @memberof Templates * @summary camelCases a string * @param {String} str - string * @return {String|undefined} returns camelCased string @@ -159,8 +177,10 @@ Template.registerHelper("toCamelCase", (str) => !!str && toCamelCase(str)); /** - * siteName + * @method siteName + * @memberof Templates * @summary get the shop name + * @example {{siteName}} * @return {String} returns site name */ Template.registerHelper("siteName", () => { @@ -168,14 +188,11 @@ Template.registerHelper("siteName", () => { return typeof shop === "object" && shop.name ? shop.name : ""; }); -/* - * General helpers for template functionality - */ - /** - * condition + * @method condition * @summary conditional string comparison template helper * @example {{#if condition status "eq" ../value}} + * @memberof Templates * @param {String} v1 - first variable to compare * @param {String} operator - eq,neq,ideq,or,lt,gt comparision operator * @param {String} v2 - second variable to compare @@ -219,8 +236,13 @@ Template.registerHelper("condition", (v1, operator, v2) => { }); /** - * orElse + * @method orElse * @summary if this is true, or else this + * @memberof Templates + * @example {{#if showCartIconWarning}} +
!
+ {{/if}} +
{{orElse cartCount 0}}
* @param {String} v1 - variable one * @param {String} v2 - variable two * @return {String} returns v1 || v2 @@ -228,8 +250,9 @@ Template.registerHelper("condition", (v1, operator, v2) => { Template.registerHelper("orElse", (v1, v2) => v1 || v2); /** - * key_value + * @method key_value * @summary template helper pushing object key/value into array + * @memberof Templates * @param {Object} context - object to parse into key / value * @return {Array} returns array[key:,value:] */ @@ -243,9 +266,10 @@ Template.registerHelper("key_value", (context) => { }); /** - * nl2br + * @method nl2br * @summary template helper nl2br - Converts new line (\n\r) to
* from http://phpjs.org/functions/nl2br:480 + * @memberof Templates * @param {String} text - text * @returns {String} returns formatted Spacebars.SafeString */ @@ -255,8 +279,9 @@ Template.registerHelper("nl2br", (text) => { }); /** - * pluralize + * @method pluralize * @summary general helper for plurization of strings + * @memberof Templates * @example {{plurize "1 thing"}} * @param {String} nCount - number, ie "1 " * @param {String} pString - plural string ie " thing" diff --git a/client/modules/i18n/helpers.js b/client/modules/i18n/helpers.js index 5d509675376..0ef09406799 100644 --- a/client/modules/i18n/helpers.js +++ b/client/modules/i18n/helpers.js @@ -10,7 +10,7 @@ import { formatPriceString } from "./currency"; * @name i18n * @see http://i18next.com/ * @summary Pass the translation key as the first argument and the default message as the second argument - * @memberof i18n + * @memberof Templates * @method * @param {String} i18nKey - i18nKey * @param {String} i18nMessage - message text @@ -33,7 +33,7 @@ Template.registerHelper("i18n", (i18nKey, i18nMessage) => { /** * @name currencySymbol - * @memberof i18n + * @memberof Templates * @method * @summary Eeturn shop /locale specific currency format (ie: $) * @returns {String} return current locale currency symbol @@ -55,7 +55,7 @@ Template.registerHelper("currencySymbol", () => { /** * @name formatPrice - * @memberof i18n + * @memberof Templates * @method * @summary Return shop /locale specific formatted price. Also accepts a range formatted with " - " * @example {{formatPrice displayPrice}} diff --git a/client/modules/router/helpers.js b/client/modules/router/helpers.js index 66bbe95f590..c28605bcdfc 100644 --- a/client/modules/router/helpers.js +++ b/client/modules/router/helpers.js @@ -2,16 +2,26 @@ import { Template } from "meteor/templating"; import { Meteor } from "meteor/meteor"; import Router from "./main"; -// -// pathFor -// template helper to return path -// +/** + * @method pathFor + * @memberof Templates + * @summary template helper to return path + * @return {String} username + */ Template.registerHelper("pathFor", Router.pathFor); -// -// urlFor -// template helper to return absolute + path -// +/** + * @method urlFor + * @memberof Templates + * @summary template helper to return absolute + path + * @return {String} username + */ Template.registerHelper("urlFor", (path, params) => Meteor.absoluteUrl(Router.pathFor(path, params).substr(1))); +/** + * @method active + * @memberof Templates + * @summary template helper for `Router.isActiveClassName` + * @return {String} username + */ Template.registerHelper("active", Router.isActiveClassName); diff --git a/imports/plugins/core/accounts/client/helpers/templates.js b/imports/plugins/core/accounts/client/helpers/templates.js index 0eb578a9384..57e3a0b702b 100644 --- a/imports/plugins/core/accounts/client/helpers/templates.js +++ b/imports/plugins/core/accounts/client/helpers/templates.js @@ -4,8 +4,11 @@ import { Roles } from "meteor/alanning:roles"; import { Reaction, i18next, i18nextDep } from "/client/api"; import * as Collections from "/lib/collections"; -/* - * registerHelper displayName +/** + * @method displayName + * @memberof Templates + * @summary Return a registered and logged in user's name or Guest + * @return {String} username */ Template.registerHelper("displayName", (displayUser) => { i18nextDep.depend(); diff --git a/imports/plugins/core/accounts/client/templates/dropdown/helpers/templates.js b/imports/plugins/core/accounts/client/templates/dropdown/helpers/templates.js index 98f6f033e78..98e4bde9c52 100644 --- a/imports/plugins/core/accounts/client/templates/dropdown/helpers/templates.js +++ b/imports/plugins/core/accounts/client/templates/dropdown/helpers/templates.js @@ -4,7 +4,10 @@ import { Roles } from "meteor/alanning:roles"; import { Reaction, i18next, i18nextDep } from "/client/api"; /** - * registerHelper displayName + * @method displayName + * @memberof Templates + * @summary Return a registered and logged in user's name or Guest + * @return {String} username */ Template.registerHelper("displayName", (displayUser) => { i18nextDep.depend(); diff --git a/imports/plugins/core/checkout/client/helpers/cart.js b/imports/plugins/core/checkout/client/helpers/cart.js index bd083de0dd4..eadd2290e43 100644 --- a/imports/plugins/core/checkout/client/helpers/cart.js +++ b/imports/plugins/core/checkout/client/helpers/cart.js @@ -1,20 +1,14 @@ import { Cart } from "/lib/collections"; import { Template } from "meteor/templating"; -/* - * Template helpers for cart - * - */ - /** - * cart template helper - * @description - * methods to return cart calculated values - * cartCount, cartSubTotal, cartShipping, cartTaxes, cartTotal + * @method cart + * @summary methods to return cart calculated values + * cartCount, cartSubTotal, cartShipping, cartTaxes, `cartTotal` * are calculated by a transformation on the collection * and are available to use in template as cart.xxx - * in template: {{cart.getCount}} - * in code: Cart.findOne().getTotal() + * @example {{cart.getCount}} + * @memberof Templates * @return {Object} returns inventory helpers */ Template.registerHelper("cart", () => { @@ -67,8 +61,10 @@ Template.registerHelper("cart", () => { }); /** - * cartPayerName + * @method cartPayerName + * @memberof Templates * @summary gets current cart billing address / payment name + * @example {{>afFieldInput name="payerName" value=cartPayerName}} * @return {String} returns cart.billing[0].fullName */ Template.registerHelper("cartPayerName", () => { diff --git a/imports/plugins/core/ui-tagnav/client/helpers/tags.js b/imports/plugins/core/ui-tagnav/client/helpers/tags.js index 2c6382a5634..cdea90dc178 100644 --- a/imports/plugins/core/ui-tagnav/client/helpers/tags.js +++ b/imports/plugins/core/ui-tagnav/client/helpers/tags.js @@ -187,4 +187,11 @@ export const TagHelpers = { } }; +/** + * @method reactionSubTags + * @summary Template method to return subTags + * @param parentTag {Object} Tag + * @return {Array} Array of subtags or empty Array + * @memberof Templates + */ Template.registerHelper("reactionSubTags", TagHelpers.subTags); From 498ea24e7264c1e29e266b46ecf2f32077f1c430 Mon Sep 17 00:00:00 2001 From: Michael Duane Mooring Date: Thu, 26 Apr 2018 13:33:54 -0400 Subject: [PATCH 002/201] Invalid class name: .variant-list-item-{variant._id} `id="variant-list-item-{variant._id}"` didn't interpolate the `variant._id` `id={`variant-list-item-${variant._id}`}` is working fine for me. --- .../included/product-detail-simple/client/components/variant.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/product-detail-simple/client/components/variant.js b/imports/plugins/included/product-detail-simple/client/components/variant.js index 2a335a657dc..c9d2edd2477 100644 --- a/imports/plugins/included/product-detail-simple/client/components/variant.js +++ b/imports/plugins/included/product-detail-simple/client/components/variant.js @@ -122,7 +122,7 @@ class Variant extends Component { const variantElement = (
  • Date: Thu, 10 May 2018 09:22:38 -0700 Subject: [PATCH 003/201] chore: update package lock --- package-lock.json | 180 +++++++++++++++++++++++++--------------------- 1 file changed, 100 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d9973f8b9d..0a96732595b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2633,8 +2633,7 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, "bunyan-format": { "version": "0.2.1", @@ -2728,8 +2727,7 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "caniuse-lite": { "version": "1.0.30000813", @@ -3294,7 +3292,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", @@ -3955,7 +3952,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, "requires": { "is-arrayish": "0.2.1" } @@ -4297,7 +4293,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -4617,7 +4612,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "2.0.0" } @@ -5342,8 +5336,7 @@ "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, "get-func-name": { "version": "2.0.0", @@ -5874,8 +5867,7 @@ "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" }, "html-encoding-sniffer": { "version": "1.0.2", @@ -6138,8 +6130,7 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, "ip": { "version": "1.1.5", @@ -6177,8 +6168,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -6204,7 +6194,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, "requires": { "builtin-modules": "1.1.1" } @@ -6302,8 +6291,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { "version": "1.0.0", @@ -6559,8 +6547,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobj": { "version": "1.0.0", @@ -7559,7 +7546,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, "requires": { "invert-kv": "1.0.0" } @@ -7623,7 +7609,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "2.2.0", @@ -7644,7 +7629,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -7991,7 +7975,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -8086,7 +8069,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, "requires": { "mimic-fn": "1.1.0" } @@ -8829,8 +8811,7 @@ "mimic-fn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" }, "mimic-response": { "version": "1.0.0", @@ -9816,7 +9797,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", @@ -9862,7 +9842,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "2.0.1" } @@ -10152,7 +10131,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, "requires": { "execa": "0.7.0", "lcid": "1.0.0", @@ -10202,14 +10180,12 @@ "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "1.1.0" } @@ -10326,7 +10302,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, "requires": { "error-ex": "1.3.1" } @@ -10366,8 +10341,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-extra": { "version": "1.0.3", @@ -10389,8 +10363,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.5", @@ -10414,7 +10387,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, "requires": { "pify": "2.3.0" } @@ -10451,8 +10423,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", @@ -10858,8 +10829,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "pstree.remy": { "version": "1.1.0", @@ -11517,7 +11487,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, "requires": { "load-json-file": "2.0.0", "normalize-package-data": "2.4.0", @@ -11528,7 +11497,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, "requires": { "find-up": "2.1.0", "read-pkg": "2.0.0" @@ -11804,14 +11772,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "require-package-name": { "version": "2.0.1", @@ -12141,8 +12107,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-immediate-shim": { "version": "1.0.1", @@ -12240,7 +12205,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "1.0.0" } @@ -12248,8 +12212,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shellwords": { "version": "0.1.1", @@ -12952,7 +12915,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, "requires": { "spdx-license-ids": "1.2.2" } @@ -12960,14 +12922,12 @@ "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, "split": { "version": "0.3.3", @@ -13182,7 +13142,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -13205,7 +13164,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "3.0.0" }, @@ -13213,22 +13171,19 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" } } }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { "version": "2.0.1", @@ -13667,6 +13622,12 @@ } } }, + "transliteration": { + "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", + "requires": { + "yargs": "8.0.2" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -14144,7 +14105,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, "requires": { "spdx-correct": "1.0.2", "spdx-expression-parse": "1.0.4" @@ -14277,7 +14237,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, "requires": { "isexe": "2.0.0" } @@ -14285,8 +14244,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wide-align": { "version": "1.1.2", @@ -14365,7 +14323,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" @@ -14375,7 +14332,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -14384,7 +14340,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -14395,7 +14350,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -14497,14 +14451,80 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } }, "zen-observable": { "version": "0.7.1", From 04cf316b261f9d3fecfc650eb6c3bc275034f1fc Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 09:33:53 -0700 Subject: [PATCH 004/201] refactor: remove revision control from publication --- server/publications/collections/product.js | 51 +--------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index a557151a706..c6c0c68bb11 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -1,8 +1,7 @@ import { Meteor } from "meteor/meteor"; import { check, Match } from "meteor/check"; -import { Products, Revisions, Shops } from "/lib/collections"; +import { Products, Shops } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; /** * product detail publication @@ -65,54 +64,6 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { selector.isVisible = { $in: [true, false, undefined] }; - - if (RevisionApi.isRevisionControlEnabled()) { - const handle = Revisions.find({ - "workflow.status": { - $nin: [ - "revision/published" - ] - }, - "$or": [ - { "documentData._id": _id }, - { "documentData.ancestors": _id } - ] - }).observe({ - added: (revision) => { - this.added("Revisions", revision._id, revision); - if (revision.documentType === "product") { - // Check merge box (session collection view), if product is already in cache. - // If yes, we send a `changed`, otherwise `added`. I'm assuming - // that this._documents.Products is somewhat equivalent to the - // merge box Meteor.server.sessions[sessionId].getCollectionView("Products").documents - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } else { - this.added("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - changed: (revision) => { - this.changed("Revisions", revision._id, revision); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - removed: (revision) => { - this.removed("Revisions", revision._id); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [] }); - } - } - } - }); - this.onStop(() => { - handle.stop(); - }); - } } return Products.find(selector); From 4ce419aab263533010a8309d5da4bde13ebd3e61 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 09:46:01 -0700 Subject: [PATCH 005/201] refactor: remove revisions from publication --- server/publications/collections/products.js | 125 +------------------- 1 file changed, 1 insertion(+), 124 deletions(-) diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index b3f601cc0fb..2543f5d93e4 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -4,9 +4,8 @@ import { Meteor } from "meteor/meteor"; import { Tracker } from "meteor/tracker"; import { check, Match } from "meteor/check"; import { registerSchema } from "@reactioncommerce/schemas"; -import { Products, Shops, Revisions, Catalog } from "/lib/collections"; +import { Products, Shops, Catalog } from "/lib/collections"; import { Reaction, Logger } from "/server/api"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; // // define search filters as a schema so we can validate @@ -71,62 +70,6 @@ const filters = new SimpleSchema({ registerSchema("filters", filters); -/** - * Broadens an existing selector to include all variants of the given top-level productIds - * Additionally considers the tags product filter, if given - * Can operate on the "Revisions" and the "Products" collection - * @memberof Helpers - * @param collectionName {String} - "Revisions" or "Products" - * @param selector {object} - the selector that should be extended - * @param productFilters { object } - the product filter (e.g. orginating from query parameters) - * @param productIds {String[]} - the top-level productIds we want to get the variants of. - */ -function extendSelectorWithVariants(collectionName, selector, productFilters, productIds) { - let prefix = ""; - - if (collectionName.toLowerCase() === "revisions") { - prefix = "documentData."; - } else if (collectionName.toLowerCase() !== "products") { - throw new Error(`Can't extend selector for collection ${collectionName}.`); - } - - // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) - const newSelector = _.omit(selector, ["hashtags", "ancestors"]); - if (productFilters && productFilters.tags) { - // Re-configure selector to pick either Variants of one of the top-level products, or the top-level products in the filter - _.extend(newSelector, { - $or: [{ - [`${prefix}ancestors`]: { - $in: productIds - } - }, { - $and: [{ - [`${prefix}hashtags`]: { - $in: productFilters.tags - } - }, { - [`${prefix}_id`]: { - $in: productIds - } - }] - }] - }); - } else { - _.extend(newSelector, { - $or: [{ - [`${prefix}ancestors`]: { - $in: productIds - } - }, { - [`${prefix}_id`]: { - $in: productIds - } - }] - }); - } - return newSelector; -} - function filterProducts(productFilters) { // if there are filter/params that don't match the schema // validate, catch except but return no results @@ -336,8 +279,6 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so } // We publish an admin version of this publication to admins of products who are in "Edit Mode" - // Authorized content curators for shops get special publication of the product - // with all relevant revisions all is one package // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for if (editMode && userAdminShopIds && Array.isArray(userAdminShopIds) && userAdminShopIds.length > 0) { selector.isVisible = { @@ -346,70 +287,6 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so selector.shopId = { $in: activeShopsIds }; - - // Get _ids of top-level products - const productIds = Products.find(selector, { - sort, - limit: productScrollLimit - }).map((product) => product._id); - - - const productSelectorWithVariants = extendSelectorWithVariants("Products", selector, productFilters, productIds); - - if (RevisionApi.isRevisionControlEnabled()) { - const revisionSelector = { - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }; - const revisionSelectorWithVariants = extendSelectorWithVariants("Revisions", revisionSelector, productFilters, productIds); - const handle = Revisions.find(revisionSelectorWithVariants).observe({ - added: (revision) => { - this.added("Revisions", revision._id, revision); - if (revision.documentType === "product") { - // Check merge box (session collection view), if product is already in cache. - // If yes, we send a `changed`, otherwise `added`. I'm assuming - // that this._documents.Products is somewhat equivalent to - // the merge box Meteor.server.sessions[sessionId].getCollectionView("Products").documents - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } else { - this.added("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - changed: (revision) => { - this.changed("Revisions", revision._id, revision); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - removed: (revision) => { - this.removed("Revisions", revision._id); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [] }); - } - } - } - }); - - this.onStop(() => { - handle.stop(); - }); - - return Products.find(productSelectorWithVariants); - } - - // Revision control is disabled, but is admin - return Products.find(productSelectorWithVariants, { - sort, - limit: productScrollLimit - }); } // This is where the publication begins for non-admin users From 2ffa0cc0cc7743b1f1ae5701c69f5ee003c16b6d Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:27:21 -0700 Subject: [PATCH 006/201] refactor: move publish controls to `reaction-catalog` package --- .../client/components/publishControls.js | 37 +++++-------------- .../client/containers/publishContainer.js | 3 -- .../client/containers/publish.js | 2 +- .../containers/gridPublishContainer.js | 2 +- 4 files changed, 11 insertions(+), 33 deletions(-) rename imports/plugins/core/{revisions => catalog}/client/components/publishControls.js (92%) rename imports/plugins/core/{revisions => catalog}/client/containers/publishContainer.js (97%) diff --git a/imports/plugins/core/revisions/client/components/publishControls.js b/imports/plugins/core/catalog/client/components/publishControls.js similarity index 92% rename from imports/plugins/core/revisions/client/components/publishControls.js rename to imports/plugins/core/catalog/client/components/publishControls.js index 8381547b691..39322a5cef3 100644 --- a/imports/plugins/core/revisions/client/components/publishControls.js +++ b/imports/plugins/core/catalog/client/components/publishControls.js @@ -11,7 +11,6 @@ import { Switch, Icon } from "/imports/plugins/core/ui/client/components"; -import SimpleDiff from "./simpleDiff"; import { Translatable } from "/imports/plugins/core/ui/client/providers"; /** TMP **/ @@ -176,19 +175,6 @@ class PublishControls extends Component { return false; } - renderChanges() { - if (this.showDiffs) { - const diffs = this.props.revisions.map((revision) => ); - - return ( -
    - {diffs} -
    - ); - } - return null; - } - renderDeletionStatus() { if (this.hasChanges) { if (this.primaryRevision && this.primaryRevision.documentData.isDeleted) { @@ -378,20 +364,15 @@ class PublishControls extends Component { } render() { - if (this.props.isEnabled) { - return ( - - {this.renderDeletionStatus()} - {this.renderUndoButton()} - {this.renderArchiveButton()} - {this.renderViewControls()} - {this.renderPublishButton()} - {/* this.renderMoreOptionsButton() */} - - ); - } - - return null; + return ( + + {this.renderDeletionStatus()} + {this.renderArchiveButton()} + {this.renderViewControls()} + {this.renderPublishButton()} + {/* this.renderMoreOptionsButton() */} + + ); } } diff --git a/imports/plugins/core/revisions/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js similarity index 97% rename from imports/plugins/core/revisions/client/containers/publishContainer.js rename to imports/plugins/core/catalog/client/containers/publishContainer.js index e5c456b9fe4..f4531e14a18 100644 --- a/imports/plugins/core/revisions/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -5,7 +5,6 @@ import PublishControls from "../components/publishControls"; import { Revisions } from "/lib/collections"; import { Meteor } from "meteor/meteor"; import TranslationProvider from "/imports/plugins/core/ui/client/providers/translationProvider"; -import { isRevisionControlEnabled } from "../../lib/api"; import { Reaction, i18next } from "/client/api"; /* @@ -151,7 +150,6 @@ function composer(props, onData) { }).fetch(); onData(null, { - isEnabled: isRevisionControlEnabled(), documentIds: props.documentIds, documents: props.documents, revisions, @@ -163,7 +161,6 @@ function composer(props, onData) { } onData(null, { - isEnabled: isRevisionControlEnabled(), isPreview: viewAs === "customer" }); } diff --git a/imports/plugins/included/product-detail-simple/client/containers/publish.js b/imports/plugins/included/product-detail-simple/client/containers/publish.js index 07a10f6dd19..13d55f5fe3a 100644 --- a/imports/plugins/included/product-detail-simple/client/containers/publish.js +++ b/imports/plugins/included/product-detail-simple/client/containers/publish.js @@ -4,7 +4,7 @@ import { registerComponent, composeWithTracker } from "@reactioncommerce/reactio import { Meteor } from "meteor/meteor"; import { ReactionProduct } from "/lib/api"; import { Products } from "/lib/collections"; -import PublishContainer from "/imports/plugins/core/revisions/client/containers/publishContainer"; +import PublishContainer from "/imports/plugins/core/catalog/client/containers/publishContainer"; class ProductPublishContainer extends Component { handleMetaRemove = (productId, metafield) => { diff --git a/imports/plugins/included/product-variant/containers/gridPublishContainer.js b/imports/plugins/included/product-variant/containers/gridPublishContainer.js index 52df62f8448..d18c46c2170 100644 --- a/imports/plugins/included/product-variant/containers/gridPublishContainer.js +++ b/imports/plugins/included/product-variant/containers/gridPublishContainer.js @@ -5,7 +5,7 @@ import { Meteor } from "meteor/meteor"; import { Session } from "meteor/session"; import { ReactionProduct } from "/lib/api"; import { Products } from "/lib/collections"; -import PublishContainer from "/imports/plugins/core/revisions/client/containers/publishContainer"; +import PublishContainer from "/imports/plugins/core/catalog/client/containers/publishContainer"; class GridProductPublishContainer extends Component { static propTypes = { From 86f852bec314d97c8390cb527431f36171991b28 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:34:16 -0700 Subject: [PATCH 007/201] refactor: remove publish from revisions to products --- .../client/containers/publishContainer.js | 34 ++----------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/imports/plugins/core/catalog/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js index f4531e14a18..e640e41083a 100644 --- a/imports/plugins/core/catalog/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -21,42 +21,12 @@ class PublishContainer extends Component { }); } - handlePublishClick = (revisions) => { + handlePublishClick = () => { const productIds = this.props.documents .filter((doc) => doc.type === "simple") .map((doc) => doc._id); - if (Array.isArray(revisions) && revisions.length) { - let documentIds = revisions.map((revision) => { - if (revision.parentDocument && revision.documentType !== "product") { - return revision.parentDocument; - } - return revision.documentId; - }); - - const documentIdsSet = new Set(documentIds); // ensures they are unique - documentIds = Array.from(documentIdsSet); - Meteor.call("revisions/publish", documentIds, (error, result) => { - if (result && result.status === "success") { - const message = i18next.t("revisions.changedPublished", { - defaultValue: "Changes published successfully" - }); - Alerts.toast(message, "success"); - - if (this.props.onPublishSuccess) { - this.props.onPublishSuccess(result); - } - - // Publish to catalog after revisions have been published - this.publishToCatalog("products", productIds); - } else { - Alerts.toast((error && error.message) || (result && result.status) || i18next.t("app.error"), "error"); - } - }); - } else { - // Publish to catalog immediately if there are no revisions to publish beforehand - this.publishToCatalog("products", productIds); - } + this.publishToCatalog("products", productIds); } handlePublishActions = (event, action, documentIds) => { From a28e27c5e41050a8a4ab5519173596690429cc41 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:56:32 -0700 Subject: [PATCH 008/201] refactor: remove `applyProductRevision` --- lib/api/catalog.js | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/lib/api/catalog.js b/lib/api/catalog.js index 8b953197189..1a1d5ed0bba 100644 --- a/lib/api/catalog.js +++ b/lib/api/catalog.js @@ -1,7 +1,6 @@ import _ from "lodash"; import { Products } from "/lib/collections"; import { ReactionProduct } from "/lib/api"; -import { applyProductRevision } from "/lib/api/products"; /** * @file Catalog methods @@ -43,7 +42,7 @@ export default { * @return {Object} range, min, max */ getProductPriceRange(productId) { - const product = applyProductRevision(Products.findOne(productId)); + const product = Products.findOne(productId); if (!product) { return { range: "0", @@ -115,7 +114,7 @@ export default { switch (visibleChildren.length) { case 0: { - const topVariant = applyProductRevision(Products.findOne(variantId)); + const topVariant = Products.findOne(variantId); // topVariant could be undefined when we removing last top variant return topVariant && topVariant.price; } @@ -162,17 +161,6 @@ export default { return variant.inventoryQuantity || 0; }, - /** - * @method getPublishedOrRevision - * @memberof Catalog - * @description return top product revision if available - * @param {Object} product product or variant document - * @return {Object} product document - */ - getPublishedOrRevision(product) { - return applyProductRevision(product); - }, - /** * @method getProduct * @method @@ -198,7 +186,7 @@ export default { return Products.find({ ancestors: { $in: [id] }, type: type || "variant" - }).map(this.getPublishedOrRevision); + }).fetch(); }, /** @@ -210,11 +198,10 @@ export default { * @return {Array} Parent variant or empty */ getVariantParent(variant) { - const parent = Products.findOne({ + return Products.findOne({ _id: { $in: variant.ancestors }, type: "variant" }); - return this.getPublishedOrRevision(parent); }, /** @@ -231,7 +218,7 @@ export default { return Products.find({ ancestors: variant.ancestors, type: type || "variant" - }).map(this.getPublishedOrRevision); + }).fetch(); }, /** @@ -245,6 +232,6 @@ export default { return Products.find({ ancestors: [id], type: "variant" - }).map(this.getPublishedOrRevision); + }).fetch(); } }; From e8f58a7a694838149dbe3fbc8da3584f4b021e96 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:56:38 -0700 Subject: [PATCH 009/201] refactor: remove `applyProductRevision` --- .../product-variant/containers/variantEditContainer.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/imports/plugins/included/product-variant/containers/variantEditContainer.js b/imports/plugins/included/product-variant/containers/variantEditContainer.js index 6480ed5dd9f..ea27e327c70 100644 --- a/imports/plugins/included/product-variant/containers/variantEditContainer.js +++ b/imports/plugins/included/product-variant/containers/variantEditContainer.js @@ -7,7 +7,6 @@ import { ReactionProduct } from "/lib/api"; import { Products } from "/lib/collections"; import { Countries } from "/client/collections"; import { Reaction, i18next } from "/client/api"; -import { applyProductRevision } from "/lib/api/products"; import VariantEdit from "../components/variantEdit"; @@ -72,14 +71,13 @@ function composer(props, onData) { _id: ReactionProduct.selectedTopVariant()._id }); - const revisedVariant = applyProductRevision(variant); - const childVariants = ReactionProduct.getVariants(revisedVariant._id); + const childVariants = ReactionProduct.getVariants(variant._id); onData(null, { countries: Countries.find({}).fetch(), editFocus: Reaction.state.get("edit/focus"), childVariants, - variant: revisedVariant + variant }); } else { onData(null, { From ddaa4c8f3419277fd452b1a9008214ac0ffe5ddc Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:57:01 -0700 Subject: [PATCH 010/201] refactor: remove `applyProductRevision` and `resubscribeAfterCloning` --- .../containers/productsContainerAdmin.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/imports/plugins/included/product-variant/containers/productsContainerAdmin.js b/imports/plugins/included/product-variant/containers/productsContainerAdmin.js index 426a2add2a2..e6956e7609c 100644 --- a/imports/plugins/included/product-variant/containers/productsContainerAdmin.js +++ b/imports/plugins/included/product-variant/containers/productsContainerAdmin.js @@ -9,7 +9,6 @@ import { Tracker } from "meteor/tracker"; import { Reaction } from "/client/api"; import { ITEMS_INCREMENT } from "/client/config/defaults"; import { ReactionProduct } from "/lib/api"; -import { applyProductRevision, resubscribeAfterCloning } from "/lib/api/products"; import { Products, Tags, Shops } from "/lib/collections"; import ProductsComponent from "../components/products"; @@ -158,10 +157,6 @@ function composer(props, onData) { const queryParams = Object.assign({}, tags, Reaction.Router.current().query, shopIds); const productsSubscription = Meteor.subscribe("Products", scrollLimit, queryParams, sort, editMode); - if (resubscribeAfterCloning.get()) { - resubscribeAfterCloning.set(false); - productsSubscription.stop(); - } if (productsSubscription.ready()) { window.prerenderReady = true; @@ -180,12 +175,8 @@ function composer(props, onData) { shopId: { $in: activeShopsIds } }); - const productIds = []; - const products = productCursor.map((product) => { - productIds.push(product._id); - - return applyProductRevision(product); - }); + const products = productCursor.fetch(); + const productIds = productCursor.map((product) => product._id); const sortedProducts = ReactionProduct.sortProducts(products, currentTag); Session.set("productGrid/products", sortedProducts); From aae79a59d8bc3daddda299c225ca3d1c9bc09ac3 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:57:06 -0700 Subject: [PATCH 011/201] refactor: remove `applyProductRevision` --- .../templates/products/productSettings/productSettings.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js index 486a9bdc312..16d3cddc2d4 100644 --- a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js +++ b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js @@ -7,7 +7,6 @@ import Logger from "/client/modules/logger"; import { getPrimaryMediaForItem, ReactionProduct } from "/lib/api"; import { Products } from "/lib/collections"; import { isRevisionControlEnabled } from "/imports/plugins/core/revisions/lib/api"; -import { applyProductRevision } from "/lib/api/products"; function updateVariantProductField(variants, field, value) { return variants.map((variant) => Meteor.call("products/updateProductField", variant._id, field, value)); @@ -30,7 +29,7 @@ Template.productSettings.onCreated(function () { _id: { $in: productIds } - }).map((product) => applyProductRevision(product)); + }) this.state.set("productIds", productIds); this.state.set("products", products); From e3c75814fe78a9c8c6642bf029163e83ac3e8a63 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 10:57:12 -0700 Subject: [PATCH 012/201] refactor: remove `applyProductRevision` helper --- lib/api/products.js | 48 +++------------------------------------------ 1 file changed, 3 insertions(+), 45 deletions(-) diff --git a/lib/api/products.js b/lib/api/products.js index d4a77a7e57f..c920398e958 100644 --- a/lib/api/products.js +++ b/lib/api/products.js @@ -33,48 +33,6 @@ import { MetaData } from "/lib/api/router/metadata"; */ const ReactionProduct = new ReactiveDict("currentProduct"); -/** - * @name applyProductRevision - * @method - * @memberof ReactionProduct - * @summary Apply revision to product - * @example applyProductRevision(product) - * @param {Object} product product - * @return {Object|null} product or null, if no product found - */ -export function applyProductRevision(product) { - if (product) { - if (product.__revisions && product.__revisions.length) { - const cleanProduct = Object.assign({}, product); - delete cleanProduct.__revisions; - let revisedProduct; - // check for product revisions and set that as the current product - for (const revision of product.__revisions) { - if (!revision.parentDocument) { - revisedProduct = product.__revisions[0].documentData; - } - } - - // if there are no revision to product (image and/or tag only) just set the original product as the product - if (!revisedProduct) { - revisedProduct = cleanProduct; - } - - return Object.assign( - {}, - revisedProduct, - { - __published: cleanProduct, - __draft: product.__revisions[0] - } - ); - } - return product; - } - - return null; -} - /** * @name variantIsSelected * @method @@ -199,7 +157,7 @@ ReactionProduct.setProduct = (currentProductId, currentVariantId) => { // Update the meta data when a product is selected MetaData.init(Router.current()); - return applyProductRevision(product); + return product; }; /** @@ -244,7 +202,7 @@ ReactionProduct.selectedVariantId = () => { ReactionProduct.selectedVariant = function () { const id = ReactionProduct.selectedVariantId(); if (typeof id === "string") { - return applyProductRevision(Products.findOne(id)); + return Products.findOne(id); } return []; }; @@ -273,7 +231,7 @@ ReactionProduct.selectedTopVariant = function () { ReactionProduct.selectedProduct = function () { const id = ReactionProduct.selectedProductId(); if (typeof id === "string") { - return applyProductRevision(Products.findOne(id)); + return Products.findOne(id); } return undefined; }; From 146fcc3d7163064cad9c917988c1c50d447d7356 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 10 May 2018 15:58:58 -0700 Subject: [PATCH 013/201] fix: fetch products --- .../templates/products/productSettings/productSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js index 16d3cddc2d4..514d4af1124 100644 --- a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js +++ b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js @@ -29,7 +29,7 @@ Template.productSettings.onCreated(function () { _id: { $in: productIds } - }) + }).fetch(); this.state.set("productIds", productIds); this.state.set("products", products); From ebde6976b7bee5f765c5f3a2946857329a7a7c01 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:15:25 -0700 Subject: [PATCH 014/201] refactor: remove `isRevisionControlEnabled` stub --- imports/plugins/core/catalog/server/methods/catalog.app-test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.app-test.js b/imports/plugins/core/catalog/server/methods/catalog.app-test.js index 7dbbce8cfe1..aa84ddc57eb 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.app-test.js +++ b/imports/plugins/core/catalog/server/methods/catalog.app-test.js @@ -9,7 +9,6 @@ import { Reaction } from "/server/api"; import * as Collections from "/lib/collections"; import Fixtures from "/server/imports/fixtures"; import { PublicationCollector } from "meteor/johanbrook:publication-collector"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; import { publishProductToCatalog } from "./catalog"; Fixtures(); @@ -21,7 +20,6 @@ describe("Catalog", function () { beforeEach(function () { createActiveShop({ _id: shopId }); sandbox = sinon.sandbox.create(); - sandbox.stub(RevisionApi, "isRevisionControlEnabled", () => true); }); afterEach(function () { From 0ce83cef870bd9dfa66b7e32dff645e505cec6b2 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:15:37 -0700 Subject: [PATCH 015/201] refactor: remove `isRevisionControlEnabled` stub --- .../publications/collections/product-publications.app-test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 8321a8021b4..3a6780e0130 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -9,7 +9,6 @@ import { Reaction } from "/server/api"; import * as Collections from "/lib/collections"; import Fixtures from "/server/imports/fixtures"; import { PublicationCollector } from "meteor/johanbrook:publication-collector"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; Fixtures(); @@ -21,7 +20,6 @@ describe("Publication", function () { Collections.Shops.remove({}); createActiveShop({ _id: shopId }); sandbox = sinon.sandbox.create(); - sandbox.stub(RevisionApi, "isRevisionControlEnabled", () => true); }); afterEach(function () { From 678c131a8de99d89f78733d4086837cc46fa0381 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:15:50 -0700 Subject: [PATCH 016/201] refactor: remove `isRevisionControlEnabled` stub --- server/methods/catalog.app-test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/methods/catalog.app-test.js b/server/methods/catalog.app-test.js index 0dcde14c0b1..dc3b96a08cf 100644 --- a/server/methods/catalog.app-test.js +++ b/server/methods/catalog.app-test.js @@ -12,7 +12,6 @@ import { sinon } from "meteor/practicalmeteor:sinon"; import { Roles } from "meteor/alanning:roles"; import { addProduct, addProductSingleVariant } from "/server/imports/fixtures/products"; import Fixtures from "/server/imports/fixtures"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; Fixtures(); @@ -43,7 +42,6 @@ describe("core product methods", function () { beforeEach(function () { sandbox = sinon.sandbox.create(); - sandbox.stub(RevisionApi, "isRevisionControlEnabled", () => true); Revisions.remove({}); }); From 593b3e9e1f18ce970be02a72aa14c24a3ccfbd76 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:16:01 -0700 Subject: [PATCH 017/201] refactor: remove `isRevisionControlEnabled` stub --- .../included/inventory/server/methods/inventory.app-test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/imports/plugins/included/inventory/server/methods/inventory.app-test.js b/imports/plugins/included/inventory/server/methods/inventory.app-test.js index 91f56bdb3bf..98cdde81a95 100644 --- a/imports/plugins/included/inventory/server/methods/inventory.app-test.js +++ b/imports/plugins/included/inventory/server/methods/inventory.app-test.js @@ -8,7 +8,6 @@ import { expect } from "meteor/practicalmeteor:chai"; import { sinon } from "meteor/practicalmeteor:sinon"; import { addProduct } from "/server/imports/fixtures/products"; import Fixtures from "/server/imports/fixtures"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; Fixtures(); @@ -41,7 +40,6 @@ describe("inventory method", function () { beforeEach(function () { sandbox = sinon.sandbox.create(); - sandbox.stub(RevisionApi, "isRevisionControlEnabled", () => true); // again hack. w/o this we can't remove products from previous spec. Inventory.remove({}); // Empty Inventory }); From a0ffc6e1792da4151ee76a5af8fb7b25afcf8281 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:17:40 -0700 Subject: [PATCH 018/201] refactor: remove `isRevisionControlEnabled` Default isEnabled to true --- imports/plugins/core/dashboard/client/components/toolbar.js | 3 ++- .../core/dashboard/client/containers/toolbarContainer.js | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/dashboard/client/components/toolbar.js b/imports/plugins/core/dashboard/client/components/toolbar.js index 8983333e70b..2579c046a7f 100644 --- a/imports/plugins/core/dashboard/client/components/toolbar.js +++ b/imports/plugins/core/dashboard/client/components/toolbar.js @@ -35,7 +35,8 @@ class PublishControls extends Component { } static defaultProps = { - showViewAsControls: true + showViewAsControls: true, + isEnabled: true } componentDidMount() { diff --git a/imports/plugins/core/dashboard/client/containers/toolbarContainer.js b/imports/plugins/core/dashboard/client/containers/toolbarContainer.js index 72d5b12b406..4e89ce0e2ae 100644 --- a/imports/plugins/core/dashboard/client/containers/toolbarContainer.js +++ b/imports/plugins/core/dashboard/client/containers/toolbarContainer.js @@ -5,7 +5,6 @@ import { composeWithTracker } from "@reactioncommerce/reaction-components"; import { Reaction, i18next } from "/client/api"; import { Tags, Shops } from "/lib/collections"; import { AdminContextProvider } from "/imports/plugins/core/ui/client/providers"; -import { isRevisionControlEnabled } from "/imports/plugins/core/revisions/lib/api"; const handleAddProduct = () => { Reaction.setUserPreferences("reaction-dashboard", "viewAs", "administrator"); @@ -81,7 +80,6 @@ function composer(props, onData) { packageButtons, dashboardHeaderTemplate: props.data.dashboardHeader, isPreview: Reaction.isPreview(), - isEnabled: isRevisionControlEnabled(), isActionViewAtRootView: Reaction.isActionViewAtRootView(), actionViewIsOpen: Reaction.isActionViewOpen(), hasCreateProductAccess: Reaction.hasPermission("createProduct", Meteor.userId(), Reaction.getShopId()), From f2de5c1955266db758a9e20f62e2dbadaf0c6322 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:18:05 -0700 Subject: [PATCH 019/201] refactor: remove `isRevisionControlEnabled` Remove methods to apply revisions to media --- .../core/ui/client/containers/mediaGallery.js | 41 +------------------ 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/imports/plugins/core/ui/client/containers/mediaGallery.js b/imports/plugins/core/ui/client/containers/mediaGallery.js index 4d093e83ffd..3bf40a84c27 100644 --- a/imports/plugins/core/ui/client/containers/mediaGallery.js +++ b/imports/plugins/core/ui/client/containers/mediaGallery.js @@ -10,8 +10,6 @@ import { Meteor } from "meteor/meteor"; import MediaGallery from "../components/media/mediaGallery"; import { Logger, Reaction } from "/client/api"; import { ReactionProduct } from "/lib/api"; -import { Revisions } from "/lib/collections"; -import { isRevisionControlEnabled } from "/imports/plugins/core/revisions/lib/api"; import { Media } from "/imports/plugins/core/files/client"; const wrapComponent = (Comp) => ( @@ -213,18 +211,6 @@ const wrapComponent = (Comp) => ( } ); -function fetchMediaRevisions() { - const productId = ReactionProduct.selectedProductId(); - const mediaRevisions = Revisions.find({ - "parentDocument": productId, - "documentType": "image", - "workflow.status": { - $nin: ["revision/published"] - } - }).fetch(); - return mediaRevisions; -} - // resort the media in function sortMedia(media) { const sortedMedia = _.sortBy(media, (m) => { @@ -237,35 +223,10 @@ function sortMedia(media) { return sortedMedia; } -// Search through revisions and if we find one for the image, stick it on the object -function appendRevisionsToMedia(props, media) { - if (!isRevisionControlEnabled() || !Reaction.hasPermission(props.permission || ["createProduct"])) { - return media; - } - const mediaRevisions = fetchMediaRevisions(); - const newMedia = []; - for (const image of media) { - image.revision = undefined; - for (const revision of mediaRevisions) { - if (revision.documentId === image._id) { - image.revision = revision; - image.metadata.priority = revision.documentData.priority; - } - } - newMedia.push(image); - } - return sortMedia(newMedia); -} - function composer(props, onData) { - let media; let editable; const viewAs = Reaction.getUserPreferences("reaction-dashboard", "viewAs", "administrator"); - if (props.media) { - media = appendRevisionsToMedia(props, props.media); - } - if (viewAs === "customer") { editable = false; } else { @@ -274,7 +235,7 @@ function composer(props, onData) { onData(null, { editable, - media + media: sortMedia(props.media) }); } From 820444ee1c19172d6f7029d48e628e6ce6aa041f Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 11 May 2018 09:19:29 -0700 Subject: [PATCH 020/201] refactor: remove `isRevisionControlEnabled` conditional - Remove `isRevisionControlEnabled` conditional, keeping the contents of the block. - Remove the old publish logic --- .../productSettings/productSettings.js | 35 +++++++------------ 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js index 514d4af1124..5afe32a9b7d 100644 --- a/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js +++ b/imports/plugins/included/product-variant/client/templates/products/productSettings/productSettings.js @@ -6,7 +6,6 @@ import { Reaction } from "/client/api"; import Logger from "/client/modules/logger"; import { getPrimaryMediaForItem, ReactionProduct } from "/lib/api"; import { Products } from "/lib/collections"; -import { isRevisionControlEnabled } from "/imports/plugins/core/revisions/lib/api"; function updateVariantProductField(variants, field, value) { return variants.map((variant) => Meteor.call("products/updateProductField", variant._id, field, value)); @@ -121,28 +120,18 @@ Template.productSettings.events({ const instance = Template.instance(); const products = instance.state.get("products") || []; - if (isRevisionControlEnabled()) { - for (const product of products) { - // Update the visibility using the first selected product to determine the proper - // visibility toggle. This is to ensure that all selected products will become visible or not visible - // at the same time so it's not confusing. - Meteor.call("products/updateProductField", product._id, "isVisible", !products[0].isVisible); - // update the variants visibility - const variants = Products.find({ - ancestors: { - $in: [product._id] - } - }); - updateVariantProductField(variants, "isVisible", !products[0].isVisible); - } - } else { - // The legacy behavior will bulk toggle visibilty of each product seperatly. - // - // Example: - // If you selected 10 products, and 5 were visible and 5 were not visible, and then - // clicked the visibility button, 5 products would switched from not visible to visible, and the other 5 - // would be swiched from visible to not visible. - ReactionProduct.publishProduct(products); + for (const product of products) { + // Update the visibility using the first selected product to determine the proper + // visibility toggle. This is to ensure that all selected products will become visible or not visible + // at the same time so it's not confusing. + Meteor.call("products/updateProductField", product._id, "isVisible", !products[0].isVisible); + // update the variants visibility + const variants = Products.find({ + ancestors: { + $in: [product._id] + } + }); + updateVariantProductField(variants, "isVisible", !products[0].isVisible); } }, "click [data-event-action=cloneProduct]"() { From 193f166d6fdaf717aa142a3717944f1bd2e7ca4c Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 14 May 2018 16:14:55 -0700 Subject: [PATCH 021/201] refactor: remove dependency on revision control system --- imports/plugins/core/files/server/methods.js | 131 ++++--------------- 1 file changed, 29 insertions(+), 102 deletions(-) diff --git a/imports/plugins/core/files/server/methods.js b/imports/plugins/core/files/server/methods.js index 52d54cb37c7..af58d436f65 100644 --- a/imports/plugins/core/files/server/methods.js +++ b/imports/plugins/core/files/server/methods.js @@ -1,9 +1,7 @@ import { Meteor } from "meteor/meteor"; import { check } from "meteor/check"; -import { Hooks, Reaction } from "/server/api"; -import { MediaRecords, Revisions } from "/lib/collections"; -import { Media } from "/imports/plugins/core/files/server"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api"; +import { Reaction } from "/server/api"; +import { MediaRecords } from "/lib/collections"; /** * Media-related Meteor methods @@ -13,7 +11,7 @@ import { RevisionApi } from "/imports/plugins/core/revisions/lib/api"; /** * @method updateMediaMetadata * @memberof Media/Methods - * @summary updates media record in revision control. + * @summary updates media record control. * @param {String} fileRecordId - _id of updated file record. * @param {Object} metadata - metadata from updated media file. * @return {Boolean} @@ -22,95 +20,35 @@ import { RevisionApi } from "/imports/plugins/core/revisions/lib/api"; async function updateMediaMetadata(fileRecordId, metadata) { check(fileRecordId, String); check(metadata, Object); - if (RevisionApi.isRevisionControlEnabled()) { - if (metadata.productId) { - const existingRevision = Revisions.findOne({ - "documentId": fileRecordId, - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }); - if (existingRevision) { - const updatedMetadata = Object.assign({}, existingRevision.documentData, metadata); - // Special case where if we have both added and reordered images before publishing we don't want to overwrite - // the workflow status since it would be "unpublished" - if (existingRevision.documentData.workflow === "published" || existingRevision.changeType === "insert") { - updatedMetadata.workflow = "published"; - } - Revisions.update({ _id: existingRevision._id }, { - $set: { - documentData: updatedMetadata - } - }); - Hooks.Events.run("afterRevisionsUpdate", Meteor.userId(), { - ...existingRevision, - documentData: updatedMetadata - }); - } else { - Revisions.insert({ - documentId: fileRecordId, - documentData: metadata, - documentType: "image", - parentDocument: metadata.productId, - changeType: "update", - workflow: { - status: "revision/update" - } - }); - } - return false; + const result = MediaRecords.update({ + _id: fileRecordId + }, { + $set: { + metadata } - } - // for non-product images, just ignore and keep on moving - return true; + }); + + return result === 1; } /** * @name media/insert * @method * @memberof Media/Methods - * @summary insert a new media record and add it to revision control. + * @summary insert a new media record. * @param {Object} fileRecord - document from file collection upload. * @return {String} - _id of the new inserted media record. */ export async function insertMedia(fileRecord) { check(fileRecord, Object); - const mediaRecordId = await MediaRecords.insert(fileRecord); - - if (RevisionApi.isRevisionControlEnabled() && fileRecord.metadata.workflow !== "published") { - if (fileRecord.metadata.productId) { - const revisionMetadata = Object.assign({}, fileRecord.metadata); - revisionMetadata.workflow = "published"; - Revisions.insert({ - documentId: mediaRecordId, - documentData: revisionMetadata, - documentType: "image", - parentDocument: fileRecord.metadata.productId, - changeType: "insert", - workflow: { - status: "revision/update" - } - }); - MediaRecords.update({ - _id: mediaRecordId - }, { - $set: { - "metadata.workflow": "unpublished" - } - }); - } else { - MediaRecords.update({ - _id: mediaRecordId - }, { - $set: { - "metadata.workflow": "published" - } - }); + const mediaRecordId = await MediaRecords.insert({ + ...fileRecord, + metadata: { + ...fileRecord.metadata, + workflow: "published" } - } + }); return mediaRecordId; } @@ -119,33 +57,22 @@ export async function insertMedia(fileRecord) { * @name media/remove * @method * @memberof Media/Methods - * @summary removes media file and updates record in revision control. + * @summary unpublished media file by updating it's workflow * @param {String} fileRecordId - _id of file record to be deleted. * @return {Boolean} */ export async function removeMedia(fileRecordId) { check(fileRecordId, String); - const { metadata } = MediaRecords.findOne({ _id: fileRecordId }); - if (RevisionApi.isRevisionControlEnabled() && metadata.workflow && metadata.workflow === "unpublished") { - Revisions.remove({ - documentId: fileRecordId - }); - Media.remove(fileRecordId); - return true; - } else if (metadata.productId) { - Revisions.insert({ - documentId: fileRecordId, - documentData: metadata, - documentType: "image", - parentDocument: metadata.productId, - changeType: "remove", - workflow: { - status: "revision/update" - } - }); - return true; - } - return false; + + const result = MediaRecords.update({ + _id: fileRecordId + }, { + $set: { + "metadata.workflow": "archived" + } + }); + + return result === 1; } /** From baaca842a6ba2f98bf17b0acdeb4a24288982e0c Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:11:52 -0700 Subject: [PATCH 022/201] refactor: remove revision control hooks --- server/imports/fixtures/products.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/server/imports/fixtures/products.js b/server/imports/fixtures/products.js index 34af01077fa..6ed16b16c76 100755 --- a/server/imports/fixtures/products.js +++ b/server/imports/fixtures/products.js @@ -3,7 +3,6 @@ import _ from "lodash"; import { Factory } from "meteor/dburles:factory"; import { Products, Tags } from "/lib/collections"; import { getShop } from "./shops"; -import { Hooks } from "/server/api"; /** * @method metaField @@ -98,14 +97,10 @@ export function productVariant(options = {}) { */ export function addProduct(options = {}) { const product = Factory.create("product", options); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", product); // top level variant const variant = Factory.create("variant", Object.assign({}, productVariant(options), { ancestors: [product._id] })); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", variant); - const variant2 = Factory.create("variant", Object.assign({}, productVariant(options), { ancestors: [product._id, variant._id] })); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", variant2); - const variant3 = Factory.create("variant", Object.assign({}, productVariant(options), { ancestors: [product._id, variant._id] })); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", variant3); + Factory.create("variant", Object.assign({}, productVariant(options), { ancestors: [product._id, variant._id] })); + Factory.create("variant", Object.assign({}, productVariant(options), { ancestors: [product._id, variant._id] })); return product; } @@ -118,10 +113,8 @@ export function addProduct(options = {}) { */ export function addProductSingleVariant() { const product = Factory.create("product"); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", product); // top level variant const variant = Factory.create("variant", Object.assign({}, productVariant(), { ancestors: [product._id] })); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", variant); return { product, variant }; } From 2f45c0b092718438267b6e2c50bf93769ddfd265 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:12:15 -0700 Subject: [PATCH 023/201] refactor: remove revision control hooks --- server/methods/catalog.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/server/methods/catalog.js b/server/methods/catalog.js index 0ac6119fe41..5356ec18a39 100644 --- a/server/methods/catalog.js +++ b/server/methods/catalog.js @@ -497,7 +497,6 @@ Meteor.methods({ let newId; try { - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", clone); newId = Products.insert(clone, { validate: false }); const newProduct = Products.findOne(newId); Hooks.Events.run("afterInsertCatalogProduct", newProduct); @@ -572,8 +571,6 @@ Meteor.methods({ const _id = Products.insert(assembledVariant); Hooks.Events.run("afterInsertCatalogProduct", assembledVariant); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", Products.findOne({ _id })); - Logger.debug(`products/createVariant: created variant: ${newVariantId} for ${parentId}`); return newVariantId; @@ -785,7 +782,6 @@ Meteor.methods({ newProduct._id ); } - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", newProduct); result = Products.insert(newProduct, { validate: false }); Hooks.Events.run("afterInsertCatalogProduct", newProduct); results.push(result); @@ -814,7 +810,6 @@ Meteor.methods({ delete newVariant.createdAt; delete newVariant.publishedAt; // TODO can variant have this param? - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", newVariant); result = Products.insert(newVariant, { validate: false }); Hooks.Events.run("afterInsertCatalogProduct", newVariant); copyMedia(productNewId, variant._id, variantNewId); @@ -847,27 +842,19 @@ Meteor.methods({ throw new Meteor.Error("invalid-parameter", "Product should have a valid shopId"); } - // Create product revision - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", product); - return Products.insert(product); } const newSimpleProduct = createProduct(); - // Create simple product revision - Hooks.Events.run("afterInsertCatalogProductInsertRevision", newSimpleProduct); - - const newVariant = createProduct({ + // Create Variant + createProduct({ ancestors: [newSimpleProduct._id], price: 0.00, title: "", type: "variant" // needed for multi-schema }); - // Create variant revision - Hooks.Events.run("afterInsertCatalogProductInsertRevision", newVariant); - return newSimpleProduct._id; }, From 972b9a548b741d3316edd149a02e66e69a174f10 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:38:17 -0700 Subject: [PATCH 024/201] refactor: use standard catalog api --- server/methods/catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/methods/catalog.js b/server/methods/catalog.js index 5356ec18a39..e399359d9b2 100644 --- a/server/methods/catalog.js +++ b/server/methods/catalog.js @@ -4,7 +4,7 @@ import { check, Match } from "meteor/check"; import { EJSON } from "meteor/ejson"; import { Meteor } from "meteor/meteor"; import { ReactionProduct } from "/lib/api"; -import { ProductRevision as Catalog } from "/imports/plugins/core/revisions/server/hooks"; +import Catalog from "/lib/api/catalog"; import { Hooks, Logger, Reaction } from "/server/api"; import { MediaRecords, Products, Revisions, Tags } from "/lib/collections"; import { Media } from "/imports/plugins/core/files/server"; From 0efddf83b9492bec861b433a7b77f8d710f19b3a Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:38:26 -0700 Subject: [PATCH 025/201] refactor: use standard catalog api --- imports/plugins/core/catalog/server/methods/catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index f258bea0e14..11d9687a8ce 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -3,7 +3,7 @@ import { check, Match } from "meteor/check"; import { Products, Catalog as CatalogCollection } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; import { Media } from "/imports/plugins/core/files/server"; -import { ProductRevision as Catalog } from "/imports/plugins/core/revisions/server/hooks"; +import Catalog from "/lib/api"; /** * @method isSoldOut From 0c710bb93ab75603e2a46063fb5b988d51d30ffc Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:45:25 -0700 Subject: [PATCH 026/201] refactor: don't depend on the result of the `beforeUpdateCatalogProduct` hook --- server/methods/catalog.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/server/methods/catalog.js b/server/methods/catalog.js index e399359d9b2..b49a0eda863 100644 --- a/server/methods/catalog.js +++ b/server/methods/catalog.js @@ -373,23 +373,17 @@ function createProduct(props = null) { function updateCatalogProduct(userId, selector, modifier, validation) { const product = Products.findOne(selector); - const shouldUpdateProduct = Hooks.Events.run("beforeUpdateCatalogProduct", product, { + Hooks.Events.run("beforeUpdateCatalogProduct", product, { userId, modifier, validation }); - if (shouldUpdateProduct) { - const result = Products.update(selector, modifier, validation); + const result = Products.update(selector, modifier, validation); - Hooks.Events.run("afterUpdateCatalogProduct", product, { modifier }); + Hooks.Events.run("afterUpdateCatalogProduct", product, { modifier }); - return result; - } - - Logger.debug(`beforeUpdateCatalogProduct hook returned falsy, not updating catalog product`); - - return false; + return result; } From 3c374ab535f8154d5be666d07236cede66a14659 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 14:46:07 -0700 Subject: [PATCH 027/201] refactor: fix lint issue --- server/methods/catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/methods/catalog.js b/server/methods/catalog.js index b49a0eda863..567a1f448f2 100644 --- a/server/methods/catalog.js +++ b/server/methods/catalog.js @@ -562,7 +562,7 @@ Meteor.methods({ } Hooks.Events.run("beforeInsertCatalogProduct", assembledVariant); - const _id = Products.insert(assembledVariant); + Products.insert(assembledVariant); Hooks.Events.run("afterInsertCatalogProduct", assembledVariant); Logger.debug(`products/createVariant: created variant: ${newVariantId} for ${parentId}`); From 6aa5e3b1f2ef0d74227bb5a997180d00962cb96e Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:27:08 -0700 Subject: [PATCH 028/201] refactor: update tests to not depend on revision control Remove tests related only to revision control features. --- server/methods/catalog.app-test.js | 505 ++--------------------------- 1 file changed, 27 insertions(+), 478 deletions(-) diff --git a/server/methods/catalog.app-test.js b/server/methods/catalog.app-test.js index dc3b96a08cf..5d984aa8e53 100644 --- a/server/methods/catalog.app-test.js +++ b/server/methods/catalog.app-test.js @@ -6,7 +6,7 @@ import { Meteor } from "meteor/meteor"; import { check, Match } from "meteor/check"; import { Factory } from "meteor/dburles:factory"; import { Reaction } from "/server/api"; -import { Products, Revisions, Tags } from "/lib/collections"; +import { Products, Tags } from "/lib/collections"; import { expect } from "meteor/practicalmeteor:chai"; import { sinon } from "meteor/practicalmeteor:sinon"; import { Roles } from "meteor/alanning:roles"; @@ -42,7 +42,6 @@ describe("core product methods", function () { beforeEach(function () { sandbox = sinon.sandbox.create(); - Revisions.remove({}); }); afterEach(function () { @@ -164,7 +163,7 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not update individual variant by admin passing in full object", function (done) { + it("should update individual variant by admin passing in full object", function (done) { sandbox.stub(Reaction, "hasPermission", () => true); const product = addProduct(); let variant = Products.findOne({ ancestors: [product._id] }); @@ -172,55 +171,11 @@ describe("core product methods", function () { variant["price"] = 7; Meteor.call("products/updateVariant", variant); variant = Products.findOne({ ancestors: [product._id] }); - expect(variant.price).to.not.equal(7); - expect(variant.title).to.not.equal("Updated Title"); - - return done(); - }); - - it("should update individual variant revision by admin passing in full object", function (done) { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.find({ ancestors: [product._id] }).fetch()[0]; - variant["title"] = "Updated Title"; - variant["price"] = 7; - Meteor.call("products/updateVariant", variant); - const variantRevision = Revisions.find({ documentId: variant._id }).fetch()[0]; - expect(variantRevision.documentData.price).to.equal(7); - expect(variantRevision.documentData.title).to.equal("Updated Title"); + expect(variant.price).to.equal(7); + expect(variant.title).to.equal("Updated Title"); return done(); }); - - it("should not update individual variant by admin passing in partial object", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.findOne({ ancestors: [product._id] }); - Meteor.call("products/updateVariant", { - _id: variant._id, - title: "Updated Title", - price: 7 - }); - const updatedVariant = Products.findOne(variant._id); - expect(updatedVariant.price).to.not.equal(7); - expect(updatedVariant.title).to.not.equal("Updated Title"); - expect(updatedVariant.optionTitle).to.equal(variant.optionTitle); - }); - - it("should update individual variant revision by admin passing in partial object", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.find({ ancestors: [product._id] }).fetch()[0]; - Meteor.call("products/updateVariant", { - _id: variant._id, - title: "Updated Title", - price: 7 - }); - const updatedVariantRevision = Revisions.findOne({ documentId: variant._id }); - expect(updatedVariantRevision.documentData.price).to.equal(7); - expect(updatedVariantRevision.documentData.title).to.equal("Updated Title"); - expect(updatedVariantRevision.documentData.optionTitle).to.equal(variant.optionTitle); - }); }); describe("products/deleteVariant", function () { @@ -233,38 +188,16 @@ describe("core product methods", function () { expect(removeProductSpy).to.not.have.been.called; }); - it("should not mark top-level variant as deleted", function () { + it("should mark top-level variant as deleted", function () { sandbox.stub(Reaction, "hasPermission", () => true); const product = addProduct(); let variant = Products.findOne({ ancestors: [product._id] }); expect(variant.isDeleted).to.equal(false); Meteor.call("products/deleteVariant", variant._id); variant = Products.findOne(variant._id); - expect(variant.isDeleted).to.not.equal(true); + expect(variant.isDeleted).to.equal(true); }); - it("should mark top-level variant revision as deleted", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.findOne({ ancestors: [product._id] }); - expect(variant.isDeleted).to.equal(false); - Meteor.call("products/deleteVariant", variant._id); - const variantRevision = Revisions.findOne({ documentId: variant._id }); - expect(variantRevision.documentData.isDeleted).to.equal(true); - }); - - it("should publish top-level variant as deleted", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.findOne({ ancestors: [product._id] }); - expect(variant.isDeleted).to.equal(false); - Meteor.call("products/deleteVariant", variant._id); - Meteor.call("revisions/publish", variant._id); - const publishedProduct = Products.findOne(variant._id); - expect(publishedProduct.isDeleted).to.equal(true); - }); - - it("should mark all child variants (options) as deleted if top-level variant deleted", function () { sandbox.stub(Reaction, "hasPermission", () => true); const product = addProduct(); @@ -433,28 +366,11 @@ describe("core product methods", function () { expect(removeProductSpy).to.not.have.been.called; }); - it("should not mark product as deleted by admin", function () { + it("should mark product as deleted by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); Meteor.call("products/archiveProduct", product._id); product = Products.findOne(product._id); - expect(product.isDeleted).to.equal(false); - }); - - it("should mark product revision as deleted by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - Meteor.call("products/archiveProduct", product._id); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.isDeleted).to.equal(true); - }); - - it("should publish product revision marked as deleted by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/archiveProduct", product._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); expect(product.isDeleted).to.equal(true); }); }); @@ -471,56 +387,20 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not update product field by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "Updated Title"); - product = Products.findOne(product._id); - expect(product.title).to.not.equal("Updated Title"); - }); - - it("should update product revision field by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "Updated Title"); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.title).to.equal("Updated Title"); - }); - - it("should publish changes to product field by admin", function () { + it("should update product field by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); Meteor.call("products/updateProductField", product._id, "title", "Updated Title"); - Meteor.call("revisions/publish", product._id); product = Products.findOne(product._id); expect(product.title).to.equal("Updated Title"); }); - it("should not update variant fields", function () { + it("should update variant fields", function () { sandbox.stub(Reaction, "hasPermission", () => true); const product = addProduct(); let variant = Products.findOne({ ancestors: [product._id] }); Meteor.call("products/updateProductField", variant._id, "title", "Updated Title"); variant = Products.findOne(variant._id); - expect(variant.title).to.not.equal("Updated Title"); - }); - - it("should update variant revision fields", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const variant = Products.findOne({ ancestors: [product._id] }); - Meteor.call("products/updateProductField", variant._id, "title", "Updated Title"); - const variantRevision = Revisions.findOne({ documentId: variant._id }); - expect(variantRevision.documentData.title).to.equal("Updated Title"); - }); - - it("should publish update for variant fields", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - let variant = Products.findOne({ ancestors: [product._id] }); - Meteor.call("products/updateProductField", variant._id, "title", "Updated Title"); - Meteor.call("revisions/publish", product._id); - variant = Products.findOne(variant._id); expect(variant.title).to.equal("Updated Title"); }); }); @@ -540,7 +420,7 @@ describe("core product methods", function () { expect(insertTagsSpy).to.not.have.been.called; }); - it("should not new tag when passed tag name and null ID by admin", function () { + it("should create new tag when passed tag name and null ID by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); const tagName = "Product Tag"; @@ -549,59 +429,10 @@ describe("core product methods", function () { const tag = Tags.findOne({ name: tagName }); expect(tag.slug).to.equal(Reaction.getSlug(tagName)); product = Products.findOne(product._id); - expect(product.hashtags).to.not.contain(tag._id); - }); - - it("should add new tag to product revision when passed tag name and null ID by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const tagName = "Product Tag"; - expect(Tags.findOne({ name: tagName })).to.be.undefined; - Meteor.call("products/updateProductTags", product._id, tagName, null); - const tag = Tags.findOne({ name: tagName }); - expect(tag.slug).to.equal(Reaction.getSlug(tagName)); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.hashtags).to.contain(tag._id); - }); - - it("should publish new product tag when passed tag name and null ID by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const tagName = "Product Tag"; - expect(Tags.findOne({ name: tagName })).to.be.undefined; - Meteor.call("products/updateProductTags", product._id, tagName, null); - const tag = Tags.findOne({ name: tagName }); - expect(tag.slug).to.equal(Reaction.getSlug(tagName)); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); expect(product.hashtags).to.contain(tag._id); }); - it("should not add existing tag when passed existing tag and tag._id by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const tag = Factory.create("tag"); - expect(Tags.find().count()).to.equal(1); - expect(product.hashtags).to.not.contain(tag._id); - Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); - expect(Tags.find().count()).to.equal(1); - product = Products.findOne(product._id); - expect(product.hashtags).to.not.contain(tag._id); - }); - - it("should add existing tag to product revision when passed existing tag and tag._id by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const tag = Factory.create("tag"); - expect(Tags.find().count()).to.equal(1); - expect(product.hashtags).to.not.contain(tag._id); - Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); - expect(Tags.find().count()).to.equal(1); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.hashtags).to.contain(tag._id); - }); - - it("should publish existing tag for product when passed existing tag and tag._id by admin", function () { + it("should add existing tag when passed existing tag and tag._id by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); const tag = Factory.create("tag"); @@ -609,7 +440,6 @@ describe("core product methods", function () { expect(product.hashtags).to.not.contain(tag._id); Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); expect(Tags.find().count()).to.equal(1); - Meteor.call("revisions/publish", product._id); product = Products.findOne(product._id); expect(product.hashtags).to.contain(tag._id); }); @@ -631,70 +461,23 @@ describe("core product methods", function () { expect(removeTagsSpy).to.not.have.been.called; }); - it("should not remove product tag by admin", function () { + it("should remove product tag by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); const tag = Factory.create("tag"); - // Update product tags and publish so the original prodcut will have the tags + // Update product tags and publish so the original product will have the tags Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); - Meteor.call("revisions/publish", product._id); product = Products.findOne(product._id); expect(product.hashtags).to.contain(tag._id); expect(Tags.find().count()).to.equal(1); - // Remove the tag from the published prouct and ensure it didn't succeed. + // Remove the tag from the published product and ensure it didn't succeed. // Revision control should stop the published product from being changed. Meteor.call("products/removeProductTag", product._id, tag._id); product = Products.findOne(product._id); - expect(product.hashtags).to.contain(tag._id); - expect(Tags.find().count()).to.equal(1); - }); - - it("should remove tag in product revision by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const tag = Factory.create("tag"); - - // Update product tags and publish so the original prodcut will have the tags - Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.hashtags).to.contain(tag._id); - expect(Tags.find().count()).to.equal(1); - - // Remove the tag from the published prouct and ensure it changed in the revision. - Meteor.call("products/removeProductTag", product._id, tag._id); - const productRevision = Revisions.findOne({ - "documentId": product._id, - "workflow.status": { $nin: ["revision/published"] } - }); - expect(productRevision.documentData.hashtags).to.not.contain(tag._id); - expect(Tags.find().count()).to.equal(1); - }); - - it("should publish remove product tag by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - - // Update product tags and publish so the original prodcut will have the tags - const tag = Factory.create("tag"); - Meteor.call("products/updateProductTags", product._id, tag.name, tag._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.hashtags).to.contain(tag._id); - expect(Tags.find().count()).to.equal(1); - - // Remove the tag from the published prouct which should create a revision. - // Then publish that revision and ensure that it published product changed. - Meteor.call("products/removeProductTag", product._id, tag._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - const tags = Tags.find(); expect(product.hashtags).to.not.contain(tag._id); - expect(tags.count()).to.equal(1); - // Tag should not be deleted, it should just be removed from the product - expect(tags.fetch()[0].isDeleted).to.equal(false); + expect(Tags.find().count()).to.equal(0); }); }); @@ -709,70 +492,13 @@ describe("core product methods", function () { expect(productUpdateSpy).to.not.have.been.called; }); - it("should not set handle for product by admin", function () { + it("should set handle for product by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); - const productHandle = product.handle; Meteor.call("products/updateProductField", product._id, "title", "new product name"); Meteor.call("products/setHandle", product._id); product = Products.findOne(product._id); - expect(product.handle).to.equal(productHandle); - }); - - it("should set handle correctly on product revision", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - const revision = Revisions.findOne({ documentId: product._id }); - expect(revision.documentData.handle).to.not.equal("new-second-product-name"); - }); - - it("should not set handle on published product", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - product = Products.findOne(product._id); - expect(product.handle).to.not.equal("new-second-product-name"); - }); - - it("should publish handle correctly", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.handle).to.not.equal("new-second-product-name"); - }); - - it("unpublished products with the same title should not receive correct handle", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - product = Products.findOne(product._id); - expect(product.handle).to.not.equal("new-second-product-name-copy"); - }); - - it("products with the same title should receive correct handle on revision", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.handle).to.not.equal("new-second-product-name-copy"); - }); - - it("products with the same title should receive correct handle when published", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateProductField", product._id, "title", "new second product name"); - Meteor.call("products/setHandle", product._id); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.handle).to.not.equal("new-second-product-name-copy"); + expect(product.handle).to.equal(product._id); }); }); @@ -792,30 +518,11 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not set handle tag for product by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const tag = Factory.create("tag"); - Meteor.call("products/setHandleTag", product._id, tag._id); - product = Products.findOne(product._id); - expect(product.handle).to.not.equal(tag.slug); - }); - - it("should set handle tag for product revision by admin", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const tag = Factory.create("tag"); - Meteor.call("products/setHandleTag", product._id, tag._id); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.handle).to.equal(tag.slug); - }); - - it("should publish set handle tag for product by admin", function () { + it("should set handle tag for product by admin", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); const tag = Factory.create("tag"); Meteor.call("products/setHandleTag", product._id, tag._id); - Meteor.call("revisions/publish", product._id); product = Products.findOne(product._id); expect(product.handle).to.equal(tag.slug); }); @@ -838,7 +545,7 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not update product position by admin", function (done) { + it("should update product position by admin", function (done) { sandbox.stub(Reaction, "hasPermission", () => true); const product = addProduct(); const tag = Factory.create("tag"); @@ -852,46 +559,7 @@ describe("core product methods", function () { product._id, position, tag.slug )).to.not.throw(Meteor.Error, /Access Denied/); const updatedProduct = Products.findOne(product._id); - expect(updatedProduct.positions).to.be.undefined; - - return done(); - }); - - it("should update product revision position by admin", function (done) { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const tag = Factory.create("tag"); - const position = { - position: 0, - weight: 0, - updatedAt: new Date() - }; - expect(() => Meteor.call( - "products/updateProductPosition", - product._id, position, tag.slug - )).to.not.throw(Meteor.Error, /Access Denied/); - const updatedProductRevision = Revisions.findOne({ documentId: product._id }); - expect(updatedProductRevision.documentData.positions[tag.slug].position).to.equal(0); - - return done(); - }); - - it("should publish product position by admin", function (done) { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - const tag = Factory.create("tag"); - const position = { - position: 0, - weight: 0, - updatedAt: new Date() - }; - expect(() => Meteor.call( - "products/updateProductPosition", - product._id, position, tag.slug - )).to.not.throw(Meteor.Error, /Access Denied/); - Meteor.call("revisions/publish", product._id); - const updatedProduct = Products.findOne(product._id); - expect(updatedProduct.positions[tag.slug].position).to.equal(0); + expect(updatedProduct.positions).to.be.defined; return done(); }); @@ -908,49 +576,7 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not update variants' position", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const { variant: variant1 } = addProductSingleVariant(); - const { variant: variant2 } = addProductSingleVariant(); - const { variant: variant3 } = addProductSingleVariant(); - - expect(variant1.index).to.be.undefined; - expect(variant2.index).to.be.undefined; - expect(variant3.index).to.be.undefined; - - Meteor.call("products/updateVariantsPosition", [ - variant2._id, variant3._id, variant1._id - ]); - const modifiedVariant1 = Products.findOne(variant1._id); - const modifiedVariant2 = Products.findOne(variant2._id); - const modifiedVariant3 = Products.findOne(variant3._id); - expect(modifiedVariant1.index).to.be.undefined; - expect(modifiedVariant2.index).to.be.undefined; - expect(modifiedVariant3.index).to.be.undefined; - }); - - it("should update variants' revision position", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const { variant: variant1 } = addProductSingleVariant(); - const { variant: variant2 } = addProductSingleVariant(); - const { variant: variant3 } = addProductSingleVariant(); - - expect(variant1.index).to.be.undefined; - expect(variant2.index).to.be.undefined; - expect(variant3.index).to.be.undefined; - - Meteor.call("products/updateVariantsPosition", [ - variant2._id, variant3._id, variant1._id - ]); - const modifiedVariantRevision1 = Revisions.findOne({ documentId: variant1._id }); - const modifiedVariantRevision2 = Revisions.findOne({ documentId: variant2._id }); - const modifiedVariantRevision3 = Revisions.findOne({ documentId: variant3._id }); - expect(modifiedVariantRevision1.documentData.index).to.equal(2); - expect(modifiedVariantRevision2.documentData.index).to.equal(0); - expect(modifiedVariantRevision3.documentData.index).to.equal(1); - }); - - it("should publish variants' revision position", function () { + it("should update variants' position", function () { sandbox.stub(Reaction, "hasPermission", () => true); const { variant: variant1 } = addProductSingleVariant(); const { variant: variant2 } = addProductSingleVariant(); @@ -963,15 +589,12 @@ describe("core product methods", function () { Meteor.call("products/updateVariantsPosition", [ variant2._id, variant3._id, variant1._id ]); - Meteor.call("revisions/publish", [ - variant1._id, variant2._id, variant3._id - ]); const modifiedVariant1 = Products.findOne(variant1._id); const modifiedVariant2 = Products.findOne(variant2._id); const modifiedVariant3 = Products.findOne(variant3._id); - expect(modifiedVariant1.index).to.equal(2); - expect(modifiedVariant2.index).to.equal(0); - expect(modifiedVariant3.index).to.equal(1); + expect(modifiedVariant1.index).to.be(2); + expect(modifiedVariant2.index).to.be(0); + expect(modifiedVariant3.index).to.be(1); }); }); @@ -987,7 +610,7 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should not add meta fields by admin", function (done) { + it("should add meta fields by admin", function (done) { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); Meteor.call("products/updateMetaFields", product._id, { @@ -995,36 +618,7 @@ describe("core product methods", function () { value: "Spandex" }); product = Products.findOne(product._id); - expect(product.metafields.length).to.be.equal(0); - - return done(); - }); - - it("should add meta fields to product revision by admin", function (done) { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - Meteor.call("products/updateMetaFields", product._id, { - key: "Material", - value: "Spandex" - }); - const productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.metafields[0].key).to.equal("Material"); - expect(productRevision.documentData.metafields[0].value).to.equal("Spandex"); - - return done(); - }); - - it("should publish add meta fields by admin", function (done) { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - Meteor.call("products/updateMetaFields", product._id, { - key: "Material", - value: "Spandex" - }); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.metafields[0].key).to.equal("Material"); - expect(product.metafields[0].value).to.equal("Spandex"); + expect(product.metafields.length).to.be.equal(1); return done(); }); @@ -1039,60 +633,15 @@ describe("core product methods", function () { expect(updateProductSpy).to.not.have.been.called; }); - it("should let admin publish product changes", function () { + it("should let admin toggle product visibility", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); const { isVisible } = product; expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Access Denied/); - Meteor.call("revisions/publish", product._id); product = Products.findOne(product._id); - // We switch the visible state in `products/publishProdct` for revisions expect(product.isVisible).to.equal(!isVisible); }); - it("should not let admin toggle product visibility", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const { isVisible } = product; - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Access Denied/); - product = Products.findOne(product._id); - expect(product.isVisible).to.equal(isVisible); - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Bad Request/); - product = Products.findOne(product._id); - expect(product.isVisible).to.equal(isVisible); - }); - - it("should let admin toggle product revision visibility", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - const product = addProduct(); - let productRevision = Revisions.findOne({ documentId: product._id }); - const { isVisible } = productRevision.documentData; - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Access Denied/); - productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.isVisible).to.equal(!isVisible); - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Bad Request/); - productRevision = Revisions.findOne({ documentId: product._id }); - expect(productRevision.documentData.isVisible).to.equal(!isVisible); - }); - - it("should publish admin toggle product visibility", function () { - sandbox.stub(Reaction, "hasPermission", () => true); - let product = addProduct(); - const { isVisible } = product; // false - - // Toggle visible - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Access Denied/); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.isVisible).to.equal(!isVisible); - - // Toggle not visible - expect(() => Meteor.call("products/publishProduct", product._id)).to.not.throw(Meteor.Error, /Bad Request/); - Meteor.call("revisions/publish", product._id); - product = Products.findOne(product._id); - expect(product.isVisible).to.equal(isVisible); - }); - it("should not publish product when missing title", function () { sandbox.stub(Reaction, "hasPermission", () => true); let product = addProduct(); From 98dacee7bc2e5c782ed95044c71fc129a4ccc0cd Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:30:00 -0700 Subject: [PATCH 029/201] refactor: remove revision subscription --- .../client/containers/publishContainer.js | 43 +++---------------- 1 file changed, 6 insertions(+), 37 deletions(-) diff --git a/imports/plugins/core/catalog/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js index e640e41083a..4a61099579c 100644 --- a/imports/plugins/core/catalog/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -2,7 +2,6 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { composeWithTracker } from "@reactioncommerce/reaction-components"; import PublishControls from "../components/publishControls"; -import { Revisions } from "/lib/collections"; import { Meteor } from "meteor/meteor"; import TranslationProvider from "/imports/plugins/core/ui/client/providers/translationProvider"; import { Reaction, i18next } from "/client/api"; @@ -91,43 +90,13 @@ function composer(props, onData) { const viewAs = Reaction.getUserPreferences("reaction-dashboard", "viewAs", "administrator"); if (Array.isArray(props.documentIds) && props.documentIds.length) { - const subscription = Meteor.subscribe("ProductRevisions", props.documentIds); - - if (subscription.ready()) { - const revisions = Revisions.find({ - "$or": [ - { - documentId: { - $in: props.documentIds - } - }, - { - "documentData.ancestors": { - $in: props.documentIds - } - }, - { - parentDocument: { - $in: props.documentIds - } - } - ], - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }).fetch(); - - onData(null, { - documentIds: props.documentIds, - documents: props.documents, - revisions, - isPreview: viewAs === "customer" - }); + onData(null, { + documentIds: props.documentIds, + documents: props.documents, + isPreview: viewAs === "customer" + }); - return; - } + return; } onData(null, { From 20adfa7279b80bfaf56df7abfe5e60868327397d Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:31:14 -0700 Subject: [PATCH 030/201] refactor: remove revision publication --- server/publications/collections/revisions.js | 42 -------------------- 1 file changed, 42 deletions(-) delete mode 100644 server/publications/collections/revisions.js diff --git a/server/publications/collections/revisions.js b/server/publications/collections/revisions.js deleted file mode 100644 index 011afb94943..00000000000 --- a/server/publications/collections/revisions.js +++ /dev/null @@ -1,42 +0,0 @@ -import { Meteor } from "meteor/meteor"; -import { check, Match } from "meteor/check"; -import { Roles } from "meteor/alanning:roles"; -import { Revisions } from "/lib/collections"; -import { Reaction } from "/server/api"; - -/** - * accounts - */ - -Meteor.publish("Revisions", function (documentIds) { - check(documentIds, Match.OneOf(String, Array)); - - // we could additionally make checks of useId defined, but this could lead to - // situation when user will may not have time to get an account - if (this.userId === null) { - return this.ready(); - } - const shopId = Reaction.getShopId(); - if (!shopId) { - return this.ready(); - } - - if (Roles.userIsInRole(this.userId, ["admin", "owner"])) { - if (Array.isArray(documentIds)) { - return Revisions.find({ - // shopId, - documentId: { - $in: documentIds - } - }); - } - - // global admin can get all accounts - return Revisions.find({ - // shopId, - documentId: documentIds - }); - } - // regular users should get just their account - return this.ready(); -}); From 7497ca1eeb922b1ed0b063d30168b9341958ce43 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:39:29 -0700 Subject: [PATCH 031/201] breaking: remove revision control package --- .../revisions/client/components/settings.js | 45 -- .../revisions/client/components/simpleDiff.js | 86 ---- .../client/containers/settingsContainer.js | 70 --- .../plugins/core/revisions/client/index.js | 2 - .../revisions/client/templates/settings.html | 5 - .../revisions/client/templates/settings.js | 10 - imports/plugins/core/revisions/index.js | 1 - .../plugins/core/revisions/lib/api/index.js | 1 - .../core/revisions/lib/api/revisions.js | 32 -- imports/plugins/core/revisions/register.js | 21 - .../core/revisions/server/functions.js | 468 ------------------ .../plugins/core/revisions/server/hooks.js | 253 ---------- .../core/revisions/server/i18n/ar.json | 22 - .../core/revisions/server/i18n/bg.json | 22 - .../core/revisions/server/i18n/cs.json | 22 - .../core/revisions/server/i18n/de.json | 22 - .../core/revisions/server/i18n/el.json | 22 - .../core/revisions/server/i18n/en.json | 22 - .../core/revisions/server/i18n/es.json | 22 - .../core/revisions/server/i18n/fr.json | 22 - .../core/revisions/server/i18n/he.json | 5 - .../core/revisions/server/i18n/hr.json | 22 - .../core/revisions/server/i18n/hu.json | 22 - .../core/revisions/server/i18n/index.js | 32 -- .../core/revisions/server/i18n/it.json | 22 - .../core/revisions/server/i18n/my.json | 22 - .../core/revisions/server/i18n/nb.json | 5 - .../core/revisions/server/i18n/nl.json | 22 - .../core/revisions/server/i18n/pl.json | 22 - .../core/revisions/server/i18n/pt.json | 22 - .../core/revisions/server/i18n/ro.json | 22 - .../core/revisions/server/i18n/ru.json | 22 - .../core/revisions/server/i18n/sl.json | 22 - .../core/revisions/server/i18n/sv.json | 22 - .../core/revisions/server/i18n/tr.json | 22 - .../core/revisions/server/i18n/vi.json | 22 - .../core/revisions/server/i18n/zh.json | 22 - .../plugins/core/revisions/server/index.js | 4 - .../plugins/core/revisions/server/methods.js | 216 -------- .../core/revisions/server/publications.js | 47 -- 40 files changed, 1787 deletions(-) delete mode 100644 imports/plugins/core/revisions/client/components/settings.js delete mode 100644 imports/plugins/core/revisions/client/components/simpleDiff.js delete mode 100644 imports/plugins/core/revisions/client/containers/settingsContainer.js delete mode 100644 imports/plugins/core/revisions/client/index.js delete mode 100644 imports/plugins/core/revisions/client/templates/settings.html delete mode 100644 imports/plugins/core/revisions/client/templates/settings.js delete mode 100644 imports/plugins/core/revisions/index.js delete mode 100644 imports/plugins/core/revisions/lib/api/index.js delete mode 100644 imports/plugins/core/revisions/lib/api/revisions.js delete mode 100644 imports/plugins/core/revisions/register.js delete mode 100644 imports/plugins/core/revisions/server/functions.js delete mode 100644 imports/plugins/core/revisions/server/hooks.js delete mode 100644 imports/plugins/core/revisions/server/i18n/ar.json delete mode 100644 imports/plugins/core/revisions/server/i18n/bg.json delete mode 100644 imports/plugins/core/revisions/server/i18n/cs.json delete mode 100644 imports/plugins/core/revisions/server/i18n/de.json delete mode 100644 imports/plugins/core/revisions/server/i18n/el.json delete mode 100644 imports/plugins/core/revisions/server/i18n/en.json delete mode 100644 imports/plugins/core/revisions/server/i18n/es.json delete mode 100644 imports/plugins/core/revisions/server/i18n/fr.json delete mode 100644 imports/plugins/core/revisions/server/i18n/he.json delete mode 100644 imports/plugins/core/revisions/server/i18n/hr.json delete mode 100644 imports/plugins/core/revisions/server/i18n/hu.json delete mode 100644 imports/plugins/core/revisions/server/i18n/index.js delete mode 100644 imports/plugins/core/revisions/server/i18n/it.json delete mode 100644 imports/plugins/core/revisions/server/i18n/my.json delete mode 100644 imports/plugins/core/revisions/server/i18n/nb.json delete mode 100644 imports/plugins/core/revisions/server/i18n/nl.json delete mode 100644 imports/plugins/core/revisions/server/i18n/pl.json delete mode 100644 imports/plugins/core/revisions/server/i18n/pt.json delete mode 100644 imports/plugins/core/revisions/server/i18n/ro.json delete mode 100644 imports/plugins/core/revisions/server/i18n/ru.json delete mode 100644 imports/plugins/core/revisions/server/i18n/sl.json delete mode 100644 imports/plugins/core/revisions/server/i18n/sv.json delete mode 100644 imports/plugins/core/revisions/server/i18n/tr.json delete mode 100644 imports/plugins/core/revisions/server/i18n/vi.json delete mode 100644 imports/plugins/core/revisions/server/i18n/zh.json delete mode 100644 imports/plugins/core/revisions/server/index.js delete mode 100644 imports/plugins/core/revisions/server/methods.js delete mode 100644 imports/plugins/core/revisions/server/publications.js diff --git a/imports/plugins/core/revisions/client/components/settings.js b/imports/plugins/core/revisions/client/components/settings.js deleted file mode 100644 index 9b6f7c4a11a..00000000000 --- a/imports/plugins/core/revisions/client/components/settings.js +++ /dev/null @@ -1,45 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import { Translation } from "/imports/plugins/core/ui/client/components"; - - -class RevisionControlSettings extends Component { - get settings() { - return this.props.settings; - } - - render() { - let message; - - if (this.settings.general.enabled) { - message = ( - - ); - } else { - message = ( - - ); - } - - return ( -
    -

    {message}

    -
    - ); - } -} - -RevisionControlSettings.propTypes = { - checked: PropTypes.bool, - label: PropTypes.string, - onUpdateSettings: PropTypes.func, - settings: PropTypes.object -}; - -export default RevisionControlSettings; diff --git a/imports/plugins/core/revisions/client/components/simpleDiff.js b/imports/plugins/core/revisions/client/components/simpleDiff.js deleted file mode 100644 index d4d2275a534..00000000000 --- a/imports/plugins/core/revisions/client/components/simpleDiff.js +++ /dev/null @@ -1,86 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; - -class SimpleDiff extends Component { - renderDiff() { - const { diff } = this.props; - - return diff.map((change, index) => { - const rightHandSide = change.rhs && change.rhs.toString(); - const leftHandSide = change.lhs && change.lhs.toString(); - - switch (change.kind) { - // Array change - case "A": - return ( - - - {leftHandSide} - {rightHandSide} - - ); - - // Added property / element - case "N": - return ( - - - {leftHandSide} - {rightHandSide} - - ); - - // Edited property or element - case "E": - return ( - - - {leftHandSide} - {rightHandSide} - - ); - - // Removed property / element - case "D": - return ( - - - {leftHandSide} - {rightHandSide} - - ); - default: - return null; - } - }); - } - - render() { - return ( -
    - - - - - - - - - {this.renderDiff()} - -
    - {"Current"}{"Change"}
    -
    - ); - } -} - -SimpleDiff.defaultProps = { - diff: [] -}; - -SimpleDiff.propTypes = { - diff: PropTypes.arrayOf(PropTypes.object) -}; - -export default SimpleDiff; diff --git a/imports/plugins/core/revisions/client/containers/settingsContainer.js b/imports/plugins/core/revisions/client/containers/settingsContainer.js deleted file mode 100644 index 01a39387281..00000000000 --- a/imports/plugins/core/revisions/client/containers/settingsContainer.js +++ /dev/null @@ -1,70 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import { composeWithTracker } from "@reactioncommerce/reaction-components"; -import { Meteor } from "meteor/meteor"; -import SettingsComponent from "../components/settings"; -import { Packages } from "/lib/collections"; - -class RevisionSettingsContainer extends Component { - constructor(props) { - super(props); - - this.state = { - settings: this.props.packageInfo.settings - }; - } - - componentWillReceiveProps(nextProps) { - this.setState({ - settings: nextProps.packageInfo.settings - }); - } - - get settings() { - return this.state.settings; - } - - handleUpdateSettings = (settings) => { - this.setState({ settings }, () => { - Meteor.call("revisions/settings/update", settings); - }); - } - - /** - * Publish container is a stateless container component connected to Meteor data source. - * @return {PropTypes.node} react node - */ - render() { - return ( -
    - -
    - ); - } -} - -RevisionSettingsContainer.propTypes = { - packageInfo: PropTypes.object -}; - -export function handlePublishClick(revisions) { - if (Array.isArray(revisions)) { - const documentIds = revisions.map((revision) => revision.documentId); - Meteor.call("revisions/publish", documentIds); - } -} - -function composer(props, onData) { - const packageInfo = Packages.findOne({ - name: "reaction-revisions" - }); - - onData(null, { - packageInfo - }); -} - -export default composeWithTracker(composer)(RevisionSettingsContainer); diff --git a/imports/plugins/core/revisions/client/index.js b/imports/plugins/core/revisions/client/index.js deleted file mode 100644 index de2ea13734f..00000000000 --- a/imports/plugins/core/revisions/client/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./templates/settings.html"; -import "./templates/settings.js"; diff --git a/imports/plugins/core/revisions/client/templates/settings.html b/imports/plugins/core/revisions/client/templates/settings.html deleted file mode 100644 index 03253ad97cd..00000000000 --- a/imports/plugins/core/revisions/client/templates/settings.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/imports/plugins/core/revisions/client/templates/settings.js b/imports/plugins/core/revisions/client/templates/settings.js deleted file mode 100644 index b12d8df528c..00000000000 --- a/imports/plugins/core/revisions/client/templates/settings.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Template } from "meteor/templating"; -import SearchContainer from "../containers/settingsContainer.js"; - -Template.revisionControlSettings.helpers({ - SearchContainerComponent() { - return { - component: SearchContainer - }; - } -}); diff --git a/imports/plugins/core/revisions/index.js b/imports/plugins/core/revisions/index.js deleted file mode 100644 index d0eb62211f5..00000000000 --- a/imports/plugins/core/revisions/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as PublishContainer } from "./client/containers/publishContainer"; diff --git a/imports/plugins/core/revisions/lib/api/index.js b/imports/plugins/core/revisions/lib/api/index.js deleted file mode 100644 index 4442f1f0bed..00000000000 --- a/imports/plugins/core/revisions/lib/api/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from "./revisions"; diff --git a/imports/plugins/core/revisions/lib/api/revisions.js b/imports/plugins/core/revisions/lib/api/revisions.js deleted file mode 100644 index b72ddb46af1..00000000000 --- a/imports/plugins/core/revisions/lib/api/revisions.js +++ /dev/null @@ -1,32 +0,0 @@ -import { Packages } from "/lib/collections"; -import { Reaction } from "/lib/api"; - -export function getPackageSettings() { - const shopId = Reaction.getPrimaryShopId(); - - const packageInfo = Packages.findOne({ - name: "reaction-revisions", - shopId - }); - - if (packageInfo && packageInfo.enabled && packageInfo.settings) { - return packageInfo.settings; - } - - return null; -} - -export function isRevisionControlEnabled() { - const settings = getPackageSettings(); - - if (settings && settings.general && typeof settings.general.enabled === "boolean") { - return settings.general.enabled; - } - - return false; -} - -export const RevisionApi = { - isRevisionControlEnabled, - getPackageSettings -}; diff --git a/imports/plugins/core/revisions/register.js b/imports/plugins/core/revisions/register.js deleted file mode 100644 index fa545f380bd..00000000000 --- a/imports/plugins/core/revisions/register.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Reaction } from "/server/api"; - -Reaction.registerPackage({ - label: "Revisions", - name: "reaction-revisions", - autoEnable: true, - settings: { - general: { - enabled: true - } - }, - registry: [ - // Settings Panel in Catalog - { - label: "Product Revisions", - name: "catalog/settings/revisions/general", - provides: ["catalogSettings"], - template: "revisionControlSettings" - } - ] -}); diff --git a/imports/plugins/core/revisions/server/functions.js b/imports/plugins/core/revisions/server/functions.js deleted file mode 100644 index d6376ba6b38..00000000000 --- a/imports/plugins/core/revisions/server/functions.js +++ /dev/null @@ -1,468 +0,0 @@ - -import _ from "lodash"; -import { Meteor } from "meteor/meteor"; -import { Products, Revisions, Tags } from "/lib/collections"; -import { Hooks, Logger } from "/server/api"; -import { RevisionApi } from "../lib/api"; -import { ProductRevision } from "./hooks"; -import { getSlug } from "/lib/api"; - - -/** - * @name insertRevision - * @method - * @summary Inserts a new revision for a given product - * @param {Object} product - * @returns {undefined} - * @private - */ -export function insertRevision(product) { - if (RevisionApi.isRevisionControlEnabled() === false) { - return true; - } - - if (product.workflow && Array.isArray(product.workflow.workflow) && product.workflow.workflow.indexOf("imported") !== -1) { - // Mark imported products as published by default. - return true; - } - - const productRevision = Revisions.findOne({ - "documentId": product._id, - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }); - - // Prevent this product from being created if a parent product / variant ancestor is deleted. - // - // This will prevent cases where a parent variant has been deleted and a user tries to create a - // child variant. You cannot create the child variant because the parent will no longer exist when - // changes have been published; resulting in a broken inheritance and UI - const productHasAncestors = Array.isArray(product.ancestors); - - if (productHasAncestors) { - // Verify there are no deleted ancestors, - // Variants cannot be restored if their parent product / variant is deleted - const archivedCount = Revisions.find({ - "documentId": { $in: product.ancestors }, - "documentData.isDeleted": true, - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }).count(); - - if (archivedCount > 0) { - Logger.debug(`Cannot create product ${product._id} as a product/variant higher in it's ancestors tree is marked as 'isDeleted'.`); - throw new Meteor.Error("unable-to-create-variant", "Unable to create product variant"); - } - } - - - if (!productRevision) { - Logger.debug(`No revision found for product ${product._id}. Creating new revision`); - - Revisions.insert({ - documentId: product._id, - documentData: product - }); - } -} - -/** - * @name updateRevision - * @method - * @summary Update a product's revision - * @param {String} userId - * @param {Object} product - Product to update - * @param {Object} options - Options include userId, modifier and validation properties - * @returns {Boolean} true if underlying product should be updated, otherwise false. - * @private - */ -export function updateRevision(product, options = {}) { - if (RevisionApi.isRevisionControlEnabled() === false) { - return true; - } - - const { userId, modifier } = options; - - let productRevision = Revisions.findOne({ - "documentId": product._id, - "workflow.status": { - $nin: ["revision/published"] - } - }); - - // Prevent this product revision from being restored from isDeleted state if a product / variant - // ancestor is also deleted. - // - // This will prevent cases where a parent variant has been deleted and a user tries to restore a - // child variant. You cannot restore the child variant, because the parent will no longer exist when - // changes have been published; resulting in a broken inheritance and UI - const revisionHasAncestors = - productRevision && productRevision.documentData && Array.isArray(productRevision.documentData.ancestors); - const modifierContainsIsDeleted = modifier.$set && modifier.$set.isDeleted === false; - - if (revisionHasAncestors && modifierContainsIsDeleted) { - // Verify there are no deleted ancestors, - // Variants cannot be restored if their parent product / variant is deleted - const archivedCount = Revisions.find({ - "documentId": { $in: productRevision.documentData.ancestors }, - "documentData.isDeleted": true, - "workflow.status": { - $nin: ["revision/published"] - } - }).count(); - - if (archivedCount > 0) { - Logger.debug(`Cannot restore product ${ - product._id - } as a product/variant higher in it's ancestors tree is marked as 'isDeleted'.`); - throw new Meteor.Error("unable-to-delete-variant", "Unable to delete product variant"); - } - } - - - if (!productRevision) { - Logger.debug(`No revision found for product ${product._id}. Creating new revision`); - - // Create a new revision - Revisions.insert({ - documentId: product._id, - documentData: product - }); - - // Fetch newly created revision - productRevision = Revisions.findOne({ - documentId: product._id - }); - } - - // Create a new selector for the revision - // - // This is especially important since we may need to update some fields - // like metadata, and the selector is very important to that. - const revisionSelector = { - "documentId": product._id, - "workflow.status": { - $nin: ["revision/published"] - } - }; - - // Create a new modifier for the revision - const revisionModifier = { - $set: { - "workflow.status": "revision/update" - } - }; - - let publish = false; - if (Object.prototype.hasOwnProperty.call(options, "publish")) { - ({ publish } = options); - } - - if (publish === true || (product.workflow && product.workflow.status === "product/publish")) { - // Maybe mark the revision as published - - Logger.debug(`Publishing revision for product ${product._id}.`); - Revisions.update(revisionSelector, { - $set: { - "workflow.status": "revision/published" - } - }); - Hooks.Events.run("afterRevisionsUpdate", userId, { - ...productRevision, - workflow: { ...productRevision.workflow, status: "revisions/published" } - }); - return true; - } - - const hasAncestors = Array.isArray(product.ancestors) && product.ancestors.length > 0; - - for (const operation in modifier) { - if (Object.hasOwnProperty.call(modifier, operation)) { - if (!revisionModifier[operation]) { - revisionModifier[operation] = {}; - } - - for (const property in modifier[operation]) { - if ({}.hasOwnProperty.call(modifier[operation], property)) { - if (operation === "$set" && property === "metafields.$") { - // Special handling for meta fields with $ operator - // We need to update the selector otherwise the operation would completely fail. - // - // This does NOT apply to metafield.0, metafield.1, metafield.n operations - // where 0, 1, n represent an array index. - - // const originalSelector = options.selector; - revisionSelector["documentData.metafields"] = options.metafields; - revisionModifier.$set[`documentData.${property}`] = modifier.$set[property]; - } else if (operation === "$push" && property === "hashtags") { - if (!revisionModifier.$addToSet) { - revisionModifier.$addToSet = {}; - } - revisionModifier.$addToSet[`documentData.${property}`] = modifier.$push[property]; - } else if (operation === "$set" && property === "price" && hasAncestors) { - Revisions.update(revisionSelector, { - $set: { - "documentData.price": modifier.$set.price - } - }); - Hooks.Events.run("afterRevisionsUpdate", userId, { - ...productRevision, - documentData: { ...productRevision.documentData, price: modifier.$set.price } - }); - - const updateId = product.ancestors[0] || product._id; - const priceRange = ProductRevision.getProductPriceRange(updateId); - - Meteor.call("products/updateProductField", updateId, "price", priceRange); - } else if (operation === "$set" && property === "isVisible" && hasAncestors) { - Revisions.update(revisionSelector, { - $set: { - "documentData.isVisible": modifier.$set.isVisible - } - }); - Hooks.Events.run("afterRevisionsUpdate", userId, { - ...productRevision, - documentData: { ...productRevision.documentData, isVisible: modifier.$set.isVisible } - }); - - const updateId = product.ancestors[0] || product._id; - const priceRange = ProductRevision.getProductPriceRange(updateId); - - Meteor.call("products/updateProductField", updateId, "price", priceRange); - } else if ( - operation === "$set" && - (property === "title" || property === "handle") && - hasAncestors === false - ) { - // Special handling for product title and handle - // - // Summary: - // When a user updates the product title, if the handle matches the product id, - // then update the handle to be a slugified version of the title - // - // This block ensures that the handle is either a custom slug, slug of the title, or - // the _id of the product, but is never blank - - // New data - const newValue = modifier.$set[property]; - const newTitle = modifier.$set.title; - const newHandle = modifier.$set.handle; - - // Current revision data - const { documentId } = productRevision; - const slugDocId = getSlug(documentId); - const revisionTitle = productRevision.documentData.title; - const revisionHandle = productRevision.documentData.handle; - - // Checks - const hasNewHandle = _.isEmpty(newHandle) === false; - const hasExistingTitle = _.isEmpty(revisionTitle) === false; - const hasNewTitle = _.isEmpty(newTitle) === false; - const hasHandle = _.isEmpty(revisionHandle) === false; - const handleMatchesId = - revisionHandle === documentId || - revisionHandle === slugDocId || - newValue === documentId || - newValue === slugDocId; - - // Continue to set the title / handle as originally requested - // Handle will get changed if conditions are met in the below if block - revisionModifier.$set[`documentData.${property}`] = newValue; - - if ( - (handleMatchesId || hasHandle === false) && - (hasExistingTitle || hasNewTitle) && - hasNewHandle === false - ) { - // Set the handle to be the slug of the product.title - // when documentId (product._id) matches the handle, then handle is empty, and a title exists - revisionModifier.$set["documentData.handle"] = getSlug(newTitle || revisionTitle); - } else if (hasHandle === false && hasExistingTitle === false && hasNewHandle === false) { - // If the handle & title is empty, the handle becomes the product id - revisionModifier.$set["documentData.handle"] = documentId; - } else if (hasNewHandle === false && property === "handle") { - // If the handle is empty, the handle becomes the slugified product title, or document id if title does not exist. - // const newTitle = modifier.$set["title"]; - revisionModifier.$set["documentData.handle"] = hasExistingTitle - ? getSlug(newTitle || revisionTitle) - : documentId; - } - } else if (operation === "$unset" && property === "handle" && hasAncestors === false) { - // Special handling for product handle when it is going to be unset - // - // Summary: - // When a user updates the handle to a black string e.g. deletes all text in field in UI and saves, - // the handle will be adjusted so it will not be blank - const newValue = modifier.$unset[property]; - const revisionTitle = productRevision.documentData.title; - const hasExistingTitle = _.isEmpty(revisionTitle) === false; - - // If the new handle is going to be empty, the handle becomes the slugified product title, or document id if title does not exist. - if (_.isEmpty(newValue)) { - revisionModifier.$set["documentData.handle"] = hasExistingTitle - ? getSlug(revisionTitle) - : productRevision.documentId; - } - } else { - // Let everything else through - revisionModifier[operation][`documentData.${property}`] = modifier[operation][property]; - } - } - } - } - } - - Revisions.update(revisionSelector, revisionModifier); - const updatedRevision = Revisions.findOne({ documentId: product._id }); - Hooks.Events.run("afterRevisionsUpdate", userId, updatedRevision); - - Logger.debug(`Revision updated for product ${product._id}.`); - - if (modifier.$pull && modifier.$pull.hashtags) { - const tagId = modifier.$pull.hashtags; - - const productCount = Products.find({ - hashtags: tagId - }).count(); - - const relatedTagsCount = Tags.find({ - relatedTagIds: tagId - }).count(); - - if (productCount === 0 && relatedTagsCount === 0) { - // Mark tag as deleted - Tags.update( - { - _id: tagId - }, - { - $set: { - isDeleted: true - } - } - ); - } else { - Tags.update( - { - _id: tagId - }, - { - $set: { - isDeleted: false - } - } - ); - } - } - - // If we are using $set or $inc, and the fields are one of the ignoredFields, - // allow product to be updated without going through revision control - if ((modifier.$set || modifier.$inc) && !modifier.$pull && !modifier.$push) { - const newSet = {}; - const newInc = {}; - let hasIgnoredFields = false; - const ignoredFields = ["isLowQuantity", "isSoldOut", "inventoryQuantity"]; - - for (const field of ignoredFields) { - if (modifier.$set && ( - typeof modifier.$set[field] === "number" || - typeof modifier.$set[field] === "boolean" || - typeof modifier.$set[field] === "string" - )) { - newSet[field] = modifier.$set[field]; - hasIgnoredFields = true; - } - - if (modifier.$inc && ( - typeof modifier.$inc[field] === "number" || - typeof modifier.$inc[field] === "boolean" || - typeof modifier.$set[field] === "string" - )) { - newInc[field] = modifier.$inc[field]; - hasIgnoredFields = true; - } - } - if (_.isEmpty(newSet) === false) { - modifier.$set = newSet; - } - - if (_.isEmpty(newInc) === false) { - modifier.$inc = newInc; - } - - return hasIgnoredFields === true; - } - - // prevent the underlying document from being modified as it is in draft mode - return false; -} -/** - * @name markRevisionAsDeleted - * @method - * @summary Flag a product's revision as deleted - * @param {Object} product - The product whose revision will be flagged as deleted. - * @param {Object} options - Contains userId - * @returns {undefined} - * @private - */ -export function markRevisionAsDeleted(product, options) { - if (RevisionApi.isRevisionControlEnabled() === false) { - return true; - } - - const { userId } = options; - - let productRevision = Revisions.findOne({ - documentId: product._id - }); - - if (!productRevision) { - Logger.debug(`No revision found for product ${product._id}. Creating new revision`); - - Revisions.insert({ - documentId: product._id, - documentData: product - }); - productRevision = Revisions.findOne({ - documentId: product._id - }); - } - - // Set the revision as deleted "isDeleted: true" - Revisions.update({ - documentId: product._id - }, { - $set: { - "documentData.isDeleted": true, - "workflow.status": "revision/remove" - } - }); - Hooks.Events.run("afterRevisionsUpdate", userId, { - ...productRevision, - documentData: { ...productRevision.documentData, isDeleted: true }, - workflow: { ...productRevision.workflow, workflow: "revision/remove" } - }); - - Logger.debug(`Revision updated for product ${product._id}.`); - Logger.debug(`Product ${product._id} is now marked as deleted.`); - - // If the original product is deleted, and the user is trying to delete it again, - // then actually remove it completely. - // - // This acts like a trash. Where the product is sent to trash before it can actually - // be deleted permanently. - if (product.isDeleted === true) { - Logger.debug(`Allowing write to product ${product._id} for Collection.remove().`); - - return true; - } - - Logger.debug(`Preventing write to product ${product._id} for Collection.remove().`); - return false; -} diff --git a/imports/plugins/core/revisions/server/hooks.js b/imports/plugins/core/revisions/server/hooks.js deleted file mode 100644 index 9f598e37250..00000000000 --- a/imports/plugins/core/revisions/server/hooks.js +++ /dev/null @@ -1,253 +0,0 @@ -import _ from "lodash"; -import { diff } from "deep-diff"; -import { RevisionApi } from "../lib/api"; -import { insertRevision, updateRevision, markRevisionAsDeleted } from "./functions"; -import { Products, Revisions } from "/lib/collections"; -import { Hooks } from "/server/api"; -import { Media } from "/imports/plugins/core/files/server"; - -export const ProductRevision = { - getProductPriceRange(productId) { - const product = Products.findOne(productId); - if (!product) { - return { - range: "0", - min: 0, - max: 0 - }; - } - - const variants = this.getTopVariants(product._id); - if (variants.length > 0) { - const variantPrices = []; - variants.forEach((variant) => { - if (variant.isVisible === true) { - const range = this.getVariantPriceRange(variant._id); - if (typeof range === "string") { - const firstPrice = parseFloat(range.substr(0, range.indexOf(" "))); - const lastPrice = parseFloat(range.substr(range.lastIndexOf(" ") + 1)); - variantPrices.push(firstPrice, lastPrice); - } else { - variantPrices.push(range); - } - } else { - variantPrices.push(0, 0); - } - }); - const priceMin = _.min(variantPrices); - const priceMax = _.max(variantPrices); - let priceRange = `${priceMin.toFixed(2)} - ${priceMax.toFixed(2)}`; - // if we don't have a range - if (priceMin === priceMax) { - priceRange = priceMin.toFixed(2); - } - const priceObject = { - range: priceRange, - min: priceMin, - max: priceMax - }; - return priceObject; - } - - if (!product.price) { - return { - range: "0", - min: 0, - max: 0 - }; - } - - // if we have no variants subscribed to (client) - // we'll get the price object previously from the product - return product.price; - }, - - getVariantPriceRange(variantId) { - const children = this.getVariants(variantId); - const visibleChildren = children.filter((child) => child.isVisible && !child.isDeleted); - - switch (visibleChildren.length) { - case 0: { - const topVariant = this.getProduct(variantId); - // topVariant could be undefined when we removing last top variant - return topVariant && topVariant.price; - } - case 1: { - return visibleChildren[0].price; - } - default: { - let priceMin = Number.POSITIVE_INFINITY; - let priceMax = Number.NEGATIVE_INFINITY; - - visibleChildren.forEach((child) => { - if (child.price < priceMin) { - priceMin = child.price; - } - if (child.price > priceMax) { - priceMax = child.price; - } - }); - - if (priceMin === priceMax) { - // TODO check impact on i18n/formatPrice from moving return to string - return priceMin.toString(); - } - return `${priceMin} - ${priceMax}`; - } - } - }, - - findRevision({ documentId }) { - return Revisions.findOne({ - documentId, - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }); - }, - - getProduct(variantId) { - const product = Products.findOne(variantId); - const revision = this.findRevision({ - documentId: variantId - }); - - return (revision && revision.documentData) || product; - }, - - getTopVariants(id) { - const variants = []; - - Products.find({ - ancestors: [id], - type: "variant", - isDeleted: false - }).forEach((product) => { - const revision = this.findRevision({ - documentId: product._id - }); - - if (revision && revision.documentData.isVisible) { - variants.push(revision.documentData); - } else if (!revision && product.isVisible) { - variants.push(product); - } - - return variants; - }); - - return variants; - }, - - getVariants(id, type) { - const variants = []; - - Products.find({ - ancestors: { $in: [id] }, - type: type || "variant", - isDeleted: false - }).forEach((product) => { - const revision = this.findRevision({ - documentId: product._id - }); - - if (revision && revision.documentData.isVisible) { - variants.push(revision.documentData); - } else if (!revision && product.isVisible) { - variants.push(product); - } - }); - - return variants; - }, - - getVariantQuantity(variant) { - const options = this.getVariants(variant._id); - if (options && options.length) { - return options.reduce((sum, option) => - sum + option.inventoryQuantity || 0, 0); - } - return variant.inventoryQuantity || 0; - } -}; - -/** - * @summary Executes the provided function when beforeInsertCatalogProductInsertRevision - * hook is ran. The hook is ran before a product is inserted, and it will insert a - * corresponding revision for the provided product. - * @param {Function} Callback to execute - * @return {Object} product - the product in which the callback was called on. - * @private - */ -Hooks.Events.add("beforeInsertCatalogProductInsertRevision", (product) => { - insertRevision(product); - - return product; -}); - -/** - * @summary Executes the provided function when beforeInsertCatalogProductInsertRevision - * hook is ran. The hook is ran after a product is inserted, and it will insert a - * corresponding revision for the provided product. - * @param {Function} Callback to execute - * @return {Object} product - the product in which the callback was called on. - * @private - */ -Hooks.Events.add("afterInsertCatalogProductInsertRevision", (product) => { - insertRevision(product); - - return product; -}); - -/** - * @summary Executes the provided function when beforeUpdateCatalogProduct - * hook is ran. The hook is ran before a product is updated, and it will updated the - * corresponding revisions for the provided product. - * @param {Function} Callback to execute - * @return {Boolean} true|false - Used to determine whether the underlying product should be updated. - * @private - */ -Hooks.Events.add("beforeUpdateCatalogProduct", (product, options) => updateRevision(product, options)); - -/** - * @summary Executes the provided function when beforeRemoveCatalogProduct - * hook is ran. The hook is ran before a product or variant is archived, and it will updated the - * corresponding revisions for the provided product or variant. - * @param {Function} Callback to execute - * @return {Boolean} true|false - Used to determine whether the underlying product should be updated. - * @private - */ -Hooks.Events.add("beforeRemoveCatalogProduct", (product, options) => markRevisionAsDeleted(product, options)); - -Hooks.Events.add("afterRevisionsUpdate", (userId, revision) => { - if (RevisionApi.isRevisionControlEnabled() === false) { - return true; - } - let differences; - - - if (!revision.documentType || revision.documentType === "product") { - // Make diff - const product = Products.findOne({ - _id: revision.documentId - }); - differences = diff(product, revision.documentData); - } - - if (revision.documentType && revision.documentType === "image") { - const image = Promise.await(Media.findOne(revision.documentId, { raw: true })); - differences = image && diff(image.metadata, revision.documentData); - } - - Revisions.update({ - _id: revision._id - }, { - $set: { - diff: differences && differences.map((d) => Object.assign({}, d)) - } - }); -}, { - fetchPrevious: false -}); diff --git a/imports/plugins/core/revisions/server/i18n/ar.json b/imports/plugins/core/revisions/server/i18n/ar.json deleted file mode 100644 index fa66d8c3a7a..00000000000 --- a/imports/plugins/core/revisions/server/i18n/ar.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "ar", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "معاينة", - "revisionsLabel": "التنقيحات", - "revisionsTitle": "التنقيحات", - "revisionsDescription": "مراجعة مراقبة" - }, - "catalogSettings": { - "productRevisionsLabel": "مراجعات المنتج" - }, - "toolbar": { - "publishAll": "نشر جميع" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/bg.json b/imports/plugins/core/revisions/server/i18n/bg.json deleted file mode 100644 index 9e0fbcf8cdc..00000000000 --- a/imports/plugins/core/revisions/server/i18n/bg.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "bg", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "предварителен преглед", - "revisionsLabel": "ревизии", - "revisionsTitle": "ревизии", - "revisionsDescription": "контрол на контрол" - }, - "catalogSettings": { - "productRevisionsLabel": "ревизии на продукта" - }, - "toolbar": { - "publishAll": "публикува всички" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/cs.json b/imports/plugins/core/revisions/server/i18n/cs.json deleted file mode 100644 index 72230d99c70..00000000000 --- a/imports/plugins/core/revisions/server/i18n/cs.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "cs", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Náhled", - "revisionsLabel": "revize", - "revisionsTitle": "revize", - "revisionsDescription": "ovládání revize" - }, - "catalogSettings": { - "productRevisionsLabel": "Revize produktu" - }, - "toolbar": { - "publishAll": "publikovat vše" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/de.json b/imports/plugins/core/revisions/server/i18n/de.json deleted file mode 100644 index 777ea5115e5..00000000000 --- a/imports/plugins/core/revisions/server/i18n/de.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "de", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Vorschau", - "revisionsLabel": "Revisionen", - "revisionsTitle": "Revisionen", - "revisionsDescription": "Revisionskontrolle" - }, - "catalogSettings": { - "productRevisionsLabel": "Produkt Revisions" - }, - "toolbar": { - "publishAll": "veröffentlichen Alle" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/el.json b/imports/plugins/core/revisions/server/i18n/el.json deleted file mode 100644 index 016cffe5f80..00000000000 --- a/imports/plugins/core/revisions/server/i18n/el.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "el", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Πρεμιέρα", - "revisionsLabel": "αναθεωρήσεις", - "revisionsTitle": "αναθεωρήσεις", - "revisionsDescription": "έλεγχο αναθεώρηση" - }, - "catalogSettings": { - "productRevisionsLabel": "αναθεωρήσεις του προϊόντος" - }, - "toolbar": { - "publishAll": "Δημοσιεύστε Όλα" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/en.json b/imports/plugins/core/revisions/server/i18n/en.json deleted file mode 100644 index 4d97abd4707..00000000000 --- a/imports/plugins/core/revisions/server/i18n/en.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "en", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Preview", - "revisionsLabel": "Revisions", - "revisionsTitle": "Revisions", - "revisionsDescription": "Revision control" - }, - "catalogSettings": { - "productRevisionsLabel": "Product Revisions" - }, - "toolbar": { - "publishAll": "Publish All" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/es.json b/imports/plugins/core/revisions/server/i18n/es.json deleted file mode 100644 index 87b73d9a09e..00000000000 --- a/imports/plugins/core/revisions/server/i18n/es.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "es", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Preestreno", - "revisionsLabel": "Las revisiones", - "revisionsTitle": "Las revisiones", - "revisionsDescription": "Control de revisión" - }, - "catalogSettings": { - "productRevisionsLabel": "Las revisiones del producto" - }, - "toolbar": { - "publishAll": "publicar todo" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/fr.json b/imports/plugins/core/revisions/server/i18n/fr.json deleted file mode 100644 index 61f4afef428..00000000000 --- a/imports/plugins/core/revisions/server/i18n/fr.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "fr", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Aperçu", - "revisionsLabel": "Versions", - "revisionsTitle": "Versions", - "revisionsDescription": "Gestion de versions" - }, - "catalogSettings": { - "productRevisionsLabel": "Gestion de versions des produits" - }, - "toolbar": { - "publishAll": "Tout publier" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/he.json b/imports/plugins/core/revisions/server/i18n/he.json deleted file mode 100644 index 7a2cc9d0e73..00000000000 --- a/imports/plugins/core/revisions/server/i18n/he.json +++ /dev/null @@ -1,5 +0,0 @@ -[{ - "i18n": "he", - "ns": "reaction-revisions", - "translation": { } -}] diff --git a/imports/plugins/core/revisions/server/i18n/hr.json b/imports/plugins/core/revisions/server/i18n/hr.json deleted file mode 100644 index ce55ba26011..00000000000 --- a/imports/plugins/core/revisions/server/i18n/hr.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "hr", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "pregled", - "revisionsLabel": "Izmjene", - "revisionsTitle": "Izmjene", - "revisionsDescription": "kontrola Revizija" - }, - "catalogSettings": { - "productRevisionsLabel": "Izmjene proizvoda" - }, - "toolbar": { - "publishAll": "objaviti sve" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/hu.json b/imports/plugins/core/revisions/server/i18n/hu.json deleted file mode 100644 index 1357f81f0e3..00000000000 --- a/imports/plugins/core/revisions/server/i18n/hu.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "hu", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Előnézet", - "revisionsLabel": "Változatok", - "revisionsTitle": "Változatok", - "revisionsDescription": "Revision szabályozás" - }, - "catalogSettings": { - "productRevisionsLabel": "termék Változatok" - }, - "toolbar": { - "publishAll": "közzétenni minden" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/index.js b/imports/plugins/core/revisions/server/i18n/index.js deleted file mode 100644 index 3f6a8d87fb9..00000000000 --- a/imports/plugins/core/revisions/server/i18n/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import { loadTranslations } from "/server/startup/i18n"; - -// import ar from "./ar.json"; -// import bg from "./bg.json"; -// import de from "./de.json"; -// import el from "./el.json"; -import en from "./en.json"; -// import es from "./es.json"; -// import fr from "./fr.json"; -// import he from "./he.json"; -// import hr from "./hr.json"; -// import it from "./it.json"; -// import my from "./my.json"; -// import nb from "./nb.json"; -// import nl from "./nl.json"; -// import pl from "./pl.json"; -// import pt from "./pt.json"; -// import ro from "./ro.json"; -// import ru from "./ru.json"; -// import sl from "./sl.json"; -// import sv from "./sv.json"; -// import tr from "./tr.json"; -// import vi from "./vi.json"; -// import zh from "./zh.json"; - -// -// we want all the files in individual -// imports for easier handling by -// automated translation software -// -loadTranslations([en]); -// loadTranslations([ar, bg, de, el, en, es, fr, he, hr, it, my, nb, nl, pl, pt, ro, ru, sl, sv, tr, vi, zh]); diff --git a/imports/plugins/core/revisions/server/i18n/it.json b/imports/plugins/core/revisions/server/i18n/it.json deleted file mode 100644 index f3e540553ba..00000000000 --- a/imports/plugins/core/revisions/server/i18n/it.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "it", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Anteprima", - "revisionsLabel": "revisioni", - "revisionsTitle": "revisioni", - "revisionsDescription": "controllo di revisione" - }, - "catalogSettings": { - "productRevisionsLabel": "Le revisioni del prodotto" - }, - "toolbar": { - "publishAll": "pubblicare Tutto" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/my.json b/imports/plugins/core/revisions/server/i18n/my.json deleted file mode 100644 index b67ca31ef7c..00000000000 --- a/imports/plugins/core/revisions/server/i18n/my.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "my", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "ကို preview", - "revisionsLabel": "တည်းဖြတ်မူများကို", - "revisionsTitle": "တည်းဖြတ်မူများကို", - "revisionsDescription": "တည်းဖြတ်မူထိန်းချုပ်မှု" - }, - "catalogSettings": { - "productRevisionsLabel": "ကုန်ပစ္စည်းပြင်ဆင်ချက်များကို" - }, - "toolbar": { - "publishAll": "အားလုံး Publish" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/nb.json b/imports/plugins/core/revisions/server/i18n/nb.json deleted file mode 100644 index 80dd19ca6f7..00000000000 --- a/imports/plugins/core/revisions/server/i18n/nb.json +++ /dev/null @@ -1,5 +0,0 @@ -[{ - "i18n": "nb", - "ns": "reaction-revisions", - "translation": { } -}] diff --git a/imports/plugins/core/revisions/server/i18n/nl.json b/imports/plugins/core/revisions/server/i18n/nl.json deleted file mode 100644 index be3191b745f..00000000000 --- a/imports/plugins/core/revisions/server/i18n/nl.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "nl", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Voorbeeld", - "revisionsLabel": "herzieningen", - "revisionsTitle": "herzieningen", - "revisionsDescription": "controle Revision" - }, - "catalogSettings": { - "productRevisionsLabel": "product revisies" - }, - "toolbar": { - "publishAll": "Alle publiceren" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/pl.json b/imports/plugins/core/revisions/server/i18n/pl.json deleted file mode 100644 index b0fadff8835..00000000000 --- a/imports/plugins/core/revisions/server/i18n/pl.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "pl", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Zapowiedź", - "revisionsLabel": "rewizje", - "revisionsTitle": "rewizje", - "revisionsDescription": "kontroli wersji" - }, - "catalogSettings": { - "productRevisionsLabel": "Wersje produktu" - }, - "toolbar": { - "publishAll": "publikuje wszystkie" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/pt.json b/imports/plugins/core/revisions/server/i18n/pt.json deleted file mode 100644 index 50d7723561b..00000000000 --- a/imports/plugins/core/revisions/server/i18n/pt.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "pt", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "visualização", - "revisionsLabel": "revisões", - "revisionsTitle": "revisões", - "revisionsDescription": "controle de revisão" - }, - "catalogSettings": { - "productRevisionsLabel": "As revisões de produtos" - }, - "toolbar": { - "publishAll": "publicar todos" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/ro.json b/imports/plugins/core/revisions/server/i18n/ro.json deleted file mode 100644 index 3f3be9ba368..00000000000 --- a/imports/plugins/core/revisions/server/i18n/ro.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "ro", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "previzualizare", - "revisionsLabel": "reviziile", - "revisionsTitle": "reviziile", - "revisionsDescription": "controlul revizuirii" - }, - "catalogSettings": { - "productRevisionsLabel": "Revizuiri produsului" - }, - "toolbar": { - "publishAll": "publicaţi toate" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/ru.json b/imports/plugins/core/revisions/server/i18n/ru.json deleted file mode 100644 index 6242c1d6dd0..00000000000 --- a/imports/plugins/core/revisions/server/i18n/ru.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "ru", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Предварительный просмотр", - "revisionsLabel": "Ревизии", - "revisionsTitle": "Ревизии", - "revisionsDescription": "контроль версий" - }, - "catalogSettings": { - "productRevisionsLabel": "Ревизии продукта" - }, - "toolbar": { - "publishAll": "Опубликовать все" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/sl.json b/imports/plugins/core/revisions/server/i18n/sl.json deleted file mode 100644 index c2ec0e0e7f2..00000000000 --- a/imports/plugins/core/revisions/server/i18n/sl.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "sl", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "predogled", - "revisionsLabel": "Revizije", - "revisionsTitle": "Revizije", - "revisionsDescription": "nadzor revizija" - }, - "catalogSettings": { - "productRevisionsLabel": "Revizije izdelka" - }, - "toolbar": { - "publishAll": "objavi Vse" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/sv.json b/imports/plugins/core/revisions/server/i18n/sv.json deleted file mode 100644 index 7bb54c470c7..00000000000 --- a/imports/plugins/core/revisions/server/i18n/sv.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "sv", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Förhandsvisning", - "revisionsLabel": "revideringar", - "revisionsTitle": "revideringar", - "revisionsDescription": "revisionskontroll" - }, - "catalogSettings": { - "productRevisionsLabel": "produkt~~POS=TRUNC Revideringar" - }, - "toolbar": { - "publishAll": "publicera All" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/tr.json b/imports/plugins/core/revisions/server/i18n/tr.json deleted file mode 100644 index e08af4a707e..00000000000 --- a/imports/plugins/core/revisions/server/i18n/tr.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "tr", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Önizleme", - "revisionsLabel": "Düzeltmeler", - "revisionsTitle": "Düzeltmeler", - "revisionsDescription": "Revizyon kontrolü" - }, - "catalogSettings": { - "productRevisionsLabel": "Ürün Düzeltmeler" - }, - "toolbar": { - "publishAll": "Tümünü Yayınla" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/vi.json b/imports/plugins/core/revisions/server/i18n/vi.json deleted file mode 100644 index 62efd5cb679..00000000000 --- a/imports/plugins/core/revisions/server/i18n/vi.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "vi", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "Xem trước", - "revisionsLabel": "Revisions", - "revisionsTitle": "Revisions", - "revisionsDescription": "kiểm soát sửa đổi" - }, - "catalogSettings": { - "productRevisionsLabel": "Sửa đổi sản phẩm" - }, - "toolbar": { - "publishAll": "Xuất bản Tất cả" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/i18n/zh.json b/imports/plugins/core/revisions/server/i18n/zh.json deleted file mode 100644 index 9cc0052a7a6..00000000000 --- a/imports/plugins/core/revisions/server/i18n/zh.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "i18n": "zh", - "ns": "reaction-revisions", - "translation": { - "reaction-revisions": { - "admin": { - "dashboard": { - "preview": "预习", - "revisionsLabel": "修订", - "revisionsTitle": "修订", - "revisionsDescription": "版本控制" - }, - "catalogSettings": { - "productRevisionsLabel": "产品修订" - }, - "toolbar": { - "publishAll": "所有发布" - } - } - } - } -}] diff --git a/imports/plugins/core/revisions/server/index.js b/imports/plugins/core/revisions/server/index.js deleted file mode 100644 index 62d4d463737..00000000000 --- a/imports/plugins/core/revisions/server/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import "./hooks"; -import "./methods"; -import "./i18n"; -import "./publications"; diff --git a/imports/plugins/core/revisions/server/methods.js b/imports/plugins/core/revisions/server/methods.js deleted file mode 100644 index 10d3f53cac6..00000000000 --- a/imports/plugins/core/revisions/server/methods.js +++ /dev/null @@ -1,216 +0,0 @@ -import { Meteor } from "meteor/meteor"; -import { check, Match } from "meteor/check"; -import { Products, MediaRecords, Revisions, Packages } from "/lib/collections"; -import { Hooks, Logger } from "/server/api"; - -function handleImageRevision(revision) { - let result = 0; - if (revision.changeType === "insert") { - result = MediaRecords.update({ - _id: revision.documentId - }, { - $set: { - metadata: { ...revision.documentData, workflow: "published" } - } - }); - } else if (revision.changeType === "remove") { - result = MediaRecords.update({ - _id: revision.documentId - }, { - $set: { - "metadata.workflow": "archived" - } - }); - } else if (revision.changeType === "update") { - result = MediaRecords.update({ - _id: revision.documentId - }, { - $set: { - metadata: { ...revision.documentData, workflow: "published" } - } - }); - Logger.debug(`setting metadata for ${revision.documentId} to ${JSON.stringify(revision.documentData, null, 4)}`); - } - // mark revision published whether we are publishing the image or not - Revisions.update({ - _id: revision._id - }, { - $set: { - "workflow.status": "revision/published" - } - }); - - return result; -} - -export function updateSettings(settings) { - check(settings, Object); - - Packages.update({ - name: "reaction-revisions" - }, { - $set: { - settings - } - }); -} - -/** - * @name publishCatalogProduct - * @method - * @summary Updates revision and publishes a product. - * - * @param {String} userId - currently logged in user - * @param {Object} selector - selector for product to update - * @param {Object} modifier - Object describing what parts of the document to update. - * @param {Object} validation - simple schema validation - * @return {String} _id of updated document - * @private - */ -function publishCatalogProduct(userId, selector, modifier, validation) { - const product = Products.findOne(selector); - const options = { - userId, - modifier, - validation, - publish: true - }; - - Hooks.Events.run("beforeUpdateCatalogProduct", product, options); - - const result = Products.update(selector, modifier, validation); - - Hooks.Events.run("afterUpdateCatalogProduct", product, options); - - // Records are not remove from the Products collection, they are only flagged as deleted. - // Run Hook to remove search record, if a product is being published as deleted - // Which is the equivalent to removing a product. - if (modifier.$set.isDeleted === true) { - Hooks.Events.run("afterRemoveProduct", product); - } - - return result; -} - -export function discardDrafts(documentIds) { - check(documentIds, Match.OneOf(String, Array)); - - let documentIdArray; - - if (Array.isArray(documentIds)) { - documentIdArray = documentIds; - } else { - documentIdArray = [documentIds]; - } - - const selector = { - "workflow.status": { - $nin: [ - "revision/published" - ] - }, - "$or": [ - { - documentId: { - $in: documentIdArray - } - }, - { - "documentData.ancestors": { - $in: documentIdArray - } - }, - { - parentDocument: { - $in: documentIds - } - } - ] - }; - - const result = Revisions.remove(selector); - - return result > 0; -} - -Meteor.methods({ - "revisions/settings/update": updateSettings, - "revisions/discard": discardDrafts, - "revisions/publish"(documentIds) { - check(documentIds, Match.OneOf(String, Array)); - - // Also publish variants if they have a draft - let revisions; - - if (Array.isArray(documentIds)) { - revisions = Revisions.find({ - "workflow.status": { - $nin: [ - "revision/published" - ] - }, - "$or": [ - { - documentId: { - $in: documentIds - } - }, - { - "documentData.ancestors": { - $in: documentIds - } - }, - { - parentDocument: { - $in: documentIds - } - } - ] - }).fetch(); - } else { - revisions = Revisions.find({ - "workflow.status": { - $nin: [ - "revision/published" - ] - }, - "$or": [ - { documentId: documentIds }, - { - "documentData.ancestors": { - $in: [documentIds] - } - } - ] - }).fetch(); - } - - let updatedDocuments = 0; - if (revisions) { - for (const revision of revisions) { - if (!revision.documentType || revision.documentType === "product") { - const res = publishCatalogProduct( - this.userId, - { - _id: revision.documentId - }, - { - $set: revision.documentData - } - ); - updatedDocuments += res; - } else if (revision.documentType === "image") { - updatedDocuments += handleImageRevision(revision); - } - } - } - - if (updatedDocuments > 0) { - return { - status: "success" - }; - } - - return false; - } -}); diff --git a/imports/plugins/core/revisions/server/publications.js b/imports/plugins/core/revisions/server/publications.js deleted file mode 100644 index 920769bf5a3..00000000000 --- a/imports/plugins/core/revisions/server/publications.js +++ /dev/null @@ -1,47 +0,0 @@ -import { Meteor } from "meteor/meteor"; -import { check } from "meteor/check"; -import { Roles } from "meteor/alanning:roles"; -import { Revisions } from "/lib/collections"; -import { Reaction } from "/server/api"; - -/** - * products publication - * @param {Number} productScrollLimit - optional, defaults to 24 - * @param {Array} shops - array of shopId to retrieve product from. - * @return {Object} return product cursor - */ -Meteor.publish("ProductRevisions", function (productIds) { - check(productIds, Array); - - const shop = Reaction.getShopId(); - // Authorized content curators fo the shop get special publication of the product - // all all relevant revisions all is one package - if (Roles.userIsInRole(this.userId, ["owner", "admin", "createProduct"], shop._id)) { - return Revisions.find({ - "$or": [ - { - documentId: { - $in: productIds - } - }, - { - "documentData.ancestors": { - $in: productIds - } - }, - { - parentDocument: { - $in: productIds - } - } - ], - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }); - } - - return this.ready(); -}); From 1e13685f79fa17a5e04a84aa48e9b8b2bf18f0af Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:40:06 -0700 Subject: [PATCH 032/201] chore: add migration to remove revision registry entry --- .../server/migrations/25_remove_revision_control.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 imports/plugins/core/versions/server/migrations/25_remove_revision_control.js diff --git a/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js b/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js new file mode 100644 index 00000000000..26a8fcc3fbc --- /dev/null +++ b/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js @@ -0,0 +1,12 @@ +import { Migrations } from "meteor/percolate:migrations"; +import { Packages } from "/lib/collections"; + +// Migration file created for removing revision control package registry entry from all shops +Migrations.add({ + version: 25, + up() { + Packages.remove({ + name: "reaction-revisions" + }); + } +}); From 39cfb5dfc876152d0fa78eda1bad80e0835b77ed Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Tue, 15 May 2018 15:43:19 -0700 Subject: [PATCH 033/201] breaking: remove Revisions schema and collection --- lib/collections/collections.js | 9 ---- lib/collections/schemas/index.js | 1 - lib/collections/schemas/revisions.js | 80 ---------------------------- 3 files changed, 90 deletions(-) delete mode 100644 lib/collections/schemas/revisions.js diff --git a/lib/collections/collections.js b/lib/collections/collections.js index 3a7f2ae83e7..af4c8a0debe 100644 --- a/lib/collections/collections.js +++ b/lib/collections/collections.js @@ -141,15 +141,6 @@ export const Products = new Mongo.Collection("Products"); Products.attachSchema(Schemas.Product, { selector: { type: "simple" } }); Products.attachSchema(Schemas.ProductVariant, { selector: { type: "variant" } }); -/** - * @name Revisions - * @memberof Collections - * @type {MongoCollection} - */ -export const Revisions = new Mongo.Collection("Revisions"); - -Revisions.attachSchema(Schemas.Revisions); - /** * @name Shipping * @memberof Collections diff --git a/lib/collections/schemas/index.js b/lib/collections/schemas/index.js index 160941ba546..3d7b2328294 100644 --- a/lib/collections/schemas/index.js +++ b/lib/collections/schemas/index.js @@ -27,7 +27,6 @@ export * from "./orders"; export * from "./payments"; export * from "./products"; export * from "./registry"; -export * from "./revisions"; export * from "./shipping"; export * from "./shops"; export * from "./groups"; diff --git a/lib/collections/schemas/revisions.js b/lib/collections/schemas/revisions.js deleted file mode 100644 index db2498564fa..00000000000 --- a/lib/collections/schemas/revisions.js +++ /dev/null @@ -1,80 +0,0 @@ -import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; -import { registerSchema } from "@reactioncommerce/schemas"; -import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; -import { Workflow } from "./workflow"; - -/** - * @name Revisions - * @memberof Schemas - * @type {SimpleSchema} - * @property {String} _id Revision Id - * @property {Workflow} workflow required - * @property {String} documentId Reference Document Id - * @property {String} documentType Document Type, default value: `product`, allowed values: `product`, `image`, `tag` - * @property {String} parentDocument optional - * @property {"object"} documentData blackbox object - * @property {String} changeType optional, allowed values: `insert`, `update`, `remove` - * @property {Object[]} diff optional, blackbox - * @property {Date} createdAt required - * @property {Date} updatedAt optional - * @property {Date} publishAt optional - */ -export const Revisions = new SimpleSchema({ - "_id": { - type: String, - label: "Revision Id" - }, - "workflow": { - type: Workflow, - optional: false, - defaultValue: {} - }, - "documentId": { - type: String, - label: "Reference Document Id" - }, - "documentType": { - type: String, - label: "Document Type", - defaultValue: "product", - allowedValues: ["product", "image", "tag"] - }, - "parentDocument": { - type: String, - optional: true - }, - "documentData": { - type: "object", - blackbox: true - }, - "changeType": { - type: String, - optional: true, - allowedValues: ["insert", "update", "remove"] - }, - "diff": { - type: Array, - optional: true - }, - "diff.$": { - type: Object, - blackbox: true - }, - "createdAt": { - type: Date, - autoValue: createdAtAutoValue - }, - "updatedAt": { - type: Date, - autoValue: updatedAtAutoValue, - optional: true - }, - "publishAt": { - type: Date, - optional: true - } -}, { check, tracker: Tracker }); - -registerSchema("Revisions", Revisions); From e95780c1b1ebca9eb8e72bba4abd702f38ac3d84 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 10:08:18 -0700 Subject: [PATCH 034/201] refactor: check Products collection for isDeleted ancestors --- lib/api/products.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/api/products.js b/lib/api/products.js index c920398e958..4eafeef5ca8 100644 --- a/lib/api/products.js +++ b/lib/api/products.js @@ -6,7 +6,7 @@ import { ReactiveDict } from "meteor/reactive-dict"; import { ReactiveVar } from "meteor/reactive-var"; import { Router } from "/imports/plugins/core/router/lib"; import { getCurrentTag, getShopName } from "/lib/api"; -import { Products, Revisions } from "/lib/collections"; +import { Products } from "/lib/collections"; import Catalog from "./catalog"; import { MetaData } from "/lib/api/router/metadata"; @@ -605,14 +605,9 @@ ReactionProduct.isAncestorDeleted = function (product, includeSelf) { // Verify there are no deleted ancestors, // Variants cannot be restored if their parent product / variant is deleted - const archivedCount = Revisions.find({ - "documentId": { $in: productIds }, - "documentData.isDeleted": true, - "workflow.status": { - $nin: [ - "revision/published" - ] - } + const archivedCount = Products.find({ + _id: { $in: productIds }, + isDeleted: true }).count(); if (archivedCount > 0) { From 0b4114ac5b6ce4b82a876c7d40578d440ced2d59 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 10:08:40 -0700 Subject: [PATCH 035/201] fix: import catalog directly --- imports/plugins/core/catalog/server/methods/catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 11d9687a8ce..ce768bb6cc0 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -3,7 +3,7 @@ import { check, Match } from "meteor/check"; import { Products, Catalog as CatalogCollection } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; import { Media } from "/imports/plugins/core/files/server"; -import Catalog from "/lib/api"; +import Catalog from "/lib/api/catalog"; /** * @method isSoldOut From ac095980912bb0a144a11fa0b0ce678c189a0b99 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 12:25:34 -0700 Subject: [PATCH 036/201] fix: set inventoryPolicy in state Set `inventoryPolicy` in state to fix an issue where the `Backorder` switch,would not change state to reflect the change in policy when clicked. --- .../plugins/included/product-variant/components/variantForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/product-variant/components/variantForm.js b/imports/plugins/included/product-variant/components/variantForm.js index 4e46afa9eb1..b1f1bf92471 100644 --- a/imports/plugins/included/product-variant/components/variantForm.js +++ b/imports/plugins/included/product-variant/components/variantForm.js @@ -173,13 +173,13 @@ class VariantForm extends Component { const inverseValue = !value; this.setState(({ variant }) => ({ + inventoryPolicy: inverseValue, variant: { ...variant, [field]: inverseValue } })); - this.handleFieldBlur(event, inverseValue, field); } From 0f1c7e00e97bfee6d503437e47433aa0d3de7006 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 15:18:13 -0700 Subject: [PATCH 037/201] docs: update summaries --- imports/plugins/core/files/server/methods.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/files/server/methods.js b/imports/plugins/core/files/server/methods.js index af58d436f65..0dbd6b62cb5 100644 --- a/imports/plugins/core/files/server/methods.js +++ b/imports/plugins/core/files/server/methods.js @@ -11,7 +11,7 @@ import { MediaRecords } from "/lib/collections"; /** * @method updateMediaMetadata * @memberof Media/Methods - * @summary updates media record control. + * @summary Updates a media record. * @param {String} fileRecordId - _id of updated file record. * @param {Object} metadata - metadata from updated media file. * @return {Boolean} @@ -36,7 +36,7 @@ async function updateMediaMetadata(fileRecordId, metadata) { * @name media/insert * @method * @memberof Media/Methods - * @summary insert a new media record. + * @summary Insert a new media record. * @param {Object} fileRecord - document from file collection upload. * @return {String} - _id of the new inserted media record. */ @@ -57,7 +57,7 @@ export async function insertMedia(fileRecord) { * @name media/remove * @method * @memberof Media/Methods - * @summary unpublished media file by updating it's workflow + * @summary Unpublish a media record by updating it's workflow * @param {String} fileRecordId - _id of file record to be deleted. * @return {Boolean} */ From c5dde219cfa96ca1f28352325a4973d73e664c04 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 15:19:09 -0700 Subject: [PATCH 038/201] docs: update comment --- .../versions/server/migrations/25_remove_revision_control.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js b/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js index 26a8fcc3fbc..6f606421d2d 100644 --- a/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js +++ b/imports/plugins/core/versions/server/migrations/25_remove_revision_control.js @@ -1,7 +1,7 @@ import { Migrations } from "meteor/percolate:migrations"; import { Packages } from "/lib/collections"; -// Migration file created for removing revision control package registry entry from all shops +// Migration file created for removing the revision control package registry entry from all shops Migrations.add({ version: 25, up() { From 0f5fc54dcb9967e1c68e3d80a5a9cd5f5fc085a7 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 16 May 2018 15:19:32 -0700 Subject: [PATCH 039/201] docs: remove comma --- lib/api/products.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/api/products.js b/lib/api/products.js index 4eafeef5ca8..c3e40192a21 100644 --- a/lib/api/products.js +++ b/lib/api/products.js @@ -603,7 +603,7 @@ ReactionProduct.isAncestorDeleted = function (product, includeSelf) { productIds.push(product._id); } - // Verify there are no deleted ancestors, + // Verify there are no deleted ancestors // Variants cannot be restored if their parent product / variant is deleted const archivedCount = Products.find({ _id: { $in: productIds }, From cbff4ee7b8c1b0f3b068fbd6a9991ac2a9a5fb46 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 11:19:46 -0700 Subject: [PATCH 040/201] fix: conflict --- lib/api/catalog.js | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/lib/api/catalog.js b/lib/api/catalog.js index 46e65f2becf..30e2d0b126c 100644 --- a/lib/api/catalog.js +++ b/lib/api/catalog.js @@ -161,26 +161,15 @@ export default { }, /** -<<<<<<< HEAD - * @method getProduct - * @method - * @memberof ReactionProduct - * @summary Get product object. Could be useful for products and for top level variants - * @param {String} [id] - product _id - * @return {Object} Product data + * @method getProduct + * @method + * @memberof ReactionProduct + * @summary Get product object. Could be useful for products and for top level variants + * @param {String} [id] - product _id + * @return {Object} Product data */ getProduct(id) { return Products.findOne(id); -======= - * @method getPublishedOrRevision - * @memberof Catalog - * @description return top product revision if available - * @param {Object} product product or variant document - * @return {Object} product document - */ - getPublishedOrRevision(product) { - return applyProductRevision(product); ->>>>>>> release-1.12.0 }, /** From e5a5c957e336cc0bc803b707870797f41bca83d7 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 13:23:43 -0700 Subject: [PATCH 041/201] refactor: import helpers from catalog package --- imports/plugins/included/inventory/server/methods/inventory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/inventory/server/methods/inventory.js b/imports/plugins/included/inventory/server/methods/inventory.js index 8c41e7209b4..bc049e059ac 100644 --- a/imports/plugins/included/inventory/server/methods/inventory.js +++ b/imports/plugins/included/inventory/server/methods/inventory.js @@ -2,7 +2,7 @@ import { Meteor } from "meteor/meteor"; import { Inventory, Products } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; import rawCollections from "/imports/collections/rawCollections"; -import getVariants from "/imports/plugins/core/revisions/server/no-meteor/utils/getVariants"; +import getVariants from "/imports/plugins/core/catalog/server/no-meteor/utils/getVariants"; /** * @namespace Inventory/Methods From 40d38ea6a979b44ae6d59b62014861b78aa80f3f Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 13:23:51 -0700 Subject: [PATCH 042/201] refactor: import helpers from catalog package --- imports/plugins/core/catalog/server/methods/catalog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 75e9e9fe9dc..0ac8f7e233f 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -8,8 +8,8 @@ import { Hooks, Logger, Reaction } from "/server/api"; import { MediaRecords, Products, Revisions, Tags } from "/lib/collections"; import { Media } from "/imports/plugins/core/files/server"; import rawCollections from "/imports/collections/rawCollections"; -import getProductPriceRange from "/imports/plugins/core/revisions/server/no-meteor/utils/getProductPriceRange"; -import getVariants from "/imports/plugins/core/revisions/server/no-meteor/utils/getVariants"; +import getProductPriceRange from "../no-meteor/utils/getProductPriceRange"; +import getVariants from "../no-meteor/utils/getVariants"; import isSoldOut from "../no-meteor/utils/isSoldOut"; import isLowQuantity from "../no-meteor/utils/isLowQuantity"; import isBackorder from "../no-meteor/utils/isBackorder"; From 4e31b5875e8c8e52d9120a99f6b9bae4b42500d4 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:15:18 -0700 Subject: [PATCH 043/201] test: fix broken assertions --- .../plugins/core/catalog/server/methods/catalog.app-test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.app-test.js b/imports/plugins/core/catalog/server/methods/catalog.app-test.js index 5d984aa8e53..aeac0f0057b 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.app-test.js +++ b/imports/plugins/core/catalog/server/methods/catalog.app-test.js @@ -592,9 +592,9 @@ describe("core product methods", function () { const modifiedVariant1 = Products.findOne(variant1._id); const modifiedVariant2 = Products.findOne(variant2._id); const modifiedVariant3 = Products.findOne(variant3._id); - expect(modifiedVariant1.index).to.be(2); - expect(modifiedVariant2.index).to.be(0); - expect(modifiedVariant3.index).to.be(1); + expect(modifiedVariant1.index).to.be.equal(2); + expect(modifiedVariant2.index).to.be.equal(0); + expect(modifiedVariant3.index).to.be.equal(1); }); }); From 869d19f5acd01b2e77281ef814faa702a7f09d17 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:21:54 -0700 Subject: [PATCH 044/201] refactor: remove revision control --- .../core/catalog/server/methods/catalog.js | 75 ++++++++----------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 0ac8f7e233f..7c1b9eebc03 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -5,7 +5,7 @@ import { EJSON } from "meteor/ejson"; import { Meteor } from "meteor/meteor"; import { ReactionProduct } from "/lib/api"; import { Hooks, Logger, Reaction } from "/server/api"; -import { MediaRecords, Products, Revisions, Tags } from "/lib/collections"; +import { MediaRecords, Products, Tags } from "/lib/collections"; import { Media } from "/imports/plugins/core/files/server"; import rawCollections from "/imports/collections/rawCollections"; import getProductPriceRange from "../no-meteor/utils/getProductPriceRange"; @@ -189,7 +189,7 @@ function copyMedia(newId, variantOldId, variantNewId) { }) .then((fileRecords) => { fileRecords.forEach((fileRecord) => { - // Copy File and insert directly, bypasing revision control + // Copy File and insert fileRecord .fullClone({ productId: newId, @@ -259,7 +259,6 @@ function denormalize(id, field) { } } - // TODO: Determine if product revision needs to be updated as well. Products.update( id, { @@ -338,9 +337,7 @@ function createProduct(props = null) { /** * @function * @name updateCatalogProduct - * @summary Updates a product's revision and conditionally updates - * the underlying product. - * + * @summary Updates a product document. * @param {String} userId - currently logged in user * @param {Object} selector - selector for product to update * @param {Object} modifier - Object describing what parts of the document to update. @@ -350,23 +347,17 @@ function createProduct(props = null) { function updateCatalogProduct(userId, selector, modifier, validation) { const product = Products.findOne(selector); - const shouldUpdateProduct = Hooks.Events.run("beforeUpdateCatalogProduct", product, { + Hooks.Events.run("beforeUpdateCatalogProduct", product, { userId, modifier, validation }); - if (shouldUpdateProduct) { - const result = Products.update(selector, modifier, validation); - - Hooks.Events.run("afterUpdateCatalogProduct", product, { modifier }); - - return result; - } + const result = Products.update(selector, modifier, validation); - Logger.debug(`beforeUpdateCatalogProduct hook returned falsy, not updating catalog product`); + Hooks.Events.run("afterUpdateCatalogProduct", product, { modifier }); - return false; + return result; } Meteor.methods({ @@ -396,8 +387,7 @@ Meteor.methods({ } // Verify that this variant and any ancestors are not deleted. - // Child variants cannot be added if a parent product or product revision - // is marked as `{ isDeleted: true }` + // Child variants cannot be added if a parent product is marked as `{ isDeleted: true }` if (ReactionProduct.isAncestorDeleted(variant, true)) { throw new Meteor.Error("server-error", "Unable to create product variant"); } @@ -472,7 +462,6 @@ Meteor.methods({ let newId; try { - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", clone); newId = Products.insert(clone, { validate: false }); const newProduct = Products.findOne(newId); Hooks.Events.run("afterInsertCatalogProduct", newProduct); @@ -515,8 +504,7 @@ Meteor.methods({ const { ancestors } = product; // Verify that the parent variant and any ancestors are not deleted. - // Child variants cannot be added if a parent product or product revision - // is marked as `{ isDeleted: true }` + // Child variants cannot be added if a parent product is marked as `{ isDeleted: true }` if (ReactionProduct.isAncestorDeleted(product, true)) { throw new Meteor.Error("server-error", "Unable to create product variant"); } @@ -543,11 +531,9 @@ Meteor.methods({ } Hooks.Events.run("beforeInsertCatalogProduct", assembledVariant); - const _id = Products.insert(assembledVariant); + Products.insert(assembledVariant); Hooks.Events.run("afterInsertCatalogProduct", assembledVariant); - Hooks.Events.run("afterInsertCatalogProductInsertRevision", Products.findOne({ _id })); - Logger.debug(`products/createVariant: created variant: ${newVariantId} for ${parentId}`); return newVariantId; @@ -649,9 +635,16 @@ Meteor.methods({ // out if nothing to delete if (!Array.isArray(toDelete) || toDelete.length === 0) return false; - // Flag the variant and all its children as deleted in Revisions collection. + // Flag the variant and all its children as deleted. toDelete.forEach((product) => { Hooks.Events.run("beforeRemoveCatalogProduct", product, { userId: this.userId }); + Products.update({ + _id: product._id + }, { + $set: { + isDeleted: true + } + }); Hooks.Events.run("afterRemoveCatalogProduct", this.userId, product); }); @@ -760,7 +753,6 @@ Meteor.methods({ newProduct.title = createTitle(newProduct.title, newProduct._id); newProduct.handle = createHandle(Reaction.getSlug(newProduct.title), newProduct._id); } - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", newProduct); result = Products.insert(newProduct, { validate: false }); Hooks.Events.run("afterInsertCatalogProduct", newProduct); results.push(result); @@ -789,7 +781,6 @@ Meteor.methods({ delete newVariant.createdAt; delete newVariant.publishedAt; // TODO can variant have this param? - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", newVariant); result = Products.insert(newVariant, { validate: false }); Hooks.Events.run("afterInsertCatalogProduct", newVariant); copyMedia(productNewId, variant._id, variantNewId); @@ -822,27 +813,20 @@ Meteor.methods({ throw new Meteor.Error("invalid-parameter", "Product should have a valid shopId"); } - // Create product revision - Hooks.Events.run("beforeInsertCatalogProductInsertRevision", product); - return Products.insert(product); } + // Create a product const newSimpleProduct = createProduct(); - // Create simple product revision - Hooks.Events.run("afterInsertCatalogProductInsertRevision", newSimpleProduct); - - const newVariant = createProduct({ + // Create a product variant + createProduct({ ancestors: [newSimpleProduct._id], price: 0.0, title: "", type: "variant" // needed for multi-schema }); - // Create variant revision - Hooks.Events.run("afterInsertCatalogProductInsertRevision", newVariant); - return newSimpleProduct._id; }, @@ -902,18 +886,24 @@ Meteor.methods({ return ids; }); - // Flag the product and all its variants as deleted in the Revisions collection. + // Flag the product and all of it's variants as deleted. productsWithVariants.forEach((toArchiveProduct) => { Hooks.Events.run("beforeRemoveCatalogProduct", toArchiveProduct, { userId: this.userId }); - + Products.update({ + _id: toArchiveProduct._id + }, { + $set: { + isDeleted: true + } + }).count(); Hooks.Events.run("afterRemoveCatalogProduct", this.userId, toArchiveProduct); }); - const numFlaggedAsDeleted = Revisions.find({ - "documentId": { + const numFlaggedAsDeleted = Products.find({ + _id: { $in: ids }, - "documentData.isDeleted": true + isDeleted: true }).count(); if (numFlaggedAsDeleted > 0) { @@ -1017,7 +1007,6 @@ Meteor.methods({ } // If we get a result from the product update, - // meaning the update went past revision control, // denormalize and attach results to top-level product if (result === 1) { if (type === "variant" && toDenormalize.indexOf(field) >= 0) { From 07a7ca5d09ba7be4c95a76d0e46228212e289258 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:27:55 -0700 Subject: [PATCH 045/201] test: update test assertion result --- imports/plugins/core/catalog/server/methods/catalog.app-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.app-test.js b/imports/plugins/core/catalog/server/methods/catalog.app-test.js index aeac0f0057b..9783739c076 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.app-test.js +++ b/imports/plugins/core/catalog/server/methods/catalog.app-test.js @@ -498,7 +498,7 @@ describe("core product methods", function () { Meteor.call("products/updateProductField", product._id, "title", "new product name"); Meteor.call("products/setHandle", product._id); product = Products.findOne(product._id); - expect(product.handle).to.equal(product._id); + expect(product.handle).to.equal("new product name"); }); }); From 4b01aa7e38e67df625990895c64b3ee7ac6577d1 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:36:05 -0700 Subject: [PATCH 046/201] fix: add type option to product update --- imports/plugins/core/catalog/server/methods/catalog.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 7c1b9eebc03..76064c16c90 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -644,6 +644,8 @@ Meteor.methods({ $set: { isDeleted: true } + }, { + type: product.type }); Hooks.Events.run("afterRemoveCatalogProduct", this.userId, product); }); From 36b714eb6762a2b0892bd9b18773ce8c6cf3204b Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:37:55 -0700 Subject: [PATCH 047/201] test: fix test that relied on revision control indirectly --- .../plugins/core/catalog/server/methods/catalog.app-test.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.app-test.js b/imports/plugins/core/catalog/server/methods/catalog.app-test.js index 9783739c076..69230dd2062 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.app-test.js +++ b/imports/plugins/core/catalog/server/methods/catalog.app-test.js @@ -472,12 +472,10 @@ describe("core product methods", function () { expect(product.hashtags).to.contain(tag._id); expect(Tags.find().count()).to.equal(1); - // Remove the tag from the published product and ensure it didn't succeed. - // Revision control should stop the published product from being changed. + // Remove the tag from the published product and ensure it succeed. Meteor.call("products/removeProductTag", product._id, tag._id); product = Products.findOne(product._id); expect(product.hashtags).to.not.contain(tag._id); - expect(Tags.find().count()).to.equal(0); }); }); From 4266a130b60137e3d0e3d11730dfe0e009a6dbef Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:39:17 -0700 Subject: [PATCH 048/201] test: fix assertion for product handle --- imports/plugins/core/catalog/server/methods/catalog.app-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.app-test.js b/imports/plugins/core/catalog/server/methods/catalog.app-test.js index 69230dd2062..1e975f99cfc 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.app-test.js +++ b/imports/plugins/core/catalog/server/methods/catalog.app-test.js @@ -496,7 +496,7 @@ describe("core product methods", function () { Meteor.call("products/updateProductField", product._id, "title", "new product name"); Meteor.call("products/setHandle", product._id); product = Products.findOne(product._id); - expect(product.handle).to.equal("new product name"); + expect(product.handle).to.equal("new-product-name"); }); }); From 8997444b9a459ae0845c5a160c78a1f0899ce796 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:46:27 -0700 Subject: [PATCH 049/201] refactor: add revision control package removal migration --- imports/plugins/core/versions/server/migrations/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/imports/plugins/core/versions/server/migrations/index.js b/imports/plugins/core/versions/server/migrations/index.js index 26658655eb5..4ba42c448a0 100644 --- a/imports/plugins/core/versions/server/migrations/index.js +++ b/imports/plugins/core/versions/server/migrations/index.js @@ -22,3 +22,4 @@ import "./21_clean_cart_shipment_method"; import "./22_register_verify_account"; import "./23_drop_tempstore_collections"; import "./24_publish_all_existing_visible_products"; +import "./25_remove_revision_control"; From 7e0271c3a8d3de0ef33756258e3f88e809967571 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 14:47:15 -0700 Subject: [PATCH 050/201] fix: use toArchiveProduct as the string product id --- imports/plugins/core/catalog/server/methods/catalog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 76064c16c90..1784849067b 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -892,7 +892,7 @@ Meteor.methods({ productsWithVariants.forEach((toArchiveProduct) => { Hooks.Events.run("beforeRemoveCatalogProduct", toArchiveProduct, { userId: this.userId }); Products.update({ - _id: toArchiveProduct._id + _id: toArchiveProduct }, { $set: { isDeleted: true From 82a02bac8e7d01188d76e38be306da911163cda1 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 15:04:40 -0700 Subject: [PATCH 051/201] test: add type to product update statements to fix broken tests --- imports/plugins/core/catalog/server/methods/catalog.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 1784849067b..e33d33da7db 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -639,13 +639,12 @@ Meteor.methods({ toDelete.forEach((product) => { Hooks.Events.run("beforeRemoveCatalogProduct", product, { userId: this.userId }); Products.update({ - _id: product._id + _id: product._id, + type: product.type }, { $set: { isDeleted: true } - }, { - type: product.type }); Hooks.Events.run("afterRemoveCatalogProduct", this.userId, product); }); @@ -892,12 +891,13 @@ Meteor.methods({ productsWithVariants.forEach((toArchiveProduct) => { Hooks.Events.run("beforeRemoveCatalogProduct", toArchiveProduct, { userId: this.userId }); Products.update({ - _id: toArchiveProduct + _id: toArchiveProduct._id, + type: toArchiveProduct.type }, { $set: { isDeleted: true } - }).count(); + }); Hooks.Events.run("afterRemoveCatalogProduct", this.userId, toArchiveProduct); }); From d49b6f04216b873208402ef0c91e9dc20fd8c1c5 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Fri, 18 May 2018 15:31:35 -0700 Subject: [PATCH 052/201] chore: update package lock file --- package-lock.json | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac0cfe85b9d..f69a91f86a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8883,9 +8883,9 @@ "requires": { "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "2.0.0", + "process-nextick-args": "1.0.7", "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", + "string_decoder": "1.0.3", "util-deprecate": "1.0.2" }, "dependencies": { @@ -8893,19 +8893,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "5.1.1" - } } } }, From cf5fdac5369c4094ff8192b2a977e3d4568c5cf6 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 18 May 2018 17:35:24 -0500 Subject: [PATCH 053/201] feat: added simpl-schema-mockdoc as devDep --- package-lock.json | 5378 +++++++++++++++++++++++---------------------- package.json | 1 + 2 files changed, 2718 insertions(+), 2661 deletions(-) diff --git a/package-lock.json b/package-lock.json index a42baf20236..a112fee2b7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "resolved": "https://registry.npmjs.org/42-cent-base/-/42-cent-base-0.8.0.tgz", "integrity": "sha1-ZXKom0enKvGcZ8NAG1wd0wqpuLs=", "requires": { - "bluebird": "2.11.0", - "lodash": "2.4.2" + "bluebird": "^2.3.2", + "lodash": "^2.4.1" }, "dependencies": { "lodash": { @@ -31,15 +31,15 @@ "integrity": "sha512-RF2RQh9gvxeXtwrFzgf4PKCsmCPsa/tHaL0TQ3eWRoyno91GsoYnAhh/SnvPrlvXV+9Uosw+zwOgwnVyRvPDYQ==", "dev": true, "requires": { - "chokidar": "1.7.0", - "commander": "2.14.1", - "convert-source-map": "1.5.1", - "fs-readdir-recursive": "1.1.0", - "glob": "7.1.2", - "lodash": "4.17.5", - "output-file-sync": "2.0.1", - "slash": "1.0.0", - "source-map": "0.5.7" + "chokidar": "^1.6.1", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.0.0", + "lodash": "^4.2.0", + "output-file-sync": "^2.0.0", + "slash": "^1.0.0", + "source-map": "^0.5.0" }, "dependencies": { "source-map": { @@ -56,9 +56,9 @@ "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==", "dev": true, "requires": { - "chalk": "2.3.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@babel/core": { @@ -74,13 +74,13 @@ "@babel/traverse": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "convert-source-map": "1.5.1", - "debug": "3.1.0", - "json5": "0.5.1", - "lodash": "4.17.5", - "micromatch": "2.3.11", - "resolve": "1.5.0", - "source-map": "0.5.7" + "convert-source-map": "^1.1.0", + "debug": "^3.0.1", + "json5": "^0.5.0", + "lodash": "^4.2.0", + "micromatch": "^2.3.11", + "resolve": "^1.3.2", + "source-map": "^0.5.0" }, "dependencies": { "debug": { @@ -107,10 +107,10 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "jsesc": "2.5.1", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" }, "dependencies": { "source-map": { @@ -147,7 +147,7 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "esutils": "2.0.2" + "esutils": "^2.0.0" } }, "@babel/helper-call-delegate": { @@ -169,7 +169,7 @@ "requires": { "@babel/helper-function-name": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-explode-assignable-expression": { @@ -218,7 +218,7 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-module-transforms": { @@ -231,7 +231,7 @@ "@babel/helper-simple-access": "7.0.0-beta.38", "@babel/template": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-optimise-call-expression": { @@ -249,7 +249,7 @@ "integrity": "sha512-ovwkKMmLkZspr7ge5y8w7JQoO1MXPXcp8UaLxcmP5Akw0uAmISvd4vGFy4tpwtnsgPU1N7J5NyomTdMPqn78Aw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-remap-async-to-generator": { @@ -285,7 +285,7 @@ "requires": { "@babel/template": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-wrap-function": { @@ -319,11 +319,11 @@ "requires": { "@babel/polyfill": "7.0.0-beta.38", "@babel/register": "7.0.0-beta.38", - "commander": "2.14.1", - "fs-readdir-recursive": "1.1.0", - "lodash": "4.17.5", - "output-file-sync": "2.0.1", - "v8flags": "3.0.2" + "commander": "^2.8.1", + "fs-readdir-recursive": "^1.0.0", + "lodash": "^4.2.0", + "output-file-sync": "^2.0.0", + "v8flags": "^3.0.0" } }, "@babel/plugin-check-constants": { @@ -414,7 +414,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" } }, "@babel/plugin-syntax-async-generators": { @@ -517,7 +517,7 @@ "integrity": "sha512-GoYqWrbwEQty36dUzjbBoIBW+hymFrE8S7IifH6Lzess3a9z9ST1APNYk4XHrGYYyn7lOGOWe3SL8tPLWoo+OA==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/plugin-transform-classes": { @@ -531,7 +531,7 @@ "@babel/helper-function-name": "7.0.0-beta.38", "@babel/helper-optimise-call-expression": "7.0.0-beta.38", "@babel/helper-replace-supers": "7.0.0-beta.38", - "globals": "11.3.0" + "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { @@ -553,7 +553,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" } }, "@babel/plugin-transform-duplicate-keys": { @@ -715,7 +715,7 @@ "integrity": "sha512-jbvExdAuxDndPbK3oO54QdkKqMeUAt/XYMW9wovYAWLA5R2loJkMjneZ5iU8VbfNcqVk2baWdgInBBUy6dtoXQ==", "dev": true, "requires": { - "regenerator-transform": "0.12.3" + "regenerator-transform": "^0.12.3" } }, "@babel/plugin-transform-shorthand-properties": { @@ -761,7 +761,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" + "regexpu-core": "^4.1.3" }, "dependencies": { "jsesc": { @@ -777,8 +777,8 @@ "integrity": "sha512-4W6LtzWEp8r4Cvqbv16Ix3WV3JdjcWTIa0+8U+MILNiS7qchBZQALki5WStlF7deHGGE/ZpsAs0HOpK68HUsCQ==", "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.1" } }, "@babel/preset-env": { @@ -822,9 +822,9 @@ "@babel/plugin-transform-template-literals": "7.0.0-beta.38", "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.38", "@babel/plugin-transform-unicode-regex": "7.0.0-beta.38", - "browserslist": "2.11.3", - "invariant": "2.2.2", - "semver": "5.4.1" + "browserslist": "^2.4.0", + "invariant": "^2.2.2", + "semver": "^5.3.0" } }, "@babel/preset-es2015": { @@ -907,13 +907,13 @@ "integrity": "sha512-szE2vMZ8FB6NkywESqDGcAtchQafaWLQgJo3xro7GIgNRmJoAX2xZijU1e5AKT4zWkRRc53aBBwfZy03aWsPgw==", "dev": true, "requires": { - "core-js": "2.5.3", - "find-cache-dir": "1.0.0", - "home-or-tmp": "3.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "pirates": "3.0.2", - "source-map-support": "0.4.18" + "core-js": "^2.4.0", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.2.0", + "mkdirp": "^0.5.1", + "pirates": "^3.0.1", + "source-map-support": "^0.4.2" }, "dependencies": { "home-or-tmp": { @@ -934,7 +934,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -944,8 +944,8 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.38.tgz", "integrity": "sha512-ZvPtlcvH2ZRzr1U5pkmCE7U3RIun3Nf29XHem47aScmJgMuL06ulkp+4oPBee3QrUVFErDjwNWtC67BzNuxLVw==", "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.1" } }, "@babel/template": { @@ -957,7 +957,7 @@ "@babel/code-frame": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/traverse": { @@ -971,10 +971,10 @@ "@babel/helper-function-name": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "debug": "3.1.0", - "globals": "11.3.0", - "invariant": "2.2.2", - "lodash": "4.17.5" + "debug": "^3.0.1", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" }, "dependencies": { "debug": { @@ -994,9 +994,9 @@ "integrity": "sha512-SAtyEjmA7KiEoL2eAOAUM6M9arQJGWxJKK0S9x0WyPOosHS420RXoxPhn57u/8orRnK8Kxm0nHQQNTX203cP1Q==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" }, "dependencies": { "to-fast-properties": { @@ -1017,24 +1017,24 @@ "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.13.6.tgz", "integrity": "sha1-qdjhN7xCmkSrqWif5qDkMxeE+FM=", "requires": { - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "concat-stream": "1.6.0", - "create-error-class": "3.0.2", - "duplexify": "3.5.4", - "ent": "2.2.0", - "extend": "3.0.1", - "google-auto-auth": "0.7.2", - "is": "3.2.1", - "log-driver": "1.2.7", - "methmeth": "1.1.0", - "modelo": "4.2.3", - "request": "2.83.0", - "retry-request": "3.3.1", - "split-array-stream": "1.0.3", - "stream-events": "1.0.4", - "string-format-obj": "1.1.1", - "through2": "2.0.3" + "array-uniq": "^1.0.3", + "arrify": "^1.0.1", + "concat-stream": "^1.6.0", + "create-error-class": "^3.0.2", + "duplexify": "^3.5.0", + "ent": "^2.2.0", + "extend": "^3.0.0", + "google-auto-auth": "^0.7.1", + "is": "^3.2.0", + "log-driver": "^1.2.5", + "methmeth": "^1.1.0", + "modelo": "^4.2.0", + "request": "^2.79.0", + "retry-request": "^3.0.0", + "split-array-stream": "^1.0.0", + "stream-events": "^1.0.1", + "string-format-obj": "^1.1.0", + "through2": "^2.0.3" }, "dependencies": { "google-auto-auth": { @@ -1042,10 +1042,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.7.2.tgz", "integrity": "sha512-ux2n2AE2g3+vcLXwL4dP/M12SFMRX5dzCzBfhAEkTeAB7dpyGdOIEj7nmUx0BHKaCcUQrRWg9kT63X/Mmtk1+A==", "requires": { - "async": "2.6.0", - "gcp-metadata": "0.3.1", - "google-auth-library": "0.10.0", - "request": "2.83.0" + "async": "^2.3.0", + "gcp-metadata": "^0.3.0", + "google-auth-library": "^0.10.0", + "request": "^2.79.0" } } } @@ -1055,22 +1055,22 @@ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-1.1.1.tgz", "integrity": "sha1-ZZC1zm53lVbJzHBDvWRJ1rwHgd4=", "requires": { - "@google-cloud/common": "0.13.6", - "arrify": "1.0.1", - "async": "2.6.0", - "concat-stream": "1.6.0", - "create-error-class": "3.0.2", - "duplexify": "3.5.4", - "extend": "3.0.1", - "gcs-resumable-upload": "0.7.7", - "hash-stream-validation": "0.2.1", - "is": "3.2.1", - "mime-types": "2.1.17", - "once": "1.4.0", - "pumpify": "1.4.0", - "stream-events": "1.0.4", - "string-format-obj": "1.1.1", - "through2": "2.0.3" + "@google-cloud/common": "^0.13.0", + "arrify": "^1.0.0", + "async": "^2.0.1", + "concat-stream": "^1.5.0", + "create-error-class": "^3.0.2", + "duplexify": "^3.2.0", + "extend": "^3.0.0", + "gcs-resumable-upload": "^0.7.1", + "hash-stream-validation": "^0.2.1", + "is": "^3.0.1", + "mime-types": "^2.0.8", + "once": "^1.3.1", + "pumpify": "^1.3.3", + "stream-events": "^1.0.1", + "string-format-obj": "^1.0.0", + "through2": "^2.0.0" } }, "@reactioncommerce/eslint-config": { @@ -1084,13 +1084,13 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections/-/file-collections-0.5.0.tgz", "integrity": "sha512-92983/xIT6xAnHR0+4XKVY9jUp0vpobLhG0wCyegvX/dkSRO5srL4tz1ZN/77pxe7d1MfEEYo6MLQ/YmluIw6A==", "requires": { - "babel-runtime": "6.26.0", - "content-disposition": "0.5.2", - "debug": "3.1.0", - "path-parser": "4.0.4", - "query-string": "5.1.0", - "tus-js-client": "1.5.1", - "tus-node-server": "0.2.11" + "babel-runtime": "^6.26.0", + "content-disposition": "^0.5.2", + "debug": "^3.1.0", + "path-parser": "^4.0.4", + "query-string": "^5.1.0", + "tus-js-client": "^1.4.5", + "tus-node-server": "^0.2.8" }, "dependencies": { "debug": { @@ -1108,8 +1108,8 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections-sa-base/-/file-collections-sa-base-0.0.2.tgz", "integrity": "sha512-yUIot7kvA8qNaowk4FJJMxJ2+lME74zjTBJxGXjauS3USeBw27NjlckpW3F8LwizPzW8L5J3BmYRHGqXIVGykQ==", "requires": { - "babel-runtime": "6.26.0", - "debug": "3.1.0" + "babel-runtime": "^6.26.0", + "debug": "^3.1.0" }, "dependencies": { "debug": { @@ -1127,10 +1127,10 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections-sa-gridfs/-/file-collections-sa-gridfs-0.0.2.tgz", "integrity": "sha512-taswRPu3iIq+OsO5Q1Ohn/uealYRHKZSss0/DFdahaWYW7hcZualruvysqbzbtN42VWmZ9Yv+sVCtkVIxiwN2w==", "requires": { - "@reactioncommerce/file-collections-sa-base": "0.0.2", - "babel-runtime": "6.26.0", - "debug": "3.1.0", - "gridfs-stream": "1.1.1" + "@reactioncommerce/file-collections-sa-base": "^0.0.2", + "babel-runtime": "^6.26.0", + "debug": "^3.1.0", + "gridfs-stream": "^1.1.1" }, "dependencies": { "debug": { @@ -1148,7 +1148,7 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/hooks/-/hooks-1.0.2.tgz", "integrity": "sha512-YINoM2alXOJZD6X9KbD6n2tsUgvGhk2QG4Hkc71Pp9ah+JXi+CC2wbZLfxr3qHoqwNHG9Ovny7OVucqnXzLl9w==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.5" } }, "@reactioncommerce/job-queue": { @@ -1156,7 +1156,7 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/job-queue/-/job-queue-1.0.4.tgz", "integrity": "sha512-nav+E2H0+OxnOrSejZJi4tXCE1Zp81dEFcxa4JWqN4Y3o6/1QH7Hf5jR0FBtUIzsDoMeyh0TigRLBCbJddoMeA==", "requires": { - "later": "1.2.0" + "later": "^1.2.0" } }, "@reactioncommerce/logger": { @@ -1164,9 +1164,9 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/logger/-/logger-1.1.1.tgz", "integrity": "sha512-gsoM8QEcZwFvJLLX2NAzJgj1eI+5TigvmOPqYp3zCX3ZZdEy4imihKof7mtnUH7WQFpqsDvW90XJXNUeb/NCfw==", "requires": { - "bunyan": "1.8.12", - "bunyan-format": "0.2.1", - "node-loggly-bulk": "2.2.2" + "bunyan": "^1.8.12", + "bunyan-format": "^0.2.1", + "node-loggly-bulk": "^2.2.2" }, "dependencies": { "bunyan": { @@ -1174,10 +1174,10 @@ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "requires": { - "dtrace-provider": "0.8.5", - "moment": "2.20.1", - "mv": "2.1.1", - "safe-json-stringify": "1.0.4" + "dtrace-provider": "~0.8", + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" } }, "node-loggly-bulk": { @@ -1185,9 +1185,9 @@ "resolved": "https://registry.npmjs.org/node-loggly-bulk/-/node-loggly-bulk-2.2.2.tgz", "integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==", "requires": { - "json-stringify-safe": "5.0.1", - "moment": "2.20.1", - "request": "2.83.0" + "json-stringify-safe": "5.0.x", + "moment": "^2.18.1", + "request": ">=2.76.0 <3.0.0" } } } @@ -1233,7 +1233,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" }, "dependencies": { @@ -1247,7 +1247,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } } } @@ -1257,8 +1257,8 @@ "resolved": "https://registry.npmjs.org/accounting-js/-/accounting-js-1.1.1.tgz", "integrity": "sha1-f+Sz9wwB6+C4XALF8QfxOTuIDJ4=", "requires": { - "is-string": "1.0.4", - "object-assign": "4.1.1" + "is-string": "^1.0.4", + "object-assign": "^4.0.1" } }, "acorn": { @@ -1273,7 +1273,7 @@ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "acorn": "5.3.0" + "acorn": "^5.0.0" } }, "acorn-jsx": { @@ -1282,7 +1282,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -1299,7 +1299,7 @@ "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "dev": true, "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "airbnb-prop-types": { @@ -1307,14 +1307,14 @@ "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.8.1.tgz", "integrity": "sha512-z7pAKmUyAsp/2SqLCTf9hzFc2JLspijB9t+I9D/i0NnYkkjUoV16+W00U6r7+HBM6Q3VqXSjYuUsLX1L71aciw==", "requires": { - "array.prototype.find": "2.0.4", - "function.prototype.name": "1.1.0", - "has": "1.0.1", - "is-regex": "1.0.4", - "object.assign": "4.1.0", - "object.entries": "1.0.4", - "prop-types": "15.6.0", - "prop-types-exact": "1.1.2" + "array.prototype.find": "^2.0.4", + "function.prototype.name": "^1.0.3", + "has": "^1.0.1", + "is-regex": "^1.0.4", + "object.assign": "^4.0.4", + "object.entries": "^1.0.4", + "prop-types": "^15.5.10", + "prop-types-exact": "^1.1.1" } }, "ajv": { @@ -1322,10 +1322,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -1339,9 +1339,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -1355,7 +1355,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "ansi-escapes": { @@ -1374,7 +1374,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "ansicolors": { @@ -1394,8 +1394,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "aphrodite": { @@ -1403,9 +1403,9 @@ "resolved": "https://registry.npmjs.org/aphrodite/-/aphrodite-1.2.5.tgz", "integrity": "sha1-g1jDbIC7A67puXFlqqcBhiJbSYM=", "requires": { - "asap": "2.0.6", - "inline-style-prefixer": "3.0.8", - "string-hash": "1.1.3" + "asap": "^2.0.3", + "inline-style-prefixer": "^3.0.1", + "string-hash": "^1.1.3" }, "dependencies": { "inline-style-prefixer": { @@ -1413,8 +1413,8 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", "requires": { - "bowser": "1.9.2", - "css-in-js-utils": "2.0.0" + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" } } } @@ -1424,7 +1424,7 @@ "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.0.9.tgz", "integrity": "sha512-bspKyM9gBDxv2nnKPSErzzZiSOdvRXnHwS/3gwBucZG1Dz5U4H6xyPtCx754/YfRto1yT9bUMc7vW85jJ/acOA==", "requires": { - "graphql-extensions": "0.0.8" + "graphql-extensions": "^0.0.x" } }, "apollo-link": { @@ -1432,9 +1432,9 @@ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz", "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==", "requires": { - "@types/node": "9.4.6", - "apollo-utilities": "1.0.10", - "zen-observable-ts": "0.8.8" + "@types/node": "^9.4.6", + "apollo-utilities": "^1.0.0", + "zen-observable-ts": "^0.8.6" } }, "apollo-server-core": { @@ -1442,9 +1442,9 @@ "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.3.2.tgz", "integrity": "sha1-82hVo+vcLXe4ucRUOAvx1wYQX/w=", "requires": { - "apollo-cache-control": "0.0.9", - "apollo-tracing": "0.1.3", - "graphql-extensions": "0.0.8" + "apollo-cache-control": "^0.0.x", + "apollo-tracing": "^0.1.0", + "graphql-extensions": "^0.0.x" } }, "apollo-server-express": { @@ -1452,8 +1452,8 @@ "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.3.2.tgz", "integrity": "sha1-D/ggHAvzYoBKFR4TmXZ9rmq34wk=", "requires": { - "apollo-server-core": "1.3.2", - "apollo-server-module-graphiql": "1.3.2" + "apollo-server-core": "^1.3.2", + "apollo-server-module-graphiql": "^1.3.0" } }, "apollo-server-module-graphiql": { @@ -1466,7 +1466,7 @@ "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.3.tgz", "integrity": "sha512-LZhSDL4oe9iNkedzJk6tQ6zLXmw/lwCvB0HDZyJjdp8rqrW+RN0Fk6MmZtNq9Z0olwOUh8EN3vIpzLwR3CJTrw==", "requires": { - "graphql-extensions": "0.0.8" + "graphql-extensions": "^0.0.x" } }, "apollo-utilities": { @@ -1480,7 +1480,7 @@ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "aproba": { @@ -1503,8 +1503,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "argparse": { @@ -1513,7 +1513,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "aria-query": { @@ -1523,7 +1523,7 @@ "dev": true, "requires": { "ast-types-flow": "0.0.7", - "commander": "2.14.1" + "commander": "^2.11.0" } }, "arr-diff": { @@ -1532,7 +1532,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -1564,8 +1564,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-union": { @@ -1574,7 +1574,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -1593,8 +1593,8 @@ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array.prototype.flatten": { @@ -1602,9 +1602,9 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz", "integrity": "sha512-3GhsA78XgK//wQKbhUe6L93kknekGlTRY0kvYcpuSi0aa9rVrMr/okeIIv/XSpN8fZ5iUM+bWifhf2/7CYKtIg==", "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.10.0", - "function-bind": "1.1.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" }, "dependencies": { "es-abstract": { @@ -1612,11 +1612,11 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } } } @@ -1675,7 +1675,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "async-each": { @@ -1706,7 +1706,7 @@ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.2.tgz", "integrity": "sha512-NUj0itVSnpFkUYCj3XKSRCZ7N9gPwWcyX/tF7HosqyDBPMSygALivvJIGI8VvlPcunns5khMkpxoNshvmhy/ZQ==", "requires": { - "core-js": "2.5.3" + "core-js": "^2.5.0" } }, "authorize-net": { @@ -1714,11 +1714,11 @@ "resolved": "https://registry.npmjs.org/authorize-net/-/authorize-net-1.1.1.tgz", "integrity": "sha512-i1xAX1Ba01lehno84ipjUF1lVwFCyX7089Bp/SzrP1YsKl08Hz0D1wi6L8+l8R2a6UQah7Bm+v7DaHSzDyLWsw==", "requires": { - "42-cent-base": "0.8.0", - "42-cent-util": "1.0.0", - "bluebird": "2.11.0", + "42-cent-base": "^0.8.0", + "42-cent-util": "^1.0.0", + "bluebird": "^2.3.11", "request": "2.83.0", - "xml2js": "0.4.19" + "xml2js": "^0.4.6" } }, "autoprefixer": { @@ -1726,12 +1726,12 @@ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", "requires": { - "browserslist": "2.11.3", - "caniuse-lite": "1.0.30000813", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.19", - "postcss-value-parser": "3.3.0" + "browserslist": "^2.11.3", + "caniuse-lite": "^1.0.30000805", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.17", + "postcss-value-parser": "^3.2.3" } }, "autosize": { @@ -1763,9 +1763,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -1778,11 +1778,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1790,7 +1790,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1816,8 +1816,8 @@ "@babel/traverse": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0" + "eslint-scope": "~3.7.1", + "eslint-visitor-keys": "^1.0.0" }, "dependencies": { "@babel/code-frame": { @@ -1826,9 +1826,9 @@ "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", "dev": true, "requires": { - "chalk": "2.3.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@babel/helper-function-name": { @@ -1860,7 +1860,7 @@ "@babel/code-frame": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/traverse": { @@ -1873,10 +1873,10 @@ "@babel/helper-function-name": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "debug": "3.1.0", - "globals": "11.3.0", - "invariant": "2.2.2", - "lodash": "4.17.5" + "debug": "^3.0.1", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" } }, "@babel/types": { @@ -1885,9 +1885,9 @@ "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" } }, "babylon": { @@ -1918,14 +1918,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { "jsesc": { @@ -1946,11 +1946,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -1959,8 +1959,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-module-imports": { @@ -1970,7 +1970,7 @@ "dev": true, "requires": { "babel-types": "7.0.0-beta.3", - "lodash": "4.17.5" + "lodash": "^4.2.0" }, "dependencies": { "babel-types": { @@ -1979,9 +1979,9 @@ "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" } }, "to-fast-properties": { @@ -1997,8 +1997,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-jest": { @@ -2007,8 +2007,8 @@ "integrity": "sha512-rEdN/jevSuX0IQKcUqwqOGa0gDNis4jGY52Rq53aizfDGPwQYNJq+f9NCMT1HUhtUZhYSjvfGUfHQWBRT1/icA==", "dev": true, "requires": { - "babel-plugin-istanbul": "4.1.5", - "babel-preset-jest": "22.4.1" + "babel-plugin-istanbul": "^4.1.5", + "babel-preset-jest": "^22.4.1" } }, "babel-messages": { @@ -2016,7 +2016,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-dynamic-import-node": { @@ -2025,7 +2025,7 @@ "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0" + "babel-plugin-syntax-dynamic-import": "^6.18.0" } }, "babel-plugin-inline-import": { @@ -2043,9 +2043,9 @@ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", "dev": true, "requires": { - "find-up": "2.1.0", - "istanbul-lib-instrument": "1.9.2", - "test-exclude": "4.2.0" + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.7.5", + "test-exclude": "^4.1.1" } }, "babel-plugin-jest-hoist": { @@ -2060,11 +2060,11 @@ "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", "dev": true, "requires": { - "babel-helper-module-imports": "7.0.0-beta.3", - "babel-types": "6.26.0", - "glob": "7.1.2", - "lodash": "4.17.5", - "require-package-name": "2.0.1" + "babel-helper-module-imports": "^7.0.0-beta.3", + "babel-types": "^6.26.0", + "glob": "^7.1.1", + "lodash": "^4.17.4", + "require-package-name": "^2.0.1" } }, "babel-plugin-module-resolver": { @@ -2073,11 +2073,11 @@ "integrity": "sha512-UgBbu6ElA6K53+KqriPO0T8B5QN8Ln7E0FSDxqSgUYkTGLUrgnScWvXzUCh3yEb3ZtNMInXOZwc/UMlbFNpE1A==", "dev": true, "requires": { - "find-babel-config": "1.1.0", - "glob": "7.1.2", - "pkg-up": "2.0.0", - "reselect": "3.0.1", - "resolve": "1.5.0" + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" } }, "babel-plugin-rewire-exports": { @@ -2086,7 +2086,7 @@ "integrity": "sha512-mqPQnNKIwP1lGYRSgF+fXDfXYScCDNStfp48ZtLLI3wAm7hbijQrQR41qkK7F5mb8R5G+DG2D61dKSgi/fG9qw==", "dev": true, "requires": { - "babel-template": "6.26.0" + "babel-template": "^6.16.0" } }, "babel-plugin-syntax-class-properties": { @@ -2113,10 +2113,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" }, "dependencies": { "ansi-styles": { @@ -2134,11 +2134,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "globals": { @@ -2151,7 +2151,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -2167,8 +2167,8 @@ "integrity": "sha512-gW3+spyB8fkSAI9fX+41BQMwar5LjR+nyKa2QRvK22snxnI29+jJVAMfId+osucFJzJJvhlvzKWnfwX8Omodvg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "22.4.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0" + "babel-plugin-jest-hoist": "^22.4.1", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" } }, "babel-preset-meteor": { @@ -2211,13 +2211,13 @@ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { "babel-core": { @@ -2225,25 +2225,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" } }, "babylon": { @@ -2261,7 +2261,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -2271,8 +2271,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -2280,11 +2280,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -2299,15 +2299,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.5" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -2327,10 +2327,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -2350,13 +2350,13 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -2365,7 +2365,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "isobject": { @@ -2393,7 +2393,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -2408,8 +2408,8 @@ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.1" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" }, "dependencies": { "process-nextick-args": { @@ -2424,13 +2424,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -2439,7 +2439,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -2449,7 +2449,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "bluebird": { @@ -2463,15 +2463,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "~1.6.15" } }, "boolbase": { @@ -2485,7 +2485,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "bootstrap": { @@ -2514,13 +2514,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, "brace-expansion": { @@ -2528,7 +2528,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -2538,9 +2538,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "braintree": { @@ -2550,7 +2550,7 @@ "requires": { "@braintree/wrap-promise": "1.1.1", "dateformat": "1.0.1-1.2.3", - "depd": "1.1.2", + "depd": "~1.1.0", "readable-stream": "1.1.10", "semver": "5.1.0", "underscore": "1.8.3", @@ -2562,9 +2562,9 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.10.tgz", "integrity": "sha1-1NwuUxnpyQ0eccaTkO9izZCCf2U=", "requires": { - "core-util-is": "1.0.2", + "core-util-is": "~1.0.0", "debuglog": "0.0.2", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "semver": { @@ -2587,7 +2587,7 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.13.tgz", "integrity": "sha1-Q4/zsdhaUa1ln/wuvoNAPhDJhyI=", "requires": { - "sax": "1.2.4" + "sax": ">=0.1.1" } } } @@ -2625,8 +2625,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "requires": { - "caniuse-lite": "1.0.30000813", - "electron-to-chromium": "1.3.36" + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" } }, "bser": { @@ -2635,7 +2635,7 @@ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { - "node-int64": "0.4.0" + "node-int64": "^0.4.0" } }, "bson": { @@ -2650,8 +2650,8 @@ "dev": true, "requires": { "base64-js": "0.0.8", - "ieee754": "1.1.11", - "isarray": "1.0.0" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" }, "dependencies": { "base64-js": { @@ -2668,8 +2668,8 @@ "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "dev": true, "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.1" + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" } }, "buffer-alloc-unsafe": { @@ -2714,9 +2714,9 @@ "resolved": "https://registry.npmjs.org/bunyan-format/-/bunyan-format-0.2.1.tgz", "integrity": "sha1-pLOw2ABwqGUnlBcmnj8A/wL7y0c=", "requires": { - "ansicolors": "0.2.1", - "ansistyles": "0.1.3", - "xtend": "2.1.2" + "ansicolors": "~0.2.1", + "ansistyles": "~0.1.1", + "xtend": "~2.1.1" }, "dependencies": { "ansicolors": { @@ -2734,7 +2734,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "requires": { - "object-keys": "0.4.0" + "object-keys": "~0.4.0" } } } @@ -2750,15 +2750,15 @@ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "dependencies": { "isobject": { @@ -2789,7 +2789,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -2824,7 +2824,7 @@ "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "dev": true, "requires": { - "underscore-contrib": "0.3.0" + "underscore-contrib": "~0.3.0" } }, "center-align": { @@ -2832,8 +2832,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chai": { @@ -2842,12 +2842,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.3" + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" }, "dependencies": { "deep-eql": { @@ -2856,7 +2856,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "4.0.3" + "type-detect": "^4.0.0" } }, "type-detect": { @@ -2877,9 +2877,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "5.2.0" + "ansi-styles": "^3.2.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.2.0" } }, "change-emitter": { @@ -2910,12 +2910,12 @@ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "dev": true, "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.5", - "parse5": "3.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, "chokidar": { @@ -2925,15 +2925,15 @@ "dev": true, "optional": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "chownr": { @@ -2964,10 +2964,10 @@ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -2976,7 +2976,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2985,7 +2985,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2994,7 +2994,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3005,7 +3005,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3014,7 +3014,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3025,9 +3025,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "isobject": { @@ -3061,7 +3061,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -3075,8 +3075,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -3091,10 +3091,10 @@ "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", "dev": true, "requires": { - "for-own": "1.0.0", - "is-plain-object": "2.0.4", - "kind-of": "3.2.2", - "shallow-clone": "0.1.2" + "for-own": "^1.0.0", + "is-plain-object": "^2.0.1", + "kind-of": "^3.2.2", + "shallow-clone": "^0.1.2" }, "dependencies": { "for-own": { @@ -3103,7 +3103,7 @@ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } } } @@ -3113,7 +3113,7 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "co": { @@ -3132,8 +3132,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color": { @@ -3141,8 +3141,8 @@ "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz", "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==", "requires": { - "color-convert": "1.9.1", - "color-string": "1.5.2" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, "color-convert": { @@ -3150,7 +3150,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -3163,8 +3163,8 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", "requires": { - "color-name": "1.1.3", - "simple-swizzle": "0.2.2" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, "colors": { @@ -3178,7 +3178,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -3208,9 +3208,9 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "configstore": { @@ -3218,12 +3218,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "connect": { @@ -3233,7 +3233,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" } }, @@ -3242,7 +3242,7 @@ "resolved": "https://registry.npmjs.org/connect-query/-/connect-query-1.0.0.tgz", "integrity": "sha1-3kT1dyCdokBNH8BGktGkEY5YIRk=", "requires": { - "qs": "6.4.0" + "qs": "~6.4.0" }, "dependencies": { "qs": { @@ -3316,7 +3316,7 @@ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz", "integrity": "sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw==", "requires": { - "toggle-selection": "1.0.6" + "toggle-selection": "^1.0.3" } }, "core-js": { @@ -3334,8 +3334,8 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", "requires": { - "object-assign": "4.1.1", - "vary": "1.1.2" + "object-assign": "^4", + "vary": "^1" } }, "country-data": { @@ -3343,8 +3343,8 @@ "resolved": "https://registry.npmjs.org/country-data/-/country-data-0.0.31.tgz", "integrity": "sha1-gJZrjh0Uf6bWpYnTKTP4eTd0lW0=", "requires": { - "currency-symbol-map": "2.2.0", - "underscore": "1.8.3" + "currency-symbol-map": "~2", + "underscore": ">1.4.4" }, "dependencies": { "underscore": { @@ -3359,7 +3359,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { @@ -3367,9 +3367,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypt": { @@ -3382,7 +3382,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -3390,7 +3390,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } @@ -3410,7 +3410,7 @@ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz", "integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==", "requires": { - "hyphenate-style-name": "1.0.2" + "hyphenate-style-name": "^1.0.2" } }, "css-select": { @@ -3419,10 +3419,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -3443,7 +3443,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "cssom": "0.3.2" + "cssom": "0.3.x" } }, "cuid": { @@ -3481,7 +3481,7 @@ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", "requires": { - "d3-color": "1.0.3" + "d3-color": "1" } }, "d3-scale": { @@ -3489,13 +3489,13 @@ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", "requires": { - "d3-array": "1.2.1", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-format": "1.2.0", - "d3-interpolate": "1.1.5", - "d3-time": "1.0.7", - "d3-time-format": "2.1.0" + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-color": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" } }, "d3-scale-chromatic": { @@ -3503,7 +3503,7 @@ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.1.1.tgz", "integrity": "sha1-gRQG6OCdq3iknaxKMgR9XT7dDEQ=", "requires": { - "d3-interpolate": "1.1.5" + "d3-interpolate": "1" } }, "d3-time": { @@ -3516,7 +3516,7 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.0.tgz", "integrity": "sha512-mqTsfDTylgwE3YE/VNs9oB2OGX274fO0B5j1irbgLQI+X3FPoJg25pesNxrcdZ2nBeRx/6sHDJlDyMIjWL0BGQ==", "requires": { - "d3-time": "1.0.7" + "d3-time": "1" } }, "damerau-levenshtein": { @@ -3530,7 +3530,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "data-uri-to-buffer": { @@ -3574,14 +3574,14 @@ "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "decompress-tarbz2": "4.1.1", - "decompress-targz": "4.1.1", - "decompress-unzip": "4.0.1", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "pify": "2.3.0", - "strip-dirs": "2.1.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" } }, "decompress-response": { @@ -3589,7 +3589,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "decompress-tar": { @@ -3598,9 +3598,9 @@ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "requires": { - "file-type": "5.2.0", - "is-stream": "1.1.0", - "tar-stream": "1.6.1" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" } }, "decompress-tarbz2": { @@ -3609,11 +3609,11 @@ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "6.2.0", - "is-stream": "1.1.0", - "seek-bzip": "1.0.5", - "unbzip2-stream": "1.2.5" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { "file-type": { @@ -3630,9 +3630,9 @@ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "5.2.0", - "is-stream": "1.1.0" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" } }, "decompress-unzip": { @@ -3641,10 +3641,10 @@ "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "dev": true, "requires": { - "file-type": "3.9.0", - "get-stream": "2.3.1", - "pify": "2.3.0", - "yauzl": "2.9.1" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" }, "dependencies": { "file-type": { @@ -3659,8 +3659,8 @@ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } } } @@ -3712,7 +3712,7 @@ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" }, "dependencies": { "strip-bom": { @@ -3721,7 +3721,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -3731,8 +3731,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "define-property": { @@ -3741,8 +3741,8 @@ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -3759,9 +3759,9 @@ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "ast-types": "0.11.3", - "escodegen": "1.9.0", - "esprima": "3.1.3" + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" } }, "del": { @@ -3770,13 +3770,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -3821,7 +3821,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "detect-it": { @@ -3829,10 +3829,10 @@ "resolved": "https://registry.npmjs.org/detect-it/-/detect-it-3.0.3.tgz", "integrity": "sha1-jhPaoLYhJhUMv3bQg6HTTRsH0HE=", "requires": { - "detect-hover": "1.0.2", - "detect-passive-events": "1.0.4", - "detect-pointer": "1.0.2", - "detect-touch-events": "2.0.1" + "detect-hover": "^1.0.2", + "detect-passive-events": "^1.0.4", + "detect-pointer": "^1.0.2", + "detect-touch-events": "^2.0.1" } }, "detect-libc": { @@ -3893,10 +3893,10 @@ "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.5.4.tgz", "integrity": "sha512-BcI782MfTm3wCxeIS5c7tAutyTwEIANtuu3W6/xkoJRwiqhRXKX3BbGlycUxxyzMsKdvvoavxgrC3EMPFNYL9A==", "requires": { - "asap": "2.0.6", - "invariant": "2.2.2", - "lodash": "4.17.5", - "redux": "3.7.2" + "asap": "^2.0.6", + "invariant": "^2.0.0", + "lodash": "^4.2.0", + "redux": "^3.7.1" } }, "doctrine": { @@ -3905,7 +3905,7 @@ "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "dom-helpers": { @@ -3919,8 +3919,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -3936,7 +3936,7 @@ "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.0.2.tgz", "integrity": "sha512-SL5wdVwVguNehkLOpq8Sj3o0C2A5LMBd6Mc7XdnA02n90hLvXXu0vdDirGhdRoP581NgANi1Swe4Omq7SD4lTA==", "requires": { - "ssr-window": "1.0.0" + "ssr-window": "^1.0.0" } }, "domelementtype": { @@ -3951,7 +3951,7 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "4.0.2" + "webidl-conversions": "^4.0.2" } }, "domhandler": { @@ -3960,7 +3960,7 @@ "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -3969,8 +3969,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dot-prop": { @@ -3978,7 +3978,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dtrace-provider": { @@ -3987,7 +3987,7 @@ "integrity": "sha1-mOu6Ihr6xG4cOf02hY2Pk2dSS5I=", "optional": true, "requires": { - "nan": "2.8.0" + "nan": "^2.3.3" } }, "duplexer": { @@ -4006,10 +4006,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ecc-jsbn": { @@ -4018,7 +4018,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ecdsa-sig-formatter": { @@ -4026,8 +4026,8 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", "requires": { - "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "base64url": "^2.0.0", + "safe-buffer": "^5.0.1" } }, "ee-first": { @@ -4056,7 +4056,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { @@ -4064,7 +4064,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "ent": { @@ -4084,22 +4084,22 @@ "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", "dev": true, "requires": { - "cheerio": "1.0.0-rc.2", - "function.prototype.name": "1.1.0", - "has": "1.0.1", - "is-boolean-object": "1.0.0", - "is-callable": "1.1.3", - "is-number-object": "1.0.3", - "is-string": "1.0.4", - "is-subset": "0.1.1", - "lodash": "4.17.5", - "object-inspect": "1.5.0", - "object-is": "1.0.1", - "object.assign": "4.1.0", - "object.entries": "1.0.4", - "object.values": "1.0.4", - "raf": "3.4.0", - "rst-selector-parser": "2.2.3" + "cheerio": "^1.0.0-rc.2", + "function.prototype.name": "^1.0.3", + "has": "^1.0.1", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.3", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-subset": "^0.1.1", + "lodash": "^4.17.4", + "object-inspect": "^1.5.0", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4", + "object.values": "^1.0.4", + "raf": "^3.4.0", + "rst-selector-parser": "^2.2.3" } }, "enzyme-to-json": { @@ -4108,7 +4108,7 @@ "integrity": "sha512-PrgRyZAgEwOrh5/8BtBWrwGcv1mC7yNohytIciAX6SUqDaXg1BlU8CepYQ9BgnDP1i1jTB65qJJITMMCph+T6A==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.4" } }, "error-ex": { @@ -4116,7 +4116,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -4124,11 +4124,11 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -4136,9 +4136,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "es6-error": { @@ -4152,7 +4152,7 @@ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -4179,11 +4179,11 @@ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.5.6" }, "dependencies": { "source-map": { @@ -4201,44 +4201,44 @@ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "5.3.0", - "babel-code-frame": "6.26.0", - "chalk": "2.3.1", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.4", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.3.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.10.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.5", - "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": "1.1.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "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": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", "table": "4.0.2", - "text-table": "0.2.0" + "text-table": "~0.2.0" }, "dependencies": { "debug": { @@ -4256,7 +4256,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } } } @@ -4266,8 +4266,8 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-meteor/-/eslint-import-resolver-meteor-0.4.0.tgz", "integrity": "sha1-yGhjhAghIIz4EzxczlGQnCamFWk=", "requires": { - "object-assign": "4.1.1", - "resolve": "1.5.0" + "object-assign": "^4.0.1", + "resolve": "^1.1.6" } }, "eslint-import-resolver-node": { @@ -4276,8 +4276,8 @@ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "dev": true, "requires": { - "debug": "2.6.9", - "resolve": "1.5.0" + "debug": "^2.6.9", + "resolve": "^1.5.0" } }, "eslint-module-utils": { @@ -4286,8 +4286,8 @@ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", "dev": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" } }, "eslint-plugin-import": { @@ -4296,16 +4296,16 @@ "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", "dev": true, "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", + "builtin-modules": "^1.1.1", + "contains-path": "^0.1.0", + "debug": "^2.6.8", "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.1.1", + "has": "^1.0.1", + "lodash.cond": "^4.3.0", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0" }, "dependencies": { "doctrine": { @@ -4314,8 +4314,8 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } } } @@ -4332,13 +4332,13 @@ "integrity": "sha1-VFg9GuRCSDFi4EDhPMMYZUZRAOU=", "dev": true, "requires": { - "aria-query": "0.7.1", - "array-includes": "3.0.3", + "aria-query": "^0.7.0", + "array-includes": "^3.0.3", "ast-types-flow": "0.0.7", - "axobject-query": "0.1.0", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.5.1", - "jsx-ast-utils": "2.0.1" + "axobject-query": "^0.1.0", + "damerau-levenshtein": "^1.0.0", + "emoji-regex": "^6.1.0", + "jsx-ast-utils": "^2.0.0" } }, "eslint-plugin-react": { @@ -4347,10 +4347,10 @@ "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", "dev": true, "requires": { - "doctrine": "2.0.2", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.6.0" + "doctrine": "^2.0.2", + "has": "^1.0.1", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.0" } }, "eslint-scope": { @@ -4359,8 +4359,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { @@ -4375,8 +4375,8 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { @@ -4399,7 +4399,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -4408,8 +4408,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "^4.1.0", + "object-assign": "^4.0.1" } }, "estraverse": { @@ -4434,13 +4434,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "exec-sh": { @@ -4449,7 +4449,7 @@ "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", "dev": true, "requires": { - "merge": "1.2.0" + "merge": "^1.1.3" } }, "execa": { @@ -4457,13 +4457,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "exenv": { @@ -4483,7 +4483,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -4492,7 +4492,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expect": { @@ -4501,12 +4501,12 @@ "integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "jest-diff": "22.4.0", - "jest-get-type": "22.1.0", - "jest-matcher-utils": "22.4.0", - "jest-message-util": "22.4.0", - "jest-regex-util": "22.1.0" + "ansi-styles": "^3.2.0", + "jest-diff": "^22.4.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-regex-util": "^22.1.0" } }, "express": { @@ -4514,36 +4514,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "finalhandler": "1.1.0", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", + "proxy-addr": "~2.0.2", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.1", "serve-static": "1.13.1", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", + "statuses": "~1.3.1", + "type-is": "~1.6.15", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "path-to-regexp": { @@ -4569,8 +4569,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -4579,7 +4579,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -4590,9 +4590,9 @@ "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { @@ -4601,7 +4601,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -4636,7 +4636,7 @@ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "2.0.0" + "bser": "^2.0.0" } }, "fbjs": { @@ -4644,13 +4644,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" }, "dependencies": { "core-js": { @@ -4666,7 +4666,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "fibers": { @@ -4680,7 +4680,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -4689,8 +4689,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-type": { @@ -4717,8 +4717,8 @@ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "glob": "7.1.2", - "minimatch": "3.0.4" + "glob": "^7.0.3", + "minimatch": "^3.0.3" } }, "fill-range": { @@ -4727,11 +4727,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -4740,12 +4740,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" } }, "find-babel-config": { @@ -4754,8 +4754,8 @@ "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", "dev": true, "requires": { - "json5": "0.5.1", - "path-exists": "3.0.0" + "json5": "^0.5.1", + "path-exists": "^3.0.0" } }, "find-cache-dir": { @@ -4764,9 +4764,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" }, "dependencies": { "pkg-dir": { @@ -4775,7 +4775,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } } } @@ -4791,7 +4791,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -4800,10 +4800,10 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "flatten-obj": { @@ -4811,7 +4811,7 @@ "resolved": "https://registry.npmjs.org/flatten-obj/-/flatten-obj-3.1.1.tgz", "integrity": "sha512-PyxxiUNTcuh2Ey9ooWlYILcPeh6/OdCyLrRWQejtCYqzcuJrWlATftbX/z447AvmIMKDEcAwBE8dEXz94Zlc8A==", "requires": { - "isobj": "1.0.0" + "isobj": "^1.0.0" } }, "flushwritable": { @@ -4836,7 +4836,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreach": { @@ -4854,9 +4854,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "forwarded": { @@ -4870,7 +4870,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -4889,8 +4889,8 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-constants": { @@ -4905,9 +4905,9 @@ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs-minipass": { @@ -4915,7 +4915,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { - "minipass": "2.2.1" + "minipass": "^2.2.1" } }, "fs-readdir-recursive": { @@ -4936,8 +4936,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "ajv": { @@ -4945,8 +4945,8 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -4969,7 +4969,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -4977,7 +4977,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "extsprintf": { @@ -4990,9 +4990,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -5005,8 +5005,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -5014,10 +5014,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -5030,9 +5030,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "is-fullwidth-code-point": { @@ -5040,7 +5040,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "mime-db": { @@ -5053,8 +5053,8 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "performance-now": { @@ -5072,10 +5072,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -5090,28 +5090,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "semver": { @@ -5124,7 +5124,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "string-width": { @@ -5132,9 +5132,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -5142,7 +5142,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "tar": { @@ -5150,9 +5150,9 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "verror": { @@ -5170,10 +5170,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -5183,9 +5183,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "ftp": { @@ -5194,7 +5194,7 @@ "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", "dev": true, "requires": { - "readable-stream": "1.1.14", + "readable-stream": "1.1.x", "xregexp": "2.0.0" }, "dependencies": { @@ -5210,10 +5210,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -5234,9 +5234,9 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "is-callable": "1.1.3" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "is-callable": "^1.1.3" } }, "functional-red-black-tree": { @@ -5252,14 +5252,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { "is-fullwidth-code-point": { @@ -5269,7 +5269,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -5279,9 +5279,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -5290,7 +5290,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -5300,8 +5300,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.3.1.tgz", "integrity": "sha512-5kJPX/RXuqoLmHiOOgkSDk/LI0QaXpEvZ3pvQP4ifjGGDKZKVSOjL/GcDjXA5kLxppFCOjmmsu0Uoop9d1upaQ==", "requires": { - "extend": "3.0.1", - "retry-request": "3.3.1" + "extend": "^3.0.0", + "retry-request": "^3.0.0" } }, "gcs-resumable-upload": { @@ -5309,13 +5309,13 @@ "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-0.7.7.tgz", "integrity": "sha1-2clyWvlwu8hsvwr+8kBtwizpGGQ=", "requires": { - "buffer-equal": "1.0.0", - "configstore": "3.1.1", - "google-auto-auth": "0.6.1", - "pumpify": "1.4.0", - "request": "2.83.0", - "stream-events": "1.0.4", - "through2": "2.0.3" + "buffer-equal": "^1.0.0", + "configstore": "^3.0.0", + "google-auto-auth": "^0.6.0", + "pumpify": "^1.3.3", + "request": "^2.61.0", + "stream-events": "^1.0.1", + "through2": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -5338,7 +5338,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "caseless": { @@ -5351,11 +5351,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cryptiles": { @@ -5363,7 +5363,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -5371,9 +5371,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "gcp-metadata": { @@ -5381,8 +5381,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.1.0.tgz", "integrity": "sha1-q+IfHqMk3Qs0o/BsqBdj+x7uN9k=", "requires": { - "extend": "3.0.1", - "retry-request": "1.3.2" + "extend": "^3.0.0", + "retry-request": "^1.3.2" } }, "google-auto-auth": { @@ -5390,11 +5390,11 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.6.1.tgz", "integrity": "sha1-wF2CDpRUc57PKKiJLuqz0WJPLLM=", "requires": { - "async": "2.6.0", - "gcp-metadata": "0.1.0", - "google-auth-library": "0.10.0", - "object-assign": "3.0.0", - "request": "2.83.0" + "async": "^2.1.2", + "gcp-metadata": "^0.1.0", + "google-auth-library": "^0.10.0", + "object-assign": "^3.0.0", + "request": "^2.79.0" } }, "har-validator": { @@ -5402,10 +5402,10 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "requires": { - "chalk": "1.1.3", - "commander": "2.14.1", - "is-my-json-valid": "2.17.2", - "pinkie-promise": "2.0.1" + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" } }, "hawk": { @@ -5413,10 +5413,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -5429,9 +5429,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "node-uuid": { @@ -5455,7 +5455,7 @@ "integrity": "sha1-Wa0k5x+K4/MS1fe0vPRnpeWle9Y=", "requires": { "request": "2.76.0", - "through2": "2.0.3" + "through2": "^2.0.0" }, "dependencies": { "request": { @@ -5463,26 +5463,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz", "integrity": "sha1-vkRQWv73A2CgQ2lVEGvjlF2VVg4=", "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "node-uuid": "~1.4.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1" } } } @@ -5492,7 +5492,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "strip-ansi": { @@ -5500,7 +5500,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -5525,7 +5525,7 @@ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "get-caller-file": { @@ -5561,12 +5561,12 @@ "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", "dev": true, "requires": { - "data-uri-to-buffer": "1.2.0", - "debug": "2.6.9", - "extend": "3.0.1", - "file-uri-to-path": "1.0.0", - "ftp": "0.3.10", - "readable-stream": "2.3.3" + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "3", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" } }, "get-value": { @@ -5590,7 +5590,7 @@ "integrity": "sha1-SZAgDxjqW4N8LMT4wDGmmFw4VhE=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } } } @@ -5600,7 +5600,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -5608,12 +5608,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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-base": { @@ -5622,8 +5622,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -5632,7 +5632,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global-cache": { @@ -5640,8 +5640,8 @@ "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", "requires": { - "define-properties": "1.1.2", - "is-symbol": "1.0.1" + "define-properties": "^1.1.2", + "is-symbol": "^1.0.1" } }, "global-dirs": { @@ -5650,7 +5650,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "globals": { @@ -5665,12 +5665,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "google-auth-library": { @@ -5678,10 +5678,10 @@ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.10.0.tgz", "integrity": "sha1-bhW6vuhf0d0U2NEoopW2g41SE24=", "requires": { - "gtoken": "1.2.3", - "jws": "3.1.4", - "lodash.noop": "3.0.1", - "request": "2.83.0" + "gtoken": "^1.2.1", + "jws": "^3.1.4", + "lodash.noop": "^3.0.1", + "request": "^2.74.0" } }, "google-auto-auth": { @@ -5689,10 +5689,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.8.2.tgz", "integrity": "sha512-W91J1paFbyG45gpDWdTu9tKDxbiTDWYkOAxytNVF4oHVVgTCBV/8+lWdjj/6ldjN3eb+sEd9PKJBjm0kmCxvcw==", "requires": { - "async": "2.6.0", - "gcp-metadata": "0.3.1", - "google-auth-library": "0.12.0", - "request": "2.83.0" + "async": "^2.3.0", + "gcp-metadata": "^0.3.0", + "google-auth-library": "^0.12.0", + "request": "^2.79.0" }, "dependencies": { "google-auth-library": { @@ -5700,11 +5700,11 @@ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.12.0.tgz", "integrity": "sha512-79qCXtJ1VweBmmLr4yLq9S4clZB2p5Y+iACvuKk9gu4JitEnPc+bQFmYvtCYehVR44MQzD1J8DVmYW2w677IEw==", "requires": { - "gtoken": "1.2.3", - "jws": "3.1.4", - "lodash.isstring": "4.0.1", - "lodash.merge": "4.6.1", - "request": "2.83.0" + "gtoken": "^1.2.3", + "jws": "^3.1.4", + "lodash.isstring": "^4.0.1", + "lodash.merge": "^4.6.0", + "request": "^2.81.0" } } } @@ -5714,7 +5714,7 @@ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", "requires": { - "node-forge": "0.7.5" + "node-forge": "^0.7.1" } }, "got": { @@ -5722,23 +5722,23 @@ "resolved": "https://registry.npmjs.org/got/-/got-8.1.0.tgz", "integrity": "sha512-clILMRaLB1Ase3NWiSgTUrhpc951Z5V2IMtcFp8SKwu2aY+aeZZUuv/KKQmix+pz+Ov9SugLry6+JsBezHa9Vw==", "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" }, "dependencies": { "pify": { @@ -5765,7 +5765,7 @@ "integrity": "sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.11.1" } }, "graphql": { @@ -5773,7 +5773,7 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.1.tgz", "integrity": "sha512-awNp3LTrQ7dJDSX3p3PBuxNDC+WFSOrWeV6+l4Xeh2PQJVOFyQ9SZPonXRz2WZc7aIxLZsf2nDZuuuc0qyEq/A==", "requires": { - "iterall": "1.2.2" + "iterall": "^1.2.0" } }, "graphql-extensions": { @@ -5781,8 +5781,8 @@ "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.8.tgz", "integrity": "sha512-9Ew7qfzkcsV2zrW4OJrdEcFKWAM3hsEhnp4Hbx9RGJ/uZvzDzR1uNUI5wQtjmWfMOj/QvVbwSeNA48PxYAGiBw==", "requires": { - "core-js": "2.5.3", - "source-map-support": "0.5.3" + "core-js": "^2.5.3", + "source-map-support": "^0.5.1" } }, "graphql-fields": { @@ -5805,11 +5805,11 @@ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-2.21.0.tgz", "integrity": "sha512-AmG4WGdpL1OHwnA20ouP7BVB3KnvUOvsc7+4ULWRzEunyRFUYqxrgnEf20iZnYAha8JCb7AP4WPMwWKmGT91rg==", "requires": { - "apollo-link": "1.2.1", - "apollo-utilities": "1.0.10", - "deprecated-decorator": "0.1.6", - "iterall": "1.2.2", - "uuid": "3.1.0" + "apollo-link": "^1.1.0", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" } }, "graphql.js": { @@ -5823,7 +5823,7 @@ "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", "integrity": "sha1-PdOhAOwgIaGBKC9utGcJY2B034k=", "requires": { - "flushwritable": "1.0.0" + "flushwritable": "^1.0.0" } }, "growly": { @@ -5837,10 +5837,10 @@ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", "requires": { - "google-p12-pem": "0.1.2", - "jws": "3.1.4", - "mime": "1.6.0", - "request": "2.83.0" + "google-p12-pem": "^0.1.0", + "jws": "^3.0.0", + "mime": "^1.4.1", + "request": "^2.72.0" } }, "handlebars": { @@ -5848,10 +5848,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "async": { @@ -5869,7 +5869,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "window-size": { @@ -5887,9 +5887,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -5905,8 +5905,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.3.0", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has": { @@ -5914,7 +5914,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -5922,7 +5922,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -5945,7 +5945,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -5961,9 +5961,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -5980,8 +5980,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -5990,7 +5990,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5999,7 +5999,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6010,7 +6010,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6021,7 +6021,7 @@ "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", "dev": true, "requires": { - "async": "1.5.2" + "async": "~1.5" }, "dependencies": { "async": { @@ -6037,7 +6037,7 @@ "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", "requires": { - "through2": "2.0.3" + "through2": "^2.0.0" } }, "hawk": { @@ -6045,10 +6045,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "history": { @@ -6056,11 +6056,11 @@ "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", "requires": { - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "resolve-pathname": "2.2.0", - "value-equal": "0.4.0", - "warning": "3.0.0" + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" } }, "hoek": { @@ -6078,8 +6078,8 @@ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "homedir-polyfill": { @@ -6088,7 +6088,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" } }, "hosted-git-info": { @@ -6102,7 +6102,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.3" + "whatwg-encoding": "^1.0.1" } }, "htmlparser2": { @@ -6111,12 +6111,12 @@ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-cache-semantics": { @@ -6132,7 +6132,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" }, "dependencies": { "depd": { @@ -6148,7 +6148,7 @@ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -6168,9 +6168,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -6179,8 +6179,8 @@ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "debug": { @@ -6247,7 +6247,7 @@ "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.6.5.tgz", "integrity": "sha512-nRj5RN2em1O3NK25Zz0eBszg+kQ3mR5WgZp3wRajbyeu/Ii/eXhpwjB8JG4Hd78JUnuFVXSchWF5EZBI6F+vEA==", "requires": { - "invariant": "2.2.2" + "invariant": "^2.2.0" } }, "immutable": { @@ -6267,8 +6267,8 @@ "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "dev": true, "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" }, "dependencies": { "pkg-dir": { @@ -6277,7 +6277,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } } } @@ -6292,8 +6292,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6311,8 +6311,8 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.0.tgz", "integrity": "sha1-MKA98bNGumsfuKgSvDydq+9IAi0=", "requires": { - "bowser": "1.9.2", - "css-in-js-utils": "2.0.0" + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" } }, "inquirer": { @@ -6321,20 +6321,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.5", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, "into-stream": { @@ -6342,8 +6342,8 @@ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" } }, "invariant": { @@ -6351,7 +6351,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -6381,7 +6381,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { @@ -6403,7 +6403,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-boolean-object": { @@ -6422,7 +6422,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -6436,7 +6436,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.2" + "ci-info": "^1.0.0" } }, "is-data-descriptor": { @@ -6445,7 +6445,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { @@ -6467,9 +6467,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -6492,7 +6492,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -6512,7 +6512,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -6532,7 +6532,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-installed-globally": { @@ -6541,8 +6541,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-my-ip-valid": { @@ -6555,11 +6555,11 @@ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "is-my-ip-valid": "1.0.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-natural-number": { @@ -6580,7 +6580,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-number-object": { @@ -6605,7 +6605,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -6628,7 +6628,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -6637,7 +6637,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -6650,7 +6650,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -6694,7 +6694,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-resolvable": { @@ -6801,8 +6801,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" }, "dependencies": { "node-fetch": { @@ -6810,8 +6810,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } } } @@ -6827,17 +6827,17 @@ "integrity": "sha512-kH5YRdqdbs5hiH4/Rr1Q0cSAGgjh3jTtg8vu9NLebBAoK3adVO4jk81J+TYOkTr2+Q4NLeb1ACvmEt65iG/Vbw==", "dev": true, "requires": { - "async": "2.6.0", - "fileset": "2.0.3", - "istanbul-lib-coverage": "1.1.2", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.2", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.1.4", - "js-yaml": "3.10.0", - "mkdirp": "0.5.1", - "once": "1.4.0" + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.1.2", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.2", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.3", + "istanbul-reports": "^1.1.4", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" } }, "istanbul-lib-coverage": { @@ -6852,7 +6852,7 @@ "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -6861,13 +6861,13 @@ "integrity": "sha512-nz8t4HQ2206a/3AXi+NHFWEa844DMpPsgbcUteJbt1j8LX1xg56H9rOMnhvcvVvPbW60qAIyrSk44H8ZDqaSSA==", "dev": true, "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.2", - "semver": "5.4.1" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.2", + "semver": "^5.3.0" }, "dependencies": { "babylon": { @@ -6884,10 +6884,10 @@ "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.2", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { "has-flag": { @@ -6902,7 +6902,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -6913,11 +6913,11 @@ "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.2", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { "debug": { @@ -6943,7 +6943,7 @@ "integrity": "sha512-DfSTVOTkuO+kRmbO8Gk650Wqm1WRGr6lrdi2EwDK1vxpS71vdlLd613EpzOKdIFioB5f/scJTjeWBnvd1FWejg==", "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, "isurl": { @@ -6951,8 +6951,8 @@ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "iterall": { @@ -6966,8 +6966,8 @@ "integrity": "sha512-wD7dXWtfaQAgbNVsjFqzmuhg6nzwGsTRVea3FpSJ7GURhG+J536fw4mdoLB01DgiEozDDeF1ZMR/UlUszTsCrg==", "dev": true, "requires": { - "import-local": "1.0.0", - "jest-cli": "22.4.2" + "import-local": "^1.0.0", + "jest-cli": "^22.4.2" }, "dependencies": { "ansi-regex": { @@ -6980,25 +6980,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" }, "dependencies": { "source-map": { @@ -7024,9 +7024,9 @@ "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "jest-cli": { @@ -7035,40 +7035,40 @@ "integrity": "sha512-ebo6ZWK2xDSs7LGnLvM16SZOIJ2dj0B6/oERmGcal32NHkks450nNfGrGTyOSPgJDgH8DFhVdBXgSamN7mtZ0Q==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.1", - "exit": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "import-local": "1.0.0", - "is-ci": "1.1.0", - "istanbul-api": "1.2.2", - "istanbul-lib-coverage": "1.1.2", - "istanbul-lib-instrument": "1.9.2", - "istanbul-lib-source-maps": "1.2.3", - "jest-changed-files": "22.2.0", - "jest-config": "22.4.2", - "jest-environment-jsdom": "22.4.1", - "jest-get-type": "22.1.0", - "jest-haste-map": "22.4.2", - "jest-message-util": "22.4.0", - "jest-regex-util": "22.1.0", - "jest-resolve-dependencies": "22.1.0", - "jest-runner": "22.4.2", - "jest-runtime": "22.4.2", - "jest-snapshot": "22.4.0", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "jest-worker": "22.2.2", - "micromatch": "2.3.11", - "node-notifier": "5.2.1", - "realpath-native": "1.0.0", - "rimraf": "2.6.2", - "slash": "1.0.0", - "string-length": "2.0.0", - "strip-ansi": "4.0.0", - "which": "1.3.0", - "yargs": "10.1.2" + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.14", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-instrument": "^1.8.0", + "istanbul-lib-source-maps": "^1.2.1", + "jest-changed-files": "^22.2.0", + "jest-config": "^22.4.2", + "jest-environment-jsdom": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^22.4.2", + "jest-message-util": "^22.4.0", + "jest-regex-util": "^22.1.0", + "jest-resolve-dependencies": "^22.1.0", + "jest-runner": "^22.4.2", + "jest-runtime": "^22.4.2", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "jest-worker": "^22.2.2", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^10.0.3" } }, "yargs": { @@ -7077,18 +7077,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.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", + "yargs-parser": "^8.1.0" } }, "yargs-parser": { @@ -7097,7 +7097,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -7108,7 +7108,7 @@ "integrity": "sha512-SzqOvoPMrXB0NPvDrSPeKETpoUNCtNDOsFbCzAGWxqWVvNyrIMLpUjVExT3u3LfdVrENlrNGCfh5YoFd8+ZeXg==", "dev": true, "requires": { - "throat": "4.1.0" + "throat": "^4.0.0" } }, "jest-config": { @@ -7117,17 +7117,17 @@ "integrity": "sha512-oG31qYO73/3vj/Q8aM2RgzmHndTkz9nRk8ISybfuJqqbf0RW7OUjHVOZPLOUiwLWtz52Yq2HkjIblsyhbA7vrg==", "dev": true, "requires": { - "chalk": "2.3.1", - "glob": "7.1.2", - "jest-environment-jsdom": "22.4.1", - "jest-environment-node": "22.4.1", - "jest-get-type": "22.1.0", - "jest-jasmine2": "22.4.2", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.4.2", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^22.4.1", + "jest-environment-node": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^22.4.2", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "pretty-format": "^22.4.0" } }, "jest-diff": { @@ -7136,10 +7136,10 @@ "integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==", "dev": true, "requires": { - "chalk": "2.3.1", - "diff": "3.4.0", - "jest-get-type": "22.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^22.4.0" } }, "jest-docblock": { @@ -7148,7 +7148,7 @@ "integrity": "sha512-lDY7GZ+/CJb02oULYLBDj7Hs5shBhVpDYpIm8LUyqw9X2J22QRsM19gmGQwIFqGSJmpc/LRrSYudeSrG510xlQ==", "dev": true, "requires": { - "detect-newline": "2.1.0" + "detect-newline": "^2.1.0" } }, "jest-environment-jsdom": { @@ -7157,9 +7157,9 @@ "integrity": "sha512-x/JzAoH+dWPBnIMv5OQKiIR0TYf6UvbRjsIuDZ11yDFXkHKGJZg6jNnLAsokAm3cq9kUa2hH5BPUC9XU4n1ELQ==", "dev": true, "requires": { - "jest-mock": "22.2.0", - "jest-util": "22.4.1", - "jsdom": "11.6.2" + "jest-mock": "^22.2.0", + "jest-util": "^22.4.1", + "jsdom": "^11.5.1" } }, "jest-environment-node": { @@ -7168,8 +7168,8 @@ "integrity": "sha512-wj9+zzfRgnUbm5VwFOCGgG1QmbucUyrjPKBKUJdLW8K5Ss5zrNc1k+v6feZhFg6sS3ZGnjgtIyklaxEARxu+LQ==", "dev": true, "requires": { - "jest-mock": "22.2.0", - "jest-util": "22.4.1" + "jest-mock": "^22.2.0", + "jest-util": "^22.4.1" } }, "jest-get-type": { @@ -7184,13 +7184,13 @@ "integrity": "sha512-EdQADHGXRqHJYAr7q9B9YYHZnrlcMwhx1+DnIgc9uN05nCW3RvGCxJ91MqWXcC1AzatLoSv7SNd0qXMp2jKBDA==", "dev": true, "requires": { - "fb-watchman": "2.0.0", - "graceful-fs": "4.1.11", - "jest-docblock": "22.4.0", - "jest-serializer": "22.4.0", - "jest-worker": "22.2.2", - "micromatch": "2.3.11", - "sane": "2.4.1" + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^22.4.0", + "jest-serializer": "^22.4.0", + "jest-worker": "^22.2.2", + "micromatch": "^2.3.11", + "sane": "^2.0.0" } }, "jest-jasmine2": { @@ -7199,17 +7199,17 @@ "integrity": "sha512-KZaIHpXQ0AIlvQJFCU0uoXxtz5GG47X14r9upMe7VXE55UazoMZBFnQb9TX2HoYX2/AxJYnjHuvwKVCFqOrEtw==", "dev": true, "requires": { - "chalk": "2.3.1", - "co": "4.6.0", - "expect": "22.4.0", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.4.0", - "jest-matcher-utils": "22.4.0", - "jest-message-util": "22.4.0", - "jest-snapshot": "22.4.0", - "jest-util": "22.4.1", - "source-map-support": "0.5.3" + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.0", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "source-map-support": "^0.5.0" } }, "jest-junit": { @@ -7218,9 +7218,9 @@ "integrity": "sha512-zczUffyyJVvKldrkQZYlbytNDcxeuSSlysXqyEqOp/XiW/on5QDBMJMsmuY7Nmkve3KdA4U/tRkSiG/C2ewrjw==", "dev": true, "requires": { - "mkdirp": "0.5.1", - "strip-ansi": "4.0.0", - "xml": "1.0.1" + "mkdirp": "^0.5.1", + "strip-ansi": "^4.0.0", + "xml": "^1.0.1" } }, "jest-leak-detector": { @@ -7229,7 +7229,7 @@ "integrity": "sha512-r3NEIVNh4X3fEeJtUIrKXWKhNokwUM2ILp5LD8w1KrEanPsFtZmYjmyZYjDTX2dXYr33TW65OvbRE3hWFAyq6g==", "dev": true, "requires": { - "pretty-format": "22.4.0" + "pretty-format": "^22.4.0" } }, "jest-matcher-utils": { @@ -7238,9 +7238,9 @@ "integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==", "dev": true, "requires": { - "chalk": "2.3.1", - "jest-get-type": "22.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^22.4.0" } }, "jest-message-util": { @@ -7249,11 +7249,11 @@ "integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.38", - "chalk": "2.3.1", - "micromatch": "2.3.11", - "slash": "1.0.0", - "stack-utils": "1.0.1" + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" } }, "jest-mock": { @@ -7274,8 +7274,8 @@ "integrity": "sha512-P1hSfcc2HJYT5t+WPu/11OfFMa7m8pBb2Gf2vm6W9OVs7YTXQ5RCC3nDqaYZQaTqxEM1ZZaTcQGcE6U2xMOsqQ==", "dev": true, "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.3.1" + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" } }, "jest-resolve-dependencies": { @@ -7284,7 +7284,7 @@ "integrity": "sha512-76Ll61bD/Sus8wK8d+lw891EtiBJGJkWG8OuVDTEX0z3z2+jPujvQqSB2eQ+kCHyCsRwJ2PSjhn3UHqae/oEtA==", "dev": true, "requires": { - "jest-regex-util": "22.1.0" + "jest-regex-util": "^22.1.0" } }, "jest-runner": { @@ -7293,17 +7293,17 @@ "integrity": "sha512-W4vwgiVQS0NyXt8hgpw7i0YUtsfoChiQcoHWBJeq2ocV4VF2osEZx8HYgpH5HfNe1Cb5LZeZWxX8Dr3hesbGFg==", "dev": true, "requires": { - "exit": "0.1.2", - "jest-config": "22.4.2", - "jest-docblock": "22.4.0", - "jest-haste-map": "22.4.2", - "jest-jasmine2": "22.4.2", - "jest-leak-detector": "22.4.0", - "jest-message-util": "22.4.0", - "jest-runtime": "22.4.2", - "jest-util": "22.4.1", - "jest-worker": "22.2.2", - "throat": "4.1.0" + "exit": "^0.1.2", + "jest-config": "^22.4.2", + "jest-docblock": "^22.4.0", + "jest-haste-map": "^22.4.2", + "jest-jasmine2": "^22.4.2", + "jest-leak-detector": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-runtime": "^22.4.2", + "jest-util": "^22.4.1", + "jest-worker": "^22.2.2", + "throat": "^4.0.0" } }, "jest-runtime": { @@ -7312,26 +7312,26 @@ "integrity": "sha512-9/Fxbj99cqxI7o2nTNzevnI38eDBstkwve8ZeaAD/Kz0fbU3i3eRv2QPEmzbmyCyBvUWxCT7BzNLTzTqH1+pyA==", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-jest": "22.4.1", - "babel-plugin-istanbul": "4.1.5", - "chalk": "2.3.1", - "convert-source-map": "1.5.1", - "exit": "0.1.2", - "graceful-fs": "4.1.11", - "jest-config": "22.4.2", - "jest-haste-map": "22.4.2", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.4.2", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "json-stable-stringify": "1.0.1", - "micromatch": "2.3.11", - "realpath-native": "1.0.0", - "slash": "1.0.0", + "babel-core": "^6.0.0", + "babel-jest": "^22.4.1", + "babel-plugin-istanbul": "^4.1.5", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^22.4.2", + "jest-haste-map": "^22.4.2", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", "strip-bom": "3.0.0", - "write-file-atomic": "2.3.0", - "yargs": "10.1.2" + "write-file-atomic": "^2.1.0", + "yargs": "^10.0.3" }, "dependencies": { "babel-core": { @@ -7340,25 +7340,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" } }, "babylon": { @@ -7373,9 +7373,9 @@ "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "source-map": { @@ -7390,18 +7390,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.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", + "yargs-parser": "^8.1.0" } }, "yargs-parser": { @@ -7410,7 +7410,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -7427,12 +7427,12 @@ "integrity": "sha512-6Zz4F9G1Nbr93kfm5h3A2+OkE+WGpgJlskYE4iSNN2uYfoTL5b9W6aB9Orpx+ueReHyqmy7HET7Z3EmYlL3hKw==", "dev": true, "requires": { - "chalk": "2.3.1", - "jest-diff": "22.4.0", - "jest-matcher-utils": "22.4.0", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^22.4.0" } }, "jest-util": { @@ -7441,13 +7441,13 @@ "integrity": "sha512-9ySBdJY2qVWpg0OvZbGcFXE2NgwccpZVj384E9bx7brKFc7l5anpqah15mseWcz7FLDk7/N+LyYgqFme7Rez2Q==", "dev": true, "requires": { - "callsites": "2.0.0", - "chalk": "2.3.1", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.4.0", - "mkdirp": "0.5.1", - "source-map": "0.6.1" + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^22.4.0", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { @@ -7464,11 +7464,11 @@ "integrity": "sha512-TLOgc/EULFBjMCAqZp5OdVvjxV16DZpfthd/UyPzM6lRmgWluohNVemAdnL3JvugU1s2Q2npcIqtbOtiPjaZ0A==", "dev": true, "requires": { - "chalk": "2.3.1", - "jest-config": "22.4.2", - "jest-get-type": "22.1.0", - "leven": "2.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-config": "^22.4.2", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^22.4.0" } }, "jest-worker": { @@ -7477,7 +7477,7 @@ "integrity": "sha512-ZylDXjrFNt/OP6cUxwJFWwDgazP7hRjtCQbocFHyiwov+04Wm1x5PYzMGNJT53s4nwr0oo9ocYTImS09xOlUnw==", "dev": true, "requires": { - "merge-stream": "1.0.1" + "merge-stream": "^1.0.1" } }, "joi": { @@ -7485,10 +7485,10 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { - "hoek": "2.16.3", - "isemail": "1.2.0", - "moment": "2.20.1", - "topo": "1.1.0" + "hoek": "2.x.x", + "isemail": "1.x.x", + "moment": "2.x.x", + "topo": "1.x.x" }, "dependencies": { "hoek": { @@ -7514,8 +7514,8 @@ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "dependencies": { "esprima": { @@ -7532,7 +7532,7 @@ "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", "dev": true, "requires": { - "xmlcreate": "1.0.2" + "xmlcreate": "^1.0.1" } }, "jsbn": { @@ -7548,17 +7548,17 @@ "dev": true, "requires": { "babylon": "7.0.0-beta.19", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.6", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", "taffydb": "2.6.2", - "underscore": "1.8.3" + "underscore": "~1.8.3" }, "dependencies": { "babylon": { @@ -7587,32 +7587,32 @@ "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", "dev": true, "requires": { - "abab": "1.0.4", - "acorn": "5.3.0", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "browser-process-hrtime": "0.1.2", - "content-type-parser": "1.0.2", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "domexception": "1.0.1", - "escodegen": "1.9.0", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.2.0", - "nwmatcher": "1.4.3", + "abab": "^1.0.4", + "acorn": "^5.3.0", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "browser-process-hrtime": "^0.1.2", + "content-type-parser": "^1.0.2", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.0", + "domexception": "^1.0.0", + "escodegen": "^1.9.0", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.2.0", + "nwmatcher": "^1.4.3", "parse5": "4.0.0", - "pn": "1.1.0", - "request": "2.83.0", - "request-promise-native": "1.0.5", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "whatwg-url": "6.4.0", - "ws": "4.0.0", - "xml-name-validator": "3.0.0" + "pn": "^1.1.0", + "request": "^2.83.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-url": "^6.4.0", + "ws": "^4.0.0", + "xml-name-validator": "^3.0.0" }, "dependencies": { "parse5": { @@ -7649,7 +7649,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -7674,7 +7674,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -7692,11 +7692,11 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", "requires": { - "joi": "6.10.1", - "jws": "3.1.4", - "lodash.once": "4.1.1", - "ms": "2.0.0", - "xtend": "4.0.1" + "joi": "^6.10.1", + "jws": "^3.1.4", + "lodash.once": "^4.0.0", + "ms": "^2.0.0", + "xtend": "^4.0.1" } }, "jsprim": { @@ -7716,7 +7716,7 @@ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", "dev": true, "requires": { - "array-includes": "3.0.3" + "array-includes": "^3.0.3" } }, "jwa": { @@ -7727,7 +7727,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "jws": { @@ -7735,9 +7735,9 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", "requires": { - "base64url": "2.0.0", - "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "base64url": "^2.0.0", + "jwa": "^1.1.4", + "safe-buffer": "^5.0.1" } }, "keyv": { @@ -7753,7 +7753,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "klaw": { @@ -7762,7 +7762,7 @@ "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "later": { @@ -7776,7 +7776,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -7789,7 +7789,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "left-pad": { @@ -7810,8 +7810,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "libphonenumber-js": { @@ -7819,11 +7819,11 @@ "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.0.24.tgz", "integrity": "sha512-Gg5gXRYFFyMPyNtF8Zdy6PaE99RW2wj1Ul4C2bJAnarXjgAHYa3QwFukC2QSRdsVyDLfmebltEKApRyi9+bJ1w==", "requires": { - "babel-runtime": "6.26.0", - "bluebird": "3.5.1", - "minimist": "1.2.0", - "semver-compare": "1.0.0", - "xml2js": "0.4.19" + "babel-runtime": "^6.6.1", + "bluebird": "^3.4.6", + "minimist": "^1.2.0", + "semver-compare": "^1.0.0", + "xml2js": "^0.4.17" }, "dependencies": { "bluebird": { @@ -7843,10 +7843,10 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -7854,8 +7854,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lockfile": { @@ -7864,7 +7864,7 @@ "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "dev": true, "requires": { - "signal-exit": "3.0.2" + "signal-exit": "^3.0.2" } }, "lodash": { @@ -7882,10 +7882,10 @@ "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", "requires": { - "lodash._baseisequal": "3.0.7", - "lodash._bindcallback": "3.0.1", - "lodash.isarray": "3.0.4", - "lodash.pairs": "3.0.1" + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.pairs": "^3.0.0" } }, "lodash._baseeach": { @@ -7893,7 +7893,7 @@ "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", "requires": { - "lodash.keys": "3.1.2" + "lodash.keys": "^3.0.0" } }, "lodash._basefind": { @@ -7911,9 +7911,9 @@ "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", "requires": { - "lodash.isarray": "3.0.4", - "lodash.istypedarray": "3.0.6", - "lodash.keys": "3.1.2" + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._baseismatch": { @@ -7921,7 +7921,7 @@ "resolved": "https://registry.npmjs.org/lodash._baseismatch/-/lodash._baseismatch-3.1.3.tgz", "integrity": "sha1-Byj8SO+hFpnT1fLXMEnyqxPED9U=", "requires": { - "lodash._baseisequal": "3.0.7" + "lodash._baseisequal": "^3.0.0" } }, "lodash._basematches": { @@ -7929,8 +7929,8 @@ "resolved": "https://registry.npmjs.org/lodash._basematches/-/lodash._basematches-3.2.0.tgz", "integrity": "sha1-9H4D8H7CB4SrCWjQy2y1l+IQEVg=", "requires": { - "lodash._baseismatch": "3.1.3", - "lodash.pairs": "3.0.1" + "lodash._baseismatch": "^3.0.0", + "lodash.pairs": "^3.0.0" } }, "lodash._bindcallback": { @@ -7992,8 +7992,8 @@ "resolved": "https://registry.npmjs.org/lodash.findwhere/-/lodash.findwhere-3.1.0.tgz", "integrity": "sha1-eTfTTz6sgY3sf6lOjKXib9uhz8E=", "requires": { - "lodash._basematches": "3.2.0", - "lodash.find": "3.2.1" + "lodash._basematches": "^3.0.0", + "lodash.find": "^3.0.0" }, "dependencies": { "lodash.find": { @@ -8001,12 +8001,12 @@ "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-3.2.1.tgz", "integrity": "sha1-BG4xnzrOkSrGySRsf2g8XsB7Nq0=", "requires": { - "lodash._basecallback": "3.3.1", - "lodash._baseeach": "3.0.4", - "lodash._basefind": "3.0.0", - "lodash._basefindindex": "3.6.0", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" + "lodash._basecallback": "^3.0.0", + "lodash._baseeach": "^3.0.0", + "lodash._basefind": "^3.0.0", + "lodash._basefindindex": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" } } } @@ -8094,9 +8094,9 @@ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.merge": { @@ -8124,7 +8124,7 @@ "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", "requires": { - "lodash.keys": "3.1.2" + "lodash.keys": "^3.0.0" } }, "lodash.pick": { @@ -8149,8 +8149,8 @@ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { @@ -8158,7 +8158,7 @@ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", "requires": { - "lodash._reinterpolate": "3.0.0" + "lodash._reinterpolate": "~3.0.0" } }, "lodash.throttle": { @@ -8196,7 +8196,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lowercase-keys": { @@ -8209,8 +8209,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "macos-release": { @@ -8224,7 +8224,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -8240,7 +8240,7 @@ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.4" + "tmpl": "1.0.x" } }, "map-cache": { @@ -8261,7 +8261,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "marked": { @@ -8288,9 +8288,9 @@ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "1.1.6" + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" } }, "md5-file": { @@ -8299,7 +8299,7 @@ "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", "dev": true, "requires": { - "buffer-alloc": "1.1.0" + "buffer-alloc": "^1.1.0" } }, "media-typer": { @@ -8312,7 +8312,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "merge": { @@ -8332,7 +8332,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.1" } }, "message-box": { @@ -8340,8 +8340,8 @@ "resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.0.tgz", "integrity": "sha512-SPLfVDEM2YcAgV2IB0B5vOGjvqXSSw7ZibEeXcff8HYpxyG1Uj+XjgnGUGyR1C0EQCvPI3MBx3p7opt2CIQ2hw==", "requires": { - "lodash.merge": "4.6.1", - "lodash.template": "4.4.0" + "lodash.merge": "^4.6.0", + "lodash.template": "^4.4.0" } }, "meteor-node-stubs": { @@ -8349,28 +8349,28 @@ "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.3.2.tgz", "integrity": "sha512-l93SS/HutbqBRJODO2m7hup8cYI2acF5bB39+ZvP2BX8HMmCSCXeFH7v0sr4hD7zrVvHQA5UqS0pcDYKn0VM6g==", "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", - "events": "1.1.1", - "http-browserify": "1.7.0", + "assert": "^1.4.1", + "browserify-zlib": "^0.1.4", + "buffer": "^4.9.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.7", + "events": "^1.1.1", + "http-browserify": "^1.7.0", "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "os-browserify": "^0.2.1", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", + "process": "^0.11.9", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "stream-browserify": "2.0.1", - "string_decoder": "1.0.3", - "timers-browserify": "1.4.2", + "stream-browserify": "^2.0.1", + "string_decoder": "^1.0.1", + "timers-browserify": "^1.4.2", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { @@ -8384,9 +8384,9 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -8417,7 +8417,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -8431,12 +8431,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.0.tgz", "integrity": "sha512-W2bIMLYoZ9oow7TyePpMJk9l9LY7O3R61a/68bVCDOtnJynnwe3ZeW2IzzSkrQnPKNdJrxVDn3ALZNisSBwb7g==", "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -8444,9 +8444,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "requires": { - "browserify-aes": "1.1.0", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -8454,9 +8454,9 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -8464,8 +8464,8 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -8473,13 +8473,13 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.1", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -8487,7 +8487,7 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" } }, "buffer": { @@ -8495,9 +8495,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-xor": { @@ -8510,8 +8510,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "concat-map": { @@ -8524,7 +8524,7 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constants-browserify": { @@ -8537,8 +8537,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-hash": { @@ -8546,10 +8546,10 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.1", - "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -8557,12 +8557,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.1", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "crypto-browserify": { @@ -8570,16 +8570,16 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.1", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0" } }, "date-now": { @@ -8592,8 +8592,8 @@ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "diffie-hellman": { @@ -8601,9 +8601,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "domain-browser": { @@ -8616,13 +8616,13 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "events": { @@ -8635,8 +8635,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "fs.realpath": { @@ -8649,12 +8649,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "hash-base": { @@ -8662,7 +8662,7 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "requires": { - "inherits": "2.0.1" + "inherits": "^2.0.1" } }, "hash.js": { @@ -8670,8 +8670,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" }, "dependencies": { "inherits": { @@ -8686,9 +8686,9 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "http-browserify": { @@ -8696,8 +8696,8 @@ "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", "requires": { - "Base64": "0.2.1", - "inherits": "2.0.1" + "Base64": "~0.2.0", + "inherits": "~2.0.1" } }, "https-browserify": { @@ -8720,8 +8720,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -8739,8 +8739,8 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.1" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" }, "dependencies": { "hash-base": { @@ -8748,8 +8748,8 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -8759,8 +8759,8 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "minimalistic-assert": { @@ -8778,7 +8778,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "once": { @@ -8786,7 +8786,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-browserify": { @@ -8804,11 +8804,11 @@ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.1.0", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "path-browserify": { @@ -8826,11 +8826,11 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "process": { @@ -8848,11 +8848,11 @@ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { @@ -8875,18 +8875,19 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "readable-stream": { "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "requires": { - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "from": "readable-stream@git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "requires": { + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.0", + "util-deprecate": "~1.0.1" }, "dependencies": { "inherits": { @@ -8901,7 +8902,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "ripemd160": { @@ -8909,8 +8910,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.1" + "hash-base": "^2.0.0", + "inherits": "^2.0.1" } }, "safe-buffer": { @@ -8923,8 +8924,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "stream-browserify": { @@ -8932,8 +8933,8 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "requires": { - "inherits": "2.0.1", - "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "string_decoder": { @@ -8941,7 +8942,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "timers-browserify": { @@ -8949,7 +8950,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "requires": { - "process": "0.11.10" + "process": "~0.11.0" } }, "tty-browserify": { @@ -9017,19 +9018,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { @@ -9047,7 +9048,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "mimic-fn": { @@ -9065,7 +9066,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -9078,7 +9079,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", "integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", "requires": { - "yallist": "3.0.2" + "yallist": "^3.0.0" }, "dependencies": { "yallist": { @@ -9093,7 +9094,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { - "minipass": "2.2.1" + "minipass": "^2.2.1" } }, "mixin-deep": { @@ -9102,8 +9103,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -9112,7 +9113,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -9123,8 +9124,8 @@ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, "requires": { - "for-in": "0.1.8", - "is-extendable": "0.1.1" + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" }, "dependencies": { "for-in": { @@ -9158,7 +9159,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", "requires": { - "moment": "2.20.1" + "moment": ">= 2.9.0" } }, "mongo-object": { @@ -9166,10 +9167,10 @@ "resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.1.2.tgz", "integrity": "sha512-xRrnal5HuCz3we8Bzk17iYfgCMfaaSU+cq0OkQ/PP+CYhhFmw4Joqmcc0R9XUAgxbFAybg7uzxbNGUw13kEUxQ==", "requires": { - "lodash.foreach": "4.5.0", - "lodash.isempty": "4.4.0", - "lodash.isobject": "3.0.2", - "lodash.without": "4.4.0" + "lodash.foreach": "^4.5.0", + "lodash.isempty": "^4.4.0", + "lodash.isobject": "^3.0.2", + "lodash.without": "^4.4.0" } }, "mongodb": { @@ -9185,8 +9186,8 @@ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.5.tgz", "integrity": "sha512-4A1nx/xAU5d/NPICjiyzVxzNrIdJQQsYRe3xQkV1O638t+fHHfAOLK+SQagqGnu1m0aeSxb1ixp/P0FGSQWIGA==", "requires": { - "bson": "1.0.6", - "require_optional": "1.0.1" + "bson": "~1.0.4", + "require_optional": "^1.0.1" } }, "mongodb-memory-server": { @@ -9195,19 +9196,19 @@ "integrity": "sha512-8CNbBV80cBradJEuyAl+Vw45Wf0MJYTplDphGE9z3qqaQVRYG25PhZ2Uk+kyVVF6HqF4obe+meCMpoOoeXwJ8w==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "debug": "3.1.0", - "decompress": "4.2.0", - "fs-extra": "5.0.0", - "get-port": "3.2.0", - "getos": "3.1.0", - "lockfile": "1.0.4", - "md5-file": "3.2.3", - "mkdirp": "0.5.1", - "request": "2.86.0", - "request-promise": "4.2.2", - "tmp": "0.0.33", - "uuid": "3.2.1" + "babel-runtime": "^6.26.0", + "debug": "^3.1.0", + "decompress": "^4.2.0", + "fs-extra": "^5.0.0", + "get-port": "^3.2.0", + "getos": "^3.1.0", + "lockfile": "^1.0.4", + "md5-file": "^3.2.3", + "mkdirp": "^0.5.1", + "request": "^2.85.0", + "request-promise": "^4.2.2", + "tmp": "^0.0.33", + "uuid": "^3.2.1" }, "dependencies": { "debug": { @@ -9225,27 +9226,27 @@ "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "uuid": { @@ -9273,9 +9274,9 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" }, "dependencies": { "glob": { @@ -9284,11 +9285,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "rimraf": { @@ -9297,7 +9298,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "6.0.4" + "glob": "^6.0.1" } } } @@ -9313,18 +9314,18 @@ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "arr-diff": { @@ -9365,10 +9366,10 @@ "integrity": "sha512-1azpqq1JvHKZNPEixS1jNEXf4kDilhFtr8AIZIGjP8N0TcAcUhKgi354niI5pM4JoOsMQ+H6vzCYWQa95LQjcw==", "dev": true, "requires": { - "nomnom": "1.6.2", - "railroad-diagrams": "1.0.0", + "nomnom": "~1.6.2", + "railroad-diagrams": "^1.0.0", "randexp": "0.4.6", - "semver": "5.4.1" + "semver": "^5.4.1" } }, "needle": { @@ -9377,9 +9378,9 @@ "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "negotiator": { @@ -9398,9 +9399,9 @@ "resolved": "https://registry.npmjs.org/nexmo/-/nexmo-2.2.0.tgz", "integrity": "sha512-7D/QVyQakLJ8M40hANSvINzswK/3XWfml0hY7Ce2pwn5Kinu5UL5i5+nobnvvftoi0mv1Sx288+fmVEqJkh0Mw==", "requires": { - "jsonwebtoken": "7.4.3", - "request": "2.83.0", - "uuid": "2.0.3" + "jsonwebtoken": "^7.1.9", + "request": "^2.83.0", + "uuid": "^2.0.2" }, "dependencies": { "uuid": { @@ -9415,15 +9416,15 @@ "resolved": "https://registry.npmjs.org/nock/-/nock-9.1.6.tgz", "integrity": "sha512-DuKF+1W/FnMO6MXIGgCIWcM95bETjBbmFdR4v7dAj1zH9a9XhOjAa//PuWh98XIXxcZt7wdiv0JlO0AA0e2kqQ==", "requires": { - "chai": "3.5.0", - "debug": "2.6.9", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.5", - "mkdirp": "0.5.1", + "chai": ">=1.9.2 <4.0.0", + "debug": "^2.2.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "~4.17.2", + "mkdirp": "^0.5.0", "propagate": "0.4.0", - "qs": "6.5.1", - "semver": "5.4.1" + "qs": "^6.5.1", + "semver": "^5.3.0" }, "dependencies": { "chai": { @@ -9431,9 +9432,9 @@ "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "requires": { - "assertion-error": "1.1.0", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" } } } @@ -9453,9 +9454,9 @@ "resolved": "https://registry.npmjs.org/node-geocoder/-/node-geocoder-3.22.0.tgz", "integrity": "sha512-w7ew1vH6IjkhexoxcJ2aFBMMHdfS/VY5xiJ29jd6ml3l5nitySLeJ2vc5IxEfhgq2sZvh7mBk9dJlMqKEKBqJg==", "requires": { - "bluebird": "3.5.1", - "request": "2.83.0", - "request-promise": "4.2.2" + "bluebird": "^3.4.6", + "request": "^2.74.0", + "request-promise": "^4.1.1" }, "dependencies": { "bluebird": { @@ -9483,10 +9484,10 @@ "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { - "growly": "1.3.0", - "semver": "5.4.1", - "shellwords": "0.1.1", - "which": "1.3.0" + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" } }, "node-pre-gyp": { @@ -9496,17 +9497,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.3", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.6", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.4.1", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" }, "dependencies": { "ajv": { @@ -9516,8 +9517,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -9540,7 +9541,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -9549,7 +9550,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -9559,9 +9560,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -9578,8 +9579,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -9588,10 +9589,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -9607,9 +9608,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "nopt": { @@ -9619,8 +9620,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "performance-now": { @@ -9644,28 +9645,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "sntp": { @@ -9674,7 +9675,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "tar": { @@ -9684,9 +9685,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } } } @@ -9702,16 +9703,16 @@ "integrity": "sha512-v1fVfgaZanBHP/ZOc9V72uKKIF4dcRfZV7GISNVi/w/g5pwB7nIvOK+RGULjrzhs97cwUX41cM4+dlw+bg2igw==", "dev": true, "requires": { - "chokidar": "2.0.2", - "debug": "3.1.0", - "ignore-by-default": "1.0.1", - "minimatch": "3.0.4", - "pstree.remy": "1.1.0", - "semver": "5.5.0", - "supports-color": "5.2.0", - "touch": "3.1.0", - "undefsafe": "2.0.2", - "update-notifier": "2.3.0" + "chokidar": "^2.0.2", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.0", + "semver": "^5.5.0", + "supports-color": "^5.2.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^2.3.0" }, "dependencies": { "anymatch": { @@ -9720,8 +9721,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.9", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "arr-diff": { @@ -9742,18 +9743,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -9762,7 +9763,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -9771,7 +9772,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9782,18 +9783,18 @@ "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.0.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" } }, "debug": { @@ -9811,13 +9812,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "debug": { @@ -9835,7 +9836,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -9844,7 +9845,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-descriptor": { @@ -9853,9 +9854,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -9872,14 +9873,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -9888,7 +9889,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -9897,7 +9898,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9908,10 +9909,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -9920,7 +9921,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9931,8 +9932,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -9941,7 +9942,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -9952,7 +9953,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -9961,7 +9962,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -9972,7 +9973,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -9981,7 +9982,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -9998,7 +9999,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-number": { @@ -10007,7 +10008,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -10016,7 +10017,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -10039,19 +10040,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "semver": { @@ -10068,8 +10069,8 @@ "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", "dev": true, "requires": { - "colors": "0.5.1", - "underscore": "1.4.4" + "colors": "0.5.x", + "underscore": "~1.4.4" } }, "nopt": { @@ -10078,7 +10079,7 @@ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -10086,10 +10087,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -10098,7 +10099,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-range": { @@ -10111,9 +10112,9 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.0", - "sort-keys": "2.0.0" + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" } }, "nouislider": { @@ -10131,7 +10132,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npmlog": { @@ -10141,10 +10142,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "nth-check": { @@ -10153,7 +10154,7 @@ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "dev": true, "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "num2fraction": { @@ -10188,9 +10189,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -10199,7 +10200,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -10208,7 +10209,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-data-descriptor": { @@ -10217,7 +10218,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -10226,9 +10227,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -10264,7 +10265,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -10280,10 +10281,10 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, "object.entries": { @@ -10291,10 +10292,10 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" } }, "object.getownpropertydescriptors": { @@ -10303,8 +10304,8 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, "object.omit": { @@ -10313,8 +10314,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -10323,7 +10324,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -10339,10 +10340,10 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" } }, "on-finished": { @@ -10358,7 +10359,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -10367,7 +10368,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "opn": { @@ -10376,7 +10377,7 @@ "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { - "is-wsl": "1.1.0" + "is-wsl": "^1.1.0" } }, "optimist": { @@ -10384,8 +10385,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.2" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "optionator": { @@ -10394,12 +10395,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -10420,9 +10421,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -10435,8 +10436,8 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "output-file-sync": { @@ -10445,9 +10446,9 @@ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "is-plain-obj": "1.1.0", - "mkdirp": "0.5.1" + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" } }, "p-cancelable": { @@ -10475,7 +10476,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "p-timeout": { @@ -10483,7 +10484,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "pac-proxy-agent": { @@ -10492,14 +10493,14 @@ "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", "dev": true, "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0", - "get-uri": "2.0.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "pac-resolver": "3.0.0", - "raw-body": "2.3.2", - "socks-proxy-agent": "3.0.1" + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^3.0.0" }, "dependencies": { "debug": { @@ -10519,11 +10520,11 @@ "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", "dev": true, "requires": { - "co": "4.6.0", - "degenerator": "1.0.4", - "ip": "1.1.5", - "netmask": "1.0.6", - "thunkify": "2.1.2" + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" } }, "package-json": { @@ -10532,10 +10533,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.4.1" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { "got": { @@ -10544,17 +10545,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "prepend-http": { @@ -10569,7 +10570,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } } } @@ -10580,10 +10581,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -10591,7 +10592,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse-passwd": { @@ -10606,7 +10607,7 @@ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "9.4.6" + "@types/node": "*" } }, "parseurl": { @@ -10676,7 +10677,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pathval": { @@ -10691,7 +10692,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "paypal-rest-sdk": { @@ -10699,8 +10700,8 @@ "resolved": "https://registry.npmjs.org/paypal-rest-sdk/-/paypal-rest-sdk-1.8.1.tgz", "integrity": "sha512-Trj2GuPn10GqpICAxQh5wjxuDT7rq7DMOkvyatz05wI5xPGmqXN7UC0WfDSF9WSBs4YdcWZP0g+nY+sOdaFggw==", "requires": { - "buffer-crc32": "0.2.13", - "semver": "5.4.1" + "buffer-crc32": "^0.2.3", + "semver": "^5.0.3" } }, "pend": { @@ -10729,7 +10730,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pirates": { @@ -10738,7 +10739,7 @@ "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", "dev": true, "requires": { - "node-modules-regexp": "1.0.0" + "node-modules-regexp": "^1.0.0" } }, "pkg-dir": { @@ -10747,7 +10748,7 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" }, "dependencies": { "find-up": { @@ -10756,8 +10757,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "path-exists": { @@ -10766,7 +10767,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } } } @@ -10777,7 +10778,7 @@ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "pluralize": { @@ -10808,9 +10809,9 @@ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", "requires": { - "chalk": "2.3.1", - "source-map": "0.6.1", - "supports-color": "5.2.0" + "chalk": "^2.3.1", + "source-map": "^0.6.1", + "supports-color": "^5.2.0" } }, "postcss-value-parser": { @@ -10842,8 +10843,8 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -10861,7 +10862,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -10869,7 +10870,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -10877,9 +10878,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -10892,8 +10893,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -10901,10 +10902,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -10917,9 +10918,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "performance-now": { @@ -10937,28 +10938,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "sntp": { @@ -10966,7 +10967,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } } } @@ -10983,8 +10984,8 @@ "integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==", "dev": true, "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.0" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" }, "dependencies": { "ansi-regex": { @@ -11016,7 +11017,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "prop-types": { @@ -11024,9 +11025,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "fbjs": "^0.8.16", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" }, "dependencies": { "core-js": { @@ -11039,8 +11040,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } } } @@ -11050,8 +11051,8 @@ "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.1.2.tgz", "integrity": "sha512-3x4BWv7w2luSStiHwSzrhK9U1sm+vHwSyg9le2RfY41pZyJdiPKDOKh6TCQywwl++SCr7MMKu7POp4LU/L/eIA==", "requires": { - "has": "1.0.1", - "object.assign": "4.1.0" + "has": "^1.0.1", + "object.assign": "^4.1.0" } }, "propagate": { @@ -11064,7 +11065,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.6.0" } }, @@ -11074,14 +11075,14 @@ "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==", "dev": true, "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "pac-proxy-agent": "2.0.2", - "proxy-from-env": "1.0.0", - "socks-proxy-agent": "3.0.1" + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^2.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^3.0.0" }, "dependencies": { "debug": { @@ -11099,8 +11100,8 @@ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } } } @@ -11117,7 +11118,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "3.3.4" + "event-stream": "~3.3.0" } }, "pseudomap": { @@ -11131,7 +11132,7 @@ "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "dev": true, "requires": { - "ps-tree": "1.1.0" + "ps-tree": "^1.1.0" } }, "pump": { @@ -11139,8 +11140,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -11148,9 +11149,9 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "punycode": { @@ -11163,9 +11164,9 @@ "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=", "requires": { - "asap": "2.0.6", - "pop-iterate": "1.0.1", - "weak-map": "1.0.5" + "asap": "^2.0.0", + "pop-iterate": "^1.0.1", + "weak-map": "^1.0.5" } }, "qs": { @@ -11178,7 +11179,7 @@ "resolved": "https://registry.npmjs.org/query-parse/-/query-parse-2.0.0.tgz", "integrity": "sha512-mabTzsUZo6OnNvJ7zr6v0cCVtxZT7ZUw/39wJU33c8VOFYRqW9+eNkWNhsfGqTc2OKZaghbWjn6Cwtut+FzsdA==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.4" } }, "query-string": { @@ -11186,9 +11187,9 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "querystring": { @@ -11201,9 +11202,9 @@ "resolved": "https://registry.npmjs.org/radium/-/radium-0.22.0.tgz", "integrity": "sha512-9zOYegr4gXfgDiVcf02Qyj8zzupmYSTtIhxvSU/42Ls1Q/+r1cisuGUUJ5m06Ha2cc/f3e5vMM80rj2l34Slew==", "requires": { - "exenv": "1.2.2", - "inline-style-prefixer": "4.0.0", - "prop-types": "15.6.0" + "exenv": "^1.2.1", + "inline-style-prefixer": "^4.0.0", + "prop-types": "^15.5.8" } }, "raf": { @@ -11212,7 +11213,7 @@ "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "dev": true, "requires": { - "performance-now": "2.1.0" + "performance-now": "^2.1.0" } }, "railroad-diagrams": { @@ -11233,7 +11234,7 @@ "dev": true, "requires": { "discontinuous-range": "1.0.0", - "ret": "0.1.15" + "ret": "~0.1.10" } }, "randomatic": { @@ -11242,8 +11243,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -11252,7 +11253,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11261,7 +11262,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11272,7 +11273,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11299,10 +11300,10 @@ "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -11318,10 +11319,10 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" } }, "react-addons-create-fragment": { @@ -11329,9 +11330,9 @@ "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz", "integrity": "sha1-o5TefCx77Na1R1uhuXrEcs58dPg=", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "fbjs": "^0.8.4", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.0" } }, "react-addons-pure-render-mixin": { @@ -11339,8 +11340,8 @@ "resolved": "https://registry.npmjs.org/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.6.2.tgz", "integrity": "sha1-a4P0C2s27kBzXL1hJes/E84c3ck=", "requires": { - "fbjs": "0.8.16", - "object-assign": "4.1.1" + "fbjs": "^0.8.4", + "object-assign": "^4.1.0" } }, "react-addons-shallow-compare": { @@ -11348,8 +11349,8 @@ "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", "requires": { - "fbjs": "0.8.16", - "object-assign": "4.1.1" + "fbjs": "^0.8.4", + "object-assign": "^4.1.0" }, "dependencies": { "core-js": { @@ -11362,8 +11363,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } } } @@ -11379,9 +11380,9 @@ "resolved": "https://registry.npmjs.org/react-autosuggest/-/react-autosuggest-9.3.3.tgz", "integrity": "sha512-g0W1x2+PfWWcEsz2r7sCPv1Dpwq6eH0uysFLwI4iVKfPxZkHvRL2tjRvnoFVfrP6/61lfqII4pOKh1V1S4VPrQ==", "requires": { - "prop-types": "15.6.0", - "react-autowhatever": "10.1.0", - "shallow-equal": "1.0.0" + "prop-types": "^15.5.10", + "react-autowhatever": "^10.1.0", + "shallow-equal": "^1.0.0" } }, "react-autowhatever": { @@ -11389,9 +11390,9 @@ "resolved": "https://registry.npmjs.org/react-autowhatever/-/react-autowhatever-10.1.0.tgz", "integrity": "sha512-LMZggoRgcmldAMyABY3Dz/DRiTQViMsQllXtOsDrZeBRwPIfn0RAOySaQMUNyECrHaCB5pm66jgQvkyNSh/BjA==", "requires": { - "prop-types": "15.6.0", - "react-themeable": "1.1.0", - "section-iterator": "2.0.0" + "prop-types": "^15.5.8", + "react-themeable": "^1.1.0", + "section-iterator": "^2.0.0" } }, "react-avatar": { @@ -11399,9 +11400,9 @@ "resolved": "https://registry.npmjs.org/react-avatar/-/react-avatar-2.5.1.tgz", "integrity": "sha512-bwH5pWY6uxaKZt+IZBfD+SU3Dpy3FaKbmAzrOI4N8SATUPLXOdGaJHWUl6Vl8hHSwWSsoLh/m7xYHdnn0lofZw==", "requires": { - "babel-runtime": "6.26.0", - "is-retina": "1.0.3", - "md5": "2.2.1" + "babel-runtime": ">=5.0.0", + "is-retina": "^1.0.3", + "md5": "^2.0.0" } }, "react-color": { @@ -11409,11 +11410,11 @@ "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.13.8.tgz", "integrity": "sha1-vMWPeaciub/DfEAuaM0Y8mlwruQ=", "requires": { - "lodash": "4.17.5", - "material-colors": "1.2.5", - "prop-types": "15.6.0", - "reactcss": "1.2.3", - "tinycolor2": "1.4.1" + "lodash": "^4.0.1", + "material-colors": "^1.2.1", + "prop-types": "^15.5.10", + "reactcss": "^1.2.0", + "tinycolor2": "^1.4.1" } }, "react-copy-to-clipboard": { @@ -11421,8 +11422,8 @@ "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz", "integrity": "sha512-ELKq31/E3zjFs5rDWNCfFL4NvNFQvGRoJdAKReD/rUPA+xxiLPQmZBZBvy2vgH7V0GE9isIQpT9WXbwIVErYdA==", "requires": { - "copy-to-clipboard": "3.0.8", - "prop-types": "15.6.0" + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" } }, "react-cursor-position": { @@ -11430,9 +11431,9 @@ "resolved": "https://registry.npmjs.org/react-cursor-position/-/react-cursor-position-2.4.0.tgz", "integrity": "sha512-uwYtWzfdQYqeTcBHFjzwLJNmxec2YQjSFPintG2hiVNKwIr1tE0RJsFIpqGzZL0ZhWiyg0BOSVPCZ8XSINl3PQ==", "requires": { - "object-assign": "4.1.1", - "object.omit": "3.0.0", - "prop-types": "15.6.0" + "object-assign": "^4.1.1", + "object.omit": "^3.0.0", + "prop-types": "^15.6.0" }, "dependencies": { "is-extendable": { @@ -11440,7 +11441,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } }, "object.omit": { @@ -11448,7 +11449,7 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", "requires": { - "is-extendable": "1.0.1" + "is-extendable": "^1.0.0" } } } @@ -11458,18 +11459,18 @@ "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-16.3.6.tgz", "integrity": "sha512-wVvyRFKyLk/txS19AK/dqU40fwhTNc/+kwikzTTcrsdM7fa8AJAwmB2MrKeu3h+Fk4aILm9JSDXtmp1JQrrVpA==", "requires": { - "airbnb-prop-types": "2.8.1", - "consolidated-events": "1.1.1", - "is-touch-device": "1.0.1", - "lodash": "4.17.5", - "object.assign": "4.1.0", - "object.values": "1.0.4", - "prop-types": "15.6.0", - "react-addons-shallow-compare": "15.6.2", - "react-moment-proptypes": "1.5.0", - "react-portal": "4.1.3", - "react-with-styles": "3.1.0", - "react-with-styles-interface-css": "4.0.1" + "airbnb-prop-types": "^2.8.1", + "consolidated-events": "^1.1.1", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.0", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.5.0", + "react-portal": "^4.1.2", + "react-with-styles": "^3.1.0", + "react-with-styles-interface-css": "^4.0.1" } }, "react-dnd": { @@ -11477,12 +11478,12 @@ "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.5.4.tgz", "integrity": "sha512-y9YmnusURc+3KPgvhYKvZ9oCucj51MSZWODyaeV0KFU0cquzA7dCD1g/OIYUKtNoZ+MXtacDngkdud2TklMSjw==", "requires": { - "disposables": "1.0.1", - "dnd-core": "2.5.4", - "hoist-non-react-statics": "2.3.1", - "invariant": "2.2.2", - "lodash": "4.17.5", - "prop-types": "15.6.0" + "disposables": "^1.0.1", + "dnd-core": "^2.5.4", + "hoist-non-react-statics": "^2.1.0", + "invariant": "^2.1.0", + "lodash": "^4.2.0", + "prop-types": "^15.5.10" } }, "react-dnd-html5-backend": { @@ -11490,7 +11491,7 @@ "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz", "integrity": "sha512-jDqAkm/hI8Tl4HcsbhkBgB6HgpJR1e+ML1SbfxaegXYiuMxEVQm0FOwEH5WxUoo6fmIG4N+H0rSm59POuZOCaA==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "react-dom": { @@ -11498,10 +11499,10 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" } }, "react-dropzone": { @@ -11509,8 +11510,8 @@ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-4.2.8.tgz", "integrity": "sha512-L/q6ySfhdG9Md3P21jFumzlm92TxRT0FtYX6G793Nf8bt7Fzpwx6gJsPk0idV094koj/Y5vRpp0q9+e0bdsjxw==", "requires": { - "attr-accept": "1.1.2", - "prop-types": "15.6.0" + "attr-accept": "^1.0.3", + "prop-types": "^15.5.7" } }, "react-helmet": { @@ -11518,10 +11519,10 @@ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", "requires": { - "deep-equal": "1.0.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0", - "react-side-effect": "1.1.3" + "deep-equal": "^1.0.1", + "object-assign": "^4.1.1", + "prop-types": "^15.5.4", + "react-side-effect": "^1.1.0" } }, "react-image-magnify": { @@ -11542,7 +11543,7 @@ "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.1.tgz", "integrity": "sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA==", "requires": { - "prop-types": "15.6.0" + "prop-types": "^15.5.8" } }, "react-loadable": { @@ -11550,7 +11551,7 @@ "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.3.1.tgz", "integrity": "sha1-lpnpoI/tSbrNacqqKCA0tip2vN0=", "requires": { - "prop-types": "15.6.0" + "prop-types": "^15.5.0" } }, "react-measure": { @@ -11558,9 +11559,9 @@ "resolved": "https://registry.npmjs.org/react-measure/-/react-measure-2.0.2.tgz", "integrity": "sha1-ByqaX6/AHfutwfpfsJ/DUQN/Y2w=", "requires": { - "get-node-dimensions": "1.2.0", - "prop-types": "15.6.0", - "resize-observer-polyfill": "1.4.2" + "get-node-dimensions": "^1.2.0", + "prop-types": "^15.5.10", + "resize-observer-polyfill": "^1.4.2" } }, "react-moment-proptypes": { @@ -11568,7 +11569,7 @@ "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.5.0.tgz", "integrity": "sha512-0dQJNs0aaiMeGp1AJACDTzGMM7N4qv4Wgg1948/ARdLt3VKlkcem6Yjm5ExUmUtoXk6WpSXvFQ204l7E+RTEEQ==", "requires": { - "moment": "2.20.1" + "moment": ">=1.6.0" } }, "react-nouislider": { @@ -11576,7 +11577,7 @@ "resolved": "https://registry.npmjs.org/react-nouislider/-/react-nouislider-2.0.1.tgz", "integrity": "sha512-/K5cHKkvsvZ/fwgFATxkORAEtuiWVrQOqNchEInRn7qlv9mDh+LEq+NydFu91v7Cy2XjHzVPD9ZU12wg5t9yCg==", "requires": { - "nouislider": "9.2.0" + "nouislider": "^9.2.0" } }, "react-onclickoutside": { @@ -11589,7 +11590,7 @@ "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.1.3.tgz", "integrity": "sha512-0JHna4qv6LhkQfBg2/Ket0NsVAOHezBtInNlr1XHDEPR4LplUWuY5oJ4ysHCMxHpP2Rtd3B44SRUAnHmOzOCaA==", "requires": { - "prop-types": "15.6.0" + "prop-types": "^15.5.8" } }, "react-required-if": { @@ -11602,13 +11603,13 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", "requires": { - "history": "4.7.2", - "hoist-non-react-statics": "2.3.1", - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "path-to-regexp": "1.7.0", - "prop-types": "15.6.0", - "warning": "3.0.0" + "history": "^4.7.2", + "hoist-non-react-statics": "^2.3.0", + "invariant": "^2.2.2", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.5.4", + "warning": "^3.0.0" }, "dependencies": { "isarray": { @@ -11631,12 +11632,12 @@ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", "requires": { - "history": "4.7.2", - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "prop-types": "15.6.0", - "react-router": "4.2.0", - "warning": "3.0.0" + "history": "^4.7.2", + "invariant": "^2.2.2", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.4", + "react-router": "^4.2.0", + "warning": "^3.0.0" } }, "react-s-alert": { @@ -11644,7 +11645,7 @@ "resolved": "https://registry.npmjs.org/react-s-alert/-/react-s-alert-1.4.1.tgz", "integrity": "sha512-+cSpVPe6YeGklhlo7zbVlB0Z6jdiU9HPmEVzp5nIhNm9lvdL7rVO2Jx09pCwT99GmODyoN0iNhbQku6r7six8A==", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.23.0" } }, "react-select": { @@ -11652,9 +11653,9 @@ "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.2.1.tgz", "integrity": "sha512-vaCgT2bEl+uTyE/uKOEgzE5Dc/wLtzhnBvoHCeuLoJWc4WuadN6WQDhoL42DW+TziniZK2Gaqe/wUXydI3NSaQ==", "requires": { - "classnames": "2.2.5", - "prop-types": "15.6.0", - "react-input-autosize": "2.2.1" + "classnames": "^2.2.4", + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.2" } }, "react-side-effect": { @@ -11662,8 +11663,8 @@ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.3.tgz", "integrity": "sha1-USwlq+DewXKDTEAB7FxR4E1BvFw=", "requires": { - "exenv": "1.2.2", - "shallowequal": "1.0.2" + "exenv": "^1.2.1", + "shallowequal": "^1.0.1" } }, "react-table": { @@ -11671,7 +11672,7 @@ "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.7.6.tgz", "integrity": "sha1-P547MIMozrBO+TpHur76uiYZyQU=", "requires": { - "classnames": "2.2.5" + "classnames": "^2.2.5" } }, "react-taco-table": { @@ -11679,13 +11680,13 @@ "resolved": "https://registry.npmjs.org/react-taco-table/-/react-taco-table-0.5.1.tgz", "integrity": "sha1-kOMQ1dXGJzrtIh9lzf7WI9PFiew=", "requires": { - "classnames": "2.2.5", - "d3-format": "1.2.0", - "d3-scale": "1.0.6", - "d3-scale-chromatic": "1.1.1", - "lodash.curry": "4.1.1", - "prop-types": "15.6.0", - "stable": "0.1.6" + "classnames": "^2.2.5", + "d3-format": "^1.0.0", + "d3-scale": "^1.0.0", + "d3-scale-chromatic": "^1.0.0", + "lodash.curry": "^4.0.1", + "prop-types": "^15.5.10", + "stable": "^0.1.5" } }, "react-tether": { @@ -11693,8 +11694,8 @@ "resolved": "https://registry.npmjs.org/react-tether/-/react-tether-0.6.1.tgz", "integrity": "sha512-/1o2d77RyL78S1IjS1+yGMTKSldYMBVtu4H20zNIC9eAGsgA/KMxdLRcE3k32wj4TWCsVMPDnxeTokHuVWNLag==", "requires": { - "prop-types": "15.6.0", - "tether": "1.4.3" + "prop-types": "^15.5.8", + "tether": "^1.4.3" } }, "react-textarea-autosize": { @@ -11702,7 +11703,7 @@ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz", "integrity": "sha512-bx6z2I35aapr71ggw2yZIA4qhmqeTa4ZVsSaTeFvtf9kfcZppDBh2PbMt8lvbdmzEk7qbSFhAxR9vxEVm6oiMg==", "requires": { - "prop-types": "15.6.0" + "prop-types": "^15.6.0" } }, "react-themeable": { @@ -11710,7 +11711,7 @@ "resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz", "integrity": "sha1-fURm3ZsrX6dQWHJ4JenxUro3mg4=", "requires": { - "object-assign": "3.0.0" + "object-assign": "^3.0.0" }, "dependencies": { "object-assign": { @@ -11725,11 +11726,11 @@ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { - "chain-function": "1.0.0", - "dom-helpers": "3.2.1", - "loose-envify": "1.3.1", - "prop-types": "15.6.0", - "warning": "3.0.0" + "chain-function": "^1.0.0", + "dom-helpers": "^3.2.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.6", + "warning": "^3.0.0" } }, "react-with-direction": { @@ -11737,14 +11738,14 @@ "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.3.0.tgz", "integrity": "sha512-2TflEebNckTNUybw3Rzqjg4BwM/H380ZL5lsbZ5f4UTY2JyE5uQdQZK5T2w+BDJSAMcqoA2RDJYa4e7Cl6C2Kg==", "requires": { - "airbnb-prop-types": "2.8.1", - "brcast": "2.0.2", - "deepmerge": "1.5.2", - "direction": "1.0.1", - "hoist-non-react-statics": "2.3.1", - "object.assign": "4.1.0", - "object.values": "1.0.4", - "prop-types": "15.6.0" + "airbnb-prop-types": "^2.8.1", + "brcast": "^2.0.2", + "deepmerge": "^1.5.1", + "direction": "^1.0.1", + "hoist-non-react-statics": "^2.3.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.0" } }, "react-with-styles": { @@ -11752,11 +11753,11 @@ "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.1.0.tgz", "integrity": "sha512-neH8a79MoPGTMhwRstNVRydJaZA2yjwNSBYo1zFjkQZ44EGRUgs/RR2dMdSt2ARa8yGew2rOpeKQOWqaEoqnpw==", "requires": { - "deepmerge": "1.5.2", - "global-cache": "1.2.1", - "hoist-non-react-statics": "2.3.1", - "prop-types": "15.6.0", - "react-with-direction": "1.3.0" + "deepmerge": "^1.5.2", + "global-cache": "^1.2.1", + "hoist-non-react-statics": "^2.3.1", + "prop-types": "^15.6.0", + "react-with-direction": "^1.1.0" } }, "react-with-styles-interface-css": { @@ -11764,9 +11765,9 @@ "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.1.tgz", "integrity": "sha512-kLS+Ytv0/XBph7ovFP/7IazwBD/W/Xo9Zr/90d6QSGCRjhvHZXusFDOzXUwBE1GAkGRjZy+RrgbPad5wKyXclA==", "requires": { - "aphrodite": "1.2.5", - "array.prototype.flatten": "1.2.1", - "global-cache": "1.2.1" + "aphrodite": "^1.2.5", + "array.prototype.flatten": "^1.2.1", + "global-cache": "^1.2.1" } }, "reactcss": { @@ -11774,7 +11775,7 @@ "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.0.1" } }, "read-pkg": { @@ -11782,9 +11783,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -11792,8 +11793,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { @@ -11801,13 +11802,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -11816,10 +11817,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "realpath-native": { @@ -11828,7 +11829,7 @@ "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", "dev": true, "requires": { - "util.promisify": "1.0.0" + "util.promisify": "^1.0.0" } }, "recompose": { @@ -11836,10 +11837,10 @@ "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", "requires": { - "change-emitter": "0.1.6", - "fbjs": "0.8.16", - "hoist-non-react-statics": "2.3.1", - "symbol-observable": "1.0.4" + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "symbol-observable": "^1.0.4" } }, "recursive-readdir": { @@ -11856,10 +11857,10 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "lodash": "4.17.5", - "lodash-es": "4.17.4", - "loose-envify": "1.3.1", - "symbol-observable": "1.0.4" + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" } }, "regenerate": { @@ -11874,7 +11875,7 @@ "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", "dev": true, "requires": { - "regenerate": "1.3.3" + "regenerate": "^1.3.3" } }, "regenerator-runtime": { @@ -11888,7 +11889,7 @@ "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", "dev": true, "requires": { - "private": "0.1.8" + "private": "^0.1.6" } }, "regex-cache": { @@ -11897,7 +11898,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -11906,8 +11907,8 @@ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpp": { @@ -11922,12 +11923,12 @@ "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", "dev": true, "requires": { - "regenerate": "1.3.3", - "regenerate-unicode-properties": "5.1.3", - "regjsgen": "0.3.0", - "regjsparser": "0.2.1", - "unicode-match-property-ecmascript": "1.0.3", - "unicode-match-property-value-ecmascript": "1.0.1" + "regenerate": "^1.3.3", + "regenerate-unicode-properties": "^5.1.1", + "regjsgen": "^0.3.0", + "regjsparser": "^0.2.1", + "unicode-match-property-ecmascript": "^1.0.3", + "unicode-match-property-value-ecmascript": "^1.0.1" } }, "registry-auth-token": { @@ -11936,8 +11937,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -11946,7 +11947,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "^1.0.1" } }, "regjsgen": { @@ -11961,7 +11962,7 @@ "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -11994,7 +11995,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -12002,28 +12003,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-promise": { @@ -12031,10 +12032,10 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", "requires": { - "bluebird": "3.5.1", + "bluebird": "^3.5.0", "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.3" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" }, "dependencies": { "bluebird": { @@ -12049,7 +12050,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "requires": { - "lodash": "4.17.5" + "lodash": "^4.13.1" } }, "request-promise-native": { @@ -12059,8 +12060,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.3" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" } }, "require-directory": { @@ -12085,7 +12086,7 @@ "integrity": "sha1-urQQqxruLz9Vt5MXRR3TQodk5vM=", "dev": true, "requires": { - "x-path": "0.0.2" + "x-path": "^0.0.2" } }, "require-uncached": { @@ -12094,8 +12095,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "require_optional": { @@ -12103,8 +12104,8 @@ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", "requires": { - "resolve-from": "2.0.0", - "semver": "5.4.1" + "resolve-from": "^2.0.0", + "semver": "^5.1.0" }, "dependencies": { "resolve-from": { @@ -12120,7 +12121,7 @@ "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", "dev": true, "requires": { - "underscore": "1.6.0" + "underscore": "~1.6.0" }, "dependencies": { "underscore": { @@ -12147,7 +12148,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-cwd": { @@ -12156,7 +12157,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" }, "dependencies": { "resolve-from": { @@ -12188,7 +12189,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "^1.0.0" } }, "restore-cursor": { @@ -12197,8 +12198,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -12212,8 +12213,8 @@ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", "requires": { - "request": "2.83.0", - "through2": "2.0.3" + "request": "^2.81.0", + "through2": "^2.0.0" } }, "right-align": { @@ -12221,7 +12222,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -12229,7 +12230,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "rootpath": { @@ -12243,8 +12244,8 @@ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", "dev": true, "requires": { - "lodash.flattendeep": "4.4.0", - "nearley": "2.11.1" + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" } }, "run-async": { @@ -12253,7 +12254,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -12268,7 +12269,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -12288,7 +12289,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "sane": { @@ -12297,14 +12298,14 @@ "integrity": "sha512-fW9svvNd81XzHDZyis9/tEY1bZikDGryy8Hi1BErPyNPYv47CdLseUN+tI5FBHWXEENRtj1SWtX/jBnggLaP0w==", "dev": true, "requires": { - "anymatch": "1.3.2", - "exec-sh": "0.2.1", - "fb-watchman": "2.0.0", - "fsevents": "1.1.3", - "minimatch": "3.0.4", - "minimist": "1.2.0", - "walker": "1.0.7", - "watch": "0.18.0" + "anymatch": "^1.3.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.1.1", + "minimatch": "^3.0.2", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" }, "dependencies": { "minimist": { @@ -12347,7 +12348,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "2.8.1" + "commander": "~2.8.1" }, "dependencies": { "commander": { @@ -12356,7 +12357,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } } } @@ -12377,7 +12378,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "^5.0.3" } }, "send": { @@ -12386,18 +12387,18 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" }, "dependencies": { "mime": { @@ -12412,9 +12413,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.1" } }, @@ -12435,10 +12436,10 @@ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -12447,7 +12448,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12468,10 +12469,10 @@ "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", "dev": true, "requires": { - "is-extendable": "0.1.1", - "kind-of": "2.0.1", - "lazy-cache": "0.2.7", - "mixin-object": "2.0.1" + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" }, "dependencies": { "kind-of": { @@ -12480,7 +12481,7 @@ "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.0.2" } }, "lazy-cache": { @@ -12506,13 +12507,13 @@ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.19.0.tgz", "integrity": "sha1-YXKekPKR5iVAEiqAZcpfxwwaix8=", "requires": { - "color": "2.0.1", - "detect-libc": "1.0.3", - "nan": "2.8.0", - "semver": "5.4.1", - "simple-get": "2.7.0", - "tar": "4.3.3", - "tunnel-agent": "0.6.0" + "color": "^2.0.1", + "detect-libc": "^1.0.3", + "nan": "^2.8.0", + "semver": "^5.4.1", + "simple-get": "^2.7.0", + "tar": "^4.2.0", + "tunnel-agent": "^0.6.0" } }, "shebang-command": { @@ -12520,7 +12521,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -12544,10 +12545,10 @@ "resolved": "https://registry.npmjs.org/shopify-api-node/-/shopify-api-node-2.11.0.tgz", "integrity": "sha512-HLFeh6NBAMKn4AED6AxuvYb8Xomwanq+bfTM43NJ532VdVYkVtAgiEmJO2XGSQPjNwBIl+YmOYsV1LnmiFuUvw==", "requires": { - "got": "8.1.0", - "lodash": "4.17.5", - "qs": "6.5.1", - "stopcock": "1.0.0" + "got": "^8.0.0", + "lodash": "^4.6.0", + "qs": "^6.1.0", + "stopcock": "^1.0.0" } }, "signal-exit": { @@ -12560,20 +12561,74 @@ "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.5.0.tgz", "integrity": "sha512-lv9n+1R7Oe3fpm3cWVyrs3mG1C9+DCc8QTCRn6cfLIsPkLfuMhBPLDwpnIsdA8Ch0fRO7BSxKvpVPcYvcYeSxg==", "requires": { - "clone": "2.1.2", - "extend": "3.0.1", - "lodash.every": "4.6.0", - "lodash.find": "4.6.0", - "lodash.findwhere": "3.1.0", - "lodash.includes": "4.3.0", - "lodash.isempty": "4.4.0", - "lodash.isobject": "3.0.2", - "lodash.omit": "4.5.0", - "lodash.pick": "4.4.0", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "message-box": "0.2.0", - "mongo-object": "0.1.2" + "clone": "^2.1.1", + "extend": "^3.0.1", + "lodash.every": "^4.6.0", + "lodash.find": "^4.6.0", + "lodash.findwhere": "^3.1.0", + "lodash.includes": "^4.3.0", + "lodash.isempty": "^4.4.0", + "lodash.isobject": "^3.0.2", + "lodash.omit": "^4.5.0", + "lodash.pick": "^4.4.0", + "lodash.union": "^4.6.0", + "lodash.uniq": "^4.5.0", + "message-box": "^0.2.0", + "mongo-object": "^0.1.2" + } + }, + "simpl-schema-mockdoc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/simpl-schema-mockdoc/-/simpl-schema-mockdoc-1.0.5.tgz", + "integrity": "sha512-+8LSWeMXuN5RMQgpnnF0NJ8OtKZX0dwrDzD28dL0Oz0OHlgOD/X17kgD1PxEjg76U0w14qJKltpSewyXojOCwA==", + "dev": true, + "requires": { + "faker": "^4.1.0", + "lodash": "^4.17.4", + "simpl-schema": "^0.3.2" + }, + "dependencies": { + "message-box": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/message-box/-/message-box-0.1.1.tgz", + "integrity": "sha1-d4VlhUzUUn0mc3P8IBJN4Ycpjaw=", + "dev": true, + "requires": { + "lodash.merge": "^4.6.0", + "lodash.template": "^4.4.0" + } + }, + "mongo-object": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.0.2.tgz", + "integrity": "sha512-FI827BgRJvEZ+Uef+qWIsXu93+8pok26b5LZO2Nc3T6XRg/IrkvV1okxyez+Kz/psfV3n5WqqtR+ySg2Q7mSPg==", + "dev": true, + "requires": { + "lodash.foreach": "^4.5.0", + "lodash.isempty": "^4.4.0", + "lodash.isobject": "^3.0.2", + "lodash.without": "^4.4.0" + } + }, + "simpl-schema": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-0.3.2.tgz", + "integrity": "sha1-LHVETpN4UFrFJSGTlN4GPOT28Gg=", + "dev": true, + "requires": { + "clone": "^2.1.1", + "extend": "^3.0.1", + "message-box": "^0.1.1", + "mongo-object": "^0.0.2", + "underscore": "^1.8.3" + } + }, + "underscore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz", + "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A==", + "dev": true + } } }, "simple-concat": { @@ -12586,9 +12641,9 @@ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", "requires": { - "decompress-response": "3.3.0", - "once": "1.4.0", - "simple-concat": "1.0.0" + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, "simple-swizzle": { @@ -12596,7 +12651,7 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { - "is-arrayish": "0.3.1" + "is-arrayish": "^0.3.1" }, "dependencies": { "is-arrayish": { @@ -12617,7 +12672,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, "slugify": { @@ -12637,14 +12692,14 @@ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -12653,7 +12708,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -12662,7 +12717,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -12671,7 +12726,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12680,7 +12735,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12691,7 +12746,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12700,7 +12755,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12711,9 +12766,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -12736,9 +12791,9 @@ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -12747,7 +12802,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "isobject": { @@ -12764,7 +12819,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "sntp": { @@ -12772,7 +12827,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "snyk": { @@ -12781,21 +12836,21 @@ "integrity": "sha1-4QhTTAhUWz4BpbpLuu2Aw6Iz88k=", "dev": true, "requires": { - "abbrev": "1.1.1", - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "debug": "3.1.0", - "hasbin": "1.2.3", - "inquirer": "3.3.0", - "lodash": "4.17.5", - "needle": "2.2.0", - "opn": "5.3.0", - "os-name": "2.0.1", - "proxy-agent": "3.0.0", - "proxy-from-env": "1.0.0", - "recursive-readdir": "2.2.2", - "semver": "5.5.0", + "abbrev": "^1.1.1", + "ansi-escapes": "^3.1.0", + "chalk": "^2.4.1", + "configstore": "^3.1.2", + "debug": "^3.1.0", + "hasbin": "^1.2.3", + "inquirer": "^3.0.0", + "lodash": "^4.17.5", + "needle": "^2.0.1", + "opn": "^5.2.0", + "os-name": "^2.0.1", + "proxy-agent": "^3.0.0", + "proxy-from-env": "^1.0.0", + "recursive-readdir": "^2.2.2", + "semver": "^5.5.0", "snyk-config": "2.1.0", "snyk-go-plugin": "1.5.0", "snyk-gradle-plugin": "1.3.0", @@ -12808,12 +12863,12 @@ "snyk-resolve": "1.0.1", "snyk-resolve-deps": "3.1.0", "snyk-sbt-plugin": "1.2.5", - "snyk-tree": "1.0.0", + "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.0", - "tempfile": "2.0.0", - "then-fs": "2.0.0", - "undefsafe": "2.0.2", - "uuid": "3.2.1" + "tempfile": "^2.0.0", + "then-fs": "^2.0.0", + "undefsafe": "^2.0.0", + "uuid": "^3.2.1" }, "dependencies": { "ansi-escapes": { @@ -12828,7 +12883,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "async": { @@ -12849,9 +12904,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "cliui": { @@ -12860,9 +12915,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "configstore": { @@ -12871,12 +12926,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "debug": { @@ -12906,7 +12961,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "nconf": { @@ -12915,10 +12970,10 @@ "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", "dev": true, "requires": { - "async": "1.5.2", - "ini": "1.3.5", - "secure-keys": "1.0.0", - "yargs": "3.32.0" + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" } }, "os-locale": { @@ -12927,7 +12982,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-name": { @@ -12936,8 +12991,8 @@ "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", "dev": true, "requires": { - "macos-release": "1.1.0", - "win-release": "1.1.1" + "macos-release": "^1.0.0", + "win-release": "^1.0.0" } }, "semver": { @@ -12952,8 +13007,8 @@ "integrity": "sha512-D1Xz1pZa9lwA9AHogmAigyJGo/iuEGH+rcPB77mFsneVfnuiK9c6IjnsHbEBUf1cePtZvWdGBjs6e75Cvc2AMg==", "dev": true, "requires": { - "debug": "3.1.0", - "nconf": "0.10.0" + "debug": "^3.1.0", + "nconf": "^0.10.0" } }, "snyk-go-plugin": { @@ -12962,8 +13017,8 @@ "integrity": "sha512-H6CHhGqchCcQV/JhOiSbTI8JLYhQU7dZ/oLwHMfVEXSD3bWOp1evlohuaQQaqic/ZInitLsjkCLHG2x47ZgUgQ==", "dev": true, "requires": { - "graphlib": "2.1.5", - "toml": "2.3.3" + "graphlib": "^2.1.1", + "toml": "^2.3.2" } }, "snyk-gradle-plugin": { @@ -12972,7 +13027,7 @@ "integrity": "sha512-rKZcPwbDM9zk3pFcO0w77MIKOZTkk5ZBVBkBlTlUiFg+eNOKqPTmw2hBGF5NB4ASQmMnx3uB1C8+hrQ405CthA==", "dev": true, "requires": { - "clone-deep": "0.3.0" + "clone-deep": "^0.3.0" } }, "snyk-module": { @@ -12981,8 +13036,8 @@ "integrity": "sha512-XqhdbZ/CUuJ5gSaYdYfapLqx9qm2Mp6nyRMBCLXe9tJSiohOJsc9fQuUDbdOiRCqpA4BD6WLl+qlwOJmJoszBg==", "dev": true, "requires": { - "debug": "3.1.0", - "hosted-git-info": "2.5.0" + "debug": "^3.1.0", + "hosted-git-info": "^2.1.4" } }, "snyk-mvn-plugin": { @@ -12997,10 +13052,10 @@ "integrity": "sha512-BFZv6UxViTWbu4+AiWRD1cTby3FZ4rs2CuLma0d80iOTzgfmvFmgeWHlM8bXx0WAC47HYywXQuDJeKzV7iiaXQ==", "dev": true, "requires": { - "debug": "3.1.0", - "es6-promise": "4.2.4", - "xml2js": "0.4.19", - "zip": "1.2.0" + "debug": "^3.1.0", + "es6-promise": "^4.1.1", + "xml2js": "^0.4.17", + "zip": "^1.2.0" } }, "snyk-php-plugin": { @@ -13009,8 +13064,8 @@ "integrity": "sha512-HS5NSxR4JwTdSQttDrV9y9eOC75U3JfLWEDhGJf1qJIObLlF6Vbj9kZcphmdi4CUNwDcQqEPglh911zXB1tzQQ==", "dev": true, "requires": { - "debug": "3.1.0", - "lodash": "4.17.5" + "debug": "^3.1.0", + "lodash": "^4.17.5" } }, "snyk-policy": { @@ -13019,15 +13074,15 @@ "integrity": "sha512-CEioNnDzccHyid7UIVl3bJ1dnG4co4ofI+KxuC1mo0IUXy64gxnBTeVoZF5gVLWbAyxGxSeW8f0+8GmWMHVb7w==", "dev": true, "requires": { - "debug": "3.1.0", - "email-validator": "2.0.3", - "js-yaml": "3.10.0", - "lodash.clonedeep": "4.5.0", - "semver": "5.5.0", - "snyk-module": "1.8.2", - "snyk-resolve": "1.0.1", - "snyk-try-require": "1.3.0", - "then-fs": "2.0.0" + "debug": "^3.1.0", + "email-validator": "^2.0.3", + "js-yaml": "^3.5.3", + "lodash.clonedeep": "^4.3.1", + "semver": "^5.5.0", + "snyk-module": "^1.8.2", + "snyk-resolve": "^1.0.1", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" } }, "snyk-python-plugin": { @@ -13042,8 +13097,8 @@ "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", "dev": true, "requires": { - "debug": "3.1.0", - "then-fs": "2.0.0" + "debug": "^3.1.0", + "then-fs": "^2.0.0" } }, "snyk-resolve-deps": { @@ -13052,20 +13107,20 @@ "integrity": "sha512-YVAelR+dTpqLgfk6lf6WgOlw+MGmGI0r3/Dny8tUbJJ9uVTHTRAOdZCbUyTFqJG7oEmEZxUwmfjqgAuniYwx8Q==", "dev": true, "requires": { - "ansicolors": "0.3.2", - "debug": "3.1.0", - "lodash.assign": "4.2.0", - "lodash.assignin": "4.2.0", - "lodash.flatten": "4.4.0", - "lodash.get": "4.4.2", - "lodash.set": "4.3.2", - "lru-cache": "4.1.1", - "semver": "5.5.0", - "snyk-module": "1.8.2", - "snyk-resolve": "1.0.1", - "snyk-tree": "1.0.0", - "snyk-try-require": "1.3.0", - "then-fs": "2.0.0" + "ansicolors": "^0.3.2", + "debug": "^3.1.0", + "lodash.assign": "^4.2.0", + "lodash.assignin": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lru-cache": "^4.0.0", + "semver": "^5.1.0", + "snyk-module": "^1.6.0", + "snyk-resolve": "^1.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" } }, "snyk-try-require": { @@ -13074,10 +13129,10 @@ "integrity": "sha1-81cGrPkciveI1Y4fGta/D89sVJM=", "dev": true, "requires": { - "debug": "3.1.0", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.1.1", - "then-fs": "2.0.0" + "debug": "^3.1.0", + "lodash.clonedeep": "^4.3.0", + "lru-cache": "^4.0.0", + "then-fs": "^2.0.0" } }, "string-width": { @@ -13086,9 +13141,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -13097,7 +13152,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13106,7 +13161,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "tempfile": { @@ -13115,8 +13170,8 @@ "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", "dev": true, "requires": { - "temp-dir": "1.0.0", - "uuid": "3.2.1" + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" } }, "uuid": { @@ -13131,13 +13186,13 @@ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } } } @@ -13148,7 +13203,7 @@ "integrity": "sha512-6D981zAdFYatBLNwp7J5Vl5wZFieBlwKj1Ans9uZ5BZZfg4mjIX/62tfADmJEbHijvnN+i7N8cNQRvVOyLo2UA==", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" } }, "snyk-tree": { @@ -13157,7 +13212,7 @@ "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", "dev": true, "requires": { - "archy": "1.0.0" + "archy": "^1.0.0" } }, "socks": { @@ -13166,8 +13221,8 @@ "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" } }, "socks-proxy-agent": { @@ -13176,8 +13231,8 @@ "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "dev": true, "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" + "agent-base": "^4.1.0", + "socks": "^1.1.10" } }, "sort-keys": { @@ -13185,7 +13240,7 @@ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "sortablejs": { @@ -13204,11 +13259,11 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.0.3", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -13216,7 +13271,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" } }, "source-map-url": { @@ -13230,7 +13285,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -13249,7 +13304,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-array-stream": { @@ -13257,8 +13312,8 @@ "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", "requires": { - "async": "2.6.0", - "is-stream-ended": "0.1.4" + "async": "^2.4.0", + "is-stream-ended": "^0.1.0" } }, "split-string": { @@ -13267,7 +13322,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -13281,14 +13336,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "ssr-window": { @@ -13313,8 +13368,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -13323,7 +13378,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -13332,7 +13387,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -13341,7 +13396,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13352,7 +13407,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -13361,7 +13416,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13372,9 +13427,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -13411,7 +13466,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-events": { @@ -13419,7 +13474,7 @@ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { - "stubs": "3.0.0" + "stubs": "^3.0.0" } }, "stream-shift": { @@ -13448,8 +13503,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "1.0.0", - "strip-ansi": "4.0.0" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" } }, "string-width": { @@ -13457,8 +13512,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { @@ -13466,7 +13521,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringstream": { @@ -13479,7 +13534,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -13500,7 +13555,7 @@ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "dev": true, "requires": { - "is-natural-number": "4.0.1" + "is-natural-number": "^4.0.1" } }, "strip-eof": { @@ -13518,10 +13573,10 @@ "resolved": "https://registry.npmjs.org/stripe/-/stripe-5.4.0.tgz", "integrity": "sha512-VCDFp4oQu1uOcOLHIwRIznH8ikLJcpDsHahWN48V/QuV6y2Bm281cq5wnkjqv+LPdUpqXVp9pjlb+SfN6dnyZg==", "requires": { - "bluebird": "3.5.1", - "lodash.isplainobject": "4.0.6", - "qs": "6.5.1", - "safe-buffer": "5.1.1" + "bluebird": "^3.5.0", + "lodash.isplainobject": "^4.0.6", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1" }, "dependencies": { "bluebird": { @@ -13541,7 +13596,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "sweetalert2": { @@ -13554,8 +13609,8 @@ "resolved": "https://registry.npmjs.org/swiper/-/swiper-4.1.6.tgz", "integrity": "sha512-oEpyQc4qCAgQCWlSPCxJd4STQFJqASyVcLCs7CzzZiFc8NnTfBaMt3p9iwqoC8c6KofJmt6zonyUj50KRFWW3g==", "requires": { - "dom7": "2.0.2", - "ssr-window": "1.0.0" + "dom7": "^2.0.2", + "ssr-window": "^1.0.0" } }, "symbol-observable": { @@ -13575,12 +13630,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.3.0", - "ajv-keywords": "2.1.1", - "chalk": "2.3.1", - "lodash": "4.17.5", + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "taffydb": { @@ -13594,12 +13649,12 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.3.3.tgz", "integrity": "sha512-v9wjbOXloOIeXifMQGkKhPH3H7tjd+8BubFKOTU+64JpFZ3q2zBfsGlnc7KmyRgl8UxVa1SCRiF3F9tqSOgcaQ==", "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.1", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.3", + "minipass": "^2.2.1", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "yallist": "^3.0.2" }, "dependencies": { "yallist": { @@ -13616,14 +13671,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.3", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" }, "dependencies": { "tar": { @@ -13633,9 +13688,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } } } @@ -13646,13 +13701,13 @@ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", "dev": true, "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.1.0", - "end-of-stream": "1.4.1", - "fs-constants": "1.0.0", - "readable-stream": "2.3.3", - "to-buffer": "1.1.1", - "xtend": "4.0.1" + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" } }, "temp-dir": { @@ -13667,7 +13722,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "test-exclude": { @@ -13676,11 +13731,11 @@ "integrity": "sha512-8hMFzjxbPv6xSlwGhXSvOMJ/vTy3bkng+2pxmf6E1z6VF7I9nIyNfvHtaw+NBPgvz647gADBbMSbwLfZYppT/w==", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" }, "dependencies": { "find-up": { @@ -13689,8 +13744,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "load-json-file": { @@ -13699,11 +13754,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "path-exists": { @@ -13712,7 +13767,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -13721,9 +13776,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "read-pkg": { @@ -13732,9 +13787,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -13743,8 +13798,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "strip-bom": { @@ -13753,7 +13808,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -13768,7 +13823,7 @@ "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", "requires": { - "tether": "1.4.3" + "tether": "^1.1.0" } }, "tether-tooltip": { @@ -13776,8 +13831,8 @@ "resolved": "https://registry.npmjs.org/tether-tooltip/-/tether-tooltip-1.2.0.tgz", "integrity": "sha1-CPSXZNX0SHCLURGcn+EZlytNaWI=", "requires": { - "tether": "1.4.3", - "tether-drop": "1.4.2" + "tether": "^1.1.0", + "tether-drop": "^1.4.0" } }, "text-table": { @@ -13792,7 +13847,7 @@ "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", "dev": true, "requires": { - "promise": "7.3.1" + "promise": ">=3.2 <8" } }, "throat": { @@ -13812,8 +13867,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "thunkify": { @@ -13838,7 +13893,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tmpl": { @@ -13864,7 +13919,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -13873,10 +13928,10 @@ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -13885,8 +13940,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { "is-number": { @@ -13895,7 +13950,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } @@ -13922,7 +13977,7 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" }, "dependencies": { "hoek": { @@ -13938,7 +13993,7 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "dev": true, "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" } }, "tough-cookie": { @@ -13946,7 +14001,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tr46": { @@ -13955,7 +14010,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { @@ -13968,8 +14023,9 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", + "from": "github:reactioncommerce/transliteration", "requires": { - "yargs": "8.0.2" + "yargs": "^8.0.2" } }, "trim-right": { @@ -13982,7 +14038,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tus-js-client": { @@ -13990,10 +14046,10 @@ "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-1.5.1.tgz", "integrity": "sha512-qBSNXpc6ZPe6stn4NSkQ1dnVhVblPAtQo6037g5Qr5zr9gGX1gr+8e0+HtQMBp22Ouo6LYesWMdKbcOR5sRj5A==", "requires": { - "buffer-from": "0.1.2", - "extend": "3.0.1", - "lodash.throttle": "4.1.1", - "resolve-url": "0.2.1" + "buffer-from": "^0.1.1", + "extend": "^3.0.0", + "lodash.throttle": "^4.1.1", + "resolve-url": "^0.2.1" } }, "tus-node-server": { @@ -14002,12 +14058,12 @@ "integrity": "sha512-1Eb/GGejUTUpCpuHbol8OsQDk38Mx8jPLne+0VvPTKVv6Gvoj+Q7trjc5mQHQqCd8vIYsXHEEJ/46YR1bZZJig==", "requires": { "@google-cloud/storage": "1.1.1", - "configstore": "3.1.1", + "configstore": "^3.1.1", "crypto-rand": "0.0.2", - "debug": "3.1.0", - "google-auto-auth": "0.8.2", - "object-assign": "4.1.1", - "request": "2.83.0" + "debug": "^3.1.0", + "google-auto-auth": "^0.8.1", + "object-assign": "^4.1.1", + "request": "^2.72.0" }, "dependencies": { "debug": { @@ -14032,11 +14088,11 @@ "integrity": "sha512-xGUH+SW8lBsPmTB9nNuawB8AajhevjIktD6LvESbIJ5HVeAgE44Y327AziCAT6lQr90PYB5joO5IUagH6YwzDA==", "requires": { "deprecate": "1.0.0", - "jsonwebtoken": "8.2.1", + "jsonwebtoken": "^8.1.0", "lodash": "4.0.0", "moment": "2.19.3", - "q": "2.0.3", - "request": "2.83.0", + "q": "2.0.x", + "request": "2.83.x", "rootpath": "0.1.2", "scmp": "0.0.3", "xmlbuilder": "9.0.1" @@ -14047,16 +14103,16 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", "requires": { - "jws": "3.1.4", - "lodash.includes": "4.3.0", - "lodash.isboolean": "3.0.3", - "lodash.isinteger": "4.0.4", - "lodash.isnumber": "3.0.3", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.once": "4.1.1", - "ms": "2.1.1", - "xtend": "4.0.1" + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "xtend": "^4.0.1" } }, "lodash": { @@ -14087,7 +14143,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -14101,7 +14157,7 @@ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.15" } }, "typedarray": { @@ -14120,9 +14176,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -14149,9 +14205,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -14182,8 +14238,8 @@ "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", "dev": true, "requires": { - "buffer": "3.6.0", - "through": "2.3.8" + "buffer": "^3.0.1", + "through": "^2.3.6" } }, "undefsafe": { @@ -14192,7 +14248,7 @@ "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" } }, "underscore": { @@ -14230,8 +14286,8 @@ "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.3", - "unicode-property-aliases-ecmascript": "1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.2", + "unicode-property-aliases-ecmascript": "^1.0.3" } }, "unicode-match-property-value-ecmascript": { @@ -14252,10 +14308,10 @@ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -14264,7 +14320,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -14273,10 +14329,10 @@ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -14286,7 +14342,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "universalify": { @@ -14306,8 +14362,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -14316,9 +14372,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -14364,15 +14420,15 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.3.1", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "urix": { @@ -14402,7 +14458,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "2.0.0" + "prepend-http": "^2.0.0" } }, "url-to-options": { @@ -14416,7 +14472,7 @@ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -14438,8 +14494,8 @@ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "define-properties": "1.1.2", - "object.getownpropertydescriptors": "2.0.3" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, "utils-merge": { @@ -14458,7 +14514,7 @@ "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "homedir-polyfill": "^1.0.1" } }, "validate-npm-package-license": { @@ -14466,8 +14522,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "value-equal": { @@ -14490,10 +14546,10 @@ "resolved": "https://registry.npmjs.org/velocity-react/-/velocity-react-1.3.3.tgz", "integrity": "sha1-1tRyds/Ivip1Yjh5sgFArFjBuCs=", "requires": { - "lodash": "3.10.1", - "prop-types": "15.6.0", - "react-transition-group": "1.2.1", - "velocity-animate": "1.5.1" + "lodash": "^3.10.1", + "prop-types": "^15.5.8", + "react-transition-group": "^1.1.2", + "velocity-animate": "^1.4.0" }, "dependencies": { "lodash": { @@ -14508,9 +14564,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "w3c-hr-time": { @@ -14519,7 +14575,7 @@ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "browser-process-hrtime": "0.1.2" + "browser-process-hrtime": "^0.1.2" } }, "walker": { @@ -14528,7 +14584,7 @@ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.11" + "makeerror": "1.0.x" } }, "warning": { @@ -14536,7 +14592,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "watch": { @@ -14545,8 +14601,8 @@ "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "dev": true, "requires": { - "exec-sh": "0.2.1", - "minimist": "1.2.0" + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" }, "dependencies": { "minimist": { @@ -14588,9 +14644,9 @@ "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.0", + "webidl-conversions": "^4.0.1" } }, "which": { @@ -14598,7 +14654,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -14613,7 +14669,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -14623,7 +14679,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -14633,9 +14689,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -14645,7 +14701,7 @@ "dev": true, "optional": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -14656,7 +14712,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "win-release": { @@ -14665,7 +14721,7 @@ "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "^5.0.1" } }, "window-size": { @@ -14684,8 +14740,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -14693,7 +14749,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -14701,9 +14757,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -14711,7 +14767,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -14727,7 +14783,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -14735,9 +14791,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -14746,9 +14802,9 @@ "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", "dev": true, "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, "x-path": { @@ -14757,7 +14813,7 @@ "integrity": "sha1-KU0Ha7l6dwbMBwu7Km/YxU32exI=", "dev": true, "requires": { - "path-extra": "1.0.3" + "path-extra": "^1.0.2" } }, "xdg-basedir": { @@ -14782,8 +14838,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -14823,19 +14879,19 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.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", + "yargs-parser": "^7.0.0" }, "dependencies": { "cliui": { @@ -14843,9 +14899,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -14853,9 +14909,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -14865,7 +14921,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "strip-ansi": { @@ -14873,7 +14929,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -14883,7 +14939,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } }, "yauzl": { @@ -14892,8 +14948,8 @@ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" } }, "zen-observable": { @@ -14906,7 +14962,7 @@ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.8.tgz", "integrity": "sha512-oGjFvBbAA94uh/HvAwJDwMHtNq4lZRtupJx8XsyreOTYvH8x1ef9hIeH/M+IqiAXtNpglq/Klh5rbpYWEeRSOQ==", "requires": { - "zen-observable": "0.7.1" + "zen-observable": "^0.7.0" } }, "zip": { @@ -14915,7 +14971,7 @@ "integrity": "sha1-rQrUImUwm+QutW/IYZThfCTmapw=", "dev": true, "requires": { - "bops": "0.1.1" + "bops": "~0.1.1" } } } diff --git a/package.json b/package.json index 5df38e21740..97c68b13835 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "mongodb-memory-server": "^1.7.3", "nodemon": "^1.17.2", "react-addons-test-utils": "15.6.2", + "simpl-schema-mockdoc": "^1.0.5", "snyk": "^1.78.0" }, "postcss": { From 9a91ae93b69c1acb70c3bf096cb349faacfd57eb Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 18 May 2018 18:35:26 -0500 Subject: [PATCH 054/201] feat: added dataFactory method and object to test-utils --- imports/test-utils/helpers/dataFactory.js | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 imports/test-utils/helpers/dataFactory.js diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js new file mode 100644 index 00000000000..9beffec50a4 --- /dev/null +++ b/imports/test-utils/helpers/dataFactory.js @@ -0,0 +1,33 @@ +import { getMockDoc } from "simpl-schema-mockdoc"; + +/** + * @const {Object} Factory - todo + * @todo write const desciption + */ +export const Factory = {}; + +/** + * @name createFactoryForSchema + * @function + * @summary Creates Factory[propName] for building fake documents with the given schema. + * @param {String} propName The property name to add to the `Factory` object. This should match the + * schema variable's name. + * @param {SimpleSchema} schema A SimpleSchema instance + */ +export function createFactoryForSchema(propName, schema) { + // eslint-disable-next-line + if (Factory.hasOwnProperty(propName)) { + throw new Error(`Factory already has a "${propName}" property`); + } + + Factory[propName] = { + makeOne(props) { + const doc = getMockDoc(schema, "mock", true); + Object.assign(doc, props); + return doc; + }, + makeMany(length, props) { + return Array.from({ length }).map(() => this.makeOne(props)); + } + }; +} From 22d35fce202c3dd0d9e3608eb865bb15e1e2e620 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Mon, 21 May 2018 14:08:28 -0500 Subject: [PATCH 055/201] feat: started creating non-meteor factory utils, added the new util to the tags schema and integration test as a demo --- imports/test-utils/helpers/dataFactory.js | 157 +- lib/collections/schemas/tags.js | 2 + package-lock.json | 5358 ++++++++++----------- package.json | 2 +- tests/tag/tags.test.js | 11 + 5 files changed, 2848 insertions(+), 2682 deletions(-) diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index 9beffec50a4..f6a2e160038 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -1,4 +1,157 @@ -import { getMockDoc } from "simpl-schema-mockdoc"; +// import { getMockDoc } from "simpl-schema-mockdoc"; + +import _ from "lodash"; +import faker from "faker"; +import SimpleSchema from "simpl-schema"; + +SimpleSchema.extendOptions(["mockValue"]); + +const getMockDoc = (schema, prefix, addId) => { + const docPrefix = prefix || "mock"; + const mockDoc = {}; + const model = schema._schema; + + // const seed = _.chain(docPrefix) + // .split("") + // .map((char) => char.charCodeAt()) + // .sum() + // .value(); + + // const seed = _.flow(_.split(""), _.map((char) => char.charCodeAt()), _.sum())(docPrefix); + + const seed = Array.prototype.reduce.cal(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); + + faker.seed(seed); + + if (process.env.NODE_ENV !== "test" || !schema) { + return mockDoc; + } + + Object.keys(model).forEach((key) => { + let fieldValue = null; + + // If field defined by parent + const currentMockValue = _.get(mockDoc, `${key.replace(".$", ".0")}`); + if (!_.isUndefined(currentMockValue, key)) { + return; + } + + const defField = _.get(model[key], "type.definitions[0]") || model[key]; + + try { + if (!_.isUndefined(model[key].mockValue)) { + fieldValue = model[key].mockValue; + } else if (!_.isUndefined(model[key].defaultValue)) { + fieldValue = model[key].defaultValue; + } else if (!_.isUndefined(model[key].autoValue)) { + fieldValue = model[key].autoValue.call({ operator: null }); + } else if (_.isArray(defField.allowedValues)) { + fieldValue = defField.allowedValues[0]; + } else { + throw new Error("Invalid"); + } + } catch (err) { + // Need 'defField' for field like: `key: Boolean` + const fieldType = defField.type || defField; + + switch (fieldType) { + case Date: + fieldValue = new Date(faker.random.number() * 1000); + break; + + case Number: + case SimpleSchema.Integer: + fieldValue = defField.min || defField.max || faker.random.number(); + break; + + case String: + fieldValue = `${docPrefix}${_.upperFirst(_.camelCase(key))}`; + if (defField.regEx) { + switch (String(defField.regEx)) { + case String(String(SimpleSchema.RegEx.Email)): + case String(String(SimpleSchema.RegEx.EmailWithTLD)): + fieldValue = faker.internet.email(); + break; + + case String(SimpleSchema.RegEx.Domain): + case String(SimpleSchema.RegEx.WeakDomain): + fieldValue = `${faker.internet.domainName()}${faker.internet.domainWord()}`; + break; + + case String(SimpleSchema.RegEx.IP): + case String(SimpleSchema.RegEx.IPv4): + fieldValue = faker.internet.ip(); + break; + + case String(SimpleSchema.RegEx.IPv6): + fieldValue = faker.internet.ipv6(); + break; + + case String(SimpleSchema.RegEx.Url): + fieldValue = faker.internet.url(); + break; + + case String(SimpleSchema.RegEx.Id): + fieldValue = faker.random.alphaNumeric(17); + break; + + case String(SimpleSchema.RegEx.ZipCode): + fieldValue = faker.address.zipCode(); + break; + + case String(SimpleSchema.RegEx.Phone): + fieldValue = key.match(/mobile/i) + ? faker.phone.phoneNumber("074## ######") + : faker.phone.phoneNumber("012## ######"); + break; + + default: + break; + } + } + break; + + case Boolean: + fieldValue = !_.isUndefined(defField.defaultValue) ? defField.defaultValue : faker.random.boolean(); + break; + + case Object: { + fieldValue = {}; + break; + } + + case Array: + fieldValue = []; + break; + + default: + if (fieldType instanceof SimpleSchema || _.get(fieldType, "_schema")) { + fieldValue = getMockDoc(fieldType, prefix); + } + break; + } + } + + _.set(mockDoc, key.replace(".$", ".0"), fieldValue); + }); + + if (addId) { + mockDoc._id = faker.random.alphaNumeric(17); + } + + return mockDoc; +}; + +const clearMockValues = (schema) => { + if (process.env.NODE_ENV === "test") { + return schema; + } + + _.each(schema._schema, (field, key) => { + schema._schema[key] = _.omit(field, "mockValue"); + }); + return schema; +}; /** * @const {Object} Factory - todo @@ -20,6 +173,8 @@ export function createFactoryForSchema(propName, schema) { throw new Error(`Factory already has a "${propName}" property`); } + console.log("factory created?", propName); + Factory[propName] = { makeOne(props) { const doc = getMockDoc(schema, "mock", true); diff --git a/lib/collections/schemas/tags.js b/lib/collections/schemas/tags.js index 1ef727f7e80..6fe6b12d050 100644 --- a/lib/collections/schemas/tags.js +++ b/lib/collections/schemas/tags.js @@ -4,6 +4,7 @@ import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, shopIdAutoValue } from "./helpers"; import { Metafield } from "./metafield"; +import { createFactoryForSchema } from "/imports/test-utils/helpers/dataFactory"; /** * @name Tag @@ -87,3 +88,4 @@ export const Tag = new SimpleSchema({ }, { check, tracker: Tracker }); registerSchema("Tag", Tag); +createFactoryForSchema("Tag", Tag); diff --git a/package-lock.json b/package-lock.json index a112fee2b7d..2605ea413bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "resolved": "https://registry.npmjs.org/42-cent-base/-/42-cent-base-0.8.0.tgz", "integrity": "sha1-ZXKom0enKvGcZ8NAG1wd0wqpuLs=", "requires": { - "bluebird": "^2.3.2", - "lodash": "^2.4.1" + "bluebird": "2.11.0", + "lodash": "2.4.2" }, "dependencies": { "lodash": { @@ -31,15 +31,15 @@ "integrity": "sha512-RF2RQh9gvxeXtwrFzgf4PKCsmCPsa/tHaL0TQ3eWRoyno91GsoYnAhh/SnvPrlvXV+9Uosw+zwOgwnVyRvPDYQ==", "dev": true, "requires": { - "chokidar": "^1.6.1", - "commander": "^2.8.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.0.0", - "glob": "^7.0.0", - "lodash": "^4.2.0", - "output-file-sync": "^2.0.0", - "slash": "^1.0.0", - "source-map": "^0.5.0" + "chokidar": "1.7.0", + "commander": "2.14.1", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.10", + "output-file-sync": "2.0.1", + "slash": "1.0.0", + "source-map": "0.5.7" }, "dependencies": { "source-map": { @@ -56,9 +56,9 @@ "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@babel/core": { @@ -74,13 +74,13 @@ "@babel/traverse": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "convert-source-map": "^1.1.0", - "debug": "^3.0.1", - "json5": "^0.5.0", - "lodash": "^4.2.0", - "micromatch": "^2.3.11", - "resolve": "^1.3.2", - "source-map": "^0.5.0" + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.10", + "micromatch": "2.3.11", + "resolve": "1.5.0", + "source-map": "0.5.7" }, "dependencies": { "debug": { @@ -107,10 +107,10 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "source-map": { @@ -147,7 +147,7 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "esutils": "^2.0.0" + "esutils": "2.0.2" } }, "@babel/helper-call-delegate": { @@ -169,7 +169,7 @@ "requires": { "@babel/helper-function-name": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/helper-explode-assignable-expression": { @@ -218,7 +218,7 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.38", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/helper-module-transforms": { @@ -231,7 +231,7 @@ "@babel/helper-simple-access": "7.0.0-beta.38", "@babel/template": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/helper-optimise-call-expression": { @@ -249,7 +249,7 @@ "integrity": "sha512-ovwkKMmLkZspr7ge5y8w7JQoO1MXPXcp8UaLxcmP5Akw0uAmISvd4vGFy4tpwtnsgPU1N7J5NyomTdMPqn78Aw==", "dev": true, "requires": { - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/helper-remap-async-to-generator": { @@ -285,7 +285,7 @@ "requires": { "@babel/template": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/helper-wrap-function": { @@ -319,11 +319,11 @@ "requires": { "@babel/polyfill": "7.0.0-beta.38", "@babel/register": "7.0.0-beta.38", - "commander": "^2.8.1", - "fs-readdir-recursive": "^1.0.0", - "lodash": "^4.2.0", - "output-file-sync": "^2.0.0", - "v8flags": "^3.0.0" + "commander": "2.14.1", + "fs-readdir-recursive": "1.1.0", + "lodash": "4.17.10", + "output-file-sync": "2.0.1", + "v8flags": "3.0.2" } }, "@babel/plugin-check-constants": { @@ -414,7 +414,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "^4.1.3" + "regexpu-core": "4.1.3" } }, "@babel/plugin-syntax-async-generators": { @@ -517,7 +517,7 @@ "integrity": "sha512-GoYqWrbwEQty36dUzjbBoIBW+hymFrE8S7IifH6Lzess3a9z9ST1APNYk4XHrGYYyn7lOGOWe3SL8tPLWoo+OA==", "dev": true, "requires": { - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/plugin-transform-classes": { @@ -531,7 +531,7 @@ "@babel/helper-function-name": "7.0.0-beta.38", "@babel/helper-optimise-call-expression": "7.0.0-beta.38", "@babel/helper-replace-supers": "7.0.0-beta.38", - "globals": "^11.1.0" + "globals": "11.3.0" } }, "@babel/plugin-transform-computed-properties": { @@ -553,7 +553,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "^4.1.3" + "regexpu-core": "4.1.3" } }, "@babel/plugin-transform-duplicate-keys": { @@ -715,7 +715,7 @@ "integrity": "sha512-jbvExdAuxDndPbK3oO54QdkKqMeUAt/XYMW9wovYAWLA5R2loJkMjneZ5iU8VbfNcqVk2baWdgInBBUy6dtoXQ==", "dev": true, "requires": { - "regenerator-transform": "^0.12.3" + "regenerator-transform": "0.12.3" } }, "@babel/plugin-transform-shorthand-properties": { @@ -761,7 +761,7 @@ "dev": true, "requires": { "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "^4.1.3" + "regexpu-core": "4.1.3" }, "dependencies": { "jsesc": { @@ -777,8 +777,8 @@ "integrity": "sha512-4W6LtzWEp8r4Cvqbv16Ix3WV3JdjcWTIa0+8U+MILNiS7qchBZQALki5WStlF7deHGGE/ZpsAs0HOpK68HUsCQ==", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.1" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "@babel/preset-env": { @@ -822,9 +822,9 @@ "@babel/plugin-transform-template-literals": "7.0.0-beta.38", "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.38", "@babel/plugin-transform-unicode-regex": "7.0.0-beta.38", - "browserslist": "^2.4.0", - "invariant": "^2.2.2", - "semver": "^5.3.0" + "browserslist": "2.11.3", + "invariant": "2.2.2", + "semver": "5.4.1" } }, "@babel/preset-es2015": { @@ -907,13 +907,13 @@ "integrity": "sha512-szE2vMZ8FB6NkywESqDGcAtchQafaWLQgJo3xro7GIgNRmJoAX2xZijU1e5AKT4zWkRRc53aBBwfZy03aWsPgw==", "dev": true, "requires": { - "core-js": "^2.4.0", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.2.0", - "mkdirp": "^0.5.1", - "pirates": "^3.0.1", - "source-map-support": "^0.4.2" + "core-js": "2.5.3", + "find-cache-dir": "1.0.0", + "home-or-tmp": "3.0.0", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "pirates": "3.0.2", + "source-map-support": "0.4.18" }, "dependencies": { "home-or-tmp": { @@ -934,7 +934,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } } } @@ -944,8 +944,8 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.38.tgz", "integrity": "sha512-ZvPtlcvH2ZRzr1U5pkmCE7U3RIun3Nf29XHem47aScmJgMuL06ulkp+4oPBee3QrUVFErDjwNWtC67BzNuxLVw==", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.1" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "@babel/template": { @@ -957,7 +957,7 @@ "@babel/code-frame": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/traverse": { @@ -971,10 +971,10 @@ "@babel/helper-function-name": "7.0.0-beta.38", "@babel/types": "7.0.0-beta.38", "babylon": "7.0.0-beta.38", - "debug": "^3.0.1", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -994,9 +994,9 @@ "integrity": "sha512-SAtyEjmA7KiEoL2eAOAUM6M9arQJGWxJKK0S9x0WyPOosHS420RXoxPhn57u/8orRnK8Kxm0nHQQNTX203cP1Q==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" }, "dependencies": { "to-fast-properties": { @@ -1017,24 +1017,24 @@ "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.13.6.tgz", "integrity": "sha1-qdjhN7xCmkSrqWif5qDkMxeE+FM=", "requires": { - "array-uniq": "^1.0.3", - "arrify": "^1.0.1", - "concat-stream": "^1.6.0", - "create-error-class": "^3.0.2", - "duplexify": "^3.5.0", - "ent": "^2.2.0", - "extend": "^3.0.0", - "google-auto-auth": "^0.7.1", - "is": "^3.2.0", - "log-driver": "^1.2.5", - "methmeth": "^1.1.0", - "modelo": "^4.2.0", - "request": "^2.79.0", - "retry-request": "^3.0.0", - "split-array-stream": "^1.0.0", - "stream-events": "^1.0.1", - "string-format-obj": "^1.1.0", - "through2": "^2.0.3" + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.4", + "ent": "2.2.0", + "extend": "3.0.1", + "google-auto-auth": "0.7.2", + "is": "3.2.1", + "log-driver": "1.2.7", + "methmeth": "1.1.0", + "modelo": "4.2.3", + "request": "2.83.0", + "retry-request": "3.3.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.4", + "string-format-obj": "1.1.1", + "through2": "2.0.3" }, "dependencies": { "google-auto-auth": { @@ -1042,10 +1042,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.7.2.tgz", "integrity": "sha512-ux2n2AE2g3+vcLXwL4dP/M12SFMRX5dzCzBfhAEkTeAB7dpyGdOIEj7nmUx0BHKaCcUQrRWg9kT63X/Mmtk1+A==", "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.3.0", - "google-auth-library": "^0.10.0", - "request": "^2.79.0" + "async": "2.6.0", + "gcp-metadata": "0.3.1", + "google-auth-library": "0.10.0", + "request": "2.83.0" } } } @@ -1055,22 +1055,22 @@ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-1.1.1.tgz", "integrity": "sha1-ZZC1zm53lVbJzHBDvWRJ1rwHgd4=", "requires": { - "@google-cloud/common": "^0.13.0", - "arrify": "^1.0.0", - "async": "^2.0.1", - "concat-stream": "^1.5.0", - "create-error-class": "^3.0.2", - "duplexify": "^3.2.0", - "extend": "^3.0.0", - "gcs-resumable-upload": "^0.7.1", - "hash-stream-validation": "^0.2.1", - "is": "^3.0.1", - "mime-types": "^2.0.8", - "once": "^1.3.1", - "pumpify": "^1.3.3", - "stream-events": "^1.0.1", - "string-format-obj": "^1.0.0", - "through2": "^2.0.0" + "@google-cloud/common": "0.13.6", + "arrify": "1.0.1", + "async": "2.6.0", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.4", + "extend": "3.0.1", + "gcs-resumable-upload": "0.7.7", + "hash-stream-validation": "0.2.1", + "is": "3.2.1", + "mime-types": "2.1.17", + "once": "1.4.0", + "pumpify": "1.4.0", + "stream-events": "1.0.4", + "string-format-obj": "1.1.1", + "through2": "2.0.3" } }, "@reactioncommerce/eslint-config": { @@ -1084,13 +1084,13 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections/-/file-collections-0.5.0.tgz", "integrity": "sha512-92983/xIT6xAnHR0+4XKVY9jUp0vpobLhG0wCyegvX/dkSRO5srL4tz1ZN/77pxe7d1MfEEYo6MLQ/YmluIw6A==", "requires": { - "babel-runtime": "^6.26.0", - "content-disposition": "^0.5.2", - "debug": "^3.1.0", - "path-parser": "^4.0.4", - "query-string": "^5.1.0", - "tus-js-client": "^1.4.5", - "tus-node-server": "^0.2.8" + "babel-runtime": "6.26.0", + "content-disposition": "0.5.2", + "debug": "3.1.0", + "path-parser": "4.0.4", + "query-string": "5.1.0", + "tus-js-client": "1.5.1", + "tus-node-server": "0.2.11" }, "dependencies": { "debug": { @@ -1108,8 +1108,8 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections-sa-base/-/file-collections-sa-base-0.0.2.tgz", "integrity": "sha512-yUIot7kvA8qNaowk4FJJMxJ2+lME74zjTBJxGXjauS3USeBw27NjlckpW3F8LwizPzW8L5J3BmYRHGqXIVGykQ==", "requires": { - "babel-runtime": "^6.26.0", - "debug": "^3.1.0" + "babel-runtime": "6.26.0", + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -1127,10 +1127,10 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/file-collections-sa-gridfs/-/file-collections-sa-gridfs-0.0.2.tgz", "integrity": "sha512-taswRPu3iIq+OsO5Q1Ohn/uealYRHKZSss0/DFdahaWYW7hcZualruvysqbzbtN42VWmZ9Yv+sVCtkVIxiwN2w==", "requires": { - "@reactioncommerce/file-collections-sa-base": "^0.0.2", - "babel-runtime": "^6.26.0", - "debug": "^3.1.0", - "gridfs-stream": "^1.1.1" + "@reactioncommerce/file-collections-sa-base": "0.0.2", + "babel-runtime": "6.26.0", + "debug": "3.1.0", + "gridfs-stream": "1.1.1" }, "dependencies": { "debug": { @@ -1148,7 +1148,7 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/hooks/-/hooks-1.0.2.tgz", "integrity": "sha512-YINoM2alXOJZD6X9KbD6n2tsUgvGhk2QG4Hkc71Pp9ah+JXi+CC2wbZLfxr3qHoqwNHG9Ovny7OVucqnXzLl9w==", "requires": { - "lodash": "^4.17.5" + "lodash": "4.17.10" } }, "@reactioncommerce/job-queue": { @@ -1156,7 +1156,7 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/job-queue/-/job-queue-1.0.4.tgz", "integrity": "sha512-nav+E2H0+OxnOrSejZJi4tXCE1Zp81dEFcxa4JWqN4Y3o6/1QH7Hf5jR0FBtUIzsDoMeyh0TigRLBCbJddoMeA==", "requires": { - "later": "^1.2.0" + "later": "1.2.0" } }, "@reactioncommerce/logger": { @@ -1164,9 +1164,9 @@ "resolved": "https://registry.npmjs.org/@reactioncommerce/logger/-/logger-1.1.1.tgz", "integrity": "sha512-gsoM8QEcZwFvJLLX2NAzJgj1eI+5TigvmOPqYp3zCX3ZZdEy4imihKof7mtnUH7WQFpqsDvW90XJXNUeb/NCfw==", "requires": { - "bunyan": "^1.8.12", - "bunyan-format": "^0.2.1", - "node-loggly-bulk": "^2.2.2" + "bunyan": "1.8.12", + "bunyan-format": "0.2.1", + "node-loggly-bulk": "2.2.2" }, "dependencies": { "bunyan": { @@ -1174,10 +1174,10 @@ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "dtrace-provider": "0.8.5", + "moment": "2.20.1", + "mv": "2.1.1", + "safe-json-stringify": "1.0.4" } }, "node-loggly-bulk": { @@ -1185,9 +1185,9 @@ "resolved": "https://registry.npmjs.org/node-loggly-bulk/-/node-loggly-bulk-2.2.2.tgz", "integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==", "requires": { - "json-stringify-safe": "5.0.x", - "moment": "^2.18.1", - "request": ">=2.76.0 <3.0.0" + "json-stringify-safe": "5.0.1", + "moment": "2.20.1", + "request": "2.83.0" } } } @@ -1233,7 +1233,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.18", "negotiator": "0.6.1" }, "dependencies": { @@ -1247,7 +1247,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } } } @@ -1257,8 +1257,8 @@ "resolved": "https://registry.npmjs.org/accounting-js/-/accounting-js-1.1.1.tgz", "integrity": "sha1-f+Sz9wwB6+C4XALF8QfxOTuIDJ4=", "requires": { - "is-string": "^1.0.4", - "object-assign": "^4.0.1" + "is-string": "1.0.4", + "object-assign": "4.1.1" } }, "acorn": { @@ -1273,7 +1273,7 @@ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "acorn": "^5.0.0" + "acorn": "5.3.0" } }, "acorn-jsx": { @@ -1282,7 +1282,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "^3.0.4" + "acorn": "3.3.0" }, "dependencies": { "acorn": { @@ -1299,7 +1299,7 @@ "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "es6-promisify": "5.0.0" } }, "airbnb-prop-types": { @@ -1307,14 +1307,14 @@ "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.8.1.tgz", "integrity": "sha512-z7pAKmUyAsp/2SqLCTf9hzFc2JLspijB9t+I9D/i0NnYkkjUoV16+W00U6r7+HBM6Q3VqXSjYuUsLX1L71aciw==", "requires": { - "array.prototype.find": "^2.0.4", - "function.prototype.name": "^1.0.3", - "has": "^1.0.1", - "is-regex": "^1.0.4", - "object.assign": "^4.0.4", - "object.entries": "^1.0.4", - "prop-types": "^15.5.10", - "prop-types-exact": "^1.1.1" + "array.prototype.find": "2.0.4", + "function.prototype.name": "1.1.0", + "has": "1.0.1", + "is-regex": "1.0.4", + "object.assign": "4.1.0", + "object.entries": "1.0.4", + "prop-types": "15.6.0", + "prop-types-exact": "1.1.2" } }, "ajv": { @@ -1322,10 +1322,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -1339,9 +1339,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -1355,7 +1355,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "^2.0.0" + "string-width": "2.1.1" } }, "ansi-escapes": { @@ -1374,7 +1374,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } }, "ansicolors": { @@ -1394,8 +1394,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "aphrodite": { @@ -1403,9 +1403,9 @@ "resolved": "https://registry.npmjs.org/aphrodite/-/aphrodite-1.2.5.tgz", "integrity": "sha1-g1jDbIC7A67puXFlqqcBhiJbSYM=", "requires": { - "asap": "^2.0.3", - "inline-style-prefixer": "^3.0.1", - "string-hash": "^1.1.3" + "asap": "2.0.6", + "inline-style-prefixer": "3.0.8", + "string-hash": "1.1.3" }, "dependencies": { "inline-style-prefixer": { @@ -1413,8 +1413,8 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" + "bowser": "1.9.2", + "css-in-js-utils": "2.0.0" } } } @@ -1424,7 +1424,7 @@ "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.0.9.tgz", "integrity": "sha512-bspKyM9gBDxv2nnKPSErzzZiSOdvRXnHwS/3gwBucZG1Dz5U4H6xyPtCx754/YfRto1yT9bUMc7vW85jJ/acOA==", "requires": { - "graphql-extensions": "^0.0.x" + "graphql-extensions": "0.0.8" } }, "apollo-link": { @@ -1432,9 +1432,9 @@ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz", "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==", "requires": { - "@types/node": "^9.4.6", - "apollo-utilities": "^1.0.0", - "zen-observable-ts": "^0.8.6" + "@types/node": "9.4.6", + "apollo-utilities": "1.0.10", + "zen-observable-ts": "0.8.8" } }, "apollo-server-core": { @@ -1442,9 +1442,9 @@ "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.3.2.tgz", "integrity": "sha1-82hVo+vcLXe4ucRUOAvx1wYQX/w=", "requires": { - "apollo-cache-control": "^0.0.x", - "apollo-tracing": "^0.1.0", - "graphql-extensions": "^0.0.x" + "apollo-cache-control": "0.0.9", + "apollo-tracing": "0.1.3", + "graphql-extensions": "0.0.8" } }, "apollo-server-express": { @@ -1452,8 +1452,8 @@ "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.3.2.tgz", "integrity": "sha1-D/ggHAvzYoBKFR4TmXZ9rmq34wk=", "requires": { - "apollo-server-core": "^1.3.2", - "apollo-server-module-graphiql": "^1.3.0" + "apollo-server-core": "1.3.2", + "apollo-server-module-graphiql": "1.3.2" } }, "apollo-server-module-graphiql": { @@ -1466,7 +1466,7 @@ "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.3.tgz", "integrity": "sha512-LZhSDL4oe9iNkedzJk6tQ6zLXmw/lwCvB0HDZyJjdp8rqrW+RN0Fk6MmZtNq9Z0olwOUh8EN3vIpzLwR3CJTrw==", "requires": { - "graphql-extensions": "^0.0.x" + "graphql-extensions": "0.0.8" } }, "apollo-utilities": { @@ -1480,7 +1480,7 @@ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "default-require-extensions": "1.0.0" } }, "aproba": { @@ -1503,8 +1503,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.3" } }, "argparse": { @@ -1513,7 +1513,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "aria-query": { @@ -1523,7 +1523,7 @@ "dev": true, "requires": { "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "commander": "2.14.1" } }, "arr-diff": { @@ -1532,7 +1532,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -1564,8 +1564,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "1.1.2", + "es-abstract": "1.9.0" } }, "array-union": { @@ -1574,7 +1574,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "array-uniq": "1.0.3" } }, "array-uniq": { @@ -1593,8 +1593,8 @@ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "1.1.2", + "es-abstract": "1.9.0" } }, "array.prototype.flatten": { @@ -1602,9 +1602,9 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz", "integrity": "sha512-3GhsA78XgK//wQKbhUe6L93kknekGlTRY0kvYcpuSi0aa9rVrMr/okeIIv/XSpN8fZ5iUM+bWifhf2/7CYKtIg==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.10.0", - "function-bind": "^1.1.1" + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1" }, "dependencies": { "es-abstract": { @@ -1612,11 +1612,11 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" } } } @@ -1675,7 +1675,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "^4.14.0" + "lodash": "4.17.10" } }, "async-each": { @@ -1706,7 +1706,7 @@ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.2.tgz", "integrity": "sha512-NUj0itVSnpFkUYCj3XKSRCZ7N9gPwWcyX/tF7HosqyDBPMSygALivvJIGI8VvlPcunns5khMkpxoNshvmhy/ZQ==", "requires": { - "core-js": "^2.5.0" + "core-js": "2.5.3" } }, "authorize-net": { @@ -1714,11 +1714,11 @@ "resolved": "https://registry.npmjs.org/authorize-net/-/authorize-net-1.1.1.tgz", "integrity": "sha512-i1xAX1Ba01lehno84ipjUF1lVwFCyX7089Bp/SzrP1YsKl08Hz0D1wi6L8+l8R2a6UQah7Bm+v7DaHSzDyLWsw==", "requires": { - "42-cent-base": "^0.8.0", - "42-cent-util": "^1.0.0", - "bluebird": "^2.3.11", + "42-cent-base": "0.8.0", + "42-cent-util": "1.0.0", + "bluebird": "2.11.0", "request": "2.83.0", - "xml2js": "^0.4.6" + "xml2js": "0.4.19" } }, "autoprefixer": { @@ -1726,12 +1726,12 @@ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", "requires": { - "browserslist": "^2.11.3", - "caniuse-lite": "^1.0.30000805", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^6.0.17", - "postcss-value-parser": "^3.2.3" + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000813", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.19", + "postcss-value-parser": "3.3.0" } }, "autosize": { @@ -1763,9 +1763,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -1778,11 +1778,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1790,7 +1790,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1816,8 +1816,8 @@ "@babel/traverse": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "eslint-scope": "~3.7.1", - "eslint-visitor-keys": "^1.0.0" + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0" }, "dependencies": { "@babel/code-frame": { @@ -1826,9 +1826,9 @@ "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@babel/helper-function-name": { @@ -1860,7 +1860,7 @@ "@babel/code-frame": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "@babel/traverse": { @@ -1873,10 +1873,10 @@ "@babel/helper-function-name": "7.0.0-beta.36", "@babel/types": "7.0.0-beta.36", "babylon": "7.0.0-beta.36", - "debug": "^3.0.1", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.10" } }, "@babel/types": { @@ -1885,9 +1885,9 @@ "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" } }, "babylon": { @@ -1918,14 +1918,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "jsesc": { @@ -1946,11 +1946,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -1959,8 +1959,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-module-imports": { @@ -1970,7 +1970,7 @@ "dev": true, "requires": { "babel-types": "7.0.0-beta.3", - "lodash": "^4.2.0" + "lodash": "4.17.10" }, "dependencies": { "babel-types": { @@ -1979,9 +1979,9 @@ "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" } }, "to-fast-properties": { @@ -1997,8 +1997,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-jest": { @@ -2007,8 +2007,8 @@ "integrity": "sha512-rEdN/jevSuX0IQKcUqwqOGa0gDNis4jGY52Rq53aizfDGPwQYNJq+f9NCMT1HUhtUZhYSjvfGUfHQWBRT1/icA==", "dev": true, "requires": { - "babel-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.1" + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.4.1" } }, "babel-messages": { @@ -2016,7 +2016,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-dynamic-import-node": { @@ -2025,7 +2025,7 @@ "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0" + "babel-plugin-syntax-dynamic-import": "6.18.0" } }, "babel-plugin-inline-import": { @@ -2043,9 +2043,9 @@ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", "dev": true, "requires": { - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.7.5", - "test-exclude": "^4.1.1" + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.2", + "test-exclude": "4.2.0" } }, "babel-plugin-jest-hoist": { @@ -2060,11 +2060,11 @@ "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", "dev": true, "requires": { - "babel-helper-module-imports": "^7.0.0-beta.3", - "babel-types": "^6.26.0", - "glob": "^7.1.1", - "lodash": "^4.17.4", - "require-package-name": "^2.0.1" + "babel-helper-module-imports": "7.0.0-beta.3", + "babel-types": "6.26.0", + "glob": "7.1.2", + "lodash": "4.17.10", + "require-package-name": "2.0.1" } }, "babel-plugin-module-resolver": { @@ -2073,11 +2073,11 @@ "integrity": "sha512-UgBbu6ElA6K53+KqriPO0T8B5QN8Ln7E0FSDxqSgUYkTGLUrgnScWvXzUCh3yEb3ZtNMInXOZwc/UMlbFNpE1A==", "dev": true, "requires": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" + "find-babel-config": "1.1.0", + "glob": "7.1.2", + "pkg-up": "2.0.0", + "reselect": "3.0.1", + "resolve": "1.5.0" } }, "babel-plugin-rewire-exports": { @@ -2086,7 +2086,7 @@ "integrity": "sha512-mqPQnNKIwP1lGYRSgF+fXDfXYScCDNStfp48ZtLLI3wAm7hbijQrQR41qkK7F5mb8R5G+DG2D61dKSgi/fG9qw==", "dev": true, "requires": { - "babel-template": "^6.16.0" + "babel-template": "6.26.0" } }, "babel-plugin-syntax-class-properties": { @@ -2113,10 +2113,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" }, "dependencies": { "ansi-styles": { @@ -2134,11 +2134,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "globals": { @@ -2151,7 +2151,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -2167,8 +2167,8 @@ "integrity": "sha512-gW3+spyB8fkSAI9fX+41BQMwar5LjR+nyKa2QRvK22snxnI29+jJVAMfId+osucFJzJJvhlvzKWnfwX8Omodvg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^22.4.1", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" + "babel-plugin-jest-hoist": "22.4.1", + "babel-plugin-syntax-object-rest-spread": "6.13.0" } }, "babel-preset-meteor": { @@ -2211,13 +2211,13 @@ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" }, "dependencies": { "babel-core": { @@ -2225,25 +2225,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babylon": { @@ -2261,7 +2261,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } } } @@ -2271,8 +2271,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -2280,11 +2280,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.10" }, "dependencies": { "babylon": { @@ -2299,15 +2299,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.10" }, "dependencies": { "babylon": { @@ -2327,10 +2327,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -2350,13 +2350,13 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -2365,7 +2365,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "isobject": { @@ -2393,7 +2393,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "binary-extensions": { @@ -2408,8 +2408,8 @@ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" }, "dependencies": { "process-nextick-args": { @@ -2424,13 +2424,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -2439,7 +2439,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } } } @@ -2449,7 +2449,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "~2.0.0" + "inherits": "2.0.3" } }, "bluebird": { @@ -2463,15 +2463,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", + "depd": "1.1.2", + "http-errors": "1.6.2", "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "~1.6.15" + "type-is": "1.6.15" } }, "boolbase": { @@ -2485,7 +2485,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.x.x" + "hoek": "4.2.0" } }, "bootstrap": { @@ -2514,13 +2514,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" } }, "brace-expansion": { @@ -2528,7 +2528,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2538,9 +2538,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "braintree": { @@ -2550,7 +2550,7 @@ "requires": { "@braintree/wrap-promise": "1.1.1", "dateformat": "1.0.1-1.2.3", - "depd": "~1.1.0", + "depd": "1.1.2", "readable-stream": "1.1.10", "semver": "5.1.0", "underscore": "1.8.3", @@ -2562,9 +2562,9 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.10.tgz", "integrity": "sha1-1NwuUxnpyQ0eccaTkO9izZCCf2U=", "requires": { - "core-util-is": "~1.0.0", + "core-util-is": "1.0.2", "debuglog": "0.0.2", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "semver": { @@ -2587,7 +2587,7 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.13.tgz", "integrity": "sha1-Q4/zsdhaUa1ln/wuvoNAPhDJhyI=", "requires": { - "sax": ">=0.1.1" + "sax": "1.2.4" } } } @@ -2625,8 +2625,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "requires": { - "caniuse-lite": "^1.0.30000792", - "electron-to-chromium": "^1.3.30" + "caniuse-lite": "1.0.30000813", + "electron-to-chromium": "1.3.36" } }, "bser": { @@ -2635,7 +2635,7 @@ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { - "node-int64": "^0.4.0" + "node-int64": "0.4.0" } }, "bson": { @@ -2650,8 +2650,8 @@ "dev": true, "requires": { "base64-js": "0.0.8", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "ieee754": "1.1.11", + "isarray": "1.0.0" }, "dependencies": { "base64-js": { @@ -2668,8 +2668,8 @@ "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "dev": true, "requires": { - "buffer-alloc-unsafe": "^0.1.0", - "buffer-fill": "^0.1.0" + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.1" } }, "buffer-alloc-unsafe": { @@ -2714,9 +2714,9 @@ "resolved": "https://registry.npmjs.org/bunyan-format/-/bunyan-format-0.2.1.tgz", "integrity": "sha1-pLOw2ABwqGUnlBcmnj8A/wL7y0c=", "requires": { - "ansicolors": "~0.2.1", - "ansistyles": "~0.1.1", - "xtend": "~2.1.1" + "ansicolors": "0.2.1", + "ansistyles": "0.1.3", + "xtend": "2.1.2" }, "dependencies": { "ansicolors": { @@ -2734,7 +2734,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "requires": { - "object-keys": "~0.4.0" + "object-keys": "0.4.0" } } } @@ -2750,15 +2750,15 @@ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" }, "dependencies": { "isobject": { @@ -2789,7 +2789,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "^0.2.0" + "callsites": "0.2.0" } }, "callsites": { @@ -2824,7 +2824,7 @@ "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "dev": true, "requires": { - "underscore-contrib": "~0.3.0" + "underscore-contrib": "0.3.0" } }, "center-align": { @@ -2832,8 +2832,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chai": { @@ -2842,12 +2842,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", - "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" }, "dependencies": { "deep-eql": { @@ -2856,7 +2856,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "type-detect": "4.0.3" } }, "type-detect": { @@ -2877,9 +2877,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "requires": { - "ansi-styles": "^3.2.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.2.0" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "5.2.0" } }, "change-emitter": { @@ -2910,12 +2910,12 @@ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "dev": true, "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.10", + "parse5": "3.0.3" } }, "chokidar": { @@ -2925,15 +2925,15 @@ "dev": true, "optional": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, "chownr": { @@ -2964,10 +2964,10 @@ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -2976,7 +2976,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "is-accessor-descriptor": { @@ -2985,7 +2985,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2994,7 +2994,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3005,7 +3005,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3014,7 +3014,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3025,9 +3025,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "isobject": { @@ -3061,7 +3061,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "2.0.0" } }, "cli-width": { @@ -3075,8 +3075,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" } }, @@ -3091,10 +3091,10 @@ "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", "dev": true, "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.1", - "kind-of": "^3.2.2", - "shallow-clone": "^0.1.2" + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" }, "dependencies": { "for-own": { @@ -3103,7 +3103,7 @@ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } } } @@ -3113,7 +3113,7 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.0" } }, "co": { @@ -3132,8 +3132,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color": { @@ -3141,8 +3141,8 @@ "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz", "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "1.9.1", + "color-string": "1.5.2" } }, "color-convert": { @@ -3150,7 +3150,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -3163,8 +3163,8 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" } }, "colors": { @@ -3178,7 +3178,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -3208,9 +3208,9 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } }, "configstore": { @@ -3218,12 +3218,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" } }, "connect": { @@ -3233,7 +3233,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "utils-merge": "1.0.1" } }, @@ -3242,7 +3242,7 @@ "resolved": "https://registry.npmjs.org/connect-query/-/connect-query-1.0.0.tgz", "integrity": "sha1-3kT1dyCdokBNH8BGktGkEY5YIRk=", "requires": { - "qs": "~6.4.0" + "qs": "6.4.0" }, "dependencies": { "qs": { @@ -3316,7 +3316,7 @@ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz", "integrity": "sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw==", "requires": { - "toggle-selection": "^1.0.3" + "toggle-selection": "1.0.6" } }, "core-js": { @@ -3334,8 +3334,8 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", "requires": { - "object-assign": "^4", - "vary": "^1" + "object-assign": "4.1.1", + "vary": "1.1.2" } }, "country-data": { @@ -3343,8 +3343,8 @@ "resolved": "https://registry.npmjs.org/country-data/-/country-data-0.0.31.tgz", "integrity": "sha1-gJZrjh0Uf6bWpYnTKTP4eTd0lW0=", "requires": { - "currency-symbol-map": "~2", - "underscore": ">1.4.4" + "currency-symbol-map": "2.2.0", + "underscore": "1.8.3" }, "dependencies": { "underscore": { @@ -3359,7 +3359,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "^1.0.0" + "capture-stack-trace": "1.0.0" } }, "cross-spawn": { @@ -3367,9 +3367,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, "crypt": { @@ -3382,7 +3382,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.x.x" + "boom": "5.2.0" }, "dependencies": { "boom": { @@ -3390,7 +3390,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.x.x" + "hoek": "4.2.0" } } } @@ -3410,7 +3410,7 @@ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz", "integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==", "requires": { - "hyphenate-style-name": "^1.0.2" + "hyphenate-style-name": "1.0.2" } }, "css-select": { @@ -3419,10 +3419,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.0", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.1" } }, "css-what": { @@ -3443,7 +3443,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "0.3.2" } }, "cuid": { @@ -3481,7 +3481,7 @@ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", "requires": { - "d3-color": "1" + "d3-color": "1.0.3" } }, "d3-scale": { @@ -3489,13 +3489,13 @@ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", "requires": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-color": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" + "d3-array": "1.2.1", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-format": "1.2.0", + "d3-interpolate": "1.1.5", + "d3-time": "1.0.7", + "d3-time-format": "2.1.0" } }, "d3-scale-chromatic": { @@ -3503,7 +3503,7 @@ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.1.1.tgz", "integrity": "sha1-gRQG6OCdq3iknaxKMgR9XT7dDEQ=", "requires": { - "d3-interpolate": "1" + "d3-interpolate": "1.1.5" } }, "d3-time": { @@ -3516,7 +3516,7 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.0.tgz", "integrity": "sha512-mqTsfDTylgwE3YE/VNs9oB2OGX274fO0B5j1irbgLQI+X3FPoJg25pesNxrcdZ2nBeRx/6sHDJlDyMIjWL0BGQ==", "requires": { - "d3-time": "1" + "d3-time": "1.0.7" } }, "damerau-levenshtein": { @@ -3530,7 +3530,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "data-uri-to-buffer": { @@ -3574,14 +3574,14 @@ "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", "dev": true, "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" } }, "decompress-response": { @@ -3589,7 +3589,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.0" } }, "decompress-tar": { @@ -3598,9 +3598,9 @@ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.6.1" } }, "decompress-tarbz2": { @@ -3609,11 +3609,11 @@ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.2.5" }, "dependencies": { "file-type": { @@ -3630,9 +3630,9 @@ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" } }, "decompress-unzip": { @@ -3641,10 +3641,10 @@ "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "dev": true, "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.9.1" }, "dependencies": { "file-type": { @@ -3659,8 +3659,8 @@ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } } } @@ -3712,7 +3712,7 @@ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { - "strip-bom": "^2.0.0" + "strip-bom": "2.0.0" }, "dependencies": { "strip-bom": { @@ -3721,7 +3721,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } } } @@ -3731,8 +3731,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "foreach": "2.0.5", + "object-keys": "1.0.11" } }, "define-property": { @@ -3741,8 +3741,8 @@ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -3759,9 +3759,9 @@ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" + "ast-types": "0.11.3", + "escodegen": "1.9.0", + "esprima": "3.1.3" } }, "del": { @@ -3770,13 +3770,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" } }, "delayed-stream": { @@ -3821,7 +3821,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "detect-it": { @@ -3829,10 +3829,10 @@ "resolved": "https://registry.npmjs.org/detect-it/-/detect-it-3.0.3.tgz", "integrity": "sha1-jhPaoLYhJhUMv3bQg6HTTRsH0HE=", "requires": { - "detect-hover": "^1.0.2", - "detect-passive-events": "^1.0.4", - "detect-pointer": "^1.0.2", - "detect-touch-events": "^2.0.1" + "detect-hover": "1.0.2", + "detect-passive-events": "1.0.4", + "detect-pointer": "1.0.2", + "detect-touch-events": "2.0.1" } }, "detect-libc": { @@ -3893,10 +3893,10 @@ "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.5.4.tgz", "integrity": "sha512-BcI782MfTm3wCxeIS5c7tAutyTwEIANtuu3W6/xkoJRwiqhRXKX3BbGlycUxxyzMsKdvvoavxgrC3EMPFNYL9A==", "requires": { - "asap": "^2.0.6", - "invariant": "^2.0.0", - "lodash": "^4.2.0", - "redux": "^3.7.1" + "asap": "2.0.6", + "invariant": "2.2.2", + "lodash": "4.17.10", + "redux": "3.7.2" } }, "doctrine": { @@ -3905,7 +3905,7 @@ "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.2" } }, "dom-helpers": { @@ -3919,8 +3919,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { @@ -3936,7 +3936,7 @@ "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.0.2.tgz", "integrity": "sha512-SL5wdVwVguNehkLOpq8Sj3o0C2A5LMBd6Mc7XdnA02n90hLvXXu0vdDirGhdRoP581NgANi1Swe4Omq7SD4lTA==", "requires": { - "ssr-window": "^1.0.0" + "ssr-window": "1.0.0" } }, "domelementtype": { @@ -3951,7 +3951,7 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "4.0.2" } }, "domhandler": { @@ -3960,7 +3960,7 @@ "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { @@ -3969,8 +3969,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "dot-prop": { @@ -3978,7 +3978,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "1.0.1" } }, "dtrace-provider": { @@ -3987,7 +3987,7 @@ "integrity": "sha1-mOu6Ihr6xG4cOf02hY2Pk2dSS5I=", "optional": true, "requires": { - "nan": "^2.3.3" + "nan": "2.8.0" } }, "duplexer": { @@ -4006,10 +4006,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" } }, "ecc-jsbn": { @@ -4018,7 +4018,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "ecdsa-sig-formatter": { @@ -4026,8 +4026,8 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", "requires": { - "base64url": "^2.0.0", - "safe-buffer": "^5.0.1" + "base64url": "2.0.0", + "safe-buffer": "5.1.1" } }, "ee-first": { @@ -4056,7 +4056,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.19" } }, "end-of-stream": { @@ -4064,7 +4064,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "ent": { @@ -4084,22 +4084,22 @@ "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", "dev": true, "requires": { - "cheerio": "^1.0.0-rc.2", - "function.prototype.name": "^1.0.3", - "has": "^1.0.1", - "is-boolean-object": "^1.0.0", - "is-callable": "^1.1.3", - "is-number-object": "^1.0.3", - "is-string": "^1.0.4", - "is-subset": "^0.1.1", - "lodash": "^4.17.4", - "object-inspect": "^1.5.0", - "object-is": "^1.0.1", - "object.assign": "^4.1.0", - "object.entries": "^1.0.4", - "object.values": "^1.0.4", - "raf": "^3.4.0", - "rst-selector-parser": "^2.2.3" + "cheerio": "1.0.0-rc.2", + "function.prototype.name": "1.1.0", + "has": "1.0.1", + "is-boolean-object": "1.0.0", + "is-callable": "1.1.3", + "is-number-object": "1.0.3", + "is-string": "1.0.4", + "is-subset": "0.1.1", + "lodash": "4.17.10", + "object-inspect": "1.5.0", + "object-is": "1.0.1", + "object.assign": "4.1.0", + "object.entries": "1.0.4", + "object.values": "1.0.4", + "raf": "3.4.0", + "rst-selector-parser": "2.2.3" } }, "enzyme-to-json": { @@ -4108,7 +4108,7 @@ "integrity": "sha512-PrgRyZAgEwOrh5/8BtBWrwGcv1mC7yNohytIciAX6SUqDaXg1BlU8CepYQ9BgnDP1i1jTB65qJJITMMCph+T6A==", "dev": true, "requires": { - "lodash": "^4.17.4" + "lodash": "4.17.10" } }, "error-ex": { @@ -4116,7 +4116,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "es-abstract": { @@ -4124,11 +4124,11 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" } }, "es-to-primitive": { @@ -4136,9 +4136,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" } }, "es6-error": { @@ -4152,7 +4152,7 @@ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "^4.0.3" + "es6-promise": "4.2.4" }, "dependencies": { "es6-promise": { @@ -4179,11 +4179,11 @@ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.5.6" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" }, "dependencies": { "source-map": { @@ -4201,44 +4201,44 @@ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "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": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", + "ajv": "5.3.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.1", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.4", + "esquery": "1.0.1", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.3.0", + "ignore": "3.3.8", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.10", + "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": "1.1.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", "table": "4.0.2", - "text-table": "~0.2.0" + "text-table": "0.2.0" }, "dependencies": { "debug": { @@ -4256,7 +4256,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.2" } } } @@ -4266,8 +4266,8 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-meteor/-/eslint-import-resolver-meteor-0.4.0.tgz", "integrity": "sha1-yGhjhAghIIz4EzxczlGQnCamFWk=", "requires": { - "object-assign": "^4.0.1", - "resolve": "^1.1.6" + "object-assign": "4.1.1", + "resolve": "1.5.0" } }, "eslint-import-resolver-node": { @@ -4276,8 +4276,8 @@ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.5.0" + "debug": "2.6.9", + "resolve": "1.5.0" } }, "eslint-module-utils": { @@ -4286,8 +4286,8 @@ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", "dev": true, "requires": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" + "debug": "2.6.9", + "pkg-dir": "1.0.0" } }, "eslint-plugin-import": { @@ -4296,16 +4296,16 @@ "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", "dev": true, "requires": { - "builtin-modules": "^1.1.1", - "contains-path": "^0.1.0", - "debug": "^2.6.8", + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.1.1", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0" + "eslint-import-resolver-node": "0.3.2", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" }, "dependencies": { "doctrine": { @@ -4314,8 +4314,8 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "2.0.2", + "isarray": "1.0.0" } } } @@ -4332,13 +4332,13 @@ "integrity": "sha1-VFg9GuRCSDFi4EDhPMMYZUZRAOU=", "dev": true, "requires": { - "aria-query": "^0.7.0", - "array-includes": "^3.0.3", + "aria-query": "0.7.1", + "array-includes": "3.0.3", "ast-types-flow": "0.0.7", - "axobject-query": "^0.1.0", - "damerau-levenshtein": "^1.0.0", - "emoji-regex": "^6.1.0", - "jsx-ast-utils": "^2.0.0" + "axobject-query": "0.1.0", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "2.0.1" } }, "eslint-plugin-react": { @@ -4347,10 +4347,10 @@ "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", "dev": true, "requires": { - "doctrine": "^2.0.2", - "has": "^1.0.1", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.0" + "doctrine": "2.0.2", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" } }, "eslint-scope": { @@ -4359,8 +4359,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "4.2.0", + "estraverse": "4.2.0" } }, "eslint-visitor-keys": { @@ -4375,8 +4375,8 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "5.5.3", + "acorn-jsx": "3.0.1" }, "dependencies": { "acorn": { @@ -4399,7 +4399,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "4.2.0" } }, "esrecurse": { @@ -4408,8 +4408,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "^4.1.0", - "object-assign": "^4.0.1" + "estraverse": "4.2.0", + "object-assign": "4.1.1" } }, "estraverse": { @@ -4434,13 +4434,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" } }, "exec-sh": { @@ -4449,7 +4449,7 @@ "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", "dev": true, "requires": { - "merge": "^1.1.3" + "merge": "1.2.0" } }, "execa": { @@ -4457,13 +4457,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "exenv": { @@ -4483,7 +4483,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -4492,7 +4492,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "expect": { @@ -4501,12 +4501,12 @@ "integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^22.4.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.0" + "ansi-styles": "3.2.0", + "jest-diff": "22.4.0", + "jest-get-type": "22.1.0", + "jest-matcher-utils": "22.4.0", + "jest-message-util": "22.4.0", + "jest-regex-util": "22.1.0" } }, "express": { @@ -4514,36 +4514,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.1", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.0", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.2", + "proxy-addr": "2.0.3", "qs": "6.5.1", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.1", "send": "0.16.1", "serve-static": "1.13.1", "setprototypeof": "1.1.0", - "statuses": "~1.3.1", - "type-is": "~1.6.15", + "statuses": "1.3.1", + "type-is": "1.6.15", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "path-to-regexp": { @@ -4569,8 +4569,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -4579,7 +4579,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -4590,9 +4590,9 @@ "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" } }, "extglob": { @@ -4601,7 +4601,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "extsprintf": { @@ -4636,7 +4636,7 @@ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "^2.0.0" + "bser": "2.0.0" } }, "fbjs": { @@ -4644,13 +4644,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" }, "dependencies": { "core-js": { @@ -4666,7 +4666,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "fibers": { @@ -4680,7 +4680,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "file-entry-cache": { @@ -4689,8 +4689,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "1.3.0", + "object-assign": "4.1.1" } }, "file-type": { @@ -4717,8 +4717,8 @@ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "glob": "7.1.2", + "minimatch": "3.0.4" } }, "fill-range": { @@ -4727,11 +4727,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -4740,12 +4740,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" } }, "find-babel-config": { @@ -4754,8 +4754,8 @@ "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", "dev": true, "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" + "json5": "0.5.1", + "path-exists": "3.0.0" } }, "find-cache-dir": { @@ -4764,9 +4764,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" }, "dependencies": { "pkg-dir": { @@ -4775,7 +4775,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } } } @@ -4791,7 +4791,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "flat-cache": { @@ -4800,10 +4800,10 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" } }, "flatten-obj": { @@ -4811,7 +4811,7 @@ "resolved": "https://registry.npmjs.org/flatten-obj/-/flatten-obj-3.1.1.tgz", "integrity": "sha512-PyxxiUNTcuh2Ey9ooWlYILcPeh6/OdCyLrRWQejtCYqzcuJrWlATftbX/z447AvmIMKDEcAwBE8dEXz94Zlc8A==", "requires": { - "isobj": "^1.0.0" + "isobj": "1.0.0" } }, "flushwritable": { @@ -4836,7 +4836,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "foreach": { @@ -4854,9 +4854,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "forwarded": { @@ -4870,7 +4870,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { @@ -4889,8 +4889,8 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "inherits": "2.0.3", + "readable-stream": "2.3.3" } }, "fs-constants": { @@ -4905,9 +4905,9 @@ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, "fs-minipass": { @@ -4915,7 +4915,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.1" } }, "fs-readdir-recursive": { @@ -4936,8 +4936,8 @@ "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { "ajv": { @@ -4945,8 +4945,8 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "assert-plus": { @@ -4969,7 +4969,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "cryptiles": { @@ -4977,7 +4977,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "extsprintf": { @@ -4990,9 +4990,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "har-schema": { @@ -5005,8 +5005,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "hawk": { @@ -5014,10 +5014,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -5030,9 +5030,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "is-fullwidth-code-point": { @@ -5040,7 +5040,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "mime-db": { @@ -5053,8 +5053,8 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "performance-now": { @@ -5072,10 +5072,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -5090,28 +5090,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, "semver": { @@ -5124,7 +5124,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "string-width": { @@ -5132,9 +5132,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -5142,7 +5142,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "tar": { @@ -5150,9 +5150,9 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "verror": { @@ -5170,10 +5170,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" } }, "fstream-ignore": { @@ -5183,9 +5183,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, "ftp": { @@ -5194,7 +5194,7 @@ "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", "dev": true, "requires": { - "readable-stream": "1.1.x", + "readable-stream": "1.1.14", "xregexp": "2.0.0" }, "dependencies": { @@ -5210,10 +5210,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "string_decoder": { @@ -5234,9 +5234,9 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "is-callable": "^1.1.3" + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "is-callable": "1.1.3" } }, "functional-red-black-tree": { @@ -5252,14 +5252,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -5269,7 +5269,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -5279,9 +5279,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -5290,7 +5290,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -5300,8 +5300,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.3.1.tgz", "integrity": "sha512-5kJPX/RXuqoLmHiOOgkSDk/LI0QaXpEvZ3pvQP4ifjGGDKZKVSOjL/GcDjXA5kLxppFCOjmmsu0Uoop9d1upaQ==", "requires": { - "extend": "^3.0.0", - "retry-request": "^3.0.0" + "extend": "3.0.1", + "retry-request": "3.3.1" } }, "gcs-resumable-upload": { @@ -5309,13 +5309,13 @@ "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-0.7.7.tgz", "integrity": "sha1-2clyWvlwu8hsvwr+8kBtwizpGGQ=", "requires": { - "buffer-equal": "^1.0.0", - "configstore": "^3.0.0", - "google-auto-auth": "^0.6.0", - "pumpify": "^1.3.3", - "request": "^2.61.0", - "stream-events": "^1.0.1", - "through2": "^2.0.0" + "buffer-equal": "1.0.0", + "configstore": "3.1.1", + "google-auto-auth": "0.6.1", + "pumpify": "1.4.0", + "request": "2.83.0", + "stream-events": "1.0.4", + "through2": "2.0.3" }, "dependencies": { "ansi-styles": { @@ -5338,7 +5338,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "caseless": { @@ -5351,11 +5351,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "cryptiles": { @@ -5363,7 +5363,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "form-data": { @@ -5371,9 +5371,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "gcp-metadata": { @@ -5381,8 +5381,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.1.0.tgz", "integrity": "sha1-q+IfHqMk3Qs0o/BsqBdj+x7uN9k=", "requires": { - "extend": "^3.0.0", - "retry-request": "^1.3.2" + "extend": "3.0.1", + "retry-request": "1.3.2" } }, "google-auto-auth": { @@ -5390,11 +5390,11 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.6.1.tgz", "integrity": "sha1-wF2CDpRUc57PKKiJLuqz0WJPLLM=", "requires": { - "async": "^2.1.2", - "gcp-metadata": "^0.1.0", - "google-auth-library": "^0.10.0", - "object-assign": "^3.0.0", - "request": "^2.79.0" + "async": "2.6.0", + "gcp-metadata": "0.1.0", + "google-auth-library": "0.10.0", + "object-assign": "3.0.0", + "request": "2.83.0" } }, "har-validator": { @@ -5402,10 +5402,10 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" + "chalk": "1.1.3", + "commander": "2.14.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" } }, "hawk": { @@ -5413,10 +5413,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -5429,9 +5429,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "node-uuid": { @@ -5455,7 +5455,7 @@ "integrity": "sha1-Wa0k5x+K4/MS1fe0vPRnpeWle9Y=", "requires": { "request": "2.76.0", - "through2": "^2.0.0" + "through2": "2.0.3" }, "dependencies": { "request": { @@ -5463,26 +5463,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz", "integrity": "sha1-vkRQWv73A2CgQ2lVEGvjlF2VVg4=", "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "node-uuid": "~1.4.7", - "oauth-sign": "~0.8.1", - "qs": "~6.3.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3" } } } @@ -5492,7 +5492,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "strip-ansi": { @@ -5500,7 +5500,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -5525,7 +5525,7 @@ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "requires": { - "is-property": "^1.0.0" + "is-property": "1.0.2" } }, "get-caller-file": { @@ -5561,12 +5561,12 @@ "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", "dev": true, "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "3", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" + "data-uri-to-buffer": "1.2.0", + "debug": "2.6.9", + "extend": "3.0.1", + "file-uri-to-path": "1.0.0", + "ftp": "0.3.10", + "readable-stream": "2.3.3" } }, "get-value": { @@ -5590,7 +5590,7 @@ "integrity": "sha1-SZAgDxjqW4N8LMT4wDGmmFw4VhE=", "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "4.17.10" } } } @@ -5600,7 +5600,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { @@ -5608,12 +5608,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "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" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -5622,8 +5622,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -5632,7 +5632,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "global-cache": { @@ -5640,8 +5640,8 @@ "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", "requires": { - "define-properties": "^1.1.2", - "is-symbol": "^1.0.1" + "define-properties": "1.1.2", + "is-symbol": "1.0.1" } }, "global-dirs": { @@ -5650,7 +5650,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "^1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -5665,12 +5665,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "google-auth-library": { @@ -5678,10 +5678,10 @@ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.10.0.tgz", "integrity": "sha1-bhW6vuhf0d0U2NEoopW2g41SE24=", "requires": { - "gtoken": "^1.2.1", - "jws": "^3.1.4", - "lodash.noop": "^3.0.1", - "request": "^2.74.0" + "gtoken": "1.2.3", + "jws": "3.1.4", + "lodash.noop": "3.0.1", + "request": "2.83.0" } }, "google-auto-auth": { @@ -5689,10 +5689,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.8.2.tgz", "integrity": "sha512-W91J1paFbyG45gpDWdTu9tKDxbiTDWYkOAxytNVF4oHVVgTCBV/8+lWdjj/6ldjN3eb+sEd9PKJBjm0kmCxvcw==", "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.3.0", - "google-auth-library": "^0.12.0", - "request": "^2.79.0" + "async": "2.6.0", + "gcp-metadata": "0.3.1", + "google-auth-library": "0.12.0", + "request": "2.83.0" }, "dependencies": { "google-auth-library": { @@ -5700,11 +5700,11 @@ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.12.0.tgz", "integrity": "sha512-79qCXtJ1VweBmmLr4yLq9S4clZB2p5Y+iACvuKk9gu4JitEnPc+bQFmYvtCYehVR44MQzD1J8DVmYW2w677IEw==", "requires": { - "gtoken": "^1.2.3", - "jws": "^3.1.4", - "lodash.isstring": "^4.0.1", - "lodash.merge": "^4.6.0", - "request": "^2.81.0" + "gtoken": "1.2.3", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lodash.merge": "4.6.1", + "request": "2.83.0" } } } @@ -5714,7 +5714,7 @@ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", "requires": { - "node-forge": "^0.7.1" + "node-forge": "0.7.5" } }, "got": { @@ -5722,23 +5722,23 @@ "resolved": "https://registry.npmjs.org/got/-/got-8.1.0.tgz", "integrity": "sha512-clILMRaLB1Ase3NWiSgTUrhpc951Z5V2IMtcFp8SKwu2aY+aeZZUuv/KKQmix+pz+Ov9SugLry6+JsBezHa9Vw==", "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" }, "dependencies": { "pify": { @@ -5765,7 +5765,7 @@ "integrity": "sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA==", "dev": true, "requires": { - "lodash": "^4.11.1" + "lodash": "4.17.10" } }, "graphql": { @@ -5773,7 +5773,7 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.1.tgz", "integrity": "sha512-awNp3LTrQ7dJDSX3p3PBuxNDC+WFSOrWeV6+l4Xeh2PQJVOFyQ9SZPonXRz2WZc7aIxLZsf2nDZuuuc0qyEq/A==", "requires": { - "iterall": "^1.2.0" + "iterall": "1.2.2" } }, "graphql-extensions": { @@ -5781,8 +5781,8 @@ "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.8.tgz", "integrity": "sha512-9Ew7qfzkcsV2zrW4OJrdEcFKWAM3hsEhnp4Hbx9RGJ/uZvzDzR1uNUI5wQtjmWfMOj/QvVbwSeNA48PxYAGiBw==", "requires": { - "core-js": "^2.5.3", - "source-map-support": "^0.5.1" + "core-js": "2.5.3", + "source-map-support": "0.5.3" } }, "graphql-fields": { @@ -5805,11 +5805,11 @@ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-2.21.0.tgz", "integrity": "sha512-AmG4WGdpL1OHwnA20ouP7BVB3KnvUOvsc7+4ULWRzEunyRFUYqxrgnEf20iZnYAha8JCb7AP4WPMwWKmGT91rg==", "requires": { - "apollo-link": "^1.1.0", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" + "apollo-link": "1.2.1", + "apollo-utilities": "1.0.10", + "deprecated-decorator": "0.1.6", + "iterall": "1.2.2", + "uuid": "3.1.0" } }, "graphql.js": { @@ -5823,7 +5823,7 @@ "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", "integrity": "sha1-PdOhAOwgIaGBKC9utGcJY2B034k=", "requires": { - "flushwritable": "^1.0.0" + "flushwritable": "1.0.0" } }, "growly": { @@ -5837,10 +5837,10 @@ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", "requires": { - "google-p12-pem": "^0.1.0", - "jws": "^3.0.0", - "mime": "^1.4.1", - "request": "^2.72.0" + "google-p12-pem": "0.1.2", + "jws": "3.1.4", + "mime": "1.6.0", + "request": "2.83.0" } }, "handlebars": { @@ -5848,10 +5848,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "async": { @@ -5869,7 +5869,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } }, "window-size": { @@ -5887,9 +5887,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -5905,8 +5905,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "5.3.0", + "har-schema": "2.0.0" } }, "has": { @@ -5914,7 +5914,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "requires": { - "function-bind": "^1.0.2" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -5922,7 +5922,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-flag": { @@ -5945,7 +5945,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "^1.4.1" + "has-symbol-support-x": "1.4.1" } }, "has-unicode": { @@ -5961,9 +5961,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -5980,8 +5980,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -5990,7 +5990,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -5999,7 +5999,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -6010,7 +6010,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -6021,7 +6021,7 @@ "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", "dev": true, "requires": { - "async": "~1.5" + "async": "1.5.2" }, "dependencies": { "async": { @@ -6037,7 +6037,7 @@ "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", "requires": { - "through2": "^2.0.0" + "through2": "2.0.3" } }, "hawk": { @@ -6045,10 +6045,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" } }, "history": { @@ -6056,11 +6056,11 @@ "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", "requires": { - "invariant": "^2.2.1", - "loose-envify": "^1.2.0", - "resolve-pathname": "^2.2.0", - "value-equal": "^0.4.0", - "warning": "^3.0.0" + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "resolve-pathname": "2.2.0", + "value-equal": "0.4.0", + "warning": "3.0.0" } }, "hoek": { @@ -6078,8 +6078,8 @@ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "homedir-polyfill": { @@ -6088,7 +6088,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "hosted-git-info": { @@ -6102,7 +6102,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "1.0.3" } }, "htmlparser2": { @@ -6111,12 +6111,12 @@ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" } }, "http-cache-semantics": { @@ -6132,7 +6132,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.3.1" }, "dependencies": { "depd": { @@ -6148,7 +6148,7 @@ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "agent-base": "4", + "agent-base": "4.2.0", "debug": "3.1.0" }, "dependencies": { @@ -6168,9 +6168,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "https-proxy-agent": { @@ -6179,8 +6179,8 @@ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "4.2.0", + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -6247,7 +6247,7 @@ "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.6.5.tgz", "integrity": "sha512-nRj5RN2em1O3NK25Zz0eBszg+kQ3mR5WgZp3wRajbyeu/Ii/eXhpwjB8JG4Hd78JUnuFVXSchWF5EZBI6F+vEA==", "requires": { - "invariant": "^2.2.0" + "invariant": "2.2.2" } }, "immutable": { @@ -6267,8 +6267,8 @@ "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "dev": true, "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" }, "dependencies": { "pkg-dir": { @@ -6277,7 +6277,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } } } @@ -6292,8 +6292,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -6311,8 +6311,8 @@ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.0.tgz", "integrity": "sha1-MKA98bNGumsfuKgSvDydq+9IAi0=", "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" + "bowser": "1.9.2", + "css-in-js-utils": "2.0.0" } }, "inquirer": { @@ -6321,20 +6321,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", + "ansi-escapes": "3.0.0", + "chalk": "2.3.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.10", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" } }, "into-stream": { @@ -6342,8 +6342,8 @@ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" + "from2": "2.3.0", + "p-is-promise": "1.1.0" } }, "invariant": { @@ -6351,7 +6351,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "invert-kv": { @@ -6381,7 +6381,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -6403,7 +6403,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, "is-boolean-object": { @@ -6422,7 +6422,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "^1.0.0" + "builtin-modules": "1.1.1" } }, "is-callable": { @@ -6436,7 +6436,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "^1.0.0" + "ci-info": "1.1.2" } }, "is-data-descriptor": { @@ -6445,7 +6445,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -6467,9 +6467,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -6492,7 +6492,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -6512,7 +6512,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { @@ -6532,7 +6532,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-installed-globally": { @@ -6541,8 +6541,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-my-ip-valid": { @@ -6555,11 +6555,11 @@ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" } }, "is-natural-number": { @@ -6580,7 +6580,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-number-object": { @@ -6605,7 +6605,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "^4.0.0" + "is-number": "4.0.0" }, "dependencies": { "is-number": { @@ -6628,7 +6628,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "^1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { @@ -6637,7 +6637,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "1.0.2" } }, "is-plain-obj": { @@ -6650,7 +6650,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -6694,7 +6694,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "has": "^1.0.1" + "has": "1.0.1" } }, "is-resolvable": { @@ -6801,8 +6801,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" }, "dependencies": { "node-fetch": { @@ -6810,8 +6810,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -6827,17 +6827,17 @@ "integrity": "sha512-kH5YRdqdbs5hiH4/Rr1Q0cSAGgjh3jTtg8vu9NLebBAoK3adVO4jk81J+TYOkTr2+Q4NLeb1ACvmEt65iG/Vbw==", "dev": true, "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.1.2", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.2", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.3", - "istanbul-reports": "^1.1.4", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.2", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.3", + "istanbul-reports": "1.1.4", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" } }, "istanbul-lib-coverage": { @@ -6852,7 +6852,7 @@ "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { - "append-transform": "^0.4.0" + "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { @@ -6861,13 +6861,13 @@ "integrity": "sha512-nz8t4HQ2206a/3AXi+NHFWEa844DMpPsgbcUteJbt1j8LX1xg56H9rOMnhvcvVvPbW60qAIyrSk44H8ZDqaSSA==", "dev": true, "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.2", - "semver": "^5.3.0" + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.2", + "semver": "5.4.1" }, "dependencies": { "babylon": { @@ -6884,10 +6884,10 @@ "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" + "istanbul-lib-coverage": "1.1.2", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" }, "dependencies": { "has-flag": { @@ -6902,7 +6902,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -6913,11 +6913,11 @@ "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.2", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" }, "dependencies": { "debug": { @@ -6943,7 +6943,7 @@ "integrity": "sha512-DfSTVOTkuO+kRmbO8Gk650Wqm1WRGr6lrdi2EwDK1vxpS71vdlLd613EpzOKdIFioB5f/scJTjeWBnvd1FWejg==", "dev": true, "requires": { - "handlebars": "^4.0.3" + "handlebars": "4.0.11" } }, "isurl": { @@ -6951,8 +6951,8 @@ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" } }, "iterall": { @@ -6966,8 +6966,8 @@ "integrity": "sha512-wD7dXWtfaQAgbNVsjFqzmuhg6nzwGsTRVea3FpSJ7GURhG+J536fw4mdoLB01DgiEozDDeF1ZMR/UlUszTsCrg==", "dev": true, "requires": { - "import-local": "^1.0.0", - "jest-cli": "^22.4.2" + "import-local": "1.0.0", + "jest-cli": "22.4.2" }, "dependencies": { "ansi-regex": { @@ -6980,25 +6980,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" }, "dependencies": { "source-map": { @@ -7024,9 +7024,9 @@ "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "jest-cli": { @@ -7035,40 +7035,40 @@ "integrity": "sha512-ebo6ZWK2xDSs7LGnLvM16SZOIJ2dj0B6/oERmGcal32NHkks450nNfGrGTyOSPgJDgH8DFhVdBXgSamN7mtZ0Q==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.1.14", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-instrument": "^1.8.0", - "istanbul-lib-source-maps": "^1.2.1", - "jest-changed-files": "^22.2.0", - "jest-config": "^22.4.2", - "jest-environment-jsdom": "^22.4.1", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^22.4.2", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.0", - "jest-resolve-dependencies": "^22.1.0", - "jest-runner": "^22.4.2", - "jest-runtime": "^22.4.2", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.2", - "jest-worker": "^22.2.2", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^10.0.3" + "ansi-escapes": "3.0.0", + "chalk": "2.3.1", + "exit": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "import-local": "1.0.0", + "is-ci": "1.1.0", + "istanbul-api": "1.2.2", + "istanbul-lib-coverage": "1.1.2", + "istanbul-lib-instrument": "1.9.2", + "istanbul-lib-source-maps": "1.2.3", + "jest-changed-files": "22.2.0", + "jest-config": "22.4.2", + "jest-environment-jsdom": "22.4.1", + "jest-get-type": "22.1.0", + "jest-haste-map": "22.4.2", + "jest-message-util": "22.4.0", + "jest-regex-util": "22.1.0", + "jest-resolve-dependencies": "22.1.0", + "jest-runner": "22.4.2", + "jest-runtime": "22.4.2", + "jest-snapshot": "22.4.0", + "jest-util": "22.4.1", + "jest-validate": "22.4.2", + "jest-worker": "22.2.2", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "yargs": "10.1.2" } }, "yargs": { @@ -7077,18 +7077,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.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", - "yargs-parser": "^8.1.0" + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" } }, "yargs-parser": { @@ -7097,7 +7097,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } } } @@ -7108,7 +7108,7 @@ "integrity": "sha512-SzqOvoPMrXB0NPvDrSPeKETpoUNCtNDOsFbCzAGWxqWVvNyrIMLpUjVExT3u3LfdVrENlrNGCfh5YoFd8+ZeXg==", "dev": true, "requires": { - "throat": "^4.0.0" + "throat": "4.1.0" } }, "jest-config": { @@ -7117,17 +7117,17 @@ "integrity": "sha512-oG31qYO73/3vj/Q8aM2RgzmHndTkz9nRk8ISybfuJqqbf0RW7OUjHVOZPLOUiwLWtz52Yq2HkjIblsyhbA7vrg==", "dev": true, "requires": { - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.1", - "jest-environment-node": "^22.4.1", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^22.4.2", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.2", - "pretty-format": "^22.4.0" + "chalk": "2.3.1", + "glob": "7.1.2", + "jest-environment-jsdom": "22.4.1", + "jest-environment-node": "22.4.1", + "jest-get-type": "22.1.0", + "jest-jasmine2": "22.4.2", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.4.2", + "jest-util": "22.4.1", + "jest-validate": "22.4.2", + "pretty-format": "22.4.0" } }, "jest-diff": { @@ -7136,10 +7136,10 @@ "integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" + "chalk": "2.3.1", + "diff": "3.4.0", + "jest-get-type": "22.1.0", + "pretty-format": "22.4.0" } }, "jest-docblock": { @@ -7148,7 +7148,7 @@ "integrity": "sha512-lDY7GZ+/CJb02oULYLBDj7Hs5shBhVpDYpIm8LUyqw9X2J22QRsM19gmGQwIFqGSJmpc/LRrSYudeSrG510xlQ==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "2.1.0" } }, "jest-environment-jsdom": { @@ -7157,9 +7157,9 @@ "integrity": "sha512-x/JzAoH+dWPBnIMv5OQKiIR0TYf6UvbRjsIuDZ11yDFXkHKGJZg6jNnLAsokAm3cq9kUa2hH5BPUC9XU4n1ELQ==", "dev": true, "requires": { - "jest-mock": "^22.2.0", - "jest-util": "^22.4.1", - "jsdom": "^11.5.1" + "jest-mock": "22.2.0", + "jest-util": "22.4.1", + "jsdom": "11.6.2" } }, "jest-environment-node": { @@ -7168,8 +7168,8 @@ "integrity": "sha512-wj9+zzfRgnUbm5VwFOCGgG1QmbucUyrjPKBKUJdLW8K5Ss5zrNc1k+v6feZhFg6sS3ZGnjgtIyklaxEARxu+LQ==", "dev": true, "requires": { - "jest-mock": "^22.2.0", - "jest-util": "^22.4.1" + "jest-mock": "22.2.0", + "jest-util": "22.4.1" } }, "jest-get-type": { @@ -7184,13 +7184,13 @@ "integrity": "sha512-EdQADHGXRqHJYAr7q9B9YYHZnrlcMwhx1+DnIgc9uN05nCW3RvGCxJ91MqWXcC1AzatLoSv7SNd0qXMp2jKBDA==", "dev": true, "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-docblock": "^22.4.0", - "jest-serializer": "^22.4.0", - "jest-worker": "^22.2.2", - "micromatch": "^2.3.11", - "sane": "^2.0.0" + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.4.0", + "jest-serializer": "22.4.0", + "jest-worker": "22.2.2", + "micromatch": "2.3.11", + "sane": "2.4.1" } }, "jest-jasmine2": { @@ -7199,17 +7199,17 @@ "integrity": "sha512-KZaIHpXQ0AIlvQJFCU0uoXxtz5GG47X14r9upMe7VXE55UazoMZBFnQb9TX2HoYX2/AxJYnjHuvwKVCFqOrEtw==", "dev": true, "requires": { - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^22.4.0", - "graceful-fs": "^4.1.11", - "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "source-map-support": "^0.5.0" + "chalk": "2.3.1", + "co": "4.6.0", + "expect": "22.4.0", + "graceful-fs": "4.1.11", + "is-generator-fn": "1.0.0", + "jest-diff": "22.4.0", + "jest-matcher-utils": "22.4.0", + "jest-message-util": "22.4.0", + "jest-snapshot": "22.4.0", + "jest-util": "22.4.1", + "source-map-support": "0.5.3" } }, "jest-junit": { @@ -7218,9 +7218,9 @@ "integrity": "sha512-zczUffyyJVvKldrkQZYlbytNDcxeuSSlysXqyEqOp/XiW/on5QDBMJMsmuY7Nmkve3KdA4U/tRkSiG/C2ewrjw==", "dev": true, "requires": { - "mkdirp": "^0.5.1", - "strip-ansi": "^4.0.0", - "xml": "^1.0.1" + "mkdirp": "0.5.1", + "strip-ansi": "4.0.0", + "xml": "1.0.1" } }, "jest-leak-detector": { @@ -7229,7 +7229,7 @@ "integrity": "sha512-r3NEIVNh4X3fEeJtUIrKXWKhNokwUM2ILp5LD8w1KrEanPsFtZmYjmyZYjDTX2dXYr33TW65OvbRE3hWFAyq6g==", "dev": true, "requires": { - "pretty-format": "^22.4.0" + "pretty-format": "22.4.0" } }, "jest-matcher-utils": { @@ -7238,9 +7238,9 @@ "integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" + "chalk": "2.3.1", + "jest-get-type": "22.1.0", + "pretty-format": "22.4.0" } }, "jest-message-util": { @@ -7249,11 +7249,11 @@ "integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" + "@babel/code-frame": "7.0.0-beta.38", + "chalk": "2.3.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" } }, "jest-mock": { @@ -7274,8 +7274,8 @@ "integrity": "sha512-P1hSfcc2HJYT5t+WPu/11OfFMa7m8pBb2Gf2vm6W9OVs7YTXQ5RCC3nDqaYZQaTqxEM1ZZaTcQGcE6U2xMOsqQ==", "dev": true, "requires": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1" + "browser-resolve": "1.11.2", + "chalk": "2.3.1" } }, "jest-resolve-dependencies": { @@ -7284,7 +7284,7 @@ "integrity": "sha512-76Ll61bD/Sus8wK8d+lw891EtiBJGJkWG8OuVDTEX0z3z2+jPujvQqSB2eQ+kCHyCsRwJ2PSjhn3UHqae/oEtA==", "dev": true, "requires": { - "jest-regex-util": "^22.1.0" + "jest-regex-util": "22.1.0" } }, "jest-runner": { @@ -7293,17 +7293,17 @@ "integrity": "sha512-W4vwgiVQS0NyXt8hgpw7i0YUtsfoChiQcoHWBJeq2ocV4VF2osEZx8HYgpH5HfNe1Cb5LZeZWxX8Dr3hesbGFg==", "dev": true, "requires": { - "exit": "^0.1.2", - "jest-config": "^22.4.2", - "jest-docblock": "^22.4.0", - "jest-haste-map": "^22.4.2", - "jest-jasmine2": "^22.4.2", - "jest-leak-detector": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-runtime": "^22.4.2", - "jest-util": "^22.4.1", - "jest-worker": "^22.2.2", - "throat": "^4.0.0" + "exit": "0.1.2", + "jest-config": "22.4.2", + "jest-docblock": "22.4.0", + "jest-haste-map": "22.4.2", + "jest-jasmine2": "22.4.2", + "jest-leak-detector": "22.4.0", + "jest-message-util": "22.4.0", + "jest-runtime": "22.4.2", + "jest-util": "22.4.1", + "jest-worker": "22.2.2", + "throat": "4.1.0" } }, "jest-runtime": { @@ -7312,26 +7312,26 @@ "integrity": "sha512-9/Fxbj99cqxI7o2nTNzevnI38eDBstkwve8ZeaAD/Kz0fbU3i3eRv2QPEmzbmyCyBvUWxCT7BzNLTzTqH1+pyA==", "dev": true, "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^22.4.1", - "babel-plugin-istanbul": "^4.1.5", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^22.4.2", - "jest-haste-map": "^22.4.2", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.2", - "json-stable-stringify": "^1.0.1", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", + "babel-core": "6.26.0", + "babel-jest": "22.4.1", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.1", + "convert-source-map": "1.5.1", + "exit": "0.1.2", + "graceful-fs": "4.1.11", + "jest-config": "22.4.2", + "jest-haste-map": "22.4.2", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.4.2", + "jest-util": "22.4.1", + "jest-validate": "22.4.2", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^10.0.3" + "write-file-atomic": "2.3.0", + "yargs": "10.1.2" }, "dependencies": { "babel-core": { @@ -7340,25 +7340,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babylon": { @@ -7373,9 +7373,9 @@ "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "source-map": { @@ -7390,18 +7390,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.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", - "yargs-parser": "^8.1.0" + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" } }, "yargs-parser": { @@ -7410,7 +7410,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } } } @@ -7427,12 +7427,12 @@ "integrity": "sha512-6Zz4F9G1Nbr93kfm5h3A2+OkE+WGpgJlskYE4iSNN2uYfoTL5b9W6aB9Orpx+ueReHyqmy7HET7Z3EmYlL3hKw==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^22.4.0" + "chalk": "2.3.1", + "jest-diff": "22.4.0", + "jest-matcher-utils": "22.4.0", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.4.0" } }, "jest-util": { @@ -7441,13 +7441,13 @@ "integrity": "sha512-9ySBdJY2qVWpg0OvZbGcFXE2NgwccpZVj384E9bx7brKFc7l5anpqah15mseWcz7FLDk7/N+LyYgqFme7Rez2Q==", "dev": true, "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^22.4.0", - "mkdirp": "^0.5.1", - "source-map": "^0.6.0" + "callsites": "2.0.0", + "chalk": "2.3.1", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "jest-message-util": "22.4.0", + "mkdirp": "0.5.1", + "source-map": "0.6.1" }, "dependencies": { "callsites": { @@ -7464,11 +7464,11 @@ "integrity": "sha512-TLOgc/EULFBjMCAqZp5OdVvjxV16DZpfthd/UyPzM6lRmgWluohNVemAdnL3JvugU1s2Q2npcIqtbOtiPjaZ0A==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-config": "^22.4.2", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^22.4.0" + "chalk": "2.3.1", + "jest-config": "22.4.2", + "jest-get-type": "22.1.0", + "leven": "2.1.0", + "pretty-format": "22.4.0" } }, "jest-worker": { @@ -7477,7 +7477,7 @@ "integrity": "sha512-ZylDXjrFNt/OP6cUxwJFWwDgazP7hRjtCQbocFHyiwov+04Wm1x5PYzMGNJT53s4nwr0oo9ocYTImS09xOlUnw==", "dev": true, "requires": { - "merge-stream": "^1.0.1" + "merge-stream": "1.0.1" } }, "joi": { @@ -7485,10 +7485,10 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { - "hoek": "2.x.x", - "isemail": "1.x.x", - "moment": "2.x.x", - "topo": "1.x.x" + "hoek": "2.16.3", + "isemail": "1.2.0", + "moment": "2.20.1", + "topo": "1.1.0" }, "dependencies": { "hoek": { @@ -7514,8 +7514,8 @@ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.9", + "esprima": "4.0.0" }, "dependencies": { "esprima": { @@ -7532,7 +7532,7 @@ "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", "dev": true, "requires": { - "xmlcreate": "^1.0.1" + "xmlcreate": "1.0.2" } }, "jsbn": { @@ -7548,17 +7548,17 @@ "dev": true, "requires": { "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", + "bluebird": "3.5.1", + "catharsis": "0.8.9", + "escape-string-regexp": "1.0.5", + "js2xmlparser": "3.0.0", + "klaw": "2.0.0", + "marked": "0.3.6", + "mkdirp": "0.5.1", + "requizzle": "0.2.1", + "strip-json-comments": "2.0.1", "taffydb": "2.6.2", - "underscore": "~1.8.3" + "underscore": "1.8.3" }, "dependencies": { "babylon": { @@ -7587,32 +7587,32 @@ "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", "dev": true, "requires": { - "abab": "^1.0.4", - "acorn": "^5.3.0", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "browser-process-hrtime": "^0.1.2", - "content-type-parser": "^1.0.2", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "domexception": "^1.0.0", - "escodegen": "^1.9.0", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.2.0", - "nwmatcher": "^1.4.3", + "abab": "1.0.4", + "acorn": "5.3.0", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.83.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.3", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-url": "^6.4.0", - "ws": "^4.0.0", - "xml-name-validator": "^3.0.0" + "pn": "1.1.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "ws": "4.0.0", + "xml-name-validator": "3.0.0" }, "dependencies": { "parse5": { @@ -7649,7 +7649,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -7674,7 +7674,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.11" } }, "jsonify": { @@ -7692,11 +7692,11 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", "requires": { - "joi": "^6.10.1", - "jws": "^3.1.4", - "lodash.once": "^4.0.0", - "ms": "^2.0.0", - "xtend": "^4.0.1" + "joi": "6.10.1", + "jws": "3.1.4", + "lodash.once": "4.1.1", + "ms": "2.0.0", + "xtend": "4.0.1" } }, "jsprim": { @@ -7716,7 +7716,7 @@ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "3.0.3" } }, "jwa": { @@ -7727,7 +7727,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "jws": { @@ -7735,9 +7735,9 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", "requires": { - "base64url": "^2.0.0", - "jwa": "^1.1.4", - "safe-buffer": "^5.0.1" + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" } }, "keyv": { @@ -7753,7 +7753,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -7762,7 +7762,7 @@ "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", "dev": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.11" } }, "later": { @@ -7776,7 +7776,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "^4.0.0" + "package-json": "4.0.1" } }, "lazy-cache": { @@ -7789,7 +7789,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "left-pad": { @@ -7810,8 +7810,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "libphonenumber-js": { @@ -7819,11 +7819,11 @@ "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.0.24.tgz", "integrity": "sha512-Gg5gXRYFFyMPyNtF8Zdy6PaE99RW2wj1Ul4C2bJAnarXjgAHYa3QwFukC2QSRdsVyDLfmebltEKApRyi9+bJ1w==", "requires": { - "babel-runtime": "^6.6.1", - "bluebird": "^3.4.6", - "minimist": "^1.2.0", - "semver-compare": "^1.0.0", - "xml2js": "^0.4.17" + "babel-runtime": "6.26.0", + "bluebird": "3.5.1", + "minimist": "1.2.0", + "semver-compare": "1.0.0", + "xml2js": "0.4.19" }, "dependencies": { "bluebird": { @@ -7843,10 +7843,10 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" } }, "locate-path": { @@ -7854,8 +7854,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" } }, "lockfile": { @@ -7864,13 +7864,13 @@ "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "dev": true, "requires": { - "signal-exit": "^3.0.2" + "signal-exit": "3.0.2" } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash-es": { "version": "4.17.4", @@ -7882,10 +7882,10 @@ "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", "requires": { - "lodash._baseisequal": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.pairs": "^3.0.0" + "lodash._baseisequal": "3.0.7", + "lodash._bindcallback": "3.0.1", + "lodash.isarray": "3.0.4", + "lodash.pairs": "3.0.1" } }, "lodash._baseeach": { @@ -7893,7 +7893,7 @@ "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", "requires": { - "lodash.keys": "^3.0.0" + "lodash.keys": "3.1.2" } }, "lodash._basefind": { @@ -7911,9 +7911,9 @@ "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", "requires": { - "lodash.isarray": "^3.0.0", - "lodash.istypedarray": "^3.0.0", - "lodash.keys": "^3.0.0" + "lodash.isarray": "3.0.4", + "lodash.istypedarray": "3.0.6", + "lodash.keys": "3.1.2" } }, "lodash._baseismatch": { @@ -7921,7 +7921,7 @@ "resolved": "https://registry.npmjs.org/lodash._baseismatch/-/lodash._baseismatch-3.1.3.tgz", "integrity": "sha1-Byj8SO+hFpnT1fLXMEnyqxPED9U=", "requires": { - "lodash._baseisequal": "^3.0.0" + "lodash._baseisequal": "3.0.7" } }, "lodash._basematches": { @@ -7929,8 +7929,8 @@ "resolved": "https://registry.npmjs.org/lodash._basematches/-/lodash._basematches-3.2.0.tgz", "integrity": "sha1-9H4D8H7CB4SrCWjQy2y1l+IQEVg=", "requires": { - "lodash._baseismatch": "^3.0.0", - "lodash.pairs": "^3.0.0" + "lodash._baseismatch": "3.1.3", + "lodash.pairs": "3.0.1" } }, "lodash._bindcallback": { @@ -7992,8 +7992,8 @@ "resolved": "https://registry.npmjs.org/lodash.findwhere/-/lodash.findwhere-3.1.0.tgz", "integrity": "sha1-eTfTTz6sgY3sf6lOjKXib9uhz8E=", "requires": { - "lodash._basematches": "^3.0.0", - "lodash.find": "^3.0.0" + "lodash._basematches": "3.2.0", + "lodash.find": "3.2.1" }, "dependencies": { "lodash.find": { @@ -8001,12 +8001,12 @@ "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-3.2.1.tgz", "integrity": "sha1-BG4xnzrOkSrGySRsf2g8XsB7Nq0=", "requires": { - "lodash._basecallback": "^3.0.0", - "lodash._baseeach": "^3.0.0", - "lodash._basefind": "^3.0.0", - "lodash._basefindindex": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" + "lodash._basecallback": "3.3.1", + "lodash._baseeach": "3.0.4", + "lodash._basefind": "3.0.0", + "lodash._basefindindex": "3.6.0", + "lodash.isarray": "3.0.4", + "lodash.keys": "3.1.2" } } } @@ -8094,9 +8094,9 @@ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, "lodash.merge": { @@ -8124,7 +8124,7 @@ "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", "requires": { - "lodash.keys": "^3.0.0" + "lodash.keys": "3.1.2" } }, "lodash.pick": { @@ -8149,8 +8149,8 @@ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", "requires": { - "lodash._reinterpolate": "~3.0.0", - "lodash.templatesettings": "^4.0.0" + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" } }, "lodash.templatesettings": { @@ -8158,7 +8158,7 @@ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", "requires": { - "lodash._reinterpolate": "~3.0.0" + "lodash._reinterpolate": "3.0.0" } }, "lodash.throttle": { @@ -8196,7 +8196,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "lowercase-keys": { @@ -8209,8 +8209,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "macos-release": { @@ -8224,7 +8224,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" }, "dependencies": { "pify": { @@ -8240,7 +8240,7 @@ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.4" } }, "map-cache": { @@ -8261,7 +8261,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "marked": { @@ -8288,9 +8288,9 @@ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.6" } }, "md5-file": { @@ -8299,7 +8299,7 @@ "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", "dev": true, "requires": { - "buffer-alloc": "^1.1.0" + "buffer-alloc": "1.1.0" } }, "media-typer": { @@ -8312,7 +8312,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.1.0" } }, "merge": { @@ -8332,7 +8332,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "^2.0.1" + "readable-stream": "2.3.3" } }, "message-box": { @@ -8340,8 +8340,8 @@ "resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.0.tgz", "integrity": "sha512-SPLfVDEM2YcAgV2IB0B5vOGjvqXSSw7ZibEeXcff8HYpxyG1Uj+XjgnGUGyR1C0EQCvPI3MBx3p7opt2CIQ2hw==", "requires": { - "lodash.merge": "^4.6.0", - "lodash.template": "^4.4.0" + "lodash.merge": "4.6.1", + "lodash.template": "4.4.0" } }, "meteor-node-stubs": { @@ -8349,28 +8349,28 @@ "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.3.2.tgz", "integrity": "sha512-l93SS/HutbqBRJODO2m7hup8cYI2acF5bB39+ZvP2BX8HMmCSCXeFH7v0sr4hD7zrVvHQA5UqS0pcDYKn0VM6g==", "requires": { - "assert": "^1.4.1", - "browserify-zlib": "^0.1.4", - "buffer": "^4.9.1", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.7", - "events": "^1.1.1", - "http-browserify": "^1.7.0", + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "http-browserify": "1.7.0", "https-browserify": "0.0.1", - "os-browserify": "^0.2.1", + "os-browserify": "0.2.1", "path-browserify": "0.0.0", - "process": "^0.11.9", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "stream-browserify": "^2.0.1", - "string_decoder": "^1.0.1", - "timers-browserify": "^1.4.2", + "stream-browserify": "2.0.1", + "string_decoder": "1.0.3", + "timers-browserify": "1.4.2", "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", + "url": "0.11.0", + "util": "0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { @@ -8384,9 +8384,9 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bn.js": "4.11.8", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" } }, "assert": { @@ -8417,7 +8417,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -8431,12 +8431,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.0.tgz", "integrity": "sha512-W2bIMLYoZ9oow7TyePpMJk9l9LY7O3R61a/68bVCDOtnJynnwe3ZeW2IzzSkrQnPKNdJrxVDn3ALZNisSBwb7g==", "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.1", + "safe-buffer": "5.1.1" } }, "browserify-cipher": { @@ -8444,9 +8444,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "browserify-aes": "1.1.0", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -8454,9 +8454,9 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1" + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.1" } }, "browserify-rsa": { @@ -8464,8 +8464,8 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "randombytes": "2.0.5" } }, "browserify-sign": { @@ -8473,13 +8473,13 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.1", + "parse-asn1": "5.1.0" } }, "browserify-zlib": { @@ -8487,7 +8487,7 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "requires": { - "pako": "~0.2.0" + "pako": "0.2.9" } }, "buffer": { @@ -8495,9 +8495,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" } }, "buffer-xor": { @@ -8510,8 +8510,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.1", + "safe-buffer": "5.1.1" } }, "concat-map": { @@ -8524,7 +8524,7 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "date-now": "^0.1.4" + "date-now": "0.1.4" } }, "constants-browserify": { @@ -8537,8 +8537,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "bn.js": "4.11.8", + "elliptic": "6.4.0" } }, "create-hash": { @@ -8546,10 +8546,10 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "sha.js": "^2.4.0" + "cipher-base": "1.0.4", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" } }, "create-hmac": { @@ -8557,12 +8557,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, "crypto-browserify": { @@ -8570,16 +8570,16 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0" + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.1", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" } }, "date-now": { @@ -8592,8 +8592,8 @@ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" } }, "diffie-hellman": { @@ -8601,9 +8601,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" } }, "domain-browser": { @@ -8616,13 +8616,13 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" } }, "events": { @@ -8635,8 +8635,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" } }, "fs.realpath": { @@ -8649,12 +8649,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "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" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "hash-base": { @@ -8662,7 +8662,7 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "requires": { - "inherits": "^2.0.1" + "inherits": "2.0.1" } }, "hash.js": { @@ -8670,8 +8670,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" }, "dependencies": { "inherits": { @@ -8686,9 +8686,9 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" } }, "http-browserify": { @@ -8696,8 +8696,8 @@ "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", "requires": { - "Base64": "~0.2.0", - "inherits": "~2.0.1" + "Base64": "0.2.1", + "inherits": "2.0.1" } }, "https-browserify": { @@ -8720,8 +8720,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -8739,8 +8739,8 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.0.4", + "inherits": "2.0.1" }, "dependencies": { "hash-base": { @@ -8748,8 +8748,8 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.1", + "safe-buffer": "5.1.1" } } } @@ -8759,8 +8759,8 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "4.11.8", + "brorand": "1.1.0" } }, "minimalistic-assert": { @@ -8778,7 +8778,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "once": { @@ -8786,7 +8786,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-browserify": { @@ -8804,11 +8804,11 @@ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "asn1.js": "4.9.1", + "browserify-aes": "1.1.0", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" } }, "path-browserify": { @@ -8826,11 +8826,11 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, "process": { @@ -8848,11 +8848,11 @@ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" } }, "punycode": { @@ -8875,19 +8875,18 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "requires": { - "safe-buffer": "^5.1.0" + "safe-buffer": "5.1.1" } }, "readable-stream": { "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "from": "readable-stream@git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "requires": { - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.0", - "util-deprecate": "~1.0.1" + "requires": { + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" }, "dependencies": { "inherits": { @@ -8902,7 +8901,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "ripemd160": { @@ -8910,8 +8909,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "requires": { - "hash-base": "^2.0.0", - "inherits": "^2.0.1" + "hash-base": "2.0.2", + "inherits": "2.0.1" } }, "safe-buffer": { @@ -8924,8 +8923,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.1", + "safe-buffer": "5.1.1" } }, "stream-browserify": { @@ -8933,8 +8932,8 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.1", + "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12" } }, "string_decoder": { @@ -8942,7 +8941,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "timers-browserify": { @@ -8950,7 +8949,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "requires": { - "process": "~0.11.0" + "process": "0.11.10" } }, "tty-browserify": { @@ -9018,19 +9017,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "mime": { @@ -9048,7 +9047,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "~1.30.0" + "mime-db": "1.30.0" } }, "mimic-fn": { @@ -9066,7 +9065,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "minimist": { @@ -9079,7 +9078,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", "integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", "requires": { - "yallist": "^3.0.0" + "yallist": "3.0.2" }, "dependencies": { "yallist": { @@ -9094,7 +9093,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.1" } }, "mixin-deep": { @@ -9103,8 +9102,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -9113,7 +9112,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -9124,8 +9123,8 @@ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" + "for-in": "0.1.8", + "is-extendable": "0.1.1" }, "dependencies": { "for-in": { @@ -9159,7 +9158,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", "requires": { - "moment": ">= 2.9.0" + "moment": "2.20.1" } }, "mongo-object": { @@ -9167,10 +9166,10 @@ "resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.1.2.tgz", "integrity": "sha512-xRrnal5HuCz3we8Bzk17iYfgCMfaaSU+cq0OkQ/PP+CYhhFmw4Joqmcc0R9XUAgxbFAybg7uzxbNGUw13kEUxQ==", "requires": { - "lodash.foreach": "^4.5.0", - "lodash.isempty": "^4.4.0", - "lodash.isobject": "^3.0.2", - "lodash.without": "^4.4.0" + "lodash.foreach": "4.5.0", + "lodash.isempty": "4.4.0", + "lodash.isobject": "3.0.2", + "lodash.without": "4.4.0" } }, "mongodb": { @@ -9186,8 +9185,8 @@ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.5.tgz", "integrity": "sha512-4A1nx/xAU5d/NPICjiyzVxzNrIdJQQsYRe3xQkV1O638t+fHHfAOLK+SQagqGnu1m0aeSxb1ixp/P0FGSQWIGA==", "requires": { - "bson": "~1.0.4", - "require_optional": "^1.0.1" + "bson": "1.0.6", + "require_optional": "1.0.1" } }, "mongodb-memory-server": { @@ -9196,19 +9195,19 @@ "integrity": "sha512-8CNbBV80cBradJEuyAl+Vw45Wf0MJYTplDphGE9z3qqaQVRYG25PhZ2Uk+kyVVF6HqF4obe+meCMpoOoeXwJ8w==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "debug": "^3.1.0", - "decompress": "^4.2.0", - "fs-extra": "^5.0.0", - "get-port": "^3.2.0", - "getos": "^3.1.0", - "lockfile": "^1.0.4", - "md5-file": "^3.2.3", - "mkdirp": "^0.5.1", - "request": "^2.85.0", - "request-promise": "^4.2.2", - "tmp": "^0.0.33", - "uuid": "^3.2.1" + "babel-runtime": "6.26.0", + "debug": "3.1.0", + "decompress": "4.2.0", + "fs-extra": "5.0.0", + "get-port": "3.2.0", + "getos": "3.1.0", + "lockfile": "1.0.4", + "md5-file": "3.2.3", + "mkdirp": "0.5.1", + "request": "2.86.0", + "request-promise": "4.2.2", + "tmp": "0.0.33", + "uuid": "3.2.1" }, "dependencies": { "debug": { @@ -9226,27 +9225,27 @@ "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" } }, "uuid": { @@ -9274,9 +9273,9 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" }, "dependencies": { "glob": { @@ -9285,11 +9284,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "rimraf": { @@ -9298,7 +9297,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "^6.0.1" + "glob": "6.0.4" } } } @@ -9314,18 +9313,18 @@ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -9366,10 +9365,10 @@ "integrity": "sha512-1azpqq1JvHKZNPEixS1jNEXf4kDilhFtr8AIZIGjP8N0TcAcUhKgi354niI5pM4JoOsMQ+H6vzCYWQa95LQjcw==", "dev": true, "requires": { - "nomnom": "~1.6.2", - "railroad-diagrams": "^1.0.0", + "nomnom": "1.6.2", + "railroad-diagrams": "1.0.0", "randexp": "0.4.6", - "semver": "^5.4.1" + "semver": "5.4.1" } }, "needle": { @@ -9378,9 +9377,9 @@ "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.19", + "sax": "1.2.4" } }, "negotiator": { @@ -9399,9 +9398,9 @@ "resolved": "https://registry.npmjs.org/nexmo/-/nexmo-2.2.0.tgz", "integrity": "sha512-7D/QVyQakLJ8M40hANSvINzswK/3XWfml0hY7Ce2pwn5Kinu5UL5i5+nobnvvftoi0mv1Sx288+fmVEqJkh0Mw==", "requires": { - "jsonwebtoken": "^7.1.9", - "request": "^2.83.0", - "uuid": "^2.0.2" + "jsonwebtoken": "7.4.3", + "request": "2.83.0", + "uuid": "2.0.3" }, "dependencies": { "uuid": { @@ -9416,15 +9415,15 @@ "resolved": "https://registry.npmjs.org/nock/-/nock-9.1.6.tgz", "integrity": "sha512-DuKF+1W/FnMO6MXIGgCIWcM95bETjBbmFdR4v7dAj1zH9a9XhOjAa//PuWh98XIXxcZt7wdiv0JlO0AA0e2kqQ==", "requires": { - "chai": ">=1.9.2 <4.0.0", - "debug": "^2.2.0", - "deep-equal": "^1.0.0", - "json-stringify-safe": "^5.0.1", - "lodash": "~4.17.2", - "mkdirp": "^0.5.0", + "chai": "3.5.0", + "debug": "2.6.9", + "deep-equal": "1.0.1", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.10", + "mkdirp": "0.5.1", "propagate": "0.4.0", - "qs": "^6.5.1", - "semver": "^5.3.0" + "qs": "6.5.1", + "semver": "5.4.1" }, "dependencies": { "chai": { @@ -9432,9 +9431,9 @@ "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "assertion-error": "1.1.0", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" } } } @@ -9454,9 +9453,9 @@ "resolved": "https://registry.npmjs.org/node-geocoder/-/node-geocoder-3.22.0.tgz", "integrity": "sha512-w7ew1vH6IjkhexoxcJ2aFBMMHdfS/VY5xiJ29jd6ml3l5nitySLeJ2vc5IxEfhgq2sZvh7mBk9dJlMqKEKBqJg==", "requires": { - "bluebird": "^3.4.6", - "request": "^2.74.0", - "request-promise": "^4.1.1" + "bluebird": "3.5.1", + "request": "2.83.0", + "request-promise": "4.2.2" }, "dependencies": { "bluebird": { @@ -9484,10 +9483,10 @@ "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" } }, "node-pre-gyp": { @@ -9497,17 +9496,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", + "detect-libc": "1.0.3", "hawk": "3.1.3", - "mkdirp": "^0.5.1", - "nopt": "^4.0.1", - "npmlog": "^4.0.2", - "rc": "^1.1.7", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.6", "request": "2.81.0", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "rimraf": "2.6.2", + "semver": "5.4.1", + "tar": "2.2.1", + "tar-pack": "3.4.0" }, "dependencies": { "ajv": { @@ -9517,8 +9516,8 @@ "dev": true, "optional": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "assert-plus": { @@ -9541,7 +9540,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "cryptiles": { @@ -9550,7 +9549,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "form-data": { @@ -9560,9 +9559,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "har-schema": { @@ -9579,8 +9578,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "hawk": { @@ -9589,10 +9588,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -9608,9 +9607,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "nopt": { @@ -9620,8 +9619,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "performance-now": { @@ -9645,28 +9644,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, "sntp": { @@ -9675,7 +9674,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "tar": { @@ -9685,9 +9684,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } } } @@ -9703,16 +9702,16 @@ "integrity": "sha512-v1fVfgaZanBHP/ZOc9V72uKKIF4dcRfZV7GISNVi/w/g5pwB7nIvOK+RGULjrzhs97cwUX41cM4+dlw+bg2igw==", "dev": true, "requires": { - "chokidar": "^2.0.2", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.0", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.3.0" + "chokidar": "2.0.2", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.5.0", + "supports-color": "5.2.0", + "touch": "3.1.0", + "undefsafe": "2.0.2", + "update-notifier": "2.3.0" }, "dependencies": { "anymatch": { @@ -9721,8 +9720,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.9", + "normalize-path": "2.1.1" } }, "arr-diff": { @@ -9743,18 +9742,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "kind-of": "^6.0.2", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9763,7 +9762,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9772,7 +9771,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9783,18 +9782,18 @@ "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.0.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.0" + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" } }, "debug": { @@ -9812,13 +9811,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "debug": { @@ -9836,7 +9835,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9845,7 +9844,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-descriptor": { @@ -9854,9 +9853,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -9873,14 +9872,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9889,7 +9888,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9898,7 +9897,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9909,10 +9908,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -9921,7 +9920,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9932,8 +9931,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -9942,7 +9941,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -9953,7 +9952,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9962,7 +9961,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9973,7 +9972,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9982,7 +9981,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9999,7 +9998,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "is-number": { @@ -10008,7 +10007,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10017,7 +10016,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10040,19 +10039,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "semver": { @@ -10069,8 +10068,8 @@ "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", "dev": true, "requires": { - "colors": "0.5.x", - "underscore": "~1.4.4" + "colors": "0.5.1", + "underscore": "1.4.4" } }, "nopt": { @@ -10079,7 +10078,7 @@ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -10087,10 +10086,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" } }, "normalize-path": { @@ -10099,7 +10098,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "normalize-range": { @@ -10112,9 +10111,9 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" + "prepend-http": "2.0.0", + "query-string": "5.1.0", + "sort-keys": "2.0.0" } }, "nouislider": { @@ -10132,7 +10131,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" } }, "npmlog": { @@ -10142,10 +10141,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "nth-check": { @@ -10154,7 +10153,7 @@ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "num2fraction": { @@ -10189,9 +10188,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -10200,7 +10199,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "is-accessor-descriptor": { @@ -10209,7 +10208,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-data-descriptor": { @@ -10218,7 +10217,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-descriptor": { @@ -10227,9 +10226,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -10265,7 +10264,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -10281,10 +10280,10 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" } }, "object.entries": { @@ -10292,10 +10291,10 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" + "define-properties": "1.1.2", + "es-abstract": "1.9.0", + "function-bind": "1.1.1", + "has": "1.0.1" } }, "object.getownpropertydescriptors": { @@ -10304,8 +10303,8 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "1.1.2", + "es-abstract": "1.9.0" } }, "object.omit": { @@ -10314,8 +10313,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { @@ -10324,7 +10323,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -10340,10 +10339,10 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" + "define-properties": "1.1.2", + "es-abstract": "1.9.0", + "function-bind": "1.1.1", + "has": "1.0.1" } }, "on-finished": { @@ -10359,7 +10358,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -10368,7 +10367,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.1.0" } }, "opn": { @@ -10377,7 +10376,7 @@ "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "is-wsl": "1.1.0" } }, "optimist": { @@ -10385,8 +10384,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.8", + "wordwrap": "0.0.2" } }, "optionator": { @@ -10395,12 +10394,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { "wordwrap": { @@ -10421,9 +10420,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, "os-tmpdir": { @@ -10436,8 +10435,8 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "output-file-sync": { @@ -10446,9 +10445,9 @@ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" + "graceful-fs": "4.1.11", + "is-plain-obj": "1.1.0", + "mkdirp": "0.5.1" } }, "p-cancelable": { @@ -10476,7 +10475,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.1.0" } }, "p-timeout": { @@ -10484,7 +10483,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "requires": { - "p-finally": "^1.0.0" + "p-finally": "1.0.0" } }, "pac-proxy-agent": { @@ -10493,14 +10492,14 @@ "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", "dev": true, "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^3.0.0" + "agent-base": "4.2.0", + "debug": "3.1.0", + "get-uri": "2.0.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "pac-resolver": "3.0.0", + "raw-body": "2.3.2", + "socks-proxy-agent": "3.0.1" }, "dependencies": { "debug": { @@ -10520,11 +10519,11 @@ "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", "dev": true, "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" + "co": "4.6.0", + "degenerator": "1.0.4", + "ip": "1.1.5", + "netmask": "1.0.6", + "thunkify": "2.1.2" } }, "package-json": { @@ -10533,10 +10532,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.4.1" }, "dependencies": { "got": { @@ -10545,17 +10544,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "prepend-http": { @@ -10570,7 +10569,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } } } @@ -10581,10 +10580,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-json": { @@ -10592,7 +10591,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.1" } }, "parse-passwd": { @@ -10607,7 +10606,7 @@ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "*" + "@types/node": "9.4.6" } }, "parseurl": { @@ -10677,7 +10676,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "pify": "^2.0.0" + "pify": "2.3.0" } }, "pathval": { @@ -10692,7 +10691,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "~2.3" + "through": "2.3.8" } }, "paypal-rest-sdk": { @@ -10700,8 +10699,8 @@ "resolved": "https://registry.npmjs.org/paypal-rest-sdk/-/paypal-rest-sdk-1.8.1.tgz", "integrity": "sha512-Trj2GuPn10GqpICAxQh5wjxuDT7rq7DMOkvyatz05wI5xPGmqXN7UC0WfDSF9WSBs4YdcWZP0g+nY+sOdaFggw==", "requires": { - "buffer-crc32": "^0.2.3", - "semver": "^5.0.3" + "buffer-crc32": "0.2.13", + "semver": "5.4.1" } }, "pend": { @@ -10730,7 +10729,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pirates": { @@ -10739,7 +10738,7 @@ "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "node-modules-regexp": "1.0.0" } }, "pkg-dir": { @@ -10748,7 +10747,7 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "^1.0.0" + "find-up": "1.1.2" }, "dependencies": { "find-up": { @@ -10757,8 +10756,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, "path-exists": { @@ -10767,7 +10766,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } } } @@ -10778,7 +10777,7 @@ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } }, "pluralize": { @@ -10809,9 +10808,9 @@ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", "requires": { - "chalk": "^2.3.1", - "source-map": "^0.6.1", - "supports-color": "^5.2.0" + "chalk": "2.3.1", + "source-map": "0.6.1", + "supports-color": "5.2.0" } }, "postcss-value-parser": { @@ -10843,8 +10842,8 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "assert-plus": { @@ -10862,7 +10861,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "cryptiles": { @@ -10870,7 +10869,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "form-data": { @@ -10878,9 +10877,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "har-schema": { @@ -10893,8 +10892,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "hawk": { @@ -10902,10 +10901,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -10918,9 +10917,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "performance-now": { @@ -10938,28 +10937,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, "sntp": { @@ -10967,7 +10966,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } } } @@ -10984,8 +10983,8 @@ "integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" }, "dependencies": { "ansi-regex": { @@ -11017,7 +11016,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" } }, "prop-types": { @@ -11025,9 +11024,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" }, "dependencies": { "core-js": { @@ -11040,8 +11039,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -11051,8 +11050,8 @@ "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.1.2.tgz", "integrity": "sha512-3x4BWv7w2luSStiHwSzrhK9U1sm+vHwSyg9le2RfY41pZyJdiPKDOKh6TCQywwl++SCr7MMKu7POp4LU/L/eIA==", "requires": { - "has": "^1.0.1", - "object.assign": "^4.1.0" + "has": "1.0.1", + "object.assign": "4.1.0" } }, "propagate": { @@ -11065,7 +11064,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.6.0" } }, @@ -11075,14 +11074,14 @@ "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==", "dev": true, "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "^2.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^3.0.0" + "agent-base": "4.2.0", + "debug": "3.1.0", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "pac-proxy-agent": "2.0.2", + "proxy-from-env": "1.0.0", + "socks-proxy-agent": "3.0.1" }, "dependencies": { "debug": { @@ -11100,8 +11099,8 @@ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } } } @@ -11118,7 +11117,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "~3.3.0" + "event-stream": "3.3.4" } }, "pseudomap": { @@ -11132,7 +11131,7 @@ "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "dev": true, "requires": { - "ps-tree": "^1.1.0" + "ps-tree": "1.1.0" } }, "pump": { @@ -11140,8 +11139,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, "pumpify": { @@ -11149,9 +11148,9 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "^3.5.3", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" } }, "punycode": { @@ -11164,9 +11163,9 @@ "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=", "requires": { - "asap": "^2.0.0", - "pop-iterate": "^1.0.1", - "weak-map": "^1.0.5" + "asap": "2.0.6", + "pop-iterate": "1.0.1", + "weak-map": "1.0.5" } }, "qs": { @@ -11179,7 +11178,7 @@ "resolved": "https://registry.npmjs.org/query-parse/-/query-parse-2.0.0.tgz", "integrity": "sha512-mabTzsUZo6OnNvJ7zr6v0cCVtxZT7ZUw/39wJU33c8VOFYRqW9+eNkWNhsfGqTc2OKZaghbWjn6Cwtut+FzsdA==", "requires": { - "lodash": "^4.17.4" + "lodash": "4.17.10" } }, "query-string": { @@ -11187,9 +11186,9 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" } }, "querystring": { @@ -11202,9 +11201,9 @@ "resolved": "https://registry.npmjs.org/radium/-/radium-0.22.0.tgz", "integrity": "sha512-9zOYegr4gXfgDiVcf02Qyj8zzupmYSTtIhxvSU/42Ls1Q/+r1cisuGUUJ5m06Ha2cc/f3e5vMM80rj2l34Slew==", "requires": { - "exenv": "^1.2.1", - "inline-style-prefixer": "^4.0.0", - "prop-types": "^15.5.8" + "exenv": "1.2.2", + "inline-style-prefixer": "4.0.0", + "prop-types": "15.6.0" } }, "raf": { @@ -11213,7 +11212,7 @@ "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "dev": true, "requires": { - "performance-now": "^2.1.0" + "performance-now": "2.1.0" } }, "railroad-diagrams": { @@ -11234,7 +11233,7 @@ "dev": true, "requires": { "discontinuous-range": "1.0.0", - "ret": "~0.1.10" + "ret": "0.1.15" } }, "randomatic": { @@ -11243,8 +11242,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -11253,7 +11252,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -11262,7 +11261,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -11273,7 +11272,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -11300,10 +11299,10 @@ "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -11319,10 +11318,10 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-addons-create-fragment": { @@ -11330,9 +11329,9 @@ "resolved": "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz", "integrity": "sha1-o5TefCx77Na1R1uhuXrEcs58dPg=", "requires": { - "fbjs": "^0.8.4", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.0" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, "react-addons-pure-render-mixin": { @@ -11340,8 +11339,8 @@ "resolved": "https://registry.npmjs.org/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.6.2.tgz", "integrity": "sha1-a4P0C2s27kBzXL1hJes/E84c3ck=", "requires": { - "fbjs": "^0.8.4", - "object-assign": "^4.1.0" + "fbjs": "0.8.16", + "object-assign": "4.1.1" } }, "react-addons-shallow-compare": { @@ -11349,8 +11348,8 @@ "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", "requires": { - "fbjs": "^0.8.4", - "object-assign": "^4.1.0" + "fbjs": "0.8.16", + "object-assign": "4.1.1" }, "dependencies": { "core-js": { @@ -11363,8 +11362,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -11380,9 +11379,9 @@ "resolved": "https://registry.npmjs.org/react-autosuggest/-/react-autosuggest-9.3.3.tgz", "integrity": "sha512-g0W1x2+PfWWcEsz2r7sCPv1Dpwq6eH0uysFLwI4iVKfPxZkHvRL2tjRvnoFVfrP6/61lfqII4pOKh1V1S4VPrQ==", "requires": { - "prop-types": "^15.5.10", - "react-autowhatever": "^10.1.0", - "shallow-equal": "^1.0.0" + "prop-types": "15.6.0", + "react-autowhatever": "10.1.0", + "shallow-equal": "1.0.0" } }, "react-autowhatever": { @@ -11390,9 +11389,9 @@ "resolved": "https://registry.npmjs.org/react-autowhatever/-/react-autowhatever-10.1.0.tgz", "integrity": "sha512-LMZggoRgcmldAMyABY3Dz/DRiTQViMsQllXtOsDrZeBRwPIfn0RAOySaQMUNyECrHaCB5pm66jgQvkyNSh/BjA==", "requires": { - "prop-types": "^15.5.8", - "react-themeable": "^1.1.0", - "section-iterator": "^2.0.0" + "prop-types": "15.6.0", + "react-themeable": "1.1.0", + "section-iterator": "2.0.0" } }, "react-avatar": { @@ -11400,9 +11399,9 @@ "resolved": "https://registry.npmjs.org/react-avatar/-/react-avatar-2.5.1.tgz", "integrity": "sha512-bwH5pWY6uxaKZt+IZBfD+SU3Dpy3FaKbmAzrOI4N8SATUPLXOdGaJHWUl6Vl8hHSwWSsoLh/m7xYHdnn0lofZw==", "requires": { - "babel-runtime": ">=5.0.0", - "is-retina": "^1.0.3", - "md5": "^2.0.0" + "babel-runtime": "6.26.0", + "is-retina": "1.0.3", + "md5": "2.2.1" } }, "react-color": { @@ -11410,11 +11409,11 @@ "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.13.8.tgz", "integrity": "sha1-vMWPeaciub/DfEAuaM0Y8mlwruQ=", "requires": { - "lodash": "^4.0.1", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" + "lodash": "4.17.10", + "material-colors": "1.2.5", + "prop-types": "15.6.0", + "reactcss": "1.2.3", + "tinycolor2": "1.4.1" } }, "react-copy-to-clipboard": { @@ -11422,8 +11421,8 @@ "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz", "integrity": "sha512-ELKq31/E3zjFs5rDWNCfFL4NvNFQvGRoJdAKReD/rUPA+xxiLPQmZBZBvy2vgH7V0GE9isIQpT9WXbwIVErYdA==", "requires": { - "copy-to-clipboard": "^3", - "prop-types": "^15.5.8" + "copy-to-clipboard": "3.0.8", + "prop-types": "15.6.0" } }, "react-cursor-position": { @@ -11431,9 +11430,9 @@ "resolved": "https://registry.npmjs.org/react-cursor-position/-/react-cursor-position-2.4.0.tgz", "integrity": "sha512-uwYtWzfdQYqeTcBHFjzwLJNmxec2YQjSFPintG2hiVNKwIr1tE0RJsFIpqGzZL0ZhWiyg0BOSVPCZ8XSINl3PQ==", "requires": { - "object-assign": "^4.1.1", - "object.omit": "^3.0.0", - "prop-types": "^15.6.0" + "object-assign": "4.1.1", + "object.omit": "3.0.0", + "prop-types": "15.6.0" }, "dependencies": { "is-extendable": { @@ -11441,7 +11440,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } }, "object.omit": { @@ -11449,7 +11448,7 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", "requires": { - "is-extendable": "^1.0.0" + "is-extendable": "1.0.1" } } } @@ -11459,18 +11458,18 @@ "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-16.3.6.tgz", "integrity": "sha512-wVvyRFKyLk/txS19AK/dqU40fwhTNc/+kwikzTTcrsdM7fa8AJAwmB2MrKeu3h+Fk4aILm9JSDXtmp1JQrrVpA==", "requires": { - "airbnb-prop-types": "^2.8.1", - "consolidated-events": "^1.1.1", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.0", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.5.0", - "react-portal": "^4.1.2", - "react-with-styles": "^3.1.0", - "react-with-styles-interface-css": "^4.0.1" + "airbnb-prop-types": "2.8.1", + "consolidated-events": "1.1.1", + "is-touch-device": "1.0.1", + "lodash": "4.17.10", + "object.assign": "4.1.0", + "object.values": "1.0.4", + "prop-types": "15.6.0", + "react-addons-shallow-compare": "15.6.2", + "react-moment-proptypes": "1.5.0", + "react-portal": "4.1.3", + "react-with-styles": "3.1.0", + "react-with-styles-interface-css": "4.0.1" } }, "react-dnd": { @@ -11478,12 +11477,12 @@ "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.5.4.tgz", "integrity": "sha512-y9YmnusURc+3KPgvhYKvZ9oCucj51MSZWODyaeV0KFU0cquzA7dCD1g/OIYUKtNoZ+MXtacDngkdud2TklMSjw==", "requires": { - "disposables": "^1.0.1", - "dnd-core": "^2.5.4", - "hoist-non-react-statics": "^2.1.0", - "invariant": "^2.1.0", - "lodash": "^4.2.0", - "prop-types": "^15.5.10" + "disposables": "1.0.1", + "dnd-core": "2.5.4", + "hoist-non-react-statics": "2.3.1", + "invariant": "2.2.2", + "lodash": "4.17.10", + "prop-types": "15.6.0" } }, "react-dnd-html5-backend": { @@ -11491,7 +11490,7 @@ "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz", "integrity": "sha512-jDqAkm/hI8Tl4HcsbhkBgB6HgpJR1e+ML1SbfxaegXYiuMxEVQm0FOwEH5WxUoo6fmIG4N+H0rSm59POuZOCaA==", "requires": { - "lodash": "^4.2.0" + "lodash": "4.17.10" } }, "react-dom": { @@ -11499,10 +11498,10 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-dropzone": { @@ -11510,8 +11509,8 @@ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-4.2.8.tgz", "integrity": "sha512-L/q6ySfhdG9Md3P21jFumzlm92TxRT0FtYX6G793Nf8bt7Fzpwx6gJsPk0idV094koj/Y5vRpp0q9+e0bdsjxw==", "requires": { - "attr-accept": "^1.0.3", - "prop-types": "^15.5.7" + "attr-accept": "1.1.2", + "prop-types": "15.6.0" } }, "react-helmet": { @@ -11519,10 +11518,10 @@ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", "requires": { - "deep-equal": "^1.0.1", - "object-assign": "^4.1.1", - "prop-types": "^15.5.4", - "react-side-effect": "^1.1.0" + "deep-equal": "1.0.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0", + "react-side-effect": "1.1.3" } }, "react-image-magnify": { @@ -11543,7 +11542,7 @@ "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.1.tgz", "integrity": "sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA==", "requires": { - "prop-types": "^15.5.8" + "prop-types": "15.6.0" } }, "react-loadable": { @@ -11551,7 +11550,7 @@ "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.3.1.tgz", "integrity": "sha1-lpnpoI/tSbrNacqqKCA0tip2vN0=", "requires": { - "prop-types": "^15.5.0" + "prop-types": "15.6.0" } }, "react-measure": { @@ -11559,9 +11558,9 @@ "resolved": "https://registry.npmjs.org/react-measure/-/react-measure-2.0.2.tgz", "integrity": "sha1-ByqaX6/AHfutwfpfsJ/DUQN/Y2w=", "requires": { - "get-node-dimensions": "^1.2.0", - "prop-types": "^15.5.10", - "resize-observer-polyfill": "^1.4.2" + "get-node-dimensions": "1.2.0", + "prop-types": "15.6.0", + "resize-observer-polyfill": "1.4.2" } }, "react-moment-proptypes": { @@ -11569,7 +11568,7 @@ "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.5.0.tgz", "integrity": "sha512-0dQJNs0aaiMeGp1AJACDTzGMM7N4qv4Wgg1948/ARdLt3VKlkcem6Yjm5ExUmUtoXk6WpSXvFQ204l7E+RTEEQ==", "requires": { - "moment": ">=1.6.0" + "moment": "2.20.1" } }, "react-nouislider": { @@ -11577,7 +11576,7 @@ "resolved": "https://registry.npmjs.org/react-nouislider/-/react-nouislider-2.0.1.tgz", "integrity": "sha512-/K5cHKkvsvZ/fwgFATxkORAEtuiWVrQOqNchEInRn7qlv9mDh+LEq+NydFu91v7Cy2XjHzVPD9ZU12wg5t9yCg==", "requires": { - "nouislider": "^9.2.0" + "nouislider": "9.2.0" } }, "react-onclickoutside": { @@ -11590,7 +11589,7 @@ "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.1.3.tgz", "integrity": "sha512-0JHna4qv6LhkQfBg2/Ket0NsVAOHezBtInNlr1XHDEPR4LplUWuY5oJ4ysHCMxHpP2Rtd3B44SRUAnHmOzOCaA==", "requires": { - "prop-types": "^15.5.8" + "prop-types": "15.6.0" } }, "react-required-if": { @@ -11603,13 +11602,13 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", "requires": { - "history": "^4.7.2", - "hoist-non-react-statics": "^2.3.0", - "invariant": "^2.2.2", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.5.4", - "warning": "^3.0.0" + "history": "4.7.2", + "hoist-non-react-statics": "2.3.1", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.0", + "warning": "3.0.0" }, "dependencies": { "isarray": { @@ -11632,12 +11631,12 @@ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", "requires": { - "history": "^4.7.2", - "invariant": "^2.2.2", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.4", - "react-router": "^4.2.0", - "warning": "^3.0.0" + "history": "4.7.2", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "prop-types": "15.6.0", + "react-router": "4.2.0", + "warning": "3.0.0" } }, "react-s-alert": { @@ -11645,7 +11644,7 @@ "resolved": "https://registry.npmjs.org/react-s-alert/-/react-s-alert-1.4.1.tgz", "integrity": "sha512-+cSpVPe6YeGklhlo7zbVlB0Z6jdiU9HPmEVzp5nIhNm9lvdL7rVO2Jx09pCwT99GmODyoN0iNhbQku6r7six8A==", "requires": { - "babel-runtime": "^6.23.0" + "babel-runtime": "6.26.0" } }, "react-select": { @@ -11653,9 +11652,9 @@ "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.2.1.tgz", "integrity": "sha512-vaCgT2bEl+uTyE/uKOEgzE5Dc/wLtzhnBvoHCeuLoJWc4WuadN6WQDhoL42DW+TziniZK2Gaqe/wUXydI3NSaQ==", "requires": { - "classnames": "^2.2.4", - "prop-types": "^15.5.8", - "react-input-autosize": "^2.1.2" + "classnames": "2.2.5", + "prop-types": "15.6.0", + "react-input-autosize": "2.2.1" } }, "react-side-effect": { @@ -11663,8 +11662,8 @@ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.3.tgz", "integrity": "sha1-USwlq+DewXKDTEAB7FxR4E1BvFw=", "requires": { - "exenv": "^1.2.1", - "shallowequal": "^1.0.1" + "exenv": "1.2.2", + "shallowequal": "1.0.2" } }, "react-table": { @@ -11672,7 +11671,7 @@ "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.7.6.tgz", "integrity": "sha1-P547MIMozrBO+TpHur76uiYZyQU=", "requires": { - "classnames": "^2.2.5" + "classnames": "2.2.5" } }, "react-taco-table": { @@ -11680,13 +11679,13 @@ "resolved": "https://registry.npmjs.org/react-taco-table/-/react-taco-table-0.5.1.tgz", "integrity": "sha1-kOMQ1dXGJzrtIh9lzf7WI9PFiew=", "requires": { - "classnames": "^2.2.5", - "d3-format": "^1.0.0", - "d3-scale": "^1.0.0", - "d3-scale-chromatic": "^1.0.0", - "lodash.curry": "^4.0.1", - "prop-types": "^15.5.10", - "stable": "^0.1.5" + "classnames": "2.2.5", + "d3-format": "1.2.0", + "d3-scale": "1.0.6", + "d3-scale-chromatic": "1.1.1", + "lodash.curry": "4.1.1", + "prop-types": "15.6.0", + "stable": "0.1.6" } }, "react-tether": { @@ -11694,8 +11693,8 @@ "resolved": "https://registry.npmjs.org/react-tether/-/react-tether-0.6.1.tgz", "integrity": "sha512-/1o2d77RyL78S1IjS1+yGMTKSldYMBVtu4H20zNIC9eAGsgA/KMxdLRcE3k32wj4TWCsVMPDnxeTokHuVWNLag==", "requires": { - "prop-types": "^15.5.8", - "tether": "^1.4.3" + "prop-types": "15.6.0", + "tether": "1.4.3" } }, "react-textarea-autosize": { @@ -11703,7 +11702,7 @@ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz", "integrity": "sha512-bx6z2I35aapr71ggw2yZIA4qhmqeTa4ZVsSaTeFvtf9kfcZppDBh2PbMt8lvbdmzEk7qbSFhAxR9vxEVm6oiMg==", "requires": { - "prop-types": "^15.6.0" + "prop-types": "15.6.0" } }, "react-themeable": { @@ -11711,7 +11710,7 @@ "resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz", "integrity": "sha1-fURm3ZsrX6dQWHJ4JenxUro3mg4=", "requires": { - "object-assign": "^3.0.0" + "object-assign": "3.0.0" }, "dependencies": { "object-assign": { @@ -11726,11 +11725,11 @@ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { - "chain-function": "^1.0.0", - "dom-helpers": "^3.2.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.6", - "warning": "^3.0.0" + "chain-function": "1.0.0", + "dom-helpers": "3.2.1", + "loose-envify": "1.3.1", + "prop-types": "15.6.0", + "warning": "3.0.0" } }, "react-with-direction": { @@ -11738,14 +11737,14 @@ "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.3.0.tgz", "integrity": "sha512-2TflEebNckTNUybw3Rzqjg4BwM/H380ZL5lsbZ5f4UTY2JyE5uQdQZK5T2w+BDJSAMcqoA2RDJYa4e7Cl6C2Kg==", "requires": { - "airbnb-prop-types": "^2.8.1", - "brcast": "^2.0.2", - "deepmerge": "^1.5.1", - "direction": "^1.0.1", - "hoist-non-react-statics": "^2.3.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.0" + "airbnb-prop-types": "2.8.1", + "brcast": "2.0.2", + "deepmerge": "1.5.2", + "direction": "1.0.1", + "hoist-non-react-statics": "2.3.1", + "object.assign": "4.1.0", + "object.values": "1.0.4", + "prop-types": "15.6.0" } }, "react-with-styles": { @@ -11753,11 +11752,11 @@ "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.1.0.tgz", "integrity": "sha512-neH8a79MoPGTMhwRstNVRydJaZA2yjwNSBYo1zFjkQZ44EGRUgs/RR2dMdSt2ARa8yGew2rOpeKQOWqaEoqnpw==", "requires": { - "deepmerge": "^1.5.2", - "global-cache": "^1.2.1", - "hoist-non-react-statics": "^2.3.1", - "prop-types": "^15.6.0", - "react-with-direction": "^1.1.0" + "deepmerge": "1.5.2", + "global-cache": "1.2.1", + "hoist-non-react-statics": "2.3.1", + "prop-types": "15.6.0", + "react-with-direction": "1.3.0" } }, "react-with-styles-interface-css": { @@ -11765,9 +11764,9 @@ "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.1.tgz", "integrity": "sha512-kLS+Ytv0/XBph7ovFP/7IazwBD/W/Xo9Zr/90d6QSGCRjhvHZXusFDOzXUwBE1GAkGRjZy+RrgbPad5wKyXclA==", "requires": { - "aphrodite": "^1.2.5", - "array.prototype.flatten": "^1.2.1", - "global-cache": "^1.2.1" + "aphrodite": "1.2.5", + "array.prototype.flatten": "1.2.1", + "global-cache": "1.2.1" } }, "reactcss": { @@ -11775,7 +11774,7 @@ "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", "requires": { - "lodash": "^4.0.1" + "lodash": "4.17.10" } }, "read-pkg": { @@ -11783,9 +11782,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" } }, "read-pkg-up": { @@ -11793,8 +11792,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "2.1.0", + "read-pkg": "2.0.0" } }, "readable-stream": { @@ -11802,13 +11801,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -11817,10 +11816,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" } }, "realpath-native": { @@ -11829,7 +11828,7 @@ "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", "dev": true, "requires": { - "util.promisify": "^1.0.0" + "util.promisify": "1.0.0" } }, "recompose": { @@ -11837,10 +11836,10 @@ "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", "requires": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" + "change-emitter": "0.1.6", + "fbjs": "0.8.16", + "hoist-non-react-statics": "2.3.1", + "symbol-observable": "1.0.4" } }, "recursive-readdir": { @@ -11857,10 +11856,10 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.3" + "lodash": "4.17.10", + "lodash-es": "4.17.4", + "loose-envify": "1.3.1", + "symbol-observable": "1.0.4" } }, "regenerate": { @@ -11875,7 +11874,7 @@ "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", "dev": true, "requires": { - "regenerate": "^1.3.3" + "regenerate": "1.3.3" } }, "regenerator-runtime": { @@ -11889,7 +11888,7 @@ "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", "dev": true, "requires": { - "private": "^0.1.6" + "private": "0.1.8" } }, "regex-cache": { @@ -11898,7 +11897,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regex-not": { @@ -11907,8 +11906,8 @@ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "regexpp": { @@ -11923,12 +11922,12 @@ "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", "dev": true, "requires": { - "regenerate": "^1.3.3", - "regenerate-unicode-properties": "^5.1.1", - "regjsgen": "^0.3.0", - "regjsparser": "^0.2.1", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "regenerate": "1.3.3", + "regenerate-unicode-properties": "5.1.3", + "regjsgen": "0.3.0", + "regjsparser": "0.2.1", + "unicode-match-property-ecmascript": "1.0.3", + "unicode-match-property-value-ecmascript": "1.0.1" } }, "registry-auth-token": { @@ -11937,8 +11936,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "1.2.6", + "safe-buffer": "5.1.1" } }, "registry-url": { @@ -11947,7 +11946,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "^1.0.1" + "rc": "1.2.6" } }, "regjsgen": { @@ -11962,7 +11961,7 @@ "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -11995,7 +11994,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "request": { @@ -12003,28 +12002,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, "request-promise": { @@ -12032,10 +12031,10 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", "requires": { - "bluebird": "^3.5.0", + "bluebird": "3.5.1", "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" }, "dependencies": { "bluebird": { @@ -12050,7 +12049,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "requires": { - "lodash": "^4.13.1" + "lodash": "4.17.10" } }, "request-promise-native": { @@ -12060,8 +12059,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" } }, "require-directory": { @@ -12086,7 +12085,7 @@ "integrity": "sha1-urQQqxruLz9Vt5MXRR3TQodk5vM=", "dev": true, "requires": { - "x-path": "^0.0.2" + "x-path": "0.0.2" } }, "require-uncached": { @@ -12095,8 +12094,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" + "caller-path": "0.1.0", + "resolve-from": "1.0.1" } }, "require_optional": { @@ -12104,8 +12103,8 @@ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" + "resolve-from": "2.0.0", + "semver": "5.4.1" }, "dependencies": { "resolve-from": { @@ -12121,7 +12120,7 @@ "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", "dev": true, "requires": { - "underscore": "~1.6.0" + "underscore": "1.6.0" }, "dependencies": { "underscore": { @@ -12148,7 +12147,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "resolve-cwd": { @@ -12157,7 +12156,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" }, "dependencies": { "resolve-from": { @@ -12189,7 +12188,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "1.0.0" } }, "restore-cursor": { @@ -12198,8 +12197,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "ret": { @@ -12213,8 +12212,8 @@ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", "requires": { - "request": "^2.81.0", - "through2": "^2.0.0" + "request": "2.83.0", + "through2": "2.0.3" } }, "right-align": { @@ -12222,7 +12221,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -12230,7 +12229,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "rootpath": { @@ -12244,8 +12243,8 @@ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", "dev": true, "requires": { - "lodash.flattendeep": "^4.4.0", - "nearley": "^2.7.10" + "lodash.flattendeep": "4.4.0", + "nearley": "2.11.1" } }, "run-async": { @@ -12254,7 +12253,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "^2.1.0" + "is-promise": "2.1.0" } }, "rx-lite": { @@ -12269,7 +12268,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "*" + "rx-lite": "4.0.8" } }, "safe-buffer": { @@ -12289,7 +12288,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "sane": { @@ -12298,14 +12297,14 @@ "integrity": "sha512-fW9svvNd81XzHDZyis9/tEY1bZikDGryy8Hi1BErPyNPYv47CdLseUN+tI5FBHWXEENRtj1SWtX/jBnggLaP0w==", "dev": true, "requires": { - "anymatch": "^1.3.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.1.1", - "minimatch": "^3.0.2", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" }, "dependencies": { "minimist": { @@ -12348,7 +12347,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "~2.8.1" + "commander": "2.8.1" }, "dependencies": { "commander": { @@ -12357,7 +12356,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": ">= 1.0.0" + "graceful-readlink": "1.0.1" } } } @@ -12378,7 +12377,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "^5.0.3" + "semver": "5.4.1" } }, "send": { @@ -12387,18 +12386,18 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "requires": { "debug": "2.6.9", - "depd": "~1.1.1", - "destroy": "~1.0.4", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" }, "dependencies": { "mime": { @@ -12413,9 +12412,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "requires": { - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.1" } }, @@ -12436,10 +12435,10 @@ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -12448,7 +12447,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -12469,10 +12468,10 @@ "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", "dev": true, "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" }, "dependencies": { "kind-of": { @@ -12481,7 +12480,7 @@ "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { - "is-buffer": "^1.0.2" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -12507,13 +12506,13 @@ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.19.0.tgz", "integrity": "sha1-YXKekPKR5iVAEiqAZcpfxwwaix8=", "requires": { - "color": "^2.0.1", - "detect-libc": "^1.0.3", - "nan": "^2.8.0", - "semver": "^5.4.1", - "simple-get": "^2.7.0", - "tar": "^4.2.0", - "tunnel-agent": "^0.6.0" + "color": "2.0.1", + "detect-libc": "1.0.3", + "nan": "2.8.0", + "semver": "5.4.1", + "simple-get": "2.7.0", + "tar": "4.3.3", + "tunnel-agent": "0.6.0" } }, "shebang-command": { @@ -12521,7 +12520,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -12545,10 +12544,10 @@ "resolved": "https://registry.npmjs.org/shopify-api-node/-/shopify-api-node-2.11.0.tgz", "integrity": "sha512-HLFeh6NBAMKn4AED6AxuvYb8Xomwanq+bfTM43NJ532VdVYkVtAgiEmJO2XGSQPjNwBIl+YmOYsV1LnmiFuUvw==", "requires": { - "got": "^8.0.0", - "lodash": "^4.6.0", - "qs": "^6.1.0", - "stopcock": "^1.0.0" + "got": "8.1.0", + "lodash": "4.17.10", + "qs": "6.5.1", + "stopcock": "1.0.0" } }, "signal-exit": { @@ -12561,20 +12560,20 @@ "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.5.0.tgz", "integrity": "sha512-lv9n+1R7Oe3fpm3cWVyrs3mG1C9+DCc8QTCRn6cfLIsPkLfuMhBPLDwpnIsdA8Ch0fRO7BSxKvpVPcYvcYeSxg==", "requires": { - "clone": "^2.1.1", - "extend": "^3.0.1", - "lodash.every": "^4.6.0", - "lodash.find": "^4.6.0", - "lodash.findwhere": "^3.1.0", - "lodash.includes": "^4.3.0", - "lodash.isempty": "^4.4.0", - "lodash.isobject": "^3.0.2", - "lodash.omit": "^4.5.0", - "lodash.pick": "^4.4.0", - "lodash.union": "^4.6.0", - "lodash.uniq": "^4.5.0", - "message-box": "^0.2.0", - "mongo-object": "^0.1.2" + "clone": "2.1.2", + "extend": "3.0.1", + "lodash.every": "4.6.0", + "lodash.find": "4.6.0", + "lodash.findwhere": "3.1.0", + "lodash.includes": "4.3.0", + "lodash.isempty": "4.4.0", + "lodash.isobject": "3.0.2", + "lodash.omit": "4.5.0", + "lodash.pick": "4.4.0", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "message-box": "0.2.0", + "mongo-object": "0.1.2" } }, "simpl-schema-mockdoc": { @@ -12583,9 +12582,9 @@ "integrity": "sha512-+8LSWeMXuN5RMQgpnnF0NJ8OtKZX0dwrDzD28dL0Oz0OHlgOD/X17kgD1PxEjg76U0w14qJKltpSewyXojOCwA==", "dev": true, "requires": { - "faker": "^4.1.0", - "lodash": "^4.17.4", - "simpl-schema": "^0.3.2" + "faker": "4.1.0", + "lodash": "4.17.10", + "simpl-schema": "0.3.2" }, "dependencies": { "message-box": { @@ -12594,8 +12593,8 @@ "integrity": "sha1-d4VlhUzUUn0mc3P8IBJN4Ycpjaw=", "dev": true, "requires": { - "lodash.merge": "^4.6.0", - "lodash.template": "^4.4.0" + "lodash.merge": "4.6.1", + "lodash.template": "4.4.0" } }, "mongo-object": { @@ -12604,10 +12603,10 @@ "integrity": "sha512-FI827BgRJvEZ+Uef+qWIsXu93+8pok26b5LZO2Nc3T6XRg/IrkvV1okxyez+Kz/psfV3n5WqqtR+ySg2Q7mSPg==", "dev": true, "requires": { - "lodash.foreach": "^4.5.0", - "lodash.isempty": "^4.4.0", - "lodash.isobject": "^3.0.2", - "lodash.without": "^4.4.0" + "lodash.foreach": "4.5.0", + "lodash.isempty": "4.4.0", + "lodash.isobject": "3.0.2", + "lodash.without": "4.4.0" } }, "simpl-schema": { @@ -12616,11 +12615,11 @@ "integrity": "sha1-LHVETpN4UFrFJSGTlN4GPOT28Gg=", "dev": true, "requires": { - "clone": "^2.1.1", - "extend": "^3.0.1", - "message-box": "^0.1.1", - "mongo-object": "^0.0.2", - "underscore": "^1.8.3" + "clone": "2.1.2", + "extend": "3.0.1", + "message-box": "0.1.1", + "mongo-object": "0.0.2", + "underscore": "1.9.0" } }, "underscore": { @@ -12641,9 +12640,9 @@ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "decompress-response": "3.3.0", + "once": "1.4.0", + "simple-concat": "1.0.0" } }, "simple-swizzle": { @@ -12651,7 +12650,7 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { - "is-arrayish": "^0.3.1" + "is-arrayish": "0.3.1" }, "dependencies": { "is-arrayish": { @@ -12672,7 +12671,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0" + "is-fullwidth-code-point": "2.0.0" } }, "slugify": { @@ -12692,14 +12691,14 @@ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" }, "dependencies": { "define-property": { @@ -12708,7 +12707,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -12717,7 +12716,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -12726,7 +12725,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -12735,7 +12734,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -12746,7 +12745,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -12755,7 +12754,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -12766,9 +12765,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -12791,9 +12790,9 @@ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -12802,7 +12801,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "isobject": { @@ -12819,7 +12818,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "sntp": { @@ -12827,7 +12826,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.x.x" + "hoek": "4.2.0" } }, "snyk": { @@ -12836,21 +12835,21 @@ "integrity": "sha1-4QhTTAhUWz4BpbpLuu2Aw6Iz88k=", "dev": true, "requires": { - "abbrev": "^1.1.1", - "ansi-escapes": "^3.1.0", - "chalk": "^2.4.1", - "configstore": "^3.1.2", - "debug": "^3.1.0", - "hasbin": "^1.2.3", - "inquirer": "^3.0.0", - "lodash": "^4.17.5", - "needle": "^2.0.1", - "opn": "^5.2.0", - "os-name": "^2.0.1", - "proxy-agent": "^3.0.0", - "proxy-from-env": "^1.0.0", - "recursive-readdir": "^2.2.2", - "semver": "^5.5.0", + "abbrev": "1.1.1", + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "debug": "3.1.0", + "hasbin": "1.2.3", + "inquirer": "3.3.0", + "lodash": "4.17.10", + "needle": "2.2.0", + "opn": "5.3.0", + "os-name": "2.0.1", + "proxy-agent": "3.0.0", + "proxy-from-env": "1.0.0", + "recursive-readdir": "2.2.2", + "semver": "5.5.0", "snyk-config": "2.1.0", "snyk-go-plugin": "1.5.0", "snyk-gradle-plugin": "1.3.0", @@ -12863,12 +12862,12 @@ "snyk-resolve": "1.0.1", "snyk-resolve-deps": "3.1.0", "snyk-sbt-plugin": "1.2.5", - "snyk-tree": "^1.0.0", + "snyk-tree": "1.0.0", "snyk-try-require": "1.3.0", - "tempfile": "^2.0.0", - "then-fs": "^2.0.0", - "undefsafe": "^2.0.0", - "uuid": "^3.2.1" + "tempfile": "2.0.0", + "then-fs": "2.0.0", + "undefsafe": "2.0.2", + "uuid": "3.2.1" }, "dependencies": { "ansi-escapes": { @@ -12883,7 +12882,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } }, "async": { @@ -12904,9 +12903,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, "cliui": { @@ -12915,9 +12914,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "configstore": { @@ -12926,12 +12925,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" } }, "debug": { @@ -12961,7 +12960,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "nconf": { @@ -12970,10 +12969,10 @@ "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", "dev": true, "requires": { - "async": "^1.4.0", - "ini": "^1.3.0", - "secure-keys": "^1.0.0", - "yargs": "^3.19.0" + "async": "1.5.2", + "ini": "1.3.5", + "secure-keys": "1.0.0", + "yargs": "3.32.0" } }, "os-locale": { @@ -12982,7 +12981,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "^1.0.0" + "lcid": "1.0.0" } }, "os-name": { @@ -12991,8 +12990,8 @@ "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", "dev": true, "requires": { - "macos-release": "^1.0.0", - "win-release": "^1.0.0" + "macos-release": "1.1.0", + "win-release": "1.1.1" } }, "semver": { @@ -13007,8 +13006,8 @@ "integrity": "sha512-D1Xz1pZa9lwA9AHogmAigyJGo/iuEGH+rcPB77mFsneVfnuiK9c6IjnsHbEBUf1cePtZvWdGBjs6e75Cvc2AMg==", "dev": true, "requires": { - "debug": "^3.1.0", - "nconf": "^0.10.0" + "debug": "3.1.0", + "nconf": "0.10.0" } }, "snyk-go-plugin": { @@ -13017,8 +13016,8 @@ "integrity": "sha512-H6CHhGqchCcQV/JhOiSbTI8JLYhQU7dZ/oLwHMfVEXSD3bWOp1evlohuaQQaqic/ZInitLsjkCLHG2x47ZgUgQ==", "dev": true, "requires": { - "graphlib": "^2.1.1", - "toml": "^2.3.2" + "graphlib": "2.1.5", + "toml": "2.3.3" } }, "snyk-gradle-plugin": { @@ -13027,7 +13026,7 @@ "integrity": "sha512-rKZcPwbDM9zk3pFcO0w77MIKOZTkk5ZBVBkBlTlUiFg+eNOKqPTmw2hBGF5NB4ASQmMnx3uB1C8+hrQ405CthA==", "dev": true, "requires": { - "clone-deep": "^0.3.0" + "clone-deep": "0.3.0" } }, "snyk-module": { @@ -13036,8 +13035,8 @@ "integrity": "sha512-XqhdbZ/CUuJ5gSaYdYfapLqx9qm2Mp6nyRMBCLXe9tJSiohOJsc9fQuUDbdOiRCqpA4BD6WLl+qlwOJmJoszBg==", "dev": true, "requires": { - "debug": "^3.1.0", - "hosted-git-info": "^2.1.4" + "debug": "3.1.0", + "hosted-git-info": "2.5.0" } }, "snyk-mvn-plugin": { @@ -13052,10 +13051,10 @@ "integrity": "sha512-BFZv6UxViTWbu4+AiWRD1cTby3FZ4rs2CuLma0d80iOTzgfmvFmgeWHlM8bXx0WAC47HYywXQuDJeKzV7iiaXQ==", "dev": true, "requires": { - "debug": "^3.1.0", - "es6-promise": "^4.1.1", - "xml2js": "^0.4.17", - "zip": "^1.2.0" + "debug": "3.1.0", + "es6-promise": "4.2.4", + "xml2js": "0.4.19", + "zip": "1.2.0" } }, "snyk-php-plugin": { @@ -13064,8 +13063,8 @@ "integrity": "sha512-HS5NSxR4JwTdSQttDrV9y9eOC75U3JfLWEDhGJf1qJIObLlF6Vbj9kZcphmdi4CUNwDcQqEPglh911zXB1tzQQ==", "dev": true, "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5" + "debug": "3.1.0", + "lodash": "4.17.10" } }, "snyk-policy": { @@ -13074,15 +13073,15 @@ "integrity": "sha512-CEioNnDzccHyid7UIVl3bJ1dnG4co4ofI+KxuC1mo0IUXy64gxnBTeVoZF5gVLWbAyxGxSeW8f0+8GmWMHVb7w==", "dev": true, "requires": { - "debug": "^3.1.0", - "email-validator": "^2.0.3", - "js-yaml": "^3.5.3", - "lodash.clonedeep": "^4.3.1", - "semver": "^5.5.0", - "snyk-module": "^1.8.2", - "snyk-resolve": "^1.0.1", - "snyk-try-require": "^1.1.1", - "then-fs": "^2.0.0" + "debug": "3.1.0", + "email-validator": "2.0.3", + "js-yaml": "3.10.0", + "lodash.clonedeep": "4.5.0", + "semver": "5.5.0", + "snyk-module": "1.8.2", + "snyk-resolve": "1.0.1", + "snyk-try-require": "1.3.0", + "then-fs": "2.0.0" } }, "snyk-python-plugin": { @@ -13097,8 +13096,8 @@ "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", "dev": true, "requires": { - "debug": "^3.1.0", - "then-fs": "^2.0.0" + "debug": "3.1.0", + "then-fs": "2.0.0" } }, "snyk-resolve-deps": { @@ -13107,20 +13106,20 @@ "integrity": "sha512-YVAelR+dTpqLgfk6lf6WgOlw+MGmGI0r3/Dny8tUbJJ9uVTHTRAOdZCbUyTFqJG7oEmEZxUwmfjqgAuniYwx8Q==", "dev": true, "requires": { - "ansicolors": "^0.3.2", - "debug": "^3.1.0", - "lodash.assign": "^4.2.0", - "lodash.assignin": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lru-cache": "^4.0.0", - "semver": "^5.1.0", - "snyk-module": "^1.6.0", - "snyk-resolve": "^1.0.0", - "snyk-tree": "^1.0.0", - "snyk-try-require": "^1.1.1", - "then-fs": "^2.0.0" + "ansicolors": "0.3.2", + "debug": "3.1.0", + "lodash.assign": "4.2.0", + "lodash.assignin": "4.2.0", + "lodash.flatten": "4.4.0", + "lodash.get": "4.4.2", + "lodash.set": "4.3.2", + "lru-cache": "4.1.1", + "semver": "5.5.0", + "snyk-module": "1.8.2", + "snyk-resolve": "1.0.1", + "snyk-tree": "1.0.0", + "snyk-try-require": "1.3.0", + "then-fs": "2.0.0" } }, "snyk-try-require": { @@ -13129,10 +13128,10 @@ "integrity": "sha1-81cGrPkciveI1Y4fGta/D89sVJM=", "dev": true, "requires": { - "debug": "^3.1.0", - "lodash.clonedeep": "^4.3.0", - "lru-cache": "^4.0.0", - "then-fs": "^2.0.0" + "debug": "3.1.0", + "lodash.clonedeep": "4.5.0", + "lru-cache": "4.1.1", + "then-fs": "2.0.0" } }, "string-width": { @@ -13141,9 +13140,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -13152,7 +13151,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -13161,7 +13160,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "tempfile": { @@ -13170,8 +13169,8 @@ "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", "dev": true, "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" + "temp-dir": "1.0.0", + "uuid": "3.2.1" } }, "uuid": { @@ -13186,13 +13185,13 @@ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" } } } @@ -13203,7 +13202,7 @@ "integrity": "sha512-6D981zAdFYatBLNwp7J5Vl5wZFieBlwKj1Ans9uZ5BZZfg4mjIX/62tfADmJEbHijvnN+i7N8cNQRvVOyLo2UA==", "dev": true, "requires": { - "debug": "^2.2.0" + "debug": "2.6.9" } }, "snyk-tree": { @@ -13212,7 +13211,7 @@ "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", "dev": true, "requires": { - "archy": "^1.0.0" + "archy": "1.0.0" } }, "socks": { @@ -13221,8 +13220,8 @@ "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" + "ip": "1.1.5", + "smart-buffer": "1.1.15" } }, "socks-proxy-agent": { @@ -13231,8 +13230,8 @@ "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "dev": true, "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" + "agent-base": "4.2.0", + "socks": "1.1.10" } }, "sort-keys": { @@ -13240,7 +13239,7 @@ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "requires": { - "is-plain-obj": "^1.0.0" + "is-plain-obj": "1.1.0" } }, "sortablejs": { @@ -13259,11 +13258,11 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "^2.0.0", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { @@ -13271,7 +13270,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "requires": { - "source-map": "^0.6.0" + "source-map": "0.6.1" } }, "source-map-url": { @@ -13285,7 +13284,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-license-ids": "1.2.2" } }, "spdx-expression-parse": { @@ -13304,7 +13303,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2" + "through": "2.3.8" } }, "split-array-stream": { @@ -13312,8 +13311,8 @@ "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", "requires": { - "async": "^2.4.0", - "is-stream-ended": "^0.1.0" + "async": "2.6.0", + "is-stream-ended": "0.1.4" } }, "split-string": { @@ -13322,7 +13321,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -13336,14 +13335,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" } }, "ssr-window": { @@ -13368,8 +13367,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -13378,7 +13377,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "is-accessor-descriptor": { @@ -13387,7 +13386,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -13396,7 +13395,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -13407,7 +13406,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -13416,7 +13415,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -13427,9 +13426,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -13466,7 +13465,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "~0.1.1" + "duplexer": "0.1.1" } }, "stream-events": { @@ -13474,7 +13473,7 @@ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { - "stubs": "^3.0.0" + "stubs": "3.0.0" } }, "stream-shift": { @@ -13503,8 +13502,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" } }, "string-width": { @@ -13512,8 +13511,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "string_decoder": { @@ -13521,7 +13520,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "stringstream": { @@ -13534,7 +13533,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" }, "dependencies": { "ansi-regex": { @@ -13555,7 +13554,7 @@ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "dev": true, "requires": { - "is-natural-number": "^4.0.1" + "is-natural-number": "4.0.1" } }, "strip-eof": { @@ -13573,10 +13572,10 @@ "resolved": "https://registry.npmjs.org/stripe/-/stripe-5.4.0.tgz", "integrity": "sha512-VCDFp4oQu1uOcOLHIwRIznH8ikLJcpDsHahWN48V/QuV6y2Bm281cq5wnkjqv+LPdUpqXVp9pjlb+SfN6dnyZg==", "requires": { - "bluebird": "^3.5.0", - "lodash.isplainobject": "^4.0.6", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1" + "bluebird": "3.5.1", + "lodash.isplainobject": "4.0.6", + "qs": "6.5.1", + "safe-buffer": "5.1.1" }, "dependencies": { "bluebird": { @@ -13596,7 +13595,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "sweetalert2": { @@ -13609,8 +13608,8 @@ "resolved": "https://registry.npmjs.org/swiper/-/swiper-4.1.6.tgz", "integrity": "sha512-oEpyQc4qCAgQCWlSPCxJd4STQFJqASyVcLCs7CzzZiFc8NnTfBaMt3p9iwqoC8c6KofJmt6zonyUj50KRFWW3g==", "requires": { - "dom7": "^2.0.2", - "ssr-window": "^1.0.0" + "dom7": "2.0.2", + "ssr-window": "1.0.0" } }, "symbol-observable": { @@ -13630,12 +13629,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "taffydb": { @@ -13649,12 +13648,12 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.3.3.tgz", "integrity": "sha512-v9wjbOXloOIeXifMQGkKhPH3H7tjd+8BubFKOTU+64JpFZ3q2zBfsGlnc7KmyRgl8UxVa1SCRiF3F9tqSOgcaQ==", "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.3", - "minipass": "^2.2.1", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "yallist": "^3.0.2" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.1", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "yallist": "3.0.2" }, "dependencies": { "yallist": { @@ -13671,14 +13670,14 @@ "dev": true, "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" }, "dependencies": { "tar": { @@ -13688,9 +13687,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } } } @@ -13701,13 +13700,13 @@ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", "dev": true, "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.1.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.0", - "xtend": "^4.0.0" + "bl": "1.2.2", + "buffer-alloc": "1.1.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.3", + "to-buffer": "1.1.1", + "xtend": "4.0.1" } }, "temp-dir": { @@ -13722,7 +13721,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "^0.7.0" + "execa": "0.7.0" } }, "test-exclude": { @@ -13731,11 +13730,11 @@ "integrity": "sha512-8hMFzjxbPv6xSlwGhXSvOMJ/vTy3bkng+2pxmf6E1z6VF7I9nIyNfvHtaw+NBPgvz647gADBbMSbwLfZYppT/w==", "dev": true, "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" }, "dependencies": { "find-up": { @@ -13744,8 +13743,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, "load-json-file": { @@ -13754,11 +13753,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" } }, "path-exists": { @@ -13767,7 +13766,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "path-type": { @@ -13776,9 +13775,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "read-pkg": { @@ -13787,9 +13786,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -13798,8 +13797,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "strip-bom": { @@ -13808,7 +13807,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } } } @@ -13823,7 +13822,7 @@ "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", "requires": { - "tether": "^1.1.0" + "tether": "1.4.3" } }, "tether-tooltip": { @@ -13831,8 +13830,8 @@ "resolved": "https://registry.npmjs.org/tether-tooltip/-/tether-tooltip-1.2.0.tgz", "integrity": "sha1-CPSXZNX0SHCLURGcn+EZlytNaWI=", "requires": { - "tether": "^1.1.0", - "tether-drop": "^1.4.0" + "tether": "1.4.3", + "tether-drop": "1.4.2" } }, "text-table": { @@ -13847,7 +13846,7 @@ "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", "dev": true, "requires": { - "promise": ">=3.2 <8" + "promise": "7.3.1" } }, "throat": { @@ -13867,8 +13866,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.3", + "xtend": "4.0.1" } }, "thunkify": { @@ -13893,7 +13892,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "tmpl": { @@ -13919,7 +13918,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { @@ -13928,10 +13927,10 @@ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -13940,8 +13939,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { "is-number": { @@ -13950,7 +13949,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } } } @@ -13977,7 +13976,7 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" }, "dependencies": { "hoek": { @@ -13993,7 +13992,7 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "dev": true, "requires": { - "nopt": "~1.0.10" + "nopt": "1.0.10" } }, "tough-cookie": { @@ -14001,7 +14000,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tr46": { @@ -14010,7 +14009,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.0" }, "dependencies": { "punycode": { @@ -14023,9 +14022,8 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", - "from": "github:reactioncommerce/transliteration", "requires": { - "yargs": "^8.0.2" + "yargs": "8.0.2" } }, "trim-right": { @@ -14038,7 +14036,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "tus-js-client": { @@ -14046,10 +14044,10 @@ "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-1.5.1.tgz", "integrity": "sha512-qBSNXpc6ZPe6stn4NSkQ1dnVhVblPAtQo6037g5Qr5zr9gGX1gr+8e0+HtQMBp22Ouo6LYesWMdKbcOR5sRj5A==", "requires": { - "buffer-from": "^0.1.1", - "extend": "^3.0.0", - "lodash.throttle": "^4.1.1", - "resolve-url": "^0.2.1" + "buffer-from": "0.1.2", + "extend": "3.0.1", + "lodash.throttle": "4.1.1", + "resolve-url": "0.2.1" } }, "tus-node-server": { @@ -14058,12 +14056,12 @@ "integrity": "sha512-1Eb/GGejUTUpCpuHbol8OsQDk38Mx8jPLne+0VvPTKVv6Gvoj+Q7trjc5mQHQqCd8vIYsXHEEJ/46YR1bZZJig==", "requires": { "@google-cloud/storage": "1.1.1", - "configstore": "^3.1.1", + "configstore": "3.1.1", "crypto-rand": "0.0.2", - "debug": "^3.1.0", - "google-auto-auth": "^0.8.1", - "object-assign": "^4.1.1", - "request": "^2.72.0" + "debug": "3.1.0", + "google-auto-auth": "0.8.2", + "object-assign": "4.1.1", + "request": "2.83.0" }, "dependencies": { "debug": { @@ -14088,11 +14086,11 @@ "integrity": "sha512-xGUH+SW8lBsPmTB9nNuawB8AajhevjIktD6LvESbIJ5HVeAgE44Y327AziCAT6lQr90PYB5joO5IUagH6YwzDA==", "requires": { "deprecate": "1.0.0", - "jsonwebtoken": "^8.1.0", + "jsonwebtoken": "8.2.1", "lodash": "4.0.0", "moment": "2.19.3", - "q": "2.0.x", - "request": "2.83.x", + "q": "2.0.3", + "request": "2.83.0", "rootpath": "0.1.2", "scmp": "0.0.3", "xmlbuilder": "9.0.1" @@ -14103,16 +14101,16 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", "requires": { - "jws": "^3.1.4", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "xtend": "^4.0.1" + "jws": "3.1.4", + "lodash.includes": "4.3.0", + "lodash.isboolean": "3.0.3", + "lodash.isinteger": "4.0.4", + "lodash.isnumber": "3.0.3", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.once": "4.1.1", + "ms": "2.1.1", + "xtend": "4.0.1" } }, "lodash": { @@ -14143,7 +14141,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "type-detect": { @@ -14157,7 +14155,7 @@ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.15" + "mime-types": "2.1.17" } }, "typedarray": { @@ -14176,9 +14174,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "camelcase": { @@ -14205,9 +14203,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -14238,8 +14236,8 @@ "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", "dev": true, "requires": { - "buffer": "^3.0.1", - "through": "^2.3.6" + "buffer": "3.6.0", + "through": "2.3.8" } }, "undefsafe": { @@ -14248,7 +14246,7 @@ "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "dev": true, "requires": { - "debug": "^2.2.0" + "debug": "2.6.9" } }, "underscore": { @@ -14286,8 +14284,8 @@ "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.2", - "unicode-property-aliases-ecmascript": "^1.0.3" + "unicode-canonical-property-names-ecmascript": "1.0.3", + "unicode-property-aliases-ecmascript": "1.0.3" } }, "unicode-match-property-value-ecmascript": { @@ -14308,10 +14306,10 @@ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { @@ -14320,7 +14318,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { @@ -14329,10 +14327,10 @@ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -14342,7 +14340,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "1.0.0" } }, "universalify": { @@ -14362,8 +14360,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -14372,9 +14370,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -14420,15 +14418,15 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "boxen": "1.3.0", + "chalk": "2.3.1", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" } }, "urix": { @@ -14458,7 +14456,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "^2.0.0" + "prepend-http": "2.0.0" } }, "url-to-options": { @@ -14472,7 +14470,7 @@ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "kind-of": "^6.0.2" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -14494,8 +14492,8 @@ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" } }, "utils-merge": { @@ -14514,7 +14512,7 @@ "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "homedir-polyfill": "1.0.1" } }, "validate-npm-package-license": { @@ -14522,8 +14520,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" } }, "value-equal": { @@ -14546,10 +14544,10 @@ "resolved": "https://registry.npmjs.org/velocity-react/-/velocity-react-1.3.3.tgz", "integrity": "sha1-1tRyds/Ivip1Yjh5sgFArFjBuCs=", "requires": { - "lodash": "^3.10.1", - "prop-types": "^15.5.8", - "react-transition-group": "^1.1.2", - "velocity-animate": "^1.4.0" + "lodash": "3.10.1", + "prop-types": "15.6.0", + "react-transition-group": "1.2.1", + "velocity-animate": "1.5.1" }, "dependencies": { "lodash": { @@ -14564,9 +14562,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "w3c-hr-time": { @@ -14575,7 +14573,7 @@ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "0.1.2" } }, "walker": { @@ -14584,7 +14582,7 @@ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.11" } }, "warning": { @@ -14592,7 +14590,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "watch": { @@ -14601,8 +14599,8 @@ "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "dev": true, "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" + "exec-sh": "0.2.1", + "minimist": "1.2.0" }, "dependencies": { "minimist": { @@ -14644,9 +14642,9 @@ "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.0", - "webidl-conversions": "^4.0.1" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } }, "which": { @@ -14654,7 +14652,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -14669,7 +14667,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -14679,7 +14677,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -14689,9 +14687,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -14701,7 +14699,7 @@ "dev": true, "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -14712,7 +14710,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "win-release": { @@ -14721,7 +14719,7 @@ "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "dev": true, "requires": { - "semver": "^5.0.1" + "semver": "5.4.1" } }, "window-size": { @@ -14740,8 +14738,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -14749,7 +14747,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -14757,9 +14755,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -14767,7 +14765,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -14783,7 +14781,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "^0.5.1" + "mkdirp": "0.5.1" } }, "write-file-atomic": { @@ -14791,9 +14789,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } }, "ws": { @@ -14802,9 +14800,9 @@ "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" } }, "x-path": { @@ -14813,7 +14811,7 @@ "integrity": "sha1-KU0Ha7l6dwbMBwu7Km/YxU32exI=", "dev": true, "requires": { - "path-extra": "^1.0.2" + "path-extra": "1.0.3" } }, "xdg-basedir": { @@ -14838,8 +14836,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "sax": "1.2.4", + "xmlbuilder": "9.0.7" } }, "xmlbuilder": { @@ -14879,19 +14877,19 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.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", - "yargs-parser": "^7.0.0" + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" }, "dependencies": { "cliui": { @@ -14899,9 +14897,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { "string-width": { @@ -14909,9 +14907,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } @@ -14921,7 +14919,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "strip-ansi": { @@ -14929,7 +14927,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -14939,7 +14937,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } }, "yauzl": { @@ -14948,8 +14946,8 @@ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "dev": true, "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.0.1" + "buffer-crc32": "0.2.13", + "fd-slicer": "1.0.1" } }, "zen-observable": { @@ -14962,7 +14960,7 @@ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.8.tgz", "integrity": "sha512-oGjFvBbAA94uh/HvAwJDwMHtNq4lZRtupJx8XsyreOTYvH8x1ef9hIeH/M+IqiAXtNpglq/Klh5rbpYWEeRSOQ==", "requires": { - "zen-observable": "^0.7.0" + "zen-observable": "0.7.1" } }, "zip": { @@ -14971,7 +14969,7 @@ "integrity": "sha1-rQrUImUwm+QutW/IYZThfCTmapw=", "dev": true, "requires": { - "bops": "~0.1.1" + "bops": "0.1.1" } } } diff --git a/package.json b/package.json index 97c68b13835..c087240f164 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "jquery-i18next": "^1.2.1", "later": "^1.2.0", "libphonenumber-js": "^1.0.24", - "lodash": "^4.17.5", + "lodash": "^4.17.10", "lodash.pick": "^4.4.0", "match-sorter": "^2.2.0", "meteor-node-stubs": "^0.3.2", diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index 945cc689fec..393be6f357d 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -1,4 +1,6 @@ import GraphTester from "../GraphTester"; +// import { Tag } from "/lib/collections/schemas/tags"; +import { createFactoryForSchema, Factory } from "/imports/test-utils/helpers/dataFactory"; jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; @@ -128,3 +130,12 @@ test("works correctly when last goes before start", async () => { expect(result.tags.totalCount).toBe(55); expect(result.tags.pageInfo).toEqual({ endCursor: null, hasNextPage: true, hasPreviousPage: false, startCursor: null }); }); + + +test("testing data factory", () => { + const mockTag = Factory.Tag.makOne(); + const spec = true; + + console.log("facotry tag?", mockTag); + expect(spec).toBe(false); +}); From 4dd5fea28351eca9cb2e10dd977a39ca94387725 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:01:52 -0700 Subject: [PATCH 056/201] refactor: remove revisions definition --- imports/collections/defineCollections.js | 1 - 1 file changed, 1 deletion(-) diff --git a/imports/collections/defineCollections.js b/imports/collections/defineCollections.js index 30f0436b920..0ac3982a0cb 100644 --- a/imports/collections/defineCollections.js +++ b/imports/collections/defineCollections.js @@ -22,7 +22,6 @@ export default function defineCollections(db, collections) { Orders: db.collection("Orders"), Packages: db.collection("Packages"), Products: db.collection("Products"), - Revisions: db.collection("Revisions"), roles: db.collection("roles"), SellerShops: db.collection("SellerShops"), Shipping: db.collection("Shipping"), From e3b27e7fcbcf614a6c78d0724ff4941390e81042 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:02:02 -0700 Subject: [PATCH 057/201] refactor: remove unused render function --- .../catalog/client/components/publishControls.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/imports/plugins/core/catalog/client/components/publishControls.js b/imports/plugins/core/catalog/client/components/publishControls.js index 39322a5cef3..19bd56c36b3 100644 --- a/imports/plugins/core/catalog/client/components/publishControls.js +++ b/imports/plugins/core/catalog/client/components/publishControls.js @@ -290,19 +290,6 @@ class PublishControls extends Component { return null; } - renderUndoButton() { - return ( - - ); - } - renderArchiveButton() { return ( Date: Mon, 21 May 2018 15:03:45 -0700 Subject: [PATCH 058/201] refactor: remove "discard" logic --- .../client/containers/publishContainer.js | 28 ++----------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/imports/plugins/core/catalog/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js index 4a61099579c..61fe55639fa 100644 --- a/imports/plugins/core/catalog/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -28,31 +28,9 @@ class PublishContainer extends Component { this.publishToCatalog("products", productIds); } - handlePublishActions = (event, action, documentIds) => { - switch (action) { - case "archive": - if (this.props.onAction) { - this.props.onAction(event, action, this.props.documentIds); - } - break; - case "discard": - Meteor.call("revisions/discard", documentIds, (error, result) => { - if (result === true) { - const message = i18next.t("revisions.changesDiscarded", { - defaultValue: "Changes discarded successfully" - }); - - Alerts.toast(message, "success"); - } else { - const message = i18next.t("revisions.noChangesDiscarded", { - defaultValue: "There are no changes to discard" - }); - - Alerts.toast(message, "warning"); - } - }); - break; - default: + handlePublishActions = (event, action) => { + if (action === "archive" && this.props.onAction) { + this.props.onAction(event, action, this.props.documentIds); } } From d5f96c311172b09d8366810e3ff9ac7966520d56 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:04:06 -0700 Subject: [PATCH 059/201] refactor: remove revisions prop --- .../core/catalog/client/containers/publishContainer.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/imports/plugins/core/catalog/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js index 61fe55639fa..c9c1d21efc2 100644 --- a/imports/plugins/core/catalog/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -44,7 +44,6 @@ class PublishContainer extends Component { onPublishClick={this.handlePublishClick} onAction={this.handlePublishActions} onVisibilityChange={this.props.onVisibilityChange} - revisions={this.props.revisions} isPreview={this.props.isPreview} /> @@ -60,8 +59,7 @@ PublishContainer.propTypes = { onAction: PropTypes.func, onPublishSuccess: PropTypes.func, onVisibilityChange: PropTypes.func, - product: PropTypes.object, - revisions: PropTypes.arrayOf(PropTypes.object) + product: PropTypes.object }; function composer(props, onData) { From 7f35a3402d225cb6d4d49a0818799373244cfff1 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:07:04 -0700 Subject: [PATCH 060/201] refactor: remove unused render func --- .../client/components/publishControls.js | 47 ------------------- 1 file changed, 47 deletions(-) diff --git a/imports/plugins/core/catalog/client/components/publishControls.js b/imports/plugins/core/catalog/client/components/publishControls.js index 19bd56c36b3..0e977b59eae 100644 --- a/imports/plugins/core/catalog/client/components/publishControls.js +++ b/imports/plugins/core/catalog/client/components/publishControls.js @@ -4,10 +4,6 @@ import { Components } from "@reactioncommerce/reaction-components"; import { Button, FlatButton, - IconButton, - Divider, - DropDownMenu, - MenuItem, Switch, Icon } from "/imports/plugins/core/ui/client/components"; @@ -218,48 +214,6 @@ class PublishControls extends Component { ); } - renderMoreOptionsButton() { - return ( - } - handleMenuItemChange={this.handleAction} - > - - - - - - - - - - - ); - } - renderViewControls() { if (this.props.showViewAsControls) { let tooltip = "Private"; @@ -357,7 +311,6 @@ class PublishControls extends Component { {this.renderArchiveButton()} {this.renderViewControls()} {this.renderPublishButton()} - {/* this.renderMoreOptionsButton() */} ); } From 746ec219903758e71b04151e2bc4da32e18744c4 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:17:03 -0700 Subject: [PATCH 061/201] refactor: remove revision logic for the edit button --- .../plugins/core/ui/client/containers/edit.js | 41 +------------------ 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/imports/plugins/core/ui/client/containers/edit.js b/imports/plugins/core/ui/client/containers/edit.js index 547b8294813..0d2357806c8 100644 --- a/imports/plugins/core/ui/client/containers/edit.js +++ b/imports/plugins/core/ui/client/containers/edit.js @@ -65,47 +65,8 @@ class EditContainer extends Component { renderEditButton() { let status; let tooltip; - let hasChange = false; - - if (this.props.data.__draft && this.props.field) { - const draft = this.props.data.__draft; - - if (Array.isArray(draft.diff)) { - for (const diff of draft.diff) { - let hasChangedField = false; - - if (Array.isArray(this.props.field)) { - if (this.props.field.indexOf(diff.path[0]) >= 0) { - hasChangedField = true; - } - } else if (typeof this.props.field === "string" && this.props.field === diff.path[0]) { - hasChangedField = true; - } - - if (hasChangedField) { - status = "warning"; - - tooltip = ( - - - - ); - - hasChange = true; - } - } - } - } else if (this.props.data.__draft) { - status = "warning"; - - tooltip = ( - - - - ); - } - if (this.props.autoHideEditButton && hasChange === false) { + if (this.props.autoHideEditButton) { return null; } From 0e1421e6758feebc7366ca7a0034c74de9b4f909 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Mon, 21 May 2018 15:21:36 -0700 Subject: [PATCH 062/201] refactor: remove revision translations --- private/data/i18n/ar.json | 14 -------------- private/data/i18n/bg.json | 14 -------------- private/data/i18n/cs.json | 14 -------------- private/data/i18n/de.json | 14 -------------- private/data/i18n/el.json | 14 -------------- private/data/i18n/en.json | 14 -------------- private/data/i18n/es.json | 14 -------------- private/data/i18n/fr.json | 14 -------------- private/data/i18n/he.json | 14 -------------- private/data/i18n/hr.json | 14 -------------- private/data/i18n/hu.json | 14 -------------- private/data/i18n/it.json | 14 -------------- private/data/i18n/my.json | 14 -------------- private/data/i18n/nl.json | 14 -------------- private/data/i18n/pl.json | 14 -------------- private/data/i18n/pt.json | 14 -------------- private/data/i18n/ro.json | 14 -------------- private/data/i18n/ru.json | 14 -------------- private/data/i18n/sl.json | 14 -------------- private/data/i18n/sv.json | 14 -------------- private/data/i18n/tr.json | 14 -------------- private/data/i18n/vi.json | 14 -------------- private/data/i18n/zh.json | 14 -------------- 23 files changed, 322 deletions(-) diff --git a/private/data/i18n/ar.json b/private/data/i18n/ar.json index b5997c3ef92..5720bf9a9e7 100644 --- a/private/data/i18n/ar.json +++ b/private/data/i18n/ar.json @@ -513,20 +513,6 @@ "isCommercial": "هذه عناوين تجارية" } }, - "revisions": { - "isDisabled": ".مراجعة المراقبة غير مفعل .أي تغيير سوف يتم نشره فوراً", - "isEnabled": "يتم تمكين مراجعة مراقبة للمنتجات. سوف يحتاج أي تغييرات على أن تنشر قبل أن يكون مرئيا للعملاء.", - "unpublishedChanges": "تغييرات غير منشورة", - "publishChanges": "تغييرات النشر", - "showChanges": "إظهار التغييرات", - "hideChanges": "إخفاء التغييرات", - "discardChanges": "التراجع عن التغييرات ", - "changedPublished": "تم نشر التغييرات بنجاح", - "changesDiscarded": "تم التراجع عن التغييرات بنجاح ", - "noChanges": "لا يوجد تغييرات", - "noChangesPublished": ".لا يوجد تغييرات لنشرها", - "noChangesDiscarded": "لايوجد تغييرات للتراجع عنها " - }, "address": { "country": "البلد", "fullName": "الأسم كامل", diff --git a/private/data/i18n/bg.json b/private/data/i18n/bg.json index e326d60c6ce..ac4566b42f8 100644 --- a/private/data/i18n/bg.json +++ b/private/data/i18n/bg.json @@ -513,20 +513,6 @@ "isCommercial": "Това е търговски адрес." } }, - "revisions": { - "isDisabled": "контрол на контрол е забранено. Всички промени ще бъдат публикувани веднага.", - "isEnabled": "контрол на контрол е активиран за продукти. ще се нуждае от никакви промени, за да бъдат публикувани преди да бъдат видими за клиентите.", - "unpublishedChanges": "Непубликувани промени", - "publishChanges": "Публикуване на промените", - "showChanges": "Показване на промените", - "hideChanges": "Скриване на промените", - "discardChanges": "Отхвърлите промените", - "changedPublished": "Промени публикувани успешно", - "changesDiscarded": "Промени изхвърли успешно", - "noChanges": "Няма промени", - "noChangesPublished": "Няма промени за публикуване", - "noChangesDiscarded": "Няма промени, за да изхвърли" - }, "address": { "country": "Държава", "fullName": "Пълно име", diff --git a/private/data/i18n/cs.json b/private/data/i18n/cs.json index 9635919d934..2e967bbcf81 100644 --- a/private/data/i18n/cs.json +++ b/private/data/i18n/cs.json @@ -513,20 +513,6 @@ "isCommercial": "Jedná se o obchodní adresu." } }, - "revisions": { - "isDisabled": "Ovládání revize je zakázáno. Jakékoli změny budou zveřejněny okamžitě.", - "isEnabled": "Ovládání revize je povoleno za produkty. bude muset případné změny, které mají být zveřejněny dříve, než jsou viditelné pro zákazníky.", - "unpublishedChanges": "nepublikované Změny", - "publishChanges": "Publish changes", - "showChanges": "Zobrazit změny", - "hideChanges": "skrýt Změny", - "discardChanges": "Zrušit změny", - "changedPublished": "Změny úspěšně publikován", - "changesDiscarded": "Změny úspěšně zlikvidovat", - "noChanges": "Žádné změny", - "noChangesPublished": "Nejsou žádné změny publikovat", - "noChangesDiscarded": "Nejsou žádné změny k vyhazování" - }, "address": { "country": "Země", "fullName": "Celé jméno", diff --git a/private/data/i18n/de.json b/private/data/i18n/de.json index 33320f8aabb..4d831df918d 100644 --- a/private/data/i18n/de.json +++ b/private/data/i18n/de.json @@ -513,20 +513,6 @@ "isCommercial": "This is a commercial address." } }, - "revisions": { - "isDisabled": "Die Revisionsverwaltung ist deaktiviert. Jegliche Änderungen werden sofort veröffentlicht.", - "isEnabled": "Revisionskontrolle für Produkte aktiviert. Alle Änderungen werden müssen, bevor sie an den Kunden sichtbar veröffentlicht.", - "unpublishedChanges": "Unveröffentlichte Änderungen", - "publishChanges": "Änderungen veröffentlichen", - "showChanges": "Änderungen anzeigen", - "hideChanges": "Änderungen verbergen", - "discardChanges": "Änderungen verwerfen", - "changedPublished": "Die Änderungen wurden erfolgreich veröffentlicht", - "changesDiscarded": "Änderungen erfolgreich verworfen", - "noChanges": "Keine Änderungen", - "noChangesPublished": "Es gibt keine Änderungen zu veröffentlichen", - "noChangesDiscarded": "Keine zu verwerfenden Änderungen gefunden" - }, "address": { "country": "Land", "fullName": "Vor- und Zuname", diff --git a/private/data/i18n/el.json b/private/data/i18n/el.json index 797072181fc..48bf2a57dd1 100644 --- a/private/data/i18n/el.json +++ b/private/data/i18n/el.json @@ -513,20 +513,6 @@ "isCommercial": "Είναι εμπορική διεύθυνση;" } }, - "revisions": { - "isDisabled": "έλεγχος αναθεώρηση είναι απενεργοποιημένη. Οποιεσδήποτε αλλαγές θα δημοσιεύονται αμέσως.", - "isEnabled": "ελέγχου αναθεώρησης είναι ενεργοποιημένη για Προϊόντα. Οποιεσδήποτε αλλαγές θα πρέπει να δημοσιεύονται πριν να είναι ορατή στους πελάτες.", - "unpublishedChanges": "Ανέκδοτες Αλλαγές", - "publishChanges": "Δημοσίευση αλλαγών", - "showChanges": "Εμφάνιση αλλαγών", - "hideChanges": "Απόκρυψη αλλαγών", - "discardChanges": "Απορρίψετε τις αλλαγές", - "changedPublished": "Αλλαγές που δημοσιεύθηκε με επιτυχία", - "changesDiscarded": "Αλλαγές απορρίφθηκε με επιτυχία", - "noChanges": "Χωρίς αλλαγές", - "noChangesPublished": "Δεν υπάρχουν αλλαγές να δημοσιεύσει", - "noChangesDiscarded": "Δεν υπάρχουν αλλαγές για να απορρίψετε" - }, "address": { "country": "Χώρα", "fullName": "Ονοματεπώνυμο", diff --git a/private/data/i18n/en.json b/private/data/i18n/en.json index 7e2dc283599..60848154620 100644 --- a/private/data/i18n/en.json +++ b/private/data/i18n/en.json @@ -526,20 +526,6 @@ "isCommercial": "This is a commercial address." } }, - "revisions": { - "isDisabled": "Revision control is disabled. Any changes will be published immediately.", - "isEnabled": "Revision control is enabled for products. Any changes will be need to be published before being visible to customers.", - "unpublishedChanges": "Unpublished changes", - "publishChanges": "Publish changes", - "showChanges": "Show changes", - "hideChanges": "Hide changes", - "discardChanges": "Discard changes", - "changedPublished": "Changes published successfully", - "changesDiscarded": "Changes discarded successfully", - "noChanges": "No changes", - "noChangesPublished": "There are no changes to publish", - "noChangesDiscarded": "There are no changes to discard" - }, "address": { "country": "Country", "fullName": "Full name", diff --git a/private/data/i18n/es.json b/private/data/i18n/es.json index 4e2812e6f77..20a05158a49 100644 --- a/private/data/i18n/es.json +++ b/private/data/i18n/es.json @@ -513,20 +513,6 @@ "isCommercial": "Esta es una dirección comercial" } }, - "revisions": { - "isDisabled": "El control de revisión está deshabilitado Todos los cambios se publicarán de imediato.", - "isEnabled": "Revisión de control está habilitada para los productos. Se necesitan cualquier cambio que se publicará antes de ser visibles para los clientes.", - "unpublishedChanges": "Cambios sin publicar", - "publishChanges": "Publicar cambios", - "showChanges": "Mostrar cambios", - "hideChanges": "Ocultar cambios", - "discardChanges": "Descartar cambios", - "changedPublished": "Cambios publicados correctamente", - "changesDiscarded": "Los cambios se han descartado", - "noChanges": "Sin cambios", - "noChangesPublished": "No hay cambios para publicar", - "noChangesDiscarded": "No hay cambios que descartar" - }, "address": { "country": "País", "fullName": "Nombre completo", diff --git a/private/data/i18n/fr.json b/private/data/i18n/fr.json index 8a871906296..2810b3c178a 100644 --- a/private/data/i18n/fr.json +++ b/private/data/i18n/fr.json @@ -513,20 +513,6 @@ "isCommercial": "Il s'agit d'une adresse commerciale." } }, - "revisions": { - "isDisabled": "La gestion de versions est désactivée. Toute modification sera immédiatement publiée.", - "isEnabled": "La gestion de versions est activée pour les produits. Toute modification devra être publiée avant d'être visible pour les clients.", - "unpublishedChanges": "Modifications non publiées", - "publishChanges": "Publier les modifications", - "showChanges": "Afficher les modifications", - "hideChanges": "Masquer les modifications", - "discardChanges": "Annuler les modifications", - "changedPublished": "Les modifications ont été publiées avec succès", - "changesDiscarded": "Modifications annulées avec succès", - "noChanges": "Aucune modification", - "noChangesPublished": "Aucune modification à publier", - "noChangesDiscarded": "Aucune modification à annuler" - }, "address": { "country": "Pays", "fullName": "Nom complet", diff --git a/private/data/i18n/he.json b/private/data/i18n/he.json index ff4fec442f1..6618b3fc71c 100644 --- a/private/data/i18n/he.json +++ b/private/data/i18n/he.json @@ -444,20 +444,6 @@ "isCommercial": "האם זו כתובת מסחרית?" } }, - "revisions": { - "isDisabled": "ניהול הגרסאות מושבת. כל השינויים יפורסמו באופן מידי.", - "isEnabled": "ניהול גרסאות מופעל עבור המוצרים. יש לפרסם את כל השינויים לפני שיהפכו להיות גלויים עבור הלקוחות.", - "unpublishedChanges": "שינויים שלא פורסמו", - "publishChanges": "פרסם שינויים", - "showChanges": "הצג שינויים", - "hideChanges": "הסתר שינויים", - "discardChanges": "בטל שינויים", - "changedPublished": "השינויים פורסמו בהצלחה", - "changesDiscarded": "השינויים בוטלו בהצלחה", - "noChanges": "אין שינויים", - "noChangesPublished": "אין שינויים לפרסום", - "noChangesDiscarded": "אין שינויים הניתנים לביטול" - }, "address": { "country": "ארץ", "fullName": "שם פרטי ומשפחה", diff --git a/private/data/i18n/hr.json b/private/data/i18n/hr.json index 43e29a01740..6a3d3d7c810 100644 --- a/private/data/i18n/hr.json +++ b/private/data/i18n/hr.json @@ -513,20 +513,6 @@ "isCommercial": "Ovo je adresa tvrtke." } }, - "revisions": { - "isDisabled": "kontrola Revizija je onemogućen. Sve promjene bit će odmah objavljena.", - "isEnabled": "kontrola Revizija je omogućena za proizvode. Sve promjene bit će morati biti objavljena prije nego što je vidljivo na kupce.", - "unpublishedChanges": "Neobjavljena Promjene", - "publishChanges": "Objavi promjene", - "showChanges": "Prikaži promjene", - "hideChanges": "Sakrij promjene", - "discardChanges": "Odbaciti promjene", - "changedPublished": "Promjene objavljeno uspješno", - "changesDiscarded": "Promjene uspješno odbačena", - "noChanges": "Nema promjena", - "noChangesPublished": "Nema promjena za objavu", - "noChangesDiscarded": "Nema promjena za odbacivanje" - }, "address": { "country": "Država", "fullName": "Puno ime", diff --git a/private/data/i18n/hu.json b/private/data/i18n/hu.json index c33995fadea..20a5be666e5 100644 --- a/private/data/i18n/hu.json +++ b/private/data/i18n/hu.json @@ -513,20 +513,6 @@ "isCommercial": "Céges cím." } }, - "revisions": { - "isDisabled": "Revision szabályozás ki van kapcsolva. A módosításokat haladéktalanul közzé kell tenni.", - "isEnabled": "Revision szabályozás engedélyezve a termékek. A módosításokat közzé kell tenni, mielőtt láthatóvá az ügyfelek számára.", - "unpublishedChanges": "közzétett módosítások", - "publishChanges": "Módosítások közzététele", - "showChanges": "Változások megjelenítése", - "hideChanges": "Változások elrejtése", - "discardChanges": "Módosítások elvetése", - "changedPublished": "Változások közzététele sikeresen", - "changesDiscarded": "Változások sikeresen elvetve", - "noChanges": "Nincs változás", - "noChangesPublished": "Nincs változás közzétételére", - "noChangesDiscarded": "Nincs változás megválni" - }, "address": { "country": "Ország", "fullName": "Teljes név", diff --git a/private/data/i18n/it.json b/private/data/i18n/it.json index 4c3ec615128..a4ff374dcec 100644 --- a/private/data/i18n/it.json +++ b/private/data/i18n/it.json @@ -513,20 +513,6 @@ "isCommercial": "Questo è un indirizzo commerciale." } }, - "revisions": { - "isDisabled": "controllo di revisione è disabilitato. Eventuali modifiche saranno pubblicate immediatamente.", - "isEnabled": "controllo di revisione è abilitato per i prodotti. saranno bisogno di alcuna modifica per essere pubblicato prima di essere visibile ai clienti.", - "unpublishedChanges": "Modifiche non pubblicati", - "publishChanges": "Pubblica modifiche", - "showChanges": "Mostra modifiche", - "hideChanges": "Nascondi le modifiche", - "discardChanges": "Non salvare le modifiche", - "changedPublished": "Modifiche pubblicato con successo", - "changesDiscarded": "Modifiche scartato con successo", - "noChanges": "Nessun cambiamento", - "noChangesPublished": "Non ci sono modifiche da pubblicare", - "noChangesDiscarded": "Non ci sono modifiche da scartare" - }, "address": { "country": "Nazione", "fullName": "Nome e cognome", diff --git a/private/data/i18n/my.json b/private/data/i18n/my.json index 436585cfb6a..d65f08776f6 100644 --- a/private/data/i18n/my.json +++ b/private/data/i18n/my.json @@ -513,20 +513,6 @@ "isCommercial": "ဒါကစီးပွားဖြစ်လိပ်စာဖြစ်ပါတယ်။" } }, - "revisions": { - "isDisabled": "တည်းဖြတ်မူထိန်းချုပ်မှုကိုပိတ်ထားသည်။ မဆိုအပြောင်းအလဲများချက်ချင်းပုံနှိပ်ထုတ်ဝေပါလိမ့်မည်။", - "isEnabled": "တည်းဖြတ်မူထိန်းချုပ်မှုထုတ်ကုန်များအတွက် enabled ဖြစ်ပါတယ်။ မဆိုစသောအပြောင်းအလဲဖောက်သည်မြင်နိုင်ဖြစ်ခြင်းမီကထုတ်ဝေသောခံရဖို့လိုအပ်ပါလိမ့်မည်။", - "unpublishedChanges": "အတည်မပြုရသေးသောအပြောင်းအလဲများ", - "publishChanges": "အပြောင်းအလဲများ Publish", - "showChanges": "အပြောင်းအလဲများ show ကို", - "hideChanges": "အပြောင်းအလဲများဝှက်ရန်", - "discardChanges": "စွန့်ပစ်အပြောင်းအလဲများ", - "changedPublished": "အောင်မြင်စွာပုံနှိပ်ထုတ်ဝေအပြောင်းအလဲများ", - "changesDiscarded": "အောင်မြင်စွာလွှင့်ပစ်အပြောင်းအလဲများ", - "noChanges": "အဘယ်သူမျှမအပြောင်းအလဲများ", - "noChangesPublished": "ထုတ်ဝေဖို့မအပြောင်းအလဲများရှိပါသည်", - "noChangesDiscarded": "ဖယ်ရန်မအပြောင်းအလဲများရှိပါသည်" - }, "address": { "country": "ပြည်", "fullName": "နာမည်အပြည့်အစုံ", diff --git a/private/data/i18n/nl.json b/private/data/i18n/nl.json index 3fc2d72ea49..2acae4c84f7 100644 --- a/private/data/i18n/nl.json +++ b/private/data/i18n/nl.json @@ -513,20 +513,6 @@ "isCommercial": "Dit is een zakelijk adres." } }, - "revisions": { - "isDisabled": "Revisie controle is uitgeschakeld. Eventuele wijzigingen zullen onmiddellijk worden gepubliceerd.", - "isEnabled": "Revisie controle is ingeschakeld voor producten. Eventuele wijzigingen zullen nodig hebben voordat ze zichtbaar zijn voor klanten om te worden gepubliceerd.", - "unpublishedChanges": "ongepubliceerde Wijzigingen", - "publishChanges": "Wijzigingen publiceren", - "showChanges": "Wijzigingen weergeven", - "hideChanges": "verbergen Wijzigingen", - "discardChanges": "Veranderingen ongedaan maken", - "changedPublished": "Wijzigingen met succes gepubliceerd", - "changesDiscarded": "Wijzigingen met succes verwijderd", - "noChanges": "Geen veranderingen", - "noChangesPublished": "Er zijn geen wijzigingen te publiceren", - "noChangesDiscarded": "Er zijn geen wijzigingen te ontdoen" - }, "address": { "country": "Land", "fullName": "Volledige naam", diff --git a/private/data/i18n/pl.json b/private/data/i18n/pl.json index 56f99b88f14..05ca212569f 100644 --- a/private/data/i18n/pl.json +++ b/private/data/i18n/pl.json @@ -513,20 +513,6 @@ "isCommercial": "Adres firmowy." } }, - "revisions": { - "isDisabled": "kontrola wersji jest wyłączona. Wszelkie zmiany będą publikowane natychmiast.", - "isEnabled": "kontrola wersji jest włączona dla Produktów. Wszelkie zmiany muszą być opublikowane, zanim będą widoczne dla klientów.", - "unpublishedChanges": "Niepublikowane Zmiany", - "publishChanges": "Opublikuj zmiany", - "showChanges": "Pokaż zmiany", - "hideChanges": "Schowaj Zmiany", - "discardChanges": "Odrzucać zmiany", - "changedPublished": "Zmiany opublikowane powodzeniem", - "changesDiscarded": "Zmiany odrzucone powodzeniem", - "noChanges": "Bez zmian", - "noChangesPublished": "Brak zmiany publikuj", - "noChangesDiscarded": "Brak zmiany, aby odrzucić" - }, "address": { "country": "Kraj", "fullName": "Pełne imię i nazwisko", diff --git a/private/data/i18n/pt.json b/private/data/i18n/pt.json index 5f699af6586..d461be7156f 100644 --- a/private/data/i18n/pt.json +++ b/private/data/i18n/pt.json @@ -513,20 +513,6 @@ "isCommercial": "Trata-se de um endereço comercial." } }, - "revisions": { - "isDisabled": "O controlo da revisão está desativado. As alterações serão publicadas de imediato.", - "isEnabled": "controle de revisão está habilitado para os produtos. será preciso qualquer alteração a ser publicado antes de ser visível para os clientes.", - "unpublishedChanges": "Alterações não publicadas", - "publishChanges": "Publicar alterações", - "showChanges": "Mostrar alterações", - "hideChanges": "Ocultar alterações", - "discardChanges": "Eliminar alterações", - "changedPublished": "Alterações publicadas com sucesso", - "changesDiscarded": "Alterações eliminadas com sucesso", - "noChanges": "Sem alterações", - "noChangesPublished": "Não há alterações para publicar", - "noChangesDiscarded": "Não há alterações para eliminar" - }, "address": { "country": "País", "fullName": "Nome completo", diff --git a/private/data/i18n/ro.json b/private/data/i18n/ro.json index 4f2b610f977..e853fedc10d 100644 --- a/private/data/i18n/ro.json +++ b/private/data/i18n/ro.json @@ -513,20 +513,6 @@ "isCommercial": "Aceasta este o adresă comercială." } }, - "revisions": { - "isDisabled": "Opțiunea „Revision control” este dezactivată. Orice schimbare va fi imediat publicată.", - "isEnabled": "Controlul revizie este activat pentru produse. Toate modificările vor fi trebui să fie publicate înainte de a fi vizibile pentru clienți.", - "unpublishedChanges": "Schimbări nepublicate", - "publishChanges": "Publicare schimbări", - "showChanges": "Expunere schimbări", - "hideChanges": "Ascundere modificări", - "discardChanges": "Eliminare schimbări", - "changedPublished": "Schimbările au fost publicate cu succes.", - "changesDiscarded": "Schimbări eliminate cu succes", - "noChanges": "Nicio schimbare", - "noChangesPublished": "Nu există modificări pentru publicare", - "noChangesDiscarded": "Nu există nicio schimbare de eliminat" - }, "address": { "country": "Țară", "fullName": "Numele complet", diff --git a/private/data/i18n/ru.json b/private/data/i18n/ru.json index c0894cdb71a..8cf085c8b1d 100644 --- a/private/data/i18n/ru.json +++ b/private/data/i18n/ru.json @@ -513,20 +513,6 @@ "isCommercial": "Это юридический адрес" } }, - "revisions": { - "isDisabled": "Управление версиями отключено. Любые изменения будут немедленно опубликованы.", - "isEnabled": "Контроль версий включена для продуктов. Любые изменения будут должны быть опубликованы до быть видимым для клиентов.", - "unpublishedChanges": "Неопубликованные изменения", - "publishChanges": "Опубликовать изменения", - "showChanges": "Отобразить изменения", - "hideChanges": "Скрыть изменения", - "discardChanges": "Отменить изменения", - "changedPublished": "Изменения успешно опубликованы", - "changesDiscarded": "Изменения успешно отменены", - "noChanges": "Изменений нет", - "noChangesPublished": "Нет изменений для публикации", - "noChangesDiscarded": "Отсутствуют изменения для отмены" - }, "address": { "country": "Страна", "fullName": "Ф.И.О.", diff --git a/private/data/i18n/sl.json b/private/data/i18n/sl.json index a8f36ddafb4..24c746d1a7c 100644 --- a/private/data/i18n/sl.json +++ b/private/data/i18n/sl.json @@ -513,20 +513,6 @@ "isCommercial": "To je komercialna naslov." } }, - "revisions": { - "isDisabled": "Nadzor Revizija je onemogočeno. Vse spremembe bodo objavljene takoj.", - "isEnabled": "Nadzor Revizija je omogočen za izdelke. Vse spremembe bo treba objaviti, preden se vidno strankam.", - "unpublishedChanges": "neobjavljene spremembe", - "publishChanges": "objavi spremembe", - "showChanges": "prikaži spremembe", - "hideChanges": "Skrij spremembe", - "discardChanges": "Zavreči spremembe", - "changedPublished": "Spremembe so bile uspešno objavljeno", - "changesDiscarded": "Spremembe uspešno zavreči", - "noChanges": "ni spremembe", - "noChangesPublished": "Ni spremembe objavijo", - "noChangesDiscarded": "Ni sprememb za zavržke" - }, "address": { "country": "Država", "fullName": "Polno ime", diff --git a/private/data/i18n/sv.json b/private/data/i18n/sv.json index 412408846fa..5b2c4680ab9 100644 --- a/private/data/i18n/sv.json +++ b/private/data/i18n/sv.json @@ -513,20 +513,6 @@ "isCommercial": "Detta är en kommersiell adress." } }, - "revisions": { - "isDisabled": "Versionskontroll är inaktiverad. Eventuella ändringar kommer att publiceras omedelbart.", - "isEnabled": "Versionskontroll har aktiverats för produkter. Eventuella ändringar kommer att behöva publiceras innan de blir synliga för kunderna.", - "unpublishedChanges": "Avpublicera ändringar", - "publishChanges": "publicera ändringar", - "showChanges": "visa ändringar", - "hideChanges": "Göm ändringar", - "discardChanges": "Ignorera ändringar", - "changedPublished": "Ändringarna publicerades", - "changesDiscarded": "Ändringarna kastades bort", - "noChanges": "Inga förändringar", - "noChangesPublished": "Det finns inga ändringar att publicera", - "noChangesDiscarded": "Det finns inga ändringar att avbryta" - }, "address": { "country": "Land", "fullName": "Fullständigt namn", diff --git a/private/data/i18n/tr.json b/private/data/i18n/tr.json index b7e4bd67307..57ab200c640 100644 --- a/private/data/i18n/tr.json +++ b/private/data/i18n/tr.json @@ -513,20 +513,6 @@ "isCommercial": "Bu ticari bir adres." } }, - "revisions": { - "isDisabled": "Revizyon kontrolü devre dışı bırakılır. Herhangi bir değişiklik derhal yayınlanacaktır.", - "isEnabled": "Revizyon kontrol Ürünleri etkindir. Herhangi bir değişiklik müşterilere görünür olmak önce yayınlanmış gerekir edilecektir.", - "unpublishedChanges": "yayınlanmamış değişiklikler", - "publishChanges": "Değişiklikleri Yayınla", - "showChanges": "Değişiklikleri göster", - "hideChanges": "gizle değişiklikler", - "discardChanges": "Değişiklikleri gözardı et", - "changedPublished": "Değişiklikler başarıyla yayınlandı", - "changesDiscarded": "Değişiklikler başarıyla atılır", - "noChanges": "Değişiklik yok", - "noChangesPublished": "yayımlamak için herhangi bir değişiklik bulunmamaktadır", - "noChangesDiscarded": "atmak için herhangi bir değişiklik bulunmamaktadır" - }, "address": { "country": "Ülke", "fullName": "Ad Saoyad", diff --git a/private/data/i18n/vi.json b/private/data/i18n/vi.json index 0e30397153b..6f9b9cadd46 100644 --- a/private/data/i18n/vi.json +++ b/private/data/i18n/vi.json @@ -513,20 +513,6 @@ "isCommercial": "Đây là địa chỉ thương mại." } }, - "revisions": { - "isDisabled": "kiểm soát sửa đổi được vô hiệu hóa. Mọi thay đổi sẽ được công bố ngay lập tức.", - "isEnabled": "kiểm soát sửa đổi được kích hoạt cho sản phẩm. Mọi thay đổi sẽ cần phải được công bố trước khi được rõ cho khách hàng.", - "unpublishedChanges": "Thay đổi chưa được công bố", - "publishChanges": "Xuất bản thay đổi", - "showChanges": "Hiện Thay đổi", - "hideChanges": "Ẩn Thay đổi", - "discardChanges": "Loại bỏ những thay đổi", - "changedPublished": "Thay đổi đăng thành công", - "changesDiscarded": "Thay đổi loại bỏ thành công", - "noChanges": "Không thay đổi", - "noChangesPublished": "Không có thay đổi để xuất bản", - "noChangesDiscarded": "Không có thay đổi để loại bỏ" - }, "address": { "country": "Quốc gia", "fullName": "Họ và tên", diff --git a/private/data/i18n/zh.json b/private/data/i18n/zh.json index d6e80393b39..54f6e8e96df 100644 --- a/private/data/i18n/zh.json +++ b/private/data/i18n/zh.json @@ -513,20 +513,6 @@ "isCommercial": "这是商业地址。" } }, - "revisions": { - "isDisabled": "版本控制已禁用。将立即发布任何更改。", - "isEnabled": "版本控制产品启用。任何更改都将是需要看到客户之前公布。", - "unpublishedChanges": "未发布更改", - "publishChanges": "发布更改", - "showChanges": "显示更改", - "hideChanges": "隐藏更改", - "discardChanges": "放弃更改", - "changedPublished": "更改已成功发布", - "changesDiscarded": "成功放弃更改", - "noChanges": "无更改", - "noChangesPublished": "没有要发布的更改", - "noChangesDiscarded": "没有需要放弃的更改" - }, "address": { "country": "国家", "fullName": "姓名", From e40f7926ddf934280d403c618c4e12b853f6da08 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Mon, 21 May 2018 17:30:11 -0500 Subject: [PATCH 063/201] fix: no hang on publishing many "Products" for admins --- lib/collections/schemas/products.js | 6 +- server/publications/collections/products.js | 143 ++++++-------------- 2 files changed, 47 insertions(+), 102 deletions(-) diff --git a/lib/collections/schemas/products.js b/lib/collections/schemas/products.js index e588ae20056..04eb30471a9 100644 --- a/lib/collections/schemas/products.js +++ b/lib/collections/schemas/products.js @@ -437,7 +437,8 @@ export const Product = new SimpleSchema({ }, "ancestors": { type: Array, - defaultValue: [] + defaultValue: [], + index: 1 }, "ancestors.$": { type: String @@ -595,7 +596,8 @@ export const Product = new SimpleSchema({ }, "createdAt": { type: Date, - autoValue: createdAtAutoValue + autoValue: createdAtAutoValue, + index: 1 }, "updatedAt": { type: Date, diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index db8662f20a9..1fdd0dbb138 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -267,27 +267,17 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so check(sort, Match.OneOf(undefined, Object)); check(editMode, Match.Maybe(Boolean)); - // TODO: Consider publishing the non-admin publication if a user is not in "edit mode" to see what is published - // Active shop const shopId = Reaction.getShopId(); const primaryShopId = Reaction.getPrimaryShopId(); - // Get a list of shopIds that this user has "createProduct" permissions for (owner permission is checked by default) - const userAdminShopIds = Reaction.getShopsWithRoles(["createProduct"], this.userId); - // Don't publish if we're missing an active or primary shopId if (!shopId || !primaryShopId) { return this.ready(); } - // Get active shop id's to use for filtering - const activeShopsIds = Shops.find({ - $or: [ - { "workflow.status": "active" }, - { _id: Reaction.getPrimaryShopId() } - ] - }).fetch().map((activeShop) => activeShop._id); + // Get a list of shopIds that this user has "createProduct" permissions for (owner permission is checked by default) + const userAdminShopIds = Reaction.getShopsWithRoles(["createProduct"], this.userId); const selector = filterProducts(productFilters); @@ -296,106 +286,59 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so } // We publish an admin version of this publication to admins of products who are in "Edit Mode" - // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for - if (editMode && userAdminShopIds && Array.isArray(userAdminShopIds) && userAdminShopIds.length > 0) { - selector.isVisible = { - $in: [true, false, null, undefined] + if (editMode) { + // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for + if (!Array.isArray(userAdminShopIds) || userAdminShopIds.length === 0) { + return this.ready(); + } + + delete selector.isVisible; + selector.shopId = { + $in: userAdminShopIds }; + } else { + // Get active shop IDs to use for filtering + const activeShopsIds = Shops.find({ + $or: [ + { "workflow.status": "active" }, + { _id: Reaction.getPrimaryShopId() } + ] + }, { + fields: { + _id: 1 + } + }).map((activeShop) => activeShop._id); + selector.shopId = { $in: activeShopsIds }; } - // This is where the publication begins for non-admin users - // Get _ids of top-level products + // Get the IDs of the first N (limit) top-level products that match the query const productIds = Products.find(selector, { sort, limit: productScrollLimit - }).map((product) => product._id); - - let newSelector = { ...selector }; - - // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) - if (productFilters && Object.keys(productFilters).length === 0 && productFilters.constructor === Object) { - newSelector = _.omit(selector, ["hashtags", "ancestors"]); - - if (productFilters.tags) { - // Re-configure selector to pick either Variants of one of the top-level products, - // or the top-level products in the filter - _.extend(newSelector, { - $or: [{ - ancestors: { - $in: productIds - } - }, { - $and: [{ - hashtags: { - $in: productFilters.tags - } - }, { - _id: { - $in: productIds - } - }] - }] - }); - } - // filter by query - if (productFilters.query) { - const cond = { - $regex: productFilters.query, - $options: "i" - }; - _.extend(newSelector, { - $or: [{ - title: cond - }, { - pageTitle: cond - }, { - description: cond - }, { - ancestors: { - $in: productIds - } - }, - { - _id: { - $in: productIds - } - }] - }); - } - } else { - newSelector = _.omit(selector, ["hashtags", "ancestors"]); - - _.extend(newSelector, { - $or: [{ - ancestors: { - $in: productIds - } - }, { - _id: { - $in: productIds - } - }] - }); - } - - // Adjust the selector to include only active shops - newSelector = { - ...newSelector, - shopId: { - $in: activeShopsIds + }, { + fields: { + _id: 1 } - }; + }).map((product) => product._id); - // Returning Complete product tree for top level products to avoid sold out warning. - return Products.find(newSelector, { + // Return a cursor for the matching products plus all their variants + return Products.find({ + $or: [{ + ancestors: { + $in: productIds + } + }, { + _id: { + $in: productIds + } + }] + }, { sort - // TODO: REVIEW Limiting final products publication for non-admins - // I think we shouldn't limit here, otherwise we are limited to 24 total products which - // could be far less than 24 top-level products - // limit: productScrollLimit + // We shouldn't limit here. Otherwise we are limited to 24 total products which + // could be far less than 24 top-level products. }); }); From 379256f29100aad12036b79e31c272ab723f7594 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 09:36:44 -0500 Subject: [PATCH 064/201] feat: removing lodash from dataFactory --- imports/test-utils/helpers/dataFactory.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index f6a2e160038..c61dc441ced 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -39,13 +39,13 @@ const getMockDoc = (schema, prefix, addId) => { const defField = _.get(model[key], "type.definitions[0]") || model[key]; try { - if (!_.isUndefined(model[key].mockValue)) { + if (model[key].mockValue !== undefined) { fieldValue = model[key].mockValue; - } else if (!_.isUndefined(model[key].defaultValue)) { + } else if (model[key].defaultValue !== undefined) { fieldValue = model[key].defaultValue; - } else if (!_.isUndefined(model[key].autoValue)) { + } else if (model[key].autoValue !== undefined) { fieldValue = model[key].autoValue.call({ operator: null }); - } else if (_.isArray(defField.allowedValues)) { + } else if (Array.isArray(defField.allowedValues)) { fieldValue = defField.allowedValues[0]; } else { throw new Error("Invalid"); @@ -112,7 +112,7 @@ const getMockDoc = (schema, prefix, addId) => { break; case Boolean: - fieldValue = !_.isUndefined(defField.defaultValue) ? defField.defaultValue : faker.random.boolean(); + fieldValue = defField.defaultValue !== undefined ? defField.defaultValue : faker.random.boolean(); break; case Object: { From 7d9f209bf930dfd855c8664fa9338e87768cf3bd Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 12:53:47 -0500 Subject: [PATCH 065/201] refactor: moved schema files out of lib and into the imports/collections dir, removed the meteor check and tracker from the schemas, created a new lib/comllections/schemas/index.js that imports the schemas for meteor and adds the check and tracker to the schemas --- .../collections/schemas/accounts.js | 10 ++--- .../collections/schemas/address.js | 4 +- .../collections/schemas/assets.js | 4 +- {lib => imports}/collections/schemas/cart.js | 8 ++-- .../collections/schemas/catalog.js | 0 .../collections/schemas/emails.js | 4 +- {lib => imports}/collections/schemas/event.js | 4 +- .../collections/schemas/groups.js | 4 +- .../collections/schemas/helpers.js | 0 imports/collections/schemas/index.js | 39 ++++++++++++++++ .../collections/schemas/inventory.js | 4 +- .../collections/schemas/layouts.js | 6 +-- {lib => imports}/collections/schemas/logs.js | 4 +- .../collections/schemas/metafield.js | 4 +- .../collections/schemas/notifications.js | 4 +- .../collections/schemas/orders.js | 14 +++--- .../collections/schemas/payments.js | 14 +++--- .../collections/schemas/products.js | 12 +++-- .../collections/schemas/registry.js | 8 ++-- .../collections/schemas/revisions.js | 4 +- .../collections/schemas/shipping.js | 24 +++++----- {lib => imports}/collections/schemas/shops.js | 18 ++++---- {lib => imports}/collections/schemas/sms.js | 4 +- .../collections/schemas/social.js | 4 +- {lib => imports}/collections/schemas/tags.js | 4 +- .../collections/schemas/templates.js | 6 +-- .../collections/schemas/translations.js | 4 +- .../collections/schemas/workflow.js | 4 +- lib/collections/schemas/index.js | 45 ++++--------------- 29 files changed, 112 insertions(+), 152 deletions(-) rename {lib => imports}/collections/schemas/accounts.js (95%) rename {lib => imports}/collections/schemas/address.js (96%) rename {lib => imports}/collections/schemas/assets.js (86%) rename {lib => imports}/collections/schemas/cart.js (96%) rename {lib => imports}/collections/schemas/catalog.js (100%) rename {lib => imports}/collections/schemas/emails.js (91%) rename {lib => imports}/collections/schemas/event.js (90%) rename {lib => imports}/collections/schemas/groups.js (91%) rename {lib => imports}/collections/schemas/helpers.js (100%) create mode 100644 imports/collections/schemas/index.js rename {lib => imports}/collections/schemas/inventory.js (94%) rename {lib => imports}/collections/schemas/layouts.js (95%) rename {lib => imports}/collections/schemas/logs.js (91%) rename {lib => imports}/collections/schemas/metafield.js (88%) rename {lib => imports}/collections/schemas/notifications.js (93%) rename {lib => imports}/collections/schemas/orders.js (94%) rename {lib => imports}/collections/schemas/payments.js (95%) rename {lib => imports}/collections/schemas/products.js (98%) rename {lib => imports}/collections/schemas/registry.js (98%) rename {lib => imports}/collections/schemas/revisions.js (94%) rename {lib => imports}/collections/schemas/shipping.js (96%) rename {lib => imports}/collections/schemas/shops.js (96%) rename {lib => imports}/collections/schemas/sms.js (86%) rename {lib => imports}/collections/schemas/social.js (96%) rename {lib => imports}/collections/schemas/tags.js (94%) rename {lib => imports}/collections/schemas/templates.js (95%) rename {lib => imports}/collections/schemas/translations.js (88%) rename {lib => imports}/collections/schemas/workflow.js (84%) diff --git a/lib/collections/schemas/accounts.js b/imports/collections/schemas/accounts.js similarity index 95% rename from lib/collections/schemas/accounts.js rename to imports/collections/schemas/accounts.js index e148719da02..637ec8b715a 100644 --- a/lib/collections/schemas/accounts.js +++ b/imports/collections/schemas/accounts.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, shopIdAutoValue, updatedAtAutoValue } from "./helpers"; import { Address } from "./address"; @@ -22,7 +20,7 @@ const TaxSettings = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("TaxSettings", TaxSettings); @@ -78,7 +76,7 @@ export const Profile = new SimpleSchema({ blackbox: true, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Profile", Profile); @@ -105,7 +103,7 @@ export const Email = new SimpleSchema({ defaultValue: false, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Email", Email); @@ -211,6 +209,6 @@ export const Accounts = new SimpleSchema({ autoValue: updatedAtAutoValue, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Accounts", Accounts); diff --git a/lib/collections/schemas/address.js b/imports/collections/schemas/address.js similarity index 96% rename from lib/collections/schemas/address.js rename to imports/collections/schemas/address.js index e5f34cd203c..bcd44985fc7 100644 --- a/lib/collections/schemas/address.js +++ b/imports/collections/schemas/address.js @@ -1,7 +1,5 @@ import Random from "@reactioncommerce/random"; import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { Metafield } from "./metafield"; @@ -112,6 +110,6 @@ export const Address = new SimpleSchema({ "metafields.$": { type: Metafield } -}, { check, tracker: Tracker }); +}); registerSchema("Address", Address); diff --git a/lib/collections/schemas/assets.js b/imports/collections/schemas/assets.js similarity index 86% rename from lib/collections/schemas/assets.js rename to imports/collections/schemas/assets.js index 04cd8c1518a..b4093a27bfe 100644 --- a/lib/collections/schemas/assets.js +++ b/imports/collections/schemas/assets.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -33,6 +31,6 @@ export const Assets = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Assets", Assets); diff --git a/lib/collections/schemas/cart.js b/imports/collections/schemas/cart.js similarity index 96% rename from lib/collections/schemas/cart.js rename to imports/collections/schemas/cart.js index 55f95e14ea5..56bb60e8934 100644 --- a/lib/collections/schemas/cart.js +++ b/imports/collections/schemas/cart.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, shopIdAutoValueForCart, updatedAtAutoValue } from "./helpers"; import { Payment } from "./payments"; @@ -98,7 +96,7 @@ export const CartItem = new SimpleSchema({ optional: true, blackbox: true // @todo Revert this to schema at some point } -}, { check, tracker: Tracker }); +}); registerSchema("CartItem", CartItem); @@ -117,7 +115,7 @@ export const CartItems = new SimpleSchema({ "items.$": { type: CartItem } -}, { check, tracker: Tracker }); +}); registerSchema("CartItems", CartItems); @@ -241,6 +239,6 @@ export const Cart = new SimpleSchema({ autoValue: updatedAtAutoValue, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Cart", Cart); diff --git a/lib/collections/schemas/catalog.js b/imports/collections/schemas/catalog.js similarity index 100% rename from lib/collections/schemas/catalog.js rename to imports/collections/schemas/catalog.js diff --git a/lib/collections/schemas/emails.js b/imports/collections/schemas/emails.js similarity index 91% rename from lib/collections/schemas/emails.js rename to imports/collections/schemas/emails.js index df36a249f58..f8e7da2a793 100644 --- a/lib/collections/schemas/emails.js +++ b/imports/collections/schemas/emails.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; @@ -54,6 +52,6 @@ export const Emails = new SimpleSchema({ autoValue: updatedAtAutoValue, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Emails", Emails); diff --git a/lib/collections/schemas/event.js b/imports/collections/schemas/event.js similarity index 90% rename from lib/collections/schemas/event.js rename to imports/collections/schemas/event.js index a3881e3f5df..23fbfb4f6b1 100644 --- a/lib/collections/schemas/event.js +++ b/imports/collections/schemas/event.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -42,6 +40,6 @@ export const Event = new SimpleSchema({ type: Date, label: "Created At" } -}, { check, tracker: Tracker }); +}); registerSchema("Event", Event); diff --git a/lib/collections/schemas/groups.js b/imports/collections/schemas/groups.js similarity index 91% rename from lib/collections/schemas/groups.js rename to imports/collections/schemas/groups.js index 2173c1f478a..c60d976485f 100644 --- a/lib/collections/schemas/groups.js +++ b/imports/collections/schemas/groups.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; @@ -55,6 +53,6 @@ export const Groups = new SimpleSchema({ type: Date, autoValue: updatedAtAutoValue } -}, { check, tracker: Tracker }); +}); registerSchema("Groups", Groups); diff --git a/lib/collections/schemas/helpers.js b/imports/collections/schemas/helpers.js similarity index 100% rename from lib/collections/schemas/helpers.js rename to imports/collections/schemas/helpers.js diff --git a/imports/collections/schemas/index.js b/imports/collections/schemas/index.js new file mode 100644 index 00000000000..160941ba546 --- /dev/null +++ b/imports/collections/schemas/index.js @@ -0,0 +1,39 @@ +/** + * Reaction uses {@link https://github.com/aldeed/simple-schema-js SimpleSchema} to apply basic content and structure validation to Collections. + * See {@link https://docs.reactioncommerce.com/reaction-docs/master/simple-schema full documentation}. + * @typedef {SimpleSchema} SimpleSchema + * @summary SimpleSchema for Collections + * @namespace Schemas + */ + +/** + * Reaction uses {@link https://github.com/aldeed/simple-schema-js SimpleSchema} to apply basic content and structure validation to Collections. + * See {@link https://docs.reactioncommerce.com/reaction-docs/master/simple-schema full documentation}. + * @namespace Schemas + */ + +export * from "./accounts"; +export * from "./address"; +export * from "./assets"; +export * from "./catalog"; +export * from "./cart"; +export * from "./emails"; +export * from "./inventory"; +export * from "./layouts"; +export * from "./logs"; +export * from "./metafield"; +export * from "./notifications"; +export * from "./orders"; +export * from "./payments"; +export * from "./products"; +export * from "./registry"; +export * from "./revisions"; +export * from "./shipping"; +export * from "./shops"; +export * from "./groups"; +export * from "./sms"; +export * from "./social"; +export * from "./tags"; +export * from "./templates"; +export * from "./translations"; +export * from "./workflow"; diff --git a/lib/collections/schemas/inventory.js b/imports/collections/schemas/inventory.js similarity index 94% rename from lib/collections/schemas/inventory.js rename to imports/collections/schemas/inventory.js index 800cc952b8b..5dcb1da9739 100644 --- a/lib/collections/schemas/inventory.js +++ b/imports/collections/schemas/inventory.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, shopIdAutoValue, updatedAtAutoValue } from "./helpers"; import { Document, Notes } from "./orders"; @@ -89,6 +87,6 @@ export const Inventory = new SimpleSchema({ autoValue: updatedAtAutoValue, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Inventory", Inventory); diff --git a/lib/collections/schemas/layouts.js b/imports/collections/schemas/layouts.js similarity index 95% rename from lib/collections/schemas/layouts.js rename to imports/collections/schemas/layouts.js index e0180011ae6..9747272ca7d 100644 --- a/lib/collections/schemas/layouts.js +++ b/imports/collections/schemas/layouts.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -61,7 +59,7 @@ export const LayoutStructure = new SimpleSchema({ optional: true, index: true } -}, { check, tracker: Tracker }); +}); registerSchema("LayoutStructure", LayoutStructure); @@ -144,6 +142,6 @@ export const Layout = new SimpleSchema({ optional: true, defaultValue: 1 } -}, { check, tracker: Tracker }); +}); registerSchema("Layout", Layout); diff --git a/lib/collections/schemas/logs.js b/imports/collections/schemas/logs.js similarity index 91% rename from lib/collections/schemas/logs.js rename to imports/collections/schemas/logs.js index f272a82084e..cb528d76ba8 100644 --- a/lib/collections/schemas/logs.js +++ b/imports/collections/schemas/logs.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -46,6 +44,6 @@ export const Logs = new SimpleSchema({ autoValue() { return new Date(); }, label: "Date" } -}, { check, tracker: Tracker }); +}); registerSchema("Logs", Logs); diff --git a/lib/collections/schemas/metafield.js b/imports/collections/schemas/metafield.js similarity index 88% rename from lib/collections/schemas/metafield.js rename to imports/collections/schemas/metafield.js index 3e75b296843..d2da5f62166 100644 --- a/lib/collections/schemas/metafield.js +++ b/imports/collections/schemas/metafield.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -41,6 +39,6 @@ export const Metafield = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Metafield", Metafield); diff --git a/lib/collections/schemas/notifications.js b/imports/collections/schemas/notifications.js similarity index 93% rename from lib/collections/schemas/notifications.js rename to imports/collections/schemas/notifications.js index 9b601ae1e8c..e6f6f4ec028 100644 --- a/lib/collections/schemas/notifications.js +++ b/imports/collections/schemas/notifications.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -65,6 +63,6 @@ export const Notification = new SimpleSchema({ this.unset(); } } -}, { check, tracker: Tracker }); +}); registerSchema("Notification", Notification); diff --git a/lib/collections/schemas/orders.js b/imports/collections/schemas/orders.js similarity index 94% rename from lib/collections/schemas/orders.js rename to imports/collections/schemas/orders.js index 117ac32f6ee..e6364b095d0 100644 --- a/lib/collections/schemas/orders.js +++ b/imports/collections/schemas/orders.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue } from "./helpers"; import { Cart, CartItem } from "./cart"; @@ -21,7 +19,7 @@ export const Document = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Document", Document); @@ -47,7 +45,7 @@ export const History = new SimpleSchema({ updatedAt: { type: Date } -}, { check, tracker: Tracker }); +}); registerSchema("History", History); @@ -100,7 +98,7 @@ export const Notes = new SimpleSchema({ updatedAt: { type: Date } -}, { check, tracker: Tracker }); +}); registerSchema("Notes", Notes); @@ -138,7 +136,7 @@ export const OrderItem = new SimpleSchema({ "documents.$": { type: Document } -}, { check, tracker: Tracker }); +}); registerSchema("OrderItem", OrderItem); @@ -174,7 +172,7 @@ export const OrderTransaction = new SimpleSchema({ type: Date, autoValue: createdAtAutoValue } -}, { check, tracker: Tracker }); +}); registerSchema("OrderTransaction", OrderTransaction); @@ -244,7 +242,7 @@ export const Order = new SimpleSchema({ optional: true }, "exportHistory.$": ExportHistory -}, { check, tracker: Tracker }); +}); registerSchema("Order", Order); diff --git a/lib/collections/schemas/payments.js b/imports/collections/schemas/payments.js similarity index 95% rename from lib/collections/schemas/payments.js rename to imports/collections/schemas/payments.js index 9f3ec4c76a7..034ba037a66 100644 --- a/lib/collections/schemas/payments.js +++ b/imports/collections/schemas/payments.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, schemaIdAutoValue } from "./helpers"; import { Address } from "./address"; @@ -43,7 +41,7 @@ export const PaymentItem = new SimpleSchema({ variantId: { type: String } -}, { check, tracker: Tracker }); +}); registerSchema("PaymentItem", PaymentItem); @@ -154,7 +152,7 @@ export const PaymentMethod = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("PaymentMethod", PaymentMethod); @@ -202,7 +200,7 @@ export const Invoice = new SimpleSchema({ total: { type: Number } -}, { check, tracker: Tracker }); +}); registerSchema("Invoice", Invoice); @@ -223,7 +221,7 @@ export const CurrencyExchangeRate = new SimpleSchema({ type: Number, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("CurrencyExchangeRate", CurrencyExchangeRate); @@ -266,7 +264,7 @@ export const Payment = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Payment", Payment); @@ -298,6 +296,6 @@ export const Refund = new SimpleSchema({ optional: true, blackbox: true } -}, { check, tracker: Tracker }); +}); registerSchema("Refund", Refund); diff --git a/lib/collections/schemas/products.js b/imports/collections/schemas/products.js similarity index 98% rename from lib/collections/schemas/products.js rename to imports/collections/schemas/products.js index e588ae20056..9c7b814da22 100644 --- a/lib/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -1,8 +1,6 @@ import Random from "@reactioncommerce/random"; import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; import { Meteor } from "meteor/meteor"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { ReactionProduct, getSlug } from "/lib/api"; import { createdAtAutoValue, shopIdAutoValue, shopDefaultCountry, updatedAtAutoValue } from "./helpers"; @@ -45,7 +43,7 @@ export const VariantMedia = new SimpleSchema({ type: Date, autoValue: createdAtAutoValue } -}, { check, tracker: Tracker }); +}); registerSchema("VariantMedia", VariantMedia); @@ -82,7 +80,7 @@ export const ProductPosition = new SimpleSchema({ updatedAt: { type: Date } -}, { check, tracker: Tracker }); +}); registerSchema("ProductPosition", ProductPosition); @@ -361,7 +359,7 @@ export const ProductVariant = new SimpleSchema({ optional: true, autoValue: shopDefaultCountry } -}, { check, tracker: Tracker }); +}); registerSchema("ProductVariant", ProductVariant); @@ -388,7 +386,7 @@ export const PriceRange = new SimpleSchema({ defaultValue: 0, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("PriceRange", PriceRange); @@ -615,6 +613,6 @@ export const Product = new SimpleSchema({ optional: true, defaultValue: {} } -}, { check, tracker: Tracker }); +}); registerSchema("Product", Product); diff --git a/lib/collections/schemas/registry.js b/imports/collections/schemas/registry.js similarity index 98% rename from lib/collections/schemas/registry.js rename to imports/collections/schemas/registry.js index 357247987d7..ce74db7f776 100644 --- a/lib/collections/schemas/registry.js +++ b/imports/collections/schemas/registry.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { Layout } from "./layouts"; @@ -20,7 +18,7 @@ export const Permissions = new SimpleSchema({ label: { type: String } -}, { check, tracker: Tracker }); +}); registerSchema("Permissions", Permissions); @@ -168,7 +166,7 @@ export const Registry = new SimpleSchema({ "hideForShopTypes.$": { type: String } -}, { check, tracker: Tracker }); +}); registerSchema("Registry", Registry); @@ -227,7 +225,7 @@ export const PackageConfig = new SimpleSchema({ "layout.$": { type: Layout } -}, { check, tracker: Tracker }); +}); registerSchema("PackageConfig", PackageConfig); diff --git a/lib/collections/schemas/revisions.js b/imports/collections/schemas/revisions.js similarity index 94% rename from lib/collections/schemas/revisions.js rename to imports/collections/schemas/revisions.js index db2498564fa..37a86104de5 100644 --- a/lib/collections/schemas/revisions.js +++ b/imports/collections/schemas/revisions.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Workflow } from "./workflow"; @@ -75,6 +73,6 @@ export const Revisions = new SimpleSchema({ type: Date, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Revisions", Revisions); diff --git a/lib/collections/schemas/shipping.js b/imports/collections/schemas/shipping.js similarity index 96% rename from lib/collections/schemas/shipping.js rename to imports/collections/schemas/shipping.js index c0170c681eb..7c2762c50c3 100644 --- a/lib/collections/schemas/shipping.js +++ b/imports/collections/schemas/shipping.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { shopIdAutoValue, schemaIdAutoValue } from "./helpers"; import { Address } from "./address"; @@ -27,7 +25,7 @@ export const ShippoShippingMethod = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippoShippingMethod", ShippoShippingMethod); @@ -155,7 +153,7 @@ export const ShippingMethod = new SimpleSchema({ type: ShippoShippingMethod, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippingMethod", ShippingMethod); @@ -182,7 +180,7 @@ export const ShipmentQuote = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShipmentQuote", ShipmentQuote); @@ -222,7 +220,7 @@ export const ShipmentItem = new SimpleSchema({ variantId: { type: String } -}, { check, tracker: Tracker }); +}); registerSchema("ShipmentItem", ShipmentItem); @@ -257,7 +255,7 @@ export const ShippingParcel = new SimpleSchema({ type: Number, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippingParcel", ShippingParcel); @@ -283,7 +281,7 @@ export const ShippoShipment = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippoShipment", ShippoShipment); @@ -318,7 +316,7 @@ export const ShipmentQuotesQueryStatus = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShipmentQuotesQueryStatus", ShipmentQuotesQueryStatus); @@ -425,7 +423,7 @@ export const Shipment = new SimpleSchema({ type: ShippoShipment, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Shipment", Shipment); @@ -443,7 +441,7 @@ export const ShippoShippingProvider = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippoShippingProvider", ShippoShippingProvider); @@ -499,7 +497,7 @@ export const ShippingProvider = new SimpleSchema({ type: ShippoShippingProvider, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShippingProvider", ShippingProvider); @@ -552,7 +550,7 @@ export const Shipping = new SimpleSchema({ "shipmentQuotes.$": { type: ShipmentQuote } -}, { check, tracker: Tracker }); +}); registerSchema("Shipping", Shipping); diff --git a/lib/collections/schemas/shops.js b/imports/collections/schemas/shops.js similarity index 96% rename from lib/collections/schemas/shops.js rename to imports/collections/schemas/shops.js index d21b5e6ce93..4b5d6959d47 100644 --- a/lib/collections/schemas/shops.js +++ b/imports/collections/schemas/shops.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { getSlug } from "/lib/api"; import { Email } from "./accounts"; @@ -41,7 +39,7 @@ export const CustomEmailSettings = new SimpleSchema({ type: SimpleSchema.Integer, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("CustomEmailSettings", CustomEmailSettings); @@ -84,7 +82,7 @@ export const Currency = new SimpleSchema({ type: Number, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Currency", Currency); @@ -104,7 +102,7 @@ export const Locale = new SimpleSchema({ type: Object, blackbox: true } -}, { check, tracker: Tracker }); +}); registerSchema("Locale", Locale); @@ -127,7 +125,7 @@ export const Languages = new SimpleSchema({ type: Boolean, defaultValue: true } -}, { check, tracker: Tracker }); +}); registerSchema("Languages", Languages); @@ -146,7 +144,7 @@ export const ShopTheme = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("ShopTheme", ShopTheme); @@ -166,7 +164,7 @@ export const BrandAsset = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("BrandAsset", BrandAsset); @@ -191,7 +189,7 @@ const MerchantShop = new SimpleSchema({ type: String, label: "Shop Name" } -}, { check, tracker: Tracker }); +}); registerSchema("MerchantShop", MerchantShop); @@ -484,6 +482,6 @@ export const Shop = new SimpleSchema({ optional: true, defaultValue: {} } -}, { check, tracker: Tracker }); +}); registerSchema("Shop", Shop); diff --git a/lib/collections/schemas/sms.js b/imports/collections/schemas/sms.js similarity index 86% rename from lib/collections/schemas/sms.js rename to imports/collections/schemas/sms.js index 18eb0596077..cde633fffd9 100644 --- a/lib/collections/schemas/sms.js +++ b/imports/collections/schemas/sms.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -34,6 +32,6 @@ export const Sms = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Sms", Sms); diff --git a/lib/collections/schemas/social.js b/imports/collections/schemas/social.js similarity index 96% rename from lib/collections/schemas/social.js rename to imports/collections/schemas/social.js index c7fc5e87a67..0f34895915e 100644 --- a/lib/collections/schemas/social.js +++ b/imports/collections/schemas/social.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { PackageConfig } from "./registry"; @@ -24,7 +22,7 @@ export const SocialProvider = new SimpleSchema({ defaultValue: false, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("SocialProvider", SocialProvider); diff --git a/lib/collections/schemas/tags.js b/imports/collections/schemas/tags.js similarity index 94% rename from lib/collections/schemas/tags.js rename to imports/collections/schemas/tags.js index 1ef727f7e80..7ce5731eef6 100644 --- a/lib/collections/schemas/tags.js +++ b/imports/collections/schemas/tags.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue, shopIdAutoValue } from "./helpers"; import { Metafield } from "./metafield"; @@ -84,6 +82,6 @@ export const Tag = new SimpleSchema({ return new Date(); } } -}, { check, tracker: Tracker }); +}); registerSchema("Tag", Tag); diff --git a/lib/collections/schemas/templates.js b/imports/collections/schemas/templates.js similarity index 95% rename from lib/collections/schemas/templates.js rename to imports/collections/schemas/templates.js index 95e1507c5d6..307853c81d6 100644 --- a/lib/collections/schemas/templates.js +++ b/imports/collections/schemas/templates.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { shopIdAutoValue } from "./helpers"; @@ -97,7 +95,7 @@ export const ReactLayout = new SimpleSchema({ type: Object, blackbox: true } -}, { check, tracker: Tracker }); +}); registerSchema("ReactLayout", ReactLayout); @@ -125,6 +123,6 @@ export const Template = new SimpleSchema({ type: String, optional: true } -}, { check, tracker: Tracker }); +}); registerSchema("Template", Template); diff --git a/lib/collections/schemas/translations.js b/imports/collections/schemas/translations.js similarity index 88% rename from lib/collections/schemas/translations.js rename to imports/collections/schemas/translations.js index ce697ae2d2f..081a552311c 100644 --- a/lib/collections/schemas/translations.js +++ b/imports/collections/schemas/translations.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; import { shopIdAutoValue } from "./helpers"; @@ -37,6 +35,6 @@ export const Translation = new SimpleSchema({ type: Object, blackbox: true } -}, { check, tracker: Tracker }); +}); registerSchema("Translation", Translation); diff --git a/lib/collections/schemas/workflow.js b/imports/collections/schemas/workflow.js similarity index 84% rename from lib/collections/schemas/workflow.js rename to imports/collections/schemas/workflow.js index 4efbcce3803..ffdc24389fa 100644 --- a/lib/collections/schemas/workflow.js +++ b/imports/collections/schemas/workflow.js @@ -1,6 +1,4 @@ import SimpleSchema from "simpl-schema"; -import { check } from "meteor/check"; -import { Tracker } from "meteor/tracker"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -23,6 +21,6 @@ export const Workflow = new SimpleSchema({ optional: true }, "workflow.$": String -}, { check, tracker: Tracker }); +}); registerSchema("Workflow", Workflow); diff --git a/lib/collections/schemas/index.js b/lib/collections/schemas/index.js index 160941ba546..233df9d0c98 100644 --- a/lib/collections/schemas/index.js +++ b/lib/collections/schemas/index.js @@ -1,39 +1,10 @@ -/** - * Reaction uses {@link https://github.com/aldeed/simple-schema-js SimpleSchema} to apply basic content and structure validation to Collections. - * See {@link https://docs.reactioncommerce.com/reaction-docs/master/simple-schema full documentation}. - * @typedef {SimpleSchema} SimpleSchema - * @summary SimpleSchema for Collections - * @namespace Schemas - */ +import { check } from "meteor/check"; +import { Tracker } from "meteor/tracker"; +import * as schemas from "imports/collections/schemas"; -/** - * Reaction uses {@link https://github.com/aldeed/simple-schema-js SimpleSchema} to apply basic content and structure validation to Collections. - * See {@link https://docs.reactioncommerce.com/reaction-docs/master/simple-schema full documentation}. - * @namespace Schemas - */ +Object.values(schemas).forEach((schema) => { + schema._constructorOptions.check = check; + schema._constructorOptions.tracker = Tracker; +}); -export * from "./accounts"; -export * from "./address"; -export * from "./assets"; -export * from "./catalog"; -export * from "./cart"; -export * from "./emails"; -export * from "./inventory"; -export * from "./layouts"; -export * from "./logs"; -export * from "./metafield"; -export * from "./notifications"; -export * from "./orders"; -export * from "./payments"; -export * from "./products"; -export * from "./registry"; -export * from "./revisions"; -export * from "./shipping"; -export * from "./shops"; -export * from "./groups"; -export * from "./sms"; -export * from "./social"; -export * from "./tags"; -export * from "./templates"; -export * from "./translations"; -export * from "./workflow"; +module.exports = schemas; From 5a4dab60afb7ac6bb02a58fefacf2590dcf2789f Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 13:39:32 -0500 Subject: [PATCH 066/201] refactor: explicitly set the shopId when calling insert on the Accounts collections, removed the shopIdAutoValue call from the Accounts schema --- imports/collections/schemas/accounts.js | 1 - server/startup/accounts.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/imports/collections/schemas/accounts.js b/imports/collections/schemas/accounts.js index 637ec8b715a..c9eecc1ef37 100644 --- a/imports/collections/schemas/accounts.js +++ b/imports/collections/schemas/accounts.js @@ -144,7 +144,6 @@ export const Accounts = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValue, regEx: SimpleSchema.RegEx.Id, index: 1 }, diff --git a/server/startup/accounts.js b/server/startup/accounts.js index 1cc4b2d2e4b..afc58f10a74 100644 --- a/server/startup/accounts.js +++ b/server/startup/accounts.js @@ -162,7 +162,7 @@ export default function () { } // clone before adding roles - const account = Object.assign({}, user, additionals); + const account = Object.assign({ shopId }, user, additionals); account.userId = user._id; Collections.Accounts.insert(account); Hooks.Events.run("afterAccountsInsert", account.userId, user._id); From be2c402d49ac018ed3752f3fdc834f563a0af06d Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 14:20:58 -0500 Subject: [PATCH 067/201] refactor: adding shopId on Tags.insert, removed the shopIdAutoValue from the Tag schema --- imports/collections/schemas/tags.js | 1 - server/methods/core/shop.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/collections/schemas/tags.js b/imports/collections/schemas/tags.js index 7ce5731eef6..0210f08c85b 100644 --- a/imports/collections/schemas/tags.js +++ b/imports/collections/schemas/tags.js @@ -69,7 +69,6 @@ export const Tag = new SimpleSchema({ "shopId": { type: String, index: 1, - autoValue: shopIdAutoValue, label: "Tag shopId" }, "createdAt": { diff --git a/server/methods/core/shop.js b/server/methods/core/shop.js index 6d14a4bcc26..c14e757bb7c 100644 --- a/server/methods/core/shop.js +++ b/server/methods/core/shop.js @@ -643,6 +643,7 @@ Meteor.methods({ const tag = { name: tagName, slug: Reaction.getSlug(tagName), + shopId: Reaction.getShopId(), isTopLevel, updatedAt: new Date(), createdAt: new Date() From e6af94ba20334f0eede4fcfb10c2ad1dd98061b7 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 14:56:28 -0500 Subject: [PATCH 068/201] refactor: setting shopId on insert of Shipping collections, removed shopIdAutoValue from Shipping schema --- imports/collections/schemas/shipping.js | 1 - imports/plugins/included/shipping-rates/server/methods/rates.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/collections/schemas/shipping.js b/imports/collections/schemas/shipping.js index 7c2762c50c3..d77d1b590bd 100644 --- a/imports/collections/schemas/shipping.js +++ b/imports/collections/schemas/shipping.js @@ -521,7 +521,6 @@ export const Shipping = new SimpleSchema({ "shopId": { type: String, index: 1, - autoValue: shopIdAutoValue, label: "Shipping ShopId" }, "name": { diff --git a/imports/plugins/included/shipping-rates/server/methods/rates.js b/imports/plugins/included/shipping-rates/server/methods/rates.js index 226f6bc0a0b..9079d9a65f4 100644 --- a/imports/plugins/included/shipping-rates/server/methods/rates.js +++ b/imports/plugins/included/shipping-rates/server/methods/rates.js @@ -37,6 +37,7 @@ export const methods = { } else if (!Shipping.find({}).count()) { // There is no default provider, so add it const defaultProvider = Shipping.insert({ name: "Default Shipping Provider", + shopId: Reaction.getShopId(), provider: { name: "flatRates", label: "Flat Rate" From ebfec1388f4f327db0666a499ad71b9bb7c029b0 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 15:23:07 -0500 Subject: [PATCH 069/201] refactor: setting shopId on Cart collection insert, removed shopIdAutoValue from Cart and CartItem schema --- imports/collections/schemas/cart.js | 2 -- server/methods/core/cart.js | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/imports/collections/schemas/cart.js b/imports/collections/schemas/cart.js index 56bb60e8934..44a2b48b98e 100644 --- a/imports/collections/schemas/cart.js +++ b/imports/collections/schemas/cart.js @@ -37,7 +37,6 @@ export const CartItem = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValueForCart, index: 1, label: "Cart Item shopId", optional: true @@ -146,7 +145,6 @@ export const Cart = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValueForCart, index: 1, label: "Cart ShopId" }, diff --git a/server/methods/core/cart.js b/server/methods/core/cart.js index 35f8d9e5b73..beeb81661b8 100644 --- a/server/methods/core/cart.js +++ b/server/methods/core/cart.js @@ -284,6 +284,7 @@ Meteor.methods({ // anonymous. const currentCartId = Collections.Cart.insert({ sessionId, + shopId, userId }); Logger.debug(`create cart: into new user cart. created: ${currentCartId} for user ${userId}`); From 25d2f53c010873ef8cc2cf4c778f0b5a6facce76 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 22 May 2018 15:45:43 -0500 Subject: [PATCH 070/201] refactor: adding the shopId to Product collection insert, removed the shopIdAutoValue from the Products schema --- imports/collections/schemas/products.js | 1 - imports/plugins/core/catalog/server/methods/catalog.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/collections/schemas/products.js b/imports/collections/schemas/products.js index 9c7b814da22..09d8ee49c32 100644 --- a/imports/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -442,7 +442,6 @@ export const Product = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValue, index: 1, label: "Product ShopId" }, diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 75e9e9fe9dc..d423f464e9e 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -320,6 +320,7 @@ function flushQuantity(id) { function createProduct(props = null) { const _id = Products.insert( { + shopId: Reaction.getShopId(), type: "simple", ...props }, From 88663cc294f13291907b0aaa772ed03cd7b5b343 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 23 May 2018 10:35:18 -0500 Subject: [PATCH 071/201] feat: update to Meteor 1.7 (not working yet) --- .meteor/.finished-upgraders | 1 + .meteor/packages | 24 +- .meteor/release | 2 +- .meteor/versions | 69 +- docker-compose.yml | 4 +- package-lock.json | 1776 ++++++++++++++++++++--------------- package.json | 51 +- 7 files changed, 1081 insertions(+), 846 deletions(-) diff --git a/.meteor/.finished-upgraders b/.meteor/.finished-upgraders index 2a56593d3f8..8f397c7dad0 100644 --- a/.meteor/.finished-upgraders +++ b/.meteor/.finished-upgraders @@ -16,3 +16,4 @@ notices-for-facebook-graph-api-2 1.4.1-add-shell-server-package 1.4.3-split-account-service-packages 1.5-add-dynamic-import-package +1.7-split-underscore-from-meteor-base diff --git a/.meteor/packages b/.meteor/packages index 9cf7356e7b7..df5dd110580 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -7,36 +7,36 @@ # Core Meteor Packages ### -meteor-base@1.3.0 # Packages every Meteor app needs to have +meteor-base@1.4.0-rc17.11 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views -es5-shim@4.7.0 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.10.0 # Enable ECMAScript2015+ syntax in app code +es5-shim@4.8.0-rc17.11 # ECMAScript 5 compatibility for older browsers. +ecmascript@0.11.0-rc17.11 # Enable ECMAScript2015+ syntax in app code audit-argument-checks@1.0.7 # ensure meteor method argument validation browser-policy@1.1.0 # security-related policies enforced by newer browsers juliancwirko:postcss@1.3.0 # CSS post-processing plugin (replaces standard-minifier-css) session@1.1.7 # ReactiveDict whose contents are preserved across Hot Code Push -tracker@1.1.3 # Meteor transparent reactive programming library -mongo@1.4.2 +tracker@1.2.0-rc17.11 # Meteor transparent reactive programming library +mongo@1.5.0-rc17.11 reactive-var@1.0.11 reactive-dict@1.2.0 -check@1.3.0 -http@1.4.0 +check@1.3.1 +http@1.4.1 ddp-rate-limiter@1.0.7 underscore@1.0.10 -logging@1.1.19 +logging@1.1.20 reload@1.2.0 ejson@1.1.0 -less@2.7.11 +less@2.7.12 service-configuration@1.0.11 mdg:validated-method shell-server@0.3.1 -dynamic-import@0.3.0 -standard-minifier-js@2.3.1 +dynamic-import@0.4.0-rc17.11 +standard-minifier-js@2.3.4 # Meteor Auth Packages accounts-base@1.4.2 -accounts-password@1.5.0 +accounts-password@1.5.1 accounts-facebook@1.3.1 accounts-google@1.3.1 accounts-twitter@1.4.1 diff --git a/.meteor/release b/.meteor/release index d502dc0d921..654520d859f 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@1.6.1 +METEOR@1.7-rc.11 diff --git a/.meteor/versions b/.meteor/versions index 289c8bcb0d2..9f445f6797f 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -2,7 +2,7 @@ accounts-base@1.4.2 accounts-facebook@1.3.1 accounts-google@1.3.1 accounts-oauth@1.1.15 -accounts-password@1.5.0 +accounts-password@1.5.1 accounts-twitter@1.4.1 alanning:roles@1.2.16 aldeed:autoform@6.2.0 @@ -12,43 +12,43 @@ aldeed:template-extension@4.1.0 allow-deny@1.1.0 audit-argument-checks@1.0.7 autoupdate@1.4.0 -babel-compiler@7.0.4 -babel-runtime@1.2.2 +babel-compiler@7.1.0-rc17.11 +babel-runtime@1.3.0-rc17.11 base64@1.0.11 binary-heap@1.0.10 blaze@2.3.2 blaze-html-templates@1.1.2 blaze-tools@1.0.10 -boilerplate-generator@1.4.0 +boilerplate-generator@1.5.0-rc17.11 bozhao:accounts-instagram@0.2.2 browser-policy@1.1.0 browser-policy-common@1.0.11 browser-policy-content@1.1.0 browser-policy-framing@1.1.0 -caching-compiler@1.1.11 +caching-compiler@1.1.12 caching-html-compiler@1.1.2 callback-hook@1.1.0 -check@1.3.0 +check@1.3.1 coffeescript@1.0.17 dburles:factory@1.1.0 ddp@1.4.0 -ddp-client@2.3.1 +ddp-client@2.3.2 ddp-common@1.4.0 ddp-rate-limiter@1.0.7 -ddp-server@2.1.2 +ddp-server@2.2.0-rc17.11 deps@1.0.12 diff-sequence@1.1.0 dispatch:run-as-user@1.1.1 -dynamic-import@0.3.0 -ecmascript@0.10.4 -ecmascript-runtime@0.5.0 -ecmascript-runtime-client@0.6.2 -ecmascript-runtime-server@0.5.0 +dynamic-import@0.4.0-rc17.11 +ecmascript@0.11.0-rc17.11 +ecmascript-runtime@0.7.0-rc17.11 +ecmascript-runtime-client@0.7.0-rc17.11 +ecmascript-runtime-server@0.7.0-rc17.11 ejson@1.1.0 email@1.2.3 -es5-shim@4.7.3 +es5-shim@4.8.0-rc17.11 facebook-config-ui@1.0.1 -facebook-oauth@1.4.0 +facebook-oauth@1.5.0-rc17.11 gadicc:blaze-react-component@1.4.0 geojson-utils@1.0.10 google-config-ui@1.0.0 @@ -56,7 +56,7 @@ google-oauth@1.2.5 hot-code-push@1.0.4 html-tools@1.0.11 htmljs@1.0.11 -http@1.4.0 +http@1.4.1 id-map@1.1.0 johanbrook:publication-collector@1.1.0 jquery@1.11.11 @@ -65,28 +65,29 @@ launch-screen@1.1.1 less@2.7.12 livedata@1.0.18 localstorage@1.2.0 -logging@1.1.19 +logging@1.1.20 mdg:validated-method@1.1.0 -meteor@1.8.2 -meteor-base@1.3.0 +meteor@1.9.0-rc17.11 +meteor-base@1.4.0-rc17.11 meteorhacks:ssr@2.2.0 meteorhacks:subs-manager@1.6.4 meteortesting:browser-tests@0.1.2 meteortesting:mocha@0.5.0 minifier-css@1.3.1 -minifier-js@2.3.2 -minimongo@1.4.3 +minifier-js@2.3.5 +minimongo@1.4.4 mobile-experience@1.0.5 mobile-status-bar@1.0.14 -modules@0.11.4 -modules-runtime@0.9.2 +modern-browsers@0.1.0-rc17.11 +modules@0.11.7 +modules-runtime@0.10.0-rc17.11 momentjs:moment@2.19.4 -mongo@1.4.3 +mongo@1.5.0-rc17.11 mongo-dev-server@1.1.0 -mongo-id@1.0.6 +mongo-id@1.0.7 npm-bcrypt@0.9.3 -npm-mongo@2.2.34 -oauth@1.2.1 +npm-mongo@3.0.7-rc17.11 +oauth@1.2.3 oauth-encryption@1.3.0 oauth1@1.2.0 oauth2@1.2.0 @@ -97,7 +98,7 @@ percolate:migrations@0.9.8 practicalmeteor:chai@2.1.0_1 practicalmeteor:mocha-core@1.0.1 practicalmeteor:sinon@1.14.1_2 -promise@0.10.2 +promise@0.11.0-rc17.11 raix:eventemitter@0.1.3 random@1.1.0 rate-limit@1.0.9 @@ -105,29 +106,27 @@ reactive-dict@1.2.0 reactive-var@1.0.11 reload@1.2.0 retry@1.1.0 -routepolicy@1.0.12 -server-render@0.3.0 +routepolicy@1.0.13 service-configuration@1.0.11 session@1.1.7 sha@1.0.9 shell-server@0.3.1 -shim-common@0.1.0 -socket-stream-client@0.1.0 +socket-stream-client@0.2.0-rc17.11 spacebars@1.0.15 spacebars-compiler@1.1.3 srp@1.0.10 -standard-minifier-js@2.3.2 +standard-minifier-js@2.3.4 templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 templating-tools@1.1.2 tmeasday:check-npm-versions@0.3.2 tmeasday:publish-counts@0.8.0 -tracker@1.1.3 +tracker@1.2.0-rc17.11 twitter-config-ui@1.0.0 twitter-oauth@1.2.0 ui@1.0.13 underscore@1.0.10 url@1.2.0 -webapp@1.5.0 +webapp@1.6.0-rc17.11 webapp-hashing@1.0.9 diff --git a/docker-compose.yml b/docker-compose.yml index a0c18ed308c..72ebb680c05 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ # The local files are mounted into the created container. # Usage: docker-compose up [-d] -version: '3.4' +version: '3.6.3' networks: reaction-api: @@ -53,7 +53,7 @@ services: - reaction_node_modules:/opt/reaction/src/node_modules # do not link node_modules in, and persist it between dc up runs mongo: - image: mongo:3.4 + image: mongo:3.6.3 command: mongod --storageEngine=wiredTiger ports: - "27017:27017" diff --git a/package-lock.json b/package-lock.json index 7f78a995f0b..d74b816cc5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,20 +26,20 @@ "integrity": "sha1-dytxZQwGp3kxhA6AiAy4l4U3jug=" }, "@babel/cli": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0-beta.38.tgz", - "integrity": "sha512-RF2RQh9gvxeXtwrFzgf4PKCsmCPsa/tHaL0TQ3eWRoyno91GsoYnAhh/SnvPrlvXV+9Uosw+zwOgwnVyRvPDYQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0-beta.46.tgz", + "integrity": "sha512-PkVdudEy12eyzAhAGJ4hFnkR25H5/4aGIVT06RTfCNSVHkU1Nf9BF7bpyRwlj36e7CFrtQqV3gi5LUACUjyMDw==", "dev": true, "requires": { - "chokidar": "1.7.0", - "commander": "2.14.1", - "convert-source-map": "1.5.1", - "fs-readdir-recursive": "1.1.0", - "glob": "7.1.2", - "lodash": "4.17.5", - "output-file-sync": "2.0.1", - "slash": "1.0.0", - "source-map": "0.5.7" + "chokidar": "^1.6.1", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.0.0", + "lodash": "^4.2.0", + "output-file-sync": "^2.0.0", + "slash": "^1.0.0", + "source-map": "^0.5.0" }, "dependencies": { "source-map": { @@ -62,27 +62,37 @@ } }, "@babel/core": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.38.tgz", - "integrity": "sha512-xIDdSeSElby0p6QMowawWrU9VulpMk1yq6RaKYjaZBRT7s40kztTsDw8+VUVuQmdRbqLh8DpLWs15oaUWphsPg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.38", - "@babel/generator": "7.0.0-beta.38", - "@babel/helpers": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "babylon": "7.0.0-beta.38", - "convert-source-map": "1.5.1", - "debug": "3.1.0", - "json5": "0.5.1", - "lodash": "4.17.5", - "micromatch": "2.3.11", - "resolve": "1.5.0", - "source-map": "0.5.7" + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.46.tgz", + "integrity": "sha512-lCDbBSAhNAt+nL98xbgWmuhgrIxKvbvFHf73zlNCuXCHJkdlo7qzTofYK0ZWb+OVce8fQ17fC7DwTIhAwowzMw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.46", + "@babel/generator": "7.0.0-beta.46", + "@babel/helpers": "7.0.0-beta.46", + "@babel/template": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "babylon": "7.0.0-beta.46", + "convert-source-map": "^1.1.0", + "debug": "^3.1.0", + "json5": "^0.5.0", + "lodash": "^4.2.0", + "micromatch": "^2.3.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", + "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.46" + } + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -101,16 +111,16 @@ } }, "@babel/generator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.38.tgz", - "integrity": "sha512-aOHQPhsEyaB6p2n+AK981+onHoc+Ork9rcAQVSUJR33wUkGiWRpu6/C685knRyIZVsKeSdG5Q4xMiYeFUhuLzA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.46.tgz", + "integrity": "sha512-5VfaEVkPG0gpNSTcf70jvV+MjbMoNn4g2iluwM7MhciedkolEtmG7PcdoUj5W1EmMfngz5cF65V7UMZXJO6y8Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38", - "jsesc": "2.5.1", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "@babel/types": "7.0.0-beta.46", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" }, "dependencies": { "source-map": { @@ -122,798 +132,1001 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.38.tgz", - "integrity": "sha512-7k67bppxvfSS+hu2yiDeuVTf8GHOlz8haHwRJZDXiXwjm2IBqEYYA6Dvi+xNMHy05pZVBy012qpS7BpguXoW4A==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.46.tgz", + "integrity": "sha512-ej5W347ghJF1p2TM3VcEyds1+o1uy1apaQcHrYFJPus2xCgn5KkHPkBGf+6euLfFaQDtB+eWPVKjiZx/hpYXvA==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38" + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.38.tgz", - "integrity": "sha512-CgTc4zaS4dLCKIMzCP9Q4Uhy9upBCFcA3NY7ZNwF+6S8BRCcNwoyTh2eHGt5ct1tM+Vd3VI6iIORIhqYzjHuXA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.46.tgz", + "integrity": "sha512-ZCQ62KqFC5R3NPe5ug9pVqIHYJNup8UdEbE4IXw+s7zr4D/7AsKSt3pXA+FbML5AnQXeCSOuUWioggGmKuDV5g==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-explode-assignable-expression": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-builder-react-jsx": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.38.tgz", - "integrity": "sha512-hgh8rHI9hadMpDJAOzBXrzfo6zL/abdxAiMGn3loemXP1HUypb79v+HQ25G+rRB0Mi1Z3VDU3266N+8YQ+aNoQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.46.tgz", + "integrity": "sha512-4xakEEfimusXNgpSY6rP7robwRcnv1E8OxjkYSfsZCYsomFwN7RXU5S29vGWzxE37Yua4yTFqBwId9lwF84Hzw==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38", - "esutils": "2.0.2" + "@babel/types": "7.0.0-beta.46", + "esutils": "^2.0.0" } }, "@babel/helper-call-delegate": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.38.tgz", - "integrity": "sha512-73K4lywDxQTHlBEcF7YJBvBMpIxd0CTvmWjJ2pVqnkMGPmLTzWLNsrDEoJdv5ri9RXT0YJIoMPlqPBsM4FBIow==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.46.tgz", + "integrity": "sha512-7nhBu/MBlpvZLQsmw/C7VxN14wph+yp+1yxzPEd2oTsHg3oA73tHyguQ6wbtkw+9f1AZtP7ZJCLQ+nGLprF4Fw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-hoist-variables": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-define-map": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.38.tgz", - "integrity": "sha512-SLy0ZNnApMsZIY/F1nW2/mXHpFaYvga6aQABkwi4IACZvC17mPhh/ilJBll4lUqdXikxRwrGsZQQfJNOEhbPsA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.46.tgz", + "integrity": "sha512-rhi59ZVj+bhrgxqLi9VQmQOadcK9rLCArY8zqyjPNjDIsCurCwtQztRWhlz6CwBEhE9FO/KbSa9OFQm7Kobk+w==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "lodash": "^4.2.0" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.38.tgz", - "integrity": "sha512-bSaaJpH0Yt5iKlZ9KJkrZTIkyLcrRW14z9Pt5Jh+DDXzW+3/F0wfHzoPn5qlnad70LeW5OHO8J8PriRKSqLTkg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.46.tgz", + "integrity": "sha512-SW1OUmx2fC2SqL7+vF1N72FITbPuEWGdr/Gm7I3Vqs8p8T1dfGwB9YFsD+tTpfagKXVMiCCuQ06+G0FB8uxg6Q==", "dev": true, "requires": { - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.38.tgz", - "integrity": "sha512-vLOtqh2PMbvOXL/+DlwH6A2/y+81l518Z0x7232T4E8HiMBQbkv3rNg4GmjJ5M6GcZzj7UKTBrVt8AXcH4OTdA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.46.tgz", + "integrity": "sha512-zm4Kc5XB2njGs8PkmjV1zE/g1hBuphbh+VcDyFLaQsxkxSFSUtCbKwFL8AQpL/qPIcGbvX1MBt50a/3ZZH2CQA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-get-function-arity": "7.0.0-beta.46", + "@babel/template": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.38.tgz", - "integrity": "sha512-ty3muWaxHPcvdwihBWqGBD+s+hjt4Tua3In43eA4BvLMKWtTYsJBGdLoWQUY4TXhVgDe7wPzqxIv2AUbnIh/vQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.46.tgz", + "integrity": "sha512-dPrTb7QHVx44xJLjUl3LGAc13iS7hdXdO0fiOxdRN1suIS91yGGgeuwiQBlrw5SxbFchYtwenhlKbqHdVfGyVA==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38" + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.38.tgz", - "integrity": "sha512-bn4shp3AGjRDmCsq4lKxTjOWSak+3wNGaDjc9ePmk0fMfua1HcDpxQ7d84lweq6tvHMOgXK8dhu/zj36r8SNvQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.46.tgz", + "integrity": "sha512-9xDHLfaVA445mcHU2OEPwEddiyS0Zxao2WObFR2L/SK5MNOPj2VqVCvivYrO2OpzhnLLCTbOfXRmrwrc9WYN6Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.46" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.46.tgz", + "integrity": "sha512-Xb5iVUHXY8yz4pgGBvtuS1kxZH1oUYcxTcbIW8NFRvgpeH3Zcv4me02bbixsk7nhn8ttE79Lr1g4vrem4k5Z3Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38" + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-module-imports": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.38.tgz", - "integrity": "sha512-A/KUU0SC25pgI7k0K4habJqOYu9sp0UsMz3lRl26cIWhaLb5e9QRfCn1nmPnkBgCjc6IZl7pOxu4511Qfo/YxQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.46.tgz", + "integrity": "sha512-xjgpwrqHiKCZgAcqsNIpZ9kOCC5Ty/VYN1H07v21HbAf/dl0/HeUA0taz3EFv6/7lRgS3qThawTSG0POJQX9vQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "@babel/types": "7.0.0-beta.46", + "lodash": "^4.2.0" } }, "@babel/helper-module-transforms": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.38.tgz", - "integrity": "sha512-MnluW457L9EAykzbGYTx9mF1SUXO0Brh1UrNSSGu/C+VjMXf4EmQ9RCWOaGT3WCxLVp063xS8ejkdjGwAJqIDw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.46.tgz", + "integrity": "sha512-IckoWSub3PHNvkWcUEWfKBe8pFUdMhsZMFDcaovcLb+gfxL/zZhQYwedKKKwbzVGIk9k44yjeMQ/OJd4yt4FGQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.38", - "@babel/helper-simple-access": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "@babel/helper-module-imports": "7.0.0-beta.46", + "@babel/helper-simple-access": "7.0.0-beta.46", + "@babel/helper-split-export-declaration": "7.0.0-beta.46", + "@babel/template": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "lodash": "^4.2.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.38.tgz", - "integrity": "sha512-BK5wW2bh2TEFhYkXdmB4TIF75dx3OlBZSVVMbzeA9zW/lJrvnQS2a+vm8xmZI6B4aQ5myuAuwzM37Ai29EKhnw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.46.tgz", + "integrity": "sha512-PVd7/PGxi82pEKyuDcEpMmlenMLhJCII3lIK4MhXGWrT/6cNMpY6ob5rWOarpXgZjy+JNI5uLPOce28bqq0Wtw==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.38" + "@babel/types": "7.0.0-beta.46" } }, + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.46.tgz", + "integrity": "sha512-eRTFH+/1rqDfzx+Z//CYk4TNwhfPQpM/TCs4CmHu2DwCPrqFnKUZLI1KgStfLf//c8FdOqx/U9EPec7s8CbUIA==", + "dev": true + }, "@babel/helper-regex": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.38.tgz", - "integrity": "sha512-ovwkKMmLkZspr7ge5y8w7JQoO1MXPXcp8UaLxcmP5Akw0uAmISvd4vGFy4tpwtnsgPU1N7J5NyomTdMPqn78Aw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.46.tgz", + "integrity": "sha512-sPDHBt8Y4i6y9rwtxWMvcprlVHAZOOQK5xpS2Nw2q9QEDHRHwVbEpE6EejoUStSclnfJpPK/7ijFgypwc6rXlA==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.2.0" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.38.tgz", - "integrity": "sha512-7V2WVMz5KRLxE33p1lb4SduDxoLF8TQ4rTGi9rzpEuly8KnlLkZR0ts62hnqZYVyBB3Gq1nfOgLG56AvflBgOg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.46.tgz", + "integrity": "sha512-YrqQ98z8AMZx8f2PGJ4YV1MkXtj+qbwbFV7MOLTiavGSFY7UrN4uQfhKEJ/4GUf4QZdTr5NEmRt0AJrWno8y8w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.38", - "@babel/helper-wrap-function": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-annotate-as-pure": "7.0.0-beta.46", + "@babel/helper-wrap-function": "7.0.0-beta.46", + "@babel/template": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-replace-supers": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.38.tgz", - "integrity": "sha512-0DcCEsI03e2lkF/teZaTDHOIkYq7ATwXmGc51LYQkzgRbmEtwk5e0GxxD+IQPy1ZW4GATsIJ0i1yt4cPaSFbpA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.46.tgz", + "integrity": "sha512-FSpK3QKzb58oMEccanHzg1djsYHhGARl08i8BQGBoOyHS6Df+4/8bsQiTnc59Dz5sJoZdb67nKKFjgMsMYi6Kg==", "dev": true, "requires": { - "@babel/helper-optimise-call-expression": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-member-expression-to-functions": "7.0.0-beta.46", + "@babel/helper-optimise-call-expression": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-simple-access": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.38.tgz", - "integrity": "sha512-Az+xsA1KgBrnpTjpqaNoL84a2g3gZCluf45MFijTuImZtoqg3TbObOdwOnbBy/qyNYRBCJ2Qexf7hNRb2xhLaQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.46.tgz", + "integrity": "sha512-1OEjV/Qnl4u8Dg+jQIYf1TgnfdrYIrdrF7yZwp9mSgsVX2PCyLe7JNTqZ/5v/5RzlF6S+GTe9agkj+EFFTcZUw==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "lodash": "4.17.5" + "@babel/template": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "lodash": "^4.2.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.46.tgz", + "integrity": "sha512-UT7acgV7wsnBPwnqslqcnUFvsPBP4TtVaYM82xPGA7+evAa8q8HXOmFk08qsMK/pX/yy4+51gJJwyw2zofnacA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.46" } }, "@babel/helper-wrap-function": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.38.tgz", - "integrity": "sha512-JQY2Hc/NCuVukBavW2mA7GqWZlpScXpurmviG+hKAvxpci5ZdsmocgwOAKWpO+u18OyI0PrZ5lUTGnjlaq0j9A==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.46.tgz", + "integrity": "sha512-W87M4bP6veTKK66OjzV/rU47tjsWmKj9J0J5BDmxq5BIJB1M13ouQ2FAURa4jGHwjPFWN3D5njBrsrifSOHzbQ==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.38", - "@babel/template": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/template": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, "@babel/helpers": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.38.tgz", - "integrity": "sha512-DNdEZABrx2oNSpqijJHjxR/V36hMIQgFkdgv/iQsJ7xhXhObIrH1FMXsd3jbnlgblTc/7/hYed6wNKYxxXX0eQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.46.tgz", + "integrity": "sha512-mbpH9pM3pJzo/tBr75U+zva3pqpyivogt1aofgEoD7bWFAYSuqOudRuz+m4XP6VPxxLoxcA4SFPGkuLRt9+7nQ==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38" + "@babel/template": "7.0.0-beta.46", + "@babel/traverse": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46" } }, - "@babel/node": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.0.0-beta.38.tgz", - "integrity": "sha512-JtbqWAUbHCDssbIa/TxfQjXxmHn+EP6c8PaodDq+foLUTXjhWQjq/vGZaMxVQQLH+SfjJdm2ahu5SiL6NthRIg==", + "@babel/highlight": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.46.tgz", + "integrity": "sha512-r4snW6Q8ICL3Y8hGzYJRvyG/+sc+kvkewXNedG9tQjoHmUFMwMSv/o45GWQUQswevGnWghiGkpRPivFfOuMsOA==", "dev": true, "requires": { - "@babel/polyfill": "7.0.0-beta.38", - "@babel/register": "7.0.0-beta.38", - "commander": "2.14.1", - "fs-readdir-recursive": "1.1.0", - "lodash": "4.17.5", - "output-file-sync": "2.0.1", - "v8flags": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, - "@babel/plugin-check-constants": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-check-constants/-/plugin-check-constants-7.0.0-beta.38.tgz", - "integrity": "sha512-MjdGn/2sMLu0fnNFbkILut0OsegzRTeCOJ/uGHH88TwTXPzxONx2cTVJ36i3cTQXHMiIOUT3hX6HqzWM99Q6vA==", - "dev": true + "@babel/node": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.0.0-beta.46.tgz", + "integrity": "sha512-4WQ5r490HyIybmhbNNJ1+qHVMxJ+tysKyIRfHb8b4Gxyhr1+FUZTlMjv4WSKPGWwhULStXiicLweLD/Ls4SQCg==", + "dev": true, + "requires": { + "@babel/polyfill": "7.0.0-beta.46", + "@babel/register": "7.0.0-beta.46", + "commander": "^2.8.1", + "fs-readdir-recursive": "^1.0.0", + "lodash": "^4.2.0", + "output-file-sync": "^2.0.0", + "v8flags": "^3.0.0" + } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.38.tgz", - "integrity": "sha512-ATy8xhmvnoZnB8Ycl0LwPVg1djx/7grNEdshLNmREFWvI/xyEwe8euw+H5Cwtd6E8AOPEPI2IVmMKPyWeaVeVg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.46.tgz", + "integrity": "sha512-htHMsLBYkM89CplqHTbbemVvzTXXyXkpihetJZUTPpSayfxEd6oIH5uSM91efcf5Rog+1SC0Oq32q9yF/4W3ig==", "dev": true, "requires": { - "@babel/helper-remap-async-to-generator": "7.0.0-beta.38", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.46", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.46" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.38.tgz", - "integrity": "sha512-h286XHfkTja//3PDc8YR8ODRXP31JkEhm+j3AKgRUwKtZ1pBs7mXMdgOyX5SSEywDv7nr9IvYbapYiU3vOZv6A==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.46.tgz", + "integrity": "sha512-kWp3bKibdSeSEvEQWcEcs345KPQYT39uM2edFS78NH3Gu6O9mBcnXh5E2BJ1sbE+jJ6jYPOZz4BK/LR7BiF0jA==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.38", - "@babel/plugin-syntax-class-properties": "7.0.0-beta.38" + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-replace-supers": "7.0.0-beta.46", + "@babel/plugin-syntax-class-properties": "7.0.0-beta.46" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.46.tgz", + "integrity": "sha512-2z+ayU1saRWfvHGE9uU+275EGSDQlGf37U2Vs2F9BjN0eUC+JAC96ncq2FuwLLRR8d6rfckzBJNqDNuW8Azaeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-decorators": "7.0.0-beta.46" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.38.tgz", - "integrity": "sha512-wqw4hGMnhNTVCvcXHtBQbsOAA52SSvgu2SgSxgyDsRp+LM+zwrMTwvRI1aZmlZUApGaEgQBtXlJWJFdirX9nEA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.46.tgz", + "integrity": "sha512-9B7d8NfGZ3F1aKQgINmpc1SAphVgGvKEyw1ppetMpThT6EFWAdW6p1/K6QT7kI+hOo6iKUmUo8sOwD30nWVr9w==", "dev": true, "requires": { - "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.46" } }, "@babel/plugin-proposal-function-sent": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.38.tgz", - "integrity": "sha512-GAIDJorQ09jt/BO0X8tx6rOr0CKPaVIZ1cewQ46S2PgJxLqSaL6n2ZTG/bRgGURu3BMUJQKA16c0XnkJA3qJxw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.46.tgz", + "integrity": "sha512-mRkAbYO+uW70bXstzChyf3Tj+39CO4X/+FoPVG7Tb2CmvX5/m4+WPi/5DhW27Gc4zGk6hd90bV6n485JwQYsRw==", "dev": true, "requires": { - "@babel/helper-wrap-function": "7.0.0-beta.38", - "@babel/plugin-syntax-function-sent": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-wrap-function": "7.0.0-beta.46", + "@babel/plugin-syntax-function-sent": "7.0.0-beta.46" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.38.tgz", - "integrity": "sha512-qSV1gZnjcw0is5nkDS5zTt3KFXJ6ZZhk8heFiW0ZljvWUomY2nihNYUjJmhjI7u8xRdZCkcDSmFZ/WhNGP9hyA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.46.tgz", + "integrity": "sha512-GlT+pFmvWeyiVc05anxwPtewl7P7eBK7x6z9HEBVyzD/vPtsHexN1qwwZmwHBiTkS/1/QXCFr5aPyCgcyUzn9Q==", "dev": true, "requires": { - "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.46" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.38.tgz", - "integrity": "sha512-hmlKGy0xyWSzfkrFee3oVDjtI1BTLiq9uaLSZHJ1q7XxyXHDrwizIJupSKuDnaIcNhNDioW26Strn9lDbo5pJQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz", + "integrity": "sha512-viGuWOgFT/Tbnn3sYi3g9iJcC3ql7bSjxDs+d+GFgyf3eV2qNIKO/6I+PJAD35fGqDGGBrQhlA6HvW0FzQVtoA==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.38.tgz", - "integrity": "sha512-KNJb34D11ZDeOSTGI1vmIK2yRfmam4NxKrbwBPPO6yBrcSEKwR/9/kg/oa7PETLPnZcfENXu8gShD8NdaVLtrw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.46.tgz", + "integrity": "sha512-ZorB1i84PiVCFmrxglRaDDepmIknWgt8k5jA+IHmPd0/8UN5iMz2RLdIgIhyl92091DgsNxnVI50KLvGNK3++Q==", "dev": true, "requires": { - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.46" } }, "@babel/plugin-proposal-throw-expressions": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.38.tgz", - "integrity": "sha512-yG1TaIuSWi1kGQEfluTOtlZl/OVUIJEQ0tDBaHrYbBaOoXzNe7+Fz5UzqmAuqlRJUEirPrgGLwR6Adcyw8WufA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.46.tgz", + "integrity": "sha512-l+YsUx/q/Cigmpy78KD7hLdymt0/jDtHpES2tDX0Af7wMq4Gdi6Ar59Hou/QyP1iG4vV4LvzNa5ieOKTQwm/7w==", "dev": true, "requires": { - "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.46" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.38.tgz", - "integrity": "sha512-6fkV/IjSly+4ALL2q7LKFqAhr/1KPmLoXf5Nk61RpyS/3+EARkJ8hsXgYtrfDDXY4SyoA10zVhhNnSnlU+LSVw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.46.tgz", + "integrity": "sha512-H1F53Sc7mvVxAGzs1nH7IVs4Gh6tYx9azyaMzv92RUvLYQsRm6pKaX1dQtOHJMLMgY61i65y29fQ40mvwIhfFA==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-regex": "7.0.0-beta.46", + "regexpu-core": "^4.1.3" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.38.tgz", - "integrity": "sha512-YboIs/srf1yKLRvZ6JoaGjpkcW3UYsPKhkPt3hWO54OVouS34A5dwK8wO3wGhvKgUvq2GV+tU4eRNkgEcx7aLA==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.46.tgz", + "integrity": "sha512-igLQzZYcSrY/W3eACq6Nrf9u9mfw7m5G6+JeTZlyI7w0z+upGvWvrpTaAP1Gni6MckQkx5q+pspgpV+/5ioPXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-class-properties": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.38.tgz", - "integrity": "sha512-hxA1M1CryWjbtnMWIpsOe4agySBW7K00H33cWDYPg4w4fCk824P+E/TXyh6ptGnYuGtfboge4DXS5NlF/NWTpw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.46.tgz", + "integrity": "sha512-NwtgTQ+I8B2eo5h1mZF64nloLaGQuPM4M/c/swvyvqHoWLissHhm94rOE2Ghte8WMgQ/Nw3bqJd59kpbckqmdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.46.tgz", + "integrity": "sha512-yfgDxx6Vlm/gVGqHtW/rAL5gl8DuNtUqGYAdPaHl5B4GwmqhR/TNmL0mGuovky8Pruh5qTWLxK/NeCzs+p7LpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.38.tgz", - "integrity": "sha512-P4jmUCkIPPJ2B2DEzePJql0m94kqrkhLYTUs5q29br3jK8SMnzR7mOla8sE+98+oEXi7X39Ksquv2gA18v971A==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.46.tgz", + "integrity": "sha512-D4ek6tZa80NgaTSprPOVxj8vxjChh6UCWgCT/ZvCwAa6CBe3iqUCuOwZQLjU41aDdeuR7C02wxl3rcb25wCRLA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-export-namespace-from": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.38.tgz", - "integrity": "sha512-3otfix3iqW5dejuyGOU656mEx7gxfUc40HD25h1TO4gmgcgcjJM5PSGnrNP+p0/Fl1LKM6GseLes2kHTCN3acw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.46.tgz", + "integrity": "sha512-g2opDn12R9HhFHq/S6J8qixDNb29WNXNC+kj6Gpk4n3ZX1OCk7qBiyiFplnHUvrPrRA18IcKyPoC2SirLs15vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-flow": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-beta.38.tgz", - "integrity": "sha512-fSI2zdhuR8JEksS6llnjU11j8zSiQ+K7OEk2ppbipYOgNYx9Zzj5WUsE9WB6NtbyjxCm5aRkRte7UOEikjZcbQ==", - "dev": true + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-beta.47.tgz", + "integrity": "sha512-+3ZLKNV8tSDnTWL4QRNx5uZB/hUzY71WcgCwoXWy+8ma7EjZ3e3vbR69VR8dJwG1DqGsug6ZzM+afR0G4gKgPA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.47" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", + "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "dev": true + } + } }, "@babel/plugin-syntax-function-sent": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.38.tgz", - "integrity": "sha512-2R4IUXLC72fwdvDCpUvNSvNaiRyqWaNGnSJr/vlxjvRYbwGA4ywRAc/bngQENzqBbvo+lnLJiQK22x4eeZkbtg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.46.tgz", + "integrity": "sha512-8XBmvwHwskrIslqqbuwlqcMxWjZlW4E643nM7V5YLECB9EB6ouaifQPK7mUg0R08YzeQpHj+wtR1bwtt845LEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-import-meta": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.38.tgz", - "integrity": "sha512-F1PAWpIy9Pa0ieIlX+qZYJRUMGcVNO3fVLWM4EihDMspiztQ+30ToaAWp9yXpbx0l5x6JTIcYaLiie9Nk1VrlQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.46.tgz", + "integrity": "sha512-/vOa4lDBN8CpJr9MwdavcZKwqX7ueul5KwSWrxhY6rwkpq0z50vlNoWWShzDMOmQ0VWV8B6T/mV3GEOofUzh/g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-jsx": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.38.tgz", - "integrity": "sha512-UmowkKfyyVNUdQ8HSLII4jC9wZuLsTrynsjwp53jaIzZSoGjKAsHYT6HF8JQkG01DQTN9l9trSv0LClTeAZgbg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.46.tgz", + "integrity": "sha512-aYN4vmO4nMux1W36F6/YP2ugNQ0cilrs1eU4jClLrlIouxqd9hqBloWtlGmGlyDxIRV5kzr+UWwridLDb+cN5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.38.tgz", - "integrity": "sha512-XyBtATBwLgU+cCwagMmVZ8tsRVIKEsCZuQ+wcB4YW550uuY9XRNrKCjlRbFQ9wQiaAecNkM/CCic/n6J8l50mQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.46.tgz", + "integrity": "sha512-xLcA7vqeCFDQbpbo0rrJvrTMjnjx2i9WwOkSbw+zXy9M/bmVwGAgLGROVxeuWq1Ou8Ku827DuhCzXgyf5dWvoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.38.tgz", - "integrity": "sha512-ecDBcMwYJaZQaj0xKJJpjvVS00HCqzvXFjdb2WrmTqjp9lrv/hlb7XLsSQsEtscbyyWgYasFkccjp5HVPN9Mtw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.46.tgz", + "integrity": "sha512-MMv6WG69jmcSLXdUeHvoev5RkuP/QuJZwCB4jXp2gtss//avs4Sns+t0VpGKTf9umhvRq44HFO6PVjVG85F+/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.38.tgz", - "integrity": "sha512-682EA8vPvHjQzmt768dp214gykrVFCxybbmLOTWql7w3XMUE5x4VGiXBITvu5rAMdzr6jX9dC9wSA0tp+efcgw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.46.tgz", + "integrity": "sha512-BRutzJrTLEPUidyRP1n4O2ySAww0wuJw2gIoT4iJ8Pm6qx4fqm/DM0+++TB8nR3/Tp456pHRm0bVOqpkMJdJbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-syntax-throw-expressions": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.38.tgz", - "integrity": "sha512-M4b2cHETJ8+snaaasdm1+WDsiVSYZRXLVRoJ60Eh9PYFCbUMWxoL1Rbhv9TwjTbMbedDSCKPe0tZ9g40GMrEqw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.46.tgz", + "integrity": "sha512-JLRBrAfQNxFZrv1K1X9SHwgj+NGDnlaFusKzdxt8E5eraIkujUNu7dVrOJ0Y7silPG3s+47fYxTzxSlRstW9fg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.38.tgz", - "integrity": "sha512-MXh/RazPii5LK6E2ve3+mmeGJAcNaUW8SwVh1a5Tt92RyXbTsZtmFz0mPsVz6Otxx/C/cj8gahHfiuBpktP//w==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.46.tgz", + "integrity": "sha512-GgeFCCMHXWRkPDXWKin76qiZh+DAYdQShmk8SmzDj6IAgPHyNqkxHN/8gsmNe5/7IWFFOKUuM9TNU7fgY7z7Gg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.38.tgz", - "integrity": "sha512-l3A58LHNzp/Q1l8SdinAoSNsCwR0Fe3YG8y+N19IAYG/wD5NWyYobTv19UXePe9RmPLg3dUBSTwGAcMXwZrxFQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.46.tgz", + "integrity": "sha512-obykYLqAd3tujTjHYE+dln5+nDhm+R5FmUcxXFr/Mx6LK1NgrTQ9TdPPOcMCD08r8SDljFpMopuz9upN/xJlbw==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.38", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.38" + "@babel/helper-module-imports": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.46" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.38.tgz", - "integrity": "sha512-pmun01vKbbZTlmyv68dYPv25aGl6/erAObWhWRtf9j4I8XqA8JN6Tbxh3ONGpcp3wNNd03s/yQ+TBGoCfWI2cQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.46.tgz", + "integrity": "sha512-0paq0AtTp3TXbXdzWwsL8ddacmo/g/14IgIZgs5BzUTrfROKQThYVccEBPqRnprTgvM0JXyDVfNSgLB4akCTjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.38.tgz", - "integrity": "sha512-GoYqWrbwEQty36dUzjbBoIBW+hymFrE8S7IifH6Lzess3a9z9ST1APNYk4XHrGYYyn7lOGOWe3SL8tPLWoo+OA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.46.tgz", + "integrity": "sha512-7OwS0ObI6nLacEKP1HCdnoIQnHBqOV6IgtKGiPO+Nj03OnZ1Yo2aeK9sfOtwL43aNztnKqFVt2L5PfZg4VGidA==", "dev": true, "requires": { - "lodash": "4.17.5" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "lodash": "^4.2.0" } }, "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.38.tgz", - "integrity": "sha512-aqGomD8WO9Ne/agQBxXQy8XhalSF3awhOs/NmicxtttXHblFxEj14HSio1gWKfKpt2Er1d2DnWOD3i2o9X9hQg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.46.tgz", + "integrity": "sha512-EDp/qQAURfrX6hNM+VrLSSA+cGiwDeZL0ZTTt6a7PNSFABCw4qwKJHx3Q7me1oV7q3U/GJwPS4Aym2QTDmNGvg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.38", - "@babel/helper-define-map": "7.0.0-beta.38", - "@babel/helper-function-name": "7.0.0-beta.38", - "@babel/helper-optimise-call-expression": "7.0.0-beta.38", - "@babel/helper-replace-supers": "7.0.0-beta.38", - "globals": "11.3.0" + "@babel/helper-annotate-as-pure": "7.0.0-beta.46", + "@babel/helper-define-map": "7.0.0-beta.46", + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/helper-optimise-call-expression": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-replace-supers": "7.0.0-beta.46", + "@babel/helper-split-export-declaration": "7.0.0-beta.46", + "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.38.tgz", - "integrity": "sha512-n2ZUN8FOdmddAe1+bgPARU274hKGP4dVfnHDzytmxh/vuH1cbWfJ/lbzZJO5O3+zchv3syCdSQpnxHueJ4+cCw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.46.tgz", + "integrity": "sha512-0ne9TL53fXH+cBI591R1JSpPhu0d2Wd9dbD8jLCJFV4tlMfqQ+Rcm65RhWWqjEBZfGv2+FuOnwB4HJRHakdW+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.38.tgz", - "integrity": "sha512-3DD17TSYkgmwBO+12pO3LP6RK8Pv7EGTLYOfBDU217mMnmC+xaGi4I5BFlTroK+1+IJLys3ObetRMobV4VU0bQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.46.tgz", + "integrity": "sha512-l9x0+T29Njwp6smLbTIU2HG2s4ROd9DAIQcfciEfpjAqscXEst0M4X9+UvjQsuaOgPFmQTdAn9xOwNFXnRP7Tg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.38.tgz", - "integrity": "sha512-MYjo3Fg3EjmAcZBG+gnbP8HjdmkoRpjGV68+Q9w853Ye9VimO47bz9HBojsClYpXsXbyxNbPRZteGU/jrMcKig==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.46.tgz", + "integrity": "sha512-5bO0XvTP+2LFDQ9qT/WaXfyieLtqz1yGsfOuq86VXmwX9tDnBnNS6pCHEGFQ866c1HmlNBWtaXttTTnvWkFBkw==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-regex": "7.0.0-beta.46", + "regexpu-core": "^4.1.3" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.38.tgz", - "integrity": "sha512-FRHj7ukkoPV1yZEU22BjdlJYEox5voH6FPxrqJHiTYtk89h8PmKotbnYjMagNniAQ+tZ1iZYY229ntrgNN35Ww==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.46.tgz", + "integrity": "sha512-mP2+3QQ+ArIMX98zVYSC9XBzV7A/Pxbz+2hPcEAGVeakFYm5AeTkcVHRQzzA21v4ecl0L5LE1XWX9yeK643CWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.38.tgz", - "integrity": "sha512-6FyrtyZswMw9rhf25hXoZEGWhuleB8zWdzU7kmgh1Pztm/Xv4tVBUHMevbOZIt3KCJQucpwhb/T58FrZ/mPwcg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.46.tgz", + "integrity": "sha512-acomgoNW/fwWSmBlhH22C9Eyl1Y/vADBSqzyIRWJGpm4frLhd49QQgKXbRGRHUDxyifXuZDF9+3pRhEmi7/HXA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.38" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-beta.38.tgz", - "integrity": "sha512-duooCkhnwVvVyva2e3MLKq9WR8+Z+6nOk6jDgLhpI4YQuACqyDvYff5XKS60rI/SaMj3961NDtz9K/mxI6L9oA==", + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-beta.47.tgz", + "integrity": "sha512-X/8Gd4CxdBx7LOtW2wPSzr83bYyndqYbnJoUEosPJXOG2aRmgVo4hn+wk97vtDH+hMP7HsTApVBffrZNXS3erA==", "dev": true, "requires": { - "@babel/plugin-syntax-flow": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.47", + "@babel/plugin-syntax-flow": "7.0.0-beta.47" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", + "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "dev": true + } } }, "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.38.tgz", - "integrity": "sha512-ui9oNgRvVNYzJeYbOmNCL1UIr1++7twyiYIuzOuQ9ArSF1WOaO4fluQa43zccgWRd610CRkljNRszag0aKB4Wg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.46.tgz", + "integrity": "sha512-a1gpwuO26szyz5K2FrRrI5nUDgvkaJfZ7GeDtFAH8XyrK/pNdtpW/7DFCf1PdQc6SbEMM/1QXsH7Y2YRkWoTeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.38.tgz", - "integrity": "sha512-jvkRISpOr8b+bsnQ3d7oNgjUJqrtME2T8ken0Z8o98TY3YdFGwQVdpyWgoe5JKA5iV9WQK131en+LHj169R6gA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.46.tgz", + "integrity": "sha512-XyxSW1jm7WKOoPYHUJA0mbOkDFdlHzGR4DzlWAEwXrzEI5ep0ZP1AttAbVkxsF63XG8p2t9VtKlgbyBq4Tyr7A==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.38" + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-instanceof": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.38.tgz", - "integrity": "sha512-tflOIqaBIwSuBxm9MaQKK7e62j3Ho+yKcUQ3HjDmebyBcDUs8x+U4ev+pIJeg2EAd8Vz72CD/+TGP78r0Vz/yg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.46.tgz", + "integrity": "sha512-yMde/XDsS8ONNoI+QsT3RR/0Lrq5yKYEVZxMxsm+naKN/n1+CiG6sN9USAzF6qy+XC4uRTJ5gpDZu0CtDnh0qA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.38.tgz", - "integrity": "sha512-pNx7CUnGOR74fkpvzIho5GECAgaf0m0px7GZ2uzNYGMm5nvUT3h2bA6ASjI0YQ7FLHQScRdrHa0rBvD7lSIZFQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.46.tgz", + "integrity": "sha512-Uuo7pRsBkrLrDg6XpOAMfwhKw56SB5qVBniUVM04uf8wf92S2Z5tSPNNfn1iTgphuckAO9vg86l2XJ0Y/QD4YQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.38.tgz", - "integrity": "sha512-BafGOUA0G8qmClL365eUqs4ty4fVeVUdwZhWrYvLuxDInOCwYmGfWk6se8Gnvg4CGKZmlKojpzwwJFNHSjJKXg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.46.tgz", + "integrity": "sha512-GNp7F3EqJlQIMY9sfoDS03P7EHa/+Bdy6PUugTIo1TjZQUnCy3JbeL2YGI4tU8XOHJGHiBKRjFMpeOsjOSmMtw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.38" + "@babel/helper-module-transforms": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.38.tgz", - "integrity": "sha512-ZOQ9vK2+FF3pYxjtqQkMoGkU2x8yMOWmc/DBCGptXN5F7ypOLE1DYl1qj+5j/PHLcLTBkZMTuC2yvjYdWQEn1A==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.46.tgz", + "integrity": "sha512-3wLCWVkEhhQiVqqml4y9G6GJT6WA/mkxQ6TRy+4I46z00WWbEDENJcRTS14oNKzeRIo4yJylbVB1wUCW7HuJ9A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.38", - "@babel/helper-simple-access": "7.0.0-beta.38" + "@babel/helper-module-transforms": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-simple-access": "7.0.0-beta.46" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.38.tgz", - "integrity": "sha512-iS7AVaR46bdzx6mHFyc69P2EDt9Dk/U+q2a/hdWrKo6JKdyquYC1O2saaCVTR7/o9pYrgk/xdAKyZGNvpNrLaQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.46.tgz", + "integrity": "sha512-dCIuCGaE4UyM6cYC/a2veO0vKT/iSjBZ6ux4v/LePXA/N6v9648nwE6CRmCK1/LtRw+eU0sCo+c0TPeALCszYA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.38" + "@babel/helper-hoist-variables": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.38.tgz", - "integrity": "sha512-3Y83CIc1fybCmdYe5zQQ9yP7v5989Gg9x/0SGE0s5Uuwo5g8hj+t2nahvE4b4Uq03NYYnmClkhXi8Va7wvM1Rg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.46.tgz", + "integrity": "sha512-t54bMSIY5xtb8uK8aM61xZmpjQ7FJ0M/8EiCFDdx7rHff5O9eJUNEGqGaly8ZTbdp80RqbzMkyiD1V+TXYQW/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.38" + "@babel/helper-module-transforms": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.38.tgz", - "integrity": "sha512-6xzyPp1GgyB0nNtsX9GmYWGVEOCkSIuTf8yJlGp/X/vrWNNxnlYl0D4IqySerzkHo2bABCES7sw/5A2ZYVRhtQ==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.46.tgz", + "integrity": "sha512-VSuIdVFUhlqADj/ymm7NG4BVjGD0sBWWN5sONTLAYzKScGZA58Ys8jSkl1dxeqWnMOEjzo8lTRWxRVvz8HIaMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.38.tgz", - "integrity": "sha512-aPhCJ+JFKt4/o8q9tLQUIfX4qQrFcsHzax5dkO7Xj1VZGZ0RZnJbsR32k0oI5/XhOVnyppLDAvkDOcEo7rm1hg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.46.tgz", + "integrity": "sha512-T+TV4rRuTubvjqEwBF5xib3vnfJgjQ62qJqHprTaJDBtF0ofpbv/A6x86EEr51iPymHc84eM+F1zyFEtJvKYwQ==", "dev": true, "requires": { - "@babel/helper-replace-supers": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-replace-supers": "7.0.0-beta.46" } }, "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.38.tgz", - "integrity": "sha512-D8aOMPvzGSJ+7uDPoanWlZNM7/F6F6kffvT7f63qQtjktikwusknduy/4jXhEWWeOaQcUcDbirvxVT0abTS6SQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.46.tgz", + "integrity": "sha512-RnkdYrayTlQ0VFoyIjvY/cCp/1lJJkYE2lFcRNg6+Skd3g41PnocsHhQ5NUQjMNogL+RnNan3S/2S/i7S4zm+Q==", "dev": true, "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.38", - "@babel/helper-get-function-arity": "7.0.0-beta.38" + "@babel/helper-call-delegate": "7.0.0-beta.46", + "@babel/helper-get-function-arity": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-property-literals": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0-beta.38.tgz", - "integrity": "sha512-vQgj4pmc80APzb7JVcvQ7uqFc0vkxGJ3YZWMMD/6prQfaWGv9zk2PqdYTQ6Qc9gT4Mt6Kyv9HNkiJNVHHEsLVw==", - "dev": true + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0-beta.47.tgz", + "integrity": "sha512-BprUjFZGZ8+f8yHco0qIWFoEez/3mGScE+kzDmWIvMOLO9dBmzvM/vxTAUv/armxOl+wg4fUDLqSF99ZxjSt8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.47" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", + "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "dev": true + } + } }, "@babel/plugin-transform-react-display-name": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.38.tgz", - "integrity": "sha512-oFcicGLVdSYLFWY3JKBbC508dgwlR1bbPRaLpbX70fyMFyJzSfa8mjEQyLtiUI0l8+ymEQzF+VWGg1KsjyQeAg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.46.tgz", + "integrity": "sha512-/a7wwzNrYqReyuOM8rBB9iAOLaubvGHM9w3eUeput/DnEq/V+dJuBgktpF6mw/MQjwjna1B/3BbWsn1PaBw8bw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-react-jsx": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.38.tgz", - "integrity": "sha512-8mT1KlhPMKnTaV6gm7j53Z2TtJ/AFfoTbZOfixZ/ghRKMZD7yoYU8pKmLlHilSLHE77HXeyqiQwXqby0TieyLA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.46.tgz", + "integrity": "sha512-b8VtHVQub3h7lXG1ShaCKgGJdra7fRlUK6hx1eCcIWAPYnJMz4soLMSPiXmyjDA5L0CbYmyTkceU1GjbeJmaaw==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "7.0.0-beta.38", - "@babel/plugin-syntax-jsx": "7.0.0-beta.38" + "@babel/helper-builder-react-jsx": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-jsx": "7.0.0-beta.46" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.38.tgz", - "integrity": "sha512-ULj82jVcpRfXLV75w9mG++mqZA4PYRIEFHl1GXe39+E330FK3NuhdzuJ7Wi2XpIycbH1ICJ5rh1IfdamdrXuxw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.46.tgz", + "integrity": "sha512-keXGiKQNzqHXpplpz/Eu+F+OC/k6M3kbEBOqoDbbYeJVmWARVADWwRnCCsW6yevSyON4CTU5mouVadTIY9YSpA==", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-jsx": "7.0.0-beta.46" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.38.tgz", - "integrity": "sha512-7bO3+etqQQblT8xZea6T5MqbqlyienNcWpFYq5ZenqUIBW0zjlYraBE1LHATI6IVR77pbNb8YY9bZ71V48yUdg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.46.tgz", + "integrity": "sha512-vSSghGn+ER6d5gBtNnTZAxPxBSs1ngyyVlHse/geHSv7YnzmrCOUrtVl+t4M2/EO3CW2m8nkMfpnMW5FCmg+Zw==", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-jsx": "7.0.0-beta.46" } }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.38.tgz", - "integrity": "sha512-jbvExdAuxDndPbK3oO54QdkKqMeUAt/XYMW9wovYAWLA5R2loJkMjneZ5iU8VbfNcqVk2baWdgInBBUy6dtoXQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.46.tgz", + "integrity": "sha512-P6d8ckSjKlbr/1SL1NBO6ieFxSebTiRWd2R8/styUIizJWQlEB0ITQ7l8vv3jXGjJ0mh7lxBTegXejRkTGKKgw==", "dev": true, "requires": { - "regenerator-transform": "0.12.3" + "regenerator-transform": "^0.12.3" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.38.tgz", - "integrity": "sha512-XeDeMOpDYRg69lErxWK+vHOQhZNU4Pui4HJWhsd7Sqw2MQL4/OYi6IQLfBmcJnGimnhUEQOONCyjcIkmeQxXJw==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.46.tgz", + "integrity": "sha512-1QkKFWPsjrvMppycLwjPBXF+usSnGvbTxGe0Q+eIzcZyhabwGCsCgkmDIKMisPSAi6F7bM5H1S8VbE85IW3oRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.38.tgz", - "integrity": "sha512-KQItm2CD8JthjpcmccTEoi4db9AJ0C4vPBy5Ds/AuIBqmFKBkWVanzyciUsX5yupNrZRYcbnCQ2hflDUpFIN8Q==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.46.tgz", + "integrity": "sha512-R0GvFdJnFrgTlmZfFtCXk81uvq5S3FuY38FnRsxDt6Yx/sE8jCmmrRe7XHZOnXXGP3ZWY9icILUmzWHOf91jbA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.38.tgz", - "integrity": "sha512-kwH7JLQ+UqDJK4ZkEimL/mMrRSTS/Agm8+EzEJomgr2P2xzSI7fHQ4a6F4m6PFFk3ZUpdF2TDp1V/7q4Hy8Etg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.46.tgz", + "integrity": "sha512-goMgOLODjG1cgFHlKACh/NT/wrnmuRi2CpXsjOan10eZce0fk9kahYz/04cqhppmwtV/vQWwH2ikAHODSD8r5w==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-regex": "7.0.0-beta.46" } }, "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.38.tgz", - "integrity": "sha512-YhOcJEawsIStf6OnPousctP6MXsxl4ujvqW3uMHp4NUX4on2q4puQpNO8+yZbjD+JTInIPBvM1/GTwpzPgryQA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.46.tgz", + "integrity": "sha512-2iGMsHWVAQq9X6p3VNjktJCH6ZXHQHi3NTPLKh5d4bEW8+M3H7LXLNqk1yUm/Uwt0tzh1FUfb/EU2sEPbrBrVA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.38" + "@babel/helper-annotate-as-pure": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.38.tgz", - "integrity": "sha512-vVULLUBkiLj4Y/p/37jxnutyOW0Ho0k6W2Own2wRe/kcWQoHxTDwwDWU2tGGBed1u1jbbYw5+B26F9IQ63tkvg==", - "dev": true + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.46.tgz", + "integrity": "sha512-l+CfLR2c5KzZ/uZlkflNe7nK2hiEahc/FeiUCTd5Krj4aCKDdLLSdb4Lowf5hdZbqIPQc9TdL9SZt80YhUlmFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46" + } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.38.tgz", - "integrity": "sha512-yDlQX//HQusXLy+ujZvgt8JTKSU6b71/77KINIXb6utsegiy2qkJq6eoqmidpBh78ncEnK9zgtLjY3wt1PBDYQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.46.tgz", + "integrity": "sha512-XWQ7uJ0HL/xdMesKzt1uq5CmZPBqDiEno+FBeYuOJu1IWjpr3yXfEzH/nW17KESXGRv68mLTr+fIeSwcC+qVFg==", "dev": true, "requires": { - "@babel/helper-regex": "7.0.0-beta.38", - "regexpu-core": "4.1.3" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/helper-regex": "7.0.0-beta.46", + "regexpu-core": "^4.1.3" } }, "@babel/polyfill": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.38.tgz", - "integrity": "sha512-4W6LtzWEp8r4Cvqbv16Ix3WV3JdjcWTIa0+8U+MILNiS7qchBZQALki5WStlF7deHGGE/ZpsAs0HOpK68HUsCQ==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.46.tgz", + "integrity": "sha512-eFFWNiI3Os7bBkIA10ZGBUMywK+1/OTVg+qsrlaXRBTpAN0n1g1pXCkNN4rcGpgLPNyfZHQEj+aVAyWPGerSIQ==", "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.5.3", + "regenerator-runtime": "^0.11.1" } }, "@babel/preset-env": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.38.tgz", - "integrity": "sha512-essqHthkBgeTvAzNAEie3Bvox5PZpJIzbajeWfFYvJTwUBvh6/MFhXlUmgNuu4lVqPrK+oME8oyHaOHKOgZTNg==", - "dev": true, - "requires": { - "@babel/plugin-check-constants": "7.0.0-beta.38", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.38", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.38", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.38", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.38", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.38", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.38", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.38", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.38", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.38", - "@babel/plugin-transform-classes": "7.0.0-beta.38", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.38", - "@babel/plugin-transform-destructuring": "7.0.0-beta.38", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.38", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.38", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.38", - "@babel/plugin-transform-for-of": "7.0.0-beta.38", - "@babel/plugin-transform-function-name": "7.0.0-beta.38", - "@babel/plugin-transform-literals": "7.0.0-beta.38", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.38", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.38", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.38", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.38", - "@babel/plugin-transform-new-target": "7.0.0-beta.38", - "@babel/plugin-transform-object-super": "7.0.0-beta.38", - "@babel/plugin-transform-parameters": "7.0.0-beta.38", - "@babel/plugin-transform-regenerator": "7.0.0-beta.38", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.38", - "@babel/plugin-transform-spread": "7.0.0-beta.38", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.38", - "@babel/plugin-transform-template-literals": "7.0.0-beta.38", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.38", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.38", - "browserslist": "2.11.3", - "invariant": "2.2.2", - "semver": "5.4.1" + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.46.tgz", + "integrity": "sha512-zC+QsTmteh2c1CtjeskvUKsqvRpgwBZxOxTk6p+F3gL6uJszP4OWzffgPrsV2wo9vccppTaCzYMFeiJscnne6g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.46", + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.46", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.46", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.46", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.46", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.46", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.46", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.46", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.46", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.46", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.46", + "@babel/plugin-transform-classes": "7.0.0-beta.46", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.46", + "@babel/plugin-transform-destructuring": "7.0.0-beta.46", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.46", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.46", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.46", + "@babel/plugin-transform-for-of": "7.0.0-beta.46", + "@babel/plugin-transform-function-name": "7.0.0-beta.46", + "@babel/plugin-transform-literals": "7.0.0-beta.46", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.46", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.46", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.46", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.46", + "@babel/plugin-transform-new-target": "7.0.0-beta.46", + "@babel/plugin-transform-object-super": "7.0.0-beta.46", + "@babel/plugin-transform-parameters": "7.0.0-beta.46", + "@babel/plugin-transform-regenerator": "7.0.0-beta.46", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.46", + "@babel/plugin-transform-spread": "7.0.0-beta.46", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.46", + "@babel/plugin-transform-template-literals": "7.0.0-beta.46", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.46", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.46", + "browserslist": "^3.0.0", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "caniuse-lite": { + "version": "1.0.30000844", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000844.tgz", + "integrity": "sha512-UpKQE7y6dLHhlv75UyBCRiun34Q+bmxyX3zS+ve9M07YG52tRafOvop9N9d5jC+sikKuG7UMweJKJNts4FVehA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", + "dev": true + } } }, "@babel/preset-es2015": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.38.tgz", - "integrity": "sha512-MTMSvNbxbyekfinuV+16UmE/H+J3Ghp+uFS62EzxYAIon6hvb5EupZfRtlENK6kyEDX8usZ+i76R+F0TinewDA==", - "dev": true, - "requires": { - "@babel/plugin-check-constants": "7.0.0-beta.38", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.38", - "@babel/plugin-transform-classes": "7.0.0-beta.38", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.38", - "@babel/plugin-transform-destructuring": "7.0.0-beta.38", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.38", - "@babel/plugin-transform-for-of": "7.0.0-beta.38", - "@babel/plugin-transform-function-name": "7.0.0-beta.38", - "@babel/plugin-transform-instanceof": "7.0.0-beta.38", - "@babel/plugin-transform-literals": "7.0.0-beta.38", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.38", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.38", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.38", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.38", - "@babel/plugin-transform-object-super": "7.0.0-beta.38", - "@babel/plugin-transform-parameters": "7.0.0-beta.38", - "@babel/plugin-transform-regenerator": "7.0.0-beta.38", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.38", - "@babel/plugin-transform-spread": "7.0.0-beta.38", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.38", - "@babel/plugin-transform-template-literals": "7.0.0-beta.38", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.38", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.38" + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.46.tgz", + "integrity": "sha512-4T9AFPRkg6K8OaGeHlOY8UdJz5I03WOpAGGnNwCf4GzXnVuC/fBAnT4yQ1OZYIjabf35jBw6bE1KympDuF8HoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.46", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.46", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.46", + "@babel/plugin-transform-classes": "7.0.0-beta.46", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.46", + "@babel/plugin-transform-destructuring": "7.0.0-beta.46", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.46", + "@babel/plugin-transform-for-of": "7.0.0-beta.46", + "@babel/plugin-transform-function-name": "7.0.0-beta.46", + "@babel/plugin-transform-instanceof": "7.0.0-beta.46", + "@babel/plugin-transform-literals": "7.0.0-beta.46", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.46", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.46", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.46", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.46", + "@babel/plugin-transform-object-super": "7.0.0-beta.46", + "@babel/plugin-transform-parameters": "7.0.0-beta.46", + "@babel/plugin-transform-regenerator": "7.0.0-beta.46", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.46", + "@babel/plugin-transform-spread": "7.0.0-beta.46", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.46", + "@babel/plugin-transform-template-literals": "7.0.0-beta.46", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.46", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.46" } }, "@babel/preset-react": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.38.tgz", - "integrity": "sha512-rDNMTPAbq9mw3KRnOgl96vakDxV1bdG5jazJDEWDYBQuANB0P8roGTe7STFW+S/Xq2Dyy5kF4iR3Czz8lq7KuA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.46.tgz", + "integrity": "sha512-+Xl9AH/rhI7FTX0OxNXM4oGljpeCs1nwPm2IjD9+mXO/+dWdGpa+yTcjYYpIWAK4KQrSQ+27T6DtJ6fZPTqYQA==", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "7.0.0-beta.38", - "@babel/plugin-transform-react-display-name": "7.0.0-beta.38", - "@babel/plugin-transform-react-jsx": "7.0.0-beta.38", - "@babel/plugin-transform-react-jsx-self": "7.0.0-beta.38", - "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-syntax-jsx": "7.0.0-beta.46", + "@babel/plugin-transform-react-display-name": "7.0.0-beta.46", + "@babel/plugin-transform-react-jsx": "7.0.0-beta.46", + "@babel/plugin-transform-react-jsx-self": "7.0.0-beta.46", + "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.46" } }, "@babel/preset-stage-2": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.38.tgz", - "integrity": "sha512-9nyFFI3SDQrgQKY/TqwnImxfKmBq4wk1csFYUUjmiTkvgCQS/rlTV3857wZLY92Y6n6jNS6oC00+J9mxBVumFg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.46.tgz", + "integrity": "sha512-Lebdh+/WyFdT+G9LaSUpcXb3ZhvQfSxd/UqjQw4iaHS1j8nKWblTZBTp6ZGHjtfvbO64ERu8EtkYJ+WelzUK7Q==", "dev": true, "requires": { - "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.38", - "@babel/plugin-proposal-function-sent": "7.0.0-beta.38", - "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.38", - "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.38", - "@babel/preset-stage-3": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-proposal-decorators": "7.0.0-beta.46", + "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.46", + "@babel/plugin-proposal-function-sent": "7.0.0-beta.46", + "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.46", + "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.46", + "@babel/preset-stage-3": "7.0.0-beta.46" } }, "@babel/preset-stage-3": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.38.tgz", - "integrity": "sha512-akNpBfZYZxdcVsnfbKObPREJWuj233+JSLtbjXnXiVOU4tqUMOSACV1RCGBbemKHNpOcuWqs6RhP0gb+B4kjrA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.46.tgz", + "integrity": "sha512-YE5ZHOIycLjdmuzvyunyj7ZmCYfUjpDbMU+FQ2OIgWkneGUtoa2CIQTZxQp4gVUxsnXkfFTqCqmuYLJQHyY78Q==", "dev": true, "requires": { - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.38", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.38", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.38", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.38", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.38", - "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.38", - "@babel/plugin-syntax-import-meta": "7.0.0-beta.38" + "@babel/helper-plugin-utils": "7.0.0-beta.46", + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.46", + "@babel/plugin-proposal-class-properties": "7.0.0-beta.46", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.46", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.46", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.46", + "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.46", + "@babel/plugin-syntax-import-meta": "7.0.0-beta.46" } }, "@babel/register": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0-beta.38.tgz", - "integrity": "sha512-szE2vMZ8FB6NkywESqDGcAtchQafaWLQgJo3xro7GIgNRmJoAX2xZijU1e5AKT4zWkRRc53aBBwfZy03aWsPgw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0-beta.46.tgz", + "integrity": "sha512-S43PemtH5CSDE9GJesjUoAQGfC2rwLcc35gq/y6WQHPzWOd90yOvKydUk/pS7aSMrDiJSXYtyEeZFsq/8dtLhg==", "dev": true, "requires": { - "core-js": "2.5.3", - "find-cache-dir": "1.0.0", - "home-or-tmp": "3.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "pirates": "3.0.2", - "source-map-support": "0.4.18" + "core-js": "^2.5.3", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.2.0", + "mkdirp": "^0.5.1", + "pirates": "^3.0.1", + "source-map-support": "^0.4.2" }, "dependencies": { "home-or-tmp": { @@ -934,49 +1147,70 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } }, "@babel/runtime": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.38.tgz", - "integrity": "sha512-ZvPtlcvH2ZRzr1U5pkmCE7U3RIun3Nf29XHem47aScmJgMuL06ulkp+4oPBee3QrUVFErDjwNWtC67BzNuxLVw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.46.tgz", + "integrity": "sha512-/3a3USMKk54BEHhDgY8rtxtaQOs4bp4aQwo6SDtdwmrXmgSgEusWuXNX5oIs/nwzmTD9o8wz2EyAjA+uHDMmJA==", "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.5.3", + "regenerator-runtime": "^0.11.1" } }, "@babel/template": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.38.tgz", - "integrity": "sha512-ygOSe1+ekKVkn5zxCH0rqv5sZtvLfC72yPQSaXLTHtYSYdAyXNqOW7q1ua1zJll9glk0UWYAnUEcehQXXc3fEA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.46.tgz", + "integrity": "sha512-3/qi4m0l6G/vZbEwtqfzJk73mYtuE7nvAO1zT3/ZrTAHy4sHf2vaF9Eh1w+Tau263Yrkh0bjVQPb9zw6G+GeMQ==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "babylon": "7.0.0-beta.38", - "lodash": "4.17.5" + "@babel/code-frame": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "babylon": "7.0.0-beta.46", + "lodash": "^4.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", + "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.46" + } + } } }, "@babel/traverse": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.38.tgz", - "integrity": "sha512-qbrc59aPCnMCj3uroG7QXdFMmrFLFvEfcwfVzmF2MXh2a7OhRzs73g/PNN8Xb0W/4Z1H4ZTY95CczmfDmXapnw==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.46.tgz", + "integrity": "sha512-IU7MTGbcjpfhf5tyCu3sDB7sWYainZQcT+CqOBdVZXZfq5MMr130R7aiZBI2g5dJYUaW1PS81DVNpd0/Sq/Gzg==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.38", - "@babel/generator": "7.0.0-beta.38", - "@babel/helper-function-name": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "babylon": "7.0.0-beta.38", - "debug": "3.1.0", - "globals": "11.3.0", - "invariant": "2.2.2", - "lodash": "4.17.5" + "@babel/code-frame": "7.0.0-beta.46", + "@babel/generator": "7.0.0-beta.46", + "@babel/helper-function-name": "7.0.0-beta.46", + "@babel/helper-split-export-declaration": "7.0.0-beta.46", + "@babel/types": "7.0.0-beta.46", + "babylon": "7.0.0-beta.46", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", + "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.46" + } + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -989,14 +1223,14 @@ } }, "@babel/types": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.38.tgz", - "integrity": "sha512-SAtyEjmA7KiEoL2eAOAUM6M9arQJGWxJKK0S9x0WyPOosHS420RXoxPhn57u/8orRnK8Kxm0nHQQNTX203cP1Q==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.46.tgz", + "integrity": "sha512-uA5aruF2KKsJxToWdDpftsrPOIQtoGrGno2hiaeO9JRvfT9xZdK11nPoC+/RF9emNzmNbWn4HCRdCY+McT5Nbw==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" }, "dependencies": { "to-fast-properties": { @@ -1807,93 +2041,126 @@ "dev": true }, "babel-eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.1.tgz", - "integrity": "sha512-RzdVOyWKQRUnLXhwLk+eKb4oyW+BykZSkpYwFhM4tnfzAG5OWfvG0w/uyzMp5XKEU0jN82+JefHr39bG2+KhRQ==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz", + "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/traverse": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0" + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "~3.7.1", + "eslint-visitor-keys": "^1.0.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", - "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", "dev": true, "requires": { - "chalk": "2.3.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz", - "integrity": "sha512-/SGPOyifPf20iTrMN+WdlY2MbKa7/o4j7B/4IAsdOusASp2icT+Wcdjf4tjJHaXNX8Pe9bpgVxLNxhRvcf8E5w==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.36", - "@babel/template": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36" + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz", - "integrity": "sha512-vPPcx2vsSoDbcyWr9S3nd0FM3B4hEXnt0p1oKpwa08GwK0fSRxa98MyaRGf8suk8frdQlG1P3mDrz5p/Rr3pbA==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.36" + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@babel/template": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.36.tgz", - "integrity": "sha512-mUBi90WRyZ9iVvlWLEdeo8gn/tROyJdjKNC4W5xJTSZL+9MS89rTJSqiaJKXIkxk/YRDL/g/8snrG/O0xl33uA==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", - "lodash": "4.17.5" + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" } }, "@babel/traverse": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.36.tgz", - "integrity": "sha512-OTUb6iSKVR/98dGThRJ1BiyfwbuX10BVnkz89IpaerjTPRhDfMBfLsqmzxz5MiywUOW4M0Clta0o7rSxkfcuzw==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/helper-function-name": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", - "debug": "3.1.0", - "globals": "11.3.0", - "invariant": "2.2.2", - "lodash": "4.17.5" + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" } }, "@babel/types": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.36.tgz", - "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" } }, "babylon": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", - "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", "dev": true }, "debug": { @@ -1905,6 +2172,12 @@ "ms": "2.0.0" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1946,11 +2219,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -1959,8 +2232,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-module-imports": { @@ -1970,7 +2243,7 @@ "dev": true, "requires": { "babel-types": "7.0.0-beta.3", - "lodash": "4.17.5" + "lodash": "^4.2.0" }, "dependencies": { "babel-types": { @@ -1979,9 +2252,9 @@ "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" } }, "to-fast-properties": { @@ -2002,13 +2275,13 @@ } }, "babel-jest": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.1.tgz", - "integrity": "sha512-rEdN/jevSuX0IQKcUqwqOGa0gDNis4jGY52Rq53aizfDGPwQYNJq+f9NCMT1HUhtUZhYSjvfGUfHQWBRT1/icA==", + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz", + "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==", "dev": true, "requires": { - "babel-plugin-istanbul": "4.1.5", - "babel-preset-jest": "22.4.1" + "babel-plugin-istanbul": "^4.1.5", + "babel-preset-jest": "^22.4.4" } }, "babel-messages": { @@ -2025,7 +2298,7 @@ "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0" + "babel-plugin-syntax-dynamic-import": "^6.18.0" } }, "babel-plugin-inline-import": { @@ -2049,9 +2322,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz", - "integrity": "sha512-gmj5FvFflXSnRapWmF/jDjx5Lof1kX0OwXibCxMOx38V3CFMOnTxLTUrAFfLkhCey3FJvv0ACvv/+h4nzFRxhg==", + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz", + "integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==", "dev": true }, "babel-plugin-lodash": { @@ -2060,24 +2333,24 @@ "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", "dev": true, "requires": { - "babel-helper-module-imports": "7.0.0-beta.3", - "babel-types": "6.26.0", - "glob": "7.1.2", - "lodash": "4.17.5", - "require-package-name": "2.0.1" + "babel-helper-module-imports": "^7.0.0-beta.3", + "babel-types": "^6.26.0", + "glob": "^7.1.1", + "lodash": "^4.17.4", + "require-package-name": "^2.0.1" } }, "babel-plugin-module-resolver": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.1.0.tgz", - "integrity": "sha512-UgBbu6ElA6K53+KqriPO0T8B5QN8Ln7E0FSDxqSgUYkTGLUrgnScWvXzUCh3yEb3ZtNMInXOZwc/UMlbFNpE1A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.1.1.tgz", + "integrity": "sha512-1Q77Al4ydp6nYApJ7sQ2fmgz30WuQgJZegIYuyOdbdpxenB/bSezQ3hDPsumIXGlUS4vUIv+EwFjzzXZNWtARw==", "dev": true, "requires": { - "find-babel-config": "1.1.0", - "glob": "7.1.2", - "pkg-up": "2.0.0", - "reselect": "3.0.1", - "resolve": "1.5.0" + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" } }, "babel-plugin-rewire-exports": { @@ -2086,7 +2359,7 @@ "integrity": "sha512-mqPQnNKIwP1lGYRSgF+fXDfXYScCDNStfp48ZtLLI3wAm7hbijQrQR41qkK7F5mb8R5G+DG2D61dKSgi/fG9qw==", "dev": true, "requires": { - "babel-template": "6.26.0" + "babel-template": "^6.16.0" } }, "babel-plugin-syntax-class-properties": { @@ -2113,97 +2386,54 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-preset-jest": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz", - "integrity": "sha512-gW3+spyB8fkSAI9fX+41BQMwar5LjR+nyKa2QRvK22snxnI29+jJVAMfId+osucFJzJJvhlvzKWnfwX8Omodvg==", + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz", + "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "22.4.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0" + "babel-plugin-jest-hoist": "^22.4.4", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" } }, "babel-preset-meteor": { - "version": "7.0.0-beta.38-1", - "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.0.0-beta.38-1.tgz", - "integrity": "sha512-l49ynehN6GF+R/8tSZBwkpoyYtC5cXG+csY1OC2HgRR6/DrgmHX3YGGBGCGsjNGlIADA1WheIjr1OVMhqqQpHg==", - "dev": true, - "requires": { - "@babel/plugin-check-constants": "7.0.0-beta.38", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.38", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.38", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.38", - "@babel/plugin-syntax-flow": "7.0.0-beta.38", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.38", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.38", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.38", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.38", - "@babel/plugin-transform-classes": "7.0.0-beta.38", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.38", - "@babel/plugin-transform-destructuring": "7.0.0-beta.38", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.38", - "@babel/plugin-transform-flow-strip-types": "7.0.0-beta.38", - "@babel/plugin-transform-for-of": "7.0.0-beta.38", - "@babel/plugin-transform-literals": "7.0.0-beta.38", - "@babel/plugin-transform-object-super": "7.0.0-beta.38", - "@babel/plugin-transform-parameters": "7.0.0-beta.38", - "@babel/plugin-transform-property-literals": "7.0.0-beta.38", - "@babel/plugin-transform-regenerator": "7.0.0-beta.38", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.38", - "@babel/plugin-transform-spread": "7.0.0-beta.38", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.38", - "@babel/plugin-transform-template-literals": "7.0.0-beta.38", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.38", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.38" + "version": "7.0.0-beta.46-1", + "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.0.0-beta.46-1.tgz", + "integrity": "sha512-rM9nHO8HL08Rv9ZhEuRUbz926zDXs0st8QCklUtmOazIqteLim0EiqJYp25pQq4wiLvBJ30xv3ApnyBT5QC4ig==", + "dev": true, + "requires": { + "@babel/plugin-proposal-async-generator-functions": "^7.0.0-beta.46", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0-beta.46", + "@babel/plugin-syntax-async-generators": "^7.0.0-beta.46", + "@babel/plugin-syntax-flow": "^7.0.0-beta.46", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0-beta.46", + "@babel/plugin-transform-arrow-functions": "^7.0.0-beta.46", + "@babel/plugin-transform-async-to-generator": "^7.0.0-beta.46", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0-beta.46", + "@babel/plugin-transform-block-scoping": "^7.0.0-beta.46", + "@babel/plugin-transform-classes": "^7.0.0-beta.46", + "@babel/plugin-transform-computed-properties": "^7.0.0-beta.46", + "@babel/plugin-transform-destructuring": "^7.0.0-beta.46", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0-beta.46", + "@babel/plugin-transform-flow-strip-types": "^7.0.0-beta.46", + "@babel/plugin-transform-for-of": "^7.0.0-beta.46", + "@babel/plugin-transform-literals": "^7.0.0-beta.46", + "@babel/plugin-transform-object-super": "^7.0.0-beta.46", + "@babel/plugin-transform-parameters": "^7.0.0-beta.46", + "@babel/plugin-transform-property-literals": "^7.0.0-beta.46", + "@babel/plugin-transform-regenerator": "^7.0.0-beta.46", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-beta.46", + "@babel/plugin-transform-spread": "^7.0.0-beta.46", + "@babel/plugin-transform-sticky-regex": "^7.0.0-beta.46", + "@babel/plugin-transform-template-literals": "^7.0.0-beta.46", + "@babel/plugin-transform-typeof-symbol": "^7.0.0-beta.46", + "@babel/plugin-transform-unicode-regex": "^7.0.0-beta.46" } }, "babel-register": { @@ -2334,9 +2564,9 @@ } }, "babylon": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.38.tgz", - "integrity": "sha512-ukc+RoVsxNjsFGTgXtCGr/RcNHQ4/OKBZQ2B6C2XBQwrbxXGWxgOMF9xgQ2WAQJQtvur3N6xakpIGMRNfGtt8Q==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz", + "integrity": "sha512-WFJlg2WatdkXRFMpk7BN/Uzzkjkcjk+WaqnrSCpay+RYl4ypW9ZetZyT9kNt22IH/BQNst3M6PaaBn9IXsUNrg==", "dev": true }, "balanced-match": { @@ -2925,15 +3155,15 @@ "dev": true, "optional": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "chownr": { @@ -4342,12 +4572,6 @@ "jsx-ast-utils": "2.0.1" } }, - "eslint-plugin-promise": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", - "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==", - "dev": true - }, "eslint-plugin-react": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz", @@ -4761,8 +4985,8 @@ "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", "dev": true, "requires": { - "json5": "0.5.1", - "path-exists": "3.0.0" + "json5": "^0.5.1", + "path-exists": "^3.0.0" } }, "find-cache-dir": { @@ -4771,9 +4995,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" }, "dependencies": { "pkg-dir": { @@ -4782,7 +5006,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } } } @@ -6095,7 +6319,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" } }, "hosted-git-info": { @@ -7320,7 +7544,7 @@ "dev": true, "requires": { "babel-core": "6.26.0", - "babel-jest": "22.4.1", + "babel-jest": "^22.4.1", "babel-plugin-istanbul": "4.1.5", "chalk": "2.3.1", "convert-source-map": "1.5.1", @@ -8887,6 +9111,7 @@ }, "readable-stream": { "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "from": "git+https://github.com/meteor/readable-stream.git", "requires": { "inherits": "2.0.3", "isarray": "1.0.0", @@ -8940,7 +9165,7 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "requires": { "inherits": "2.0.1", - "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12" + "readable-stream": "^2.0.2" } }, "string_decoder": { @@ -10452,9 +10677,9 @@ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "is-plain-obj": "1.1.0", - "mkdirp": "0.5.1" + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" } }, "p-cancelable": { @@ -10746,7 +10971,7 @@ "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", "dev": true, "requires": { - "node-modules-regexp": "1.0.0" + "node-modules-regexp": "^1.0.0" } }, "pkg-dir": { @@ -10785,7 +11010,7 @@ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "pluralize": { @@ -11871,18 +12096,18 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerate-unicode-properties": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", - "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-6.0.0.tgz", + "integrity": "sha512-BvXxRS7RfVWxtm7vrq+0I0j7sqZ1zeSC+yzf5HS0qLnKcZPX541gFEGB39LvGuKHrkyKXrzXug+oC7xkM1Zovw==", "dev": true, "requires": { - "regenerate": "1.3.3" + "regenerate": "^1.3.3" } }, "regenerator-runtime": { @@ -11896,7 +12121,7 @@ "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", "dev": true, "requires": { - "private": "0.1.8" + "private": "^0.1.6" } }, "regex-cache": { @@ -11925,17 +12150,17 @@ "dev": true }, "regexpu-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", - "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz", + "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", "dev": true, "requires": { - "regenerate": "1.3.3", - "regenerate-unicode-properties": "5.1.3", - "regjsgen": "0.3.0", - "regjsparser": "0.2.1", - "unicode-match-property-ecmascript": "1.0.3", - "unicode-match-property-value-ecmascript": "1.0.1" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^6.0.0", + "regjsgen": "^0.4.0", + "regjsparser": "^0.3.0", + "unicode-match-property-ecmascript": "^1.0.3", + "unicode-match-property-value-ecmascript": "^1.0.1" } }, "registry-auth-token": { @@ -11958,18 +12183,18 @@ } }, "regjsgen": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", - "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", "dev": true }, "regjsparser": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", - "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -12093,7 +12318,7 @@ "integrity": "sha1-urQQqxruLz9Vt5MXRR3TQodk5vM=", "dev": true, "requires": { - "x-path": "0.0.2" + "x-path": "^0.0.2" } }, "require-uncached": { @@ -13977,6 +14202,7 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", + "from": "github:reactioncommerce/transliteration", "requires": { "yargs": "8.0.2" } @@ -14239,8 +14465,8 @@ "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.3", - "unicode-property-aliases-ecmascript": "1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.2", + "unicode-property-aliases-ecmascript": "^1.0.3" } }, "unicode-match-property-value-ecmascript": { @@ -14462,12 +14688,12 @@ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" }, "v8flags": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz", - "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.0.tgz", + "integrity": "sha512-0m69VIK2dudEf2Ub0xwLQhZkDZu85OmiOpTw+UGDt56ibviYICHziM/3aE+oVg7IjGPp0c83w3eSVqa+lYZ9UQ==", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "homedir-polyfill": "^1.0.1" } }, "validate-npm-package-license": { @@ -14766,7 +14992,7 @@ "integrity": "sha1-KU0Ha7l6dwbMBwu7Km/YxU32exI=", "dev": true, "requires": { - "path-extra": "1.0.3" + "path-extra": "^1.0.2" } }, "xdg-basedir": { diff --git a/package.json b/package.json index cc9df583cdb..e2d2066222c 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "url": "https://github.com/reactioncommerce/reaction/issues" }, "dependencies": { - "@babel/runtime": "7.0.0-beta.38", + "@babel/runtime": "7.0.0-beta.46", "@reactioncommerce/file-collections": "0.5.0", "@reactioncommerce/file-collections-sa-gridfs": "0.0.2", "@reactioncommerce/hooks": "1.0.2", @@ -141,24 +141,24 @@ "velocity-react": "^1.3.3" }, "devDependencies": { - "@babel/cli": "7.0.0-beta.38", - "@babel/core": "7.0.0-beta.38", - "@babel/node": "^7.0.0-beta.38", - "@babel/preset-env": "^7.0.0-beta.38", - "@babel/preset-es2015": "7.0.0-beta.38", - "@babel/preset-react": "7.0.0-beta.38", - "@babel/preset-stage-2": "7.0.0-beta.38", + "@babel/cli": "7.0.0-beta.46", + "@babel/core": "7.0.0-beta.46", + "@babel/node": "7.0.0-beta.46", + "@babel/preset-env": "7.0.0-beta.46", + "@babel/preset-es2015": "7.0.0-beta.46", + "@babel/preset-react": "7.0.0-beta.46", + "@babel/preset-stage-2": "7.0.0-beta.46", "@reactioncommerce/eslint-config": "^1.0.1", "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^8.2.1", - "babel-jest": "^22.4.1", - "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-inline-import": "^2.0.6", - "babel-plugin-lodash": "^3.3.2", - "babel-plugin-module-resolver": "^3.1.0", - "babel-plugin-rewire-exports": "^0.3.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-preset-meteor": "7.0.0-beta.38-1", + "babel-eslint": "8.2.3", + "babel-jest": "22.4.4", + "babel-plugin-dynamic-import-node": "1.2.0", + "babel-plugin-inline-import": "2.0.6", + "babel-plugin-lodash": "3.3.2", + "babel-plugin-module-resolver": "3.1.1", + "babel-plugin-rewire-exports": "0.3.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-preset-meteor": "7.0.0-beta.46-1", "chai": "^4.1.2", "enzyme": "^3.3.0", "enzyme-to-json": "^3.3.1", @@ -243,7 +243,12 @@ } } ], - "@babel/preset-stage-2" + [ + "@babel/preset-stage-2", + { + "decoratorsLegacy": true + } + ] ], "plugins": [ "babel-plugin-inline-import", @@ -277,7 +282,12 @@ } } ], - "@babel/preset-stage-2" + [ + "@babel/preset-stage-2", + { + "decoratorsLegacy": true + } + ] ], "plugins": [ "rewire-exports", @@ -302,8 +312,7 @@ ] ] } - }, - "presets": [] + } }, "jest": {}, "eslintConfig": { From 44bee7e3501760e3ff07654ba78753d02bd9ff0b Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 11:03:51 -0500 Subject: [PATCH 072/201] refactor: removed unneeded autovalues and import of the helpers from a few shcemas --- imports/collections/schemas/cart.js | 2 +- imports/collections/schemas/inventory.js | 1 - imports/collections/schemas/products.js | 9 +++------ imports/collections/schemas/registry.js | 2 -- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/imports/collections/schemas/cart.js b/imports/collections/schemas/cart.js index 44a2b48b98e..7f8d117bfdb 100644 --- a/imports/collections/schemas/cart.js +++ b/imports/collections/schemas/cart.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { createdAtAutoValue, shopIdAutoValueForCart, updatedAtAutoValue } from "./helpers"; +import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Payment } from "./payments"; import { Product, ProductVariant } from "./products"; import { Shipment, ShippingParcel } from "./shipping"; diff --git a/imports/collections/schemas/inventory.js b/imports/collections/schemas/inventory.js index 5dcb1da9739..aac1cca4e4c 100644 --- a/imports/collections/schemas/inventory.js +++ b/imports/collections/schemas/inventory.js @@ -29,7 +29,6 @@ export const Inventory = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValue, index: 1, label: "Inventory ShopId" }, diff --git a/imports/collections/schemas/products.js b/imports/collections/schemas/products.js index 09d8ee49c32..df8d7878d2b 100644 --- a/imports/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -3,7 +3,7 @@ import SimpleSchema from "simpl-schema"; import { Meteor } from "meteor/meteor"; import { registerSchema } from "@reactioncommerce/schemas"; import { ReactionProduct, getSlug } from "/lib/api"; -import { createdAtAutoValue, shopIdAutoValue, shopDefaultCountry, updatedAtAutoValue } from "./helpers"; +import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Event } from "./event"; import { Metafield } from "./metafield"; import { ShippingParcel } from "./shipping"; @@ -279,7 +279,6 @@ export const ProductVariant = new SimpleSchema({ }, "shopId": { type: String, - autoValue: shopIdAutoValue, index: 1, label: "Variant ShopId" }, @@ -356,8 +355,7 @@ export const ProductVariant = new SimpleSchema({ }, "originCountry": { type: String, - optional: true, - autoValue: shopDefaultCountry + optional: true } }); @@ -464,8 +462,7 @@ export const Product = new SimpleSchema({ }, "originCountry": { type: String, - optional: true, - autoValue: shopDefaultCountry + optional: true }, "type": { label: "Type", diff --git a/imports/collections/schemas/registry.js b/imports/collections/schemas/registry.js index ce74db7f776..3af2fd16db0 100644 --- a/imports/collections/schemas/registry.js +++ b/imports/collections/schemas/registry.js @@ -188,8 +188,6 @@ export const PackageConfig = new SimpleSchema({ "shopId": { type: String, index: 1, - // see: https://github.com/reactioncommerce/reaction/issues/646#issuecomment-169351842 - // autoValue: shopIdAutoValue, label: "PackageConfig ShopId", optional: true }, From 66c66852a32e0631591b394cae195bc594e57131 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 11:05:21 -0500 Subject: [PATCH 073/201] refactor: removed shopIdAutoValues from discount schemas, adding shopId to discounts inserts --- .../plugins/core/discounts/lib/collections/schemas/config.js | 2 +- .../plugins/core/discounts/lib/collections/schemas/discounts.js | 2 -- .../plugins/included/discount-codes/server/methods/methods.js | 1 + .../plugins/included/discount-rates/server/methods/methods.js | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/discounts/lib/collections/schemas/config.js b/imports/plugins/core/discounts/lib/collections/schemas/config.js index adeb5c67c70..d3b983c261b 100644 --- a/imports/plugins/core/discounts/lib/collections/schemas/config.js +++ b/imports/plugins/core/discounts/lib/collections/schemas/config.js @@ -1,5 +1,5 @@ import { registerSchema } from "@reactioncommerce/schemas"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { Discounts } from "./discounts"; /** diff --git a/imports/plugins/core/discounts/lib/collections/schemas/discounts.js b/imports/plugins/core/discounts/lib/collections/schemas/discounts.js index 07f5fef89cb..e65446bf511 100644 --- a/imports/plugins/core/discounts/lib/collections/schemas/discounts.js +++ b/imports/plugins/core/discounts/lib/collections/schemas/discounts.js @@ -1,7 +1,6 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { shopIdAutoValue } from "/lib/collections/schemas/helpers"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -38,7 +37,6 @@ registerSchema("Transactions", Transactions); export const Discounts = new SimpleSchema({ "shopId": { type: String, - autoValue: shopIdAutoValue, index: 1, label: "Discounts shopId" }, diff --git a/imports/plugins/included/discount-codes/server/methods/methods.js b/imports/plugins/included/discount-codes/server/methods/methods.js index 5117291c079..e47e5f41090 100644 --- a/imports/plugins/included/discount-codes/server/methods/methods.js +++ b/imports/plugins/included/discount-codes/server/methods/methods.js @@ -128,6 +128,7 @@ export const methods = { if (docId) return Meteor.call("discounts/editCode", { _id: docId, modifier: doc }); if (!Reaction.hasPermission("discount-codes")) throw new Meteor.Error("access-denied", "Access Denied"); + doc.shopId = Reaction.getShopId(); return Discounts.insert(doc); }, diff --git a/imports/plugins/included/discount-rates/server/methods/methods.js b/imports/plugins/included/discount-rates/server/methods/methods.js index f6c7899e531..024c86f1301 100644 --- a/imports/plugins/included/discount-rates/server/methods/methods.js +++ b/imports/plugins/included/discount-rates/server/methods/methods.js @@ -54,6 +54,7 @@ export const methods = { if (docId) return Meteor.call("discounts/editRate", { _id: docId, modifier: doc }); if (!Reaction.hasPermission("discount-rates")) throw new Meteor.Error("access-denied", "Access Denied"); + doc.shppId = Reaction.getShopId(); return Discounts.insert(doc); }, From c976084a4fb426a9cbaa6059cbccbe60919ebd6b Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 11:07:09 -0500 Subject: [PATCH 074/201] refactor: removed shopIdAutoValues from taxes schemas, added shopId to taxes collection inserts --- imports/plugins/core/taxes/lib/collections/schemas/config.js | 2 +- imports/plugins/core/taxes/lib/collections/schemas/taxes.js | 2 -- imports/plugins/core/taxes/server/methods/methods.js | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/taxes/lib/collections/schemas/config.js b/imports/plugins/core/taxes/lib/collections/schemas/config.js index 4606382f806..6a8d5fdadb8 100644 --- a/imports/plugins/core/taxes/lib/collections/schemas/config.js +++ b/imports/plugins/core/taxes/lib/collections/schemas/config.js @@ -1,5 +1,5 @@ import { registerSchema } from "@reactioncommerce/schemas"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { Taxes } from "./taxes"; /** diff --git a/imports/plugins/core/taxes/lib/collections/schemas/taxes.js b/imports/plugins/core/taxes/lib/collections/schemas/taxes.js index a4de41639bd..0618fdf917f 100644 --- a/imports/plugins/core/taxes/lib/collections/schemas/taxes.js +++ b/imports/plugins/core/taxes/lib/collections/schemas/taxes.js @@ -1,7 +1,6 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { shopIdAutoValue } from "/lib/collections/schemas/helpers"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -13,7 +12,6 @@ import { registerSchema } from "@reactioncommerce/schemas"; export const Taxes = new SimpleSchema({ "shopId": { type: String, - autoValue: shopIdAutoValue, index: 1, label: "Taxes shopId" }, diff --git a/imports/plugins/core/taxes/server/methods/methods.js b/imports/plugins/core/taxes/server/methods/methods.js index 41487fb248a..8d4a970e0ec 100644 --- a/imports/plugins/core/taxes/server/methods/methods.js +++ b/imports/plugins/core/taxes/server/methods/methods.js @@ -47,6 +47,7 @@ export const methods = { if (docId) return Meteor.call("taxes/editRate", { _id: docId, modifier: doc }); if (!Reaction.hasPermission("taxes")) throw new Meteor.Error("access-denied", "Access Denied"); + doc.shopId = Reaction.getShopId(); return Taxes.insert(doc); }, From 91db0a0227ca609414fc49f1b7c21f37bf9004ad Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 11:08:17 -0500 Subject: [PATCH 075/201] refactor: updated schema imports to the root schema and not to the actual schema export --- .../core/templates/lib/collections/schemas/emailtemplates.js | 2 -- .../included/search-mongo/lib/collections/schemas/search.js | 2 +- .../included/shipping-shippo/lib/collections/schemas/shippo.js | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/imports/plugins/core/templates/lib/collections/schemas/emailtemplates.js b/imports/plugins/core/templates/lib/collections/schemas/emailtemplates.js index 97cc2917713..662cfd32d2b 100644 --- a/imports/plugins/core/templates/lib/collections/schemas/emailtemplates.js +++ b/imports/plugins/core/templates/lib/collections/schemas/emailtemplates.js @@ -2,7 +2,6 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; import { Templates } from "/lib/collections"; -import { shopIdAutoValue } from "/lib/collections/schemas/helpers"; import { registerSchema } from "@reactioncommerce/schemas"; /** @@ -15,7 +14,6 @@ export const EmailTemplates = new SimpleSchema({ "shopId": { type: String, index: 1, - autoValue: shopIdAutoValue, label: "Template ShopId" }, "name": { diff --git a/imports/plugins/included/search-mongo/lib/collections/schemas/search.js b/imports/plugins/included/search-mongo/lib/collections/schemas/search.js index d5c7f2eda04..c39ed004c55 100644 --- a/imports/plugins/included/search-mongo/lib/collections/schemas/search.js +++ b/imports/plugins/included/search-mongo/lib/collections/schemas/search.js @@ -1,5 +1,5 @@ import SimpleSchema from "simpl-schema"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/shipping-shippo/lib/collections/schemas/shippo.js b/imports/plugins/included/shipping-shippo/lib/collections/schemas/shippo.js index 071b5c6399f..89a1458185f 100644 --- a/imports/plugins/included/shipping-shippo/lib/collections/schemas/shippo.js +++ b/imports/plugins/included/shipping-shippo/lib/collections/schemas/shippo.js @@ -1,4 +1,4 @@ -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** From 69cf7fbc550f853629c7e21f41b9b55c792df0f0 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 11:09:22 -0500 Subject: [PATCH 076/201] refactor: updated Reaction.Importer methods and collections to add shopId to data, updated usage --- server/api/core/importer.js | 26 +++++++++++++++++--------- server/api/core/loadSettings.js | 5 +---- server/api/core/templates.js | 3 ++- server/startup/i18n.js | 4 +++- server/startup/load-data.js | 13 ++++++++----- 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/server/api/core/importer.js b/server/api/core/importer.js index 8d3c555dc65..deee32ebf81 100644 --- a/server/api/core/importer.js +++ b/server/api/core/importer.js @@ -237,13 +237,14 @@ Importer.buffer = function (collection) { * * Push the variant if it doesn't exist. * * Update the variant. */ -Importer.product = function (key, product) { +Importer.product = function (key, product, shopId) { // If product has an _id, we use it to look up the product before // updating the product so as to avoid trying to change the _id // which is immutable. if (product._id && !key._id) { key._id = product._id; } + product.shopId = shopId; return this.object(Collections.Products, key, product); }; @@ -277,14 +278,16 @@ Importer.package = function (pkg, shopId) { * @memberof Importer * @summary Store a template in the import buffer. * @param {Object} templateInfo The template data to be updated + * @param {String} shopId The package data to be updated * @returns {undefined} */ -Importer.template = function (templateInfo) { +Importer.template = function (templateInfo, shopId) { check(templateInfo, Object); const key = { name: templateInfo.name, - type: templateInfo.type || "template" + type: templateInfo.type || "template", + shopId }; return this.object(Collections.Templates, key, templateInfo); @@ -297,11 +300,12 @@ Importer.template = function (templateInfo) { * @summary Store a translation in the import buffer. * @param {Object} key A key to look up the translation * @param {Object} translation The translation data to be updated + * @param {String} shopId The package data to be updated * @returns {Object} updated translation buffer */ -Importer.translation = function (key, translation) { +Importer.translation = function (key, translation, shopId) { const modifiedKey = Object.assign(key, { ns: translation.ns }); - return this.object(Collections.Translations, modifiedKey, translation); + return this.object(Collections.Translations, modifiedKey, { ...translation, shopId }); }; /** @@ -345,7 +349,7 @@ Importer.layout = function (layout, shopId) { * @param {Object} shipping The shipping data to be updated * @returns {Object} this shipping */ -Importer.shipping = function (key, shipping) { +Importer.shipping = function (key, shipping, shopId) { let importKey = {}; // // we have a bit of a strange structure in Shipping @@ -361,6 +365,8 @@ Importer.shipping = function (key, shipping) { shopId: result.shopId }; delete shipping.methods; + } else { + shipping.shopId = shopId; } const modifiedKey = Object.assign({}, key, importKey); return this.object(Collections.Shipping, modifiedKey, shipping); @@ -375,7 +381,8 @@ Importer.shipping = function (key, shipping) { * @param {Object} tag The tag data to be updated * @returns {Object} this tag */ -Importer.tag = function (key, tag) { +Importer.tag = function (key, tag, shopId) { + tag.shopId = shopId; return this.object(Collections.Tags, key, tag); }; @@ -436,11 +443,12 @@ Importer.object = function (collection, key, object) { * @param {Object[]} json An array containing the import documents * @param {string[]} keys Fields that should be used as the import key. * @param {Function} callback A callback accepting two parameters. + * @param {Array} cbArgs TODO: * The callback should accept a key document to consult the database as a first * parameter and an update document as the second parameter. * @returns {undefined} */ -Importer.process = function (json, keys, callback) { +Importer.process = function (json, keys, callback, cbArgs) { check(json, String); check(keys, Array); check(callback, Function); @@ -452,7 +460,7 @@ Importer.process = function (json, keys, callback) { for (let j = 0; j < keys.length; j += 1) { key[keys[j]] = array[i][keys[j]]; } - callback.call(this, key, array[i]); + callback.call(this, key, array[i], ...cbArgs); } }; diff --git a/server/api/core/loadSettings.js b/server/api/core/loadSettings.js index 999648cc224..baa9d59919f 100644 --- a/server/api/core/loadSettings.js +++ b/server/api/core/loadSettings.js @@ -42,10 +42,7 @@ export function loadSettings(json) { exists = Packages.findOne({ name: item.name }); - // - // TODO migrate functionality to Reaction.Importer - // Reaction.Importer.package(item, shopId); - // + // insert into the Packages collection if (exists) { result = Packages.upsert({ diff --git a/server/api/core/templates.js b/server/api/core/templates.js index 112241d6931..4693acd99e8 100644 --- a/server/api/core/templates.js +++ b/server/api/core/templates.js @@ -279,10 +279,11 @@ export function resetRegisteredTemplates() { */ export function initTemplates() { Hooks.Events.add("afterCoreInit", () => { + const shopId = Reaction.getShopId(); Assets.find({ type: "template" }).forEach((t) => { Logger.debug(`Importing ${t.name} template`); if (t.content) { - Reaction.Importer.template(JSON.parse(t.content)); + Reaction.Importer.template(JSON.parse(t.content), shopId); } else { Logger.debug(`No template content found for ${t.name} asset`); } diff --git a/server/startup/i18n.js b/server/startup/i18n.js index f2db95a2dd0..cdb4672f5a1 100644 --- a/server/startup/i18n.js +++ b/server/startup/i18n.js @@ -185,11 +185,13 @@ export function importAllTranslations() { Logger.debug("All translation assets updated"); + const shopId = Reaction.getShopId(); + // Then loop through those I18N assets and import them Assets.find({ type: "i18n" }).forEach((t) => { Logger.debug(`Importing ${t.name} translation for "${t.ns}"`); if (t.content) { - Reaction.Importer.process(t.content, ["i18n"], Reaction.Importer.translation); + Reaction.Importer.process(t.content, ["i18n"], Reaction.Importer.translation, [shopId]); } else { Logger.debug(`No translation content found for ${t.name} - ${t.ns} asset`); } diff --git a/server/startup/load-data.js b/server/startup/load-data.js index ec2b4df4be5..eee3e6e4057 100644 --- a/server/startup/load-data.js +++ b/server/startup/load-data.js @@ -10,8 +10,9 @@ export default function loadData() { */ Logger.info("Load default data from /private/data/"); + let shopId = Reaction.getShopId(); // Since import overwrites, only import Shops when none exist - if (!Reaction.getShopId()) { + if (!shopId) { try { Logger.debug("Loading Shop Data"); Reaction.Importer.process(Assets.getText("data/Shops.json"), ["name"], Reaction.Importer.shop); @@ -21,30 +22,32 @@ export default function loadData() { Logger.error(error, "Bypassing loading Shop default data"); } + shopId = Reaction.getShopId(); // make sure the default shop has been created before going further - while (!Reaction.getShopId()) { + while (!shopId) { Logger.debug("Loading default shop, waiting until it's ready before moving on..."); Meteor._sleepForMs(1000); + shopId = Reaction.getShopId(); } } try { Logger.debug("Loading Shipping Data"); - Fixture.process(Assets.getText("data/Shipping.json"), ["name"], Reaction.Importer.shipping); + Fixture.process(Assets.getText("data/Shipping.json"), ["name"], Reaction.Importer.shipping, [shopId]); } catch (error) { Logger.error(error, "Bypassing loading Shipping default data."); } try { Logger.debug("Loading Product Data"); - Fixture.process(Assets.getText("data/Products.json"), ["title"], Reaction.Importer.product); + Fixture.process(Assets.getText("data/Products.json"), ["title"], Reaction.Importer.product, [shopId]); } catch (error) { Logger.error(error, "Bypassing loading Products default data."); } try { Logger.debug("Loading Tag Data"); - Fixture.process(Assets.getText("data/Tags.json"), ["name"], Reaction.Importer.tag); + Fixture.process(Assets.getText("data/Tags.json"), ["name"], Reaction.Importer.tag, [shopId]); } catch (error) { Logger.error(error, "Bypassing loading Tags default data."); } From 10d1f4ec5785cf09ff8ef384ec2bf59757010413 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 12:17:10 -0500 Subject: [PATCH 077/201] refactor: added missing shopId to Product inserts --- imports/plugins/core/catalog/server/methods/catalog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index d423f464e9e..0d739d11ea6 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -526,6 +526,7 @@ Meteor.methods({ const assembledVariant = Object.assign(newVariant || {}, { _id: newVariantId, ancestors, + shopId: product.shopId, type: "variant" }); From 143ddf7b321d2b2f3e50ce08b2539b4d482ef7e0 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 23 May 2018 13:31:09 -0500 Subject: [PATCH 078/201] fix(Meteor 1.7): fix less paths with symlinks https://github.com/meteor/meteor/issues/9899 --- imports/module_symlinks/README.md | 3 + imports/module_symlinks/bootstrap-less | 1 + imports/module_symlinks/font-awesome-less | 1 + imports/module_symlinks/react-select-less | 1 + .../default-theme/client/styles/fonts.less | 24 +++--- .../default-theme/client/styles/main.less | 82 +++++++++---------- 6 files changed, 59 insertions(+), 53 deletions(-) create mode 100644 imports/module_symlinks/README.md create mode 120000 imports/module_symlinks/bootstrap-less create mode 120000 imports/module_symlinks/font-awesome-less create mode 120000 imports/module_symlinks/react-select-less diff --git a/imports/module_symlinks/README.md b/imports/module_symlinks/README.md new file mode 100644 index 00000000000..b66e09c8260 --- /dev/null +++ b/imports/module_symlinks/README.md @@ -0,0 +1,3 @@ +# Modules Symlinks Folder + +If you need access to some files in `node_modules`, symlink them into here. Refer to [the second bullet point here](https://github.com/meteor/meteor/blob/1aabda8fcf6dfbd31a1d11e6ff7d8b74e1defcf9/History.md#v17-2018-05-18) and [this commit comment](https://github.com/meteor/meteor/commit/c5302bb2ba609e5535dcce8647adf30e0a6f8daf) and [this issue](https://github.com/meteor/meteor/issues/9899). diff --git a/imports/module_symlinks/bootstrap-less b/imports/module_symlinks/bootstrap-less new file mode 120000 index 00000000000..1c68ddd3bc3 --- /dev/null +++ b/imports/module_symlinks/bootstrap-less @@ -0,0 +1 @@ +../../node_modules/bootstrap/less/ \ No newline at end of file diff --git a/imports/module_symlinks/font-awesome-less b/imports/module_symlinks/font-awesome-less new file mode 120000 index 00000000000..673b885f896 --- /dev/null +++ b/imports/module_symlinks/font-awesome-less @@ -0,0 +1 @@ +../../node_modules/font-awesome/less/ \ No newline at end of file diff --git a/imports/module_symlinks/react-select-less b/imports/module_symlinks/react-select-less new file mode 120000 index 00000000000..61c40098a05 --- /dev/null +++ b/imports/module_symlinks/react-select-less @@ -0,0 +1 @@ +../../node_modules/react-select/less/ \ No newline at end of file diff --git a/imports/plugins/included/default-theme/client/styles/fonts.less b/imports/plugins/included/default-theme/client/styles/fonts.less index 4c17222d27f..3eec3044809 100644 --- a/imports/plugins/included/default-theme/client/styles/fonts.less +++ b/imports/plugins/included/default-theme/client/styles/fonts.less @@ -1,17 +1,17 @@ // Font Awesome // Font files are transferred to /public/fonts in package.json postinstall script -@import "{}/node_modules/font-awesome/less/variables.less"; -@import "{}/node_modules/font-awesome/less/mixins.less"; -@import "{}/node_modules/font-awesome/less/core.less"; -@import "{}/node_modules/font-awesome/less/larger.less"; -@import "{}/node_modules/font-awesome/less/fixed-width.less"; -@import "{}/node_modules/font-awesome/less/list.less"; -@import "{}/node_modules/font-awesome/less/bordered-pulled.less"; -@import "{}/node_modules/font-awesome/less/animated.less"; -@import "{}/node_modules/font-awesome/less/rotated-flipped.less"; -@import "{}/node_modules/font-awesome/less/stacked.less"; -@import "{}/node_modules/font-awesome/less/icons.less"; -@import "{}/node_modules/font-awesome/less/screen-reader.less"; +@import "/imports/module_symlinks/font-awesome-less/variables.less"; +@import "/imports/module_symlinks/font-awesome-less/mixins.less"; +@import "/imports/module_symlinks/font-awesome-less/core.less"; +@import "/imports/module_symlinks/font-awesome-less/larger.less"; +@import "/imports/module_symlinks/font-awesome-less/fixed-width.less"; +@import "/imports/module_symlinks/font-awesome-less/list.less"; +@import "/imports/module_symlinks/font-awesome-less/bordered-pulled.less"; +@import "/imports/module_symlinks/font-awesome-less/animated.less"; +@import "/imports/module_symlinks/font-awesome-less/rotated-flipped.less"; +@import "/imports/module_symlinks/font-awesome-less/stacked.less"; +@import "/imports/module_symlinks/font-awesome-less/icons.less"; +@import "/imports/module_symlinks/font-awesome-less/screen-reader.less"; // overwrite path from node_modules diff --git a/imports/plugins/included/default-theme/client/styles/main.less b/imports/plugins/included/default-theme/client/styles/main.less index 35aed6a3b3d..2b91a63d461 100644 --- a/imports/plugins/included/default-theme/client/styles/main.less +++ b/imports/plugins/included/default-theme/client/styles/main.less @@ -3,57 +3,57 @@ // // Core variables and mixins -@import "{}/node_modules/bootstrap/less/variables.less"; -@import "{}/node_modules/bootstrap/less/mixins.less"; +@import "/imports/module_symlinks/bootstrap-less/variables.less"; +@import "/imports/module_symlinks/bootstrap-less/mixins.less"; // Reset and dependencies -@import "{}/node_modules/bootstrap/less/normalize.less"; -@import "{}/node_modules/bootstrap/less/print.less"; -@import "{}/node_modules/bootstrap/less/glyphicons.less"; +@import "/imports/module_symlinks/bootstrap-less/normalize.less"; +@import "/imports/module_symlinks/bootstrap-less/print.less"; +@import "/imports/module_symlinks/bootstrap-less/glyphicons.less"; // Core CSS -@import "{}/node_modules/bootstrap/less/scaffolding.less"; -@import "{}/node_modules/bootstrap/less/type.less"; -@import "{}/node_modules/bootstrap/less/code.less"; -@import "{}/node_modules/bootstrap/less/grid.less"; -@import "{}/node_modules/bootstrap/less/tables.less"; -@import "{}/node_modules/bootstrap/less/forms.less"; -@import "{}/node_modules/bootstrap/less/buttons.less"; +@import "/imports/module_symlinks/bootstrap-less/scaffolding.less"; +@import "/imports/module_symlinks/bootstrap-less/type.less"; +@import "/imports/module_symlinks/bootstrap-less/code.less"; +@import "/imports/module_symlinks/bootstrap-less/grid.less"; +@import "/imports/module_symlinks/bootstrap-less/tables.less"; +@import "/imports/module_symlinks/bootstrap-less/forms.less"; +@import "/imports/module_symlinks/bootstrap-less/buttons.less"; // Components -@import "{}/node_modules/bootstrap/less/component-animations.less"; -@import "{}/node_modules/bootstrap/less/dropdowns.less"; -@import "{}/node_modules/bootstrap/less/button-groups.less"; -@import "{}/node_modules/bootstrap/less/input-groups.less"; -@import "{}/node_modules/bootstrap/less/navs.less"; -@import "{}/node_modules/bootstrap/less/navbar.less"; -@import "{}/node_modules/bootstrap/less/breadcrumbs.less"; -@import "{}/node_modules/bootstrap/less/pagination.less"; -@import "{}/node_modules/bootstrap/less/pager.less"; -@import "{}/node_modules/bootstrap/less/labels.less"; -@import "{}/node_modules/bootstrap/less/badges.less"; -@import "{}/node_modules/bootstrap/less/jumbotron.less"; -@import "{}/node_modules/bootstrap/less/thumbnails.less"; -@import "{}/node_modules/bootstrap/less/alerts.less"; -@import "{}/node_modules/bootstrap/less/progress-bars.less"; -@import "{}/node_modules/bootstrap/less/media.less"; -@import "{}/node_modules/bootstrap/less/list-group.less"; -@import "{}/node_modules/bootstrap/less/panels.less"; -@import "{}/node_modules/bootstrap/less/responsive-embed.less"; -@import "{}/node_modules/bootstrap/less/wells.less"; -@import "{}/node_modules/bootstrap/less/close.less"; +@import "/imports/module_symlinks/bootstrap-less/component-animations.less"; +@import "/imports/module_symlinks/bootstrap-less/dropdowns.less"; +@import "/imports/module_symlinks/bootstrap-less/button-groups.less"; +@import "/imports/module_symlinks/bootstrap-less/input-groups.less"; +@import "/imports/module_symlinks/bootstrap-less/navs.less"; +@import "/imports/module_symlinks/bootstrap-less/navbar.less"; +@import "/imports/module_symlinks/bootstrap-less/breadcrumbs.less"; +@import "/imports/module_symlinks/bootstrap-less/pagination.less"; +@import "/imports/module_symlinks/bootstrap-less/pager.less"; +@import "/imports/module_symlinks/bootstrap-less/labels.less"; +@import "/imports/module_symlinks/bootstrap-less/badges.less"; +@import "/imports/module_symlinks/bootstrap-less/jumbotron.less"; +@import "/imports/module_symlinks/bootstrap-less/thumbnails.less"; +@import "/imports/module_symlinks/bootstrap-less/alerts.less"; +@import "/imports/module_symlinks/bootstrap-less/progress-bars.less"; +@import "/imports/module_symlinks/bootstrap-less/media.less"; +@import "/imports/module_symlinks/bootstrap-less/list-group.less"; +@import "/imports/module_symlinks/bootstrap-less/panels.less"; +@import "/imports/module_symlinks/bootstrap-less/responsive-embed.less"; +@import "/imports/module_symlinks/bootstrap-less/wells.less"; +@import "/imports/module_symlinks/bootstrap-less/close.less"; // Components w/ JavaScript -@import "{}/node_modules/bootstrap/less/modals.less"; -// @import "{}/node_modules/bootstrap/less/tooltip.less"; -@import "{}/node_modules/bootstrap/less/popovers.less"; -@import "{}/node_modules/bootstrap/less/carousel.less"; -@import "{}/node_modules/react-select/less/default.less"; +@import "/imports/module_symlinks/bootstrap-less/modals.less"; +// @import "/imports/module_symlinks/bootstrap-less/tooltip.less"; +@import "/imports/module_symlinks/bootstrap-less/popovers.less"; +@import "/imports/module_symlinks/bootstrap-less/carousel.less"; +@import "/imports/module_symlinks/react-select-less/default.less"; // Utility classes -@import "{}/node_modules/bootstrap/less/utilities.less"; -@import "{}/node_modules/bootstrap/less/responsive-utilities.less"; +@import "/imports/module_symlinks/bootstrap-less/utilities.less"; +@import "/imports/module_symlinks/bootstrap-less/responsive-utilities.less"; // ----------------------------------------------------------------------------- @@ -156,4 +156,4 @@ @import "search/sortable-table.less"; // React-select -@import "{}/node_modules/react-select/less/select.less"; +@import "/imports/module_symlinks/react-select-less/select.less"; From a19031a5d39101f71c07ee54e0500664e294e3d4 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 23 May 2018 13:50:32 -0500 Subject: [PATCH 079/201] fix(Meteor 1.7): updated Mongo lib createIndex API --- .../server/methods/searchcollections.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/imports/plugins/included/search-mongo/server/methods/searchcollections.js b/imports/plugins/included/search-mongo/server/methods/searchcollections.js index 2ac5f68cae0..4d45d6b28a0 100644 --- a/imports/plugins/included/search-mongo/server/methods/searchcollections.js +++ b/imports/plugins/included/search-mongo/server/methods/searchcollections.js @@ -128,7 +128,9 @@ export function buildProductSearch(cb) { const rawProductSearchCollection = ProductSearch.rawCollection(); rawProductSearchCollection.dropIndexes().catch(handleIndexUpdateFailures); - rawProductSearchCollection.createIndex(indexObject, weightObject, getSearchLanguage()).catch(handleIndexUpdateFailures); + const options = getSearchLanguage(); + options.weights = weightObject; + rawProductSearchCollection.createIndex(indexObject, options).catch(handleIndexUpdateFailures); if (cb) { cb(); } @@ -143,7 +145,9 @@ export function buildEmptyProductSearch() { } const rawProductSearchCollection = ProductSearch.rawCollection(); rawProductSearchCollection.dropIndexes().catch(handleIndexUpdateFailures); - rawProductSearchCollection.createIndex(indexObject, weightObject, getSearchLanguage()).catch(handleIndexUpdateFailures); + const options = getSearchLanguage(); + options.weights = weightObject; + rawProductSearchCollection.createIndex(indexObject, options).catch(handleIndexUpdateFailures); } export function rebuildProductSearchIndex(cb) { @@ -155,7 +159,9 @@ export function rebuildProductSearchIndex(cb) { } const rawProductSearchCollection = ProductSearch.rawCollection(); rawProductSearchCollection.dropIndexes().catch(handleIndexUpdateFailures); - rawProductSearchCollection.createIndex(indexObject, weightObject, getSearchLanguage()).catch(handleIndexUpdateFailures); + const options = getSearchLanguage(); + options.weights = weightObject; + rawProductSearchCollection.createIndex(indexObject, options).catch(handleIndexUpdateFailures); if (cb) { cb(); } @@ -169,7 +175,9 @@ export function ensureProductSearchIndex() { indexObject[field] = "text"; } const rawProductSearchCollection = ProductSearch.rawCollection(); - rawProductSearchCollection.createIndex(indexObject, weightObject, getSearchLanguage()).catch(handleIndexUpdateFailures); + const options = getSearchLanguage(); + options.weights = weightObject; + rawProductSearchCollection.createIndex(indexObject, options).catch(handleIndexUpdateFailures); } export function buildOrderSearchRecord(orderId) { From 8e4b2e1d1840279c2fb908cda614dc3b8e5259e4 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Wed, 23 May 2018 14:10:14 -0700 Subject: [PATCH 080/201] add media to tag schema --- lib/collections/schemas/tags.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/collections/schemas/tags.js b/lib/collections/schemas/tags.js index 1ef727f7e80..7804db92ea7 100644 --- a/lib/collections/schemas/tags.js +++ b/lib/collections/schemas/tags.js @@ -83,6 +83,10 @@ export const Tag = new SimpleSchema({ autoValue() { return new Date(); } + }, + "media": { + type: Object, + blackbox: true } }, { check, tracker: Tracker }); From e1dc5ca3dfe8973b5fae9a9c3aeb9419fcc26f38 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 23 May 2018 16:20:34 -0500 Subject: [PATCH 081/201] chore: undo accidental docker-compose version change --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 72ebb680c05..ec8d993b91c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ # The local files are mounted into the created container. # Usage: docker-compose up [-d] -version: '3.6.3' +version: '3.4' networks: reaction-api: From 84b818e16497afcad18c59ff27178b5e36f02273 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Wed, 23 May 2018 15:38:52 -0700 Subject: [PATCH 082/201] add individual tag query to graphql --- .../catalog/server/no-meteor/queries/tag.js | 20 +++++++++++++++++++ .../plugins/core/graphql/server/queries.js | 2 ++ .../server/resolvers/tag/Query/index.js | 2 ++ .../graphql/server/resolvers/tag/Query/tag.js | 16 +++++++++++++++ .../core/graphql/server/schemas/tag.graphql | 5 +++++ lib/collections/schemas/tags.js | 3 ++- 6 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 imports/plugins/core/catalog/server/no-meteor/queries/tag.js create mode 100644 imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js diff --git a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js new file mode 100644 index 00000000000..b30fcbfd71f --- /dev/null +++ b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js @@ -0,0 +1,20 @@ +/** + * @name tag + * @method + * @memberof Catalog/NoMeteorQueries + * @summary query the Tags collection by shop ID and optionally by isTopLevel + * @param {Object} context - an object containing the per-request state + * @param {String} shopId - ID of shop to query + * @param {Object} [params] - Additional options for the query + * @param {Boolean} [params.isTopLevel] - If set, look for `isTopLevel` matching this value + * @param {Boolean} [params.shouldIncludeDeleted] - Whether or not to include `isDeleted=true` tags. Default is `false` + * @return {Promise} - A MongoDB cursor for the proper query + */ +export default async function tag(context, tagId) { + const { collections } = context; + + const { Tags } = collections; + const query = { _id: tagId }; + + return Tags.findOne(query); +} diff --git a/imports/plugins/core/graphql/server/queries.js b/imports/plugins/core/graphql/server/queries.js index b79a7dd6cc2..e66790d648f 100644 --- a/imports/plugins/core/graphql/server/queries.js +++ b/imports/plugins/core/graphql/server/queries.js @@ -4,6 +4,7 @@ import { groupQuery, groupsQuery } from "/imports/plugins/core/accounts/server/m import { rolesQuery } from "/imports/plugins/core/accounts/server/methods/rolesQuery"; import catalogItems from "/imports/plugins/core/catalog/server/no-meteor/queries/catalogItems"; import catalogItemProduct from "/imports/plugins/core/catalog/server/no-meteor/queries/catalogItemProduct"; +import tag from "/imports/plugins/core/catalog/server/no-meteor/queries/tag"; import tags from "/imports/plugins/core/catalog/server/no-meteor/queries/tags"; import tagsByIds from "/imports/plugins/core/catalog/server/no-meteor/queries/tagsByIds"; import getShopIdByDomain from "/imports/plugins/core/accounts/server/no-meteor/getShopIdByDomain"; @@ -17,6 +18,7 @@ export default { roles: rolesQuery, shopAdministrators: shopAdministratorsQuery, shopById: (context, _id) => context.collections.Shops.findOne({ _id }), + tag, tags, tagsByIds, userAccount: userAccountQuery diff --git a/imports/plugins/core/graphql/server/resolvers/tag/Query/index.js b/imports/plugins/core/graphql/server/resolvers/tag/Query/index.js index c465dbc4588..e9ee0297732 100644 --- a/imports/plugins/core/graphql/server/resolvers/tag/Query/index.js +++ b/imports/plugins/core/graphql/server/resolvers/tag/Query/index.js @@ -1,5 +1,7 @@ +import tag from "./tag"; import tags from "./tags"; export default { + tag, tags }; diff --git a/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js b/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js new file mode 100644 index 00000000000..c3eefc97fa8 --- /dev/null +++ b/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js @@ -0,0 +1,16 @@ +import { decodeTagOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/tag"; + +/** + * @name "Query.tag" + * @method + * @memberof Tag/GraphQL + * @summary Returns the tags for a shop + * @param {Object} _ - unused + * @param {Object} args - arguments sent by the client {@link ConnectionArgs|See default connection arguments} + * @param {Object} context - an object containing the per-request state + * @return {Promise} Promise that resolves with array of Tag objects + */ +export default async function tag(_, { tagId }, context) { + const dbTagId = decodeTagOpaqueId(tagId); + return context.queries.tag(context, dbTagId); +} diff --git a/imports/plugins/core/graphql/server/schemas/tag.graphql b/imports/plugins/core/graphql/server/schemas/tag.graphql index cec0892e8f8..e6ab9a553b6 100644 --- a/imports/plugins/core/graphql/server/schemas/tag.graphql +++ b/imports/plugins/core/graphql/server/schemas/tag.graphql @@ -38,6 +38,9 @@ type Tag implements Node & Deletable { "The date and time at which this tag was last updated" updatedAt: DateTime! + + "A media object containing the hero image for a tag landing page" + media: ImageInfo } "The fields by which you are allowed to sort any query that returns a `TagConnection`" @@ -64,6 +67,8 @@ type TagConnection implements NodeConnection { } extend type Query { + tag(tagId: ID!): Tag + "Returns a paged list of tags for a shop. You must include a shopId when querying." tags( "Only tags associated with this shop will be returned" diff --git a/lib/collections/schemas/tags.js b/lib/collections/schemas/tags.js index 7804db92ea7..30e02d46d6f 100644 --- a/lib/collections/schemas/tags.js +++ b/lib/collections/schemas/tags.js @@ -86,7 +86,8 @@ export const Tag = new SimpleSchema({ }, "media": { type: Object, - blackbox: true + blackbox: true, + optional: true } }, { check, tracker: Tracker }); From e0e0a217581414d72b2f6b725f42b0bdb6adea4b Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 18:30:13 -0500 Subject: [PATCH 083/201] test: app-test passing with schema updates --- .../plugins/included/discount-rates/server/methods/methods.js | 2 +- .../server/publications/searchresults.app-test.js | 4 ++++ server/methods/accounts/accounts.app-test.js | 2 +- server/methods/accounts/accounts.js | 1 + server/methods/core/groups.app-test.js | 2 +- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/imports/plugins/included/discount-rates/server/methods/methods.js b/imports/plugins/included/discount-rates/server/methods/methods.js index 024c86f1301..4ab221b39d5 100644 --- a/imports/plugins/included/discount-rates/server/methods/methods.js +++ b/imports/plugins/included/discount-rates/server/methods/methods.js @@ -54,7 +54,7 @@ export const methods = { if (docId) return Meteor.call("discounts/editRate", { _id: docId, modifier: doc }); if (!Reaction.hasPermission("discount-rates")) throw new Meteor.Error("access-denied", "Access Denied"); - doc.shppId = Reaction.getShopId(); + doc.shopId = Reaction.getShopId(); return Discounts.insert(doc); }, diff --git a/imports/plugins/included/search-mongo/server/publications/searchresults.app-test.js b/imports/plugins/included/search-mongo/server/publications/searchresults.app-test.js index d94c32ff8b9..7c53b99fc34 100644 --- a/imports/plugins/included/search-mongo/server/publications/searchresults.app-test.js +++ b/imports/plugins/included/search-mongo/server/publications/searchresults.app-test.js @@ -165,6 +165,10 @@ describe("Order Search results", function () { }); }); + after(function () { + OrderSearch.remove({}); + }); + describe("order search", function () { it("should match orders when searching by email", function () { const roleStub = sinon.stub(Reaction, "hasPermission", () => true); diff --git a/server/methods/accounts/accounts.app-test.js b/server/methods/accounts/accounts.app-test.js index dcefa907c7b..a50fcee9636 100644 --- a/server/methods/accounts/accounts.app-test.js +++ b/server/methods/accounts/accounts.app-test.js @@ -584,7 +584,7 @@ describe("Account Meteor method ", function () { const newUser = Factory.create("user"); // create Account to go with new user - const newAccount = Factory.create("account", { _id: newUser.id, shopId: primaryShop.id }); + const newAccount = Factory.create("account", { _id: newUser.id, shopId: primaryShop._id }); // to resolve an issue in the onCreateUser hook, stub user creation sandbox.stub(MeteorAccount, "createUser", () => newUser._id); sandbox.stub(Accounts, "findOne", () => newAccount) diff --git a/server/methods/accounts/accounts.js b/server/methods/accounts/accounts.js index 773ea9d72e3..345b54746d0 100644 --- a/server/methods/accounts/accounts.js +++ b/server/methods/accounts/accounts.js @@ -387,6 +387,7 @@ export function addressBookAdd(address, accountUserId) { }; const accountsUpdateQuery = { $set: { + shopId: Reaction.getShopId(), userId }, $addToSet: { diff --git a/server/methods/core/groups.app-test.js b/server/methods/core/groups.app-test.js index 8eda92197b6..1c129e6dfde 100644 --- a/server/methods/core/groups.app-test.js +++ b/server/methods/core/groups.app-test.js @@ -41,7 +41,7 @@ describe("Group test", function () { shop = Factory.create("shop"); user = getUser(); // make the same user on Meteor.users available on Accounts - Accounts.upsert({ _id: user._id }, { $set: { userId: user._id } }); + Accounts.upsert({ _id: user._id }, { $set: { shopId: shop._id, userId: user._id } }); }); afterEach(function () { From 4228ceb658426885b3773248856cf6e0b3a4b8a5 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 18:32:18 -0500 Subject: [PATCH 084/201] refactor: updated server getSlug method to just import transliteration and not lazyLoad between the two options, updated shops and products schema to not use autovalues when creating slugs, updated fixtures and inserts to set slugs on shops and products --- imports/collections/schemas/products.js | 18 +--------- imports/collections/schemas/shops.js | 17 +--------- server/api/core/importer.js | 3 ++ server/api/core/utils.js | 34 ++----------------- server/imports/fixtures/products.js | 6 +++- server/methods/core/shop.js | 2 ++ .../product-publications.app-test.js | 3 ++ 7 files changed, 17 insertions(+), 66 deletions(-) diff --git a/imports/collections/schemas/products.js b/imports/collections/schemas/products.js index df8d7878d2b..3cddfca6355 100644 --- a/imports/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -550,23 +550,7 @@ export const Product = new SimpleSchema({ "handle": { type: String, optional: true, - index: 1, - autoValue() { - let slug = getSlug(this.value); - - if (!slug && this.siblingField("title").value) { - slug = getSlug(this.siblingField("title").value); - } else if (!slug) { - slug = this.siblingField("_id").value || Random.id(); - } - if (this.isInsert) { - return slug; - } else if (this.isUpsert) { - return { - $setOnInsert: slug - }; - } - } + index: 1 }, "changedHandleWas": { type: String, diff --git a/imports/collections/schemas/shops.js b/imports/collections/schemas/shops.js index 4b5d6959d47..7cf364f1bd6 100644 --- a/imports/collections/schemas/shops.js +++ b/imports/collections/schemas/shops.js @@ -1,6 +1,5 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { getSlug } from "/lib/api"; import { Email } from "./accounts"; import { Address } from "./address"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; @@ -246,21 +245,7 @@ export const Shop = new SimpleSchema({ "slug": { type: String, optional: true, - unique: true, - autoValue() { - let slug = getSlug(this.value); - - if (!slug && this.siblingField("name").value) { - slug = getSlug(this.siblingField("name").value); - } - if (this.isInsert) { - return slug; - } else if (this.isUpsert) { - return { - $setOnInsert: slug - }; - } - } + unique: true }, "merchantShops": { type: Array, diff --git a/server/api/core/importer.js b/server/api/core/importer.js index deee32ebf81..3a2c878f99f 100644 --- a/server/api/core/importer.js +++ b/server/api/core/importer.js @@ -4,6 +4,7 @@ import Random from "@reactioncommerce/random"; import { Mongo, MongoInternals } from "meteor/mongo"; import { EJSON } from "meteor/ejson"; import { check, Match } from "meteor/check"; +import { getSlug } from "/server/api/core/utils"; import * as Collections from "/lib/collections"; /** @@ -245,6 +246,7 @@ Importer.product = function (key, product, shopId) { key._id = product._id; } product.shopId = shopId; + product.handle = getSlug(product.title || product._id || Random.id()); return this.object(Collections.Products, key, product); }; @@ -318,6 +320,7 @@ Importer.translation = function (key, translation, shopId) { * @returns {Object} this shop */ Importer.shop = function (key, shop) { + shop.slug = getSlug(shop.name); return this.object(Collections.Shops, key, shop); }; diff --git a/server/api/core/utils.js b/server/api/core/utils.js index 6b936795e25..2282ad0f37e 100644 --- a/server/api/core/utils.js +++ b/server/api/core/utils.js @@ -1,27 +1,4 @@ -import { latinLangs, getShopLang } from "/lib/api/helpers"; - -// dynamic import of slugiy/transliteration.slugify -let slugify; -async function lazyLoadSlugify() { - let mod; - // getting the shops base language - const lang = getShopLang(); - // if slugify has been loaded but the language has changed - // to be a non latin based language then load transliteration - if (slugify && slugify.name === "replace" && latinLangs.indexOf(lang) === -1) { - mod = await import("transliteration"); - } else if (slugify) { - // if slugify/transliteration is loaded and no lang change - return; - } else if (latinLangs.indexOf(lang) >= 0) { - // if the shops language use latin based chars load slugify else load transliterations's slugify - mod = await import("slugify"); - } else { - mod = await import("transliteration"); - } - // slugify is exported to modules.default while transliteration is exported to modules.slugify - slugify = mod.default || mod.slugify; -} +import { slugify } from "transliteration"; /** * @name getSlug @@ -34,12 +11,5 @@ async function lazyLoadSlugify() { * @return {String} slugified string */ export function getSlug(slugString) { - let slug; - Promise.await(lazyLoadSlugify()); - if (slugString && slugify) { - slug = slugify(slugString.toLowerCase()); - } else { - slug = ""; - } - return slug; + return (typeof slugString === "string" && slugify(slugString)) || ""; } diff --git a/server/imports/fixtures/products.js b/server/imports/fixtures/products.js index fe591df674d..eddf29381d4 100755 --- a/server/imports/fixtures/products.js +++ b/server/imports/fixtures/products.js @@ -1,6 +1,7 @@ import faker from "faker"; import _ from "lodash"; import { Factory } from "meteor/dburles:factory"; +import { getSlug } from "server/api/core/utils"; import { Products, Tags } from "/lib/collections"; import { getShop } from "./shops"; import { Hooks } from "/server/api"; @@ -219,10 +220,13 @@ export default function () { max: 12.99 }; + const productTitle = faker.commerce.productName() + const product = { - title: faker.commerce.productName(), + title: productTitle, pageTitle: faker.lorem.sentence(), description: faker.lorem.paragraph(), + handle: getSlug(productTitle), type: "simple", vendor: faker.company.companyName(), price: priceRange, diff --git a/server/methods/core/shop.js b/server/methods/core/shop.js index c14e757bb7c..f8734779f0b 100644 --- a/server/methods/core/shop.js +++ b/server/methods/core/shop.js @@ -5,6 +5,7 @@ import { check, Match } from "meteor/check"; import { HTTP } from "meteor/http"; import { Job } from "/imports/plugins/core/job-collection/lib"; import { GeoCoder, Hooks, Logger } from "/server/api"; +import { getSlug } from "/server/api/core/utils"; import { Reaction } from "/lib/api"; import * as Collections from "/lib/collections"; import * as Schemas from "/lib/collections/schemas"; @@ -205,6 +206,7 @@ Meteor.methods({ shop.emails = shopUser.emails; shop.addressBook = shopAccount.addressBook; + shop.slug = getSlug(shop.name); Collections.Shops.simpleSchema(shop).validate(shop); diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 8321a8021b4..59640119dca 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -48,6 +48,7 @@ describe("Publication", function () { Collections.Products.insert({ ancestors: [], title: "My Little Pony", + handle: "my-little-pony", shopId, type: "simple", price: priceRangeA, @@ -60,6 +61,7 @@ describe("Publication", function () { Collections.Products.insert({ ancestors: [], title: "Shopkins - Peachy", + handle: "shopkins-peachy", shopId, price: priceRangeB, type: "simple", @@ -72,6 +74,7 @@ describe("Publication", function () { Collections.Products.insert({ ancestors: [], title: "Fresh Tomatoes", + handle: "fresh-tomatoes", shopId, price: priceRangeA, type: "simple", From b2197af838b433fd37e593c36e24f6ed51d50155 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 18:32:49 -0500 Subject: [PATCH 085/201] chore: removed some unneeded helper function imports --- imports/collections/schemas/accounts.js | 2 +- imports/collections/schemas/shipping.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/collections/schemas/accounts.js b/imports/collections/schemas/accounts.js index c9eecc1ef37..0f4be0803ff 100644 --- a/imports/collections/schemas/accounts.js +++ b/imports/collections/schemas/accounts.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { createdAtAutoValue, shopIdAutoValue, updatedAtAutoValue } from "./helpers"; +import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Address } from "./address"; import { Metafield } from "./metafield"; diff --git a/imports/collections/schemas/shipping.js b/imports/collections/schemas/shipping.js index d77d1b590bd..318bd2c7778 100644 --- a/imports/collections/schemas/shipping.js +++ b/imports/collections/schemas/shipping.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { shopIdAutoValue, schemaIdAutoValue } from "./helpers"; +import { schemaIdAutoValue } from "./helpers"; import { Address } from "./address"; import { Invoice } from "./payments"; import { PackageConfig } from "./registry"; From e2126bacdfc24c06a7f2e646b6018484a5ff6826 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 23 May 2018 19:11:08 -0500 Subject: [PATCH 086/201] chore: fixed eslint issues --- imports/collections/schemas/inventory.js | 2 +- imports/collections/schemas/products.js | 3 +-- imports/collections/schemas/tags.js | 2 +- server/imports/fixtures/products.js | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/imports/collections/schemas/inventory.js b/imports/collections/schemas/inventory.js index aac1cca4e4c..4c65aa2033f 100644 --- a/imports/collections/schemas/inventory.js +++ b/imports/collections/schemas/inventory.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { createdAtAutoValue, shopIdAutoValue, updatedAtAutoValue } from "./helpers"; +import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Document, Notes } from "./orders"; import { Metafield } from "./metafield"; import { Workflow } from "./workflow"; diff --git a/imports/collections/schemas/products.js b/imports/collections/schemas/products.js index 3cddfca6355..77ea8d7e627 100644 --- a/imports/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -1,8 +1,7 @@ -import Random from "@reactioncommerce/random"; import SimpleSchema from "simpl-schema"; import { Meteor } from "meteor/meteor"; import { registerSchema } from "@reactioncommerce/schemas"; -import { ReactionProduct, getSlug } from "/lib/api"; +import { ReactionProduct } from "/lib/api"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Event } from "./event"; import { Metafield } from "./metafield"; diff --git a/imports/collections/schemas/tags.js b/imports/collections/schemas/tags.js index 0210f08c85b..d2890e5cb75 100644 --- a/imports/collections/schemas/tags.js +++ b/imports/collections/schemas/tags.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; -import { createdAtAutoValue, shopIdAutoValue } from "./helpers"; +import { createdAtAutoValue } from "./helpers"; import { Metafield } from "./metafield"; /** diff --git a/server/imports/fixtures/products.js b/server/imports/fixtures/products.js index eddf29381d4..0059854df66 100755 --- a/server/imports/fixtures/products.js +++ b/server/imports/fixtures/products.js @@ -220,7 +220,7 @@ export default function () { max: 12.99 }; - const productTitle = faker.commerce.productName() + const productTitle = faker.commerce.productName(); const product = { title: productTitle, From f320cdc85a4d1b9408e0cba8b3888e45ec7960d1 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Wed, 23 May 2018 20:56:32 -0700 Subject: [PATCH 087/201] comment updates --- .../core/catalog/server/no-meteor/queries/tag.js | 14 ++++++++------ .../core/graphql/server/resolvers/tag/Query/tag.js | 13 ++++++++++--- .../core/graphql/server/schemas/tag.graphql | 3 ++- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js index b30fcbfd71f..4a473eedb54 100644 --- a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js +++ b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js @@ -2,19 +2,21 @@ * @name tag * @method * @memberof Catalog/NoMeteorQueries - * @summary query the Tags collection by shop ID and optionally by isTopLevel + * @summary query the Tags collection and return a tag by tagId * @param {Object} context - an object containing the per-request state - * @param {String} shopId - ID of shop to query - * @param {Object} [params] - Additional options for the query - * @param {Boolean} [params.isTopLevel] - If set, look for `isTopLevel` matching this value - * @param {Boolean} [params.shouldIncludeDeleted] - Whether or not to include `isDeleted=true` tags. Default is `false` + * @param {String} tagId - ID of tag to query * @return {Promise} - A MongoDB cursor for the proper query */ export default async function tag(context, tagId) { const { collections } = context; const { Tags } = collections; - const query = { _id: tagId }; + const query = { + $or: [ + { _id: tagId }, + { slug: tagId } + ] + }; return Tags.findOne(query); } diff --git a/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js b/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js index c3eefc97fa8..0d57cf1a81f 100644 --- a/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js +++ b/imports/plugins/core/graphql/server/resolvers/tag/Query/tag.js @@ -4,13 +4,20 @@ import { decodeTagOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/tag * @name "Query.tag" * @method * @memberof Tag/GraphQL - * @summary Returns the tags for a shop + * @summary Returns a tag for a shop, based on tag slug or ID * @param {Object} _ - unused * @param {Object} args - arguments sent by the client {@link ConnectionArgs|See default connection arguments} * @param {Object} context - an object containing the per-request state * @return {Promise} Promise that resolves with array of Tag objects */ -export default async function tag(_, { tagId }, context) { - const dbTagId = decodeTagOpaqueId(tagId); +export default async function tag(_, { slugOrId }, context) { + let dbTagId; + + try { + dbTagId = decodeTagOpaqueId(slugOrId); + } catch (e) { + dbTagId = slugOrId; + } + return context.queries.tag(context, dbTagId); } diff --git a/imports/plugins/core/graphql/server/schemas/tag.graphql b/imports/plugins/core/graphql/server/schemas/tag.graphql index e6ab9a553b6..7fe0c7fe707 100644 --- a/imports/plugins/core/graphql/server/schemas/tag.graphql +++ b/imports/plugins/core/graphql/server/schemas/tag.graphql @@ -67,7 +67,8 @@ type TagConnection implements NodeConnection { } extend type Query { - tag(tagId: ID!): Tag + "Returns a tag from a provided tag ID or slug" + tag(slugOrId: String): Tag "Returns a paged list of tags for a shop. You must include a shopId when querying." tags( From 291896af97f09dab1cb101a6412c0d18af02fa62 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Wed, 23 May 2018 20:57:44 -0700 Subject: [PATCH 088/201] revert accidental changes --- server/publications/collections/products.js | 147 ++------------------ 1 file changed, 8 insertions(+), 139 deletions(-) diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index 22427fd2235..db8662f20a9 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -4,9 +4,8 @@ import { Meteor } from "meteor/meteor"; import { Tracker } from "meteor/tracker"; import { check, Match } from "meteor/check"; import { registerSchema } from "@reactioncommerce/schemas"; -import { Products, Shops, Revisions, Catalog } from "/lib/collections"; +import { Products, Shops, Catalog } from "/lib/collections"; import { Reaction, Logger } from "/server/api"; -import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; // // define search filters as a schema so we can validate @@ -88,62 +87,6 @@ const catalogProductFiltersSchema = new SimpleSchema({ } }); -/** - * Broadens an existing selector to include all variants of the given top-level productIds - * Additionally considers the tags product filter, if given - * Can operate on the "Revisions" and the "Products" collection - * @memberof Helpers - * @param collectionName {String} - "Revisions" or "Products" - * @param selector {object} - the selector that should be extended - * @param productFilters { object } - the product filter (e.g. orginating from query parameters) - * @param productIds {String[]} - the top-level productIds we want to get the variants of. - */ -function extendSelectorWithVariants(collectionName, selector, productFilters, productIds) { - let prefix = ""; - - if (collectionName.toLowerCase() === "revisions") { - prefix = "documentData."; - } else if (collectionName.toLowerCase() !== "products") { - throw new Error(`Can't extend selector for collection ${collectionName}.`); - } - - // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) - const newSelector = _.omit(selector, ["hashtags", "ancestors"]); - if (productFilters && productFilters.tags) { - // Re-configure selector to pick either Variants of one of the top-level products, or the top-level products in the filter - _.extend(newSelector, { - $or: [{ - [`${prefix}ancestors`]: { - $in: productIds - } - }, { - $and: [{ - [`${prefix}hashtags`]: { - $in: productFilters.tags - } - }, { - [`${prefix}_id`]: { - $in: productIds - } - }] - }] - }); - } else { - _.extend(newSelector, { - $or: [{ - [`${prefix}ancestors`]: { - $in: productIds - } - }, { - [`${prefix}_id`]: { - $in: productIds - } - }] - }); - } - return newSelector; -} - function filterProducts(productFilters) { // if there are filter/params that don't match the schema // validate, catch except but return no results @@ -342,12 +285,8 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so const activeShopsIds = Shops.find({ $or: [ { "workflow.status": "active" }, - { _id: primaryShopId } + { _id: Reaction.getPrimaryShopId() } ] - }, { - fields: { - _id: 1 - } }).fetch().map((activeShop) => activeShop._id); const selector = filterProducts(productFilters); @@ -357,84 +296,14 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so } // We publish an admin version of this publication to admins of products who are in "Edit Mode" - // Authorized content curators for shops get special publication of the product - // with all relevant revisions all is one package // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for if (editMode && userAdminShopIds && Array.isArray(userAdminShopIds) && userAdminShopIds.length > 0) { selector.isVisible = { $in: [true, false, null, undefined] }; selector.shopId = { - $in: userAdminShopIds + $in: activeShopsIds }; - - // Get _ids of top-level products - const productIds = Products.find(selector, { - sort, - limit: productScrollLimit - }, { - fields: { - _id: 1 - } - }).map((product) => product._id); - - - const productSelectorWithVariants = extendSelectorWithVariants("Products", selector, productFilters, productIds); - - if (RevisionApi.isRevisionControlEnabled()) { - const revisionSelector = { - "workflow.status": { - $nin: [ - "revision/published" - ] - } - }; - const revisionSelectorWithVariants = extendSelectorWithVariants("Revisions", revisionSelector, productFilters, productIds); - const handle = Revisions.find(revisionSelectorWithVariants).observe({ - added: (revision) => { - this.added("Revisions", revision._id, revision); - if (revision.documentType === "product") { - // Check merge box (session collection view), if product is already in cache. - // If yes, we send a `changed`, otherwise `added`. I'm assuming - // that this._documents.Products is somewhat equivalent to - // the merge box Meteor.server.sessions[sessionId].getCollectionView("Products").documents - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } else { - this.added("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - changed: (revision) => { - this.changed("Revisions", revision._id, revision); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [revision] }); - } - } - }, - removed: (revision) => { - this.removed("Revisions", revision._id); - if (revision.documentType === "product") { - if (this._documents.Products && this._documents.Products[revision.documentId]) { - this.changed("Products", revision.documentId, { __revisions: [] }); - } - } - } - }); - - this.onStop(() => { - handle.stop(); - }); - - return Products.find(productSelectorWithVariants); - } - - // Revision control is disabled, but is admin - return Products.find(productSelectorWithVariants, { - sort, - limit: productScrollLimit - }); } // This is where the publication begins for non-admin users @@ -442,16 +311,14 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so const productIds = Products.find(selector, { sort, limit: productScrollLimit - }, { - fields: { - _id: 1 - } }).map((product) => product._id); - let newSelector = _.omit(selector, ["hashtags", "ancestors"]); + let newSelector = { ...selector }; // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) if (productFilters && Object.keys(productFilters).length === 0 && productFilters.constructor === Object) { + newSelector = _.omit(selector, ["hashtags", "ancestors"]); + if (productFilters.tags) { // Re-configure selector to pick either Variants of one of the top-level products, // or the top-level products in the filter @@ -499,6 +366,8 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so }); } } else { + newSelector = _.omit(selector, ["hashtags", "ancestors"]); + _.extend(newSelector, { $or: [{ ancestors: { From c5cfe778d8cf539068265b5e20777661b89283d1 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Wed, 23 May 2018 20:59:15 -0700 Subject: [PATCH 089/201] redo accidental changes --- server/publications/collections/products.js | 147 ++++++++++++++++++-- 1 file changed, 139 insertions(+), 8 deletions(-) diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index db8662f20a9..22427fd2235 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -4,8 +4,9 @@ import { Meteor } from "meteor/meteor"; import { Tracker } from "meteor/tracker"; import { check, Match } from "meteor/check"; import { registerSchema } from "@reactioncommerce/schemas"; -import { Products, Shops, Catalog } from "/lib/collections"; +import { Products, Shops, Revisions, Catalog } from "/lib/collections"; import { Reaction, Logger } from "/server/api"; +import { RevisionApi } from "/imports/plugins/core/revisions/lib/api/revisions"; // // define search filters as a schema so we can validate @@ -87,6 +88,62 @@ const catalogProductFiltersSchema = new SimpleSchema({ } }); +/** + * Broadens an existing selector to include all variants of the given top-level productIds + * Additionally considers the tags product filter, if given + * Can operate on the "Revisions" and the "Products" collection + * @memberof Helpers + * @param collectionName {String} - "Revisions" or "Products" + * @param selector {object} - the selector that should be extended + * @param productFilters { object } - the product filter (e.g. orginating from query parameters) + * @param productIds {String[]} - the top-level productIds we want to get the variants of. + */ +function extendSelectorWithVariants(collectionName, selector, productFilters, productIds) { + let prefix = ""; + + if (collectionName.toLowerCase() === "revisions") { + prefix = "documentData."; + } else if (collectionName.toLowerCase() !== "products") { + throw new Error(`Can't extend selector for collection ${collectionName}.`); + } + + // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) + const newSelector = _.omit(selector, ["hashtags", "ancestors"]); + if (productFilters && productFilters.tags) { + // Re-configure selector to pick either Variants of one of the top-level products, or the top-level products in the filter + _.extend(newSelector, { + $or: [{ + [`${prefix}ancestors`]: { + $in: productIds + } + }, { + $and: [{ + [`${prefix}hashtags`]: { + $in: productFilters.tags + } + }, { + [`${prefix}_id`]: { + $in: productIds + } + }] + }] + }); + } else { + _.extend(newSelector, { + $or: [{ + [`${prefix}ancestors`]: { + $in: productIds + } + }, { + [`${prefix}_id`]: { + $in: productIds + } + }] + }); + } + return newSelector; +} + function filterProducts(productFilters) { // if there are filter/params that don't match the schema // validate, catch except but return no results @@ -285,8 +342,12 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so const activeShopsIds = Shops.find({ $or: [ { "workflow.status": "active" }, - { _id: Reaction.getPrimaryShopId() } + { _id: primaryShopId } ] + }, { + fields: { + _id: 1 + } }).fetch().map((activeShop) => activeShop._id); const selector = filterProducts(productFilters); @@ -296,14 +357,84 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so } // We publish an admin version of this publication to admins of products who are in "Edit Mode" + // Authorized content curators for shops get special publication of the product + // with all relevant revisions all is one package // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for if (editMode && userAdminShopIds && Array.isArray(userAdminShopIds) && userAdminShopIds.length > 0) { selector.isVisible = { $in: [true, false, null, undefined] }; selector.shopId = { - $in: activeShopsIds + $in: userAdminShopIds }; + + // Get _ids of top-level products + const productIds = Products.find(selector, { + sort, + limit: productScrollLimit + }, { + fields: { + _id: 1 + } + }).map((product) => product._id); + + + const productSelectorWithVariants = extendSelectorWithVariants("Products", selector, productFilters, productIds); + + if (RevisionApi.isRevisionControlEnabled()) { + const revisionSelector = { + "workflow.status": { + $nin: [ + "revision/published" + ] + } + }; + const revisionSelectorWithVariants = extendSelectorWithVariants("Revisions", revisionSelector, productFilters, productIds); + const handle = Revisions.find(revisionSelectorWithVariants).observe({ + added: (revision) => { + this.added("Revisions", revision._id, revision); + if (revision.documentType === "product") { + // Check merge box (session collection view), if product is already in cache. + // If yes, we send a `changed`, otherwise `added`. I'm assuming + // that this._documents.Products is somewhat equivalent to + // the merge box Meteor.server.sessions[sessionId].getCollectionView("Products").documents + if (this._documents.Products && this._documents.Products[revision.documentId]) { + this.changed("Products", revision.documentId, { __revisions: [revision] }); + } else { + this.added("Products", revision.documentId, { __revisions: [revision] }); + } + } + }, + changed: (revision) => { + this.changed("Revisions", revision._id, revision); + if (revision.documentType === "product") { + if (this._documents.Products && this._documents.Products[revision.documentId]) { + this.changed("Products", revision.documentId, { __revisions: [revision] }); + } + } + }, + removed: (revision) => { + this.removed("Revisions", revision._id); + if (revision.documentType === "product") { + if (this._documents.Products && this._documents.Products[revision.documentId]) { + this.changed("Products", revision.documentId, { __revisions: [] }); + } + } + } + }); + + this.onStop(() => { + handle.stop(); + }); + + return Products.find(productSelectorWithVariants); + } + + // Revision control is disabled, but is admin + return Products.find(productSelectorWithVariants, { + sort, + limit: productScrollLimit + }); } // This is where the publication begins for non-admin users @@ -311,14 +442,16 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so const productIds = Products.find(selector, { sort, limit: productScrollLimit + }, { + fields: { + _id: 1 + } }).map((product) => product._id); - let newSelector = { ...selector }; + let newSelector = _.omit(selector, ["hashtags", "ancestors"]); // Remove hashtag filter from selector (hashtags are not applied to variants, we need to get variants) if (productFilters && Object.keys(productFilters).length === 0 && productFilters.constructor === Object) { - newSelector = _.omit(selector, ["hashtags", "ancestors"]); - if (productFilters.tags) { // Re-configure selector to pick either Variants of one of the top-level products, // or the top-level products in the filter @@ -366,8 +499,6 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so }); } } else { - newSelector = _.omit(selector, ["hashtags", "ancestors"]); - _.extend(newSelector, { $or: [{ ancestors: { From 565291600d586d6a53ed938521315a546d386e66 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Thu, 24 May 2018 08:17:30 -0700 Subject: [PATCH 090/201] change tagId to slugOrId --- .../plugins/core/catalog/server/no-meteor/queries/tag.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js index 4a473eedb54..cfd5c0816aa 100644 --- a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js +++ b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js @@ -4,17 +4,17 @@ * @memberof Catalog/NoMeteorQueries * @summary query the Tags collection and return a tag by tagId * @param {Object} context - an object containing the per-request state - * @param {String} tagId - ID of tag to query + * @param {String} slugOrId - ID or Slug of tag to query * @return {Promise} - A MongoDB cursor for the proper query */ -export default async function tag(context, tagId) { +export default async function tag(context, slugOrId) { const { collections } = context; const { Tags } = collections; const query = { $or: [ - { _id: tagId }, - { slug: tagId } + { _id: slugOrId }, + { slug: slugOrId } ] }; From c4ce492eec84db7ab46ab432f380ac25266c6969 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Thu, 24 May 2018 09:16:09 -0700 Subject: [PATCH 091/201] change media (type object) to heroMediaUrl (type string) --- imports/plugins/core/graphql/server/schemas/tag.graphql | 4 ++-- lib/collections/schemas/tags.js | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/imports/plugins/core/graphql/server/schemas/tag.graphql b/imports/plugins/core/graphql/server/schemas/tag.graphql index 7fe0c7fe707..1295143c219 100644 --- a/imports/plugins/core/graphql/server/schemas/tag.graphql +++ b/imports/plugins/core/graphql/server/schemas/tag.graphql @@ -39,8 +39,8 @@ type Tag implements Node & Deletable { "The date and time at which this tag was last updated" updatedAt: DateTime! - "A media object containing the hero image for a tag landing page" - media: ImageInfo + "A string containing the hero image url for a tag landing page" + heroMediaUrl: String } "The fields by which you are allowed to sort any query that returns a `TagConnection`" diff --git a/lib/collections/schemas/tags.js b/lib/collections/schemas/tags.js index 30e02d46d6f..6b7226c1947 100644 --- a/lib/collections/schemas/tags.js +++ b/lib/collections/schemas/tags.js @@ -84,9 +84,8 @@ export const Tag = new SimpleSchema({ return new Date(); } }, - "media": { - type: Object, - blackbox: true, + "heroMediaUrl": { + type: String, optional: true } }, { check, tracker: Tracker }); From 70b5c74b259219798c92c67acc59a643c34b2a68 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Thu, 24 May 2018 11:51:14 -0500 Subject: [PATCH 092/201] docs: fix tag query jsdoc --- .../plugins/core/catalog/server/no-meteor/queries/tag.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js index cfd5c0816aa..832d6e66764 100644 --- a/imports/plugins/core/catalog/server/no-meteor/queries/tag.js +++ b/imports/plugins/core/catalog/server/no-meteor/queries/tag.js @@ -2,10 +2,10 @@ * @name tag * @method * @memberof Catalog/NoMeteorQueries - * @summary query the Tags collection and return a tag by tagId + * @summary query the Tags collection and return a tag by tag ID or slug * @param {Object} context - an object containing the per-request state - * @param {String} slugOrId - ID or Slug of tag to query - * @return {Promise} - A MongoDB cursor for the proper query + * @param {String} slugOrId - ID or slug of tag to query + * @return {Object} - A Tag document if one was found */ export default async function tag(context, slugOrId) { const { collections } = context; From 41635fd93741451f29a5c27df30cf3cc8b0249a3 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Thu, 24 May 2018 14:29:31 -0500 Subject: [PATCH 093/201] refactor: updated schema import paths for plugins --- .../core/i18n/client/components/localizationSettings.js | 2 +- .../lib/collections/schemas/shopifyConnect.js | 2 +- .../marketplace/lib/collections/schemas/marketplace.js | 3 +-- .../payments-authnet/lib/collections/schemas/authnet.js | 2 +- .../payments-braintree/lib/collections/schemas/braintree.js | 2 +- .../payments-example/lib/collections/schemas/example.js | 2 +- .../included/payments-paypal/lib/collections/schemas/paypal.js | 2 +- .../included/payments-stripe/lib/collections/schemas/stripe.js | 2 +- .../product-detail-simple/client/components/childVariant.js | 2 +- .../product-variant/containers/gridItemControlsContainer.js | 2 +- .../product-variant/containers/variantFormContainer.js | 2 +- imports/plugins/included/social/client/components/settings.js | 2 +- .../taxes-avalara/client/components/avalaraSettingsForm.js | 2 +- .../client/containers/avalaraSettingsFormContainer.js | 2 +- 14 files changed, 14 insertions(+), 15 deletions(-) diff --git a/imports/plugins/core/i18n/client/components/localizationSettings.js b/imports/plugins/core/i18n/client/components/localizationSettings.js index a2764dacf0e..56bd05673d3 100644 --- a/imports/plugins/core/i18n/client/components/localizationSettings.js +++ b/imports/plugins/core/i18n/client/components/localizationSettings.js @@ -1,7 +1,7 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Components } from "@reactioncommerce/reaction-components"; -import { Shop as ShopSchema } from "/lib/collections/schemas/shops"; +import { Shop as ShopSchema } from "/lib/collections/schemas"; const PACKAGE_NAME = "reaction-i18n"; diff --git a/imports/plugins/included/connectors-shopify/lib/collections/schemas/shopifyConnect.js b/imports/plugins/included/connectors-shopify/lib/collections/schemas/shopifyConnect.js index 2b0056ca816..dc86cdd7ebb 100644 --- a/imports/plugins/included/connectors-shopify/lib/collections/schemas/shopifyConnect.js +++ b/imports/plugins/included/connectors-shopify/lib/collections/schemas/shopifyConnect.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/marketplace/lib/collections/schemas/marketplace.js b/imports/plugins/included/marketplace/lib/collections/schemas/marketplace.js index 504776ddf44..76ce104244c 100644 --- a/imports/plugins/included/marketplace/lib/collections/schemas/marketplace.js +++ b/imports/plugins/included/marketplace/lib/collections/schemas/marketplace.js @@ -1,8 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; -import { Shop } from "/lib/collections/schemas/shops.js"; +import { PackageConfig, Shop } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/payments-authnet/lib/collections/schemas/authnet.js b/imports/plugins/included/payments-authnet/lib/collections/schemas/authnet.js index c0dd328675a..249649f8fcc 100644 --- a/imports/plugins/included/payments-authnet/lib/collections/schemas/authnet.js +++ b/imports/plugins/included/payments-authnet/lib/collections/schemas/authnet.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/payments-braintree/lib/collections/schemas/braintree.js b/imports/plugins/included/payments-braintree/lib/collections/schemas/braintree.js index 3b030de8ba1..cbc5b914a16 100644 --- a/imports/plugins/included/payments-braintree/lib/collections/schemas/braintree.js +++ b/imports/plugins/included/payments-braintree/lib/collections/schemas/braintree.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/payments-example/lib/collections/schemas/example.js b/imports/plugins/included/payments-example/lib/collections/schemas/example.js index 2fd1702e808..e563b7075f0 100644 --- a/imports/plugins/included/payments-example/lib/collections/schemas/example.js +++ b/imports/plugins/included/payments-example/lib/collections/schemas/example.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/payments-paypal/lib/collections/schemas/paypal.js b/imports/plugins/included/payments-paypal/lib/collections/schemas/paypal.js index a44b410a56a..8c3166bc3c5 100644 --- a/imports/plugins/included/payments-paypal/lib/collections/schemas/paypal.js +++ b/imports/plugins/included/payments-paypal/lib/collections/schemas/paypal.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/payments-stripe/lib/collections/schemas/stripe.js b/imports/plugins/included/payments-stripe/lib/collections/schemas/stripe.js index 6431d4cf68e..4ef7e2f4285 100644 --- a/imports/plugins/included/payments-stripe/lib/collections/schemas/stripe.js +++ b/imports/plugins/included/payments-stripe/lib/collections/schemas/stripe.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import { check } from "meteor/check"; import { Tracker } from "meteor/tracker"; -import { PackageConfig } from "/lib/collections/schemas/registry"; +import { PackageConfig } from "/lib/collections/schemas"; import { registerSchema } from "@reactioncommerce/schemas"; /** diff --git a/imports/plugins/included/product-detail-simple/client/components/childVariant.js b/imports/plugins/included/product-detail-simple/client/components/childVariant.js index c3fbdabcd81..2407d9452c4 100644 --- a/imports/plugins/included/product-detail-simple/client/components/childVariant.js +++ b/imports/plugins/included/product-detail-simple/client/components/childVariant.js @@ -3,7 +3,7 @@ import PropTypes from "prop-types"; import classnames from "classnames"; import { Components, registerComponent } from "@reactioncommerce/reaction-components"; import { Validation } from "@reactioncommerce/schemas"; -import { ProductVariant } from "/lib/collections/schemas/products"; +import { ProductVariant } from "/lib/collections/schemas"; class ChildVariant extends Component { diff --git a/imports/plugins/included/product-variant/containers/gridItemControlsContainer.js b/imports/plugins/included/product-variant/containers/gridItemControlsContainer.js index 99b29e26ea3..78399986ebf 100644 --- a/imports/plugins/included/product-variant/containers/gridItemControlsContainer.js +++ b/imports/plugins/included/product-variant/containers/gridItemControlsContainer.js @@ -7,7 +7,7 @@ import { Validation } from "@reactioncommerce/schemas"; import { Reaction } from "/client/api"; import GridItemControls from "../components/gridItemControls"; import { ReactionProduct } from "/lib/api"; -import { ProductVariant } from "/lib/collections/schemas/products"; +import { ProductVariant } from "/lib/collections/schemas"; const wrapComponent = (Comp) => ( class GridItemControlsContainer extends Component { diff --git a/imports/plugins/included/product-variant/containers/variantFormContainer.js b/imports/plugins/included/product-variant/containers/variantFormContainer.js index b012cd40098..9477df5dcb5 100644 --- a/imports/plugins/included/product-variant/containers/variantFormContainer.js +++ b/imports/plugins/included/product-variant/containers/variantFormContainer.js @@ -9,7 +9,7 @@ import { ReactionProduct } from "/lib/api"; import { Packages } from "/lib/collections"; import { Reaction, i18next } from "/client/api"; import { TaxCodes } from "/imports/plugins/core/taxes/lib/collections"; -import { ProductVariant } from "/lib/collections/schemas/products"; +import { ProductVariant } from "/lib/collections/schemas"; import VariantForm from "../components/variantForm"; const wrapComponent = (Comp) => ( diff --git a/imports/plugins/included/social/client/components/settings.js b/imports/plugins/included/social/client/components/settings.js index 82b646d3066..cc90eb09e9e 100644 --- a/imports/plugins/included/social/client/components/settings.js +++ b/imports/plugins/included/social/client/components/settings.js @@ -5,7 +5,7 @@ import { SettingsCard, Form } from "/imports/plugins/core/ui/client/components"; -import { SocialPackageConfig } from "/lib/collections/schemas/social"; +import { SocialPackageConfig } from "/lib/collections/schemas"; const socialProviders = [ { diff --git a/imports/plugins/included/taxes-avalara/client/components/avalaraSettingsForm.js b/imports/plugins/included/taxes-avalara/client/components/avalaraSettingsForm.js index bad5c23ad92..ef72b5a9acb 100644 --- a/imports/plugins/included/taxes-avalara/client/components/avalaraSettingsForm.js +++ b/imports/plugins/included/taxes-avalara/client/components/avalaraSettingsForm.js @@ -6,7 +6,7 @@ import { Form, Loading } from "/imports/plugins/core/ui/client/components"; import { Components } from "@reactioncommerce/reaction-components"; import { AvalaraPackageConfig } from "../../lib/collections/schemas"; import { Logs } from "/lib/collections"; -import { Logs as LogSchema } from "/lib/collections/schemas/logs"; +import { Logs as LogSchema } from "/lib/collections/schemas"; import { i18next } from "/client/api"; /** diff --git a/imports/plugins/included/taxes-avalara/client/containers/avalaraSettingsFormContainer.js b/imports/plugins/included/taxes-avalara/client/containers/avalaraSettingsFormContainer.js index cddd7fd7064..2b6550311e3 100644 --- a/imports/plugins/included/taxes-avalara/client/containers/avalaraSettingsFormContainer.js +++ b/imports/plugins/included/taxes-avalara/client/containers/avalaraSettingsFormContainer.js @@ -4,7 +4,7 @@ import { Reaction } from "/client/api"; import { compose, withProps } from "recompose"; import { AvalaraPackageConfig } from "../../lib/collections/schemas"; import { AvalaraSettingsForm } from "../components"; -import { Logs as LogSchema } from "/lib/collections/schemas/logs"; +import { Logs as LogSchema } from "/lib/collections/schemas"; import { Countries } from "/client/collections"; /** From 0492c49e12b1e2eacdd0b07bc031124fedbd4cdb Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Thu, 24 May 2018 14:32:19 -0500 Subject: [PATCH 094/201] refactor: updated load-data to pass the shopId to the importer.process call to prevent an endless loop, updated importer to check the cbArgs in the process method and added jsdoc for the new arg --- server/api/core/importer.js | 3 ++- server/startup/load-data.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/api/core/importer.js b/server/api/core/importer.js index 3a2c878f99f..f0f10f0599d 100644 --- a/server/api/core/importer.js +++ b/server/api/core/importer.js @@ -446,7 +446,7 @@ Importer.object = function (collection, key, object) { * @param {Object[]} json An array containing the import documents * @param {string[]} keys Fields that should be used as the import key. * @param {Function} callback A callback accepting two parameters. - * @param {Array} cbArgs TODO: + * @param {Array} cbArgs An array of extra callback arguments, mainly used to pass shopId to callbacks * The callback should accept a key document to consult the database as a first * parameter and an update document as the second parameter. * @returns {undefined} @@ -455,6 +455,7 @@ Importer.process = function (json, keys, callback, cbArgs) { check(json, String); check(keys, Array); check(callback, Function); + check(cbArgs, Array); const array = EJSON.parse(json); diff --git a/server/startup/load-data.js b/server/startup/load-data.js index eee3e6e4057..bff7c60b06b 100644 --- a/server/startup/load-data.js +++ b/server/startup/load-data.js @@ -15,7 +15,7 @@ export default function loadData() { if (!shopId) { try { Logger.debug("Loading Shop Data"); - Reaction.Importer.process(Assets.getText("data/Shops.json"), ["name"], Reaction.Importer.shop); + Reaction.Importer.process(Assets.getText("data/Shops.json"), ["name"], Reaction.Importer.shop, [shopId]); // ensure Shops are loaded first. Reaction.Importer.flush(Shops); } catch (error) { From ac4b0c0fc8a10c0768290b83798b3e2a3bc60187 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Thu, 24 May 2018 16:29:19 -0500 Subject: [PATCH 095/201] refactor: removed data-facotry code form the Tags schema --- imports/collections/schemas/tags.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/imports/collections/schemas/tags.js b/imports/collections/schemas/tags.js index 68cbc87e6a8..d2890e5cb75 100644 --- a/imports/collections/schemas/tags.js +++ b/imports/collections/schemas/tags.js @@ -2,7 +2,6 @@ import SimpleSchema from "simpl-schema"; import { registerSchema } from "@reactioncommerce/schemas"; import { createdAtAutoValue } from "./helpers"; import { Metafield } from "./metafield"; -import { createFactoryForSchema } from "/imports/test-utils/helpers/dataFactory"; /** * @name Tag @@ -85,4 +84,3 @@ export const Tag = new SimpleSchema({ }); registerSchema("Tag", Tag); -createFactoryForSchema("Tag", Tag); From d43fcff214b1f93b3c109385f74e5b72bc44d6f8 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Thu, 24 May 2018 18:59:40 -0500 Subject: [PATCH 096/201] fix: removed revisions import from imports/collections/schemas/index.js --- imports/collections/schemas/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/imports/collections/schemas/index.js b/imports/collections/schemas/index.js index 160941ba546..3d7b2328294 100644 --- a/imports/collections/schemas/index.js +++ b/imports/collections/schemas/index.js @@ -27,7 +27,6 @@ export * from "./orders"; export * from "./payments"; export * from "./products"; export * from "./registry"; -export * from "./revisions"; export * from "./shipping"; export * from "./shops"; export * from "./groups"; From d48d90536092feb5456f464be010e43f64ce1d88 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 16:18:02 -0500 Subject: [PATCH 097/201] refactor: added schema index helper that extends our simple schema options --- imports/collections/schemas/index.js | 10 ++++++---- imports/collections/schemas/schemaIndex.js | 7 +++++++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 imports/collections/schemas/schemaIndex.js diff --git a/imports/collections/schemas/index.js b/imports/collections/schemas/index.js index 160941ba546..286fed54c90 100644 --- a/imports/collections/schemas/index.js +++ b/imports/collections/schemas/index.js @@ -12,20 +12,22 @@ * @namespace Schemas */ +import "./schemaIndex"; + export * from "./accounts"; export * from "./address"; export * from "./assets"; export * from "./catalog"; -export * from "./cart"; +// export * from "./cart"; export * from "./emails"; -export * from "./inventory"; +// export * from "./inventory"; export * from "./layouts"; export * from "./logs"; export * from "./metafield"; export * from "./notifications"; -export * from "./orders"; +// export * from "./orders"; export * from "./payments"; -export * from "./products"; +// export * from "./products"; export * from "./registry"; export * from "./revisions"; export * from "./shipping"; diff --git a/imports/collections/schemas/schemaIndex.js b/imports/collections/schemas/schemaIndex.js new file mode 100644 index 00000000000..7c74e911b29 --- /dev/null +++ b/imports/collections/schemas/schemaIndex.js @@ -0,0 +1,7 @@ +import SimpleSchema from "simpl-schema"; + +SimpleSchema.extendOptions([ + "index", // one of Number, String, Boolean + "unique", // Boolean + "sparse" // Boolean +]); From 5c793f62f2cc6e1ffb01d436af9ea122e6264bba Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 16:18:40 -0500 Subject: [PATCH 098/201] chore: commented out unused schema helper functions, should be removed before merge --- imports/collections/schemas/helpers.js | 99 +++++++++++++------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/imports/collections/schemas/helpers.js b/imports/collections/schemas/helpers.js index e8d452872d5..264332bbadd 100644 --- a/imports/collections/schemas/helpers.js +++ b/imports/collections/schemas/helpers.js @@ -1,7 +1,7 @@ import Random from "@reactioncommerce/random"; import { Meteor } from "meteor/meteor"; -import { Reaction } from "/lib/api"; -import { Shops } from "/lib/collections"; +// import { Reaction } from "/lib/api"; +// import { Shops } from "/lib/collections"; /** * @name createdAtAutoValue @@ -45,15 +45,15 @@ export function updatedAtAutoValue() { * @example autoValue: shopIdAutoValue * @return {String} current shopId */ -export function shopIdAutoValue() { - // we should always have a shopId - if (this.isSet && Meteor.isServer) { - return this.value; - } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { - return Reaction.getShopId(); - } - return this.unset(); -} +// export function shopIdAutoValue() { +// // we should always have a shopId +// if (this.isSet && Meteor.isServer) { +// return this.value; +// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { +// return Reaction.getShopId(); +// } +// return this.unset(); +// } /** * @name shopIdAutoValueForCart @@ -63,21 +63,21 @@ export function shopIdAutoValue() { * @example autoValue: shopIdAutoValue * @return {String} shopId */ -export function shopIdAutoValueForCart() { - // we should always have a shopId - if (this.isSet && Meteor.isServer) { - return this.value; - } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { - let shopId = Reaction.getPrimaryShopId(); - const marketplaceSettings = Reaction.getMarketplaceSettings(); +// export function shopIdAutoValueForCart() { +// // we should always have a shopId +// if (this.isSet && Meteor.isServer) { +// return this.value; +// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { +// let shopId = Reaction.getPrimaryShopId(); +// const marketplaceSettings = Reaction.getMarketplaceSettings(); - if (marketplaceSettings && marketplaceSettings.public && marketplaceSettings.public.merchantCart === true) { - shopId = Reaction.getShopId(); - } - return shopId; - } - return this.unset(); -} +// if (marketplaceSettings && marketplaceSettings.public && marketplaceSettings.public.merchantCart === true) { +// shopId = Reaction.getShopId(); +// } +// return shopId; +// } +// return this.unset(); +// } /** * @name schemaIdAutoValue @@ -90,8 +90,7 @@ export function shopIdAutoValueForCart() { export function schemaIdAutoValue() { if (this.isSet && Meteor.isServer) { return this.value; - } else if ((Meteor.isServer && this.operator !== "$pull") || - (Meteor.isClient && this.isInsert)) { + } else if ((Meteor.isServer && this.operator !== "$pull") || (Meteor.isClient && this.isInsert)) { return Random.id(); } return this.unset(); @@ -105,29 +104,29 @@ export function schemaIdAutoValue() { * @example autoValue: shopDefaultCountry * @return {String} country value from default shop */ -export function shopDefaultCountry() { - try { - // Check to see if this is client or server, and the type of update being performed - if (this.isSet && Meteor.isServer) { - return this.value; - } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { - // Find the current shop - const shop = Shops.findOne({ - _id: Reaction.getShopId() - }); +// export function shopDefaultCountry() { +// try { +// // Check to see if this is client or server, and the type of update being performed +// if (this.isSet && Meteor.isServer) { +// return this.value; +// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { +// // Find the current shop +// const shop = Shops.findOne({ +// _id: Reaction.getShopId() +// }); - // Find the current shops primary shipping address - if (shop && shop.addressBook) { - const defaultShippingAddress = shop.addressBook.find((address) => address.isShippingDefault === true); +// // Find the current shops primary shipping address +// if (shop && shop.addressBook) { +// const defaultShippingAddress = shop.addressBook.find((address) => address.isShippingDefault === true); - // return the shops country to auto-populate the Country of Origin field in the scheme - return defaultShippingAddress.country; - } +// // return the shops country to auto-populate the Country of Origin field in the scheme +// return defaultShippingAddress.country; +// } - return this.value; - } - return this.unset(); - } catch (e) { - return this.value; - } -} +// return this.value; +// } +// return this.unset(); +// } catch (e) { +// return this.value; +// } +// } From 448e37d4663395e0205c66a2f191e58a0b692928 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 16:20:07 -0500 Subject: [PATCH 099/201] feat: cleaned up temp dataFactory code, created a new factory test-util file that adds mock factories from our schemas --- imports/test-utils/helpers/dataFactory.js | 18 +++--------------- imports/test-utils/helpers/factory.js | 8 ++++++++ 2 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 imports/test-utils/helpers/factory.js diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index c61dc441ced..29d82c23d6b 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -1,5 +1,3 @@ -// import { getMockDoc } from "simpl-schema-mockdoc"; - import _ from "lodash"; import faker from "faker"; import SimpleSchema from "simpl-schema"; @@ -11,19 +9,11 @@ const getMockDoc = (schema, prefix, addId) => { const mockDoc = {}; const model = schema._schema; - // const seed = _.chain(docPrefix) - // .split("") - // .map((char) => char.charCodeAt()) - // .sum() - // .value(); - - // const seed = _.flow(_.split(""), _.map((char) => char.charCodeAt()), _.sum())(docPrefix); - - const seed = Array.prototype.reduce.cal(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); + const seed = Array.prototype.reduce.call(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); faker.seed(seed); - if (process.env.NODE_ENV !== "test" || !schema) { + if (process.env.NODE_ENV !== "jesttest" || !schema) { return mockDoc; } @@ -143,7 +133,7 @@ const getMockDoc = (schema, prefix, addId) => { }; const clearMockValues = (schema) => { - if (process.env.NODE_ENV === "test") { + if (process.env.NODE_ENV === "jesttest") { return schema; } @@ -173,8 +163,6 @@ export function createFactoryForSchema(propName, schema) { throw new Error(`Factory already has a "${propName}" property`); } - console.log("factory created?", propName); - Factory[propName] = { makeOne(props) { const doc = getMockDoc(schema, "mock", true); diff --git a/imports/test-utils/helpers/factory.js b/imports/test-utils/helpers/factory.js new file mode 100644 index 00000000000..019a82111d9 --- /dev/null +++ b/imports/test-utils/helpers/factory.js @@ -0,0 +1,8 @@ +import * as schemas from "imports/collections/schemas"; +import { createFactoryForSchema, Factory } from "./dataFactory"; + +Object.keys(schemas).forEach((key) => { + createFactoryForSchema(key, schemas[key]); +}); + +export default Factory; From 4256f62ef2bab446da6ef06a3148298aa375ea37 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 16:20:38 -0500 Subject: [PATCH 100/201] test: testing out the new Factory mock --- tests/tag/tags.test.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index 393be6f357d..93dd556001f 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -1,6 +1,5 @@ import GraphTester from "../GraphTester"; -// import { Tag } from "/lib/collections/schemas/tags"; -import { createFactoryForSchema, Factory } from "/imports/test-utils/helpers/dataFactory"; +import Factory from "/imports/test-utils/helpers/factory"; jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; @@ -14,6 +13,7 @@ for (let i = 100; i < 155; i += 1) { const tagPosition = i; tags.push({ _id: tagId, name: tagName, shopId: internalShopId, position: tagPosition }); } +const mockTags = Factory.Tag.makeMany(3); const tagsQuery = `($shopId: ID!, $after: ConnectionCursor, $before: ConnectionCursor, $first: ConnectionLimitInt, $last: ConnectionLimitInt) { tags(shopId: $shopId, after: $after, before: $before, first: $first, last: $last) { @@ -133,9 +133,8 @@ test("works correctly when last goes before start", async () => { test("testing data factory", () => { - const mockTag = Factory.Tag.makOne(); const spec = true; + console.log("factory tags", mockTags); - console.log("facotry tag?", mockTag); expect(spec).toBe(false); }); From 94ff006c6ec10b1dc76006acd28d72ce2bb987d4 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 17:16:20 -0500 Subject: [PATCH 101/201] refactor: removed seed from getMockDoc helper function so _id will be random --- imports/test-utils/helpers/dataFactory.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index 29d82c23d6b..8282ad7c047 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -9,9 +9,9 @@ const getMockDoc = (schema, prefix, addId) => { const mockDoc = {}; const model = schema._schema; - const seed = Array.prototype.reduce.call(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); - - faker.seed(seed); + // Not sure how the seed feature works with faker.js but with this set I would get the same _id for every mock that was created + // const seed = Array.prototype.reduce.call(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); + // faker.seed(seed); if (process.env.NODE_ENV !== "jesttest" || !schema) { return mockDoc; From 3fa9865ad3e43587a2159fae4f1d0c90faaedcd4 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 25 May 2018 17:17:20 -0500 Subject: [PATCH 102/201] test: replaced old mock tags setup with the new Factory.Tag.makeMany, all test are failing because the mongo cursors chnage on every run --- tests/tag/tags.test.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index 93dd556001f..54b7d47fd8a 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -13,7 +13,7 @@ for (let i = 100; i < 155; i += 1) { const tagPosition = i; tags.push({ _id: tagId, name: tagName, shopId: internalShopId, position: tagPosition }); } -const mockTags = Factory.Tag.makeMany(3); +const mockTags = Factory.Tag.makeMany(55, { shopId: internalShopId }); const tagsQuery = `($shopId: ID!, $after: ConnectionCursor, $before: ConnectionCursor, $first: ConnectionLimitInt, $last: ConnectionLimitInt) { tags(shopId: $shopId, after: $after, before: $before, first: $first, last: $last) { @@ -39,7 +39,7 @@ beforeAll(async () => { query = tester.query(tagsQuery); await tester.insertPrimaryShop({ _id: internalShopId, name: shopName }); - await Promise.all(tags.map((tag) => tester.collections.Tags.insert(tag))); + await Promise.all(mockTags.map((tag) => tester.collections.Tags.insert(tag))); }); afterAll(() => tester.stop()); @@ -134,7 +134,6 @@ test("works correctly when last goes before start", async () => { test("testing data factory", () => { const spec = true; - console.log("factory tags", mockTags); - + console.log("factory tags", mockTags.length); expect(spec).toBe(false); }); From 63cfce2fbbb1df9ede2fd25003b6644ff571d355 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Tue, 29 May 2018 15:38:04 -0500 Subject: [PATCH 103/201] feat: update to Meteor 1.7 final (broken imports) --- .meteor/packages | 12 +- .meteor/release | 2 +- .meteor/versions | 44 +- package-lock.json | 3615 ++++++++++++++++++++++++++++----------------- package.json | 18 +- 5 files changed, 2271 insertions(+), 1420 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index df5dd110580..ff7150bb01e 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -7,17 +7,17 @@ # Core Meteor Packages ### -meteor-base@1.4.0-rc17.11 # Packages every Meteor app needs to have +meteor-base@1.4.0 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views -es5-shim@4.8.0-rc17.11 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.11.0-rc17.11 # Enable ECMAScript2015+ syntax in app code +es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. +ecmascript@0.11.0 # Enable ECMAScript2015+ syntax in app code audit-argument-checks@1.0.7 # ensure meteor method argument validation browser-policy@1.1.0 # security-related policies enforced by newer browsers juliancwirko:postcss@1.3.0 # CSS post-processing plugin (replaces standard-minifier-css) session@1.1.7 # ReactiveDict whose contents are preserved across Hot Code Push -tracker@1.2.0-rc17.11 # Meteor transparent reactive programming library -mongo@1.5.0-rc17.11 +tracker@1.2.0 # Meteor transparent reactive programming library +mongo@1.5.0 reactive-var@1.0.11 reactive-dict@1.2.0 check@1.3.1 @@ -31,7 +31,7 @@ less@2.7.12 service-configuration@1.0.11 mdg:validated-method shell-server@0.3.1 -dynamic-import@0.4.0-rc17.11 +dynamic-import@0.4.0 standard-minifier-js@2.3.4 # Meteor Auth Packages diff --git a/.meteor/release b/.meteor/release index 654520d859f..cc4631c0b6f 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@1.7-rc.11 +METEOR@1.7 diff --git a/.meteor/versions b/.meteor/versions index 9f445f6797f..c7707847e59 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -12,14 +12,14 @@ aldeed:template-extension@4.1.0 allow-deny@1.1.0 audit-argument-checks@1.0.7 autoupdate@1.4.0 -babel-compiler@7.1.0-rc17.11 -babel-runtime@1.3.0-rc17.11 +babel-compiler@7.1.0 +babel-runtime@1.2.2 base64@1.0.11 binary-heap@1.0.10 blaze@2.3.2 blaze-html-templates@1.1.2 blaze-tools@1.0.10 -boilerplate-generator@1.5.0-rc17.11 +boilerplate-generator@1.5.0 bozhao:accounts-instagram@0.2.2 browser-policy@1.1.0 browser-policy-common@1.0.11 @@ -35,20 +35,20 @@ ddp@1.4.0 ddp-client@2.3.2 ddp-common@1.4.0 ddp-rate-limiter@1.0.7 -ddp-server@2.2.0-rc17.11 +ddp-server@2.2.0 deps@1.0.12 diff-sequence@1.1.0 dispatch:run-as-user@1.1.1 -dynamic-import@0.4.0-rc17.11 -ecmascript@0.11.0-rc17.11 -ecmascript-runtime@0.7.0-rc17.11 -ecmascript-runtime-client@0.7.0-rc17.11 -ecmascript-runtime-server@0.7.0-rc17.11 +dynamic-import@0.4.0 +ecmascript@0.11.0 +ecmascript-runtime@0.7.0 +ecmascript-runtime-client@0.7.0 +ecmascript-runtime-server@0.7.0 ejson@1.1.0 email@1.2.3 -es5-shim@4.8.0-rc17.11 +es5-shim@4.8.0 facebook-config-ui@1.0.1 -facebook-oauth@1.5.0-rc17.11 +facebook-oauth@1.5.0 gadicc:blaze-react-component@1.4.0 geojson-utils@1.0.10 google-config-ui@1.0.0 @@ -67,8 +67,8 @@ livedata@1.0.18 localstorage@1.2.0 logging@1.1.20 mdg:validated-method@1.1.0 -meteor@1.9.0-rc17.11 -meteor-base@1.4.0-rc17.11 +meteor@1.9.0 +meteor-base@1.4.0 meteorhacks:ssr@2.2.0 meteorhacks:subs-manager@1.6.4 meteortesting:browser-tests@0.1.2 @@ -78,15 +78,15 @@ minifier-js@2.3.5 minimongo@1.4.4 mobile-experience@1.0.5 mobile-status-bar@1.0.14 -modern-browsers@0.1.0-rc17.11 -modules@0.11.7 -modules-runtime@0.10.0-rc17.11 +modern-browsers@0.1.0 +modules@0.12.0 +modules-runtime@0.10.0 momentjs:moment@2.19.4 -mongo@1.5.0-rc17.11 +mongo@1.5.0 mongo-dev-server@1.1.0 mongo-id@1.0.7 npm-bcrypt@0.9.3 -npm-mongo@3.0.7-rc17.11 +npm-mongo@3.0.7 oauth@1.2.3 oauth-encryption@1.3.0 oauth1@1.2.0 @@ -98,7 +98,7 @@ percolate:migrations@0.9.8 practicalmeteor:chai@2.1.0_1 practicalmeteor:mocha-core@1.0.1 practicalmeteor:sinon@1.14.1_2 -promise@0.11.0-rc17.11 +promise@0.11.0 raix:eventemitter@0.1.3 random@1.1.0 rate-limit@1.0.9 @@ -111,7 +111,7 @@ service-configuration@1.0.11 session@1.1.7 sha@1.0.9 shell-server@0.3.1 -socket-stream-client@0.2.0-rc17.11 +socket-stream-client@0.2.0 spacebars@1.0.15 spacebars-compiler@1.1.3 srp@1.0.10 @@ -122,11 +122,11 @@ templating-runtime@1.3.2 templating-tools@1.1.2 tmeasday:check-npm-versions@0.3.2 tmeasday:publish-counts@0.8.0 -tracker@1.2.0-rc17.11 +tracker@1.2.0 twitter-config-ui@1.0.0 twitter-oauth@1.2.0 ui@1.0.13 underscore@1.0.10 url@1.2.0 -webapp@1.6.0-rc17.11 +webapp@1.6.0 webapp-hashing@1.0.9 diff --git a/package-lock.json b/package-lock.json index d74b816cc5c..98a7202efc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,20 +26,20 @@ "integrity": "sha1-dytxZQwGp3kxhA6AiAy4l4U3jug=" }, "@babel/cli": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0-beta.46.tgz", - "integrity": "sha512-PkVdudEy12eyzAhAGJ4hFnkR25H5/4aGIVT06RTfCNSVHkU1Nf9BF7bpyRwlj36e7CFrtQqV3gi5LUACUjyMDw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0-beta.49.tgz", + "integrity": "sha1-yMMTX3vEhChDb69ePydCJ6me8qg=", "dev": true, "requires": { - "chokidar": "^1.6.1", - "commander": "^2.8.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.0.0", - "glob": "^7.0.0", - "lodash": "^4.2.0", - "output-file-sync": "^2.0.0", - "slash": "^1.0.0", - "source-map": "^0.5.0" + "chokidar": "2.0.3", + "commander": "2.14.1", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "output-file-sync": "2.0.1", + "slash": "1.0.0", + "source-map": "0.5.7" }, "dependencies": { "source-map": { @@ -62,35 +62,35 @@ } }, "@babel/core": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.46.tgz", - "integrity": "sha512-lCDbBSAhNAt+nL98xbgWmuhgrIxKvbvFHf73zlNCuXCHJkdlo7qzTofYK0ZWb+OVce8fQ17fC7DwTIhAwowzMw==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.46", - "@babel/generator": "7.0.0-beta.46", - "@babel/helpers": "7.0.0-beta.46", - "@babel/template": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "babylon": "7.0.0-beta.46", - "convert-source-map": "^1.1.0", - "debug": "^3.1.0", - "json5": "^0.5.0", - "lodash": "^4.2.0", - "micromatch": "^2.3.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.49.tgz", + "integrity": "sha1-c94ggd1lJIlInwy0qpeCmhEzMU4=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helpers": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "resolve": "1.5.0", + "semver": "5.4.1", + "source-map": "0.5.7" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", - "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.46" + "@babel/highlight": "7.0.0-beta.49" } }, "debug": { @@ -111,16 +111,16 @@ } }, "@babel/generator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.46.tgz", - "integrity": "sha512-5VfaEVkPG0gpNSTcf70jvV+MjbMoNn4g2iluwM7MhciedkolEtmG7PcdoUj5W1EmMfngz5cF65V7UMZXJO6y8Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", + "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.0.0-beta.49", + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "source-map": { @@ -132,884 +132,919 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.46.tgz", - "integrity": "sha512-ej5W347ghJF1p2TM3VcEyds1+o1uy1apaQcHrYFJPus2xCgn5KkHPkBGf+6euLfFaQDtB+eWPVKjiZx/hpYXvA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.49.tgz", + "integrity": "sha1-fZAF1U/nrWy4dnkCUedVdUGRhuk=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.46.tgz", - "integrity": "sha512-ZCQ62KqFC5R3NPe5ug9pVqIHYJNup8UdEbE4IXw+s7zr4D/7AsKSt3pXA+FbML5AnQXeCSOuUWioggGmKuDV5g==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.49.tgz", + "integrity": "sha1-xi3VBCtUpZDV5x5gIMRrkdbGyHU=", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-explode-assignable-expression": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-builder-react-jsx": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.46.tgz", - "integrity": "sha512-4xakEEfimusXNgpSY6rP7robwRcnv1E8OxjkYSfsZCYsomFwN7RXU5S29vGWzxE37Yua4yTFqBwId9lwF84Hzw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.49.tgz", + "integrity": "sha1-5sNfjIjpAJMTn6ezAn0FzOtH9D0=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46", - "esutils": "^2.0.0" + "@babel/types": "7.0.0-beta.49", + "esutils": "2.0.2" } }, "@babel/helper-call-delegate": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.46.tgz", - "integrity": "sha512-7nhBu/MBlpvZLQsmw/C7VxN14wph+yp+1yxzPEd2oTsHg3oA73tHyguQ6wbtkw+9f1AZtP7ZJCLQ+nGLprF4Fw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.49.tgz", + "integrity": "sha1-S11BeCpoPV3GSXg0oyMQqNAqOvk=", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-hoist-variables": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-define-map": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.46.tgz", - "integrity": "sha512-rhi59ZVj+bhrgxqLi9VQmQOadcK9rLCArY8zqyjPNjDIsCurCwtQztRWhlz6CwBEhE9FO/KbSa9OFQm7Kobk+w==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.49.tgz", + "integrity": "sha1-TqBnqnIJNyQN85XNBzwk/K2cKzs=", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.46.tgz", - "integrity": "sha512-SW1OUmx2fC2SqL7+vF1N72FITbPuEWGdr/Gm7I3Vqs8p8T1dfGwB9YFsD+tTpfagKXVMiCCuQ06+G0FB8uxg6Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.49.tgz", + "integrity": "sha1-K/uV337BMHNb9lXkSiF6cNOxPpM=", "dev": true, "requires": { - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.46.tgz", - "integrity": "sha512-zm4Kc5XB2njGs8PkmjV1zE/g1hBuphbh+VcDyFLaQsxkxSFSUtCbKwFL8AQpL/qPIcGbvX1MBt50a/3ZZH2CQA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", + "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.46", - "@babel/template": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.46.tgz", - "integrity": "sha512-dPrTb7QHVx44xJLjUl3LGAc13iS7hdXdO0fiOxdRN1suIS91yGGgeuwiQBlrw5SxbFchYtwenhlKbqHdVfGyVA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", + "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.46.tgz", - "integrity": "sha512-9xDHLfaVA445mcHU2OEPwEddiyS0Zxao2WObFR2L/SK5MNOPj2VqVCvivYrO2OpzhnLLCTbOfXRmrwrc9WYN6Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.49.tgz", + "integrity": "sha1-2XQGUck7tPp5wba6xjQFH8TQP/U=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-Xb5iVUHXY8yz4pgGBvtuS1kxZH1oUYcxTcbIW8NFRvgpeH3Zcv4me02bbixsk7nhn8ttE79Lr1g4vrem4k5Z3Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-L2QrAD1FFV4KnnpK0OaI2Ru8FYM=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-module-imports": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.46.tgz", - "integrity": "sha512-xjgpwrqHiKCZgAcqsNIpZ9kOCC5Ty/VYN1H07v21HbAf/dl0/HeUA0taz3EFv6/7lRgS3qThawTSG0POJQX9vQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.49.tgz", + "integrity": "sha1-QdfVmJEBbEk0MqRvdGREZVKJDHU=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" } }, "@babel/helper-module-transforms": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.46.tgz", - "integrity": "sha512-IckoWSub3PHNvkWcUEWfKBe8pFUdMhsZMFDcaovcLb+gfxL/zZhQYwedKKKwbzVGIk9k44yjeMQ/OJd4yt4FGQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.49.tgz", + "integrity": "sha1-/GYL2p1kl0EuGHdqca7ZqeLl960=", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.46", - "@babel/helper-simple-access": "7.0.0-beta.46", - "@babel/helper-split-export-declaration": "7.0.0-beta.46", - "@babel/template": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/helper-module-imports": "7.0.0-beta.49", + "@babel/helper-simple-access": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.46.tgz", - "integrity": "sha512-PVd7/PGxi82pEKyuDcEpMmlenMLhJCII3lIK4MhXGWrT/6cNMpY6ob5rWOarpXgZjy+JNI5uLPOce28bqq0Wtw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.49.tgz", + "integrity": "sha1-qYtDw6bFS+9I+HsQ3EVo3sC0G/c=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.46.tgz", - "integrity": "sha512-eRTFH+/1rqDfzx+Z//CYk4TNwhfPQpM/TCs4CmHu2DwCPrqFnKUZLI1KgStfLf//c8FdOqx/U9EPec7s8CbUIA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.49.tgz", + "integrity": "sha1-Dp/LuDT4eLs2XSqOqQ7uIbo8zSM=", "dev": true }, "@babel/helper-regex": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-sPDHBt8Y4i6y9rwtxWMvcprlVHAZOOQK5xpS2Nw2q9QEDHRHwVbEpE6EejoUStSclnfJpPK/7ijFgypwc6rXlA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-/yRPGcKi8Wf/SzFlpjawj9ZBgWs=", "dev": true, "requires": { - "lodash": "^4.2.0" + "lodash": "4.17.5" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.46.tgz", - "integrity": "sha512-YrqQ98z8AMZx8f2PGJ4YV1MkXtj+qbwbFV7MOLTiavGSFY7UrN4uQfhKEJ/4GUf4QZdTr5NEmRt0AJrWno8y8w==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.49.tgz", + "integrity": "sha1-s/2qtBJ4TX6GV7rKsoaSPvyUmLg=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.46", - "@babel/helper-wrap-function": "7.0.0-beta.46", - "@babel/template": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-wrap-function": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-replace-supers": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.46.tgz", - "integrity": "sha512-FSpK3QKzb58oMEccanHzg1djsYHhGARl08i8BQGBoOyHS6Df+4/8bsQiTnc59Dz5sJoZdb67nKKFjgMsMYi6Kg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.49.tgz", + "integrity": "sha1-50RMcYBX9qCjZFyvjnj7VG/7DZ8=", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "7.0.0-beta.46", - "@babel/helper-optimise-call-expression": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-member-expression-to-functions": "7.0.0-beta.49", + "@babel/helper-optimise-call-expression": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-simple-access": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.46.tgz", - "integrity": "sha512-1OEjV/Qnl4u8Dg+jQIYf1TgnfdrYIrdrF7yZwp9mSgsVX2PCyLe7JNTqZ/5v/5RzlF6S+GTe9agkj+EFFTcZUw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.49.tgz", + "integrity": "sha1-l6QeJ4mpv4psMFNqJYt550RMXYI=", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.46.tgz", - "integrity": "sha512-UT7acgV7wsnBPwnqslqcnUFvsPBP4TtVaYM82xPGA7+evAa8q8HXOmFk08qsMK/pX/yy4+51gJJwyw2zofnacA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", + "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.46" + "@babel/types": "7.0.0-beta.49" } }, "@babel/helper-wrap-function": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.46.tgz", - "integrity": "sha512-W87M4bP6veTKK66OjzV/rU47tjsWmKj9J0J5BDmxq5BIJB1M13ouQ2FAURa4jGHwjPFWN3D5njBrsrifSOHzbQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.49.tgz", + "integrity": "sha1-OFWRRgtNk++W7jgZU5wM3Ju9R1g=", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/template": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/helpers": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.46.tgz", - "integrity": "sha512-mbpH9pM3pJzo/tBr75U+zva3pqpyivogt1aofgEoD7bWFAYSuqOudRuz+m4XP6VPxxLoxcA4SFPGkuLRt9+7nQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.49.tgz", + "integrity": "sha1-BU2EAy1OlChqgFhlAAaOQQBaUdA=", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.46", - "@babel/traverse": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46" + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, "@babel/highlight": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.46.tgz", - "integrity": "sha512-r4snW6Q8ICL3Y8hGzYJRvyG/+sc+kvkewXNedG9tQjoHmUFMwMSv/o45GWQUQswevGnWghiGkpRPivFfOuMsOA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", + "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@babel/node": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.0.0-beta.46.tgz", - "integrity": "sha512-4WQ5r490HyIybmhbNNJ1+qHVMxJ+tysKyIRfHb8b4Gxyhr1+FUZTlMjv4WSKPGWwhULStXiicLweLD/Ls4SQCg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.0.0-beta.49.tgz", + "integrity": "sha1-lbbHhfG1NQg4xpMzRwF69RQQiTA=", "dev": true, "requires": { - "@babel/polyfill": "7.0.0-beta.46", - "@babel/register": "7.0.0-beta.46", - "commander": "^2.8.1", - "fs-readdir-recursive": "^1.0.0", - "lodash": "^4.2.0", - "output-file-sync": "^2.0.0", - "v8flags": "^3.0.0" + "@babel/polyfill": "7.0.0-beta.49", + "@babel/register": "7.0.0-beta.49", + "commander": "2.14.1", + "fs-readdir-recursive": "1.1.0", + "lodash": "4.17.5", + "output-file-sync": "2.0.1", + "v8flags": "3.1.0" } }, + "@babel/parser": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.49.tgz", + "integrity": "sha1-lE0MW6KBK7FZ7b0iZ0Ov0mUXm9w=", + "dev": true + }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-htHMsLBYkM89CplqHTbbemVvzTXXyXkpihetJZUTPpSayfxEd6oIH5uSM91efcf5Rog+1SC0Oq32q9yF/4W3ig==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-h2Gl4ti1JR5w3yj00KpkqiillrE=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.46", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.49", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.49" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-kWp3bKibdSeSEvEQWcEcs345KPQYT39uM2edFS78NH3Gu6O9mBcnXh5E2BJ1sbE+jJ6jYPOZz4BK/LR7BiF0jA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-Un6Qr3XSP9XjuuGiGNwKbZI2tfE=", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-replace-supers": "7.0.0-beta.46", - "@babel/plugin-syntax-class-properties": "7.0.0-beta.46" + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-member-expression-to-functions": "7.0.0-beta.49", + "@babel/helper-optimise-call-expression": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-replace-supers": "7.0.0-beta.49", + "@babel/plugin-syntax-class-properties": "7.0.0-beta.49" } }, "@babel/plugin-proposal-decorators": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.46.tgz", - "integrity": "sha512-2z+ayU1saRWfvHGE9uU+275EGSDQlGf37U2Vs2F9BjN0eUC+JAC96ncq2FuwLLRR8d6rfckzBJNqDNuW8Azaeg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.49.tgz", + "integrity": "sha1-V2CraDF05grWcNycXvOfHX00nHs=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-decorators": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-decorators": "7.0.0-beta.49" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.46.tgz", - "integrity": "sha512-9B7d8NfGZ3F1aKQgINmpc1SAphVgGvKEyw1ppetMpThT6EFWAdW6p1/K6QT7kI+hOo6iKUmUo8sOwD30nWVr9w==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.49.tgz", + "integrity": "sha1-bzWxKRAqYEbTyT1F+X2ErJfH/oo=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.49" } }, "@babel/plugin-proposal-function-sent": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.46.tgz", - "integrity": "sha512-mRkAbYO+uW70bXstzChyf3Tj+39CO4X/+FoPVG7Tb2CmvX5/m4+WPi/5DhW27Gc4zGk6hd90bV6n485JwQYsRw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.49.tgz", + "integrity": "sha1-RYmXgnz2n4RgvTE40ZuRfCXrnsc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-wrap-function": "7.0.0-beta.49", + "@babel/plugin-syntax-function-sent": "7.0.0-beta.49" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0-beta.49.tgz", + "integrity": "sha1-5FSz1BTTlxnOp6btbCYdhw+rULA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-wrap-function": "7.0.0-beta.46", - "@babel/plugin-syntax-function-sent": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-json-strings": "7.0.0-beta.49" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.46.tgz", - "integrity": "sha512-GlT+pFmvWeyiVc05anxwPtewl7P7eBK7x6z9HEBVyzD/vPtsHexN1qwwZmwHBiTkS/1/QXCFr5aPyCgcyUzn9Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.49.tgz", + "integrity": "sha1-1qrnGuut5wGV0VSl1zg2BSmy8ZM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.49" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-viGuWOgFT/Tbnn3sYi3g9iJcC3ql7bSjxDs+d+GFgyf3eV2qNIKO/6I+PJAD35fGqDGGBrQhlA6HvW0FzQVtoA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-bQzWD3p718REo3HE6UcL/wL1d3w=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.49" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.46.tgz", - "integrity": "sha512-ZorB1i84PiVCFmrxglRaDDepmIknWgt8k5jA+IHmPd0/8UN5iMz2RLdIgIhyl92091DgsNxnVI50KLvGNK3++Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.49.tgz", + "integrity": "sha1-H1PTZ4UQHV60tV1laGqis5+iHEs=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.49" } }, "@babel/plugin-proposal-throw-expressions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.46.tgz", - "integrity": "sha512-l+YsUx/q/Cigmpy78KD7hLdymt0/jDtHpES2tDX0Af7wMq4Gdi6Ar59Hou/QyP1iG4vV4LvzNa5ieOKTQwm/7w==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.49.tgz", + "integrity": "sha1-dp5ub2QYxwJWjPOb6b3xg6tiQZk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.49" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-H1F53Sc7mvVxAGzs1nH7IVs4Gh6tYx9azyaMzv92RUvLYQsRm6pKaX1dQtOHJMLMgY61i65y29fQ40mvwIhfFA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-DvX7mr2pgM0Vhe9Mjo9oC2MmPHI=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-regex": "7.0.0-beta.46", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49", + "regexpu-core": "4.1.5" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.46.tgz", - "integrity": "sha512-igLQzZYcSrY/W3eACq6Nrf9u9mfw7m5G6+JeTZlyI7w0z+upGvWvrpTaAP1Gni6MckQkx5q+pspgpV+/5ioPXg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.49.tgz", + "integrity": "sha1-UO6UMAKu3JqzqNEikr013Z7bHfg=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-class-properties": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-NwtgTQ+I8B2eo5h1mZF64nloLaGQuPM4M/c/swvyvqHoWLissHhm94rOE2Ghte8WMgQ/Nw3bqJd59kpbckqmdQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-ahT6R86qMrU+FOZkgyblLaswaQQ=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-decorators": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.46.tgz", - "integrity": "sha512-yfgDxx6Vlm/gVGqHtW/rAL5gl8DuNtUqGYAdPaHl5B4GwmqhR/TNmL0mGuovky8Pruh5qTWLxK/NeCzs+p7LpA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.49.tgz", + "integrity": "sha1-F3PpCJpGcIaLLp4qpVBFoT+L1JQ=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.46.tgz", - "integrity": "sha512-D4ek6tZa80NgaTSprPOVxj8vxjChh6UCWgCT/ZvCwAa6CBe3iqUCuOwZQLjU41aDdeuR7C02wxl3rcb25wCRLA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.49.tgz", + "integrity": "sha1-8K96xrU2dqSWCT1KbiouxlXAe3g=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-export-namespace-from": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.46.tgz", - "integrity": "sha512-g2opDn12R9HhFHq/S6J8qixDNb29WNXNC+kj6Gpk4n3ZX1OCk7qBiyiFplnHUvrPrRA18IcKyPoC2SirLs15vg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.49.tgz", + "integrity": "sha1-4+/l6FYn0o7IODWnXPnCepVNcEU=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-flow": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-beta.47.tgz", - "integrity": "sha512-+3ZLKNV8tSDnTWL4QRNx5uZB/hUzY71WcgCwoXWy+8ma7EjZ3e3vbR69VR8dJwG1DqGsug6ZzM+afR0G4gKgPA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-beta.49.tgz", + "integrity": "sha1-Wz8LZcqWYFNFNWQ7glMPsdWOY+4=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" + "@babel/helper-plugin-utils": "7.0.0-beta.49" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", - "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.49.tgz", + "integrity": "sha1-Dp/LuDT4eLs2XSqOqQ7uIbo8zSM=", "dev": true } } }, "@babel/plugin-syntax-function-sent": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.46.tgz", - "integrity": "sha512-8XBmvwHwskrIslqqbuwlqcMxWjZlW4E643nM7V5YLECB9EB6ouaifQPK7mUg0R08YzeQpHj+wtR1bwtt845LEg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.49.tgz", + "integrity": "sha1-6pF9kQ53NYTJpBp/06H/LkmUgio=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-import-meta": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.46.tgz", - "integrity": "sha512-/vOa4lDBN8CpJr9MwdavcZKwqX7ueul5KwSWrxhY6rwkpq0z50vlNoWWShzDMOmQ0VWV8B6T/mV3GEOofUzh/g==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.49.tgz", + "integrity": "sha1-x6zIpTZlgxP2JPT1lc8JFHrIQmw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0-beta.49.tgz", + "integrity": "sha1-yS/ni5/y2SxYs9GLnO6py8BKUZo=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-jsx": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.46.tgz", - "integrity": "sha512-aYN4vmO4nMux1W36F6/YP2ugNQ0cilrs1eU4jClLrlIouxqd9hqBloWtlGmGlyDxIRV5kzr+UWwridLDb+cN5g==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.49.tgz", + "integrity": "sha1-FbgyUEtJ8Rb5xITo5ApeF8VC7RM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.46.tgz", - "integrity": "sha512-xLcA7vqeCFDQbpbo0rrJvrTMjnjx2i9WwOkSbw+zXy9M/bmVwGAgLGROVxeuWq1Ou8Ku827DuhCzXgyf5dWvoQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.49.tgz", + "integrity": "sha1-ADMb/O2+ASTrUyVeZn/liisynKk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-MMv6WG69jmcSLXdUeHvoev5RkuP/QuJZwCB4jXp2gtss//avs4Sns+t0VpGKTf9umhvRq44HFO6PVjVG85F+/Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-R4SziAgj/xLnQsJrQemFf3AdY54=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.46.tgz", - "integrity": "sha512-BRutzJrTLEPUidyRP1n4O2ySAww0wuJw2gIoT4iJ8Pm6qx4fqm/DM0+++TB8nR3/Tp456pHRm0bVOqpkMJdJbg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.49.tgz", + "integrity": "sha1-Ph3T1drrQnDk7khjZB1Pqga7zRE=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-syntax-throw-expressions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.46.tgz", - "integrity": "sha512-JLRBrAfQNxFZrv1K1X9SHwgj+NGDnlaFusKzdxt8E5eraIkujUNu7dVrOJ0Y7silPG3s+47fYxTzxSlRstW9fg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.49.tgz", + "integrity": "sha1-4VcAlQV5QL+16oSz7cX7Vzezq+U=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-GgeFCCMHXWRkPDXWKin76qiZh+DAYdQShmk8SmzDj6IAgPHyNqkxHN/8gsmNe5/7IWFFOKUuM9TNU7fgY7z7Gg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-3ThFtjxoPRh9UYbuDogsQEbE8OM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.46.tgz", - "integrity": "sha512-obykYLqAd3tujTjHYE+dln5+nDhm+R5FmUcxXFr/Mx6LK1NgrTQ9TdPPOcMCD08r8SDljFpMopuz9upN/xJlbw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.49.tgz", + "integrity": "sha1-kRpA65MEAYbOtpMQXKdt73/pfQM=", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.46" + "@babel/helper-module-imports": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.49" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-0paq0AtTp3TXbXdzWwsL8ddacmo/g/14IgIZgs5BzUTrfROKQThYVccEBPqRnprTgvM0JXyDVfNSgLB4akCTjg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-eqn0b9+HO3IRqqLrDTfEw3Ghq9I=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.46.tgz", - "integrity": "sha512-7OwS0ObI6nLacEKP1HCdnoIQnHBqOV6IgtKGiPO+Nj03OnZ1Yo2aeK9sfOtwL43aNztnKqFVt2L5PfZg4VGidA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.49.tgz", + "integrity": "sha1-3Vqd3ZhndciyDPW2EGWvs92eqsk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "lodash": "4.17.5" } }, "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.46.tgz", - "integrity": "sha512-EDp/qQAURfrX6hNM+VrLSSA+cGiwDeZL0ZTTt6a7PNSFABCw4qwKJHx3Q7me1oV7q3U/GJwPS4Aym2QTDmNGvg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.49.tgz", + "integrity": "sha1-U0JHHS5qMzczLqJGtGwL3fX8VE0=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.46", - "@babel/helper-define-map": "7.0.0-beta.46", - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/helper-optimise-call-expression": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-replace-supers": "7.0.0-beta.46", - "@babel/helper-split-export-declaration": "7.0.0-beta.46", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-define-map": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-optimise-call-expression": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-replace-supers": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "globals": "11.3.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-0ne9TL53fXH+cBI591R1JSpPhu0d2Wd9dbD8jLCJFV4tlMfqQ+Rcm65RhWWqjEBZfGv2+FuOnwB4HJRHakdW+Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-uCWdF0vwerS1ZWZWK0buZSDD39I=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.46.tgz", - "integrity": "sha512-l9x0+T29Njwp6smLbTIU2HG2s4ROd9DAIQcfciEfpjAqscXEst0M4X9+UvjQsuaOgPFmQTdAn9xOwNFXnRP7Tg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.49.tgz", + "integrity": "sha1-Q2Y5LJyC0SMQVsHQApQ4pg02K4I=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-5bO0XvTP+2LFDQ9qT/WaXfyieLtqz1yGsfOuq86VXmwX9tDnBnNS6pCHEGFQ866c1HmlNBWtaXttTTnvWkFBkw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-Na4rwYe+51LQ93hdJwTlK4c3c2k=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-regex": "7.0.0-beta.46", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49", + "regexpu-core": "4.1.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.46.tgz", - "integrity": "sha512-mP2+3QQ+ArIMX98zVYSC9XBzV7A/Pxbz+2hPcEAGVeakFYm5AeTkcVHRQzzA21v4ecl0L5LE1XWX9yeK643CWw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.49.tgz", + "integrity": "sha1-+sJEgJ3ey/CV43VVjMtxbaEEIxY=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.46.tgz", - "integrity": "sha512-acomgoNW/fwWSmBlhH22C9Eyl1Y/vADBSqzyIRWJGpm4frLhd49QQgKXbRGRHUDxyifXuZDF9+3pRhEmi7/HXA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.49.tgz", + "integrity": "sha1-RXstCQBHlGhKpuGwQBUIC4CgihQ=", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-beta.47.tgz", - "integrity": "sha512-X/8Gd4CxdBx7LOtW2wPSzr83bYyndqYbnJoUEosPJXOG2aRmgVo4hn+wk97vtDH+hMP7HsTApVBffrZNXS3erA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-beta.49.tgz", + "integrity": "sha1-8ComUo6UssHRHZVztj7leC1PKvk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-flow": "7.0.0-beta.47" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-flow": "7.0.0-beta.49" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", - "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.49.tgz", + "integrity": "sha1-Dp/LuDT4eLs2XSqOqQ7uIbo8zSM=", "dev": true } } }, "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.46.tgz", - "integrity": "sha512-a1gpwuO26szyz5K2FrRrI5nUDgvkaJfZ7GeDtFAH8XyrK/pNdtpW/7DFCf1PdQc6SbEMM/1QXsH7Y2YRkWoTeA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.49.tgz", + "integrity": "sha1-PscnJr8diaDU1RG+epVJBm9Xqt4=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.46.tgz", - "integrity": "sha512-XyxSW1jm7WKOoPYHUJA0mbOkDFdlHzGR4DzlWAEwXrzEI5ep0ZP1AttAbVkxsF63XG8p2t9VtKlgbyBq4Tyr7A==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.49.tgz", + "integrity": "sha1-rzn2Dnrvzpsl60rc7dBNUIZs4hg=", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-instanceof": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.46.tgz", - "integrity": "sha512-yMde/XDsS8ONNoI+QsT3RR/0Lrq5yKYEVZxMxsm+naKN/n1+CiG6sN9USAzF6qy+XC4uRTJ5gpDZu0CtDnh0qA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.49.tgz", + "integrity": "sha1-4yX5x3Gx+fsm35U9d4AhC7WHq/g=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.46.tgz", - "integrity": "sha512-Uuo7pRsBkrLrDg6XpOAMfwhKw56SB5qVBniUVM04uf8wf92S2Z5tSPNNfn1iTgphuckAO9vg86l2XJ0Y/QD4YQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.49.tgz", + "integrity": "sha1-B8g4JU1l5oZ+hlE+sPItXyawpWo=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.46.tgz", - "integrity": "sha512-GNp7F3EqJlQIMY9sfoDS03P7EHa/+Bdy6PUugTIo1TjZQUnCy3JbeL2YGI4tU8XOHJGHiBKRjFMpeOsjOSmMtw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.49.tgz", + "integrity": "sha1-FtB0gJVLBBXqcPHsPtvQWXvT3f4=", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-module-transforms": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.46.tgz", - "integrity": "sha512-3wLCWVkEhhQiVqqml4y9G6GJT6WA/mkxQ6TRy+4I46z00WWbEDENJcRTS14oNKzeRIo4yJylbVB1wUCW7HuJ9A==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.49.tgz", + "integrity": "sha1-Cfs0XVknwro72J582xOlUGftOaA=", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-simple-access": "7.0.0-beta.46" + "@babel/helper-module-transforms": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-simple-access": "7.0.0-beta.49" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.46.tgz", - "integrity": "sha512-dCIuCGaE4UyM6cYC/a2veO0vKT/iSjBZ6ux4v/LePXA/N6v9648nwE6CRmCK1/LtRw+eU0sCo+c0TPeALCszYA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.49.tgz", + "integrity": "sha1-aCJaOuExJ3G8Wjb3H/ENAsEkPZ8=", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-hoist-variables": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.46.tgz", - "integrity": "sha512-t54bMSIY5xtb8uK8aM61xZmpjQ7FJ0M/8EiCFDdx7rHff5O9eJUNEGqGaly8ZTbdp80RqbzMkyiD1V+TXYQW/Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.49.tgz", + "integrity": "sha1-cEjKWncYlwb0s+luS5luswWQ3WM=", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-module-transforms": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.46.tgz", - "integrity": "sha512-VSuIdVFUhlqADj/ymm7NG4BVjGD0sBWWN5sONTLAYzKScGZA58Ys8jSkl1dxeqWnMOEjzo8lTRWxRVvz8HIaMg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.49.tgz", + "integrity": "sha1-wv/vHruvckqeWN3hFOV+Pmhkpec=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.46.tgz", - "integrity": "sha512-T+TV4rRuTubvjqEwBF5xib3vnfJgjQ62qJqHprTaJDBtF0ofpbv/A6x86EEr51iPymHc84eM+F1zyFEtJvKYwQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.49.tgz", + "integrity": "sha1-swL1VwKEc0PBD/T7hDXMNXR1X+M=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-replace-supers": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-replace-supers": "7.0.0-beta.49" } }, "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.46.tgz", - "integrity": "sha512-RnkdYrayTlQ0VFoyIjvY/cCp/1lJJkYE2lFcRNg6+Skd3g41PnocsHhQ5NUQjMNogL+RnNan3S/2S/i7S4zm+Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.49.tgz", + "integrity": "sha1-HK1xoqMygeXvuxpGI6lkwHPOmi0=", "dev": true, "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.46", - "@babel/helper-get-function-arity": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-call-delegate": "7.0.0-beta.49", + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-property-literals": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0-beta.47.tgz", - "integrity": "sha512-BprUjFZGZ8+f8yHco0qIWFoEez/3mGScE+kzDmWIvMOLO9dBmzvM/vxTAUv/armxOl+wg4fUDLqSF99ZxjSt8g==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0-beta.49.tgz", + "integrity": "sha1-pUUlZaVTmcLfTn/WsylFOK4rtSg=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" + "@babel/helper-plugin-utils": "7.0.0-beta.49" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", - "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.49.tgz", + "integrity": "sha1-Dp/LuDT4eLs2XSqOqQ7uIbo8zSM=", "dev": true } } }, "@babel/plugin-transform-react-display-name": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.46.tgz", - "integrity": "sha512-/a7wwzNrYqReyuOM8rBB9iAOLaubvGHM9w3eUeput/DnEq/V+dJuBgktpF6mw/MQjwjna1B/3BbWsn1PaBw8bw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.49.tgz", + "integrity": "sha1-JCoAa/QSKpOyc/ad/mw5Sg/Oxjg=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.46.tgz", - "integrity": "sha512-b8VtHVQub3h7lXG1ShaCKgGJdra7fRlUK6hx1eCcIWAPYnJMz4soLMSPiXmyjDA5L0CbYmyTkceU1GjbeJmaaw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.49.tgz", + "integrity": "sha1-DyeJ/eMFw8FBUYSPhRSirxRBr1g=", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-jsx": "7.0.0-beta.46" + "@babel/helper-builder-react-jsx": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-jsx": "7.0.0-beta.49" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.46.tgz", - "integrity": "sha512-keXGiKQNzqHXpplpz/Eu+F+OC/k6M3kbEBOqoDbbYeJVmWARVADWwRnCCsW6yevSyON4CTU5mouVadTIY9YSpA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.49.tgz", + "integrity": "sha1-oRgoujgDXBqpP9RAmbmJcBn6VGw=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-jsx": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-jsx": "7.0.0-beta.49" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.46.tgz", - "integrity": "sha512-vSSghGn+ER6d5gBtNnTZAxPxBSs1ngyyVlHse/geHSv7YnzmrCOUrtVl+t4M2/EO3CW2m8nkMfpnMW5FCmg+Zw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.49.tgz", + "integrity": "sha1-Bbt0KbbdRMvcppWFSBNHqAnKqMo=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-jsx": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-jsx": "7.0.0-beta.49" } }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.46.tgz", - "integrity": "sha512-P6d8ckSjKlbr/1SL1NBO6ieFxSebTiRWd2R8/styUIizJWQlEB0ITQ7l8vv3jXGjJ0mh7lxBTegXejRkTGKKgw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.49.tgz", + "integrity": "sha1-1O15ZwM/T1tJNjwgNQOJm4NXyuI=", "dev": true, "requires": { - "regenerator-transform": "^0.12.3" + "regenerator-transform": "0.12.3" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-1QkKFWPsjrvMppycLwjPBXF+usSnGvbTxGe0Q+eIzcZyhabwGCsCgkmDIKMisPSAi6F7bM5H1S8VbE85IW3oRg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-SfE0295PZVg0whUk6eYaWNTheQA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-R0GvFdJnFrgTlmZfFtCXk81uvq5S3FuY38FnRsxDt6Yx/sE8jCmmrRe7XHZOnXXGP3ZWY9icILUmzWHOf91jbA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-arqwX8DMqCmq+eKoUES3l2Pmgco=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-goMgOLODjG1cgFHlKACh/NT/wrnmuRi2CpXsjOan10eZce0fk9kahYz/04cqhppmwtV/vQWwH2ikAHODSD8r5w==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-CMxbZM9qWUKoe92bSkgY1MuhLfM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-regex": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49" } }, "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.46.tgz", - "integrity": "sha512-2iGMsHWVAQq9X6p3VNjktJCH6ZXHQHi3NTPLKh5d4bEW8+M3H7LXLNqk1yUm/Uwt0tzh1FUfb/EU2sEPbrBrVA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.49.tgz", + "integrity": "sha1-5gmu1rj8x+HrzKzyITimRyApQKI=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.46.tgz", - "integrity": "sha512-l+CfLR2c5KzZ/uZlkflNe7nK2hiEahc/FeiUCTd5Krj4aCKDdLLSdb4Lowf5hdZbqIPQc9TdL9SZt80YhUlmFw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.49.tgz", + "integrity": "sha1-NlFBujVb9znu/Wwrud8cO3FG5FA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-XWQ7uJ0HL/xdMesKzt1uq5CmZPBqDiEno+FBeYuOJu1IWjpr3yXfEzH/nW17KESXGRv68mLTr+fIeSwcC+qVFg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-w3XbVwl1diFSPUGstiqavw1DdLg=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/helper-regex": "7.0.0-beta.46", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49", + "regexpu-core": "4.1.5" } }, "@babel/polyfill": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.46.tgz", - "integrity": "sha512-eFFWNiI3Os7bBkIA10ZGBUMywK+1/OTVg+qsrlaXRBTpAN0n1g1pXCkNN4rcGpgLPNyfZHQEj+aVAyWPGerSIQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.49.tgz", + "integrity": "sha1-YY+MZ3wwUEsT8ciBLGUyL7GsSAM=", "dev": true, "requires": { - "core-js": "^2.5.3", - "regenerator-runtime": "^0.11.1" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + } } }, "@babel/preset-env": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.46.tgz", - "integrity": "sha512-zC+QsTmteh2c1CtjeskvUKsqvRpgwBZxOxTk6p+F3gL6uJszP4OWzffgPrsV2wo9vccppTaCzYMFeiJscnne6g==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.46", - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.46", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.46", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.46", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.46", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.46", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.46", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.46", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.46", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.46", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.46", - "@babel/plugin-transform-classes": "7.0.0-beta.46", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.46", - "@babel/plugin-transform-destructuring": "7.0.0-beta.46", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.46", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.46", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.46", - "@babel/plugin-transform-for-of": "7.0.0-beta.46", - "@babel/plugin-transform-function-name": "7.0.0-beta.46", - "@babel/plugin-transform-literals": "7.0.0-beta.46", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.46", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.46", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.46", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.46", - "@babel/plugin-transform-new-target": "7.0.0-beta.46", - "@babel/plugin-transform-object-super": "7.0.0-beta.46", - "@babel/plugin-transform-parameters": "7.0.0-beta.46", - "@babel/plugin-transform-regenerator": "7.0.0-beta.46", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.46", - "@babel/plugin-transform-spread": "7.0.0-beta.46", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.46", - "@babel/plugin-transform-template-literals": "7.0.0-beta.46", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.46", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.46", - "browserslist": "^3.0.0", - "invariant": "^2.2.2", - "semver": "^5.3.0" + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.49.tgz", + "integrity": "sha1-SoqLkhOfUfovkPv28frXWXUyrrw=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.49", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.49", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.49", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.49", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.49", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.49", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.49", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.49", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.49", + "@babel/plugin-transform-classes": "7.0.0-beta.49", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.49", + "@babel/plugin-transform-destructuring": "7.0.0-beta.49", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.49", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.49", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.49", + "@babel/plugin-transform-for-of": "7.0.0-beta.49", + "@babel/plugin-transform-function-name": "7.0.0-beta.49", + "@babel/plugin-transform-literals": "7.0.0-beta.49", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.49", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.49", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.49", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.49", + "@babel/plugin-transform-new-target": "7.0.0-beta.49", + "@babel/plugin-transform-object-super": "7.0.0-beta.49", + "@babel/plugin-transform-parameters": "7.0.0-beta.49", + "@babel/plugin-transform-regenerator": "7.0.0-beta.49", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.49", + "@babel/plugin-transform-spread": "7.0.0-beta.49", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.49", + "@babel/plugin-transform-template-literals": "7.0.0-beta.49", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.49", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.49", + "browserslist": "3.2.8", + "invariant": "2.2.2", + "semver": "5.4.1" }, "dependencies": { "browserslist": { @@ -1018,14 +1053,14 @@ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "caniuse-lite": "1.0.30000846", + "electron-to-chromium": "1.3.48" } }, "caniuse-lite": { - "version": "1.0.30000844", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000844.tgz", - "integrity": "sha512-UpKQE7y6dLHhlv75UyBCRiun34Q+bmxyX3zS+ve9M07YG52tRafOvop9N9d5jC+sikKuG7UMweJKJNts4FVehA==", + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", + "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==", "dev": true }, "electron-to-chromium": { @@ -1037,98 +1072,104 @@ } }, "@babel/preset-es2015": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.46.tgz", - "integrity": "sha512-4T9AFPRkg6K8OaGeHlOY8UdJz5I03WOpAGGnNwCf4GzXnVuC/fBAnT4yQ1OZYIjabf35jBw6bE1KympDuF8HoQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.46", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.46", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.46", - "@babel/plugin-transform-classes": "7.0.0-beta.46", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.46", - "@babel/plugin-transform-destructuring": "7.0.0-beta.46", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.46", - "@babel/plugin-transform-for-of": "7.0.0-beta.46", - "@babel/plugin-transform-function-name": "7.0.0-beta.46", - "@babel/plugin-transform-instanceof": "7.0.0-beta.46", - "@babel/plugin-transform-literals": "7.0.0-beta.46", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.46", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.46", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.46", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.46", - "@babel/plugin-transform-object-super": "7.0.0-beta.46", - "@babel/plugin-transform-parameters": "7.0.0-beta.46", - "@babel/plugin-transform-regenerator": "7.0.0-beta.46", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.46", - "@babel/plugin-transform-spread": "7.0.0-beta.46", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.46", - "@babel/plugin-transform-template-literals": "7.0.0-beta.46", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.46", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.46" + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.49.tgz", + "integrity": "sha1-F6HYENQuhOcGnIapEs18fFhTd3E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.49", + "@babel/plugin-transform-classes": "7.0.0-beta.49", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.49", + "@babel/plugin-transform-destructuring": "7.0.0-beta.49", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.49", + "@babel/plugin-transform-for-of": "7.0.0-beta.49", + "@babel/plugin-transform-function-name": "7.0.0-beta.49", + "@babel/plugin-transform-instanceof": "7.0.0-beta.49", + "@babel/plugin-transform-literals": "7.0.0-beta.49", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.49", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.49", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.49", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.49", + "@babel/plugin-transform-object-super": "7.0.0-beta.49", + "@babel/plugin-transform-parameters": "7.0.0-beta.49", + "@babel/plugin-transform-regenerator": "7.0.0-beta.49", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.49", + "@babel/plugin-transform-spread": "7.0.0-beta.49", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.49", + "@babel/plugin-transform-template-literals": "7.0.0-beta.49", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.49", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.49" } }, "@babel/preset-react": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.46.tgz", - "integrity": "sha512-+Xl9AH/rhI7FTX0OxNXM4oGljpeCs1nwPm2IjD9+mXO/+dWdGpa+yTcjYYpIWAK4KQrSQ+27T6DtJ6fZPTqYQA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.49.tgz", + "integrity": "sha1-DIZ3D254pJr2+GlC9ZgL61/rdsU=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-syntax-jsx": "7.0.0-beta.46", - "@babel/plugin-transform-react-display-name": "7.0.0-beta.46", - "@babel/plugin-transform-react-jsx": "7.0.0-beta.46", - "@babel/plugin-transform-react-jsx-self": "7.0.0-beta.46", - "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-transform-react-display-name": "7.0.0-beta.49", + "@babel/plugin-transform-react-jsx": "7.0.0-beta.49", + "@babel/plugin-transform-react-jsx-self": "7.0.0-beta.49", + "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.49" } }, "@babel/preset-stage-2": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.46.tgz", - "integrity": "sha512-Lebdh+/WyFdT+G9LaSUpcXb3ZhvQfSxd/UqjQw4iaHS1j8nKWblTZBTp6ZGHjtfvbO64ERu8EtkYJ+WelzUK7Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.49.tgz", + "integrity": "sha1-ojr36KvcyoRilcL45M8zg6OxgO0=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-proposal-decorators": "7.0.0-beta.46", - "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.46", - "@babel/plugin-proposal-function-sent": "7.0.0-beta.46", - "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.46", - "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.46", - "@babel/preset-stage-3": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-proposal-decorators": "7.0.0-beta.49", + "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.49", + "@babel/plugin-proposal-function-sent": "7.0.0-beta.49", + "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.49", + "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.49", + "@babel/preset-stage-3": "7.0.0-beta.49" } }, "@babel/preset-stage-3": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.46.tgz", - "integrity": "sha512-YE5ZHOIycLjdmuzvyunyj7ZmCYfUjpDbMU+FQ2OIgWkneGUtoa2CIQTZxQp4gVUxsnXkfFTqCqmuYLJQHyY78Q==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.49.tgz", + "integrity": "sha1-OwEjErgdSD23pnXUrLqGaP1G9cM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.46", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.46", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.46", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.46", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.46", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.46", - "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.46", - "@babel/plugin-syntax-import-meta": "7.0.0-beta.46" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.49", + "@babel/plugin-proposal-class-properties": "7.0.0-beta.49", + "@babel/plugin-proposal-json-strings": "7.0.0-beta.49", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.49", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.49", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.49", + "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.49", + "@babel/plugin-syntax-import-meta": "7.0.0-beta.49" } }, "@babel/register": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0-beta.46.tgz", - "integrity": "sha512-S43PemtH5CSDE9GJesjUoAQGfC2rwLcc35gq/y6WQHPzWOd90yOvKydUk/pS7aSMrDiJSXYtyEeZFsq/8dtLhg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0-beta.49.tgz", + "integrity": "sha1-V+gjpQYuPd0lVIOY6fUHfBeZHwg=", "dev": true, "requires": { - "core-js": "^2.5.3", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.2.0", - "mkdirp": "^0.5.1", - "pirates": "^3.0.1", - "source-map-support": "^0.4.2" + "core-js": "2.5.7", + "find-cache-dir": "1.0.0", + "home-or-tmp": "3.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "pirates": "3.0.2", + "source-map-support": "0.4.18" }, "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + }, "home-or-tmp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", @@ -1147,68 +1188,75 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } } } }, "@babel/runtime": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.46.tgz", - "integrity": "sha512-/3a3USMKk54BEHhDgY8rtxtaQOs4bp4aQwo6SDtdwmrXmgSgEusWuXNX5oIs/nwzmTD9o8wz2EyAjA+uHDMmJA==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.49.tgz", + "integrity": "sha1-A7O/B+uYIHLI6FHdLd1RECguYb8=", "requires": { - "core-js": "^2.5.3", - "regenerator-runtime": "^0.11.1" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + } } }, "@babel/template": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.46.tgz", - "integrity": "sha512-3/qi4m0l6G/vZbEwtqfzJk73mYtuE7nvAO1zT3/ZrTAHy4sHf2vaF9Eh1w+Tau263Yrkh0bjVQPb9zw6G+GeMQ==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", + "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "babylon": "7.0.0-beta.46", - "lodash": "^4.2.0" + "@babel/code-frame": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", - "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.46" + "@babel/highlight": "7.0.0-beta.49" } } } }, "@babel/traverse": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.46.tgz", - "integrity": "sha512-IU7MTGbcjpfhf5tyCu3sDB7sWYainZQcT+CqOBdVZXZfq5MMr130R7aiZBI2g5dJYUaW1PS81DVNpd0/Sq/Gzg==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", + "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.46", - "@babel/generator": "7.0.0-beta.46", - "@babel/helper-function-name": "7.0.0-beta.46", - "@babel/helper-split-export-declaration": "7.0.0-beta.46", - "@babel/types": "7.0.0-beta.46", - "babylon": "7.0.0-beta.46", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", - "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.46" + "@babel/highlight": "7.0.0-beta.49" } }, "debug": { @@ -1223,14 +1271,14 @@ } }, "@babel/types": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.46.tgz", - "integrity": "sha512-uA5aruF2KKsJxToWdDpftsrPOIQtoGrGno2hiaeO9JRvfT9xZdK11nPoC+/RF9emNzmNbWn4HCRdCY+McT5Nbw==", + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", + "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" }, "dependencies": { "to-fast-properties": { @@ -2050,8 +2098,8 @@ "@babel/traverse": "7.0.0-beta.44", "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", - "eslint-scope": "~3.7.1", - "eslint-visitor-keys": "^1.0.0" + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0" }, "dependencies": { "@babel/code-frame": { @@ -2070,10 +2118,10 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.44", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -2111,9 +2159,9 @@ "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@babel/template": { @@ -2125,7 +2173,7 @@ "@babel/code-frame": "7.0.0-beta.44", "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" + "lodash": "4.17.5" } }, "@babel/traverse": { @@ -2140,10 +2188,10 @@ "@babel/helper-split-export-declaration": "7.0.0-beta.44", "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.5" } }, "@babel/types": { @@ -2152,9 +2200,9 @@ "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" } }, "babylon": { @@ -2219,11 +2267,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -2232,8 +2280,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-module-imports": { @@ -2243,7 +2291,7 @@ "dev": true, "requires": { "babel-types": "7.0.0-beta.3", - "lodash": "^4.2.0" + "lodash": "4.17.5" }, "dependencies": { "babel-types": { @@ -2252,9 +2300,9 @@ "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" } }, "to-fast-properties": { @@ -2280,8 +2328,8 @@ "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==", "dev": true, "requires": { - "babel-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.4" + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.4.4" } }, "babel-messages": { @@ -2298,7 +2346,7 @@ "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0" + "babel-plugin-syntax-dynamic-import": "6.18.0" } }, "babel-plugin-inline-import": { @@ -2333,11 +2381,11 @@ "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", "dev": true, "requires": { - "babel-helper-module-imports": "^7.0.0-beta.3", - "babel-types": "^6.26.0", - "glob": "^7.1.1", - "lodash": "^4.17.4", - "require-package-name": "^2.0.1" + "babel-helper-module-imports": "7.0.0-beta.3", + "babel-types": "6.26.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "require-package-name": "2.0.1" } }, "babel-plugin-module-resolver": { @@ -2346,11 +2394,11 @@ "integrity": "sha512-1Q77Al4ydp6nYApJ7sQ2fmgz30WuQgJZegIYuyOdbdpxenB/bSezQ3hDPsumIXGlUS4vUIv+EwFjzzXZNWtARw==", "dev": true, "requires": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" + "find-babel-config": "1.1.0", + "glob": "7.1.2", + "pkg-up": "2.0.0", + "reselect": "3.0.1", + "resolve": "1.5.0" } }, "babel-plugin-rewire-exports": { @@ -2359,7 +2407,7 @@ "integrity": "sha512-mqPQnNKIwP1lGYRSgF+fXDfXYScCDNStfp48ZtLLI3wAm7hbijQrQR41qkK7F5mb8R5G+DG2D61dKSgi/fG9qw==", "dev": true, "requires": { - "babel-template": "^6.16.0" + "babel-template": "6.26.0" } }, "babel-plugin-syntax-class-properties": { @@ -2386,10 +2434,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-preset-jest": { @@ -2398,774 +2446,1577 @@ "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^22.4.4", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" + "babel-plugin-jest-hoist": "22.4.4", + "babel-plugin-syntax-object-rest-spread": "6.13.0" } }, "babel-preset-meteor": { - "version": "7.0.0-beta.46-1", - "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.0.0-beta.46-1.tgz", - "integrity": "sha512-rM9nHO8HL08Rv9ZhEuRUbz926zDXs0st8QCklUtmOazIqteLim0EiqJYp25pQq4wiLvBJ30xv3ApnyBT5QC4ig==", - "dev": true, - "requires": { - "@babel/plugin-proposal-async-generator-functions": "^7.0.0-beta.46", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0-beta.46", - "@babel/plugin-syntax-async-generators": "^7.0.0-beta.46", - "@babel/plugin-syntax-flow": "^7.0.0-beta.46", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0-beta.46", - "@babel/plugin-transform-arrow-functions": "^7.0.0-beta.46", - "@babel/plugin-transform-async-to-generator": "^7.0.0-beta.46", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0-beta.46", - "@babel/plugin-transform-block-scoping": "^7.0.0-beta.46", - "@babel/plugin-transform-classes": "^7.0.0-beta.46", - "@babel/plugin-transform-computed-properties": "^7.0.0-beta.46", - "@babel/plugin-transform-destructuring": "^7.0.0-beta.46", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0-beta.46", - "@babel/plugin-transform-flow-strip-types": "^7.0.0-beta.46", - "@babel/plugin-transform-for-of": "^7.0.0-beta.46", - "@babel/plugin-transform-literals": "^7.0.0-beta.46", - "@babel/plugin-transform-object-super": "^7.0.0-beta.46", - "@babel/plugin-transform-parameters": "^7.0.0-beta.46", - "@babel/plugin-transform-property-literals": "^7.0.0-beta.46", - "@babel/plugin-transform-regenerator": "^7.0.0-beta.46", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-beta.46", - "@babel/plugin-transform-spread": "^7.0.0-beta.46", - "@babel/plugin-transform-sticky-regex": "^7.0.0-beta.46", - "@babel/plugin-transform-template-literals": "^7.0.0-beta.46", - "@babel/plugin-transform-typeof-symbol": "^7.0.0-beta.46", - "@babel/plugin-transform-unicode-regex": "^7.0.0-beta.46" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.0.0-beta.49.tgz", + "integrity": "sha512-368L/WxKj/13vYRVa/C2Ku5oRNNln6kZAZyePGXuzfRyZ64eJf3eGdkMjx/VZhnfQmSgvTyx8tc5IYnCQ4uahg==", + "dev": true, + "requires": { + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.49", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.49", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.49", + "@babel/plugin-syntax-flow": "7.0.0-beta.49", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.49", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.49", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.49", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.49", + "@babel/plugin-transform-classes": "7.0.0-beta.49", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.49", + "@babel/plugin-transform-destructuring": "7.0.0-beta.49", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.49", + "@babel/plugin-transform-flow-strip-types": "7.0.0-beta.49", + "@babel/plugin-transform-for-of": "7.0.0-beta.49", + "@babel/plugin-transform-literals": "7.0.0-beta.49", + "@babel/plugin-transform-object-super": "7.0.0-beta.49", + "@babel/plugin-transform-parameters": "7.0.0-beta.49", + "@babel/plugin-transform-property-literals": "7.0.0-beta.49", + "@babel/plugin-transform-regenerator": "7.0.0-beta.49", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.49", + "@babel/plugin-transform-spread": "7.0.0-beta.49", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.49", + "@babel/plugin-transform-template-literals": "7.0.0-beta.49", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.49", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.49" }, "dependencies": { - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "@babel/code-frame": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", + "@babel/highlight": "7.0.0-beta.49" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", + "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49", + "jsesc": "2.5.1", "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "@babel/helper-annotate-as-pure": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.49.tgz", + "integrity": "sha1-fZAF1U/nrWy4dnkCUedVdUGRhuk=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.49.tgz", + "integrity": "sha1-xi3VBCtUpZDV5x5gIMRrkdbGyHU=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "@babel/helper-call-delegate": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.49.tgz", + "integrity": "sha1-S11BeCpoPV3GSXg0oyMQqNAqOvk=", + "dev": true, "requires": { - "source-map": "0.5.7" + "@babel/helper-hoist-variables": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.5" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "7.0.0-beta.46", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz", - "integrity": "sha512-WFJlg2WatdkXRFMpk7BN/Uzzkjkcjk+WaqnrSCpay+RYl4ypW9ZetZyT9kNt22IH/BQNst3M6PaaBn9IXsUNrg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "@babel/helper-define-map": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.49.tgz", + "integrity": "sha1-TqBnqnIJNyQN85XNBzwk/K2cKzs=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "base64-js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", - "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", - "dev": true - }, - "base64url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.49.tgz", + "integrity": "sha1-K/uV337BMHNb9lXkSiF6cNOxPpM=", + "dev": true, + "requires": { + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", + "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", + "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.49.tgz", + "integrity": "sha1-2XQGUck7tPp5wba6xjQFH8TQP/U=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-L2QrAD1FFV4KnnpK0OaI2Ru8FYM=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.49.tgz", + "integrity": "sha1-QdfVmJEBbEk0MqRvdGREZVKJDHU=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.49.tgz", + "integrity": "sha1-qYtDw6bFS+9I+HsQ3EVo3sC0G/c=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.49.tgz", + "integrity": "sha1-Dp/LuDT4eLs2XSqOqQ7uIbo8zSM=", "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "@babel/helper-regex": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-/yRPGcKi8Wf/SzFlpjawj9ZBgWs=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "lodash": "4.17.5" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.49.tgz", + "integrity": "sha1-s/2qtBJ4TX6GV7rKsoaSPvyUmLg=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-wrap-function": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } - } - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "2.0.3" - } - }, - "bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.0" - } - }, - "bootstrap": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", - "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" - }, - "bops": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", - "integrity": "sha1-Bi4CqNqoAfoQ8uXb5nQM/4Af4X4=", - "dev": true, - "requires": { - "base64-js": "0.0.2", - "to-utf8": "0.0.1" - } - }, - "bowser": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.2.tgz", - "integrity": "sha512-fuiANC1Bqbqa/S4gmvfCt7bGBmNELMsGZj4Wg3PrP6esP66Ttoj1JSlzFlXtHyduMv07kDNmDsX6VsMWT/MLGg==" - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "braintree": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/braintree/-/braintree-2.7.0.tgz", - "integrity": "sha1-IK0kFxybYLgUa3t+ObL01cAdriM=", - "requires": { - "@braintree/wrap-promise": "1.1.1", - "dateformat": "1.0.1-1.2.3", - "depd": "1.1.2", - "readable-stream": "1.1.10", - "semver": "5.1.0", - "underscore": "1.8.3", - "xml2js": "0.1.13" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.10.tgz", - "integrity": "sha1-1NwuUxnpyQ0eccaTkO9izZCCf2U=", + }, + "@babel/helper-replace-supers": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.49.tgz", + "integrity": "sha1-50RMcYBX9qCjZFyvjnj7VG/7DZ8=", + "dev": true, "requires": { - "core-util-is": "1.0.2", - "debuglog": "0.0.2", - "string_decoder": "0.10.31" + "@babel/helper-member-expression-to-functions": "7.0.0-beta.49", + "@babel/helper-optimise-call-expression": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" } }, - "semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", + "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "@babel/helper-wrap-function": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.49.tgz", + "integrity": "sha1-OFWRRgtNk++W7jgZU5wM3Ju9R1g=", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + "@babel/highlight": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", + "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "dev": true, + "requires": { + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } }, - "xml2js": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.13.tgz", - "integrity": "sha1-Q4/zsdhaUa1ln/wuvoNAPhDJhyI=", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-h2Gl4ti1JR5w3yj00KpkqiillrE=", + "dev": true, "requires": { - "sax": "1.2.4" + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.49", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.49" } - } - } - }, - "brcast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", - "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" - }, - "browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true - }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-bQzWD3p718REo3HE6UcL/wL1d3w=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.49" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.49.tgz", + "integrity": "sha1-UO6UMAKu3JqzqNEikr013Z7bHfg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-R4SziAgj/xLnQsJrQemFf3AdY54=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-3ThFtjxoPRh9UYbuDogsQEbE8OM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.49.tgz", + "integrity": "sha1-kRpA65MEAYbOtpMQXKdt73/pfQM=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.49.tgz", + "integrity": "sha1-eqn0b9+HO3IRqqLrDTfEw3Ghq9I=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.49.tgz", + "integrity": "sha1-3Vqd3ZhndciyDPW2EGWvs92eqsk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "lodash": "4.17.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.49.tgz", + "integrity": "sha1-U0JHHS5qMzczLqJGtGwL3fX8VE0=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-define-map": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-optimise-call-expression": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-replace-supers": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "globals": "11.3.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-uCWdF0vwerS1ZWZWK0buZSDD39I=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.49.tgz", + "integrity": "sha1-Q2Y5LJyC0SMQVsHQApQ4pg02K4I=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.49.tgz", + "integrity": "sha1-RXstCQBHlGhKpuGwQBUIC4CgihQ=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.49.tgz", + "integrity": "sha1-PscnJr8diaDU1RG+epVJBm9Xqt4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.49.tgz", + "integrity": "sha1-B8g4JU1l5oZ+hlE+sPItXyawpWo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.49.tgz", + "integrity": "sha1-swL1VwKEc0PBD/T7hDXMNXR1X+M=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-replace-supers": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.49.tgz", + "integrity": "sha1-HK1xoqMygeXvuxpGI6lkwHPOmi0=", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.0.0-beta.49", + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.49.tgz", + "integrity": "sha1-1O15ZwM/T1tJNjwgNQOJm4NXyuI=", + "dev": true, + "requires": { + "regenerator-transform": "0.12.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.49.tgz", + "integrity": "sha1-SfE0295PZVg0whUk6eYaWNTheQA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.49.tgz", + "integrity": "sha1-arqwX8DMqCmq+eKoUES3l2Pmgco=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-CMxbZM9qWUKoe92bSkgY1MuhLfM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.49.tgz", + "integrity": "sha1-5gmu1rj8x+HrzKzyITimRyApQKI=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.49", + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.49.tgz", + "integrity": "sha1-NlFBujVb9znu/Wwrud8cO3FG5FA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.49.tgz", + "integrity": "sha1-w3XbVwl1diFSPUGstiqavw1DdLg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0-beta.49", + "@babel/helper-regex": "7.0.0-beta.49", + "regexpu-core": "4.1.5" + } + }, + "@babel/template": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", + "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", + "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.5" + } + }, + "@babel/types": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", + "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true } } }, - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "caniuse-lite": "1.0.30000813", - "electron-to-chromium": "1.3.36" + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } + } } }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "node-int64": "0.4.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, - "bson": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", - "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" - }, - "buffer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", - "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", - "dev": true, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "base64-js": "0.0.8", - "ieee754": "1.1.11", - "isarray": "1.0.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" }, "dependencies": { - "base64-js": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", - "dev": true + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" } } }, - "buffer-alloc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", - "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.1" + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + } } }, - "buffer-alloc-unsafe": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", - "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } }, - "buffer-equal": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } }, - "buffer-fill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", - "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==", + "base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", "dev": true }, - "buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, - "bunyan-format": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/bunyan-format/-/bunyan-format-0.2.1.tgz", - "integrity": "sha1-pLOw2ABwqGUnlBcmnj8A/wL7y0c=", + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, "requires": { - "ansicolors": "0.2.1", - "ansistyles": "0.1.3", - "xtend": "2.1.2" + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" }, "dependencies": { - "ansicolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", - "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "bootstrap": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", + "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" + }, + "bops": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", + "integrity": "sha1-Bi4CqNqoAfoQ8uXb5nQM/4Af4X4=", + "dev": true, + "requires": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + } + }, + "bowser": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.2.tgz", + "integrity": "sha512-fuiANC1Bqbqa/S4gmvfCt7bGBmNELMsGZj4Wg3PrP6esP66Ttoj1JSlzFlXtHyduMv07kDNmDsX6VsMWT/MLGg==" + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "braintree": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/braintree/-/braintree-2.7.0.tgz", + "integrity": "sha1-IK0kFxybYLgUa3t+ObL01cAdriM=", + "requires": { + "@braintree/wrap-promise": "1.1.1", + "dateformat": "1.0.1-1.2.3", + "depd": "1.1.2", + "readable-stream": "1.1.10", + "semver": "5.1.0", + "underscore": "1.8.3", + "xml2js": "0.1.13" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.10.tgz", + "integrity": "sha1-1NwuUxnpyQ0eccaTkO9izZCCf2U=", + "requires": { + "core-util-is": "1.0.2", + "debuglog": "0.0.2", + "string_decoder": "0.10.31" + } + }, + "semver": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "xml2js": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.13.tgz", + "integrity": "sha1-Q4/zsdhaUa1ln/wuvoNAPhDJhyI=", + "requires": { + "sax": "1.2.4" + } + } + } + }, + "brcast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", + "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "1.0.30000813", + "electron-to-chromium": "1.3.36" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "bson": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", + "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" + }, + "buffer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "ieee754": "1.1.11", + "isarray": "1.0.0" + }, + "dependencies": { + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + } + } + }, + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.1" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-fill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", + "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==", + "dev": true + }, + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "bunyan-format": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/bunyan-format/-/bunyan-format-0.2.1.tgz", + "integrity": "sha1-pLOw2ABwqGUnlBcmnj8A/wL7y0c=", + "requires": { + "ansicolors": "0.2.1", + "ansistyles": "0.1.3", + "xtend": "2.1.2" + }, + "dependencies": { + "ansicolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "requires": { + "object-keys": "0.4.0" + } + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "caniuse-lite": { + "version": "1.0.30000813", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz", + "integrity": "sha512-A8ITSmH5SFdMFdC704ggjg+x2z5PzQmVlG8tavwnfvbC33Q1UYrj0+G+Xm0SNAnd4He36fwUE/KEWytOEchw+A==" + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + }, + "dependencies": { + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.3" + } + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + } + } + }, + "chain-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", + "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "5.2.0" + } + }, + "change-emitter": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", + "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.5", + "parse5": "3.0.3" + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "optional": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "optional": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "optional": true, "requires": { - "object-keys": "0.4.0" + "is-extglob": "2.1.1" } - } - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - } - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "caniuse-lite": { - "version": "1.0.30000813", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz", - "integrity": "sha512-A8ITSmH5SFdMFdC704ggjg+x2z5PzQmVlG8tavwnfvbC33Q1UYrj0+G+Xm0SNAnd4He36fwUE/KEWytOEchw+A==" - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "dev": true, - "requires": { - "underscore-contrib": "0.3.0" - } - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", - "dev": true, - "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.3" - }, - "dependencies": { - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true, + "optional": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, "requires": { - "type-detect": "4.0.3" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true } } }, - "chain-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", - "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" - }, - "chalk": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", - "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "5.2.0" - } - }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.5", - "parse5": "3.0.3" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, "chownr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", @@ -4985,8 +5836,8 @@ "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", "dev": true, "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" + "json5": "0.5.1", + "path-exists": "3.0.0" } }, "find-cache-dir": { @@ -4995,9 +5846,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" }, "dependencies": { "pkg-dir": { @@ -5006,7 +5857,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } } } @@ -6319,7 +7170,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "hosted-git-info": { @@ -7544,7 +8395,7 @@ "dev": true, "requires": { "babel-core": "6.26.0", - "babel-jest": "^22.4.1", + "babel-jest": "22.4.4", "babel-plugin-istanbul": "4.1.5", "chalk": "2.3.1", "convert-source-map": "1.5.1", @@ -9115,7 +9966,7 @@ "requires": { "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "2.0.0", + "process-nextick-args": "~2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -10677,9 +11528,9 @@ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" + "graceful-fs": "4.1.11", + "is-plain-obj": "1.1.0", + "mkdirp": "0.5.1" } }, "p-cancelable": { @@ -10971,7 +11822,7 @@ "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "node-modules-regexp": "1.0.0" } }, "pkg-dir": { @@ -11010,7 +11861,7 @@ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } }, "pluralize": { @@ -12107,7 +12958,7 @@ "integrity": "sha512-BvXxRS7RfVWxtm7vrq+0I0j7sqZ1zeSC+yzf5HS0qLnKcZPX541gFEGB39LvGuKHrkyKXrzXug+oC7xkM1Zovw==", "dev": true, "requires": { - "regenerate": "^1.3.3" + "regenerate": "1.4.0" } }, "regenerator-runtime": { @@ -12121,7 +12972,7 @@ "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", "dev": true, "requires": { - "private": "^0.1.6" + "private": "0.1.8" } }, "regex-cache": { @@ -12155,12 +13006,12 @@ "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^6.0.0", - "regjsgen": "^0.4.0", - "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "regenerate": "1.4.0", + "regenerate-unicode-properties": "6.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.3", + "unicode-match-property-value-ecmascript": "1.0.1" } }, "registry-auth-token": { @@ -12194,7 +13045,7 @@ "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -12318,7 +13169,7 @@ "integrity": "sha1-urQQqxruLz9Vt5MXRR3TQodk5vM=", "dev": true, "requires": { - "x-path": "^0.0.2" + "x-path": "0.0.2" } }, "require-uncached": { @@ -14465,8 +15316,8 @@ "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.2", - "unicode-property-aliases-ecmascript": "^1.0.3" + "unicode-canonical-property-names-ecmascript": "1.0.3", + "unicode-property-aliases-ecmascript": "1.0.3" } }, "unicode-match-property-value-ecmascript": { @@ -14693,7 +15544,7 @@ "integrity": "sha512-0m69VIK2dudEf2Ub0xwLQhZkDZu85OmiOpTw+UGDt56ibviYICHziM/3aE+oVg7IjGPp0c83w3eSVqa+lYZ9UQ==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "homedir-polyfill": "1.0.1" } }, "validate-npm-package-license": { @@ -14992,7 +15843,7 @@ "integrity": "sha1-KU0Ha7l6dwbMBwu7Km/YxU32exI=", "dev": true, "requires": { - "path-extra": "^1.0.2" + "path-extra": "1.0.3" } }, "xdg-basedir": { diff --git a/package.json b/package.json index e2d2066222c..ef1917a6fa8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "url": "https://github.com/reactioncommerce/reaction/issues" }, "dependencies": { - "@babel/runtime": "7.0.0-beta.46", + "@babel/runtime": "7.0.0-beta.49", "@reactioncommerce/file-collections": "0.5.0", "@reactioncommerce/file-collections-sa-gridfs": "0.0.2", "@reactioncommerce/hooks": "1.0.2", @@ -141,13 +141,13 @@ "velocity-react": "^1.3.3" }, "devDependencies": { - "@babel/cli": "7.0.0-beta.46", - "@babel/core": "7.0.0-beta.46", - "@babel/node": "7.0.0-beta.46", - "@babel/preset-env": "7.0.0-beta.46", - "@babel/preset-es2015": "7.0.0-beta.46", - "@babel/preset-react": "7.0.0-beta.46", - "@babel/preset-stage-2": "7.0.0-beta.46", + "@babel/cli": "7.0.0-beta.49", + "@babel/core": "7.0.0-beta.49", + "@babel/node": "7.0.0-beta.49", + "@babel/preset-env": "7.0.0-beta.49", + "@babel/preset-es2015": "7.0.0-beta.49", + "@babel/preset-react": "7.0.0-beta.49", + "@babel/preset-stage-2": "7.0.0-beta.49", "@reactioncommerce/eslint-config": "^1.0.1", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "8.2.3", @@ -158,7 +158,7 @@ "babel-plugin-module-resolver": "3.1.1", "babel-plugin-rewire-exports": "0.3.0", "babel-plugin-transform-class-properties": "6.24.1", - "babel-preset-meteor": "7.0.0-beta.46-1", + "babel-preset-meteor": "7.0.0-beta.49", "chai": "^4.1.2", "enzyme": "^3.3.0", "enzyme-to-json": "^3.3.1", From b69793c3c5691af1cf4b0c8989959d4bd5d80edc Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 29 May 2018 16:15:16 -0500 Subject: [PATCH 104/201] feat: updated Factory makeOne function to call a provided function as a mocks custom property --- imports/test-utils/helpers/dataFactory.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index 8282ad7c047..814253364b1 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -13,10 +13,6 @@ const getMockDoc = (schema, prefix, addId) => { // const seed = Array.prototype.reduce.call(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); // faker.seed(seed); - if (process.env.NODE_ENV !== "jesttest" || !schema) { - return mockDoc; - } - Object.keys(model).forEach((key) => { let fieldValue = null; @@ -164,13 +160,20 @@ export function createFactoryForSchema(propName, schema) { } Factory[propName] = { - makeOne(props) { + makeOne(props, index) { const doc = getMockDoc(schema, "mock", true); - Object.assign(doc, props); + Object.keys(props).forEach((key) => { + const value = props[key]; + if (typeof value === "function") { + doc[key] = value(index); + } else { + doc[key] = value; + } + }); return doc; }, makeMany(length, props) { - return Array.from({ length }).map(() => this.makeOne(props)); + return Array.from({ length }).map((value, index) => this.makeOne(props, index)); } }; } From 37c766018aa016a37f7f1c04f0297a28396a681b Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 29 May 2018 16:16:17 -0500 Subject: [PATCH 105/201] test: tags integration test now using mockTags from the Factory object --- tests/tag/tags.test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index 54b7d47fd8a..439812be36f 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -13,7 +13,7 @@ for (let i = 100; i < 155; i += 1) { const tagPosition = i; tags.push({ _id: tagId, name: tagName, shopId: internalShopId, position: tagPosition }); } -const mockTags = Factory.Tag.makeMany(55, { shopId: internalShopId }); +const mockTags = Factory.Tag.makeMany(55, { shopId: internalShopId, _id: (i) => (i + 100).toString(), position: (i) => i + 100 }); const tagsQuery = `($shopId: ID!, $after: ConnectionCursor, $before: ConnectionCursor, $first: ConnectionLimitInt, $last: ConnectionLimitInt) { tags(shopId: $shopId, after: $after, before: $before, first: $first, last: $last) { @@ -134,6 +134,7 @@ test("works correctly when last goes before start", async () => { test("testing data factory", () => { const spec = true; + console.log("factory tags", mockTags.length); expect(spec).toBe(false); }); From c77c81a3ed157db6b8c7b92a10046f9fd6810671 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 15:10:25 -0500 Subject: [PATCH 106/201] feat: added product cart orders inventory schemas back to the main schemas --- imports/collections/schemas/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/imports/collections/schemas/index.js b/imports/collections/schemas/index.js index 635abea1075..889486a1e83 100644 --- a/imports/collections/schemas/index.js +++ b/imports/collections/schemas/index.js @@ -18,16 +18,16 @@ export * from "./accounts"; export * from "./address"; export * from "./assets"; export * from "./catalog"; -// export * from "./cart"; +export * from "./cart"; export * from "./emails"; -// export * from "./inventory"; +export * from "./inventory"; export * from "./layouts"; export * from "./logs"; export * from "./metafield"; export * from "./notifications"; -// export * from "./orders"; +export * from "./orders"; export * from "./payments"; -// export * from "./products"; +export * from "./products"; export * from "./registry"; export * from "./shipping"; export * from "./shops"; From 9f5c09b4807a5d559ec260870897394dbb450784 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 15:13:41 -0500 Subject: [PATCH 107/201] refactor: removed Reaction.getSlug call for handl updates from productAdmin container in favor of doing it on the server, updated createProduct util fruntion for create a random handle when new products are created --- .../core/catalog/server/methods/catalog.js | 21 ++++++++++++++++--- .../client/containers/productAdmin.js | 7 +------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 9b52d15dd6a..78bc8bc3ef3 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -317,11 +317,21 @@ function flushQuantity(id) { * @return {Object} product - new product */ function createProduct(props = null) { + + const finalProps = props || {}; + if (finalProps.type !== "variant" && !finalProps.handle) { + if (typeof finalProps.title === "string" && finalProps.title.length) { + finalProps.handle = Reaction.getSlug(finalProps.title); + } else { + finalProps.handle = Random.id(); + } + } + const _id = Products.insert( { shopId: Reaction.getShopId(), type: "simple", - ...props + ...finalProps }, { validate: false @@ -966,6 +976,12 @@ Meteor.methods({ throw new Meteor.Error("access-denied", "Access Denied"); } + // if (field === "inventoryQuantity" && value === "") { + // if (!Promise.await(hasChildVariant(_id, collection))) { + // throw new Meteor.Error("invalid", "Inventory Quantity is required when no child variants"); + // } + // } + const { type } = doc; let update; // handle booleans with correct typing @@ -976,7 +992,7 @@ Meteor.methods({ update = { // TODO: write function to ensure new handle is unique. // Should be a call similar to the line below. - [field]: createHandle(value, _id) // handle should be unique + [field]: createHandle(Reaction.getSlug(value), _id) // handle should be unique }; } else if (field === "title" && doc.handle === doc._id) { // update handle once title is set @@ -992,7 +1008,6 @@ Meteor.methods({ // we need to use sync mode here, to return correct error and result to UI let result; - try { result = updateCatalogProduct( this.userId, diff --git a/imports/plugins/included/product-admin/client/containers/productAdmin.js b/imports/plugins/included/product-admin/client/containers/productAdmin.js index f6c40b86830..eab597c0b4b 100644 --- a/imports/plugins/included/product-admin/client/containers/productAdmin.js +++ b/imports/plugins/included/product-admin/client/containers/productAdmin.js @@ -37,12 +37,7 @@ const wrapComponent = (Comp) => ( } handleProductFieldSave = (productId, fieldName, value) => { - let updateValue = value; - // special case, slugify handles. - if (fieldName === "handle") { - updateValue = Reaction.getSlug(value); - } - Meteor.call("products/updateProductField", productId, fieldName, updateValue, (error) => { + Meteor.call("products/updateProductField", productId, fieldName, value, (error) => { if (error) { Alerts.toast(error.message, "error"); this.forceUpdate(); From b16c5353af57b3df85841df62d64e3e12941320a Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 16:05:10 -0500 Subject: [PATCH 108/201] feat: created a new catalog util function that returns true if a product has a child variant, created hasChildVariant test --- .../server/no-meteor/utils/hasChildVariant.js | 18 +++ .../no-meteor/utils/hasChildVariant.test.js | 111 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js create mode 100644 imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js diff --git a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js new file mode 100644 index 00000000000..d468409b1ad --- /dev/null +++ b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js @@ -0,0 +1,18 @@ +/** + * + * @method hasChildVariant + * @summary Return true if a Product or Variant has at least 1 child Product. + * @param {string} productOrVariantId - A Product or Product Variant ID. + * @param {Object} collections - Raw mongo collections. + * @return {Promise} True if Product has a child. + */ +export default async function hasChildVariant(productOrVariantId, collections) { + const { Products } = collections; + const child = await Products.findOne({ + ancestors: productOrVariantId, + type: "variant", + isVisible: true, + isDeleted: { $ne: true } + }); + return !!child; +} diff --git a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js new file mode 100644 index 00000000000..721a30dff6e --- /dev/null +++ b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js @@ -0,0 +1,111 @@ +import mockContext from "/imports/test-utils/helpers/mockContext"; +import hasChildVariant from "./hasChildVariant"; + +const mockCollections = { ...mockContext.collections }; + +const internalShopId = "123"; +const internalCatalogProductId = "999"; +const internalProductId = "999"; +const internalVariantIds = ["875", "874"]; + +const createdAt = new Date("2018-04-16T15:34:28.043Z"); +const updatedAt = new Date("2018-04-17T15:34:28.043Z"); + +const mockVariants = [ + { + _id: internalVariantIds[0], + ancestors: [internalCatalogProductId], + barcode: "barcode", + createdAt, + height: 0, + index: 0, + inventoryManagement: true, + inventoryPolicy: false, + isLowQuantity: true, + isSoldOut: false, + isDeleted: false, + isVisible: true, + length: 0, + lowInventoryWarningThreshold: 0, + metafields: [ + { + value: "value", + namespace: "namespace", + description: "description", + valueType: "valueType", + scope: "scope", + key: "key" + } + ], + minOrderQuantity: 0, + optionTitle: "Untitled Option", + originCountry: "US", + price: 0, + shopId: internalShopId, + sku: "sku", + taxable: true, + taxCode: "0000", + taxDescription: "taxDescription", + title: "Small Concrete Pizza", + updatedAt, + variantId: internalVariantIds[0], + weight: 0, + width: 0 + }, + { + _id: internalVariantIds[1], + ancestors: [internalCatalogProductId, internalVariantIds[0]], + barcode: "barcode", + height: 2, + index: 0, + inventoryManagement: true, + inventoryPolicy: true, + isLowQuantity: true, + isSoldOut: false, + isDeleted: false, + isVisible: true, + length: 2, + lowInventoryWarningThreshold: 0, + metafields: [ + { + value: "value", + namespace: "namespace", + description: "description", + valueType: "valueType", + scope: "scope", + key: "key" + } + ], + minOrderQuantity: 0, + optionTitle: "Awesome Soft Bike", + originCountry: "US", + price: 992.0, + shopId: internalShopId, + sku: "sku", + taxable: true, + taxCode: "0000", + taxDescription: "taxDescription", + title: "One pound bag", + variantId: internalVariantIds[1], + weight: 2, + width: 2 + } +]; + +test("expect true when product has a child", async () => { + mockCollections.Products.findOne.mockReturnValueOnce(Promise.resolve(mockVariants[0])); + const spec = await hasChildVariant(internalProductId, mockCollections); + expect(spec).toBe(true); +}); + +test("expect true when product variant has a child", async () => { + mockCollections.Products.findOne.mockReturnValueOnce(Promise.resolve(mockVariants[1])); + const spec = await hasChildVariant(internalVariantIds[0], mockCollections); + expect(spec).toBe(true); +}); + +test("expect false when product does not a child", async () => { + mockCollections.Products.findOne.mockReturnValueOnce(Promise.resolve(null)); + const spec = await hasChildVariant(internalVariantIds[1], mockCollections); + expect(spec).toBe(false); +}); From bfbd0423a0f6e33da7edd598a718cb400d3b4ae3 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 16:40:05 -0500 Subject: [PATCH 109/201] refactor: removed custom function for inventoryQuantity from Product schema, added Error check for invalid inventoryQuantity when updating product fields --- imports/collections/schemas/products.js | 12 +----------- .../plugins/core/catalog/server/methods/catalog.js | 11 ++++++----- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/imports/collections/schemas/products.js b/imports/collections/schemas/products.js index 77ea8d7e627..8d0ae012c0a 100644 --- a/imports/collections/schemas/products.js +++ b/imports/collections/schemas/products.js @@ -1,7 +1,6 @@ import SimpleSchema from "simpl-schema"; import { Meteor } from "meteor/meteor"; import { registerSchema } from "@reactioncommerce/schemas"; -import { ReactionProduct } from "/lib/api"; import { createdAtAutoValue, updatedAtAutoValue } from "./helpers"; import { Event } from "./event"; import { Metafield } from "./metafield"; @@ -243,16 +242,7 @@ export const ProductVariant = new SimpleSchema({ type: SimpleSchema.Integer, label: "Quantity", optional: true, - defaultValue: 0, - custom() { - if (Meteor.isClient) { - if (this.siblingField("type").value !== "inventory") { - if (ReactionProduct.checkChildVariants(this.docId) === 0 && !this.value) { - return SimpleSchema.ErrorTypes.REQUIRED; - } - } - } - } + defaultValue: 0 }, "minOrderQuantity": { label: "Minimum order quantity", diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index 78bc8bc3ef3..eceae56a4fe 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -10,6 +10,7 @@ import { Media } from "/imports/plugins/core/files/server"; import rawCollections from "/imports/collections/rawCollections"; import getProductPriceRange from "../no-meteor/utils/getProductPriceRange"; import getVariants from "../no-meteor/utils/getVariants"; +import hasChildVariant from "../no-meteor/utils/hasChildVariant"; import isSoldOut from "../no-meteor/utils/isSoldOut"; import isLowQuantity from "../no-meteor/utils/isLowQuantity"; import isBackorder from "../no-meteor/utils/isBackorder"; @@ -976,11 +977,11 @@ Meteor.methods({ throw new Meteor.Error("access-denied", "Access Denied"); } - // if (field === "inventoryQuantity" && value === "") { - // if (!Promise.await(hasChildVariant(_id, collection))) { - // throw new Meteor.Error("invalid", "Inventory Quantity is required when no child variants"); - // } - // } + if (field === "inventoryQuantity" && value === "") { + if (!Promise.await(hasChildVariant(_id, rawCollections))) { + throw new Meteor.Error("invalid", "Inventory Quantity is required when no child variants"); + } + } const { type } = doc; let update; From be0308cbf080cb85bd874e727b58ec9881d535d6 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 17:04:55 -0500 Subject: [PATCH 110/201] test: Tags integration & query test now using the mocks Factory test util --- .../server/resolvers/tag/Query/tags.test.js | 28 ++++++++++--------- tests/tag/tags.test.js | 15 ---------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/imports/plugins/core/graphql/server/resolvers/tag/Query/tags.test.js b/imports/plugins/core/graphql/server/resolvers/tag/Query/tags.test.js index ae09b4663b8..1392dd2aa58 100644 --- a/imports/plugins/core/graphql/server/resolvers/tag/Query/tags.test.js +++ b/imports/plugins/core/graphql/server/resolvers/tag/Query/tags.test.js @@ -1,30 +1,32 @@ import tagsResolver from "./tags"; import getFakeMongoCursor from "/imports/test-utils/helpers/getFakeMongoCursor"; +import Factory from "/imports/test-utils/helpers/factory"; const base64ID = "cmVhY3Rpb24vc2hvcDoxMjM="; // reaction/shop:123 - -const mockTags = [ - { _id: "a1", name: "Men" }, - { _id: "b2", name: "Women" }, - { _id: "c3", name: "Children" } -]; - +const mockTags = Factory.Tag.makeMany(3, { _id: (i) => (i + 100).toString() }); const mockTagsQuery = getFakeMongoCursor("Tags", mockTags); test("calls queries.tags and returns a partial connection", async () => { - const tags = jest.fn().mockName("queries.tags").mockReturnValueOnce(Promise.resolve(mockTagsQuery)); + const tags = jest + .fn() + .mockName("queries.tags") + .mockReturnValueOnce(Promise.resolve(mockTagsQuery)); - const result = await tagsResolver({}, { shopId: base64ID }, { - queries: { tags } - }); + const result = await tagsResolver( + {}, + { shopId: base64ID }, + { + queries: { tags } + } + ); expect(result).toEqual({ nodes: mockTags, pageInfo: { - endCursor: "c3", + endCursor: "102", hasNextPage: false, hasPreviousPage: false, - startCursor: "a1" + startCursor: "100" }, totalCount: 3 }); diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index 439812be36f..b7288273c35 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -6,13 +6,6 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; const internalShopId = "123"; const opaqueShopId = "cmVhY3Rpb24vc2hvcDoxMjM="; // reaction/shop:123 const shopName = "Test Shop"; -const tags = []; -for (let i = 100; i < 155; i += 1) { - const tagName = i.toString(); - const tagId = i.toString(); - const tagPosition = i; - tags.push({ _id: tagId, name: tagName, shopId: internalShopId, position: tagPosition }); -} const mockTags = Factory.Tag.makeMany(55, { shopId: internalShopId, _id: (i) => (i + 100).toString(), position: (i) => i + 100 }); const tagsQuery = `($shopId: ID!, $after: ConnectionCursor, $before: ConnectionCursor, $first: ConnectionLimitInt, $last: ConnectionLimitInt) { @@ -130,11 +123,3 @@ test("works correctly when last goes before start", async () => { expect(result.tags.totalCount).toBe(55); expect(result.tags.pageInfo).toEqual({ endCursor: null, hasNextPage: true, hasPreviousPage: false, startCursor: null }); }); - - -test("testing data factory", () => { - const spec = true; - - console.log("factory tags", mockTags.length); - expect(spec).toBe(false); -}); From 206dc2a65f26cec6fc6b05306e6c074f91677091 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 30 May 2018 17:16:04 -0500 Subject: [PATCH 111/201] chore: fixed linting issues --- .../core/catalog/server/methods/catalog.js | 1 - imports/test-utils/helpers/dataFactory.js | 20 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/imports/plugins/core/catalog/server/methods/catalog.js b/imports/plugins/core/catalog/server/methods/catalog.js index eceae56a4fe..b846df0d71e 100644 --- a/imports/plugins/core/catalog/server/methods/catalog.js +++ b/imports/plugins/core/catalog/server/methods/catalog.js @@ -318,7 +318,6 @@ function flushQuantity(id) { * @return {Object} product - new product */ function createProduct(props = null) { - const finalProps = props || {}; if (finalProps.type !== "variant" && !finalProps.handle) { if (typeof finalProps.title === "string" && finalProps.title.length) { diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js index 814253364b1..0062f0c5565 100644 --- a/imports/test-utils/helpers/dataFactory.js +++ b/imports/test-utils/helpers/dataFactory.js @@ -32,7 +32,7 @@ const getMockDoc = (schema, prefix, addId) => { } else if (model[key].autoValue !== undefined) { fieldValue = model[key].autoValue.call({ operator: null }); } else if (Array.isArray(defField.allowedValues)) { - fieldValue = defField.allowedValues[0]; + fieldValue = defField.allowedValues[0]; // eslint-disable-line } else { throw new Error("Invalid"); } @@ -128,16 +128,16 @@ const getMockDoc = (schema, prefix, addId) => { return mockDoc; }; -const clearMockValues = (schema) => { - if (process.env.NODE_ENV === "jesttest") { - return schema; - } +// const clearMockValues = (schema) => { +// if (process.env.NODE_ENV === "jesttest") { +// return schema; +// } - _.each(schema._schema, (field, key) => { - schema._schema[key] = _.omit(field, "mockValue"); - }); - return schema; -}; +// _.each(schema._schema, (field, key) => { +// schema._schema[key] = _.omit(field, "mockValue"); +// }); +// return schema; +// }; /** * @const {Object} Factory - todo From 02cc44fced07381ac6e1757ac2db2e6dc5b90071 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 30 May 2018 18:07:13 -0500 Subject: [PATCH 112/201] fix: incorporate fix and refactor from #4259 @pmn4 --- .../product-publications.app-test.js | 401 +++++++++++------- server/publications/collections/products.js | 165 ++++--- 2 files changed, 320 insertions(+), 246 deletions(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 3a6780e0130..83dbbd6f8a8 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -3,23 +3,52 @@ import Random from "@reactioncommerce/random"; import { expect } from "meteor/practicalmeteor:chai"; import { sinon } from "meteor/practicalmeteor:sinon"; +import { Factory } from "meteor/dburles:factory"; import { Roles } from "meteor/alanning:roles"; +import { PublicationCollector } from "meteor/johanbrook:publication-collector"; import { createActiveShop } from "/server/imports/fixtures/shops"; import { Reaction } from "/server/api"; import * as Collections from "/lib/collections"; import Fixtures from "/server/imports/fixtures"; -import { PublicationCollector } from "meteor/johanbrook:publication-collector"; +import publishProductsToCatalog from "/imports/plugins/core/catalog/server/no-meteor/utils/publishProductsToCatalog"; +import collections from "/imports/collections/rawCollections"; Fixtures(); describe("Publication", function () { - const shopId = Random.id(); + let shopId; + let merchantShopId; + let primaryShopId; + let inactiveMerchantShopId; let sandbox; + let merchantShop1ProductIds; + let merchantShop1VisibleProductIds; + let activeShopProductIds; + let activeShopVisibleProductIds; + let activeMerchantProductIds; + + const productScrollLimit = 24; + beforeEach(function () { - Collections.Shops.remove({}); - createActiveShop({ _id: shopId }); + shopId = Random.id(); + merchantShopId = Random.id(); + primaryShopId = Random.id(); + + sandbox = sinon.sandbox.create(); + sandbox.stub(Reaction, "getPrimaryShopId", () => primaryShopId); + + Collections.Shops.remove({}); + + // muting some shop creation hook behavior (to keep output clean) + sandbox.stub(Reaction, "setShopName"); + sandbox.stub(Reaction, "setDomain"); + + createActiveShop({ _id: shopId, shopType: "merchant" }); + createActiveShop({ _id: merchantShopId, shopType: "merchant" }); + createActiveShop({ _id: primaryShopId, shopType: "primary" }); + Factory.create("shop", { _id: inactiveMerchantShopId, shopType: "merchant" }); }); afterEach(function () { @@ -27,6 +56,8 @@ describe("Publication", function () { }); describe("with products", function () { + let collector; + const priceRangeA = { range: "1.00 - 12.99", min: 1.00, @@ -43,7 +74,7 @@ describe("Publication", function () { Collections.Products.remove({}); // a product with price range A, and not visible - Collections.Products.insert({ + const productId1 = Collections.Products.insert({ ancestors: [], title: "My Little Pony", shopId, @@ -55,7 +86,7 @@ describe("Publication", function () { isBackorder: false }); // a product with price range B, and visible - Collections.Products.insert({ + const productId2 = Collections.Products.insert({ ancestors: [], title: "Shopkins - Peachy", shopId, @@ -67,7 +98,7 @@ describe("Publication", function () { isBackorder: false }); // a product with price range A, and visible - Collections.Products.insert({ + const productId3 = Collections.Products.insert({ ancestors: [], title: "Fresh Tomatoes", shopId, @@ -78,28 +109,95 @@ describe("Publication", function () { isSoldOut: false, isBackorder: false }); + // a product for an unrelated marketplace shop + const productId4 = Collections.Products.insert({ + ancestors: [], + title: "Teddy Ruxpin", + shopId: merchantShopId, + type: "simple", + price: priceRangeA, + isVisible: true, + isLowQuantity: false, + isSoldOut: false, + isBackorder: false + }); + // a product for the Primary Shop + const productId5 = Collections.Products.insert({ + ancestors: [], + title: "Garbage Pail Kids", + shopId: primaryShopId, + type: "simple", + price: priceRangeA, + isVisible: true, + isLowQuantity: false, + isSoldOut: false, + isBackorder: false + }); + // a product for an inactive Merchant Shop + // this product is here to guard against false-positive test results + Collections.Products.insert({ + ancestors: [], + title: "Lite Bright", + shopId: inactiveMerchantShopId, + type: "simple", + price: priceRangeA, + isVisible: true, + isLowQuantity: false, + isSoldOut: false, + isBackorder: false + }); + + // helper arrays for writing expecations in tests + merchantShop1ProductIds = [productId1, productId2, productId3]; + merchantShop1VisibleProductIds = [productId2, productId3]; + activeShopProductIds = [productId1, productId2, productId3, productId4, productId5]; + activeShopVisibleProductIds = [productId2, productId3, productId4, productId5]; + activeMerchantProductIds = [productId2, productId3, productId4]; + + collector = new PublicationCollector({ userId: Random.id() }); }); describe("Products", function () { - it("should return all products to admins", function (done) { + it("should return all products from active shops to admins in the Primary Shop", function (done) { + // setup + sandbox.stub(Reaction, "getShopId", () => primaryShopId); + sandbox.stub(Roles, "userIsInRole", () => true); + sandbox.stub(Reaction, "hasPermission", () => true); + sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); + + collector.collect("Products", 24, undefined, {}, ({ Products }) => { + const productIds = Products.map((p) => p._id); + + expect(productIds).to.have.members(activeShopProductIds); + }).then(() => done(/* empty */), done); + }); + + it("should return all products from the current shop to admins in a Merchant Shop", function (done) { // setup sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => true); sandbox.stub(Reaction, "hasPermission", () => true); - sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); + sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; + collector.collect("Products", 24, undefined, {}, ({ Products }) => { + const productIds = Products.map((p) => p._id); - collector.collect("Products", 24, undefined, {}, (collections) => { - const products = collections.Products; - expect(products.length).to.equal(3); + expect(productIds).to.have.members(merchantShop1ProductIds); + }).then(() => done(/* empty */), done); + }); - if (!isDone) { - isDone = true; - done(); - } - }); + it("returns products from only the shops for which an admin has createProduct Role", function (done) { + // setup + sandbox.stub(Reaction, "getShopId", () => primaryShopId); + sandbox.stub(Roles, "userIsInRole", () => true); + sandbox.stub(Reaction, "hasPermission", () => true); + sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); + + collector.collect("Products", 24, undefined, {}, ({ Products }) => { + const productIds = Products.map((p) => p._id); + + expect(productIds).to.have.members(merchantShop1ProductIds); + }).then(() => done(/* empty */), done); }); it("should have an expected product title", function (done) { @@ -109,172 +207,182 @@ describe("Publication", function () { sandbox.stub(Reaction, "hasPermission", () => true); sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; - - collector.collect("Products", 24, undefined, {}, (collections) => { - const products = collections.Products; - const data = products[1]; + collector.collect("Products", 24, undefined, {}, ({ Products }) => { + const data = Products[1]; const expectedTitles = ["My Little Pony", "Shopkins - Peachy"]; expect(expectedTitles.some((title) => title === data.title)).to.be.ok; - - if (!isDone) { - isDone = true; - done(); - } - }); + }).then(() => done(/* empty */), done); }); it("should return only visible products to visitors", function (done) { sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; - - collector.collect("Products", 24, undefined, {}, (collections) => { - const products = collections.Products; - const data = products[0]; + collector.collect("Products", 24, undefined, {}, ({ Products }) => { + const data = Products[0]; const expectedTitles = ["Fresh Tomatoes", "Shopkins - Peachy"]; - expect(products.length).to.equal(2); + expect(Products.length).to.equal(2); expect(expectedTitles.some((title) => title === data.title)).to.be.ok; - - if (isDone === false) { - isDone = true; - done(); - } - }); + }).then(() => done(/* empty */), done); }); it("should return only products matching query", function (done) { - const productScrollLimit = 24; const filters = { query: "Shopkins" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - const data = products[0]; + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + const data = Products[0]; expect(data.title).to.equal("Shopkins - Peachy"); - - done(); - }); + }).then(() => done(/* empty */), done); }); it("should not return products not matching query", function (done) { - const productScrollLimit = 24; const filters = { query: "random search" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - - expect(products.length).to.equal(0); - - done(); - }); + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + expect(Products.length).to.equal(0); + }).then(() => done(/* empty */), done); }); it("should return products in price.min query", function (done) { - const productScrollLimit = 24; const filters = { "price.min": "2.00" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - - expect(products.length).to.equal(1); - - done(); - }); + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + expect(Products.length).to.equal(1); + }).then(() => done(/* empty */), done); }); it("should return products in price.max query", function (done) { - const productScrollLimit = 24; const filters = { "price.max": "24.00" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - - expect(products.length).to.equal(2); - - done(); - }); + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + expect(Products.length).to.equal(2); + }).then(() => done(/* empty */), done); }); it("should return products in price.min - price.max range query", function (done) { - const productScrollLimit = 24; const filters = { "price.min": "12.00", "price.max": "19.98" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - - expect(products.length).to.equal(2); - - done(); - }); + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + expect(Products.length).to.equal(2); + }).then(() => done(/* empty */), done); }); it("should return products where value is in price set query", function (done) { - const productScrollLimit = 24; const filters = { "price.min": "13.00", "price.max": "24.00" }; + sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + expect(Products.length).to.equal(1); + }).then(() => done(/* empty */), done); + }); + + it("should return products from all shops when multiple shops are provided", function (done) { + const filters = { shops: [shopId, merchantShopId] }; + + sandbox.stub(Reaction, "getShopId", () => primaryShopId); + sandbox.stub(Roles, "userIsInRole", () => false); + + collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { + const productIds = Products.map((p) => p._id); + + expect(productIds).to.have.members(activeMerchantProductIds); + }).then(() => done(/* empty */), done); + }); + }); + + describe("Products/grid", function () { + beforeEach(function () { + Collections.Catalog.remove({}); + }); + + describe("Catalog conditions", function () { + it("returns nothing when the Catalog is empty", function (done) { + sandbox.stub(Reaction, "getShopId", () => shopId); + + collector.collect("Products/grid", ({ Catalog }) => { + const productIds = Catalog.map((p) => p._id); + + expect(productIds).to.be.empty; + }).then(() => done(/* empty */), done); + }); + + it("returns products from the Catalog", function (done) { + sandbox.stub(Reaction, "getShopId", () => shopId); - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; + publishProducts(); - expect(products.length).to.equal(1); + collector.collect("Products/grid", ({ Catalog }) => { + const productIds = Catalog.map((p) => p._id); - done(); + expect(productIds).to.not.be.empty; + }).then(() => done(/* empty */), done); }); }); - it("should return products from all shops when multiple shops are provided", function (done) { - const filters = { shops: [shopId] }; - const productScrollLimit = 24; - sandbox.stub(Reaction, "getCurrentShop", function () { return { _id: "123" }; }); - sandbox.stub(Roles, "userIsInRole", () => true); - sandbox.stub(Reaction, "hasPermission", () => true); - sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); + describe("Shop conditions", function () { + beforeEach(function () { + publishProducts(); + }); + + it("returns products from the active shop", function (done) { + sandbox.stub(Reaction, "getShopId", () => shopId); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; + collector.collect("Products/grid", ({ Catalog }) => { + const productIds = Catalog.map((c) => c.product._id); - collector.collect("Products", productScrollLimit, filters, {}, (collections) => { - const products = collections.Products; - expect(products.length).to.equal(3); + expect(productIds).to.have.members(merchantShop1VisibleProductIds); + }).then(() => done(/* empty */), done); + }); - const data = products[1]; - expect(["My Little Pony", "Shopkins - Peachy"].some((title) => title === data.title)).to.be.ok; + it("returns all visible products from all active shops when the Primary Shop is active", function (done) { + sandbox.stub(Reaction, "getShopId", () => primaryShopId); - if (!isDone) { - isDone = true; - done(); - } + collector.collect("Products/grid", ({ Catalog }) => { + const productIds = Catalog.map((c) => c.product._id); + + expect(productIds).to.have.members(activeShopVisibleProductIds); + }).then(() => done(/* empty */), done); + }); + + it("returns products from all shops when the Primary Shop is active, filtered by shop id", function (done) { + const filters = { shopIdsOrSlugs: [shopId, merchantShopId] }; + + sandbox.stub(Reaction, "getShopId", () => primaryShopId); + + collector.collect("Products/grid", 24, filters, ({ Catalog }) => { + const productIds = Catalog.map((c) => c.product._id); + + expect(productIds).to.have.members(activeMerchantProductIds); + }).then(() => done(/* empty */), done); }); }); + + function publishProducts() { + const productIds = + Collections.Products.find({}).fetch().map((p) => p._id); + + return Promise.await(publishProductsToCatalog(productIds, collections)); + } }); describe("Product", function () { @@ -284,54 +392,36 @@ describe("Publication", function () { }); sandbox.stub(Reaction, "getShopId", () => shopId); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Product", product._id, (collections) => { - const products = collections.Products; - const data = products[0]; + collector.collect("Product", product._id, ({ Products }) => { + const data = Products[0]; expect(data.title).to.equal(product.title); - - done(); - }); + }).then(() => done(/* empty */), done); }); it("should not return a product if handle does not match exactly", function (done) { sandbox.stub(Reaction, "getShopId", () => shopId); - const collector = new PublicationCollector({ userId: Random.id() }); - - collector.collect("Product", "shopkins", (collections) => { - const products = collections.Products; - if (products) { - expect(products.length).to.equal(0); + collector.collect("Product", "shopkins", ({ Products }) => { + if (Products) { + expect(Products.length).to.equal(0); } else { - expect(products).to.be.undefined; + expect(Products).to.be.undefined; } - done(); - }); + }).then(() => done(/* empty */), done); }); it("should not return a product based on exact handle match if it isn't visible", function (done) { sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; - - collector.collect("Product", "my-little-pony", (collections) => { - const products = collections.Products; - if (products) { - expect(products.length).to.equal(0); + collector.collect("Product", "my-little-pony", ({ Products }) => { + if (Products) { + expect(Products.length).to.equal(0); } else { - expect(products).to.be.undefined; - } - - if (!isDone) { - isDone = true; - done(); + expect(Products).to.be.undefined; } - }); + }).then(() => done(/* empty */), done); }); it("should return a product to admin based on a exact handle match even if it isn't visible", function (done) { @@ -339,20 +429,11 @@ describe("Publication", function () { sandbox.stub(Roles, "userIsInRole", () => true); sandbox.stub(Reaction, "hasPermission", () => true); - const collector = new PublicationCollector({ userId: Random.id() }); - let isDone = false; - - collector.collect("Product", "my-little-pony", (collections) => { - const products = collections.Products; - const data = products[0]; + collector.collect("Product", "my-little-pony", ({ Products }) => { + const data = Products[0]; expect(data.title).to.equal("My Little Pony"); - - if (!isDone) { - isDone = true; - done(); - } - }); + }).then(() => done(/* empty */), done); }); }); }); diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index 1fdd0dbb138..eb8e038fa65 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -87,17 +87,37 @@ const catalogProductFiltersSchema = new SimpleSchema({ } }); -function filterProducts(productFilters) { - // if there are filter/params that don't match the schema - // validate, catch except but return no results - try { - if (productFilters) filters.validate(productFilters); - } catch (e) { - Logger.debug(e, "Invalid Product Filters"); +function applyShopsFilter(selector, shopIdsOrSlugs) { + // Active shop + const shopId = Reaction.getShopId(); + const primaryShopId = Reaction.getPrimaryShopId(); + + // Don't publish if we're missing an active or primary shopId + if (!shopId || !primaryShopId) { return false; } - const shopIdsOrSlugs = productFilters && productFilters.shops; + let activeShopIds; + // if the current shop is the primary shop, get products from all shops + // otherwise, only list products from _this_ shop. + if (shopId === primaryShopId) { + activeShopIds = Shops.find({ + $or: [ + { "workflow.status": "active" }, + { _id: primaryShopId } + ] + }, { + fields: { + _id: 1 + } + }).fetch().map((activeShop) => activeShop._id); + } else { + activeShopIds = [shopId]; + } + + if (!activeShopIds.length) { + return false; + } if (shopIdsOrSlugs) { // Get all shopIds associated with the slug or Id @@ -108,33 +128,48 @@ function filterProducts(productFilters) { }, { slug: { $in: shopIdsOrSlugs } }] + }, { + fields: { + _id: 1 + } }).map((shop) => shop._id); - // If we found shops, update the productFilters - if (shopIds) { - productFilters.shops = shopIds; - } else { - return false; - } + activeShopIds = _.intersection(activeShopIds, shopIds); + } + + if (activeShopIds.length) { + return { + ...selector, + shopId: { $in: activeShopIds } + }; + } + + return selector; +} + +function filterProducts(productFilters) { + // if there are filter/params that don't match the schema + // validate, catch except but return no results + try { + if (productFilters) filters.validate(productFilters); + } catch (e) { + Logger.warn(e, "Invalid Product Filters"); + return false; } // Init default selector - Everyone can see products that fit this selector - const selector = { + const baseSelector = { ancestors: [], // Lookup top-level products isDeleted: { $ne: true }, // by default, we don't publish deleted products isVisible: true // by default, only lookup visible products }; - if (productFilters) { - // handle multiple shops - if (productFilters.shops) { - _.extend(selector, { - shopId: { - $in: productFilters.shops - } - }); - } + const shopIdsOrSlugs = productFilters && productFilters.shops; + const selector = applyShopsFilter(baseSelector, shopIdsOrSlugs); + + if (!selector) return false; + if (productFilters) { // filter by tags if (productFilters.tags) { _.extend(selector, { @@ -267,17 +302,14 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so check(sort, Match.OneOf(undefined, Object)); check(editMode, Match.Maybe(Boolean)); - // Active shop - const shopId = Reaction.getShopId(); - const primaryShopId = Reaction.getPrimaryShopId(); - - // Don't publish if we're missing an active or primary shopId - if (!shopId || !primaryShopId) { - return this.ready(); - } + // // Active shop + // const shopId = Reaction.getShopId(); + // const primaryShopId = Reaction.getPrimaryShopId(); - // Get a list of shopIds that this user has "createProduct" permissions for (owner permission is checked by default) - const userAdminShopIds = Reaction.getShopsWithRoles(["createProduct"], this.userId); + // // Don't publish if we're missing an active or primary shopId + // if (!shopId || !primaryShopId) { + // return this.ready(); + // } const selector = filterProducts(productFilters); @@ -285,33 +317,18 @@ Meteor.publish("Products", function (productScrollLimit = 24, productFilters, so return this.ready(); } + // Get a list of shopIds that this user has "createProduct" permissions for (owner permission is checked by default) + const userAdminShopIds = Reaction.getShopsWithRoles(["createProduct"], this.userId) || []; + // We publish an admin version of this publication to admins of products who are in "Edit Mode" if (editMode) { - // userAdminShopIds is a list of shopIds that the user has createProduct or owner access for - if (!Array.isArray(userAdminShopIds) || userAdminShopIds.length === 0) { + // Limit to only shops we have "createProduct" role for + selector.shopId.$in = _.intersection(selector.shopId.$in, userAdminShopIds); + if (selector.shopId.$in.length === 0) { return this.ready(); } - delete selector.isVisible; - selector.shopId = { - $in: userAdminShopIds - }; - } else { - // Get active shop IDs to use for filtering - const activeShopsIds = Shops.find({ - $or: [ - { "workflow.status": "active" }, - { _id: Reaction.getPrimaryShopId() } - ] - }, { - fields: { - _id: 1 - } - }).map((activeShop) => activeShop._id); - - selector.shopId = { - $in: activeShopsIds - }; + delete selector.isVisible; // in edit mode, you should see all products } // Get the IDs of the first N (limit) top-level products that match the query @@ -348,45 +365,21 @@ function filterCatalogItems(catalogFilters) { try { if (catalogFilters) catalogProductFiltersSchema.validate(catalogFilters); } catch (e) { - Logger.debug(e, "Invalid Catalog Product Filters"); + Logger.warn(e, "Invalid Catalog Product Filters"); return false; } - const shopIdsOrSlugs = catalogFilters && catalogFilters.shopIdsOrSlugs; - - if (shopIdsOrSlugs) { - // Get all shopIds associated with the slug or Id - const shopIds = Shops.find({ - "workflow.status": "active", - "$or": [{ - _id: { $in: shopIdsOrSlugs } - }, { - slug: { $in: shopIdsOrSlugs } - }] - }).map((shop) => shop._id); - - // If we found shops, update the productFilters - if (shopIds) { - catalogFilters.shopIds = shopIds; - } else { - return false; - } - } - // Init default selector - Everyone can see products that fit this selector - const selector = { + const baseSelector = { "product.isDeleted": { $ne: true }, // by default, we don't publish deleted products "product.isVisible": true // by default, only lookup visible products }; - if (!catalogFilters) return selector; + const { shopIdsOrSlugs } = catalogFilters || {}; + const selector = applyShopsFilter(baseSelector, shopIdsOrSlugs); - // handle multiple shops - if (catalogFilters.shopIds) { - selector.shopId = { - $in: catalogFilters.shopIds - }; - } + if (!selector) return false; + if (!catalogFilters) return selector; // filter by tags if (catalogFilters.tagIds) { From ddfb1c933a76fa2d201b4b2cbfd0696e2f6489e4 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Wed, 30 May 2018 18:52:15 -0500 Subject: [PATCH 113/201] tests: fix merge issue --- .../publications/collections/product-publications.app-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 83dbbd6f8a8..e8235dda082 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -34,7 +34,7 @@ describe("Publication", function () { shopId = Random.id(); merchantShopId = Random.id(); primaryShopId = Random.id(); - + inactiveMerchantShopId = Random.id(); sandbox = sinon.sandbox.create(); sandbox.stub(Reaction, "getPrimaryShopId", () => primaryShopId); From 278d6bfa3ffdc20174cbfa2ec6c924316f8705be Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 20:54:06 -0600 Subject: [PATCH 114/201] chore: test running snyk test only on package.json change --- .circleci/config.yml | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 095aa06adae..373b64781a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,7 +20,7 @@ jobs: - checkout - setup_remote_docker - restore_cache: - name: Restoring Meteor cache + `name: Restoring Meteor cache key: meteor - run: name: Install Meteor @@ -215,11 +215,32 @@ jobs: - v1-node-modules-{{ checksum "package.json" }}-{{ checksum "package-lock.json" }} - v1-node-modules-{{ .Branch }} - v1-node-modules-master + - run: + name: Set Target Branch + command: | + - run: name: Snyk Test command: | - PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ - snyk test + if [[ -n ${CIRCLE_PR_NUMBER} ]] ; then + curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq + chmod +x jq + url="https://api.github.com/repos/org/repo/pulls/$CIRCLE_PR_NUMBER?access_token=$GITHUB_TOKEN" + TARGET_BRANCH=$( + curl "$url" | ./jq '.base.ref' | tr -d '"' + ) + fi + if [[ ${TARGET_BRANCH} == "master" ]] + PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + snyk test + else + git fetch origin ${CIRCLE_BRANCH} + git fetch origin ${TARGET_BRANCH} + if $(git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff) ; then + PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + snyk test + fi + fi workflows: version: 2 From b23c5c196d8614a781bbe11354038403452b78c5 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 20:56:00 -0600 Subject: [PATCH 115/201] chore: use correct DOCKER_REPOSITORY env var to fetch target branch name --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 373b64781a1..dc817ad23e1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -225,7 +225,7 @@ jobs: if [[ -n ${CIRCLE_PR_NUMBER} ]] ; then curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq - url="https://api.github.com/repos/org/repo/pulls/$CIRCLE_PR_NUMBER?access_token=$GITHUB_TOKEN" + url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" TARGET_BRANCH=$( curl "$url" | ./jq '.base.ref' | tr -d '"' ) From 97793a44d6965aef1b254e4a95d2017880436625 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 21:32:10 -0600 Subject: [PATCH 116/201] chore: remove accidental character from config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index dc817ad23e1..2ed0f27ac01 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,7 +20,7 @@ jobs: - checkout - setup_remote_docker - restore_cache: - `name: Restoring Meteor cache + name: Restoring Meteor cache key: meteor - run: name: Install Meteor From f24ac376598e53a57ce6c58049e9b0dd80e94d91 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 21:46:17 -0600 Subject: [PATCH 117/201] chore: echo message when skipping snyk tests --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2ed0f27ac01..6a97391acf1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -239,6 +239,8 @@ jobs: if $(git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff) ; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test + else + echo "package.json identical to target branch. Skipping Snyk." fi fi From d1d86f7e7667cd468a6d90bafc507b0a943cb43a Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 21:55:59 -0600 Subject: [PATCH 118/201] testing config.yml stuff --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6a97391acf1..29a0181bafc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -243,6 +243,7 @@ jobs: echo "package.json identical to target branch. Skipping Snyk." fi fi + echo "how did we end up here." workflows: version: 2 From ac272cfec805bf8edbe0cd6a2e0ce6214f3aedfd Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 21:57:18 -0600 Subject: [PATCH 119/201] chore: remove extra run command from config.yml --- .circleci/config.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 29a0181bafc..b7adaef32bc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -215,10 +215,6 @@ jobs: - v1-node-modules-{{ checksum "package.json" }}-{{ checksum "package-lock.json" }} - v1-node-modules-{{ .Branch }} - v1-node-modules-master - - run: - name: Set Target Branch - command: | - - run: name: Snyk Test command: | @@ -243,7 +239,6 @@ jobs: echo "package.json identical to target branch. Skipping Snyk." fi fi - echo "how did we end up here." workflows: version: 2 From c45741b83415cd56abfc1a67c6a2d9853f6e77ce Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 22:02:14 -0600 Subject: [PATCH 120/201] chore: fix bash if then --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b7adaef32bc..45e76026518 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,7 @@ jobs: - run: name: Snyk Test command: | - if [[ -n ${CIRCLE_PR_NUMBER} ]] ; then + if [[ -n ${CIRCLE_PR_NUMBER} ]]; then curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" @@ -226,13 +226,13 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) fi - if [[ ${TARGET_BRANCH} == "master" ]] + if [[ ${TARGET_BRANCH} == "master" ]]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else git fetch origin ${CIRCLE_BRANCH} git fetch origin ${TARGET_BRANCH} - if $(git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff) ; then + if $(git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff); then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else From 3cdbbc352e4eb06a7b8bcbcd4558da0c8e23fc81 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 22:08:31 -0600 Subject: [PATCH 121/201] test with changed package.json --- .circleci/config.yml | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 45e76026518..9aa6d90b9b9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -232,7 +232,7 @@ jobs: else git fetch origin ${CIRCLE_BRANCH} git fetch origin ${TARGET_BRANCH} - if $(git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff); then + if git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else diff --git a/package.json b/package.json index cc9df583cdb..62fdda39483 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "Reaction is a modern reactive, real-time event driven ecommerce platform.", "version": "1.12.0", "main": "main.js", + "example": "example", "directories": { "test": "tests" }, From e22cb205617012de2b3854a420268493870abf6e Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 22:32:44 -0600 Subject: [PATCH 122/201] use git diff correctly --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9aa6d90b9b9..08240c14ef3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,7 @@ jobs: - run: name: Snyk Test command: | - if [[ -n ${CIRCLE_PR_NUMBER} ]]; then + if [ -n ${CIRCLE_PR_NUMBER} ]; then curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" @@ -232,7 +232,7 @@ jobs: else git fetch origin ${CIRCLE_BRANCH} git fetch origin ${TARGET_BRANCH} - if git diff ${CIRCLE_BRANCH} ${TARGET_BRANCH} package.json | grep diff; then + if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else From d02efea5b1a468bedac60e080828bdfeb7bb003b Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 22:57:37 -0600 Subject: [PATCH 123/201] echo target branch --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 08240c14ef3..fcece376eba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -225,14 +225,16 @@ jobs: TARGET_BRANCH=$( curl "$url" | ./jq '.base.ref' | tr -d '"' ) + echo "Target branch ${TARGET_BRANCH}" fi - if [[ ${TARGET_BRANCH} == "master" ]]; then + if [[ ${TARGET_BRANCH} == "master" ]] || [ -z ${TARGET_BRANCH} ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else git fetch origin ${CIRCLE_BRANCH} git fetch origin ${TARGET_BRANCH} if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then + echo "package.json different. Running Snyk." PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else From b619bbd30d7ccbf083ebc548d00676dab26b451d Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:04:13 -0600 Subject: [PATCH 124/201] echo PR number --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fcece376eba..b127da50625 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -226,8 +226,9 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) echo "Target branch ${TARGET_BRANCH}" + echo "PR ${CIRCLE_PR_NUMBER" fi - if [[ ${TARGET_BRANCH} == "master" ]] || [ -z ${TARGET_BRANCH} ]; then + if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else From e1b6de814a0a9ab38784c66c900630bbed579466 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:09:30 -0600 Subject: [PATCH 125/201] it's late and i'm dumb --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b127da50625..c0b71e6231f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -226,7 +226,7 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) echo "Target branch ${TARGET_BRANCH}" - echo "PR ${CIRCLE_PR_NUMBER" + echo "PR ${CIRCLE_PR_NUMBER}" fi if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ From b33556cb393ae3db03a946e081adc055b419ab47 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:18:37 -0600 Subject: [PATCH 126/201] check to see if CIRCLE_PULL_REQUEST exists --- .circleci/config.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c0b71e6231f..538469126ef 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -226,22 +226,22 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) echo "Target branch ${TARGET_BRANCH}" - echo "PR ${CIRCLE_PR_NUMBER}" - fi - if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then - PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ - snyk test - else - git fetch origin ${CIRCLE_BRANCH} - git fetch origin ${TARGET_BRANCH} - if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then - echo "package.json different. Running Snyk." - PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ - snyk test - else - echo "package.json identical to target branch. Skipping Snyk." - fi + echo "PR ${CIRCLE_PR_NUMBER} ${CIRCLE_PULL_REQUEST}" fi + # if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then + # PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + # snyk test + # else + # git fetch origin ${CIRCLE_BRANCH} + # git fetch origin ${TARGET_BRANCH} + # if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then + # echo "package.json different. Running Snyk." + # PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + # snyk test + # else + # echo "package.json identical to target branch. Skipping Snyk." + # fi + # fi workflows: version: 2 From 41cf63d776efb1e5df0777e6d7fc43c728312735 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:24:18 -0600 Subject: [PATCH 127/201] CIRCLE_PULL_REQUEST exists, use that for PR number --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 538469126ef..4028cdab3f4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -226,6 +226,7 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) echo "Target branch ${TARGET_BRANCH}" + CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}} echo "PR ${CIRCLE_PR_NUMBER} ${CIRCLE_PULL_REQUEST}" fi # if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then From 2062bf94cd0c55a32e668164710bb2d51241d29f Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:26:23 -0600 Subject: [PATCH 128/201] set pr number from pr request url --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4028cdab3f4..3fae3acfec4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,6 +218,7 @@ jobs: - run: name: Snyk Test command: | + CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}} if [ -n ${CIRCLE_PR_NUMBER} ]; then curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq @@ -226,7 +227,6 @@ jobs: curl "$url" | ./jq '.base.ref' | tr -d '"' ) echo "Target branch ${TARGET_BRANCH}" - CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}} echo "PR ${CIRCLE_PR_NUMBER} ${CIRCLE_PULL_REQUEST}" fi # if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then From 3cb09ba951efef83aecdb1b4781bac139816e06a Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:27:31 -0600 Subject: [PATCH 129/201] missing quote --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3fae3acfec4..f5d32d20011 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,7 @@ jobs: - run: name: Snyk Test command: | - CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}} + CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}" if [ -n ${CIRCLE_PR_NUMBER} ]; then curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq From 2cc9b93f4c5936a041713a03fa91cd50bfb3dafa Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:31:40 -0600 Subject: [PATCH 130/201] attempt conditional snyk test with target branch --- .circleci/config.yml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f5d32d20011..9cf6f613675 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -226,23 +226,21 @@ jobs: TARGET_BRANCH=$( curl "$url" | ./jq '.base.ref' | tr -d '"' ) - echo "Target branch ${TARGET_BRANCH}" - echo "PR ${CIRCLE_PR_NUMBER} ${CIRCLE_PULL_REQUEST}" fi - # if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then - # PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ - # snyk test - # else - # git fetch origin ${CIRCLE_BRANCH} - # git fetch origin ${TARGET_BRANCH} - # if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then - # echo "package.json different. Running Snyk." - # PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ - # snyk test - # else - # echo "package.json identical to target branch. Skipping Snyk." - # fi - # fi + if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then + PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + snyk test + else + git fetch origin ${CIRCLE_BRANCH} + git fetch origin ${TARGET_BRANCH} + if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then + echo "package.json different. Running Snyk." + PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ + snyk test + else + echo "package.json identical to target branch. Skipping Snyk." + fi + fi workflows: version: 2 From 9a60ef31356a465fe4eee3780fc552429db03dd6 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 30 May 2018 23:49:11 -0600 Subject: [PATCH 131/201] run git diff from origin --- .circleci/config.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9cf6f613675..8e046de4498 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -223,17 +223,13 @@ jobs: curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq chmod +x jq url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" - TARGET_BRANCH=$( - curl "$url" | ./jq '.base.ref' | tr -d '"' - ) + TARGET_BRANCH=$(curl "$url" | ./jq '.base.ref' | tr -d '"') fi if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else - git fetch origin ${CIRCLE_BRANCH} - git fetch origin ${TARGET_BRANCH} - if git diff ${CIRCLE_BRANCH}..${TARGET_BRANCH} package.json | grep diff; then + if git diff origin/$CIRCLE_BRANCH..origin/$TARGET_BRANCH package.json | grep diff; then echo "package.json different. Running Snyk." PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test From 72a7e938586b33d82fd65130748dffd82440d852 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Thu, 31 May 2018 00:01:17 -0600 Subject: [PATCH 132/201] remove test package.json change --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8e046de4498..910ae592612 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -225,7 +225,8 @@ jobs: url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" TARGET_BRANCH=$(curl "$url" | ./jq '.base.ref' | tr -d '"') fi - if [[ ${TARGET_BRANCH} == "master" ]] || [ ${TARGET_BRANCH} == "null" ]; then + # If target branch does not exist or is master, run snyk tests + if [ ${TARGET_BRANCH} == "master" ] || [ -z "${TARGET_BRANCH/[ ]*\n/}" ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else From 837ca34622298851cffc9e344728c9befaca7c44 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Thu, 31 May 2018 00:08:22 -0600 Subject: [PATCH 133/201] remove package json changes --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 62fdda39483..cc9df583cdb 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "description": "Reaction is a modern reactive, real-time event driven ecommerce platform.", "version": "1.12.0", "main": "main.js", - "example": "example", "directories": { "test": "tests" }, From 5cda37119488bea193ad0c8a35981b5c50761922 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Thu, 31 May 2018 13:45:38 -0500 Subject: [PATCH 134/201] chore: update Meteor to 1.7.0.1 --- .meteor/release | 2 +- .meteor/versions | 8 +- package-lock.json | 647 ++++++++++++++++++---------------------------- package.json | 3 +- 4 files changed, 265 insertions(+), 395 deletions(-) diff --git a/.meteor/release b/.meteor/release index cc4631c0b6f..7f956de292d 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@1.7 +METEOR@1.7.0.1 diff --git a/.meteor/versions b/.meteor/versions index c7707847e59..03d8433cdcb 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -42,7 +42,7 @@ dispatch:run-as-user@1.1.1 dynamic-import@0.4.0 ecmascript@0.11.0 ecmascript-runtime@0.7.0 -ecmascript-runtime-client@0.7.0 +ecmascript-runtime-client@0.7.1 ecmascript-runtime-server@0.7.0 ejson@1.1.0 email@1.2.3 @@ -78,7 +78,7 @@ minifier-js@2.3.5 minimongo@1.4.4 mobile-experience@1.0.5 mobile-status-bar@1.0.14 -modern-browsers@0.1.0 +modern-browsers@0.1.1 modules@0.12.0 modules-runtime@0.10.0 momentjs:moment@2.19.4 @@ -98,7 +98,7 @@ percolate:migrations@0.9.8 practicalmeteor:chai@2.1.0_1 practicalmeteor:mocha-core@1.0.1 practicalmeteor:sinon@1.14.1_2 -promise@0.11.0 +promise@0.11.1 raix:eventemitter@0.1.3 random@1.1.0 rate-limit@1.0.9 @@ -111,7 +111,7 @@ service-configuration@1.0.11 session@1.1.7 sha@1.0.9 shell-server@0.3.1 -socket-stream-client@0.2.0 +socket-stream-client@0.2.1 spacebars@1.0.15 spacebars-compiler@1.1.3 srp@1.0.10 diff --git a/package-lock.json b/package-lock.json index 98a7202efc9..a1f4ca0dfb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9427,623 +9427,497 @@ } }, "meteor-node-stubs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.3.2.tgz", - "integrity": "sha512-l93SS/HutbqBRJODO2m7hup8cYI2acF5bB39+ZvP2BX8HMmCSCXeFH7v0sr4hD7zrVvHQA5UqS0pcDYKn0VM6g==", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", - "events": "1.1.1", - "http-browserify": "1.7.0", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.4.1.tgz", + "integrity": "sha512-UO2OStvLOKoApmOdIP5eCqoLaa/ritMXRg4ffJVdkNLEsczzPvTjgC0Mxk4cM4R8MZkwll90FYgjDf5qUTJdMA==", + "requires": { + "assert": "^1.4.1", + "browserify-zlib": "^0.1.4", + "buffer": "^4.9.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.7", + "events": "^1.1.1", "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "os-browserify": "^0.2.1", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "stream-browserify": "2.0.1", - "string_decoder": "1.0.3", - "timers-browserify": "1.4.2", + "process": "^0.11.9", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^2.3.6", + "stream-browserify": "^2.0.1", + "stream-http": "^2.8.0", + "string_decoder": "^1.1.0", + "timers-browserify": "^1.4.2", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { - "Base64": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=" - }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.10.1", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "bundled": true, "requires": { "util": "0.10.3" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + "version": "1.3.0", + "bundled": true }, "bn.js": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } + "bundled": true }, "brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "bundled": true }, "browserify-aes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.0.tgz", - "integrity": "sha512-W2bIMLYoZ9oow7TyePpMJk9l9LY7O3R61a/68bVCDOtnJynnwe3ZeW2IzzSkrQnPKNdJrxVDn3ALZNisSBwb7g==", - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "version": "1.2.0", + "bundled": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "bundled": true, "requires": { - "browserify-aes": "1.1.0", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "bundled": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.1", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "bundled": true, "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" } }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "bundled": true, "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true }, "cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "bundled": true, "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, "console-browserify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "bundled": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "bundled": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.1", - "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.1", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "version": "1.1.7", + "bundled": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.1", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "version": "3.12.0", + "bundled": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "date-now": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + "bundled": true }, "des.js": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "bundled": true, "requires": { - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + "version": "1.2.0", + "bundled": true }, "elliptic": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.1", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "events": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + "bundled": true }, "evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "bundled": true, "requires": { - "inherits": "2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "bundled": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" }, "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true } } }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "bundled": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "http-browserify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", - "requires": { - "Base64": "0.2.1", - "inherits": "2.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "https-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + "bundled": true }, "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + "version": "1.1.11", + "bundled": true }, "indexof": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } + "bundled": true }, "inherits": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + "bundled": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "bundled": true }, "md5.js": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "bundled": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + "version": "1.0.1", + "bundled": true }, "minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } + "bundled": true }, "os-browserify": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + "bundled": true }, "pako": { "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + "bundled": true }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "bundled": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.1.0", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "path-browserify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "bundled": true }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "bundled": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "bundled": true }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "bundled": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "bundled": true }, "querystring": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "bundled": true }, "querystring-es3": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + "bundled": true }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "version": "2.0.6", + "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "bundled": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "readable-stream": { - "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", - "from": "git+https://github.com/meteor/readable-stream.git", + "version": "2.3.6", + "bundled": true, "requires": { - "inherits": "2.0.3", - "isarray": "1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true } } }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "7.1.2" - } - }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "bundled": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.1" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "bundled": true }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "version": "2.4.11", + "bundled": true, "requires": { - "inherits": "2.0.1", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "stream-browserify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "bundled": true, "requires": { - "inherits": "2.0.1", + "inherits": "~2.0.1", "readable-stream": "^2.0.2" } }, + "stream-http": { + "version": "2.8.1", + "bundled": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "timers-browserify": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "bundled": true, "requires": { - "process": "0.11.10" + "process": "~0.11.0" } }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, "tty-browserify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + "bundled": true }, "url": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "bundled": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -10051,36 +9925,31 @@ "dependencies": { "punycode": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "bundled": true } } }, "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "bundled": true, "requires": { "inherits": "2.0.1" } }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "bundled": true }, "vm-browserify": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "bundled": true, "requires": { "indexof": "0.0.1" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "xtend": { + "version": "4.0.1", + "bundled": true } } }, diff --git a/package.json b/package.json index ef1917a6fa8..5df58161bdb 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "lodash": "^4.17.5", "lodash.pick": "^4.4.0", "match-sorter": "^2.2.0", - "meteor-node-stubs": "^0.3.2", + "meteor-node-stubs": "0.4.1", "moment": "^2.20.1", "moment-timezone": "^0.5.14", "mongodb": "^3.0.5", @@ -144,6 +144,7 @@ "@babel/cli": "7.0.0-beta.49", "@babel/core": "7.0.0-beta.49", "@babel/node": "7.0.0-beta.49", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.49", "@babel/preset-env": "7.0.0-beta.49", "@babel/preset-es2015": "7.0.0-beta.49", "@babel/preset-react": "7.0.0-beta.49", From a136417e6cce10f4c3878377347e92fe590bca41 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Thu, 31 May 2018 19:24:55 -0500 Subject: [PATCH 135/201] fix: use fork inline-import to work around bug https://github.com/Quadric/babel-plugin-inline-import/pull/18 --- package-lock.json | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1f4ca0dfb2..683f039ad29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2350,9 +2350,8 @@ } }, "babel-plugin-inline-import": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-2.0.6.tgz", - "integrity": "sha1-ijwXlWG1A79K8xnzytQ15reyhjw=", + "version": "github:reactioncommerce/babel-plugin-inline-import#b5061c57482e7700097b399a6305a30e7279f1b1", + "from": "github:reactioncommerce/babel-plugin-inline-import", "dev": true, "requires": { "require-resolve": "0.0.2" @@ -13038,7 +13037,7 @@ "integrity": "sha1-urQQqxruLz9Vt5MXRR3TQodk5vM=", "dev": true, "requires": { - "x-path": "0.0.2" + "x-path": "^0.0.2" } }, "require-uncached": { @@ -15712,7 +15711,7 @@ "integrity": "sha1-KU0Ha7l6dwbMBwu7Km/YxU32exI=", "dev": true, "requires": { - "path-extra": "1.0.3" + "path-extra": "^1.0.2" } }, "xdg-basedir": { diff --git a/package.json b/package.json index 5df58161bdb..16b6d86d2a8 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "babel-eslint": "8.2.3", "babel-jest": "22.4.4", "babel-plugin-dynamic-import-node": "1.2.0", - "babel-plugin-inline-import": "2.0.6", + "babel-plugin-inline-import": "github:reactioncommerce/babel-plugin-inline-import", "babel-plugin-lodash": "3.3.2", "babel-plugin-module-resolver": "3.1.1", "babel-plugin-rewire-exports": "0.3.0", From 0f72cda815d80ff5396d39e2c3f1a94d5a4e7174 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Thu, 31 May 2018 19:28:48 -0500 Subject: [PATCH 136/201] chore: remove symlink workaround --- imports/module_symlinks/README.md | 3 - imports/module_symlinks/bootstrap-less | 1 - imports/module_symlinks/font-awesome-less | 1 - imports/module_symlinks/react-select-less | 1 - .../default-theme/client/styles/fonts.less | 24 +++--- .../default-theme/client/styles/main.less | 82 +++++++++---------- 6 files changed, 53 insertions(+), 59 deletions(-) delete mode 100644 imports/module_symlinks/README.md delete mode 120000 imports/module_symlinks/bootstrap-less delete mode 120000 imports/module_symlinks/font-awesome-less delete mode 120000 imports/module_symlinks/react-select-less diff --git a/imports/module_symlinks/README.md b/imports/module_symlinks/README.md deleted file mode 100644 index b66e09c8260..00000000000 --- a/imports/module_symlinks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Modules Symlinks Folder - -If you need access to some files in `node_modules`, symlink them into here. Refer to [the second bullet point here](https://github.com/meteor/meteor/blob/1aabda8fcf6dfbd31a1d11e6ff7d8b74e1defcf9/History.md#v17-2018-05-18) and [this commit comment](https://github.com/meteor/meteor/commit/c5302bb2ba609e5535dcce8647adf30e0a6f8daf) and [this issue](https://github.com/meteor/meteor/issues/9899). diff --git a/imports/module_symlinks/bootstrap-less b/imports/module_symlinks/bootstrap-less deleted file mode 120000 index 1c68ddd3bc3..00000000000 --- a/imports/module_symlinks/bootstrap-less +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/bootstrap/less/ \ No newline at end of file diff --git a/imports/module_symlinks/font-awesome-less b/imports/module_symlinks/font-awesome-less deleted file mode 120000 index 673b885f896..00000000000 --- a/imports/module_symlinks/font-awesome-less +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/font-awesome/less/ \ No newline at end of file diff --git a/imports/module_symlinks/react-select-less b/imports/module_symlinks/react-select-less deleted file mode 120000 index 61c40098a05..00000000000 --- a/imports/module_symlinks/react-select-less +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/react-select/less/ \ No newline at end of file diff --git a/imports/plugins/included/default-theme/client/styles/fonts.less b/imports/plugins/included/default-theme/client/styles/fonts.less index 3eec3044809..4c17222d27f 100644 --- a/imports/plugins/included/default-theme/client/styles/fonts.less +++ b/imports/plugins/included/default-theme/client/styles/fonts.less @@ -1,17 +1,17 @@ // Font Awesome // Font files are transferred to /public/fonts in package.json postinstall script -@import "/imports/module_symlinks/font-awesome-less/variables.less"; -@import "/imports/module_symlinks/font-awesome-less/mixins.less"; -@import "/imports/module_symlinks/font-awesome-less/core.less"; -@import "/imports/module_symlinks/font-awesome-less/larger.less"; -@import "/imports/module_symlinks/font-awesome-less/fixed-width.less"; -@import "/imports/module_symlinks/font-awesome-less/list.less"; -@import "/imports/module_symlinks/font-awesome-less/bordered-pulled.less"; -@import "/imports/module_symlinks/font-awesome-less/animated.less"; -@import "/imports/module_symlinks/font-awesome-less/rotated-flipped.less"; -@import "/imports/module_symlinks/font-awesome-less/stacked.less"; -@import "/imports/module_symlinks/font-awesome-less/icons.less"; -@import "/imports/module_symlinks/font-awesome-less/screen-reader.less"; +@import "{}/node_modules/font-awesome/less/variables.less"; +@import "{}/node_modules/font-awesome/less/mixins.less"; +@import "{}/node_modules/font-awesome/less/core.less"; +@import "{}/node_modules/font-awesome/less/larger.less"; +@import "{}/node_modules/font-awesome/less/fixed-width.less"; +@import "{}/node_modules/font-awesome/less/list.less"; +@import "{}/node_modules/font-awesome/less/bordered-pulled.less"; +@import "{}/node_modules/font-awesome/less/animated.less"; +@import "{}/node_modules/font-awesome/less/rotated-flipped.less"; +@import "{}/node_modules/font-awesome/less/stacked.less"; +@import "{}/node_modules/font-awesome/less/icons.less"; +@import "{}/node_modules/font-awesome/less/screen-reader.less"; // overwrite path from node_modules diff --git a/imports/plugins/included/default-theme/client/styles/main.less b/imports/plugins/included/default-theme/client/styles/main.less index 2b91a63d461..35aed6a3b3d 100644 --- a/imports/plugins/included/default-theme/client/styles/main.less +++ b/imports/plugins/included/default-theme/client/styles/main.less @@ -3,57 +3,57 @@ // // Core variables and mixins -@import "/imports/module_symlinks/bootstrap-less/variables.less"; -@import "/imports/module_symlinks/bootstrap-less/mixins.less"; +@import "{}/node_modules/bootstrap/less/variables.less"; +@import "{}/node_modules/bootstrap/less/mixins.less"; // Reset and dependencies -@import "/imports/module_symlinks/bootstrap-less/normalize.less"; -@import "/imports/module_symlinks/bootstrap-less/print.less"; -@import "/imports/module_symlinks/bootstrap-less/glyphicons.less"; +@import "{}/node_modules/bootstrap/less/normalize.less"; +@import "{}/node_modules/bootstrap/less/print.less"; +@import "{}/node_modules/bootstrap/less/glyphicons.less"; // Core CSS -@import "/imports/module_symlinks/bootstrap-less/scaffolding.less"; -@import "/imports/module_symlinks/bootstrap-less/type.less"; -@import "/imports/module_symlinks/bootstrap-less/code.less"; -@import "/imports/module_symlinks/bootstrap-less/grid.less"; -@import "/imports/module_symlinks/bootstrap-less/tables.less"; -@import "/imports/module_symlinks/bootstrap-less/forms.less"; -@import "/imports/module_symlinks/bootstrap-less/buttons.less"; +@import "{}/node_modules/bootstrap/less/scaffolding.less"; +@import "{}/node_modules/bootstrap/less/type.less"; +@import "{}/node_modules/bootstrap/less/code.less"; +@import "{}/node_modules/bootstrap/less/grid.less"; +@import "{}/node_modules/bootstrap/less/tables.less"; +@import "{}/node_modules/bootstrap/less/forms.less"; +@import "{}/node_modules/bootstrap/less/buttons.less"; // Components -@import "/imports/module_symlinks/bootstrap-less/component-animations.less"; -@import "/imports/module_symlinks/bootstrap-less/dropdowns.less"; -@import "/imports/module_symlinks/bootstrap-less/button-groups.less"; -@import "/imports/module_symlinks/bootstrap-less/input-groups.less"; -@import "/imports/module_symlinks/bootstrap-less/navs.less"; -@import "/imports/module_symlinks/bootstrap-less/navbar.less"; -@import "/imports/module_symlinks/bootstrap-less/breadcrumbs.less"; -@import "/imports/module_symlinks/bootstrap-less/pagination.less"; -@import "/imports/module_symlinks/bootstrap-less/pager.less"; -@import "/imports/module_symlinks/bootstrap-less/labels.less"; -@import "/imports/module_symlinks/bootstrap-less/badges.less"; -@import "/imports/module_symlinks/bootstrap-less/jumbotron.less"; -@import "/imports/module_symlinks/bootstrap-less/thumbnails.less"; -@import "/imports/module_symlinks/bootstrap-less/alerts.less"; -@import "/imports/module_symlinks/bootstrap-less/progress-bars.less"; -@import "/imports/module_symlinks/bootstrap-less/media.less"; -@import "/imports/module_symlinks/bootstrap-less/list-group.less"; -@import "/imports/module_symlinks/bootstrap-less/panels.less"; -@import "/imports/module_symlinks/bootstrap-less/responsive-embed.less"; -@import "/imports/module_symlinks/bootstrap-less/wells.less"; -@import "/imports/module_symlinks/bootstrap-less/close.less"; +@import "{}/node_modules/bootstrap/less/component-animations.less"; +@import "{}/node_modules/bootstrap/less/dropdowns.less"; +@import "{}/node_modules/bootstrap/less/button-groups.less"; +@import "{}/node_modules/bootstrap/less/input-groups.less"; +@import "{}/node_modules/bootstrap/less/navs.less"; +@import "{}/node_modules/bootstrap/less/navbar.less"; +@import "{}/node_modules/bootstrap/less/breadcrumbs.less"; +@import "{}/node_modules/bootstrap/less/pagination.less"; +@import "{}/node_modules/bootstrap/less/pager.less"; +@import "{}/node_modules/bootstrap/less/labels.less"; +@import "{}/node_modules/bootstrap/less/badges.less"; +@import "{}/node_modules/bootstrap/less/jumbotron.less"; +@import "{}/node_modules/bootstrap/less/thumbnails.less"; +@import "{}/node_modules/bootstrap/less/alerts.less"; +@import "{}/node_modules/bootstrap/less/progress-bars.less"; +@import "{}/node_modules/bootstrap/less/media.less"; +@import "{}/node_modules/bootstrap/less/list-group.less"; +@import "{}/node_modules/bootstrap/less/panels.less"; +@import "{}/node_modules/bootstrap/less/responsive-embed.less"; +@import "{}/node_modules/bootstrap/less/wells.less"; +@import "{}/node_modules/bootstrap/less/close.less"; // Components w/ JavaScript -@import "/imports/module_symlinks/bootstrap-less/modals.less"; -// @import "/imports/module_symlinks/bootstrap-less/tooltip.less"; -@import "/imports/module_symlinks/bootstrap-less/popovers.less"; -@import "/imports/module_symlinks/bootstrap-less/carousel.less"; -@import "/imports/module_symlinks/react-select-less/default.less"; +@import "{}/node_modules/bootstrap/less/modals.less"; +// @import "{}/node_modules/bootstrap/less/tooltip.less"; +@import "{}/node_modules/bootstrap/less/popovers.less"; +@import "{}/node_modules/bootstrap/less/carousel.less"; +@import "{}/node_modules/react-select/less/default.less"; // Utility classes -@import "/imports/module_symlinks/bootstrap-less/utilities.less"; -@import "/imports/module_symlinks/bootstrap-less/responsive-utilities.less"; +@import "{}/node_modules/bootstrap/less/utilities.less"; +@import "{}/node_modules/bootstrap/less/responsive-utilities.less"; // ----------------------------------------------------------------------------- @@ -156,4 +156,4 @@ @import "search/sortable-table.less"; // React-select -@import "/imports/module_symlinks/react-select-less/select.less"; +@import "{}/node_modules/react-select/less/select.less"; From 426c68b95a9f5aec610e0cf62f49b574e140704d Mon Sep 17 00:00:00 2001 From: James Porlante Date: Fri, 1 Jun 2018 11:48:06 +0700 Subject: [PATCH 137/201] (fix) add getAutoValues: false to discounts/codes/remove --- .../plugins/included/discount-codes/server/methods/methods.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/discount-codes/server/methods/methods.js b/imports/plugins/included/discount-codes/server/methods/methods.js index 4249deda693..8057cd3cda7 100644 --- a/imports/plugins/included/discount-codes/server/methods/methods.js +++ b/imports/plugins/included/discount-codes/server/methods/methods.js @@ -181,7 +181,7 @@ export const methods = { const result = Collection.update( { _id: id }, { $set: { discount: currentDiscount }, $pull: { billing: { _id: codeId } } }, - { multi: true } + { multi: true, getAutoValues: false } // See https://github.com/aldeed/meteor-collection2/issues/245 ); // calculate discounts From 2ca2bd0edbe279b8e42c18a26df1793ad8a111f0 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Fri, 1 Jun 2018 10:57:08 -0600 Subject: [PATCH 138/201] chore: move jq binary installation into dockerfile --- .circleci/config.yml | 9 ++++----- Dockerfile | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 910ae592612..90000303b4e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,18 +218,17 @@ jobs: - run: name: Snyk Test command: | - CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}" + CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}" # Determine PR number from pull request link if [ -n ${CIRCLE_PR_NUMBER} ]; then - curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o jq - chmod +x jq - url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" - TARGET_BRANCH=$(curl "$url" | ./jq '.base.ref' | tr -d '"') + url="https://api.github.com/repos/${DOCKER_REPOSITORY}/pulls/$CIRCLE_PR_NUMBER" # Get PR from github API + TARGET_BRANCH=$(curl "$url" | jq '.base.ref' | tr -d '"') # Determine target/base branch from API response fi # If target branch does not exist or is master, run snyk tests if [ ${TARGET_BRANCH} == "master" ] || [ -z "${TARGET_BRANCH/[ ]*\n/}" ]; then PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ snyk test else + # If package.json is different from the base branch, run snyk if git diff origin/$CIRCLE_BRANCH..origin/$TARGET_BRANCH package.json | grep diff; then echo "package.json different. Running Snyk." PATH=$PATH:$CIRCLE_WORKING_DIRECTORY/node_modules/.bin && \ diff --git a/Dockerfile b/Dockerfile index 1b1109e0804..f4f6af64f70 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,9 @@ ENV PATH $PATH:/home/node/.meteor COPY --chown=node package-lock.json $APP_SOURCE_DIR/ COPY --chown=node package.json $APP_SOURCE_DIR/ +RUN curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o /home/node/jq +RUN chmod +x /home/node/jq # Make jq executable so that we can run it against the + # Because Docker Compose uses a named volume for node_modules and named volumes are owned # by root by default, we have to initially create node_modules here with correct owner. # Without this NPM cannot write packages into node_modules later, when running in a container. From 28b95fe77fc313534198605d2ed2572f9df239db Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Fri, 1 Jun 2018 13:16:10 -0500 Subject: [PATCH 139/201] tests: add timeouts to stop random test failures --- .../lib/jobCollection.app-test.js | 43 ++++++++++++++++--- server/methods/core/shops.app-test.js | 3 ++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/imports/plugins/core/job-collection/lib/jobCollection.app-test.js b/imports/plugins/core/job-collection/lib/jobCollection.app-test.js index adb146696de..e4610481b62 100644 --- a/imports/plugins/core/job-collection/lib/jobCollection.app-test.js +++ b/imports/plugins/core/job-collection/lib/jobCollection.app-test.js @@ -19,6 +19,7 @@ const validJobDoc = (d) => Match.test(d, defaultColl.jobDocPattern); describe("JobCollection default constructor", function () { it("should be an instance of JobCollection", function () { + this.timeout(15000); expect(defaultColl, "JobCollection constructor failed").to.be.an.instanceOf(JobCollection); expect(defaultColl.root, "default root isn't 'queue'").to.equal("queue"); @@ -61,10 +62,12 @@ describe("JobCollection", function () { }); it("should set permissions to allow admin on ClientTest", function () { + this.timeout(15000); expect(clientTestColl.allows.admin[0]()).to.equal(true); }); it("should set polling interval", function () { + this.timeout(15000); let { interval } = clientTestColl; clientTestColl.promote(250); expect(interval, "clientTestColl interval not updated").to.not.equal(clientTestColl.interval); @@ -75,6 +78,7 @@ describe("JobCollection", function () { }); it("should run startJobServer on new job collection", function (done) { + this.timeout(15000); testColl.startJobServer(function (err, res) { if (err) { done(err); } expect(res, "startJobServer failed in callback result").to.equal(true); @@ -87,6 +91,7 @@ describe("JobCollection", function () { if (Meteor.isServer) { it("should create a server-side job and see that it is added to the collection and runs", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }); assert.ok(validJobDoc(job.doc)); @@ -110,6 +115,7 @@ describe("JobCollection", function () { } it("should create a job and see that it is added to the collection and runs", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }); assert.ok(validJobDoc(job.doc)); @@ -128,6 +134,7 @@ describe("JobCollection", function () { }); it("should create an invalid job and see that errors correctly propagate", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }); @@ -164,6 +171,7 @@ describe("JobCollection", function () { }); it("should create a job and then make a new doc with its document", function (done) { + this.timeout(15000); let job; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job2 = new Job(testColl, jobType, { some: "data" }); @@ -191,6 +199,7 @@ describe("JobCollection", function () { }); it("should should create a repeating job that returns the _id of the next job", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }).repeat({ repeats: 1, wait: 250 }); @@ -229,6 +238,7 @@ describe("JobCollection", function () { }); it("should have dependent jobs run in the correct order", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -256,6 +266,7 @@ describe("JobCollection", function () { if (Meteor.isServer) { it("should dry run of dependency check returns status object", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -290,6 +301,7 @@ describe("JobCollection", function () { } it("should have dependent job saved after completion of antecedent still runs", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -316,6 +328,7 @@ describe("JobCollection", function () { }); it("should have dependent job saved after failure of antecedent is cancelled", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -339,6 +352,7 @@ describe("JobCollection", function () { }); it("should have dependent job saved after cancelled antecedent is also cancelled", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -359,6 +373,7 @@ describe("JobCollection", function () { }); it("should have dependent job saved after removed antecedent is cancelled", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -383,6 +398,7 @@ describe("JobCollection", function () { }); it("should cancel succeeds for job without deps, with using option dependents: false", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, {}); job.save(function (err2, res2) { @@ -397,6 +413,7 @@ describe("JobCollection", function () { }); it("should have dependent job with delayDeps is delayed", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -423,9 +440,10 @@ describe("JobCollection", function () { }); }); }); - }).timeout(4000); + }); it("should be dependent job with delayDeps is delayed", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { order: 1 }); const job2 = new Job(testColl, jobType, { order: 2 }); @@ -452,9 +470,10 @@ describe("JobCollection", function () { }); }); }); - }).timeout(4000); + }); it("Job priority is respected", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const jobs = []; @@ -486,6 +505,7 @@ describe("JobCollection", function () { }); it("Job priority is respected", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const jobs = []; @@ -517,6 +537,7 @@ describe("JobCollection", function () { }); it("A forever retrying job can be scheduled and run", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }).retry({ retries: testColl.forever, wait: 0 }); @@ -539,6 +560,7 @@ describe("JobCollection", function () { }); it("Retrying job with exponential backoff", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }).retry({ retries: 2, wait: 200, backoff: "exponential" }); @@ -561,6 +583,7 @@ describe("JobCollection", function () { }); it("should have a forever retrying job with 'until'", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }).retry({ until: new Date(new Date().valueOf() + 1500), wait: 500 }); job.save(function (err, res) { @@ -580,9 +603,10 @@ describe("JobCollection", function () { 2500 ); }); - }).timeout(5000); + }); it("should autofail and retry a job", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }).retry({ retries: 2, wait: 0 }); @@ -608,10 +632,11 @@ describe("JobCollection", function () { 2500 ); }); - }).timeout(5000); + }); if (Meteor.isServer) { it("should save, cancel, restart, refresh: retries are correct.", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const j = new Job(testColl, jobType, { foo: "bar" }); j.save(); @@ -623,6 +648,7 @@ describe("JobCollection", function () { }); it("should add, cancel and remove a large number of jobs", function (done) { + this.timeout(15000); const count = 500; let c = count; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; @@ -656,9 +682,10 @@ describe("JobCollection", function () { } return result; })(); - }).timeout(5000); + }); it("should have a forever repeating job with 'schedule' and 'until'", function (done) { + this.timeout(15000); let counter = 0; const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(testColl, jobType, { some: "data" }) @@ -695,10 +722,11 @@ describe("JobCollection", function () { ev = testColl.events.on("jobDone", listener); return ev; }); - }).timeout(4000); + }); } it("should run shutdownJobServer on the job collection", function (done) { + this.timeout(15000); testColl.shutdownJobServer({ timeout: 1 }, function (err, res) { if (err) { done(err); } expect(res, true, "shutdownJobServer failed in callback result"); @@ -711,6 +739,7 @@ describe("JobCollection", function () { if (Meteor.isClient) { it("should run startJobServer on remote job collection", function (done) { + this.timeout(15000); remoteServerTestColl.startJobServer(function (err, res) { if (err) { done(err); } expect(res, "startJobServer failed in callback result").to.equal(true); @@ -719,6 +748,7 @@ describe("JobCollection", function () { }); it("should create a job and see that it is added to a remote server collection and runs", function (done) { + this.timeout(15000); const jobType = `TestJob_${Math.round(Math.random() * 1000000000)}`; const job = new Job(remoteServerTestColl, jobType, { some: "data" }); assert.ok(validJobDoc(job.doc)); @@ -735,6 +765,7 @@ describe("JobCollection", function () { }); it("should run shutdownJobServer on remote job collection", function (done) { + this.timeout(15000); remoteServerTestColl.shutdownJobServer({ timeout: 1 }, function (err, res) { if (err) { done(err); } expect(res, "shutdownJobServer failed in callback result").to.equal(true); diff --git a/server/methods/core/shops.app-test.js b/server/methods/core/shops.app-test.js index a70b3edd298..665d2f7523b 100644 --- a/server/methods/core/shops.app-test.js +++ b/server/methods/core/shops.app-test.js @@ -98,12 +98,14 @@ describe("core shop methods", function () { }); it("creates a new shop for admin for userId and a partial shopObject", function () { + this.timeout(15000); const partialShop = { name }; Meteor.call("shop/createShop", userId, partialShop); }); it("creates a new shop for admin for userId and a partial shopObject ignoring extraneous data", function () { + this.timeout(15000); const extraneousData = Random.id(); const partialShop = { name, extraneousData }; @@ -120,6 +122,7 @@ describe("core shop methods", function () { describe("shop/changeLayouts", function () { it("should replace every layout with the new layout", function () { + this.timeout(15000); const shop = Factory.create("shop"); Meteor.call("shop/changeLayouts", shop._id, "myNewLayout"); const myShop = Shops.findOne(shop._id); From bbd52524c9b5b4b542f71cde9ff7f5a1ca792d4b Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Fri, 1 Jun 2018 13:17:41 -0500 Subject: [PATCH 140/201] tests: fix the default shop fixture --- server/imports/fixtures/shops.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/imports/fixtures/shops.js b/server/imports/fixtures/shops.js index 73c7ec647ef..5737632bcbf 100755 --- a/server/imports/fixtures/shops.js +++ b/server/imports/fixtures/shops.js @@ -160,7 +160,7 @@ const shop = { enabled: true }], workflow: { - status: "active" + status: "new" }, public: true, brandAssets: [ From b869e656c3d7847be1de6365930e9e9f60be33db Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Fri, 1 Jun 2018 13:18:47 -0500 Subject: [PATCH 141/201] fix: editMode default is now false for Products This should impact tests only since our subscribe passes in a value. --- server/publications/collections/products.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index 962dc048ce4..e86366b380a 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -291,18 +291,20 @@ function filterProducts(productFilters) { } /** - * products publication - * @param {Number} [productScrollLimit] - optional, defaults to 24 - * @param {Array} shops - array of shopId to retrieve product from. - * @return {Object} return product cursor + * @summary Products publication + * @param {Number} [productScrollLimit] - Top-level product limit. Optional, defaults to 24 + * @param {Object} [productFilters] - Optional filters to apply + * @param {Object} [sort] - Optional MongoDB sort object + * @param {Boolean} [editMode] - If true, will add a shopId filter limiting the results to shops + * for which the logged in user has "createProduct" permission. Default is false. + * @return {MongoCursor|undefined} Products collection cursor, or undefined if none to publish */ -Meteor.publish("Products", function (productScrollLimit = 24, productFilters, sort = {}, editMode = true) { +Meteor.publish("Products", function (productScrollLimit = 24, productFilters, sort = {}, editMode = false) { check(productScrollLimit, Number); check(productFilters, Match.OneOf(undefined, Object)); check(sort, Match.OneOf(undefined, Object)); check(editMode, Match.Maybe(Boolean)); - const selector = filterProducts(productFilters); if (selector === false) { From 618cb76664a8acafcc6dfc18dfdb47a78f6e0869 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Fri, 1 Jun 2018 13:18:59 -0500 Subject: [PATCH 142/201] tests: fix product publication tests --- .../product-publications.app-test.js | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index e8235dda082..d1301cffbdd 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -71,12 +71,14 @@ describe("Publication", function () { }; beforeEach(function () { + this.timeout(15000); Collections.Products.remove({}); // a product with price range A, and not visible const productId1 = Collections.Products.insert({ ancestors: [], title: "My Little Pony", + handle: "my-little-pony", shopId, type: "simple", price: priceRangeA, @@ -89,6 +91,7 @@ describe("Publication", function () { const productId2 = Collections.Products.insert({ ancestors: [], title: "Shopkins - Peachy", + handle: "shopkins-peachy", shopId, price: priceRangeB, type: "simple", @@ -101,6 +104,7 @@ describe("Publication", function () { const productId3 = Collections.Products.insert({ ancestors: [], title: "Fresh Tomatoes", + handle: "fresh-tomatoes", shopId, price: priceRangeA, type: "simple", @@ -113,6 +117,7 @@ describe("Publication", function () { const productId4 = Collections.Products.insert({ ancestors: [], title: "Teddy Ruxpin", + handle: "teddy-ruxpin", shopId: merchantShopId, type: "simple", price: priceRangeA, @@ -125,6 +130,7 @@ describe("Publication", function () { const productId5 = Collections.Products.insert({ ancestors: [], title: "Garbage Pail Kids", + handle: "garbage-pail-kids", shopId: primaryShopId, type: "simple", price: priceRangeA, @@ -138,6 +144,7 @@ describe("Publication", function () { Collections.Products.insert({ ancestors: [], title: "Lite Bright", + handle: "lite-bright", shopId: inactiveMerchantShopId, type: "simple", price: priceRangeA, @@ -147,7 +154,7 @@ describe("Publication", function () { isBackorder: false }); - // helper arrays for writing expecations in tests + // helper arrays for writing expectations in tests merchantShop1ProductIds = [productId1, productId2, productId3]; merchantShop1VisibleProductIds = [productId2, productId3]; activeShopProductIds = [productId1, productId2, productId3, productId4, productId5]; @@ -165,7 +172,7 @@ describe("Publication", function () { sandbox.stub(Reaction, "hasPermission", () => true); sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); - collector.collect("Products", 24, undefined, {}, ({ Products }) => { + collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { const productIds = Products.map((p) => p._id); expect(productIds).to.have.members(activeShopProductIds); @@ -179,7 +186,7 @@ describe("Publication", function () { sandbox.stub(Reaction, "hasPermission", () => true); sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); - collector.collect("Products", 24, undefined, {}, ({ Products }) => { + collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { const productIds = Products.map((p) => p._id); expect(productIds).to.have.members(merchantShop1ProductIds); @@ -193,28 +200,13 @@ describe("Publication", function () { sandbox.stub(Reaction, "hasPermission", () => true); sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); - collector.collect("Products", 24, undefined, {}, ({ Products }) => { + collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { const productIds = Products.map((p) => p._id); expect(productIds).to.have.members(merchantShop1ProductIds); }).then(() => done(/* empty */), done); }); - it("should have an expected product title", function (done) { - // setup - sandbox.stub(Reaction, "getShopId", () => shopId); - sandbox.stub(Roles, "userIsInRole", () => true); - sandbox.stub(Reaction, "hasPermission", () => true); - sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); - - collector.collect("Products", 24, undefined, {}, ({ Products }) => { - const data = Products[1]; - const expectedTitles = ["My Little Pony", "Shopkins - Peachy"]; - - expect(expectedTitles.some((title) => title === data.title)).to.be.ok; - }).then(() => done(/* empty */), done); - }); - it("should return only visible products to visitors", function (done) { sandbox.stub(Reaction, "getShopId", () => shopId); sandbox.stub(Roles, "userIsInRole", () => false); @@ -341,7 +333,7 @@ describe("Publication", function () { describe("Shop conditions", function () { beforeEach(function () { - publishProducts(); + return publishProducts(); }); it("returns products from the active shop", function (done) { @@ -360,6 +352,8 @@ describe("Publication", function () { collector.collect("Products/grid", ({ Catalog }) => { const productIds = Catalog.map((c) => c.product._id); + console.log("TEST productIds", JSON.stringify(productIds)); + console.log("TEST activeShopVisibleProductIds", JSON.stringify(activeShopVisibleProductIds)); expect(productIds).to.have.members(activeShopVisibleProductIds); }).then(() => done(/* empty */), done); }); From 064b7f882beb33effa6694ba818338ab1d183996 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Fri, 1 Jun 2018 14:07:14 -0500 Subject: [PATCH 143/201] tests: remove console log --- .../publications/collections/product-publications.app-test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index d1301cffbdd..9d8a2587859 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -352,8 +352,6 @@ describe("Publication", function () { collector.collect("Products/grid", ({ Catalog }) => { const productIds = Catalog.map((c) => c.product._id); - console.log("TEST productIds", JSON.stringify(productIds)); - console.log("TEST activeShopVisibleProductIds", JSON.stringify(activeShopVisibleProductIds)); expect(productIds).to.have.members(activeShopVisibleProductIds); }).then(() => done(/* empty */), done); }); From 57b4fbfb14db664283fca51350d58b4480a29e79 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Fri, 1 Jun 2018 14:21:56 -0600 Subject: [PATCH 144/201] chore: Add comments about why we're installing jq --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f4f6af64f70..002b1232746 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,8 +10,11 @@ ENV PATH $PATH:/home/node/.meteor COPY --chown=node package-lock.json $APP_SOURCE_DIR/ COPY --chown=node package.json $APP_SOURCE_DIR/ + +# # Install jq, a lightweight and flexible command-line JSON processor. +# We use it to determine the base branch of a PR so we can run diffs to conditionally run circle workflows RUN curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o /home/node/jq -RUN chmod +x /home/node/jq # Make jq executable so that we can run it against the +RUN chmod +x /home/node/jq # Because Docker Compose uses a named volume for node_modules and named volumes are owned # by root by default, we have to initially create node_modules here with correct owner. From 3654f680854c079eb1f7dda7b3225bd47506055e Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 1 Jun 2018 16:37:01 -0500 Subject: [PATCH 145/201] refactor: removed the Reaction.getSlug calls to just use the provided getSlug helper func in the server/shop methods --- server/methods/core/shop.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/methods/core/shop.js b/server/methods/core/shop.js index f8734779f0b..362044a8128 100644 --- a/server/methods/core/shop.js +++ b/server/methods/core/shop.js @@ -644,7 +644,7 @@ Meteor.methods({ const tag = { name: tagName, - slug: Reaction.getSlug(tagName), + slug: getSlug(tagName), shopId: Reaction.getShopId(), isTopLevel, updatedAt: new Date(), @@ -677,12 +677,12 @@ Meteor.methods({ this.unblock(); const newTag = { - slug: Reaction.getSlug(tagName), + slug: getSlug(tagName), name: tagName }; const existingTag = Collections.Tags.findOne({ - slug: Reaction.getSlug(tagName), + slug: getSlug(tagName), name: tagName }); From 50b0197665dc852c5e0b16c26f4601bb6338b520 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Fri, 1 Jun 2018 17:10:34 -0500 Subject: [PATCH 146/201] chore: removed temp data-factory code, added @reactioncommerce/data-factory package --- imports/test-utils/helpers/dataFactory.js | 179 ---------------------- imports/test-utils/helpers/factory.js | 2 +- package.json | 2 +- 3 files changed, 2 insertions(+), 181 deletions(-) delete mode 100644 imports/test-utils/helpers/dataFactory.js diff --git a/imports/test-utils/helpers/dataFactory.js b/imports/test-utils/helpers/dataFactory.js deleted file mode 100644 index 0062f0c5565..00000000000 --- a/imports/test-utils/helpers/dataFactory.js +++ /dev/null @@ -1,179 +0,0 @@ -import _ from "lodash"; -import faker from "faker"; -import SimpleSchema from "simpl-schema"; - -SimpleSchema.extendOptions(["mockValue"]); - -const getMockDoc = (schema, prefix, addId) => { - const docPrefix = prefix || "mock"; - const mockDoc = {}; - const model = schema._schema; - - // Not sure how the seed feature works with faker.js but with this set I would get the same _id for every mock that was created - // const seed = Array.prototype.reduce.call(docPrefix, (sum, char) => sum + char.charCodeAt(), 0); - // faker.seed(seed); - - Object.keys(model).forEach((key) => { - let fieldValue = null; - - // If field defined by parent - const currentMockValue = _.get(mockDoc, `${key.replace(".$", ".0")}`); - if (!_.isUndefined(currentMockValue, key)) { - return; - } - - const defField = _.get(model[key], "type.definitions[0]") || model[key]; - - try { - if (model[key].mockValue !== undefined) { - fieldValue = model[key].mockValue; - } else if (model[key].defaultValue !== undefined) { - fieldValue = model[key].defaultValue; - } else if (model[key].autoValue !== undefined) { - fieldValue = model[key].autoValue.call({ operator: null }); - } else if (Array.isArray(defField.allowedValues)) { - fieldValue = defField.allowedValues[0]; // eslint-disable-line - } else { - throw new Error("Invalid"); - } - } catch (err) { - // Need 'defField' for field like: `key: Boolean` - const fieldType = defField.type || defField; - - switch (fieldType) { - case Date: - fieldValue = new Date(faker.random.number() * 1000); - break; - - case Number: - case SimpleSchema.Integer: - fieldValue = defField.min || defField.max || faker.random.number(); - break; - - case String: - fieldValue = `${docPrefix}${_.upperFirst(_.camelCase(key))}`; - if (defField.regEx) { - switch (String(defField.regEx)) { - case String(String(SimpleSchema.RegEx.Email)): - case String(String(SimpleSchema.RegEx.EmailWithTLD)): - fieldValue = faker.internet.email(); - break; - - case String(SimpleSchema.RegEx.Domain): - case String(SimpleSchema.RegEx.WeakDomain): - fieldValue = `${faker.internet.domainName()}${faker.internet.domainWord()}`; - break; - - case String(SimpleSchema.RegEx.IP): - case String(SimpleSchema.RegEx.IPv4): - fieldValue = faker.internet.ip(); - break; - - case String(SimpleSchema.RegEx.IPv6): - fieldValue = faker.internet.ipv6(); - break; - - case String(SimpleSchema.RegEx.Url): - fieldValue = faker.internet.url(); - break; - - case String(SimpleSchema.RegEx.Id): - fieldValue = faker.random.alphaNumeric(17); - break; - - case String(SimpleSchema.RegEx.ZipCode): - fieldValue = faker.address.zipCode(); - break; - - case String(SimpleSchema.RegEx.Phone): - fieldValue = key.match(/mobile/i) - ? faker.phone.phoneNumber("074## ######") - : faker.phone.phoneNumber("012## ######"); - break; - - default: - break; - } - } - break; - - case Boolean: - fieldValue = defField.defaultValue !== undefined ? defField.defaultValue : faker.random.boolean(); - break; - - case Object: { - fieldValue = {}; - break; - } - - case Array: - fieldValue = []; - break; - - default: - if (fieldType instanceof SimpleSchema || _.get(fieldType, "_schema")) { - fieldValue = getMockDoc(fieldType, prefix); - } - break; - } - } - - _.set(mockDoc, key.replace(".$", ".0"), fieldValue); - }); - - if (addId) { - mockDoc._id = faker.random.alphaNumeric(17); - } - - return mockDoc; -}; - -// const clearMockValues = (schema) => { -// if (process.env.NODE_ENV === "jesttest") { -// return schema; -// } - -// _.each(schema._schema, (field, key) => { -// schema._schema[key] = _.omit(field, "mockValue"); -// }); -// return schema; -// }; - -/** - * @const {Object} Factory - todo - * @todo write const desciption - */ -export const Factory = {}; - -/** - * @name createFactoryForSchema - * @function - * @summary Creates Factory[propName] for building fake documents with the given schema. - * @param {String} propName The property name to add to the `Factory` object. This should match the - * schema variable's name. - * @param {SimpleSchema} schema A SimpleSchema instance - */ -export function createFactoryForSchema(propName, schema) { - // eslint-disable-next-line - if (Factory.hasOwnProperty(propName)) { - throw new Error(`Factory already has a "${propName}" property`); - } - - Factory[propName] = { - makeOne(props, index) { - const doc = getMockDoc(schema, "mock", true); - Object.keys(props).forEach((key) => { - const value = props[key]; - if (typeof value === "function") { - doc[key] = value(index); - } else { - doc[key] = value; - } - }); - return doc; - }, - makeMany(length, props) { - return Array.from({ length }).map((value, index) => this.makeOne(props, index)); - } - }; -} diff --git a/imports/test-utils/helpers/factory.js b/imports/test-utils/helpers/factory.js index 019a82111d9..bfe7910ab05 100644 --- a/imports/test-utils/helpers/factory.js +++ b/imports/test-utils/helpers/factory.js @@ -1,5 +1,5 @@ +import { createFactoryForSchema, Factory } from "@reactioncommerce/data-factory"; import * as schemas from "imports/collections/schemas"; -import { createFactoryForSchema, Factory } from "./dataFactory"; Object.keys(schemas).forEach((key) => { createFactoryForSchema(key, schemas[key]); diff --git a/package.json b/package.json index e5bf520c3a9..30a972a8d82 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "dependencies": { "@babel/runtime": "7.0.0-beta.38", + "@reactioncommerce/data-factory": "^1.0.0", "@reactioncommerce/file-collections": "0.5.0", "@reactioncommerce/file-collections-sa-gridfs": "0.0.2", "@reactioncommerce/hooks": "1.0.2", @@ -177,7 +178,6 @@ "mongodb-memory-server": "^1.7.3", "nodemon": "^1.17.2", "react-addons-test-utils": "15.6.2", - "simpl-schema-mockdoc": "^1.0.5", "snyk": "^1.78.0" }, "postcss": { From 1f43f71fa343b18abc79c36ea5f29ac63e0cb045 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Sat, 2 Jun 2018 17:15:17 -0500 Subject: [PATCH 147/201] refactor: removed autoValue helper functions from schemas/helpers.js --- imports/collections/schemas/helpers.js | 79 -------------------------- 1 file changed, 79 deletions(-) diff --git a/imports/collections/schemas/helpers.js b/imports/collections/schemas/helpers.js index 264332bbadd..5c9cec3553c 100644 --- a/imports/collections/schemas/helpers.js +++ b/imports/collections/schemas/helpers.js @@ -1,7 +1,5 @@ import Random from "@reactioncommerce/random"; import { Meteor } from "meteor/meteor"; -// import { Reaction } from "/lib/api"; -// import { Shops } from "/lib/collections"; /** * @name createdAtAutoValue @@ -37,48 +35,6 @@ export function updatedAtAutoValue() { return new Date(); } -/** - * @name shopIdAutoValue - * @memberof Schemas - * @method - * @summary Helper method used for schema injection autoValue - * @example autoValue: shopIdAutoValue - * @return {String} current shopId - */ -// export function shopIdAutoValue() { -// // we should always have a shopId -// if (this.isSet && Meteor.isServer) { -// return this.value; -// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { -// return Reaction.getShopId(); -// } -// return this.unset(); -// } - -/** - * @name shopIdAutoValueForCart - * @memberof Schemas - * @method - * @summary Helper method copy of shopIdAutoValue with modification for Cart - * @example autoValue: shopIdAutoValue - * @return {String} shopId - */ -// export function shopIdAutoValueForCart() { -// // we should always have a shopId -// if (this.isSet && Meteor.isServer) { -// return this.value; -// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { -// let shopId = Reaction.getPrimaryShopId(); -// const marketplaceSettings = Reaction.getMarketplaceSettings(); - -// if (marketplaceSettings && marketplaceSettings.public && marketplaceSettings.public.merchantCart === true) { -// shopId = Reaction.getShopId(); -// } -// return shopId; -// } -// return this.unset(); -// } - /** * @name schemaIdAutoValue * @memberof Schemas @@ -95,38 +51,3 @@ export function schemaIdAutoValue() { } return this.unset(); } - -/** - * @name shopDefaultCountry - * @memberof Schemas - * @method - * @summary Helper method used for schema injection autoValue - * @example autoValue: shopDefaultCountry - * @return {String} country value from default shop - */ -// export function shopDefaultCountry() { -// try { -// // Check to see if this is client or server, and the type of update being performed -// if (this.isSet && Meteor.isServer) { -// return this.value; -// } else if ((Meteor.isServer && !this.isUpdate) || (Meteor.isClient && this.isInsert)) { -// // Find the current shop -// const shop = Shops.findOne({ -// _id: Reaction.getShopId() -// }); - -// // Find the current shops primary shipping address -// if (shop && shop.addressBook) { -// const defaultShippingAddress = shop.addressBook.find((address) => address.isShippingDefault === true); - -// // return the shops country to auto-populate the Country of Origin field in the scheme -// return defaultShippingAddress.country; -// } - -// return this.value; -// } -// return this.unset(); -// } catch (e) { -// return this.value; -// } -// } From c9b1d76894d37154c24bddcba9f1e70fc19c1c1f Mon Sep 17 00:00:00 2001 From: Aaron James Porlante Date: Sun, 3 Jun 2018 21:16:11 +0700 Subject: [PATCH 148/201] (style): remove comment in discounts/codes/remove --- .../plugins/included/discount-codes/server/methods/methods.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/included/discount-codes/server/methods/methods.js b/imports/plugins/included/discount-codes/server/methods/methods.js index 8057cd3cda7..1a91e81700d 100644 --- a/imports/plugins/included/discount-codes/server/methods/methods.js +++ b/imports/plugins/included/discount-codes/server/methods/methods.js @@ -181,7 +181,7 @@ export const methods = { const result = Collection.update( { _id: id }, { $set: { discount: currentDiscount }, $pull: { billing: { _id: codeId } } }, - { multi: true, getAutoValues: false } // See https://github.com/aldeed/meteor-collection2/issues/245 + { multi: true, getAutoValues: false } ); // calculate discounts From a9e503f6ae7b96c95355bf0dffa446cdc2da020b Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Mon, 4 Jun 2018 09:43:33 -0600 Subject: [PATCH 149/201] chore: update version number to 1.13.0 --- package-lock.json | 4 +++- package.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e31221adb8..1c2f668676d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "reaction", - "version": "1.12.0", + "version": "1.13.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -8890,6 +8890,7 @@ }, "readable-stream": { "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "from": "readable-stream@git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", "requires": { "inherits": "2.0.3", "isarray": "1.0.0", @@ -13980,6 +13981,7 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", + "from": "github:reactioncommerce/transliteration", "requires": { "yargs": "8.0.2" } diff --git a/package.json b/package.json index 2cd98370db8..6ce8a580a0c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reaction", "description": "Reaction is a modern reactive, real-time event driven ecommerce platform.", - "version": "1.12.0", + "version": "1.13.0", "main": "main.js", "directories": { "test": "tests" From d70273c0f5c1552eaf4253f6c0daad1b69dcbb2f Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Mon, 4 Jun 2018 09:44:03 -0600 Subject: [PATCH 150/201] chore: update changelog to include v1.12.0 --- CHANGELOG.md | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 225589878bb..6c18dc199aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,191 @@ +# v1.12.0 + +## Breaking changes +We've made some significant changes to the structure of the data that we publish to the Catalog in #4218. We have created an automated migration for these changes in #4272. If you have made other changes to the catalog in your app or in a plugin, this migration may not work out of the box for you. We'd recommend migrating a test or staging instance of your application with similar data before applying this update to your production application. + +From the PR notes to #4218, here's a list of the changes + +### Method argument change +"products/updateProductPosition" method now takes a tag ID rather than tag name as its third argument + +### Media change + +The `media` property on catalog items is still an array of objects, but the structure of those objects has changed. + +BEFORE: +```js +{ + metadata: {}, // the full metadata object from the Media doc + thumbnail: "", // a URL + small: "", // a URL + medium: "", // a URL + large: "", // a URL + image: "", // a URL +} +``` + +AFTER: +```js +{ + priority, // copied from metadata + toGrid, // copied from metadata + productId, // copied from metadata + variantId, // copied from metadata + URLs: { + thumbnail: "", // a URL + small: "", // a URL + medium: "", // a URL + large: "", // a URL + original: "", // a URL + } +} +``` + +Also, the media array is now sorted in ascending `priority` order. + +### Deleted and hidden variants change + +When published to the catalog, the `variants` array on the catalog item now includes only those variants where `isDeleted` IS NOT true and `isVisible` IS true. + +### Product props separated from catalog item props + +Most product properties that were formerly on the catalog item itself are now moved to a `product` object property. + +### Explicit property copying + +Previously all product and variant props were blindly copied into the catalog item. Now, we explicitly copy only the props we want, sometimes changing their names. + +### Property name changes + +- `variant.taxable -> variant.isTaxable` +- `variant.variantId` added, currently the same as variant._id but might not always be. A reference back to the variant in the Products collection. +- `product.taxable -> product.isTaxable` +- `product.productId` added, currently the same as product._id but might not always be. A reference back to the product in the Products collection. +- `product.handle -> product.slug` +- `product.hashtags -> product.tagIds` + +`product.twitterMsg` and `product.facebookMsg` and `product.googleplusMsg` and `product.pinterestMsg` are converted to a `product.socialMetadata` array like this: + +```js +socialMetadata: [ + { service: "twitter", message: product.twitterMsg }, + { service: "facebook", message: product.facebookMsg }, + { service: "googleplus", message: product.googleplusMsg }, + { service: "pinterest", message: product.pinterestMsg } +] +``` + +### New Pricing Object + +We've deprecated the `price` property on catalog products, variants, and options. There is a new property called `pricing`, which is a map keyed by currency code in MongoDB, and in GraphQL is converted to an array. + +The GraphQL schema: + +```graphql +"The product price or price range for a specific currency" +type ProductPricingInfo { + """ + A comparison price value, usually MSRP. If `price` is null, this will also be null. That is, + only purchasable variants will have a `compareAtPrice`. + """ + compareAtPrice: Float + + "The code for the currency these pricing details applies to" + currency: Currency! + + """ + UI should display this price. If a product has multiple potential prices depending on selected + variants and options, then this is a price range string such as "$3.95 - $6.99". It includes the currency + symbols. + """ + displayPrice: String! + + "The price of the most expensive possible variant+option combination" + maxPrice: Float! + + "The price of the least expensive possible variant+option combination" + minPrice: Float! + + """ + For variants with no options and for options, this will always be set to a price. For variants + with options and products, this will be `null`. There must be a price for a variant to be + added to a cart or purchased. Otherwise you would instead add one of its child options to a cart. + """ + price: Float +} +``` + +These are currently mapped as follows, but in the future you will be able to have different prices per currency that your shop supports. + +```js +pricing: { + [shopCurrencyCode]: { + compareAtPrice: variant.compareAtPrice || null, + displayPrice: variantPriceInfo.range, + maxPrice: variantPriceInfo.max, + minPrice: variantPriceInfo.min, + price: typeof variant.price === "number" ? variant.price : null + } + }, +``` + +### Catalog Item props + +All product props other than `positions` are now on the `product` object, so there are a few new properties on the catalog item itself: +- _id (this is no longer the same as the product ID) +- shopId (stays here AND on `product` obj) +- createdAt +- updatedAt + +### ReactionProduct.getTag + +The `ReactionProduct.getTag` helper function is renamed to `ReactionProduct.getTagIdForPosition` and returns the tag ID rather than name. If there's no tag in the route path, it returns "_default" rather than the lowercased shop name. + +## Meteor App + ### Features and Improvements + - feat: Catalog schema changes (#4218) + - feat: Catalog schema migration (#4272) + +### Bugfixes + - fix: Limit Products when in Edit Mode (#4256) .. Resolves #4254 + - fix: added event param to onBlur method in numericInput component (#4251) + - fix: Load more products working now (#4233) .. Resolves #4090 + - fix: show `.00` cents for whole-dollar amounts in price range (#4222) + - fix: get react root node correctly (#4172) + +### Tests + - Reduce Risk of Test False Positives (#4033) + +### Chores + - chore: Update to our latest eslint config (#4282) + - chore: resolve snyk issues (#4257) + - chore: Use NPM random package (#4208) + +## GraphQL Dev Server +### Features and Improvements + - feat: catalog price sort (#4255) .. Resolves #4245 + - feat: devserver improvements (#4220) + - feat: add description and name to shop query (#4209) + - feat: catalogItem GQL query (#4200) .. Resolves #4106 + - feat: create connection/edge resolver helper (#4225) + +### Bugfixes + - fix: hasNextPage being false, even with a known next page (#4249) + - fix: improve hasNext/hasPrevious (#4231) + - fix: pagination (#4228) + - fix: first value pagination (#4204) .. Resolves #4186 + +### Chores + - chore: access media through devserver app (#4216) + +## Docs + - docs: remove community calls from readme.md (#4279) + - docs: clean up jsdoc comments, namespace organization (#4213) + + +## Contributors +Thanks to @pmn4 for contributing to this release! 🎉 + # v1.11.0 The major focus of `v1.11.0` has been on our GraphQL API. We've added most of the queries and mutations that are necessary for building a headless client to interact with `Accounts`. We're actively doing experiments on how we'll recommend connecting to this GraphQL client and we'll start publishing some of our initial client apps to interact with this GraphQL API in the near future. From 87c5cc8e3dadfd7c1e582e3378f4cac5bb9edf33 Mon Sep 17 00:00:00 2001 From: Aaron James Porlante Date: Mon, 4 Jun 2018 23:29:39 +0700 Subject: [PATCH 151/201] (style): add comment to reference opened issue in SimpleSchema --- .../plugins/included/discount-codes/server/methods/methods.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/imports/plugins/included/discount-codes/server/methods/methods.js b/imports/plugins/included/discount-codes/server/methods/methods.js index 1a91e81700d..063415b5dde 100644 --- a/imports/plugins/included/discount-codes/server/methods/methods.js +++ b/imports/plugins/included/discount-codes/server/methods/methods.js @@ -178,6 +178,9 @@ export const methods = { Collection.update(selector, update); } // TODO: update a history record of transaction + // The Payment schema's currency defaultValue is adding {} to the $pull condition. + // If this issue is eventually fixed, autoValues can be re-enabled here + // See https://github.com/aldeed/simple-schema-js/issues/272 const result = Collection.update( { _id: id }, { $set: { discount: currentDiscount }, $pull: { billing: { _id: codeId } } }, From 05a3c019682cd193b818266bc3250d574dbe9646 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 4 Jun 2018 10:54:13 -0700 Subject: [PATCH 152/201] update MAX_LIMIT value --- .../core/graphql/server/resolvers/scalar/ConnectionLimitInt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.js b/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.js index 2044ab92ca8..059cc209ad9 100644 --- a/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.js +++ b/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.js @@ -1,7 +1,7 @@ import { GraphQLScalarType } from "graphql"; import { Kind } from "graphql/language"; -const MAX_LIMIT = 50; +const MAX_LIMIT = 200; /** * Adjusts value to be between 1 and MAX_LIMIT, inclusive From 64db45952b359fbc7c1091486a5c4a06a02ff545 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 4 Jun 2018 10:54:25 -0700 Subject: [PATCH 153/201] update first / last limit default value --- .../server/resolvers/util/applyPaginationToMongoCursor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js index b16f6ff0d23..da2d70924ef 100644 --- a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js +++ b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js @@ -13,8 +13,8 @@ export default async function applyPaginationToMongoCursor(cursor, { first, last } = {}, totalCount) { if (first && last) throw new Error("Request either `first` or `last` but not both"); - // Enforce a `first: 50` limit if no user-supplied limit - const limit = first || last || 50; + // Enforce a `first: 20` limit if no user-supplied limit + const limit = first || last || 20; let skip = 0; if (last && totalCount > last) skip = totalCount - last; From f354ff69d679d588a84429461b5020f6bc167212 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 4 Jun 2018 11:06:37 -0700 Subject: [PATCH 154/201] update tests to use new limit numbers --- .../scalar/ConnectionLimitInt.test.js | 21 +++++++++++-------- .../util/applyPaginationToMongoCursor.test.js | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.test.js b/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.test.js index 70e6dc23d50..c5d7acbafb0 100644 --- a/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.test.js +++ b/imports/plugins/core/graphql/server/resolvers/scalar/ConnectionLimitInt.test.js @@ -11,22 +11,24 @@ describe("serialization", () => { expect(ConnectionLimitInt.serialize(null)).toBe(null); expect(ConnectionLimitInt.serialize(1)).toBe(1); expect(ConnectionLimitInt.serialize(100)).toBe(100); + expect(ConnectionLimitInt.serialize(200)).toBe(200); }); }); describe("value parsing", () => { - test("returns what is given if it's a number between 1 and 50, inclusive, or undefined", () => { + test("returns what is given if it's a number between 1 and 200, inclusive, or undefined", () => { expect(ConnectionLimitInt.parseValue(1)).toBe(1); expect(ConnectionLimitInt.parseValue(2)).toBe(2); expect(ConnectionLimitInt.parseValue(10)).toBe(10); expect(ConnectionLimitInt.parseValue(50)).toBe(50); + expect(ConnectionLimitInt.parseValue(200)).toBe(200); expect(ConnectionLimitInt.parseValue(undefined)).toBe(undefined); }); - test("returns 50 if over 50", () => { - expect(ConnectionLimitInt.parseValue(null)).toBe(50); - expect(ConnectionLimitInt.parseValue(51)).toBe(50); - expect(ConnectionLimitInt.parseValue(100)).toBe(50); + test("returns 200 if over 200", () => { + expect(ConnectionLimitInt.parseValue(null)).toBe(200); + expect(ConnectionLimitInt.parseValue(201)).toBe(200); + expect(ConnectionLimitInt.parseValue(500)).toBe(200); }); test("returns 1 if under 1", () => { @@ -42,16 +44,17 @@ describe("value parsing", () => { const getLiteralForInt = (value) => ({ kind: Kind.INT, value }); describe("literal parsing", () => { - test("returns what is given if it's a number between 1 and 50, inclusive", () => { + test("returns what is given if it's a number between 1 and 200, inclusive", () => { expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(1))).toBe(1); expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(2))).toBe(2); expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(10))).toBe(10); expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(50))).toBe(50); + expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(200))).toBe(200); }); - test("returns 50 if over 50", () => { - expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(51))).toBe(50); - expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(100))).toBe(50); + test("returns 200 if over 200", () => { + expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(201))).toBe(200); + expect(ConnectionLimitInt.parseLiteral(getLiteralForInt(500))).toBe(200); }); test("returns 1 if under 1", () => { diff --git a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js index 7a7919da13a..713c4b94deb 100644 --- a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js +++ b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js @@ -7,13 +7,13 @@ beforeEach(() => { }); test("with neither first nor last limits to first 50", async () => { - mockCursor.count.mockReturnValueOnce(Promise.resolve(51)); + mockCursor.count.mockReturnValueOnce(Promise.resolve(21)); const result = await applyPaginationToMongoCursor(mockCursor, undefined, 100); expect(result).toEqual({ hasNextPage: true, hasPreviousPage: null }); - expect(mockCursor.limit.mock.calls).toEqual([[51], [50]]); + expect(mockCursor.limit.mock.calls).toEqual([[21], [20]]); expect(mockCursor.skip).not.toHaveBeenCalled(); }); From c9117f7a68cc984805441e1616df183134da118c Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Mon, 4 Jun 2018 13:54:15 -0500 Subject: [PATCH 155/201] docs: updated comments in a few files, removed unneeded test --- imports/collections/schemas/schemaIndex.js | 2 ++ .../core/catalog/server/no-meteor/utils/hasChildVariant.js | 2 +- .../catalog/server/no-meteor/utils/hasChildVariant.test.js | 6 ------ 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/imports/collections/schemas/schemaIndex.js b/imports/collections/schemas/schemaIndex.js index 7c74e911b29..aaf3a660e32 100644 --- a/imports/collections/schemas/schemaIndex.js +++ b/imports/collections/schemas/schemaIndex.js @@ -1,5 +1,7 @@ import SimpleSchema from "simpl-schema"; +// These options are added by the `aldeed:schema-index` Meteor package, but because that +// is a Meteor package and we also load the schemas in a non-Meteor Node app, we need to do it here. SimpleSchema.extendOptions([ "index", // one of Number, String, Boolean "unique", // Boolean diff --git a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js index d468409b1ad..1c18f1626da 100644 --- a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js +++ b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.js @@ -1,7 +1,7 @@ /** * * @method hasChildVariant - * @summary Return true if a Product or Variant has at least 1 child Product. + * @summary Return true if a Product or Variant has at least 1 child Product that is visible and not deleted. * @param {string} productOrVariantId - A Product or Product Variant ID. * @param {Object} collections - Raw mongo collections. * @return {Promise} True if Product has a child. diff --git a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js index 721a30dff6e..c82b311bb4b 100644 --- a/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js +++ b/imports/plugins/core/catalog/server/no-meteor/utils/hasChildVariant.test.js @@ -98,12 +98,6 @@ test("expect true when product has a child", async () => { expect(spec).toBe(true); }); -test("expect true when product variant has a child", async () => { - mockCollections.Products.findOne.mockReturnValueOnce(Promise.resolve(mockVariants[1])); - const spec = await hasChildVariant(internalVariantIds[0], mockCollections); - expect(spec).toBe(true); -}); - test("expect false when product does not a child", async () => { mockCollections.Products.findOne.mockReturnValueOnce(Promise.resolve(null)); const spec = await hasChildVariant(internalVariantIds[1], mockCollections); From b8af239d1c505da17ddf5a6c372c09ce0655c58a Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Mon, 4 Jun 2018 15:14:51 -0500 Subject: [PATCH 156/201] chore: fix eslint issues in test file --- .../product-publications.app-test.js | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 9d8a2587859..9bd8e43dace 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -1,5 +1,6 @@ /* eslint dot-notation: 0 */ /* eslint prefer-arrow-callback:0 */ +/* eslint promise/no-callback-in-promise:0 */ import Random from "@reactioncommerce/random"; import { expect } from "meteor/practicalmeteor:chai"; import { sinon } from "meteor/practicalmeteor:sinon"; @@ -173,10 +174,10 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { - const productIds = Products.map((p) => p._id); + const productIds = Products.map((product) => product._id); expect(productIds).to.have.members(activeShopProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return all products from the current shop to admins in a Merchant Shop", function (done) { @@ -187,10 +188,10 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId, merchantShopId, primaryShopId]); collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { - const productIds = Products.map((p) => p._id); + const productIds = Products.map((product) => product._id); expect(productIds).to.have.members(merchantShop1ProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("returns products from only the shops for which an admin has createProduct Role", function (done) { @@ -201,10 +202,10 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopsWithRoles", () => [shopId]); collector.collect("Products", 24, undefined, {}, true, ({ Products }) => { - const productIds = Products.map((p) => p._id); + const productIds = Products.map((product) => product._id); expect(productIds).to.have.members(merchantShop1ProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return only visible products to visitors", function (done) { @@ -217,7 +218,7 @@ describe("Publication", function () { expect(Products.length).to.equal(2); expect(expectedTitles.some((title) => title === data.title)).to.be.ok; - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return only products matching query", function (done) { @@ -230,7 +231,7 @@ describe("Publication", function () { const data = Products[0]; expect(data.title).to.equal("Shopkins - Peachy"); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should not return products not matching query", function (done) { @@ -241,7 +242,7 @@ describe("Publication", function () { collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { expect(Products.length).to.equal(0); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return products in price.min query", function (done) { @@ -252,7 +253,7 @@ describe("Publication", function () { collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { expect(Products.length).to.equal(1); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return products in price.max query", function (done) { @@ -263,7 +264,7 @@ describe("Publication", function () { collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { expect(Products.length).to.equal(2); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return products in price.min - price.max range query", function (done) { @@ -274,7 +275,7 @@ describe("Publication", function () { collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { expect(Products.length).to.equal(2); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return products where value is in price set query", function (done) { @@ -285,7 +286,7 @@ describe("Publication", function () { collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { expect(Products.length).to.equal(1); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return products from all shops when multiple shops are provided", function (done) { @@ -295,10 +296,10 @@ describe("Publication", function () { sandbox.stub(Roles, "userIsInRole", () => false); collector.collect("Products", productScrollLimit, filters, {}, ({ Products }) => { - const productIds = Products.map((p) => p._id); + const productIds = Products.map((product) => product._id); expect(productIds).to.have.members(activeMerchantProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); }); @@ -312,10 +313,10 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopId", () => shopId); collector.collect("Products/grid", ({ Catalog }) => { - const productIds = Catalog.map((p) => p._id); + const productIds = Catalog.map((product) => product._id); expect(productIds).to.be.empty; - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("returns products from the Catalog", function (done) { @@ -324,10 +325,10 @@ describe("Publication", function () { publishProducts(); collector.collect("Products/grid", ({ Catalog }) => { - const productIds = Catalog.map((p) => p._id); + const productIds = Catalog.map((product) => product._id); expect(productIds).to.not.be.empty; - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); }); @@ -340,20 +341,20 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopId", () => shopId); collector.collect("Products/grid", ({ Catalog }) => { - const productIds = Catalog.map((c) => c.product._id); + const productIds = Catalog.map((item) => item.product._id); expect(productIds).to.have.members(merchantShop1VisibleProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("returns all visible products from all active shops when the Primary Shop is active", function (done) { sandbox.stub(Reaction, "getShopId", () => primaryShopId); collector.collect("Products/grid", ({ Catalog }) => { - const productIds = Catalog.map((c) => c.product._id); + const productIds = Catalog.map((item) => item.product._id); expect(productIds).to.have.members(activeShopVisibleProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("returns products from all shops when the Primary Shop is active, filtered by shop id", function (done) { @@ -362,16 +363,19 @@ describe("Publication", function () { sandbox.stub(Reaction, "getShopId", () => primaryShopId); collector.collect("Products/grid", 24, filters, ({ Catalog }) => { - const productIds = Catalog.map((c) => c.product._id); + const productIds = Catalog.map((item) => item.product._id); expect(productIds).to.have.members(activeMerchantProductIds); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); }); + /** + * @summary Publishes all products in the database + * @returns {Promise} true on successful publish for all documents, false if one ore more fail to publish + */ function publishProducts() { - const productIds = - Collections.Products.find({}).fetch().map((p) => p._id); + const productIds = Collections.Products.find({}).fetch().map((product) => product._id); return Promise.await(publishProductsToCatalog(productIds, collections)); } @@ -388,7 +392,7 @@ describe("Publication", function () { const data = Products[0]; expect(data.title).to.equal(product.title); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should not return a product if handle does not match exactly", function (done) { @@ -400,7 +404,7 @@ describe("Publication", function () { } else { expect(Products).to.be.undefined; } - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should not return a product based on exact handle match if it isn't visible", function (done) { @@ -413,7 +417,7 @@ describe("Publication", function () { } else { expect(Products).to.be.undefined; } - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); it("should return a product to admin based on a exact handle match even if it isn't visible", function (done) { @@ -425,7 +429,7 @@ describe("Publication", function () { const data = Products[0]; expect(data.title).to.equal("My Little Pony"); - }).then(() => done(/* empty */), done); + }).then(() => done(/* empty */)).catch(done); }); }); }); From 89e89682f6ab0d505f5107cb033514284d7a439e Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Mon, 4 Jun 2018 18:00:26 -0500 Subject: [PATCH 157/201] fix: update Mongo aggregate for newer Node driver --- server/publications/collections/reactiveAggregate.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/publications/collections/reactiveAggregate.js b/server/publications/collections/reactiveAggregate.js index d0d06799164..e54dffece5f 100644 --- a/server/publications/collections/reactiveAggregate.js +++ b/server/publications/collections/reactiveAggregate.js @@ -5,7 +5,8 @@ import { Mongo, MongoInternals } from "meteor/mongo"; // Add the aggregate function available in tbe raw collection to normal collections Mongo.Collection.prototype.aggregate = function (pipelines, options) { const coll = this._getCollection(); - return Meteor.wrapAsync(coll.aggregate.bind(coll))(pipelines, options); + const aggregationCursor = Meteor.wrapAsync(coll.aggregate.bind(coll))(pipelines, options); + return Meteor.wrapAsync(aggregationCursor.toArray.bind(aggregationCursor)); }; // this group of methods were taken from https://github.com/meteorhacks/meteor-collection-utils From f8194c7e2b21ca693d3fa79e10a1a919836ba715 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 4 Jun 2018 17:15:37 -0700 Subject: [PATCH 158/201] remove inventoryPolicy check on low inventory --- .../core/catalog/server/no-meteor/utils/isLowQuantity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/catalog/server/no-meteor/utils/isLowQuantity.js b/imports/plugins/core/catalog/server/no-meteor/utils/isLowQuantity.js index b682dbb36fb..49bdcdd5a42 100644 --- a/imports/plugins/core/catalog/server/no-meteor/utils/isLowQuantity.js +++ b/imports/plugins/core/catalog/server/no-meteor/utils/isLowQuantity.js @@ -11,7 +11,7 @@ export default function isLowQuantity(variants) { const threshold = variants && variants.length && variants[0].lowInventoryWarningThreshold; const results = variants.map((variant) => { const quantity = getProductQuantity(variant, variants); - if (variant.inventoryManagement && variant.inventoryPolicy && quantity) { + if (variant.inventoryManagement && quantity) { return quantity <= threshold; } return false; From 6470b7f7783316cf93808cf7105a404fbb861613 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Tue, 5 Jun 2018 07:30:17 -0500 Subject: [PATCH 159/201] fix: correction to Mongo aggregate fix --- package-lock.json | 2 ++ server/publications/collections/reactiveAggregate.js | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f1b8abbd46..ffe5998d60a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2332,6 +2332,7 @@ }, "babel-plugin-inline-import": { "version": "github:reactioncommerce/babel-plugin-inline-import#b5061c57482e7700097b399a6305a30e7279f1b1", + "from": "babel-plugin-inline-import@github:reactioncommerce/babel-plugin-inline-import#b5061c57482e7700097b399a6305a30e7279f1b1", "dev": true, "requires": { "require-resolve": "0.0.2" @@ -14462,6 +14463,7 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", + "from": "transliteration@github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", "requires": { "yargs": "8.0.2" } diff --git a/server/publications/collections/reactiveAggregate.js b/server/publications/collections/reactiveAggregate.js index e54dffece5f..1498ccd2a34 100644 --- a/server/publications/collections/reactiveAggregate.js +++ b/server/publications/collections/reactiveAggregate.js @@ -5,8 +5,10 @@ import { Mongo, MongoInternals } from "meteor/mongo"; // Add the aggregate function available in tbe raw collection to normal collections Mongo.Collection.prototype.aggregate = function (pipelines, options) { const coll = this._getCollection(); - const aggregationCursor = Meteor.wrapAsync(coll.aggregate.bind(coll))(pipelines, options); - return Meteor.wrapAsync(aggregationCursor.toArray.bind(aggregationCursor)); + const aggregateSync = Meteor.wrapAsync(coll.aggregate.bind(coll)); + const aggregationCursor = aggregateSync(pipelines, options); + const aggregationCursorToArraySync = Meteor.wrapAsync(aggregationCursor.toArray.bind(aggregationCursor)); + return aggregationCursorToArraySync(); }; // this group of methods were taken from https://github.com/meteorhacks/meteor-collection-utils From a6e894d965728ecf1c6a4d89335e6182cce014f5 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Tue, 5 Jun 2018 09:41:14 -0700 Subject: [PATCH 160/201] update test with new number --- .../server/resolvers/util/applyPaginationToMongoCursor.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js index 713c4b94deb..0bbc3ddb027 100644 --- a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js +++ b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.test.js @@ -6,7 +6,7 @@ beforeEach(() => { mockCursor = getFakeMongoCursor("Test", new Array(100)); }); -test("with neither first nor last limits to first 50", async () => { +test("with neither first nor last limits to first 20", async () => { mockCursor.count.mockReturnValueOnce(Promise.resolve(21)); const result = await applyPaginationToMongoCursor(mockCursor, undefined, 100); expect(result).toEqual({ From 0f8349b6b89a083cfcb91a297bda216a0695fc06 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Tue, 5 Jun 2018 09:41:31 -0700 Subject: [PATCH 161/201] add default limit as const --- .../server/resolvers/util/applyPaginationToMongoCursor.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js index da2d70924ef..93bd6e1beb5 100644 --- a/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js +++ b/imports/plugins/core/graphql/server/resolvers/util/applyPaginationToMongoCursor.js @@ -1,3 +1,5 @@ +const DEFAULT_LIMIT = 20; + /** * Inspired by https://www.reindex.io/blog/relay-graphql-pagination-with-mongodb/ * @name applyPaginationToMongoCursor @@ -13,8 +15,8 @@ export default async function applyPaginationToMongoCursor(cursor, { first, last } = {}, totalCount) { if (first && last) throw new Error("Request either `first` or `last` but not both"); - // Enforce a `first: 20` limit if no user-supplied limit - const limit = first || last || 20; + // Enforce a `first: 20` limit if no user-supplied limit, using the DEFAULT_LIMIT + const limit = first || last || DEFAULT_LIMIT; let skip = 0; if (last && totalCount > last) skip = totalCount - last; From e2f4bd74c485b37123fa8ef8672ab173ffcf2e44 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Tue, 5 Jun 2018 13:32:17 -0600 Subject: [PATCH 162/201] chore: dont install jq as it comes with node 8-stretch --- Dockerfile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 002b1232746..1b1109e0804 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,12 +10,6 @@ ENV PATH $PATH:/home/node/.meteor COPY --chown=node package-lock.json $APP_SOURCE_DIR/ COPY --chown=node package.json $APP_SOURCE_DIR/ - -# # Install jq, a lightweight and flexible command-line JSON processor. -# We use it to determine the base branch of a PR so we can run diffs to conditionally run circle workflows -RUN curl -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" -o /home/node/jq -RUN chmod +x /home/node/jq - # Because Docker Compose uses a named volume for node_modules and named volumes are owned # by root by default, we have to initially create node_modules here with correct owner. # Without this NPM cannot write packages into node_modules later, when running in a container. From 54974357a4591af18227c9040f80ef54cef1c88f Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Tue, 5 Jun 2018 16:15:43 -0500 Subject: [PATCH 163/201] chore: update Dockerfiles to same Node version that Meteor is bundled with --- Dockerfile | 2 +- Dockerfile-devserver | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1b1109e0804..339a8315716 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,7 @@ RUN meteor npm install --production ############################################################################## # final build stage - create the final production image ############################################################################## -FROM node:8.9.4-slim +FROM node:8.11.2-slim # Default environment variables ENV ROOT_URL "http://localhost" diff --git a/Dockerfile-devserver b/Dockerfile-devserver index 4740ca9e733..3415a8ae698 100644 --- a/Dockerfile-devserver +++ b/Dockerfile-devserver @@ -1,5 +1,5 @@ # Builds a GraphQL development server without Meteor runtime dependencies. -FROM node:8.9.4 +FROM node:8.11.2 LABEL maintainer="Reaction Commerce " @@ -15,6 +15,7 @@ COPY --chown=node package-lock.json . # Without this NPM cannot write packages into node_modules later, when running in a container. RUN mkdir /app/node_modules && chown node /app/node_modules +RUN npm -v RUN npm install COPY --chown=node . . From b8912a769c23fb4651e5902e94f948711a2a2993 Mon Sep 17 00:00:00 2001 From: Eric Dobbertin Date: Tue, 5 Jun 2018 16:16:38 -0500 Subject: [PATCH 164/201] chore: switch back to new published version of inline-import --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ffe5998d60a..cec52b7fbdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,8 +2331,9 @@ } }, "babel-plugin-inline-import": { - "version": "github:reactioncommerce/babel-plugin-inline-import#b5061c57482e7700097b399a6305a30e7279f1b1", - "from": "babel-plugin-inline-import@github:reactioncommerce/babel-plugin-inline-import#b5061c57482e7700097b399a6305a30e7279f1b1", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", + "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", "dev": true, "requires": { "require-resolve": "0.0.2" @@ -14463,7 +14464,6 @@ }, "transliteration": { "version": "github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", - "from": "transliteration@github:reactioncommerce/transliteration#699d48cc8dd9a64f1a2773e1b36b6faa4bbdca2f", "requires": { "yargs": "8.0.2" } diff --git a/package.json b/package.json index aaab1dd9771..10650583176 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "babel-eslint": "8.2.3", "babel-jest": "22.4.4", "babel-plugin-dynamic-import-node": "1.2.0", - "babel-plugin-inline-import": "github:reactioncommerce/babel-plugin-inline-import", + "babel-plugin-inline-import": "3.0.0", "babel-plugin-lodash": "3.3.2", "babel-plugin-module-resolver": "3.1.1", "babel-plugin-rewire-exports": "0.3.0", From 810c0a9f3f2d06acac12b49fa05cb5019afea91d Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Tue, 5 Jun 2018 23:09:46 -0600 Subject: [PATCH 165/201] chore: update ROOT_URL in docker-compose demo for 1.7 --- docker-compose-demo.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-demo.yml b/docker-compose-demo.yml index e21302fbc7d..dde1a84306b 100644 --- a/docker-compose-demo.yml +++ b/docker-compose-demo.yml @@ -11,7 +11,7 @@ services: ports: - "3000:3000" environment: - ROOT_URL: "http://localhost" + ROOT_URL: "http://localhost:3000" MONGO_URL: "mongodb://mongo:27017/reaction" mongo: From 8f1827ac2144963d7a9ffcae993fc8937a8c287f Mon Sep 17 00:00:00 2001 From: Seun Martins Date: Wed, 6 Jun 2018 17:56:08 +0100 Subject: [PATCH 166/201] Add --version-sort flag to get correct tag ordered list --- .circleci/bin/docker-tags | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.circleci/bin/docker-tags b/.circleci/bin/docker-tags index ad0ca39da87..a90d647090a 100755 --- a/.circleci/bin/docker-tags +++ b/.circleci/bin/docker-tags @@ -37,7 +37,12 @@ if [[ "$BRANCH" == "master" ]]; then ) # Find the highest tagged version number - HIGHEST_TAG=$(git --no-pager tag | grep "^v[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$" | sort -r | head -n 1) + HIGHEST_TAG=$( \ + git --no-pager tag \ + | grep "^v[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$" \ + | sort -r --version-sort \ + | head -n 1 \ + ) # We tag :latest only if # 1. We have a current tag @@ -47,4 +52,4 @@ if [[ "$BRANCH" == "master" ]]; then echo "latest" fi fi -fi \ No newline at end of file +fi From 19d423c138ea8e781f08616e18e50500762f5339 Mon Sep 17 00:00:00 2001 From: Seun Martins Date: Wed, 6 Jun 2018 18:23:20 +0100 Subject: [PATCH 167/201] Strip out v from the tag version list --- .circleci/bin/docker-tags | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/bin/docker-tags b/.circleci/bin/docker-tags index a90d647090a..6560cfaab47 100755 --- a/.circleci/bin/docker-tags +++ b/.circleci/bin/docker-tags @@ -33,6 +33,7 @@ if [[ "$BRANCH" == "master" ]]; then | grep "^${SHA1}" \ | sed -e 's,.* refs/tags/,,' -e 's/\^{}//' \ | grep "^v[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$" \ + | sed 's/v//g' \ | sort \ ) @@ -40,6 +41,7 @@ if [[ "$BRANCH" == "master" ]]; then HIGHEST_TAG=$( \ git --no-pager tag \ | grep "^v[0-9]\\+\\.[0-9]\\+\\.[0-9]\\+$" \ + | sed 's/v//g' \ | sort -r --version-sort \ | head -n 1 \ ) From bc0d755663214977e344ff661b43465d36a06a9c Mon Sep 17 00:00:00 2001 From: Seun Martins Date: Wed, 6 Jun 2018 19:51:12 +0100 Subject: [PATCH 168/201] Fix hadolint image version Fix hadolint image version to prevent breaking changes --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 90000303b4e..0e7782a18de 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -196,7 +196,7 @@ jobs: dockerfile-lint: <<: *defaults docker: - - image: hadolint/hadolint + - image: hadolint/hadolint:v1.6.6-6-g254b4ff steps: - checkout - setup_remote_docker From 67691ad27661aaa6710a77fa845b210b5c7a8be4 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 6 Jun 2018 13:23:09 -0600 Subject: [PATCH 169/201] chore: use specific hadolint image tagged v1.6.6-6-g254b4ff --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 90000303b4e..0e7782a18de 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -196,7 +196,7 @@ jobs: dockerfile-lint: <<: *defaults docker: - - image: hadolint/hadolint + - image: hadolint/hadolint:v1.6.6-6-g254b4ff steps: - checkout - setup_remote_docker From 27dd246c6adbe9937f9d9dd646049bf64081a833 Mon Sep 17 00:00:00 2001 From: Seun Martins Date: Mon, 11 Jun 2018 21:20:49 +0100 Subject: [PATCH 170/201] Update base image to Meteor 1.7.0.1 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 339a8315716..421212cc924 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ############################################################################## # meteor-dev stage - builds image for dev and used with docker-compose.yml ############################################################################## -FROM reactioncommerce/base:v4.0.2 as meteor-dev +FROM reactioncommerce/base:meteor-1.7.0.1 as meteor-dev LABEL maintainer="Reaction Commerce " From b4fdd3a9543b92ce0860797bd70ea7f0c32f0952 Mon Sep 17 00:00:00 2001 From: Seun Martins Date: Mon, 11 Jun 2018 21:28:39 +0100 Subject: [PATCH 171/201] Run npm install directly without meteor prefix --- Dockerfile | 9 +++++++-- docker-compose.yml | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 421212cc924..2ea21a1125c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,11 @@ COPY --chown=node package.json $APP_SOURCE_DIR/ # Without this NPM cannot write packages into node_modules later, when running in a container. RUN mkdir "$APP_SOURCE_DIR/node_modules" && chown node "$APP_SOURCE_DIR/node_modules" -RUN meteor npm install +# Due to an async race condition issue when installing packages with the NPM version (v5.10.0) +# in Meteor 1.7, we are switching to using the NPM version installed in the base image (v5.6.0). +# This prevents the "write after end" errors seen with this command. This will be reverted when +# Meteor updates to an NPM version without this issue. +RUN npm install COPY --chown=node . $APP_SOURCE_DIR @@ -32,7 +36,8 @@ RUN printf "\\n[-] Building Meteor application...\\n" \ WORKDIR $APP_BUNDLE_DIR/bundle/programs/server/ -RUN meteor npm install --production +# TODO: Revert to Meteor NPM. See comment above about Meteor1.7 NPM version issue +RUN npm install --production ############################################################################## diff --git a/docker-compose.yml b/docker-compose.yml index ec8d993b91c..0da548508be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,7 +35,7 @@ services: build: context: . target: meteor-dev - command: bash -c "meteor npm install && reaction" + command: bash -c "npm install && reaction" #TODO; Revert to Meteor NPM. See comment in Dockerfile about Meteor1.7 NPM version issue. depends_on: - mongo environment: From 809832f69cffee5c384965010ad6b8e485e75cec Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Wed, 13 Jun 2018 13:17:00 -0700 Subject: [PATCH 172/201] feat: pull product data from catalog for customers --- server/publications/collections/product.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index c6c0c68bb11..a661b98aa69 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -1,6 +1,6 @@ import { Meteor } from "meteor/meteor"; import { check, Match } from "meteor/check"; -import { Products, Shops } from "/lib/collections"; +import { Catalog, Products, Shops } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; /** @@ -64,7 +64,9 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { selector.isVisible = { $in: [true, false, undefined] }; + + return Products.find(selector); } - return Products.find(selector); + return Catalog.find(selector); }); From 274d8e640694f794428fd45cf40f2a3d0330ec9e Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 10:59:14 -0700 Subject: [PATCH 173/201] fix: import only if collections are empty --- server/startup/load-data.js | 46 ++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/server/startup/load-data.js b/server/startup/load-data.js index bff7c60b06b..1384cccc7c1 100644 --- a/server/startup/load-data.js +++ b/server/startup/load-data.js @@ -1,8 +1,13 @@ import { Meteor } from "meteor/meteor"; -import { Shops } from "/lib/collections"; +import { Products, Shipping, Tags, Shops } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; import { Fixture } from "/server/api/core/importer"; +/** + * Load fixture data into various collections if those collections are blank + * @name loadData + * @returns {undefined} No return value + */ export default function loadData() { if (!process.env.SKIP_FIXTURES) { /** @@ -31,25 +36,34 @@ export default function loadData() { } } - try { - Logger.debug("Loading Shipping Data"); - Fixture.process(Assets.getText("data/Shipping.json"), ["name"], Reaction.Importer.shipping, [shopId]); - } catch (error) { - Logger.error(error, "Bypassing loading Shipping default data."); + // Import Shipping data + if (Shipping.find().count() === 0) { + try { + Logger.debug("Loading Shipping Data"); + Fixture.process(Assets.getText("data/Shipping.json"), ["name"], Reaction.Importer.shipping, [shopId]); + } catch (error) { + Logger.error(error, "Bypassing loading Shipping default data."); + } } - try { - Logger.debug("Loading Product Data"); - Fixture.process(Assets.getText("data/Products.json"), ["title"], Reaction.Importer.product, [shopId]); - } catch (error) { - Logger.error(error, "Bypassing loading Products default data."); + // Import Product data + if (Products.find().count() === 0) { + try { + Logger.debug("Loading Product Data"); + Fixture.process(Assets.getText("data/Products.json"), ["title"], Reaction.Importer.product, [shopId]); + } catch (error) { + Logger.error(error, "Bypassing loading Products default data."); + } } - try { - Logger.debug("Loading Tag Data"); - Fixture.process(Assets.getText("data/Tags.json"), ["name"], Reaction.Importer.tag, [shopId]); - } catch (error) { - Logger.error(error, "Bypassing loading Tags default data."); + // Import Tag data + if (Tags.find().count() === 0) { + try { + Logger.debug("Loading Tag Data"); + Fixture.process(Assets.getText("data/Tags.json"), ["name"], Reaction.Importer.tag, [shopId]); + } catch (error) { + Logger.error(error, "Bypassing loading Tags default data."); + } } // // these will flush and import with the rest of the imports from core init. From a9c475b45bd5ff25e8efb9767ebfba7ad1943703 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 11:00:34 -0700 Subject: [PATCH 174/201] fix: guard and log error --- server/api/core/importer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/api/core/importer.js b/server/api/core/importer.js index f0f10f0599d..4e62613361a 100644 --- a/server/api/core/importer.js +++ b/server/api/core/importer.js @@ -120,6 +120,11 @@ Importer.commit = function (collection) { // Only commit if the buffer isn't empty (otherwise it'll throw). if (this._count[name]) { this.buffer(collection).execute((error, result) => { + if (error) { + Logger.error(error); + return; + } + // Inserted document counts don't affect the modified document count, so we // throw everything together. const nImported = result.nModified + result.nInserted + result.nUpserted; From a6e085393a868386c68a3504822eb66bf298cddc Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:46:03 -0700 Subject: [PATCH 175/201] feat: provide product data for the PDP from the Catalog collection --- server/publications/collections/product.js | 80 +++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index a661b98aa69..a3021ee17f4 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -3,6 +3,47 @@ import { check, Match } from "meteor/check"; import { Catalog, Products, Shops } from "/lib/collections"; import { Logger, Reaction } from "/server/api"; +/** + * Flatten variant tree from a Catalog Item Product document + * @param {Object} product A Catalog Item Product document + * @returns {Array} Variant array + */ +function flattenCatalogProductVariants(product) { + const variants = []; + + // Un-tree the variant tree + if (Array.isArray(product.variants)) { + // Loop over top-level variants + product.variants.forEach((variant) => { + if (Array.isArray(variant.options)) { + // Loop over variant options + variant.options.forEach((option) => { + variants.push({ + ancestors: [ + product.productId, + variant.variantId + ], + type: "variant", + isVisible: true, + ...option + }); + }); + } + + variants.push({ + ancestors: [ + product.productId + ], + type: "variant", + isVisible: true, + ...variant + }); + }); + } + + return variants; +} + /** * product detail publication * @param {String} productIdOrHandle - productId or handle @@ -68,5 +109,42 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { return Products.find(selector); } - return Catalog.find(selector); + // Product data for customers visiting the PDP page + const cursor = Catalog.find({ + "$or": [{ + "product._id": productIdOrHandle + }, { + "product.slug": productIdOrHandle + }], + "product.shopId": selector.shopId, + "product.isVisible": true, + "product.isDeleted": { $in: [null, false] } + }); + + const handle = cursor.observeChanges({ + added: (id, { product: catalogProduct }) => { + this.added("Products", catalogProduct.productId, catalogProduct); + flattenCatalogProductVariants(catalogProduct).forEach((variant) => { + this.added("Products", variant.variantId, variant); + }); + }, + changed: (id, { product: catalogProduct }) => { + this.changed("Products", catalogProduct.productId, catalogProduct); + flattenCatalogProductVariants(product).forEach((variant) => { + this.changed("Products", variant.variantId, variant); + }); + }, + removed: (id, { product: catalogProduct }) => { + this.removed("Products", catalogProduct.productId, catalogProduct); + flattenCatalogProductVariants(product).forEach((variant) => { + this.removed("Products", variant.variantId, variant); + }); + } + }); + + this.onStop(() => { + handle.stop(); + }); + + return this.ready(); }); From 67198ab76aabd8f477bb307d62659a657595474a Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:46:36 -0700 Subject: [PATCH 176/201] feat: fetch products based on slug if available --- lib/api/products.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/api/products.js b/lib/api/products.js index de74e899699..f7e05967f71 100644 --- a/lib/api/products.js +++ b/lib/api/products.js @@ -111,6 +111,8 @@ ReactionProduct.setProduct = (currentProductId, currentVariantId) => { $or: [ { handle: productId.toLowerCase() }, // Try the handle (slug) lowercased { handle: productId }, // Otherwise try the handle (slug) untouched + { slug: productId.toLowerCase() }, // Try the slug lowercased + { slug: productId }, // Otherwise try the slug untouched { _id: productId }, // try the product id { changedHandleWas: productId } // Last attempt: the permalink may have changed. ] From ae88010d35ee374f9a3e1cfe40ef1ee9537ef76e Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:47:47 -0700 Subject: [PATCH 177/201] feat: use catalog variant inventory flags for inventory badges --- .../ui/client/containers/inventoryBadge.js | 53 ++++++++++++++----- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/imports/plugins/core/ui/client/containers/inventoryBadge.js b/imports/plugins/core/ui/client/containers/inventoryBadge.js index 3134cdc3b84..8c6afe5f1f1 100644 --- a/imports/plugins/core/ui/client/containers/inventoryBadge.js +++ b/imports/plugins/core/ui/client/containers/inventoryBadge.js @@ -1,25 +1,52 @@ import { registerComponent, composeWithTracker } from "@reactioncommerce/reaction-components"; import { InventoryBadge } from "../components/badge"; +import { Reaction } from "/client/api"; import { ReactionProduct } from "/lib/api"; const composer = (props, onData) => { const { variant, soldOut } = props; - const { inventoryManagement, inventoryPolicy, lowInventoryWarningThreshold } = variant; - const inventoryQuantity = ReactionProduct.getVariantQuantity(variant); + const { + inventoryManagement, + inventoryPolicy, + lowInventoryWarningThreshold, + isSoldOut, + isBackorder, + isLowQuantity + } = variant; let label = null; let i18nKeyLabel = null; let status = null; - // TODO: update this to use Catalog API. - if (inventoryManagement && !inventoryPolicy && inventoryQuantity === 0) { - status = "info"; - label = "Backorder"; - i18nKeyLabel = "productDetail.backOrder"; - } else if (soldOut) { - status = "danger"; - label = "Sold Out!"; - i18nKeyLabel = "productDetail.soldOut"; - } else if (inventoryManagement) { - if (lowInventoryWarningThreshold >= inventoryQuantity) { + + // Admins pull variants from the Products collection + if (Reaction.hasPermission(["createProduct"], Reaction.getShopId())) { + const inventoryQuantity = ReactionProduct.getVariantQuantity(variant); + // Product collection variant + if (inventoryManagement && !inventoryPolicy && inventoryQuantity === 0) { + status = "info"; + label = "Backorder"; + i18nKeyLabel = "productDetail.backOrder"; + } else if (soldOut) { + status = "danger"; + label = "Sold Out!"; + i18nKeyLabel = "productDetail.soldOut"; + } else if (inventoryManagement) { + if (lowInventoryWarningThreshold >= inventoryQuantity) { + status = "warning"; + label = "Limited Supply"; + i18nKeyLabel = "productDetail.limitedSupply"; + } + } + } else if (inventoryManagement) { // Customers pull variants from the Catalog collection + // Catalog item variant + if (isBackorder) { + status = "info"; + label = "Backorder"; + i18nKeyLabel = "productDetail.backOrder"; + } else if (isSoldOut) { + status = "danger"; + label = "Sold Out!"; + i18nKeyLabel = "productDetail.soldOut"; + } else if (isLowQuantity) { status = "warning"; label = "Limited Supply"; i18nKeyLabel = "productDetail.limitedSupply"; From 852d6348e5bfb1c13f42e303d845165629e22235 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:48:32 -0700 Subject: [PATCH 178/201] fix: don't render validation badges if child variant is not editable --- .../client/components/childVariant.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/imports/plugins/included/product-detail-simple/client/components/childVariant.js b/imports/plugins/included/product-detail-simple/client/components/childVariant.js index 0d7dfd7f5dd..732e478b8fa 100644 --- a/imports/plugins/included/product-detail-simple/client/components/childVariant.js +++ b/imports/plugins/included/product-detail-simple/client/components/childVariant.js @@ -17,7 +17,7 @@ class ChildVariant extends Component { }; } - componentWillMount() { + componentDidMount() { this.variantValidation(); } @@ -91,7 +91,9 @@ class ChildVariant extends Component { } renderValidationButton = () => { - if (this.state.invalidVariant === true) { + if (this.props.isEditable === false) { + return null; + } else if (this.state.invalidVariant === true) { return ( ); } + + return null; } // checks whether the product variant is validated @@ -148,6 +152,7 @@ class ChildVariant extends Component { ChildVariant.propTypes = { editButton: PropTypes.node, + isEditable: PropTypes.bool, isSelected: PropTypes.bool, media: PropTypes.arrayOf(PropTypes.object), onClick: PropTypes.func.isRequired, From d5efcf508f47856b4cd6be42422bdcbc6f51fb71 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:48:45 -0700 Subject: [PATCH 179/201] fix: don't render validation badges if variant is not editable --- .../client/components/variant.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/imports/plugins/included/product-detail-simple/client/components/variant.js b/imports/plugins/included/product-detail-simple/client/components/variant.js index 3d367ce87d4..074868989f5 100644 --- a/imports/plugins/included/product-detail-simple/client/components/variant.js +++ b/imports/plugins/included/product-detail-simple/client/components/variant.js @@ -21,7 +21,7 @@ class Variant extends Component { }; } - componentWillMount() { + componentDidMount() { this.variantValidation(); } @@ -56,7 +56,9 @@ class Variant extends Component { } renderValidationButton = () => { - if (this.state.selfValidation.isValid === false) { + if (this.props.editable === false) { + return null; + } else if (this.state.selfValidation.isValid === false) { return ( ); - } - if (this.state.invalidVariant.length) { + } else if (this.state.invalidVariant.length) { return ( ); } + + return null; } variantValidation = () => { From bed4907f6e1912bc06700af1a2103b08e458ab81 Mon Sep 17 00:00:00 2001 From: Mike Murray Date: Thu, 14 Jun 2018 15:49:20 -0700 Subject: [PATCH 180/201] fix: pass isEditable to child variant --- .../product-detail-simple/client/components/variantList.js | 1 + 1 file changed, 1 insertion(+) diff --git a/imports/plugins/included/product-detail-simple/client/components/variantList.js b/imports/plugins/included/product-detail-simple/client/components/variantList.js index 4aed9c68874..47b26db511e 100644 --- a/imports/plugins/included/product-detail-simple/client/components/variantList.js +++ b/imports/plugins/included/product-detail-simple/client/components/variantList.js @@ -141,6 +141,7 @@ class VariantList extends Component { showsVisibilityButton={true} > Date: Fri, 15 Jun 2018 14:38:04 -0700 Subject: [PATCH 181/201] feat: merge product and catalog product before adding to cart --- server/methods/core/cart.js | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/server/methods/core/cart.js b/server/methods/core/cart.js index beeb81661b8..b5ce915e929 100644 --- a/server/methods/core/cart.js +++ b/server/methods/core/cart.js @@ -378,6 +378,51 @@ Meteor.methods({ } }); + // Customer adding a catalog product in the cart. + if (Reaction.hasPermission("createProduct", Reaction.getShopId()) === false) { + // Fetch the catalog product that should be added to the cart + const { product: catalogProduct } = Collections.Catalog.findOne({ + $or: [ + { "product._id": productId }, + { "product.variants._id": variantId }, + { "product.variants.options._id": variantId } + ] + }); + + // Merge the product document and the catalog product document. + // This is to ensure the inventory fields are available for inventory management, + // but also have the most up-to-date title, description, etc for cart and orders if needed. + product = { + ...product, + ...catalogProduct + }; + + // Merge the variant document and the catalog variant document. + for (const catalogVariant of catalogProduct.variants) { + // If the catalog variant has options, try to find a match + if (Array.isArray(catalogVariant.options)) { + const catalogVariantOption = catalogVariant.options.find((option) => option === variantId); + + if (catalogVariantOption) { + variant = { + ...variant, + ...catalogVariantOption + }; + break; + } + } + + // Try to math the top level variant with supplied variant id + if (catalogVariant.variantId === variantId) { + variant = { + ...variant, + ...catalogVariant + }; + break; + } + } + } + // TODO: this lines still needed. We could uncomment them in future if // decide to not completely remove product data from this method // const product = Collections.Products.findOne(productId); From af13cbf50384a7180a874baf2ecccbec69a277ee Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 19 Jun 2018 17:23:05 -0500 Subject: [PATCH 182/201] test: fixed failing products publication test by publishing the product to the catalog before the collector looks for the product --- .../publications/collections/product-publications.app-test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 9bd8e43dace..a3b5fded22c 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -386,6 +386,8 @@ describe("Publication", function () { const product = Collections.Products.findOne({ isVisible: true }); + Promise.await(publishProductsToCatalog([product._id], collections)); + sandbox.stub(Reaction, "getShopId", () => shopId); collector.collect("Product", product._id, ({ Products }) => { From 7e3d339603a0148b29b83128f24136c4dda08df8 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 19 Jun 2018 18:29:31 -0500 Subject: [PATCH 183/201] test: added a timeout to product publication test --- server/publications/collections/product-publications.app-test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index a3b5fded22c..6806a3dee6d 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -383,6 +383,7 @@ describe("Publication", function () { describe("Product", function () { it("should return a product based on an id", function (done) { + this.timeout(10000); const product = Collections.Products.findOne({ isVisible: true }); From 0f768fc34dd9fad505f5169df5e37b669f2947a7 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Tue, 19 Jun 2018 18:49:21 -0500 Subject: [PATCH 184/201] test: increased timeout for product publication app test --- .../publications/collections/product-publications.app-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 6806a3dee6d..036d5f32bad 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -383,7 +383,7 @@ describe("Publication", function () { describe("Product", function () { it("should return a product based on an id", function (done) { - this.timeout(10000); + this.timeout(20000); const product = Collections.Products.findOne({ isVisible: true }); From dd52afd7a5e0ebce29bbd7f312cc070c8269f243 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 14:43:52 -0500 Subject: [PATCH 185/201] test: updating timeout for products publication app-test --- .../publications/collections/product-publications.app-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 036d5f32bad..55e2120b976 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -383,7 +383,7 @@ describe("Publication", function () { describe("Product", function () { it("should return a product based on an id", function (done) { - this.timeout(20000); + this.timeout(25000); const product = Collections.Products.findOne({ isVisible: true }); From 95fd6f50cf71716daabfaaccd8b582a174e45ade Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 15:25:57 -0500 Subject: [PATCH 186/201] test: updated products publication test --- .../publications/collections/product-publications.app-test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 55e2120b976..6bd7fda0a4c 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -12,6 +12,7 @@ import { Reaction } from "/server/api"; import * as Collections from "/lib/collections"; import Fixtures from "/server/imports/fixtures"; import publishProductsToCatalog from "/imports/plugins/core/catalog/server/no-meteor/utils/publishProductsToCatalog"; +import publishProductToCatalog from "/imports/plugins/core/catalog/server/no-meteor/utils/publishProductToCatalog"; import collections from "/imports/collections/rawCollections"; Fixtures(); @@ -387,7 +388,7 @@ describe("Publication", function () { const product = Collections.Products.findOne({ isVisible: true }); - Promise.await(publishProductsToCatalog([product._id], collections)); + Promise.await(publishProductToCatalog(product, collections)); sandbox.stub(Reaction, "getShopId", () => shopId); From c22b10ac10cc670e751b252c1500ed0a2dd4af01 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 15:41:26 -0500 Subject: [PATCH 187/201] test: updated products publication test --- server/publications/collections/product.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index a3021ee17f4..9d74fc5e486 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -116,6 +116,7 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { }, { "product.slug": productIdOrHandle }], + "product.type": "product-simple", "product.shopId": selector.shopId, "product.isVisible": true, "product.isDeleted": { $in: [null, false] } From c1d5be31c54854c6b4f4831f48baf6ca15578126 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 15:58:01 -0500 Subject: [PATCH 188/201] test: updated products publication test --- .../publications/collections/product-publications.app-test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index 6bd7fda0a4c..ba9808adf8c 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -383,6 +383,10 @@ describe("Publication", function () { }); describe("Product", function () { + beforeEach(function () { + Collections.Catalog.remove({}); + }); + it("should return a product based on an id", function (done) { this.timeout(25000); const product = Collections.Products.findOne({ From 3d870382ffd1511da021487a3c35fe0e3218be24 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 16:27:02 -0500 Subject: [PATCH 189/201] test: updated product publication to only look for product id in catalog collection --- server/publications/collections/product.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index 9d74fc5e486..ecaeb6bda35 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -111,15 +111,17 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { // Product data for customers visiting the PDP page const cursor = Catalog.find({ - "$or": [{ - "product._id": productIdOrHandle - }, { - "product.slug": productIdOrHandle - }], - "product.type": "product-simple", - "product.shopId": selector.shopId, - "product.isVisible": true, - "product.isDeleted": { $in: [null, false] } + "product._id": productIdOrHandle + // "$or": [{ + + // } , { + // "product.slug": productIdOrHandle + // } + // ] + // "product.type": "product-simple", + // "product.shopId": selector.shopId, + // "product.isVisible": true, + // "product.isDeleted": { $in: [null, false] } }); const handle = cursor.observeChanges({ From 7b645f16fe7f8a48902e6a8ea0fd740f0cc95bfb Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 16:46:00 -0500 Subject: [PATCH 190/201] test: get product by slug or id from catalog --- server/publications/collections/product.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index ecaeb6bda35..f4aa8ca7369 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -111,13 +111,11 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { // Product data for customers visiting the PDP page const cursor = Catalog.find({ - "product._id": productIdOrHandle - // "$or": [{ - - // } , { - // "product.slug": productIdOrHandle - // } - // ] + "$or": [{ + "product._id": productIdOrHandle + }, { + "product.slug": productIdOrHandle + }] // "product.type": "product-simple", // "product.shopId": selector.shopId, // "product.isVisible": true, From 34a18ba2486c51ad062b7ca4f51586800c072da7 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 17:10:06 -0500 Subject: [PATCH 191/201] test: updated catalog find query --- server/publications/collections/product.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index f4aa8ca7369..ac02361ef43 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -115,8 +115,8 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { "product._id": productIdOrHandle }, { "product.slug": productIdOrHandle - }] - // "product.type": "product-simple", + }], + "product.type": "product-simple" // "product.shopId": selector.shopId, // "product.isVisible": true, // "product.isDeleted": { $in: [null, false] } From 0c7d5bac3793fb4d0bb0066b97377f338596b6ac Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 17:18:10 -0500 Subject: [PATCH 192/201] test: updated catalog find query in PDP publication --- server/publications/collections/product.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index ac02361ef43..bdda9fd1771 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -116,8 +116,8 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { }, { "product.slug": productIdOrHandle }], - "product.type": "product-simple" - // "product.shopId": selector.shopId, + "product.type": "product-simple", + "product.shopId": selector.shopId // "product.isVisible": true, // "product.isDeleted": { $in: [null, false] } }); From 75a9bd33b97af676953e397793ed138f4aacf09e Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 17:49:34 -0500 Subject: [PATCH 193/201] test: catalog query update in product publication --- server/publications/collections/product.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index bdda9fd1771..8619ae643f7 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -117,9 +117,9 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { "product.slug": productIdOrHandle }], "product.type": "product-simple", - "product.shopId": selector.shopId - // "product.isVisible": true, - // "product.isDeleted": { $in: [null, false] } + // "product.shopId": selector.shopId + "product.isVisible": true, + "product.isDeleted": { $in: [null, false] } }); const handle = cursor.observeChanges({ From 76306d9af1fd560d9d58fc6d38bf257696e65262 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 18:06:30 -0500 Subject: [PATCH 194/201] test: updated catalog query to alway have a shopId --- server/publications/collections/product.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/publications/collections/product.js b/server/publications/collections/product.js index 8619ae643f7..1fae70a0b17 100644 --- a/server/publications/collections/product.js +++ b/server/publications/collections/product.js @@ -109,6 +109,9 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { return Products.find(selector); } + if (!selector.shopId) { + selector.shopId = product.shopId; + } // Product data for customers visiting the PDP page const cursor = Catalog.find({ "$or": [{ @@ -117,7 +120,7 @@ Meteor.publish("Product", function (productIdOrHandle, shopIdOrSlug) { "product.slug": productIdOrHandle }], "product.type": "product-simple", - // "product.shopId": selector.shopId + "product.shopId": selector.shopId, "product.isVisible": true, "product.isDeleted": { $in: [null, false] } }); From 2cd08016ad52f54da33e9f58dff627fc0dc7c832 Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 18:25:19 -0500 Subject: [PATCH 195/201] test: removed unneeded timeout from products-publication app test --- server/publications/collections/product-publications.app-test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/publications/collections/product-publications.app-test.js b/server/publications/collections/product-publications.app-test.js index ba9808adf8c..569bd395b50 100644 --- a/server/publications/collections/product-publications.app-test.js +++ b/server/publications/collections/product-publications.app-test.js @@ -388,7 +388,6 @@ describe("Publication", function () { }); it("should return a product based on an id", function (done) { - this.timeout(25000); const product = Collections.Products.findOne({ isVisible: true }); From a27426126ea52faed62e03edeadabe7fcdc9864c Mon Sep 17 00:00:00 2001 From: Nat Hamilton Date: Wed, 20 Jun 2018 19:20:18 -0500 Subject: [PATCH 196/201] test: fixed issue with tags integration test --- tests/tag/tags.test.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tests/tag/tags.test.js b/tests/tag/tags.test.js index b7288273c35..0a56d83d523 100644 --- a/tests/tag/tags.test.js +++ b/tests/tag/tags.test.js @@ -37,7 +37,7 @@ beforeAll(async () => { afterAll(() => tester.stop()); -test("get the first 50 tags when neither first or last is in query", async () => { +test("get the first 20 tags when neither first or last is in query", async () => { let result; try { result = await query({ shopId: opaqueShopId }); @@ -46,9 +46,9 @@ test("get the first 50 tags when neither first or last is in query", async () => return; } - expect(result.tags.nodes.length).toBe(50); + expect(result.tags.nodes.length).toBe(20); expect(result.tags.totalCount).toBe(55); - expect(result.tags.pageInfo).toEqual({ endCursor: "MTQ5", hasNextPage: true, hasPreviousPage: false, startCursor: "MTAw" }); + expect(result.tags.pageInfo).toEqual({ endCursor: "MTE5", hasNextPage: true, hasPreviousPage: false, startCursor: "MTAw" }); try { result = await query({ shopId: opaqueShopId, after: result.tags.pageInfo.endCursor }); @@ -57,9 +57,20 @@ test("get the first 50 tags when neither first or last is in query", async () => return; } - expect(result.tags.nodes.length).toBe(5); + expect(result.tags.nodes.length).toBe(20); expect(result.tags.totalCount).toBe(55); - expect(result.tags.pageInfo).toEqual({ endCursor: "MTU0", hasNextPage: false, hasPreviousPage: true, startCursor: "MTUw" }); + expect(result.tags.pageInfo).toEqual({ endCursor: "MTM5", hasNextPage: true, hasPreviousPage: true, startCursor: "MTIw" }); + + try { + result = await query({ shopId: opaqueShopId, after: result.tags.pageInfo.endCursor }); + } catch (error) { + expect(error).toBeUndefined(); + return; + } + + expect(result.tags.nodes.length).toBe(15); + expect(result.tags.totalCount).toBe(55); + expect(result.tags.pageInfo).toEqual({ endCursor: "MTU0", hasNextPage: false, hasPreviousPage: true, startCursor: "MTQw" }); // Ensure it's also correct when we pass `first: 5` explicitly try { From 10578e718d2cecedebb1a8af5176a22601d75fc5 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 20 Jun 2018 19:49:25 -0600 Subject: [PATCH 197/201] chore: update changelog for v1.13.0 --- CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f6b147f92d..3f2205677b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,82 @@ +# v1.13.0 + +## Removal of Legacy Product Revision Control system +The major change in this release is that we've removed the existing revision control system in favor of publishing Products to the Catalog. The existing revision control system contained some powerful ideas, but was complex and intertwined into many areas of the app that were not directly related to Product. By removing the old revision control system, we've paved the way to substantially improve product grid performance, especially for Operators and we've simplified the product publication logic. + +This removes all code, hooks, collections, and packages related to revision control. + +**Breaking changes:** + - Any custom packages that depend on the `Revision` control system. + - Operators will no longer be able to "undo" changes to a product. Instead products are published through the catalog + - **All plugin authors** will need to update your `package.json` with a change to the babel config similar to what was done [here](https://github.com/reaction-contrib/meteor-authorize-net/commit/f19a5cf7591a17f426e67bd3737af5a4d1c7a64a) + + +## Update to Meteor 1.7 +This update brings some enormous improvements to the amount of time it takes to rebuild the application in development after making a file change. In some (less than perfectly scientific) tests that I ran testing file changes between 1.7 and 1.6.1 I saw 50%-90% improvements in the reload time. Your experience may vary depending on how much you've customized Reaction, your computer specs, and your specific development setup, but I fully expect this to be a noticeable improvement for anyone working with Reaction. + +There are some [early](https://github.com/meteor/meteor/issues/9949) [reports](https://github.com/meteor/meteor/issues/9945) that the included update to the MongoDB driver may have [some kinks](https://github.com/meteor/meteor/issues/9944) to work out, so I'd follow those issues on Meteor's repo if that's a cause for concern for you. These reports are all coming from a single person, and we haven't experienced any of these issues in particular yet, but we'll be keeping an eye on them. + +## +We ran into a few issues with `npm install` that we resolved in #4317. One product that came out of this investigation was some documentation for how to properly clean up and rebuild docker images in Reaction. + +To stop and clean up your images +```sh + docker-compose down -v --rmi local --remove-orphans +``` + +To rebuild your Reaction images +```sh + docker-compose up --build --force-recreate --renew-anon-volumes +``` + +If you only want to run Reaction and not the GraphQL DevServer +```sh + docker-compose up --build --force-recreate --renew-anon-volumes reaction +``` + +If you only want to run the DevServer and not the Meteor app +```sh + docker-compose up --build --force-recreate --renew-anon-volumes devserver +``` + +## Meteor App +### Performance + - perf: remove revision control (#4238) + - perf: update to Meteor 1.7 (#4265) + +### Bug Fixes + - fix: Use catalog collection for PDP (#4324) + - fix: Import fixture data only if collections empty (#4327) .. Resolves #4326 + - fix: Invalid class name: .variant-list-item-{variant._id} (#4217) + - fix: NPM build issue in Docker build (#4317) + - fix: add getAutoValues: false to discounts/codes/remove (#4288) + - fix: hadolint image version (#4306) + - fix: CI step failure to tag Docker image with latest release version (#4304) + - fix: admin products publication slowness (#4260) + - fix: remove inventoryPolicy check on low inventory (#4298) + +### Refactors + - refactor: non meteor schemas (#4266) .. Resolves #4263 + +### Tests + - test: new mocks factory (#4276) .. Resolves #4246 + - test: run snyk when package.json has changed or base is master (#4285) + +### Docs + - docs(jsdoc): document all Meteor Template helpers in 1 @namespace (#3841) .. Resolves #3840 + +## GraphQL Dev Server +### Features + - feat: add Media to Tag Schema and GraphQL query (#4270) + +### Chore + - chore: update default GraphQL query limit values (#4297) + +## Contributors +Thanks to @mikeumus for contributing to this release. 🎉 + + + # v1.12.1 ## Bug Fixes - fix: handle products without positions obj .. Resolves #4299 From 3a6ff11a693f35c17f90c591810653c0ab906171 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 20 Jun 2018 20:37:19 -0600 Subject: [PATCH 198/201] chore: update snyk ignore expiration dates --- .snyk | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.snyk b/.snyk index 63dc80f7637..baa35c79fd5 100644 --- a/.snyk +++ b/.snyk @@ -5,11 +5,7 @@ ignore: 'npm:hoek:20180212': - '*': reason: 'Possible false positive, waiting on requestjs to updated hawk version' - expires: 2018-06-20T00:00:00.000Z - 'npm:shelljs:20140723': - - eslint-config-react-tools > eslint-plugin-class-property > eslint > shelljs: - reason: no patch available - expires: '2018-03-22T04:22:44.834Z' + expires: 2018-06-30T00:00:00.000Z 'npm:bootstrap:20160627': - bootstrap: reason: We're not going to update to Bootstrap 4 any time soon @@ -17,7 +13,7 @@ ignore: 'npm:lodash:20180130': - '*': reason: no patch - expires: 2018-06-20T00:00:00.000Z + expires: 2018-06-30T00:00:00.000Z 'npm:tunnel-agent:20170305': - '*': reason: No patch and we do not use this optional package @@ -29,13 +25,13 @@ ignore: 'npm:stringstream:20180511': - '*': reason: Awaiting dependency updates of request 2.83.0 to gte 2.86 - expires: 2018-06-20T00:00:00.000Z + expires: 2018-06-30T00:00:00.000Z 'npm:deep-extend:20180409': - '*': reason: No patch available https://github.com/unclechu/node-deep-extend/issues/41 - expires: 2018-06-20T00:00:00.000Z + expires: 2018-06-30T00:00:00.000Z 'npm:base64url:20180511': - '*': reason: Twillio and nexmo will be removed soon, file-collections isn't using any google-cloud stuff so this vuln doesn't apply - expires: 2018-06-20T00:00:00.000Z + expires: 2018-06-30T00:00:00.000Z patch: {} From 14ff13964e6e9dcaa329e22f4cebd4033a2381c6 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 20 Jun 2018 20:43:23 -0600 Subject: [PATCH 199/201] refactor: don't use single letter variables --- server/publications/collections/products.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/publications/collections/products.js b/server/publications/collections/products.js index e86366b380a..df10826515b 100644 --- a/server/publications/collections/products.js +++ b/server/publications/collections/products.js @@ -152,8 +152,8 @@ function filterProducts(productFilters) { // validate, catch except but return no results try { if (productFilters) filters.validate(productFilters); - } catch (e) { - Logger.warn(e, "Invalid Product Filters"); + } catch (error) { + Logger.warn(error, "Invalid Product Filters"); return false; } From f0fec30bf885985a4e8bf213f919c80a5cfb18ca Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Wed, 20 Jun 2018 21:48:15 -0600 Subject: [PATCH 200/201] refactor: use documented import order --- .../core/catalog/client/containers/publishContainer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/plugins/core/catalog/client/containers/publishContainer.js b/imports/plugins/core/catalog/client/containers/publishContainer.js index c9c1d21efc2..e47255c4439 100644 --- a/imports/plugins/core/catalog/client/containers/publishContainer.js +++ b/imports/plugins/core/catalog/client/containers/publishContainer.js @@ -1,10 +1,10 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { composeWithTracker } from "@reactioncommerce/reaction-components"; -import PublishControls from "../components/publishControls"; import { Meteor } from "meteor/meteor"; -import TranslationProvider from "/imports/plugins/core/ui/client/providers/translationProvider"; +import { composeWithTracker } from "@reactioncommerce/reaction-components"; import { Reaction, i18next } from "/client/api"; +import TranslationProvider from "/imports/plugins/core/ui/client/providers/translationProvider"; +import PublishControls from "../components/publishControls"; /* * PublishContainer is a container component connected to Meteor data source. From 5fd6639f1211a6a583d448c8f23a7ffdbe4047a1 Mon Sep 17 00:00:00 2001 From: Spencer Norman Date: Thu, 21 Jun 2018 09:06:51 -0600 Subject: [PATCH 201/201] chore: note potential unexpected behavior in CHANGELOG --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f2205677b0..1e54dffbc9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ This removes all code, hooks, collections, and packages related to revision cont **Breaking changes:** - Any custom packages that depend on the `Revision` control system. - Operators will no longer be able to "undo" changes to a product. Instead products are published through the catalog + - Any _unpublished_ changes to products will be lost when upgrading to `1.13.0`. In this release, it's possible that if you were to downgrade that you would see the unpublished changes again, but that may cause unexpected behavior. We recommend either publishing or discarding any changes to your products before upgrading to this release. + - Similarly, any products that have been created but not published will demonstrate unexpected behavior. To avoid this undesirable behavior, publish any newly created, unpublished products prior to upgrading to this release. + - **All plugin authors** will need to update your `package.json` with a change to the babel config similar to what was done [here](https://github.com/reaction-contrib/meteor-authorize-net/commit/f19a5cf7591a17f426e67bd3737af5a4d1c7a64a)