From 55014f8117bcab9da7c308ca5afd75d2fa831da0 Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Tue, 5 Jun 2018 09:06:48 +0200 Subject: [PATCH 01/16] Feat preview sizes (#116) * Add preview property to translations if previewSizes property provided in editorConfig * Fix editorConfig key * Define editorConfig on server.settings.app.editorConfig * Revert "Define editorConfig on server.settings.app.editorConfig" This reverts commit 20eea850ffad22730c65c3cc4ad5da7a0952d2a7. * Pass settings to locals route * Refactor locales to handle new struture of previewSizes * Fix typo in name * Separate tools and editor translations * Add test for new route * Remove test case --- plugins/core/editor/index.js | 35 +++++----- plugins/core/editor/routes/locales.js | 92 ++++++++++++++++++++------- test/e2e-tests.js | 4 +- 3 files changed, 86 insertions(+), 45 deletions(-) diff --git a/plugins/core/editor/index.js b/plugins/core/editor/index.js index 6f14db93..523785d4 100644 --- a/plugins/core/editor/index.js +++ b/plugins/core/editor/index.js @@ -1,33 +1,30 @@ -const Hoek = require('hoek'); - -const routes = [ - require('./routes/targets'), - require('./routes/tools'), - require('./routes/locales') -] +const Hoek = require("hoek"); const defaults = { - editorConfig: { - - } -} + editorConfig: {} +}; module.exports = { - name: 'q-editor-api', - register: async function (server, options) { + name: "q-editor-api", + register: async function(server, options) { const settings = Hoek.applyToDefaults(defaults, options); - server.route(routes); + server.route([ + require("./routes/targets"), + require("./routes/tools"), + require("./routes/locales").getGetToolsRoute(), + require("./routes/locales").getGetEditorConfigRoute(settings) + ]); server.route({ - path: '/editor/config', - method: 'GET', + path: "/editor/config", + method: "GET", options: { - description: 'Returns configuration for Q Editor', - tags: ['api', 'editor'], + description: "Returns configuration for Q Editor", + tags: ["api", "editor"] }, handler: (request, h) => { return settings.editorConfig; } - }) + }); } }; diff --git a/plugins/core/editor/routes/locales.js b/plugins/core/editor/routes/locales.js index 30e646b9..40ff7ed3 100644 --- a/plugins/core/editor/routes/locales.js +++ b/plugins/core/editor/routes/locales.js @@ -1,31 +1,75 @@ -const Joi = require('joi'); +const Joi = require("joi"); module.exports = { - path: '/editor/locales/{lng}/translation.json', - method: 'GET', - options: { - description: 'Returns translations for given language', - tags: ['api', 'editor', 'non-critical'], - validate: { - params: { - lng: Joi.string().required() + getGetToolsRoute: function() { + return { + path: "/editor/tools/locales/{lng}/translation.json", + method: "GET", + options: { + description: "Returns tool name translations for given language", + tags: ["api", "editor", "non-critical"], + validate: { + params: { + lng: Joi.string().required() + } + } + }, + handler: (request, h) => { + const tools = request.server.settings.app.tools.get(""); + + // compute a translation.json file for use by i18next for the given language + // containing the tool name and it's localized label. + let translations = {}; + for (let toolName in tools) { + const tool = tools[toolName]; + if ( + !tool.editor.hasOwnProperty("label_locales") || + !tool.editor.label_locales.hasOwnProperty(request.params.lng) + ) { + continue; + } + translations[toolName] = + tool.editor.label_locales[request.params.lng]; + } + + return translations; } - } + }; }, - handler: (request, h) => { - const tools = request.server.settings.app.tools.get(''); + getGetEditorConfigRoute: function(options) { + return { + path: "/editor/locales/{lng}/translation.json", + method: "GET", + options: { + description: "Returns editor translations for given language", + tags: ["api", "editor", "non-critical"], + validate: { + params: { + lng: Joi.string().required() + } + } + }, + handler: (request, h) => { + // compute a translation.json file for use by i18next for the given language + let translations = {}; - // compute a translation.json file for use by i18next for the given language - // containing the tool name and it's localized label. - let translations = {}; - for (let toolName in tools) { - const tool = tools[toolName]; - if (!tool.editor.hasOwnProperty('label_locales') || !tool.editor.label_locales.hasOwnProperty(request.params.lng)) { - continue; - } - translations[toolName] = tool.editor.label_locales[request.params.lng]; - } + const previewSizes = options.editorConfig.previewSizes; + if (previewSizes) { + translations.preview = {}; + for (let previewSizeName in previewSizes) { + const previewSize = previewSizes[previewSizeName]; + if ( + previewSize.hasOwnProperty("label_locales") && + previewSize.label_locales.hasOwnProperty(request.params.lng) + ) { + translations.preview[previewSizeName] = + previewSize.label_locales[request.params.lng]; + } + } + } - return translations; + return translations; + } + }; } -} +}; diff --git a/test/e2e-tests.js b/test/e2e-tests.js index 0505d4fb..58b29cbd 100644 --- a/test/e2e-tests.js +++ b/test/e2e-tests.js @@ -439,13 +439,13 @@ lab.experiment("core editor endpoints", () => { it("returns correctly generated translation file with tool names for given locale", async () => { const responseDe = await server.inject( - "/editor/locales/de/translation.json" + "/editor/tools/locales/de/translation.json" ); expect(responseDe.result.tool1).to.be.equal("tool1_de"); expect(responseDe.result.tool2).to.be.undefined(); const responseEn = await server.inject( - "/editor/locales/en/translation.json" + "/editor/tools/locales/en/translation.json" ); expect(responseEn.result.tool1).to.be.equal("tool1_en"); From e34efa0dfa4ad9934196685e6d3d6cbddd2d429a Mon Sep 17 00:00:00 2001 From: benib Date: Mon, 18 Jun 2018 21:39:37 +0400 Subject: [PATCH 02/16] (chore) prettier code formatting --- plugins/core/rendering-info/index.js | 210 ++++++++++++++++++--------- 1 file changed, 138 insertions(+), 72 deletions(-) diff --git a/plugins/core/rendering-info/index.js b/plugins/core/rendering-info/index.js index f1ddef0a..6607b555 100644 --- a/plugins/core/rendering-info/index.js +++ b/plugins/core/rendering-info/index.js @@ -1,16 +1,17 @@ -const Boom = require('boom'); -const Joi = require('joi'); -const Hoek = require('hoek'); +const Boom = require("boom"); +const Joi = require("joi"); +const Hoek = require("hoek"); -const getRenderingInfo = require('./helpers.js').getRenderingInfo; -const getCompiledToolRuntimeConfig = require('./helpers.js').getCompiledToolRuntimeConfig; -const sizeValidationObject = require('./size-helpers.js').sizeValidationObject; -const validateSize = require('./size-helpers.js').validateSize; +const getRenderingInfo = require("./helpers.js").getRenderingInfo; +const getCompiledToolRuntimeConfig = require("./helpers.js") + .getCompiledToolRuntimeConfig; +const sizeValidationObject = require("./size-helpers.js").sizeValidationObject; +const validateSize = require("./size-helpers.js").validateSize; function getGetRenderingInfoRoute(config) { return { - method: 'GET', - path: '/rendering-info/{id}/{target}', + method: "GET", + path: "/rendering-info/{id}/{target}", options: { validate: { params: { @@ -28,8 +29,9 @@ function getGetRenderingInfoRoute(config) { allowUnknown: true } }, - description: 'Returns rendering information for the given graphic id and target (as configured in the environment).', - tags: ['api', 'reader-facing'] + description: + "Returns rendering information for the given graphic id and target (as configured in the environment).", + tags: ["api", "reader-facing"] }, handler: async function(request, h) { let requestToolRuntimeConfig = {}; @@ -37,7 +39,7 @@ function getGetRenderingInfoRoute(config) { if (request.query.toolRuntimeConfig) { if (request.query.toolRuntimeConfig.size) { try { - validateSize(request.query.toolRuntimeConfig.size) + validateSize(request.query.toolRuntimeConfig.size); } catch (err) { if (err.isBoom) { throw err; @@ -52,17 +54,27 @@ function getGetRenderingInfoRoute(config) { try { if (request.query.noCache) { - const renderingInfo = await request.server.methods.renderingInfo.getRenderingInfoForId(request.params.id, request.params.target, requestToolRuntimeConfig, request.query.ignoreInactive); - return h.response(renderingInfo) - .header('cache-control', 'no-cache'); + const renderingInfo = await request.server.methods.renderingInfo.getRenderingInfoForId( + request.params.id, + request.params.target, + requestToolRuntimeConfig, + request.query.ignoreInactive + ); + return h.response(renderingInfo).header("cache-control", "no-cache"); } else { - const renderingInfo = await request.server.methods.renderingInfo.cached.getRenderingInfoForId(request.params.id, request.params.target, requestToolRuntimeConfig, request.query.ignoreInactive); - return h.response(renderingInfo) - .header('cache-control', config.cacheControlHeader); + const renderingInfo = await request.server.methods.renderingInfo.cached.getRenderingInfoForId( + request.params.id, + request.params.target, + requestToolRuntimeConfig, + request.query.ignoreInactive + ); + return h + .response(renderingInfo) + .header("cache-control", config.cacheControlHeader); } } catch (err) { if (err.stack) { - request.server.log(['error'], err.stack); + request.server.log(["error"], err.stack); } if (err.isBoom) { return err; @@ -76,8 +88,8 @@ function getGetRenderingInfoRoute(config) { function getPostRenderingInfoRoute(config) { return { - method: 'POST', - path: '/rendering-info/{target}', + method: "POST", + path: "/rendering-info/{target}", options: { cache: false, validate: { @@ -92,10 +104,11 @@ function getPostRenderingInfoRoute(config) { }, options: { allowUnknown: true - }, + } }, - description: 'Returns rendering information for the given data and target (as configured in the environment).', - tags: ['api', 'editor'] + description: + "Returns rendering information for the given data and target (as configured in the environment).", + tags: ["api", "editor"] }, handler: async function(request, h) { let requestToolRuntimeConfig = {}; @@ -103,7 +116,7 @@ function getPostRenderingInfoRoute(config) { if (request.query.toolRuntimeConfig) { if (request.query.toolRuntimeConfig.size) { try { - validateSize(request.query.toolRuntimeConfig.size) + validateSize(request.query.toolRuntimeConfig.size); } catch (err) { if (err.isBoom) { throw err; @@ -138,70 +151,123 @@ function getPostRenderingInfoRoute(config) { } module.exports = { - name: 'q-rendering-info', - dependencies: 'q-base', + name: "q-rendering-info", + dependencies: "q-base", register: async function(server, options) { - Hoek.assert(server.settings.app.tools && typeof server.settings.app.tools.get === 'function', new Error('server.settings.app.tools.get needs to be a function')); + Hoek.assert( + server.settings.app.tools && + typeof server.settings.app.tools.get === "function", + new Error("server.settings.app.tools.get needs to be a function") + ); - server.method('renderingInfo.getRenderingInfoForItem', async(item, target, requestToolRuntimeConfig, ignoreInactive, itemStateInDb) => { - const endpointConfig = server.settings.app.tools.get(`/${item.tool}/endpoint`, { target: target }) + server.method( + "renderingInfo.getRenderingInfoForItem", + async ( + item, + target, + requestToolRuntimeConfig, + ignoreInactive, + itemStateInDb + ) => { + const endpointConfig = server.settings.app.tools.get( + `/${item.tool}/endpoint`, + { target: target } + ); - if (!endpointConfig) { - throw new Error(`no endpoint configured for tool: ${item.tool} and target: ${target}`); - } + if (!endpointConfig) { + throw new Error( + `no endpoint configured for tool: ${ + item.tool + } and target: ${target}` + ); + } - // compile the toolRuntimeConfig from runtimeConfig from server, tool endpoint and request - const toolRuntimeConfig = getCompiledToolRuntimeConfig(item, { - serverWideToolRuntimeConfig: options.get('/toolRuntimeConfig', { target: target, tool: item.tool }), - toolEndpointConfig: endpointConfig, - requestToolRuntimeConfig: requestToolRuntimeConfig - }); + // compile the toolRuntimeConfig from runtimeConfig from server, tool endpoint and request + const toolRuntimeConfig = getCompiledToolRuntimeConfig(item, { + serverWideToolRuntimeConfig: options.get("/toolRuntimeConfig", { + target: target, + tool: item.tool + }), + toolEndpointConfig: endpointConfig, + requestToolRuntimeConfig: requestToolRuntimeConfig + }); - const baseUrl = server.settings.app.tools.get(`/${item.tool}/baseUrl`, { target: target }); + const baseUrl = server.settings.app.tools.get(`/${item.tool}/baseUrl`, { + target: target + }); - return await getRenderingInfo(item, baseUrl, endpointConfig, toolRuntimeConfig, itemStateInDb); - }); + return await getRenderingInfo( + item, + baseUrl, + endpointConfig, + toolRuntimeConfig, + itemStateInDb + ); + } + ); - server.method('renderingInfo.getRenderingInfoForId', async (id, target, requestToolRuntimeConfig, ignoreInactive) => { - const item = await server.methods.db.item.getById(id, ignoreInactive); - // this property is passed through to the tool in the end to let it know if the item state is available in the database or not - const itemStateInDb = true; - return server.methods.renderingInfo.getRenderingInfoForItem(item, target, requestToolRuntimeConfig, ignoreInactive, itemStateInDb); - }); + server.method( + "renderingInfo.getRenderingInfoForId", + async (id, target, requestToolRuntimeConfig, ignoreInactive) => { + const item = await server.methods.db.item.getById(id, ignoreInactive); + // this property is passed through to the tool in the end to let it know if the item state is available in the database or not + const itemStateInDb = true; + return server.methods.renderingInfo.getRenderingInfoForItem( + item, + target, + requestToolRuntimeConfig, + ignoreInactive, + itemStateInDb + ); + } + ); - server.method('renderingInfo.cached.getRenderingInfoForId', async (id, target, requestToolRuntimeConfig, ignoreInactive) => { - const item = await server.methods.db.item.getById(id, ignoreInactive); - // this property is passed through to the tool in the end to let it know if the item state is available in the database or not - const itemStateInDb = true; - return server.methods.renderingInfo.getRenderingInfoForItem(item, target, requestToolRuntimeConfig, ignoreInactive, itemStateInDb); - }, { - cache: { - expiresIn: Number.isInteger(options.get('/cache/serverCacheTime')) ? options.get('/cache/serverCacheTime') : 1000, - generateTimeout: 10000 + server.method( + "renderingInfo.cached.getRenderingInfoForId", + async (id, target, requestToolRuntimeConfig, ignoreInactive) => { + const item = await server.methods.db.item.getById(id, ignoreInactive); + // this property is passed through to the tool in the end to let it know if the item state is available in the database or not + const itemStateInDb = true; + return server.methods.renderingInfo.getRenderingInfoForItem( + item, + target, + requestToolRuntimeConfig, + ignoreInactive, + itemStateInDb + ); }, - generateKey: (id, target, toolRuntimeConfig, ignoreInactive) => { - let toolRuntimeConfigKey = JSON - .stringify(toolRuntimeConfig) - .replace(new RegExp('{', 'g'), '') - .replace(new RegExp('}', 'g'), '') - .replace(new RegExp('"', 'g'), '') - .replace(new RegExp(':', 'g'), '-'); - let key = `${id}-${target}-${toolRuntimeConfigKey}-${ignoreInactive}`; - return key; + { + cache: { + expiresIn: Number.isInteger(options.get("/cache/serverCacheTime")) + ? options.get("/cache/serverCacheTime") + : 1000, + generateTimeout: 10000 + }, + generateKey: (id, target, toolRuntimeConfig, ignoreInactive) => { + let toolRuntimeConfigKey = JSON.stringify(toolRuntimeConfig) + .replace(new RegExp("{", "g"), "") + .replace(new RegExp("}", "g"), "") + .replace(new RegExp('"', "g"), "") + .replace(new RegExp(":", "g"), "-"); + let key = `${id}-${target}-${toolRuntimeConfigKey}-${ignoreInactive}`; + return key; + } } - }); + ); // calculate the cache control header from options given - const cacheControlDirectives = await server.methods.getCacheControlDirectivesFromConfig(options.get('/cache/cacheControl')); - const cacheControlHeader = cacheControlDirectives.join(', '); + const cacheControlDirectives = await server.methods.getCacheControlDirectivesFromConfig( + options.get("/cache/cacheControl") + ); + const cacheControlHeader = cacheControlDirectives.join(", "); const routesConfig = { cacheControlHeader: cacheControlHeader - } + }; server.route([ getGetRenderingInfoRoute(routesConfig), getPostRenderingInfoRoute(routesConfig) - ]) + ]); } -} +}; From c7cb28dc0c7debbd03f983b8f4476104f588457c Mon Sep 17 00:00:00 2001 From: benib Date: Mon, 18 Jun 2018 21:43:10 +0400 Subject: [PATCH 03/16] remove Q server side caching of rendering-info as it can make problems if same graphic embedded twice --- plugins/core/rendering-info/index.js | 60 ++++------------------------ 1 file changed, 7 insertions(+), 53 deletions(-) diff --git a/plugins/core/rendering-info/index.js b/plugins/core/rendering-info/index.js index 6607b555..0e4b14f5 100644 --- a/plugins/core/rendering-info/index.js +++ b/plugins/core/rendering-info/index.js @@ -22,7 +22,6 @@ function getGetRenderingInfoRoute(config) { toolRuntimeConfig: Joi.object({ size: Joi.object(sizeValidationObject).optional() }), - noCache: Joi.boolean().optional(), ignoreInactive: Joi.boolean().optional() }, options: { @@ -53,25 +52,13 @@ function getGetRenderingInfoRoute(config) { } try { - if (request.query.noCache) { - const renderingInfo = await request.server.methods.renderingInfo.getRenderingInfoForId( - request.params.id, - request.params.target, - requestToolRuntimeConfig, - request.query.ignoreInactive - ); - return h.response(renderingInfo).header("cache-control", "no-cache"); - } else { - const renderingInfo = await request.server.methods.renderingInfo.cached.getRenderingInfoForId( - request.params.id, - request.params.target, - requestToolRuntimeConfig, - request.query.ignoreInactive - ); - return h - .response(renderingInfo) - .header("cache-control", config.cacheControlHeader); - } + const renderingInfo = await request.server.methods.renderingInfo.getRenderingInfoForId( + request.params.id, + request.params.target, + requestToolRuntimeConfig, + request.query.ignoreInactive + ); + return h.response(renderingInfo).header("cache-control", "no-cache"); } catch (err) { if (err.stack) { request.server.log(["error"], err.stack); @@ -222,39 +209,6 @@ module.exports = { } ); - server.method( - "renderingInfo.cached.getRenderingInfoForId", - async (id, target, requestToolRuntimeConfig, ignoreInactive) => { - const item = await server.methods.db.item.getById(id, ignoreInactive); - // this property is passed through to the tool in the end to let it know if the item state is available in the database or not - const itemStateInDb = true; - return server.methods.renderingInfo.getRenderingInfoForItem( - item, - target, - requestToolRuntimeConfig, - ignoreInactive, - itemStateInDb - ); - }, - { - cache: { - expiresIn: Number.isInteger(options.get("/cache/serverCacheTime")) - ? options.get("/cache/serverCacheTime") - : 1000, - generateTimeout: 10000 - }, - generateKey: (id, target, toolRuntimeConfig, ignoreInactive) => { - let toolRuntimeConfigKey = JSON.stringify(toolRuntimeConfig) - .replace(new RegExp("{", "g"), "") - .replace(new RegExp("}", "g"), "") - .replace(new RegExp('"', "g"), "") - .replace(new RegExp(":", "g"), "-"); - let key = `${id}-${target}-${toolRuntimeConfigKey}-${ignoreInactive}`; - return key; - } - } - ); - // calculate the cache control header from options given const cacheControlDirectives = await server.methods.getCacheControlDirectivesFromConfig( options.get("/cache/cacheControl") From e94ce24eed3a3a13f168f0a4602fb70a4a1bdd43 Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 12:39:36 +0400 Subject: [PATCH 04/16] (chore) prettier code formatting --- plugins/core/base/routes/tool-default.js | 100 +++++++++++++++-------- 1 file changed, 67 insertions(+), 33 deletions(-) diff --git a/plugins/core/base/routes/tool-default.js b/plugins/core/base/routes/tool-default.js index 6652d11f..a40e438d 100644 --- a/plugins/core/base/routes/tool-default.js +++ b/plugins/core/base/routes/tool-default.js @@ -1,7 +1,7 @@ -const Joi = require('joi'); -const Boom = require('boom'); -const Wreck = require('wreck'); -const querystring = require('querystring'); +const Joi = require("joi"); +const Boom = require("boom"); +const Wreck = require("wreck"); +const querystring = require("querystring"); async function handler(options, request, h, payload = null) { const tool = request.server.settings.app.tools.get(`/${request.params.tool}`); @@ -10,18 +10,23 @@ async function handler(options, request, h, payload = null) { return Boom.notFound(`Tool ${request.params.tool} is not known`); } - let queryString = ''; + let queryString = ""; if (request.query && Object.keys(request.query).length > 0) { queryString = querystring.stringify(request.query); } let toolResponse; if (payload) { - toolResponse = await Wreck.post(`${tool.baseUrl}/${request.params.path}?${queryString}`, { - payload: payload - }); + toolResponse = await Wreck.post( + `${tool.baseUrl}/${request.params.path}?${queryString}`, + { + payload: payload + } + ); } else { - toolResponse = await Wreck.get(`${tool.baseUrl}/${request.params.path}?${queryString}`); + toolResponse = await Wreck.get( + `${tool.baseUrl}/${request.params.path}?${queryString}` + ); } // prepare the response to add more headers @@ -33,23 +38,36 @@ async function handler(options, request, h, payload = null) { } // add Cache-Control directives from config if we do not have no-cache set in the tool response - const responseCacheControl = Wreck.parseCacheControl(toolResponse.res.headers['cache-control']); - if (responseCacheControl['no-cache'] !== true) { - const configCacheControl = await request.server.methods.getCacheControlDirectivesFromConfig(options.get('/cache/cacheControl')); - const defaultCacheControl = Wreck.parseCacheControl(configCacheControl.join(',')); + const responseCacheControl = Wreck.parseCacheControl( + toolResponse.res.headers["cache-control"] + ); + if (responseCacheControl["no-cache"] !== true) { + const configCacheControl = await request.server.methods.getCacheControlDirectivesFromConfig( + options.get("/cache/cacheControl") + ); + const defaultCacheControl = Wreck.parseCacheControl( + configCacheControl.join(",") + ); for (directive of Object.keys(defaultCacheControl)) { // only add the default cache control if the directive is not present on the response from the tool if (!responseCacheControl.hasOwnProperty(directive)) { - response.header('cache-control', `${directive}=${defaultCacheControl[directive]}`, { - append: true - }); + response.header( + "cache-control", + `${directive}=${defaultCacheControl[directive]}`, + { + append: true + } + ); } } } // strip whitespace from cache-control header value to be consistent - response.header('cache-control', response.headers['cache-control'].replace(/ /g,'')); + response.header( + "cache-control", + response.headers["cache-control"].replace(/ /g, "") + ); return response; } @@ -57,11 +75,12 @@ async function handler(options, request, h, payload = null) { module.exports = { getGetRoute: function(options) { return { - path: '/tools/{tool}/{path*}', - method: 'GET', + path: "/tools/{tool}/{path*}", + method: "GET", options: { - description: 'Proxies the request to the renderer service for the given tool as defined in the environment', - tags: ['api', 'reader-facing'], + description: + "Proxies the request to the renderer service for the given tool as defined in the environment", + tags: ["api", "reader-facing"], validate: { params: { tool: Joi.string().required(), @@ -78,29 +97,37 @@ module.exports = { handler: async (request, h) => { let payload = null; if (request.query.appendItemToPayload) { - const item = await request.server.methods.db.item.getById(request.query.appendItemToPayload); + const item = await request.server.methods.db.item.getById( + request.query.appendItemToPayload + ); payload = { item: item }; } - return await Reflect.apply(handler, this, [options, request, h, payload]); + return await Reflect.apply(handler, this, [ + options, + request, + h, + payload + ]); } }; }, getPostRoute: function(options) { return { - path: '/tools/{tool}/{path*}', - method: 'POST', + path: "/tools/{tool}/{path*}", + method: "POST", options: { - description: 'Proxies the request to the renderer service for the given tool as defined in the environment', - tags: ['api', 'reader-facing'], + description: + "Proxies the request to the renderer service for the given tool as defined in the environment", + tags: ["api", "reader-facing"], validate: { params: { tool: Joi.string().required(), path: Joi.string().required() }, query: { - appendItemToPayload: Joi.string().optional(), + appendItemToPayload: Joi.string().optional() }, payload: Joi.object(), options: { @@ -108,13 +135,20 @@ module.exports = { } } }, - handler: async (request, h) => { + handler: async (request, h) => { if (request.query.appendItemToPayload) { - const item = await request.server.methods.db.item.getById(request.query.appendItemToPayload); + const item = await request.server.methods.db.item.getById( + request.query.appendItemToPayload + ); request.payload.item = item; } - return await Reflect.apply(handler, this, [options, request, h, request.payload]); + return await Reflect.apply(handler, this, [ + options, + request, + h, + request.payload + ]); } - } + }; } -} +}; From e01379a67065f55d22ba88f9efdab18853e6d0b6 Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 13:28:44 +0400 Subject: [PATCH 05/16] add `noCache` query param to /rendering-info to return with Cache-Control: no-cache --- plugins/core/rendering-info/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/core/rendering-info/index.js b/plugins/core/rendering-info/index.js index 0e4b14f5..fea7f26c 100644 --- a/plugins/core/rendering-info/index.js +++ b/plugins/core/rendering-info/index.js @@ -22,7 +22,8 @@ function getGetRenderingInfoRoute(config) { toolRuntimeConfig: Joi.object({ size: Joi.object(sizeValidationObject).optional() }), - ignoreInactive: Joi.boolean().optional() + ignoreInactive: Joi.boolean().optional(), + noCache: Joi.boolean().optional() }, options: { allowUnknown: true @@ -58,7 +59,14 @@ function getGetRenderingInfoRoute(config) { requestToolRuntimeConfig, request.query.ignoreInactive ); - return h.response(renderingInfo).header("cache-control", "no-cache"); + return h + .response(renderingInfo) + .header( + "cache-control", + request.query.noCache === true + ? "no-cache" + : config.cacheControlHeader + ); } catch (err) { if (err.stack) { request.server.log(["error"], err.stack); From 489870161d43682af5b8af8b8f7e68dcab7cc1b9 Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 13:29:11 +0400 Subject: [PATCH 06/16] Cache-Control: public is not default anymore but needs to be in config --- plugins/core/base/index.js | 11 +- test/config/base.js | 22 +-- test/config/rendering-info.js | 38 ++--- test/plugins.js | 62 +++++--- test/unit-tests.js | 260 +++++++++++++++++++--------------- 5 files changed, 225 insertions(+), 168 deletions(-) diff --git a/plugins/core/base/index.js b/plugins/core/base/index.js index 807d8c22..cfadbc49 100644 --- a/plugins/core/base/index.js +++ b/plugins/core/base/index.js @@ -7,13 +7,16 @@ module.exports = { server.method("getCacheControlDirectivesFromConfig", async function( cacheControlConfig ) { - const cacheControlDirectives = ["public"]; - - // return early if no config given + // return early if no config given, default is 'no-cache' if (!cacheControlConfig) { - return cacheControlDirectives; + return ["no-cache"]; } + const cacheControlDirectives = []; + + if (cacheControlConfig.public) { + cacheControlDirectives.push("public"); + } if (cacheControlConfig.maxAge) { cacheControlDirectives.push(`max-age=${cacheControlConfig.maxAge}`); } diff --git a/test/config/base.js b/test/config/base.js index 0b131530..ab062392 100644 --- a/test/config/base.js +++ b/test/config/base.js @@ -1,25 +1,27 @@ -const Confidence = require('confidence'); +const Confidence = require("confidence"); const base = { cache: { - cacheControl: { // these are the default cache-control headers used for the tool-default route in case a tool is not responding with it's own directives. + cacheControl: { + // these are the default cache-control headers used for the tool-default route in case a tool is not responding with it's own directives. + public: true, maxAge: 1, sMaxAge: 1, staleWhileRevalidate: 1, staleIfError: 1 } } -} +}; -const env = process.env.APP_ENV || 'local'; +const env = process.env.APP_ENV || "local"; const store = new Confidence.Store(base); module.exports.get = (key, criteria = {}) => { - criteria = Object.assign({ env: env }, criteria) - return store.get(key, criteria) -} + criteria = Object.assign({ env: env }, criteria); + return store.get(key, criteria); +}; module.exports.meta = (key, criteria = {}) => { - criteria = Object.assign({ env: env }, criteria) - return store.meta(key, criteria) -} + criteria = Object.assign({ env: env }, criteria); + return store.meta(key, criteria); +}; diff --git a/test/config/rendering-info.js b/test/config/rendering-info.js index 9c9833c7..cb53a83d 100644 --- a/test/config/rendering-info.js +++ b/test/config/rendering-info.js @@ -1,25 +1,29 @@ -const Confidence = require('confidence'); +const Confidence = require("confidence"); const renderingInfoConfig = { cache: { - cacheControl: { // these are the default cache-control headers in case a tool is not responding with it's own directives. + cacheControl: { + // these are the default cache-control headers in case a tool is not responding with it's own directives. + public: true, maxAge: { - $filter: 'env', + $filter: "env", local: 1, $default: 60 }, sMaxAge: { - $filter: 'env', + $filter: "env", local: 1, $default: 60 }, - staleWhileRevalidate: { // this is just for the CDN, it will serve maximum 24 hours old content while revalidating in the background - $filter: 'env', + staleWhileRevalidate: { + // this is just for the CDN, it will serve maximum 24 hours old content while revalidating in the background + $filter: "env", local: 1, $default: 60 * 60 * 24 }, - staleIfError: { // this is just for the CDN, it will serve maximum 7 days old content if the backend is not running - $filter: 'env', + staleIfError: { + // this is just for the CDN, it will serve maximum 7 days old content if the backend is not running + $filter: "env", local: 1, $default: 60 * 60 * 24 * 7 } @@ -27,20 +31,20 @@ const renderingInfoConfig = { }, toolRuntimeConfig: { foo: { - bar: 'baz' + bar: "baz" } } -} +}; -const env = process.env.APP_ENV || 'local'; +const env = process.env.APP_ENV || "local"; const store = new Confidence.Store(renderingInfoConfig); module.exports.get = (key, criteria = {}) => { - criteria = Object.assign({ env: env }, criteria) - return store.get(key, criteria) -} + criteria = Object.assign({ env: env }, criteria); + return store.get(key, criteria); +}; module.exports.meta = (key, criteria = {}) => { - criteria = Object.assign({ env: env }, criteria) - return store.meta(key, criteria) -} + criteria = Object.assign({ env: env }, criteria); + return store.meta(key, criteria); +}; diff --git a/test/plugins.js b/test/plugins.js index fd8c696d..c9ce634f 100644 --- a/test/plugins.js +++ b/test/plugins.js @@ -1,7 +1,7 @@ // used in screenshot plugin function resolvePath(resource, env) { if (!resource.url && resource.path) { - resource.url = `http://localhost:3333${resource.path}` + resource.url = `http://localhost:3333${resource.path}`; } delete resource.path; return resource; @@ -9,48 +9,60 @@ function resolvePath(resource, env) { module.exports = [ { - plugin: require('../plugins/core/base'), - options: require('./config/base.js') + plugin: require("../plugins/core/base"), + options: require("./config/base.js") }, { - plugin: require('../plugins/core/db'), + plugin: require("../plugins/core/db"), options: { - protocol: 'http', - host: 'localhost:5984', - database: 'q-items' + protocol: "http", + host: "localhost:5984", + database: "q-items" } }, { - plugin: require('../plugins/core/editor'), + plugin: require("../plugins/core/editor"), options: { - editorConfig: require('./config/editor.js').get('') + editorConfig: require("./config/editor.js").get("") } }, { - plugin: require('../plugins/core/rendering-info'), - options: require('./config/rendering-info.js') + plugin: require("../plugins/core/rendering-info"), + options: require("./config/rendering-info.js") }, { - plugin: require('../plugins/fixtures') + plugin: require("../plugins/fixtures") }, { - plugin: require('../plugins/statistics') + plugin: require("../plugins/statistics") }, { - plugin: require('../plugins/screenshot'), + plugin: require("../plugins/screenshot"), options: { getScripts: function(renderingInfo) { const scripts = []; - if (renderingInfo.loaderConfig && renderingInfo.loaderConfig.loadSystemJs === 'full') { - scripts.push({url: `${process.env.Q_SERVER_BASE_URL}/files/system.js`}); + if ( + renderingInfo.loaderConfig && + renderingInfo.loaderConfig.loadSystemJs === "full" + ) { + scripts.push({ + url: `${process.env.Q_SERVER_BASE_URL}/files/system.js` + }); } - if (renderingInfo.loaderConfig && renderingInfo.loaderConfig.polyfills) { - scripts.push({url: `https://cdn.polyfill.io/v2/polyfill.min.js?features=${renderingInfo.loaderConfig.polyfills.join(',')}`}); + if ( + renderingInfo.loaderConfig && + renderingInfo.loaderConfig.polyfills + ) { + scripts.push({ + url: `https://cdn.polyfill.io/v2/polyfill.min.js?features=${renderingInfo.loaderConfig.polyfills.join( + "," + )}` + }); } if (renderingInfo.scripts && Array.isArray(renderingInfo.scripts)) { for (let script of renderingInfo.scripts) { script = resolvePath(script); - if (script.url && script.url.includes('track-manager')) { + if (script.url && script.url.includes("track-manager")) { continue; } scripts.push(script); @@ -60,7 +72,10 @@ module.exports = [ }, getStylesheets: function(renderingInfo) { const stylesheets = []; - if (renderingInfo.stylesheets && Array.isArray(renderingInfo.stylesheets)) { + if ( + renderingInfo.stylesheets && + Array.isArray(renderingInfo.stylesheets) + ) { for (let stylesheet of renderingInfo.stylesheets) { stylesheet = resolvePath(stylesheet); stylesheets.push(stylesheet); @@ -70,6 +85,7 @@ module.exports = [ }, cache: { cacheControl: { + public: true, maxAge: 1, sMaxAge: 1, staleWhileRevalidate: 1, @@ -79,10 +95,10 @@ module.exports = [ } }, { - plugin: require('../plugins/cdn/keycdn'), + plugin: require("../plugins/cdn/keycdn"), options: { - zoneId: 'some-zone-id', - apiKey: 'some-api-key', + zoneId: "some-zone-id", + apiKey: "some-api-key", dryRun: true } } diff --git a/test/unit-tests.js b/test/unit-tests.js index 92fc4b8d..a314a6f9 100644 --- a/test/unit-tests.js +++ b/test/unit-tests.js @@ -1,25 +1,24 @@ -const Lab = require('lab'); -const Code = require('code'); -const Hapi = require('hapi'); -const lab = exports.lab = Lab.script(); +const Lab = require("lab"); +const Code = require("code"); +const Hapi = require("hapi"); +const lab = (exports.lab = Lab.script()); -const clone = require('clone'); +const clone = require("clone"); const expect = Code.expect; const before = lab.before; const after = lab.after; const it = lab.it; -const items = require('./mock/items.js'); -const plugins = require('./plugins.js'); -let server = require('./server.js').getServer(); +const items = require("./mock/items.js"); +const plugins = require("./plugins.js"); +let server = require("./server.js").getServer(); before(async () => { try { await server.register(plugins); await server.start(); - } - catch (err) { + } catch (err) { expect(err).to.not.exist(); } }); @@ -29,154 +28,179 @@ after(async () => { server = null; }); -lab.experiment('meta-properties', () => { - - const deleteMetaProperties = require('../helper/meta-properties').deleteMetaProperties; - it('strips meta properties', () => { +lab.experiment("meta-properties", () => { + const deleteMetaProperties = require("../helper/meta-properties") + .deleteMetaProperties; + it("strips meta properties", () => { let slimItem = deleteMetaProperties(clone(items[0])); expect(slimItem.editedBy).to.be.undefined(); expect(slimItem.createdBy).to.be.undefined(); expect(slimItem.department).to.be.undefined(); - }) + }); - it('should only delete all meta properties', function() { + it("should only delete all meta properties", function() { let slimItem = deleteMetaProperties(clone(items[0])); expect(slimItem.data).to.not.be.undefined(); - }) - + }); }); -lab.experiment('server.method: getCacheControlDirectivesFromConfig', () => { - it('returns Cache-Control: public if no config given', async () => { +lab.experiment("server.method: getCacheControlDirectivesFromConfig", () => { + it("returns Cache-Control: public if no config given", async () => { const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig(); - expect(configCacheControl[0]).to.be.equal('public'); + expect(configCacheControl[0]).to.be.equal("no-cache"); }); - it('returns correct cache control header if maxAge given', async () => { - const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig({ - maxAge: 1 - }); - expect(configCacheControl[0]).to.be.equal('public'); - expect(configCacheControl[1]).to.be.equal('max-age=1'); + it("returns correct cache control header if maxAge given", async () => { + const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig( + { + public: true, + maxAge: 1 + } + ); + expect(configCacheControl[0]).to.be.equal("public"); + expect(configCacheControl[1]).to.be.equal("max-age=1"); }); - it('returns correct cache control header if sMaxAge given', async () => { - const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig({ - sMaxAge: 1 - }); - expect(configCacheControl[0]).to.be.equal('public'); - expect(configCacheControl[1]).to.be.equal('s-maxage=1'); + it("returns correct cache control header if sMaxAge given", async () => { + const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig( + { + sMaxAge: 1 + } + ); + expect(configCacheControl[0]).to.be.equal("s-maxage=1"); }); - it('returns correct cache control header if staleWhileRevalidate given', async () => { - const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig({ - staleWhileRevalidate: 1 - }); - expect(configCacheControl[0]).to.be.equal('public'); - expect(configCacheControl[1]).to.be.equal('stale-while-revalidate=1'); + it("returns correct cache control header if staleWhileRevalidate given", async () => { + const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig( + { + public: true, + staleWhileRevalidate: 1 + } + ); + expect(configCacheControl[0]).to.be.equal("public"); + expect(configCacheControl[1]).to.be.equal("stale-while-revalidate=1"); }); - it('returns correct cache control header if staleIfError given', async () => { - const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig({ - staleIfError: 1 - }); - expect(configCacheControl[0]).to.be.equal('public'); - expect(configCacheControl[1]).to.be.equal('stale-if-error=1'); - }); - - it('computes correct cache control headers if all config given', async () => { - const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig(require('./config/base.js').get('/cache/cacheControl')); - expect(configCacheControl[0]).to.be.equal('public'); - expect(configCacheControl[1]).to.be.equal('max-age=1'); - expect(configCacheControl[2]).to.be.equal('s-maxage=1'); - expect(configCacheControl[3]).to.be.equal('stale-while-revalidate=1'); - expect(configCacheControl[4]).to.be.equal('stale-if-error=1'); + it("returns correct cache control header if staleIfError given", async () => { + const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig( + { + public: true, + staleIfError: 1 + } + ); + expect(configCacheControl[0]).to.be.equal("public"); + expect(configCacheControl[1]).to.be.equal("stale-if-error=1"); }); + it("computes correct cache control headers if all config given", async () => { + const configCacheControl = await server.methods.getCacheControlDirectivesFromConfig( + require("./config/base.js").get("/cache/cacheControl") + ); + expect(configCacheControl[0]).to.be.equal("public"); + expect(configCacheControl[1]).to.be.equal("max-age=1"); + expect(configCacheControl[2]).to.be.equal("s-maxage=1"); + expect(configCacheControl[3]).to.be.equal("stale-while-revalidate=1"); + expect(configCacheControl[4]).to.be.equal("stale-if-error=1"); + }); }); -lab.experiment('rendering-info toolRuntimeConfig', () => { - it('constructs correct default toolBaseUrl if no path given', async () => { - const getCompiledToolRuntimeConfig = require('../plugins/core/rendering-info/helpers.js').getCompiledToolRuntimeConfig; +lab.experiment("rendering-info toolRuntimeConfig", () => { + it("constructs correct default toolBaseUrl if no path given", async () => { + const getCompiledToolRuntimeConfig = require("../plugins/core/rendering-info/helpers.js") + .getCompiledToolRuntimeConfig; const toolRuntimeConfig = getCompiledToolRuntimeConfig(clone(items[0]), { serverWideToolRuntimeConfig: { toolBaseUrl: { - protocol: 'https', - host: 'q-server-host' + protocol: "https", + host: "q-server-host" } } }); - expect(toolRuntimeConfig.toolBaseUrl).to.be.equal('https://q-server-host/tools/tool1'); + expect(toolRuntimeConfig.toolBaseUrl).to.be.equal( + "https://q-server-host/tools/tool1" + ); }); - it('constructs correct toolBaseUrl if path given', async () => { - const getCompiledToolRuntimeConfig = require('../plugins/core/rendering-info/helpers.js').getCompiledToolRuntimeConfig; + it("constructs correct toolBaseUrl if path given", async () => { + const getCompiledToolRuntimeConfig = require("../plugins/core/rendering-info/helpers.js") + .getCompiledToolRuntimeConfig; const toolRuntimeConfig = getCompiledToolRuntimeConfig(clone(items[0]), { serverWideToolRuntimeConfig: { toolBaseUrl: { - protocol: 'https', - host: 'q-server-host', - path: '/some-other/path' + protocol: "https", + host: "q-server-host", + path: "/some-other/path" } } }); - expect(toolRuntimeConfig.toolBaseUrl).to.be.equal('https://q-server-host/some-other/path'); + expect(toolRuntimeConfig.toolBaseUrl).to.be.equal( + "https://q-server-host/some-other/path" + ); }); - it('applies toolEndpointConfig if given', async () => { - const getCompiledToolRuntimeConfig = require('../plugins/core/rendering-info/helpers.js').getCompiledToolRuntimeConfig; + it("applies toolEndpointConfig if given", async () => { + const getCompiledToolRuntimeConfig = require("../plugins/core/rendering-info/helpers.js") + .getCompiledToolRuntimeConfig; const toolRuntimeConfig = getCompiledToolRuntimeConfig(clone(items[0]), { serverWideToolRuntimeConfig: { - foo: 'server' + foo: "server" }, toolEndpointConfig: { toolRuntimeConfig: { - foo: 'toolendpoint' + foo: "toolendpoint" } } }); - expect(toolRuntimeConfig.foo).to.be.equal('toolendpoint'); + expect(toolRuntimeConfig.foo).to.be.equal("toolendpoint"); }); - it('applies toolEndpointConfig and requestToolRuntimeConfig if given', { plan: 2 }, async () => { - const getCompiledToolRuntimeConfig = require('../plugins/core/rendering-info/helpers.js').getCompiledToolRuntimeConfig; - const toolRuntimeConfig = getCompiledToolRuntimeConfig(clone(items[0]), { - serverWideToolRuntimeConfig: { - foo: 'server', - }, - toolEndpointConfig: { - toolRuntimeConfig: { - foo: 'toolendpoint', - bar: 'toolendpoint' + it( + "applies toolEndpointConfig and requestToolRuntimeConfig if given", + { plan: 2 }, + async () => { + const getCompiledToolRuntimeConfig = require("../plugins/core/rendering-info/helpers.js") + .getCompiledToolRuntimeConfig; + const toolRuntimeConfig = getCompiledToolRuntimeConfig(clone(items[0]), { + serverWideToolRuntimeConfig: { + foo: "server" + }, + toolEndpointConfig: { + toolRuntimeConfig: { + foo: "toolendpoint", + bar: "toolendpoint" + } + }, + requestToolRuntimeConfig: { + bar: "request" } - }, - requestToolRuntimeConfig: { - bar: 'request' - } - }); - expect(toolRuntimeConfig.foo).to.be.equal('toolendpoint'); - expect(toolRuntimeConfig.bar).to.be.equal('request'); - }); + }); + expect(toolRuntimeConfig.foo).to.be.equal("toolendpoint"); + expect(toolRuntimeConfig.bar).to.be.equal("request"); + } + ); - it('fails to validate invalid size object', { plan: 10 }, async () => { - const validateSize = require('../plugins/core/rendering-info/size-helpers.js').validateSize; + it("fails to validate invalid size object", { plan: 10 }, async () => { + const validateSize = require("../plugins/core/rendering-info/size-helpers.js") + .validateSize; try { validateSize({ width: [ { value: 500, - comparison: '>' + comparison: ">" }, { value: 400, - comparison: '<' + comparison: "<" } ] }); } catch (err) { expect(err).to.be.an.instanceof(Error); - expect(err.message).to.be.equal('The combination of values and comparison signs does not result in a meaningful range.'); + expect(err.message).to.be.equal( + "The combination of values and comparison signs does not result in a meaningful range." + ); } try { @@ -184,17 +208,19 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { width: [ { value: 100, - comparison: '=' + comparison: "=" }, { value: 200, - comparison: '<' + comparison: "<" } ] }); } catch (err) { expect(err).to.be.an.instanceof(Error); - expect(err.message).to.be.equal('The combination of values and comparison signs does not result in a meaningful range.'); + expect(err.message).to.be.equal( + "The combination of values and comparison signs does not result in a meaningful range." + ); } try { @@ -202,17 +228,19 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { width: [ { value: 100, - comparison: '>' + comparison: ">" }, { value: 200, - comparison: '=' + comparison: "=" } ] }); } catch (err) { expect(err).to.be.an.instanceof(Error); - expect(err.message).to.be.equal('The combination of values and comparison signs does not result in a meaningful range.'); + expect(err.message).to.be.equal( + "The combination of values and comparison signs does not result in a meaningful range." + ); } try { @@ -220,19 +248,21 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { width: [ { value: 200, - comparison: '>', - unit: 'px' + comparison: ">", + unit: "px" }, { value: 300, - comparison: '<', - unit: 'cm' + comparison: "<", + unit: "cm" } ] }); } catch (err) { expect(err).to.be.an.instanceof(Error); - expect(err.message).to.be.equal('Units are not the same for the given range.'); + expect(err.message).to.be.equal( + "Units are not the same for the given range." + ); } try { @@ -240,33 +270,36 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { width: [ { value: 200, - comparison: '>', + comparison: ">" }, { value: 300, - comparison: '>', + comparison: ">" } ] }); } catch (err) { expect(err).to.be.an.instanceof(Error); - expect(err.message).to.be.equal('The combination of values and comparison signs does not result in a meaningful range.'); + expect(err.message).to.be.equal( + "The combination of values and comparison signs does not result in a meaningful range." + ); } }); - it('validates valid size object', { plan: 2 }, async () => { - const validateSize = require('../plugins/core/rendering-info/size-helpers.js').validateSize; + it("validates valid size object", { plan: 2 }, async () => { + const validateSize = require("../plugins/core/rendering-info/size-helpers.js") + .validateSize; let error; try { validateSize({ width: [ { value: 500, - comparison: '>' + comparison: ">" }, { value: 800, - comparison: '<' + comparison: "<" } ] }); @@ -281,7 +314,7 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { width: [ { value: 200, - comparison: '=' + comparison: "=" } ] }); @@ -290,5 +323,4 @@ lab.experiment('rendering-info toolRuntimeConfig', () => { } expect(error).to.be.undefined(); }); - }); From e75288ab7f19bf923d40075fffbb2e4350c77501 Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 13:29:24 +0400 Subject: [PATCH 07/16] increase test coverage level --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ce22116..9a80f17b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "lab -a code -t 87 -c -P tests -m 3000 --verbose --leaks", + "test": "lab -a code -t 88 -c -P tests -m 3000 --verbose --leaks", "start:prod": "APP_ENV=prod node index.js", "start:staging": "APP_ENV=staging node index.js", "start:local": "APP_ENV=local node index.js" From 3ab5d684b157168756152bdac4886cdf2bfa6064 Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 19:55:12 +0400 Subject: [PATCH 08/16] add route /editor/tools-ordered-by-user-usage to be used by editors tool-selection --- docs/install.md | 12 ++++++++ plugins/core/db/index.js | 29 +++++++++++++++++++ plugins/core/editor/index.js | 1 + .../routes/tools-ordered-by-user-usage.js | 25 ++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 plugins/core/editor/routes/tools-ordered-by-user-usage.js diff --git a/docs/install.md b/docs/install.md index e96207b0..5f2e2853 100644 --- a/docs/install.md +++ b/docs/install.md @@ -32,6 +32,18 @@ title: Installation } ``` ```json +{ + "_id": "_design/tools", + "views": { + "usagePerUser": { + "reduce": "_sum", + "map": "function (doc) {\n if (doc.tool && doc.createdBy) {\n emit([doc.createdBy, doc.tool], 1);\n }\n if (doc.tool && doc.updatedBy) {\n emit([doc.updatedBy, doc.tool], 1);\n }\n}" + } + }, + "language": "javascript" +} +``` +```json { "_id": "_design/query-index", "language": "query", diff --git a/plugins/core/db/index.js b/plugins/core/db/index.js index e49ce4da..5eb932dd 100644 --- a/plugins/core/db/index.js +++ b/plugins/core/db/index.js @@ -128,5 +128,34 @@ module.exports = { }); }); }); + + server.method("db.tools.getWithUserUsage", function(username) { + const options = { + startkey: [username], + endkey: [username, {}], + reduce: true, + group: true + }; + return new Promise((resolve, reject) => { + server.app.db.view( + "tools", + "usagePerUser", + options, + async (err, data) => { + if (err) { + return reject(Boom.internal(err)); + } else { + const toolsWithUsage = data.rows.map(row => { + return { + tool: row.key[1], + usage: row.value + }; + }); + return resolve(toolsWithUsage); + } + } + ); + }); + }); } }; diff --git a/plugins/core/editor/index.js b/plugins/core/editor/index.js index 523785d4..963751f2 100644 --- a/plugins/core/editor/index.js +++ b/plugins/core/editor/index.js @@ -11,6 +11,7 @@ module.exports = { server.route([ require("./routes/targets"), require("./routes/tools"), + require("./routes/tools-ordered-by-user-usage"), require("./routes/locales").getGetToolsRoute(), require("./routes/locales").getGetEditorConfigRoute(settings) ]); diff --git a/plugins/core/editor/routes/tools-ordered-by-user-usage.js b/plugins/core/editor/routes/tools-ordered-by-user-usage.js new file mode 100644 index 00000000..ae81912a --- /dev/null +++ b/plugins/core/editor/routes/tools-ordered-by-user-usage.js @@ -0,0 +1,25 @@ +module.exports = { + path: "/editor/tools-ordered-by-user-usage", + method: "GET", + options: { + auth: "q-auth", + cors: { + credentials: true + }, + description: "Returns all available Q tool names", + tags: ["api", "editor"] + }, + handler: async (request, h) => { + const username = request.auth.credentials.name; + const toolsWithUsageByUser = await request.server.methods.db.tools.getWithUserUsage( + username + ); + return toolsWithUsageByUser + .sort((a, b) => { + return b.usage - a.usage; + }) + .map(row => { + return row.tool; + }); + } +}; From cba104d057c2c73489b473b6c765ebe05eed6dcd Mon Sep 17 00:00:00 2001 From: benib Date: Tue, 19 Jun 2018 20:00:32 +0400 Subject: [PATCH 09/16] (chore) decrease test coverage limit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9a80f17b..0ce22116 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "lab -a code -t 88 -c -P tests -m 3000 --verbose --leaks", + "test": "lab -a code -t 87 -c -P tests -m 3000 --verbose --leaks", "start:prod": "APP_ENV=prod node index.js", "start:staging": "APP_ENV=staging node index.js", "start:local": "APP_ENV=local node index.js" From 289232f8a7c7f50fdb8f36822b9bae4c39fc0ff6 Mon Sep 17 00:00:00 2001 From: benib Date: Thu, 21 Jun 2018 21:50:23 +0400 Subject: [PATCH 10/16] fix: include updatedDate and updatedBy in docDiff for item PUT requests --- plugins/core/base/routes/item.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/core/base/routes/item.js b/plugins/core/base/routes/item.js index 0e5372da..75dbc769 100644 --- a/plugins/core/base/routes/item.js +++ b/plugins/core/base/routes/item.js @@ -164,7 +164,10 @@ module.exports = { let docDiff = {}; doc.updatedDate = now.toISOString(); + docDiff.updatedDate = doc.updatedDate; + doc.updatedBy = request.auth.credentials.name; + docDiff.updatedBy = doc.updatedBy; const ignoreInactive = true; const oldDoc = await request.server.methods.db.item.getById( From 5a022949985940def11d6d9b74660ceb41fd7f67 Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Mon, 25 Jun 2018 16:52:09 +0200 Subject: [PATCH 11/16] (search route) Fix search route for inactive graphics --- plugins/core/db/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/core/db/index.js b/plugins/core/db/index.js index 5eb932dd..f068fde6 100644 --- a/plugins/core/db/index.js +++ b/plugins/core/db/index.js @@ -16,6 +16,22 @@ function getSearchFilters(filterProperties) { }) }; } + if (parameterName === "active" && parameterValue === false) { + return { + $or: [ + { + active: { + $eq: false + } + }, + { + active: { + $exists: false + } + } + ] + }; + } if (parameterName === "tool" && Array.isArray(parameterValue)) { return { $or: parameterValue.map(tool => { From 4c7df4c8842e01ef5469396b6344d4e03b2bfa29 Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Mon, 25 Jun 2018 17:31:34 +0200 Subject: [PATCH 12/16] (search route) Add byMe filter --- plugins/core/base/routes/search.js | 14 -------------- plugins/core/db/index.js | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/plugins/core/base/routes/search.js b/plugins/core/base/routes/search.js index 160c09fd..04b91582 100644 --- a/plugins/core/base/routes/search.js +++ b/plugins/core/base/routes/search.js @@ -5,20 +5,6 @@ module.exports = { path: "/search", method: "GET", options: { - validate: { - query: { - limit: Joi.number().optional(), - bookmark: Joi.string().optional(), - tool: Joi.alternatives() - .try(Joi.array().items(Joi.string()), Joi.string()) - .optional(), - createdBy: Joi.string().optional(), - department: Joi.string().optional(), - publication: Joi.string().optional(), - active: Joi.boolean().optional(), - searchString: Joi.string().optional() - } - }, tags: ["api", "editor"] }, handler: async (request, h) => { diff --git a/plugins/core/db/index.js b/plugins/core/db/index.js index f068fde6..10226299 100644 --- a/plugins/core/db/index.js +++ b/plugins/core/db/index.js @@ -32,6 +32,22 @@ function getSearchFilters(filterProperties) { ] }; } + if (parameterName === "byMe") { + return { + $or: [ + { + createdBy: { + $eq: parameterValue + } + }, + { + updatedBy: { + $eq: parameterValue + } + } + ] + }; + } if (parameterName === "tool" && Array.isArray(parameterValue)) { return { $or: parameterValue.map(tool => { From ab11f10bf7edd9c0be04246471765b8d4ad4900c Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Mon, 25 Jun 2018 17:58:28 +0200 Subject: [PATCH 13/16] (search route) Add byMe parameter to route --- plugins/core/base/routes/search.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/core/base/routes/search.js b/plugins/core/base/routes/search.js index 04b91582..6113bc96 100644 --- a/plugins/core/base/routes/search.js +++ b/plugins/core/base/routes/search.js @@ -5,6 +5,20 @@ module.exports = { path: "/search", method: "GET", options: { + validate: { + query: { + limit: Joi.number().optional(), + bookmark: Joi.string().optional(), + tool: Joi.alternatives() + .try(Joi.array().items(Joi.string()), Joi.string()) + .optional(), + byMe: Joi.string().optional(), + department: Joi.string().optional(), + publication: Joi.string().optional(), + active: Joi.boolean().optional(), + searchString: Joi.string().optional() + } + }, tags: ["api", "editor"] }, handler: async (request, h) => { From dc26e4fa0e35cac052c7a4f887eb845039b92b51 Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Mon, 25 Jun 2018 18:01:55 +0200 Subject: [PATCH 14/16] (search route) Rename byMe parameter to createdBy --- plugins/core/base/routes/search.js | 2 +- plugins/core/db/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/core/base/routes/search.js b/plugins/core/base/routes/search.js index 6113bc96..160c09fd 100644 --- a/plugins/core/base/routes/search.js +++ b/plugins/core/base/routes/search.js @@ -12,7 +12,7 @@ module.exports = { tool: Joi.alternatives() .try(Joi.array().items(Joi.string()), Joi.string()) .optional(), - byMe: Joi.string().optional(), + createdBy: Joi.string().optional(), department: Joi.string().optional(), publication: Joi.string().optional(), active: Joi.boolean().optional(), diff --git a/plugins/core/db/index.js b/plugins/core/db/index.js index 10226299..3fbbee23 100644 --- a/plugins/core/db/index.js +++ b/plugins/core/db/index.js @@ -32,7 +32,7 @@ function getSearchFilters(filterProperties) { ] }; } - if (parameterName === "byMe") { + if (parameterName === "createdBy") { return { $or: [ { From d2a3a2754110f81a16ee1c843ea7ba1f8bb4c38f Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Tue, 26 Jun 2018 17:11:41 +0200 Subject: [PATCH 15/16] Update version to 5.0.0 --- package-lock.json | 2430 ++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 1216 insertions(+), 1216 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd470b04..f635f66c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@nzz/q-server", - "version": "4.1.2", + "version": "5.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10,7 +10,7 @@ "integrity": "sha512-qsIHFQy0u17JqSY+3ZUT+ykqxYY17yOfvAsLkFkw8kSQqi05d1jyj0bCuSX6sjYlXuY9cKpgUt5EudQdP4aXyA==", "dev": true, "requires": { - "xtend": "4.0.1" + "xtend": "~4.0.0" } }, "accept": { @@ -18,8 +18,8 @@ "resolved": "https://registry.npmjs.org/accept/-/accept-3.0.2.tgz", "integrity": "sha512-bghLXFkCOsC1Y2TZ51etWfKDs6q249SAoHTZVfzWWdlZxoij+mgkj9AmUJWQpDY48TfnrTDIe43Xem4zdMe7mQ==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3" + "boom": "7.x.x", + "hoek": "5.x.x" } }, "accepts": { @@ -28,7 +28,7 @@ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" }, "dependencies": { @@ -44,7 +44,7 @@ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } } } @@ -61,7 +61,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -77,7 +77,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "ajv": { @@ -85,10 +85,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "4.2.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" } }, "ajv-keywords": { @@ -103,9 +103,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "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": { @@ -119,7 +119,7 @@ "resolved": "https://registry.npmjs.org/ammo/-/ammo-3.0.1.tgz", "integrity": "sha512-4UqoM8xQjwkQ78oiU4NbBK0UgYqeKMAKmwE4ec7Rz3rGU8ZEBFxzgF2sUYKOAlqIXExBDYLN6y1ShF5yQ4hwLQ==", "requires": { - "hoek": "5.0.3" + "hoek": "5.x.x" } }, "ansi-escapes": { @@ -150,8 +150,8 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" }, "dependencies": { "readable-stream": { @@ -160,13 +160,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.2", - "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": { @@ -175,7 +175,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -185,7 +185,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "argsarray": { @@ -206,7 +206,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -305,9 +305,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "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": { "chalk": { @@ -316,11 +316,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "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": { @@ -329,7 +329,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -363,8 +363,8 @@ "integrity": "sha1-1k03XWinxkDZEuI1jRcNylu1RoE=", "dev": true, "requires": { - "concat-stream": "1.4.11", - "meow": "2.0.0" + "concat-stream": "~1.4.7", + "meow": "~2.0.0" }, "dependencies": { "concat-stream": { @@ -373,9 +373,9 @@ "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14", - "typedarray": "0.0.6" + "inherits": "~2.0.1", + "readable-stream": "~1.1.9", + "typedarray": "~0.0.5" } }, "isarray": { @@ -390,10 +390,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" } } } @@ -410,7 +410,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "big-time": { @@ -430,8 +430,8 @@ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" }, "dependencies": { "readable-stream": { @@ -440,13 +440,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.2", - "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": { @@ -455,7 +455,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -473,15 +473,15 @@ "dev": true, "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.3", + "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.16" + "type-is": "~1.6.15" }, "dependencies": { "debug": { @@ -506,7 +506,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-7.2.0.tgz", "integrity": "sha1-K/8kpVVldn/ehp7ICDF+sQxI6WY=", "requires": { - "hoek": "5.0.3" + "hoek": "5.x.x" } }, "bossy": { @@ -515,9 +515,9 @@ "integrity": "sha512-IrXZdXnDrjfk9ZVtnnmehlcTGK/KRqUJuNZJteMGU2/cJdXC6yWf2yhkAAbAgjOTsJJHXdlYloTeFH1ZgRNllw==", "dev": true, "requires": { - "boom": "7.2.0", - "hoek": "5.0.3", - "joi": "13.3.0" + "boom": "7.x.x", + "hoek": "5.x.x", + "joi": "13.x.x" } }, "bounce": { @@ -525,8 +525,8 @@ "resolved": "https://registry.npmjs.org/bounce/-/bounce-1.2.0.tgz", "integrity": "sha512-8syCGe8B2/WC53118/F/tFy5aW00j+eaGPXmAUP7iBhxc+EBZZxS1vKelWyBCH6IqojgS2t1gF0glH30qAJKEw==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3" + "boom": "7.x.x", + "hoek": "5.x.x" } }, "brace-expansion": { @@ -535,7 +535,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -549,9 +549,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-alloc": { @@ -560,8 +560,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": { @@ -599,8 +599,8 @@ "resolved": "https://registry.npmjs.org/call/-/call-5.0.1.tgz", "integrity": "sha512-ollfFPSshiuYLp7AsrmpkQJ/PxCi6AzV81rCjBwWhyF2QGyUY/vPDMzoh4aUcWyucheRglG2LaS5qkIEfLRh6A==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3" + "boom": "7.x.x", + "hoek": "5.x.x" } }, "call-me-maybe": { @@ -614,7 +614,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -635,8 +635,8 @@ "integrity": "sha1-vRoRv5sxoc5JNJOpMN4aC69K1+w=", "dev": true, "requires": { - "camelcase": "1.2.1", - "map-obj": "1.0.1" + "camelcase": "^1.0.1", + "map-obj": "^1.0.0" } }, "caseless": { @@ -649,10 +649,10 @@ "resolved": "https://registry.npmjs.org/catbox/-/catbox-10.0.2.tgz", "integrity": "sha512-cTQTQeKMhWHU0lX8CADE3g1koGJu+AlcWFzAjMX/8P+XbkScGYw3tJsQpe2Oh8q68vOQbOLacz9k+6V/F3Z9DA==", "requires": { - "boom": "7.2.0", - "bounce": "1.2.0", - "hoek": "5.0.3", - "joi": "13.3.0" + "boom": "7.x.x", + "bounce": "1.x.x", + "hoek": "5.x.x", + "joi": "13.x.x" } }, "catbox-memory": { @@ -660,9 +660,9 @@ "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-3.1.2.tgz", "integrity": "sha512-lhWtutLVhsq3Mucxk2McxBPPibJ34WcHuWFz3xqub9u9Ve/IQYpZv3ijLhQXfQped9DXozURiaq9O3aZpP91eg==", "requires": { - "big-time": "2.0.1", - "boom": "7.2.0", - "hoek": "5.0.3" + "big-time": "2.x.x", + "boom": "7.x.x", + "hoek": "5.x.x" } }, "center-align": { @@ -672,8 +672,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -682,9 +682,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" }, "dependencies": { "ansi-styles": { @@ -693,7 +693,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "supports-color": { @@ -702,7 +702,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -731,7 +731,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -747,8 +747,8 @@ "dev": true, "optional": true, "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" }, "dependencies": { @@ -777,9 +777,9 @@ "resolved": "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.17.0.tgz", "integrity": "sha512-JQ1xvKAHh8rsnSVBjATLCjz/vQw1sWBGadxr2H69yFMwD7hShUGDwwEefdypaxroUJ/w6t1cSwilp/hRUxEW8w==", "requires": { - "browser-request": "0.3.3", - "debug": "3.1.0", - "request": "2.87.0" + "browser-request": "~0.3.0", + "debug": "^3.0.0", + "request": "^2.83.0" }, "dependencies": { "ajv": { @@ -787,10 +787,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "assert-plus": { @@ -813,9 +813,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.17" + "mime-types": "^2.1.12" }, "dependencies": { "combined-stream": { @@ -823,7 +823,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } } } @@ -838,8 +838,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "http-signature": { @@ -847,9 +847,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.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "performance-now": { @@ -862,26 +862,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "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.2", - "har-validator": "5.0.3", - "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.2", - "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", + "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" } }, "tunnel-agent": { @@ -889,7 +889,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } } } @@ -905,7 +905,7 @@ "integrity": "sha512-Ul69Vhv+L/sewD9azem9xvj6W+dW7XJ6UYust04KDEYQwyCb9M3ZkUjS7udFNSdvnYvbokBYDoXQXUg0P4DN5g==", "dev": true, "requires": { - "hoek": "5.0.3" + "hoek": "5.x.x" } }, "code-point-at": { @@ -920,7 +920,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -940,7 +940,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": { @@ -954,15 +954,15 @@ "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", "dev": true, "requires": { - "commander": "2.11.0", - "detective": "4.7.1", - "glob": "5.0.15", - "graceful-fs": "4.1.11", - "iconv-lite": "0.4.23", - "mkdirp": "0.5.1", - "private": "0.1.8", - "q": "1.5.1", - "recast": "0.11.23" + "commander": "^2.5.0", + "detective": "^4.3.1", + "glob": "^5.0.15", + "graceful-fs": "^4.1.2", + "iconv-lite": "^0.4.5", + "mkdirp": "^0.5.0", + "private": "^0.1.6", + "q": "^1.1.2", + "recast": "^0.11.17" }, "dependencies": { "glob": { @@ -971,11 +971,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": 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" } } } @@ -986,7 +986,7 @@ "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": ">= 1.33.0 < 2" }, "dependencies": { "mime-db": { @@ -1003,13 +1003,13 @@ "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "bytes": "3.0.0", - "compressible": "2.0.13", + "compressible": "~2.0.13", "debug": "2.6.9", - "on-headers": "1.0.1", + "on-headers": "~1.0.1", "safe-buffer": "5.1.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -1040,9 +1040,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.6", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "readable-stream": { @@ -1050,13 +1050,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "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.2", - "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": { @@ -1064,7 +1064,7 @@ "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.2" + "safe-buffer": "~5.1.0" } } } @@ -1075,10 +1075,10 @@ "integrity": "sha1-0c0pmU47e8P2kwD4f1vCZcUzXlA=", "dev": true, "requires": { - "alce": "1.2.0", - "boom": "3.2.2", - "hoek": "4.2.0", - "yargs": "4.8.1" + "alce": "1.x.x", + "boom": "3.x.x", + "hoek": "4.x.x", + "yargs": "4.x.x" }, "dependencies": { "alce": { @@ -1087,8 +1087,8 @@ "integrity": "sha1-qL4trKrEJJRhLxjcCdtpHz3qSqs=", "dev": true, "requires": { - "esprima": "1.2.5", - "estraverse": "1.9.3" + "esprima": "^1.2.0", + "estraverse": "^1.5.0" } }, "ansi-regex": { @@ -1103,7 +1103,7 @@ "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "builtin-modules": { @@ -1124,9 +1124,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" } }, "code-point-at": { @@ -1147,7 +1147,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "esprima": { @@ -1168,8 +1168,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" } }, "get-caller-file": { @@ -1214,7 +1214,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -1223,7 +1223,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-utf8": { @@ -1238,7 +1238,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -1247,11 +1247,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" } }, "lodash.assign": { @@ -1266,10 +1266,10 @@ "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", - "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" } }, "number-is-nan": { @@ -1284,7 +1284,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "parse-json": { @@ -1293,7 +1293,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1302,7 +1302,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -1311,9 +1311,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" } }, "pify": { @@ -1334,7 +1334,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "read-pkg": { @@ -1343,9 +1343,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": { @@ -1354,8 +1354,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" } }, "require-directory": { @@ -1388,7 +1388,7 @@ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -1409,9 +1409,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": { @@ -1420,7 +1420,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -1429,7 +1429,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "validate-npm-package-license": { @@ -1438,8 +1438,8 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "which-module": { @@ -1460,8 +1460,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "y18n": { @@ -1476,20 +1476,20 @@ "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", "dev": true, "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "lodash.assign": "4.2.0", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.1" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" } }, "yargs-parser": { @@ -1498,8 +1498,8 @@ "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", "dev": true, "requires": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" } } } @@ -1515,7 +1515,7 @@ "resolved": "https://registry.npmjs.org/content/-/content-4.0.5.tgz", "integrity": "sha512-wDP6CTWDpwCf791fNxlCCkZGRkrNzSEU/8ju9Hnr3Uc5mF/gFR5W+fcoGm6zUSlVPdSXYn5pCbySADKj7YM4Cg==", "requires": { - "boom": "7.2.0" + "boom": "7.x.x" } }, "content-disposition": { @@ -1569,9 +1569,9 @@ "integrity": "sha512-7RJSTHf8cmeS07oB90LB1Kx7Yxbz/WQJOq9YEKpKJ6Eamca4ovXczMoZs6DlEu01j6DUgW6Z7zQpMxvYaOxskQ==", "dev": true, "requires": { - "aproba": "1.2.0", - "base64url": "3.0.0", - "crypto-lite": "0.2.0" + "aproba": "^1.0.1", + "base64url": "^3.0.0", + "crypto-lite": "^0.2.0" }, "dependencies": { "base64url": { @@ -1594,7 +1594,7 @@ "integrity": "sha512-hAbNT/U/cLMUrFZ9eJjYyjUhIXVfQXTAPxFt9hzycj0Ut45MSznsrvS4aZK46d6ckGn555xmH3XzHui9GLGOXQ==", "dev": true, "requires": { - "extend": "3.0.1", + "extend": "^3.0.0", "pouchdb-plugin-error": "4.0.0" } }, @@ -1610,10 +1610,10 @@ "integrity": "sha512-Gw1rdUDjOWqKl9HhlaSlQy3D6AFKGlCA7Q6qPXlKx2Q9qVjvhl6a4Dg90npNU3XUoo1bbSVIzcHvbX9JYfug8w==", "dev": true, "requires": { - "extend": "3.0.1", - "header-case-normalizer": "1.0.3", - "is-empty": "1.2.0", - "pouchdb-promise": "6.4.3", + "extend": "^3.0.0", + "header-case-normalizer": "^1.0.3", + "is-empty": "^1.2.0", + "pouchdb-promise": "^6.4.1", "random-uuid-v4": "0.0.6" } }, @@ -1625,8 +1625,8 @@ "requires": { "couchdb-eval": "4.0.0", "couchdb-resp-completer": "4.0.0", - "extend": "3.0.1", - "is-empty": "1.2.0", + "extend": "^3.0.0", + "is-empty": "^1.2.0", "pouchdb-plugin-error": "4.0.0" } }, @@ -1636,8 +1636,8 @@ "integrity": "sha512-mIL7A68ONhb8k43mpwN+pKr0ZnoEm1MHGux8mWN3SL7pl2J2Xk3Gf/kVkyY0PuHtEW+GVY7715PbiXdt7Hn35Q==", "dev": true, "requires": { - "extend": "3.0.1", - "is-empty": "1.2.0", + "extend": "^3.0.0", + "is-empty": "^1.2.0", "pouchdb-plugin-error": "4.0.0" } }, @@ -1647,9 +1647,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -1657,7 +1657,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.1.tgz", "integrity": "sha512-YuQUPbcOmaZsdvxJZ25DCA1W+lLIRoPJKBDKin+St1RCYEERSfoe1d25B1MvWNHN3e8SpFSVsqYvEUjp8J9H2w==", "requires": { - "boom": "7.2.0" + "boom": "7.x.x" } }, "crypto-lite": { @@ -1676,7 +1676,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" }, "dependencies": { "assert-plus": { @@ -1707,7 +1707,7 @@ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "deep-extend": { @@ -1734,7 +1734,7 @@ "dev": true, "optional": true, "requires": { - "abstract-leveldown": "4.0.3" + "abstract-leveldown": "~4.0.0" } }, "defined": { @@ -1749,13 +1749,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": { @@ -1799,8 +1799,8 @@ "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, "requires": { - "acorn": "5.5.3", - "defined": "1.0.0" + "acorn": "^5.2.1", + "defined": "^1.0.0" } }, "diff": { @@ -1815,7 +1815,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "double-ended-queue": { @@ -1830,7 +1830,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -1852,10 +1852,10 @@ "dev": true, "optional": true, "requires": { - "abstract-leveldown": "4.0.3", - "level-codec": "8.0.0", - "level-errors": "1.1.2", - "xtend": "4.0.1" + "abstract-leveldown": "^4.0.0", + "level-codec": "^8.0.0", + "level-errors": "^1.0.4", + "xtend": "^4.0.1" } }, "end-of-stream": { @@ -1864,7 +1864,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "end-stream": { @@ -1874,7 +1874,7 @@ "dev": true, "optional": true, "requires": { - "write-stream": "0.4.3" + "write-stream": "~0.4.3" } }, "equals": { @@ -1883,7 +1883,7 @@ "integrity": "sha1-ISBi3eXhpRDZVfE1mO/MamIbas4=", "dev": true, "requires": { - "jkroso-type": "1.1.1" + "jkroso-type": "1" } }, "errno": { @@ -1892,7 +1892,7 @@ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "errs": { @@ -1906,9 +1906,9 @@ "integrity": "sha1-rZ+l3xrjTz8x4SEbWBiy1RB439E=", "dev": true, "requires": { - "esprima-fb": "3001.1.0-dev-harmony-fb", - "jstransform": "3.0.0", - "through": "2.3.8" + "esprima-fb": "~3001.0001.0000-dev-harmony-fb", + "jstransform": "~3.0.0", + "through": "~2.3.4" } }, "es6-promise": { @@ -1921,7 +1921,7 @@ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" } }, "escape-html": { @@ -1941,44 +1941,44 @@ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.4.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.5.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.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.5.0", - "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": { "ajv": { @@ -1987,10 +1987,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "fast-deep-equal": { @@ -2013,11 +2013,11 @@ "integrity": "sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ==", "dev": true, "requires": { - "hapi-capitalize-modules": "1.1.6", - "hapi-for-you": "1.0.0", - "hapi-no-var": "1.0.1", - "hapi-scope-start": "2.1.1", - "no-arrowception": "1.0.0" + "hapi-capitalize-modules": "1.x.x", + "hapi-for-you": "1.x.x", + "hapi-no-var": "1.x.x", + "hapi-scope-start": "2.x.x", + "no-arrowception": "1.x.x" } }, "eslint-scope": { @@ -2026,8 +2026,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { @@ -2048,8 +2048,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" } }, "esprima-fb": { @@ -2064,7 +2064,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -2073,7 +2073,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -2111,36 +2111,36 @@ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "accepts": "1.3.5", + "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.2", - "encodeurl": "1.0.2", - "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.1", "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.3", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -2166,24 +2166,24 @@ "integrity": "sha512-MRykfx5TU9GTvW5H8qnjoNwF9MrDZrQooJ5Po01kRHXFd7UUKYMVskdBNxI8o2xO5go84XpI6K9UfRm2BPwCyA==", "dev": true, "requires": { - "basic-auth": "1.1.0", - "body-parser": "1.18.2", - "compression": "1.7.2", - "cookie-parser": "1.4.3", - "denodeify": "1.2.1", - "express": "4.16.3", - "extend": "3.0.1", - "header-case-normalizer": "1.0.3", - "mkdirp": "0.5.1", - "multiparty": "4.1.4", - "on-finished": "2.3.0", - "pouchdb-all-dbs": "1.0.2", + "basic-auth": "^1.1.0", + "body-parser": "^1.16.1", + "compression": "^1.6.2", + "cookie-parser": "^1.4.3", + "denodeify": "^1.2.1", + "express": "^4.14.1", + "extend": "^3.0.0", + "header-case-normalizer": "^1.0.3", + "mkdirp": "^0.5.0", + "multiparty": "^4.1.3", + "on-finished": "^2.3.0", + "pouchdb-all-dbs": "^1.0.2", "pouchdb-auth": "4.0.0", - "pouchdb-collections": "6.4.3", - "pouchdb-fauxton": "0.0.6", - "pouchdb-find": "6.4.3", + "pouchdb-collections": "^6.4.1", + "pouchdb-fauxton": "^0.0.6", + "pouchdb-find": "^6.4.1", "pouchdb-list": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-replicator": "4.0.0", "pouchdb-rewrite": "4.0.0", "pouchdb-security": "4.0.0", @@ -2193,9 +2193,9 @@ "pouchdb-validation": "4.0.0", "pouchdb-vhost": "4.0.0", "pouchdb-wrappers": "4.0.0", - "raw-body": "2.3.2", - "sanitize-filename": "1.6.1", - "uuid": "3.2.1" + "raw-body": "^2.2.0", + "sanitize-filename": "^1.6.1", + "uuid": "^3.0.1" } }, "extend": { @@ -2209,9 +2209,9 @@ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.23", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extract-zip": { @@ -2259,10 +2259,10 @@ "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", "dev": true, "requires": { - "acorn": "1.2.2", - "foreach": "2.0.5", + "acorn": "^1.0.3", + "foreach": "^2.0.5", "isarray": "0.0.1", - "object-keys": "1.0.11" + "object-keys": "^1.0.6" }, "dependencies": { "acorn": { @@ -2306,7 +2306,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "figures": { @@ -2315,7 +2315,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -2324,8 +2324,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" } }, "finalhandler": { @@ -2335,12 +2335,12 @@ "dev": true, "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.4.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -2366,10 +2366,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" } }, "foreach": { @@ -2389,9 +2389,9 @@ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.17" + "mime-types": "^2.1.12" }, "dependencies": { "combined-stream": { @@ -2400,7 +2400,7 @@ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } } } @@ -2446,14 +2446,14 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "aproba": "1.2.0", - "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": { @@ -2462,7 +2462,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -2471,9 +2471,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": { @@ -2482,7 +2482,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -2497,7 +2497,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-folder-size": { @@ -2506,8 +2506,8 @@ "integrity": "sha1-gC+kIIQ03nEgUYKxWrfxNSCI5YA=", "dev": true, "requires": { - "async": "1.5.2", - "gar": "1.0.3" + "async": "^1.4.2", + "gar": "^1.0.2" } }, "get-stdin": { @@ -2521,7 +2521,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" }, "dependencies": { "assert-plus": { @@ -2542,12 +2542,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" }, "dependencies": { "balanced-match": { @@ -2560,7 +2560,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" } }, @@ -2579,8 +2579,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": { @@ -2593,7 +2593,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": { @@ -2601,7 +2601,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -2628,12 +2628,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" } }, "graceful-fs": { @@ -2648,10 +2648,10 @@ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "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": { "source-map": { @@ -2660,7 +2660,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -2670,23 +2670,23 @@ "resolved": "https://registry.npmjs.org/hapi/-/hapi-17.5.0.tgz", "integrity": "sha512-/btV0jpXb8ldoywsAt+FZg3qUVCx2ZjeA29Mluo3w/gcCJtzUnZfGALS8xR3d2ssVySm7JXVqeepy37Z02gJLQ==", "requires": { - "accept": "3.0.2", - "ammo": "3.0.1", - "boom": "7.2.0", - "bounce": "1.2.0", - "call": "5.0.1", - "catbox": "10.0.2", - "catbox-memory": "3.1.2", - "heavy": "6.1.0", - "hoek": "5.0.3", - "joi": "13.3.0", - "mimos": "4.0.0", - "podium": "3.1.2", - "shot": "4.0.5", - "statehood": "6.0.6", - "subtext": "6.0.7", - "teamwork": "3.0.1", - "topo": "3.0.0" + "accept": "3.x.x", + "ammo": "3.x.x", + "boom": "7.x.x", + "bounce": "1.x.x", + "call": "5.x.x", + "catbox": "10.x.x", + "catbox-memory": "3.x.x", + "heavy": "6.x.x", + "hoek": "5.x.x", + "joi": "13.x.x", + "mimos": "4.x.x", + "podium": "3.x.x", + "shot": "4.x.x", + "statehood": "6.x.x", + "subtext": "6.x.x", + "teamwork": "3.x.x", + "topo": "3.x.x" } }, "hapi-capitalize-modules": { @@ -2725,8 +2725,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" }, "dependencies": { "ajv": { @@ -2735,10 +2735,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "fast-deep-equal": { @@ -2754,7 +2754,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" }, "dependencies": { "ansi-regex": { @@ -2782,9 +2782,9 @@ "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" + "cached-constructors-x": "^1.0.0", + "to-object-x": "^1.5.0", + "to-property-key-x": "^2.0.2" } }, "has-symbol-support-x": { @@ -2799,7 +2799,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -2814,10 +2814,10 @@ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" }, "dependencies": { "boom": { @@ -2826,7 +2826,7 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "cryptiles": { @@ -2835,7 +2835,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -2844,7 +2844,7 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -2861,7 +2861,7 @@ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -2877,9 +2877,9 @@ "resolved": "https://registry.npmjs.org/heavy/-/heavy-6.1.0.tgz", "integrity": "sha512-TKS9DC9NOTGulHQI31Lx+bmeWmNOstbJbGMiN3pX6bF+Zc2GKSpbbym4oasNnB6yPGkqJ9TQXXYDGohqNSJRxA==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3", - "joi": "13.3.0" + "boom": "7.x.x", + "hoek": "5.x.x", + "joi": "13.x.x" } }, "hoek": { @@ -2893,10 +2893,10 @@ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.4.0" + "statuses": ">= 1.4.0 < 2" } }, "http-pouchdb": { @@ -2905,10 +2905,10 @@ "integrity": "sha512-zyl9VD5nzaFlmjXHcBEhhEtk3ZsXUxTBK8vbmeHvqEo4/G0tnWqMFs3STpR6h/8XBFXonu9znBrW/M96eJKWLA==", "dev": true, "requires": { - "bluebird": "3.5.1", - "extend": "3.0.1", + "bluebird": "^3.4.7", + "extend": "^3.0.0", "pouchdb-wrappers": "4.0.0", - "xhr2": "0.1.4" + "xhr2": "^0.1.3" } }, "http-signature": { @@ -2917,9 +2917,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -2927,8 +2927,8 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" } }, "iconv-lite": { @@ -2937,7 +2937,7 @@ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ieee754": { @@ -2969,9 +2969,9 @@ "integrity": "sha1-25m8xYPrarux5I3LsZmamGBBy2s=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "minimist": "1.2.0", - "repeating": "1.1.3" + "get-stdin": "^4.0.1", + "minimist": "^1.1.0", + "repeating": "^1.1.0" }, "dependencies": { "minimist": { @@ -2987,12 +2987,12 @@ "resolved": "https://registry.npmjs.org/inert/-/inert-5.1.0.tgz", "integrity": "sha512-5rJZbezGEkBN4QrP/HEEwsQ0N+7YzqDZrvBZrE7B0CrNY6I4XKI434aL3UNLCmbI4HzPGQs7Ae/4h1tiTMJ6Wg==", "requires": { - "ammo": "3.0.1", - "boom": "7.2.0", - "bounce": "1.2.0", - "hoek": "5.0.3", - "joi": "13.3.0", - "lru-cache": "4.1.3" + "ammo": "3.x.x", + "boom": "7.x.x", + "bounce": "1.x.x", + "hoek": "5.x.x", + "joi": "13.x.x", + "lru-cache": "4.1.x" } }, "infinity-x": { @@ -3007,8 +3007,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3028,8 +3028,8 @@ "integrity": "sha1-RqYbFT3TybFiSxoAYm7bT39BTyI=", "dev": true, "requires": { - "falafel": "1.2.0", - "through2": "0.6.5" + "falafel": "^1.0.1", + "through2": "^0.6.5" } }, "inquirer": { @@ -3038,20 +3038,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.10", + "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" } }, "ipaddr.js": { @@ -3065,9 +3065,9 @@ "resolved": "https://registry.npmjs.org/iron/-/iron-5.0.4.tgz", "integrity": "sha512-7iQ5/xFMIYaNt9g2oiNiWdhrOTdRUMFaWENUd0KghxwPUhrIH8DUY8FEyLNTTzf75jaII+jMexLdY/2HfV61RQ==", "requires": { - "boom": "7.2.0", - "cryptiles": "4.1.1", - "hoek": "5.0.3" + "boom": "7.x.x", + "cryptiles": "4.x.x", + "hoek": "5.x.x" } }, "is-array-buffer-x": { @@ -3076,11 +3076,11 @@ "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==", "dev": true, "requires": { - "attempt-x": "1.1.3", - "has-to-string-tag-x": "1.4.1", - "is-object-like-x": "1.7.1", - "object-get-own-property-descriptor-x": "3.2.0", - "to-string-tag-x": "1.4.3" + "attempt-x": "^1.1.0", + "has-to-string-tag-x": "^1.4.1", + "is-object-like-x": "^1.5.1", + "object-get-own-property-descriptor-x": "^3.2.0", + "to-string-tag-x": "^1.4.1" } }, "is-buffer": { @@ -3107,7 +3107,7 @@ "integrity": "sha512-RWjusR6LXAhGa0Vus7aD1rwJuJwdJsvG3daAVMDvOAgvGuGm4eilNgoSuXhpv2/2qpLDvioAKTNb3t3XYidCNg==", "dev": true, "requires": { - "to-boolean-x": "1.0.3" + "to-boolean-x": "^1.0.2" } }, "is-finite": { @@ -3116,7 +3116,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-finite-x": { @@ -3125,8 +3125,8 @@ "integrity": "sha512-wdSI5zk/Pl21HzGcLWFoFzuDa8gsgcqhwZGAZryL2eU7RKf7+g+q4jL2gGItrBs/YtspkjOrJ4JxXNZqquoAWA==", "dev": true, "requires": { - "infinity-x": "1.0.2", - "is-nan-x": "1.0.3" + "infinity-x": "^1.0.1", + "is-nan-x": "^1.0.2" } }, "is-fullwidth-code-point": { @@ -3141,14 +3141,14 @@ "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==", "dev": true, "requires": { - "attempt-x": "1.1.3", - "has-to-string-tag-x": "1.4.1", - "is-falsey-x": "1.0.3", - "is-primitive": "2.0.0", - "normalize-space-x": "3.0.0", - "replace-comments-x": "2.0.0", - "to-boolean-x": "1.0.3", - "to-string-tag-x": "1.4.3" + "attempt-x": "^1.1.1", + "has-to-string-tag-x": "^1.4.1", + "is-falsey-x": "^1.0.1", + "is-primitive": "^2.0.0", + "normalize-space-x": "^3.0.0", + "replace-comments-x": "^2.0.0", + "to-boolean-x": "^1.0.1", + "to-string-tag-x": "^1.4.2" }, "dependencies": { "is-primitive": { @@ -3165,11 +3165,11 @@ "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==", "dev": true, "requires": { - "math-clamp-x": "1.2.0", - "max-safe-integer": "1.0.1", - "to-integer-x": "3.0.0", - "to-number-x": "2.0.0", - "to-string-symbols-supported-x": "1.0.2" + "math-clamp-x": "^1.2.0", + "max-safe-integer": "^1.0.1", + "to-integer-x": "^3.0.0", + "to-number-x": "^2.0.0", + "to-string-symbols-supported-x": "^1.0.0" } }, "is-my-json-valid": { @@ -3177,10 +3177,10 @@ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-nan-x": { @@ -3195,8 +3195,8 @@ "integrity": "sha512-9aDY7ir7IGb5HlgqL+b38v2YMxf8S7MEHHxjHGzUhijg2crq47RKdxL37bS6dU0VN87wy2IBZP4akgQtIXmyvg==", "dev": true, "requires": { - "lodash.isnull": "3.0.0", - "validate.io-undefined": "1.0.3" + "lodash.isnull": "^3.0.0", + "validate.io-undefined": "^1.0.3" } }, "is-object-like-x": { @@ -3205,8 +3205,8 @@ "integrity": "sha512-89nz+kESAW2Y7udq+PdRX/dZnRN2WP1b19Gdv4OYE1Xjoekn1xf31l0ZPzT40qdPD7I2nveNFm9rxxI0vmnGHA==", "dev": true, "requires": { - "is-function-x": "3.3.0", - "is-primitive": "3.0.0" + "is-function-x": "^3.3.0", + "is-primitive": "^3.0.0" } }, "is-path-cwd": { @@ -3221,7 +3221,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -3230,7 +3230,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-primitive": { @@ -3283,7 +3283,7 @@ "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.2.tgz", "integrity": "sha512-zfRhJn9rFSGhzU5tGZqepRSAj3+g6oTOHxMGGriWNJZzyLPUK8H7VHpqKntegnW8KLyGA9zwuNaCoopl40LTpg==", "requires": { - "punycode": "2.1.0" + "punycode": "2.x.x" } }, "isexe": { @@ -3318,9 +3318,9 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-13.3.0.tgz", "integrity": "sha512-iF6jEYVfBIoYXztYymia1JfuoVbxBNuOcwdbsdoGin9/jjhBLhonKmfTQOvePss8r8v4tU4JOcNmYPHZzKEFag==", "requires": { - "hoek": "5.0.3", - "isemail": "3.1.2", - "topo": "3.0.0" + "hoek": "5.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" } }, "js-tokens": { @@ -3334,8 +3334,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "dependencies": { "esprima": { @@ -3361,10 +3361,10 @@ "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-5.0.3.tgz", "integrity": "sha512-RCZE9RpvMG2zY+dSSQkqHxsCYaqBYlh/u2PWWRdWMvtaH718YqR73lYu4IW4cGNxJIkUnIgTMuJtp+A1tIn4+w==", "requires": { - "call-me-maybe": "1.0.1", - "debug": "3.1.0", - "js-yaml": "3.11.0", - "ono": "4.0.5" + "call-me-maybe": "^1.0.1", + "debug": "^3.1.0", + "js-yaml": "^3.11.0", + "ono": "^4.0.3" } }, "json-schema-traverse": { @@ -3378,7 +3378,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -3428,7 +3428,7 @@ "dev": true, "requires": { "base62": "0.1.1", - "esprima-fb": "3001.1.0-dev-harmony-fb", + "esprima-fb": "~3001.1.0-dev-harmony-fb", "source-map": "0.1.31" }, "dependencies": { @@ -3438,7 +3438,7 @@ "integrity": "sha1-n3BNDWnZ4TioG63267T94z0VHGE=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -3448,7 +3448,7 @@ "resolved": "https://registry.npmjs.org/keycdn/-/keycdn-0.2.0.tgz", "integrity": "sha1-J1TT5jj85uY4vXoRgYTOa0tbNGk=", "requires": { - "request": "2.55.0" + "request": "~2.55.0" }, "dependencies": { "asn1": { @@ -3476,7 +3476,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", "requires": { - "readable-stream": "1.0.34" + "readable-stream": "~1.0.26" } }, "bluebird": { @@ -3489,7 +3489,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": { @@ -3502,11 +3502,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" } }, "combined-stream": { @@ -3522,7 +3522,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" } }, "delayed-stream": { @@ -3535,9 +3535,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", "requires": { - "async": "0.9.2", - "combined-stream": "0.0.7", - "mime-types": "2.0.14" + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" } }, "har-validator": { @@ -3545,10 +3545,10 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", "requires": { - "bluebird": "2.11.0", - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.1" + "bluebird": "^2.9.30", + "chalk": "^1.0.0", + "commander": "^2.8.1", + "is-my-json-valid": "^2.12.0" } }, "hawk": { @@ -3556,10 +3556,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=", "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": { @@ -3573,7 +3573,7 @@ "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", "requires": { "asn1": "0.1.11", - "assert-plus": "0.1.5", + "assert-plus": "^0.1.5", "ctype": "0.5.3" } }, @@ -3587,7 +3587,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", "requires": { - "mime-db": "1.12.0" + "mime-db": "~1.12.0" } }, "node-uuid": { @@ -3610,24 +3610,24 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=", "requires": { - "aws-sign2": "0.5.0", - "bl": "0.9.5", - "caseless": "0.9.0", - "combined-stream": "0.0.7", - "forever-agent": "0.6.1", - "form-data": "0.2.0", - "har-validator": "1.8.0", - "hawk": "2.3.1", - "http-signature": "0.10.1", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.0.14", - "node-uuid": "1.4.8", - "oauth-sign": "0.6.0", - "qs": "2.4.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3" + "aws-sign2": "~0.5.0", + "bl": "~0.9.0", + "caseless": "~0.9.0", + "combined-stream": "~0.0.5", + "forever-agent": "~0.6.0", + "form-data": "~0.2.0", + "har-validator": "^1.4.0", + "hawk": "~2.3.0", + "http-signature": "~0.10.0", + "isstream": "~0.1.1", + "json-stringify-safe": "~5.0.0", + "mime-types": "~2.0.1", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.6.0", + "qs": "~2.4.0", + "stringstream": "~0.0.4", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.4.0" } }, "strip-ansi": { @@ -3635,7 +3635,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": { @@ -3657,7 +3657,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lab": { @@ -3666,23 +3666,23 @@ "integrity": "sha512-E5ZVmIYyW8TsCkJ6JrpgRo7ZHmyRQS16bUV8XLIydwk7YBPCpd31ZYdQ2k7GqHH0i1hW1Unaqsm/Cxr5Zux0Qg==", "dev": true, "requires": { - "bossy": "4.0.1", - "diff": "3.5.0", - "eslint": "4.19.1", - "eslint-config-hapi": "11.1.0", - "eslint-plugin-hapi": "4.1.0", - "espree": "3.5.4", - "find-rc": "3.0.1", - "handlebars": "4.0.11", - "hoek": "5.0.3", - "json-stable-stringify": "1.0.1", - "json-stringify-safe": "5.0.1", - "mkdirp": "0.5.1", - "seedrandom": "2.4.3", - "source-map": "0.6.1", - "source-map-support": "0.5.6", - "supports-color": "4.4.0", - "will-call": "1.0.1" + "bossy": "4.x.x", + "diff": "3.5.x", + "eslint": "4.19.x", + "eslint-config-hapi": "11.x.x", + "eslint-plugin-hapi": "4.x.x", + "espree": "3.5.x", + "find-rc": "3.0.x", + "handlebars": "4.x.x", + "hoek": "5.x.x", + "json-stable-stringify": "1.x.x", + "json-stringify-safe": "5.x.x", + "mkdirp": "0.5.x", + "seedrandom": "2.4.x", + "source-map": "0.6.x", + "source-map-support": "0.5.x", + "supports-color": "4.4.x", + "will-call": "1.x.x" } }, "lazy-cache": { @@ -3699,8 +3699,8 @@ "dev": true, "optional": true, "requires": { - "level-packager": "2.1.1", - "leveldown": "2.1.1" + "level-packager": "^2.0.2", + "leveldown": "^2.1.1" } }, "level-codec": { @@ -3716,7 +3716,7 @@ "integrity": "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==", "dev": true, "requires": { - "errno": "0.1.7" + "errno": "~0.1.1" } }, "level-iterator-stream": { @@ -3725,9 +3725,9 @@ "integrity": "sha512-TWOYw8HR5mhj6xwoVLo0yu26RPL6v28KgvhK1kY1CJf9LyL+rJXjx99zhORTYhN9ysOBIH+iaxAiqRteA+C1/g==", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "inherits": "^2.0.1", + "readable-stream": "^2.0.5", + "xtend": "^4.0.0" }, "dependencies": { "readable-stream": { @@ -3736,13 +3736,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.2", - "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": { @@ -3751,7 +3751,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -3763,8 +3763,8 @@ "dev": true, "optional": true, "requires": { - "encoding-down": "4.0.1", - "levelup": "2.0.2" + "encoding-down": "~4.0.0", + "levelup": "^2.0.0" } }, "level-write-stream": { @@ -3774,7 +3774,7 @@ "dev": true, "optional": true, "requires": { - "end-stream": "0.1.0" + "end-stream": "~0.1.0" } }, "leveldown": { @@ -3783,11 +3783,11 @@ "integrity": "sha512-JNMCTSchq1YtQLMGePmT07UE7hIIYR4GHpZI7+nUXbM9XgNtRAwcBGhnyJyITwpTILTkUcNPBKZ9lZmTUj2E3g==", "dev": true, "requires": { - "abstract-leveldown": "3.0.0", - "bindings": "1.3.0", - "fast-future": "1.0.2", - "nan": "2.8.0", - "prebuild-install": "2.5.3" + "abstract-leveldown": "~3.0.0", + "bindings": "~1.3.0", + "fast-future": "~1.0.2", + "nan": "~2.8.0", + "prebuild-install": "^2.1.0" }, "dependencies": { "abstract-leveldown": { @@ -3796,7 +3796,7 @@ "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==", "dev": true, "requires": { - "xtend": "4.0.1" + "xtend": "~4.0.0" } } } @@ -3808,10 +3808,10 @@ "dev": true, "optional": true, "requires": { - "deferred-leveldown": "3.0.0", - "level-errors": "1.1.2", - "level-iterator-stream": "2.0.0", - "xtend": "4.0.1" + "deferred-leveldown": "~3.0.0", + "level-errors": "~1.1.0", + "level-iterator-stream": "~2.0.0", + "xtend": "~4.0.0" } }, "levn": { @@ -3820,8 +3820,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" } }, "lie": { @@ -3830,10 +3830,10 @@ "integrity": "sha1-vHrh6+fxyN45r9zU94kHa0ew9jQ=", "dev": true, "requires": { - "es3ify": "0.2.2", - "immediate": "3.0.6", - "inline-process-browser": "1.0.0", - "unreachable-branch-transform": "0.3.0" + "es3ify": "^0.2.2", + "immediate": "~3.0.5", + "inline-process-browser": "^1.0.0", + "unreachable-branch-transform": "^0.3.0" }, "dependencies": { "base62": { @@ -3848,9 +3848,9 @@ "integrity": "sha1-Xa4+ZQ5b42hLiAZlE9Uo0JJimGI=", "dev": true, "requires": { - "esprima": "2.7.3", - "jstransform": "11.0.3", - "through": "2.3.8" + "esprima": "^2.7.1", + "jstransform": "~11.0.0", + "through": "~2.3.4" } }, "esprima": { @@ -3865,11 +3865,11 @@ "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", "dev": true, "requires": { - "base62": "1.2.8", - "commoner": "0.10.8", - "esprima-fb": "15001.1.0-dev-harmony-fb", - "object-assign": "2.1.1", - "source-map": "0.4.4" + "base62": "^1.1.0", + "commoner": "^0.10.1", + "esprima-fb": "^15001.1.0-dev-harmony-fb", + "object-assign": "^2.0.0", + "source-map": "^0.4.2" }, "dependencies": { "esprima-fb": { @@ -3892,7 +3892,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -3924,8 +3924,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "ltgt": { @@ -3946,7 +3946,7 @@ "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==", "dev": true, "requires": { - "to-number-x": "2.0.0" + "to-number-x": "^2.0.0" } }, "math-sign-x": { @@ -3955,8 +3955,8 @@ "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==", "dev": true, "requires": { - "is-nan-x": "1.0.3", - "to-number-x": "2.0.0" + "is-nan-x": "^1.0.1", + "to-number-x": "^2.0.0" } }, "max-safe-integer": { @@ -3978,10 +3978,10 @@ "dev": true, "requires": { "abstract-leveldown": "2.4.1", - "functional-red-black-tree": "1.0.1", - "immediate": "3.2.3", - "inherits": "2.0.3", - "ltgt": "2.1.3" + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.1.3" }, "dependencies": { "abstract-leveldown": { @@ -3990,7 +3990,7 @@ "integrity": "sha1-s7/tuITraToSd18MVenwpCDM7mQ=", "dev": true, "requires": { - "xtend": "4.0.1" + "xtend": "~4.0.0" } }, "immediate": { @@ -4013,10 +4013,10 @@ "integrity": "sha1-j1MKjs9dQNP0tN+Tw0cpAPuiqPE=", "dev": true, "requires": { - "camelcase-keys": "1.0.0", - "indent-string": "1.2.2", - "minimist": "1.2.0", - "object-assign": "1.0.0" + "camelcase-keys": "^1.0.0", + "indent-string": "^1.1.0", + "minimist": "^1.1.0", + "object-assign": "^1.0.0" }, "dependencies": { "minimist": { @@ -4060,7 +4060,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": { @@ -4080,8 +4080,8 @@ "resolved": "https://registry.npmjs.org/mimos/-/mimos-4.0.0.tgz", "integrity": "sha512-JvlvRLqGIlk+AYypWrbrDmhsM+6JVx/xBM5S3AMwTBz1trPCEoPN/swO2L4Wu653fL7oJdgk8DMQyG/Gq3JkZg==", "requires": { - "hoek": "5.0.3", - "mime-db": "1.30.0" + "hoek": "5.x.x", + "mime-db": "1.x.x" } }, "minimatch": { @@ -4090,7 +4090,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -4119,7 +4119,7 @@ "integrity": "sha1-TJbcvcEeP3kX4WFeZAtLUCK+ZP0=", "dev": true, "requires": { - "fd-slicer": "1.0.1", + "fd-slicer": "~1.0.1", "safe-buffer": "5.1.2" } }, @@ -4146,11 +4146,11 @@ "resolved": "https://registry.npmjs.org/nano/-/nano-6.4.4.tgz", "integrity": "sha512-7sldMrZI1ZH8QE29PnzohxLfR67WNVzMKLa7EMl3x9Hr+0G+YpOUCq50qZ9G66APrjcb0Of2BTOZLNBCutZGag==", "requires": { - "cloudant-follow": "0.17.0", - "debug": "2.6.9", - "errs": "0.3.2", - "lodash.isempty": "4.4.0", - "request": "2.87.0" + "cloudant-follow": "~0.17.0", + "debug": "^2.2.0", + "errs": "^0.3.2", + "lodash.isempty": "^4.4.0", + "request": "^2.85.0" }, "dependencies": { "ajv": { @@ -4158,10 +4158,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "assert-plus": { @@ -4192,9 +4192,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.17" + "mime-types": "^2.1.12" }, "dependencies": { "combined-stream": { @@ -4202,7 +4202,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } } } @@ -4217,8 +4217,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "http-signature": { @@ -4226,9 +4226,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.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "performance-now": { @@ -4241,26 +4241,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "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.2", - "har-validator": "5.0.3", - "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.2", - "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", + "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" } }, "tunnel-agent": { @@ -4268,7 +4268,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } } } @@ -4295,8 +4295,8 @@ "resolved": "https://registry.npmjs.org/nigel/-/nigel-3.0.1.tgz", "integrity": "sha512-kCVtUG9JyD//tsYrZY+/Y+2gUrANVSba8y23QkM5Znx0FOxlnl9Z4OVPBODmstKWTOvigfTO+Va1VPOu3eWSOQ==", "requires": { - "hoek": "5.0.3", - "vise": "3.0.0" + "hoek": "5.x.x", + "vise": "3.x.x" } }, "no-arrowception": { @@ -4311,7 +4311,7 @@ "integrity": "sha512-pUlswqpHQ7zGPI9lGjZ4XDNIEUDbHxsltfIRb7dTnYdhgHWHOcB0MLZKLoCz6UMcGzSPG5wGl1HODZVQAUsH6w==", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.4.1" } }, "node-fetch": { @@ -4325,8 +4325,8 @@ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "dev": true, "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" + "chalk": "~0.4.0", + "underscore": "~1.6.0" }, "dependencies": { "ansi-styles": { @@ -4341,9 +4341,9 @@ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, "strip-ansi": { @@ -4373,9 +4373,9 @@ "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "trim-x": "3.0.0", - "white-space-x": "3.0.1" + "cached-constructors-x": "^1.0.0", + "trim-x": "^3.0.0", + "white-space-x": "^3.0.0" } }, "npmlog": { @@ -4384,10 +4384,10 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": 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" } }, "number-is-nan": { @@ -4413,16 +4413,16 @@ "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==", "dev": true, "requires": { - "attempt-x": "1.1.3", - "has-own-property-x": "3.2.0", - "has-symbol-support-x": "1.4.2", - "is-falsey-x": "1.0.3", - "is-index-x": "1.1.0", - "is-primitive": "2.0.0", - "is-string": "1.0.4", - "property-is-enumerable-x": "1.1.0", - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" + "attempt-x": "^1.1.0", + "has-own-property-x": "^3.1.1", + "has-symbol-support-x": "^1.4.1", + "is-falsey-x": "^1.0.0", + "is-index-x": "^1.0.0", + "is-primitive": "^2.0.0", + "is-string": "^1.0.4", + "property-is-enumerable-x": "^1.1.0", + "to-object-x": "^1.4.1", + "to-property-key-x": "^2.0.1" }, "dependencies": { "is-primitive": { @@ -4460,7 +4460,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -4469,7 +4469,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "ono": { @@ -4477,7 +4477,7 @@ "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.5.tgz", "integrity": "sha512-ZVNuV9kJbr/2tWs83I2snrYo+WIS0DISF/xUfX9p9b6GyDD6F5N9PzHjW+p/dep6IGwSYylf1HCub5I/nM0R5Q==", "requires": { - "format-util": "1.0.3" + "format-util": "^1.0.3" } }, "optimist": { @@ -4486,8 +4486,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "wordwrap": { @@ -4504,12 +4504,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" } }, "os-homedir": { @@ -4530,10 +4530,10 @@ "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "nan-x": "1.0.2", - "to-string-x": "1.4.5", - "trim-left-x": "3.0.0" + "cached-constructors-x": "^1.0.0", + "nan-x": "^1.0.0", + "to-string-x": "^1.4.2", + "trim-left-x": "^3.0.0" } }, "parseurl": { @@ -4576,11 +4576,11 @@ "resolved": "https://registry.npmjs.org/pez/-/pez-4.0.2.tgz", "integrity": "sha512-HuPxmGxHsEFPWhdkwBs2gIrHhFqktIxMtudISTFN95RQ85ZZAOl8Ki6u3nnN/X8OUaGlIGldk/l8p2IR4/i76w==", "requires": { - "b64": "4.0.0", - "boom": "7.2.0", - "content": "4.0.5", - "hoek": "5.0.3", - "nigel": "3.0.1" + "b64": "4.x.x", + "boom": "7.x.x", + "content": "4.x.x", + "hoek": "5.x.x", + "nigel": "3.x.x" } }, "pify": { @@ -4601,7 +4601,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pluralize": { @@ -4615,8 +4615,8 @@ "resolved": "https://registry.npmjs.org/podium/-/podium-3.1.2.tgz", "integrity": "sha512-18VrjJAduIdPv7d9zWsfmKxTj3cQTYC5Pv5gtKxcWujYBpGbV+mhNSPYhlHW5xeWoazYyKfB9FEsPT12r5rY1A==", "requires": { - "hoek": "5.0.3", - "joi": "13.3.0" + "hoek": "5.x.x", + "joi": "13.x.x" } }, "pouchdb-abstract-mapreduce": { @@ -4671,13 +4671,13 @@ "dev": true, "optional": 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.2", - "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": { @@ -4687,7 +4687,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "through2": { @@ -4697,8 +4697,8 @@ "dev": true, "optional": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } } } @@ -4732,7 +4732,7 @@ "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==", "dev": true, "requires": { - "xtend": "4.0.1" + "xtend": "~4.0.0" } }, "buffer-from": { @@ -4741,7 +4741,7 @@ "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", "dev": true, "requires": { - "is-array-buffer-x": "1.7.0" + "is-array-buffer-x": "^1.0.13" } }, "deferred-leveldown": { @@ -4750,7 +4750,7 @@ "integrity": "sha512-8c2Hv+vIwKNc7qqy4zE3t5DIsln+FQnudcyjLYstHwLFg7XnXZT/H8gQb8lj6xi8xqGM0Bz633ZWcCkonycBTA==", "dev": true, "requires": { - "abstract-leveldown": "3.0.0" + "abstract-leveldown": "~3.0.0" } }, "levelup": { @@ -4759,10 +4759,10 @@ "integrity": "sha1-PckbPmMtN8nlRiOchkEYsATJ+GA=", "dev": true, "requires": { - "deferred-leveldown": "2.0.3", - "level-errors": "1.1.2", - "level-iterator-stream": "2.0.0", - "xtend": "4.0.1" + "deferred-leveldown": "~2.0.2", + "level-errors": "~1.1.0", + "level-iterator-stream": "~2.0.0", + "xtend": "~4.0.0" } }, "readable-stream": { @@ -4771,13 +4771,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.2", - "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": { @@ -4786,7 +4786,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "through2": { @@ -4795,8 +4795,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } } } @@ -4875,7 +4875,7 @@ "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", "dev": true, "requires": { - "is-array-buffer-x": "1.7.0" + "is-array-buffer-x": "^1.0.13" } } } @@ -4887,10 +4887,10 @@ "dev": true, "requires": { "argsarray": "0.0.1", - "es3ify": "0.1.4", - "inherits": "2.0.3", + "es3ify": "^0.1.3", + "inherits": "~2.0.1", "pouchdb-promise": "5.4.3", - "tiny-queue": "0.2.1" + "tiny-queue": "^0.2.0" }, "dependencies": { "pouchdb-promise": { @@ -4910,18 +4910,18 @@ "integrity": "sha512-wn3zjNmtU89sRH5x1alfdOA2VC0YHRnTlJjHFQFdA/9BNi5uozTQbtywsJH+l1vzcmeq0gAvaVsu8plmdIAprQ==", "dev": true, "requires": { - "base64url": "1.0.6", - "couchdb-calculate-session-id": "1.1.3", - "crypto-lite": "0.1.0", + "base64url": "^1.0.5", + "couchdb-calculate-session-id": "^1.1.0", + "crypto-lite": "^0.1.0", "pouchdb-bulkdocs-wrapper": "4.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-req-http-query": "4.0.0", "pouchdb-system-db": "4.0.0", "pouchdb-validation": "4.0.0", "pouchdb-wrappers": "4.0.0", - "promise-nodify": "1.0.2", - "secure-random": "1.1.1" + "promise-nodify": "^1.0.2", + "secure-random": "^1.1.1" } }, "pouchdb-binary-utils": { @@ -4939,7 +4939,7 @@ "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", "dev": true, "requires": { - "is-array-buffer-x": "1.7.0" + "is-array-buffer-x": "^1.0.13" } } } @@ -4950,7 +4950,7 @@ "integrity": "sha512-Xn64OmSmM5bbwuT5o84vCyZ71DYLj65tcvbjEA037llbKA1j+QQQmbw0Xi0YS/pXpV5k6qzR43LE6fN3/7f7Ig==", "dev": true, "requires": { - "pouchdb-promise": "6.4.3" + "pouchdb-promise": "^6.4.1" } }, "pouchdb-changes-filter": { @@ -5076,11 +5076,11 @@ "requires": { "couchdb-objects": "4.0.0", "couchdb-render": "4.0.0", - "extend": "3.0.1", + "extend": "^3.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-req-http-query": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-mapreduce": { @@ -5143,7 +5143,7 @@ "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", "dev": true, "requires": { - "immediate": "3.0.6" + "immediate": "~3.0.5" } } } @@ -5168,13 +5168,13 @@ "integrity": "sha512-ZeRijwCtPl+juz8h34aGh4JA4rNXrLqyQRp+UQQYwmiJRGPthB1h3BgFDh3qB3tb8kur9fjxvRam0GDH4w8WGw==", "dev": true, "requires": { - "equals": "1.0.5", - "extend": "3.0.1", + "equals": "^1.0.5", + "extend": "^3.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-system-db": "4.0.0", "pouchdb-validation": "4.0.0", - "promise-nodify": "1.0.2", + "promise-nodify": "^1.0.2", "random-uuid-v4": "0.0.6" } }, @@ -5184,11 +5184,11 @@ "integrity": "sha512-mOwY5WZCHcZJc57/reWaWSpLp3/VcFDultMYOo5/Ck9/oBwZCo0kF6nOQ1/vxozcIQaDbT/q81bQbvD2M0o5NQ==", "dev": true, "requires": { - "extend": "3.0.1", - "header-case-normalizer": "1.0.3", + "extend": "^3.0.0", + "header-case-normalizer": "^1.0.3", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", - "xmlhttprequest-cookie": "0.9.6" + "pouchdb-promise": "^6.4.1", + "xmlhttprequest-cookie": "^0.9.2" } }, "pouchdb-rewrite": { @@ -5198,11 +5198,11 @@ "dev": true, "requires": { "couchdb-objects": "4.0.0", - "extend": "3.0.1", + "extend": "^3.0.0", "pouchdb-plugin-error": "4.0.0", "pouchdb-req-http-query": "4.0.0", "pouchdb-route": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-route": { @@ -5211,7 +5211,7 @@ "integrity": "sha512-NifHoKtkXp9w3tHO4AAOHVlrpb0T3tseADpG7y1peC0mydk8Y+NHPcXKizk3K0LS5PYBOccn6JNuy/q2fpZscQ==", "dev": true, "requires": { - "extend": "3.0.1", + "extend": "^3.0.0", "pouchdb-plugin-error": "4.0.0" } }, @@ -5221,14 +5221,14 @@ "integrity": "sha512-9BrgtJQjEhA7EIfKzArVNyXbVBw2b8Tx3YKWUvfNpiW32TiYkKI6kOUPQD60oywyOBUsxavzmJXZUtxxptoVSQ==", "dev": true, "requires": { - "extend": "3.0.1", + "extend": "^3.0.0", "pouchdb-bulkdocs-wrapper": "4.0.0", "pouchdb-changeslike-wrapper": "4.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-req-http-query": "4.0.0", "pouchdb-wrappers": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-selector-core": { @@ -5247,27 +5247,27 @@ "integrity": "sha512-5v1HQfv4ndvwjpo1fD1DVXfx7Gd5/nal/mLtj8c0mQo4FGuCQyL9RYrcPRDpQZxalpr4big1PeCsapxNA5rokg==", "dev": true, "requires": { - "colors": "1.3.0", - "corser": "2.0.1", - "couchdb-log-parse": "0.0.4", - "express": "4.16.3", + "colors": "^1.0.3", + "corser": "~2.0.0", + "couchdb-log-parse": "^0.0.4", + "express": "^4.14.1", "express-pouchdb": "4.0.0", "http-pouchdb": "4.0.0", - "killable": "1.0.0", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "object-assign": "4.1.1", - "pouchdb-adapter-http": "6.4.3", - "pouchdb-adapter-leveldb": "6.4.3", - "pouchdb-adapter-leveldb-core": "6.4.3", - "pouchdb-adapter-memory": "6.4.3", - "pouchdb-adapter-node-websql": "6.4.3", - "pouchdb-core": "6.4.3", - "pouchdb-mapreduce": "6.4.3", - "pouchdb-promise": "6.4.3", - "pouchdb-replication": "6.4.3", - "serve-favicon": "2.3.2", - "tail": "1.2.3", + "killable": "^1.0.0", + "mkdirp": "^0.5.0", + "nomnom": "^1.8.1", + "object-assign": "^4.1.0", + "pouchdb-adapter-http": "^6.4.1", + "pouchdb-adapter-leveldb": "^6.4.1", + "pouchdb-adapter-leveldb-core": "^6.4.1", + "pouchdb-adapter-memory": "^6.4.1", + "pouchdb-adapter-node-websql": "^6.4.1", + "pouchdb-core": "^6.4.1", + "pouchdb-mapreduce": "^6.4.1", + "pouchdb-promise": "^6.4.1", + "pouchdb-replication": "^6.4.1", + "serve-favicon": "~2.3.2", + "tail": "^1.2.1", "wordwrap": "1.0.0" } }, @@ -5280,9 +5280,9 @@ "couchdb-objects": "4.0.0", "couchdb-render": "4.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-req-http-query": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-size": { @@ -5291,10 +5291,10 @@ "integrity": "sha512-za98LtvpY++vnnJ+pMz/Mng9MxQ3cWBvKGFrZp5GSF++V49gRzABJiaR3hfM3DDPgiO0vdD97YyIOJGSu2RfeQ==", "dev": true, "requires": { - "bluebird": "3.5.1", - "get-folder-size": "1.0.1", + "bluebird": "^3.4.7", + "get-folder-size": "^1.0.0", "pouchdb-wrappers": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-system-db": { @@ -5319,9 +5319,9 @@ "couchdb-objects": "4.0.0", "couchdb-resp-completer": "4.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-req-http-query": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-utils": { @@ -5350,7 +5350,7 @@ "couchdb-objects": "4.0.0", "pouchdb-bulkdocs-wrapper": "4.0.0", "pouchdb-plugin-error": "4.0.0", - "pouchdb-promise": "6.4.3", + "pouchdb-promise": "^6.4.1", "pouchdb-wrappers": "4.0.0", "random-uuid-v4": "0.0.6" } @@ -5362,7 +5362,7 @@ "dev": true, "requires": { "pouchdb-route": "4.0.0", - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "pouchdb-wrappers": { @@ -5371,7 +5371,7 @@ "integrity": "sha512-wcMJJD6fUTpCSvYQw9YNK0jn4xIhJVYOWh/A79kdI6iaSzm24hf6ZAC/wpXanAlvv2QhGzZ8I7K0sR4NnKLEcA==", "dev": true, "requires": { - "promise-nodify": "1.0.2" + "promise-nodify": "^1.0.2" } }, "prebuild-install": { @@ -5380,21 +5380,21 @@ "integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==", "dev": true, "requires": { - "detect-libc": "1.0.3", - "expand-template": "1.1.1", + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", "github-from-package": "0.0.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "node-abi": "2.4.1", - "noop-logger": "0.1.1", - "npmlog": "4.1.2", - "os-homedir": "1.0.2", - "pump": "2.0.1", - "rc": "1.2.7", - "simple-get": "2.8.1", - "tar-fs": "1.16.2", - "tunnel-agent": "0.6.0", - "which-pm-runs": "1.0.0" + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-abi": "^2.2.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.1.6", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" }, "dependencies": { "minimist": { @@ -5409,7 +5409,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } } } @@ -5448,8 +5448,8 @@ "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==", "dev": true, "requires": { - "to-object-x": "1.5.0", - "to-property-key-x": "2.0.2" + "to-object-x": "^1.4.1", + "to-property-key-x": "^2.0.1" } }, "proxy-addr": { @@ -5458,7 +5458,7 @@ "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "dev": true, "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.6.0" } }, @@ -5484,8 +5484,8 @@ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { @@ -5498,14 +5498,14 @@ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.4.0.tgz", "integrity": "sha512-WDnC1FSHTedvRSS8BZB73tPAx2svUCWFdcxVjrybw8pbKOAB1v5S/pW0EamkqQoL1mXiBc+v8lyYjhhzMHIk1Q==", "requires": { - "debug": "3.1.0", - "extract-zip": "1.6.6", - "https-proxy-agent": "2.2.1", - "mime": "2.3.1", - "progress": "2.0.0", - "proxy-from-env": "1.0.0", - "rimraf": "2.6.2", - "ws": "3.3.3" + "debug": "^3.1.0", + "extract-zip": "^1.6.5", + "https-proxy-agent": "^2.1.0", + "mime": "^2.0.3", + "progress": "^2.0.0", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^3.0.0" } }, "q": { @@ -5563,7 +5563,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.4.0" + "statuses": ">= 1.3.1 < 2" } }, "iconv-lite": { @@ -5586,10 +5586,10 @@ "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -5605,10 +5605,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "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" }, "dependencies": { "core-util-is": { @@ -5635,9 +5635,9 @@ "dev": true, "requires": { "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.8", - "source-map": "0.5.7" + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" }, "dependencies": { "esprima": { @@ -5672,7 +5672,7 @@ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "replace-comments-x": { @@ -5681,8 +5681,8 @@ "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==", "dev": true, "requires": { - "require-coercible-to-string-x": "1.0.2", - "to-string-x": "1.4.5" + "require-coercible-to-string-x": "^1.0.0", + "to-string-x": "^1.4.2" } }, "request": { @@ -5691,28 +5691,28 @@ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "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.2", - "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.2", - "stringstream": "0.0.5", - "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", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" }, "dependencies": { "tunnel-agent": { @@ -5721,7 +5721,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } } } @@ -5732,8 +5732,8 @@ "integrity": "sha512-GZ3BSCL0n/zhho8ITganW9FGPh0Kxhq71nCjck8Qau/30Wf4Po8a3XpQdzEMFiXCwZ/0m0E3lKSdSG8gkcIofQ==", "dev": true, "requires": { - "require-object-coercible-x": "1.4.3", - "to-string-x": "1.4.5" + "require-object-coercible-x": "^1.4.3", + "to-string-x": "^1.4.5" } }, "require-object-coercible-x": { @@ -5742,7 +5742,7 @@ "integrity": "sha512-5wEaS+NIiU5HLJQTqBQ+6XHtX7yplUS374j/H/nRDlc7rMWfENqp026jnUHWAOCZ+ekixkXuFHEnTF28oqqVLA==", "dev": true, "requires": { - "is-nil-x": "1.4.2" + "is-nil-x": "^1.4.2" } }, "require-uncached": { @@ -5751,8 +5751,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" } }, "resolve-from": { @@ -5767,8 +5767,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" } }, "right-align": { @@ -5778,7 +5778,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -5786,7 +5786,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" } }, "run-async": { @@ -5795,7 +5795,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -5810,7 +5810,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -5830,7 +5830,7 @@ "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "dev": true, "requires": { - "truncate-utf8-bytes": "1.0.2" + "truncate-utf8-bytes": "^1.0.0" } }, "sax": { @@ -5863,18 +5863,18 @@ "dev": true, "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.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.3", + "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.4.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" }, "dependencies": { "debug": { @@ -5900,10 +5900,10 @@ "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", "dev": true, "requires": { - "etag": "1.7.0", + "etag": "~1.7.0", "fresh": "0.3.0", "ms": "0.7.2", - "parseurl": "1.3.2" + "parseurl": "~1.3.1" }, "dependencies": { "etag": { @@ -5932,9 +5932,9 @@ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { - "encodeurl": "1.0.2", - "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.2" } }, @@ -5956,7 +5956,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -5970,8 +5970,8 @@ "resolved": "https://registry.npmjs.org/shot/-/shot-4.0.5.tgz", "integrity": "sha1-x+dFXRHWD2ts08Q+FaO0McF+VWY=", "requires": { - "hoek": "5.0.3", - "joi": "13.3.0" + "hoek": "5.x.x", + "joi": "13.x.x" } }, "signal-exit": { @@ -5992,9 +5992,9 @@ "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", "dev": true, "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" } }, "slice-ansi": { @@ -6003,7 +6003,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, "sntp": { @@ -6011,7 +6011,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" }, "dependencies": { "hoek": { @@ -6033,8 +6033,8 @@ "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "spark-md5": { @@ -6055,8 +6055,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.38" + "nan": "~2.7.0", + "node-pre-gyp": "~0.6.38" }, "dependencies": { "abbrev": { @@ -6071,8 +6071,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" } }, "ansi-regex": { @@ -6092,8 +6092,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -6137,7 +6137,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -6145,7 +6145,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -6153,7 +6153,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -6161,7 +6161,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -6187,7 +6187,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -6210,7 +6210,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -6219,7 +6219,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -6262,7 +6262,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -6288,9 +6288,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" } }, "fs.realpath": { @@ -6303,10 +6303,10 @@ "bundled": true, "dev": true, "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": { @@ -6315,9 +6315,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" } }, "gauge": { @@ -6326,14 +6326,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.2.0", - "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" } }, "getpass": { @@ -6342,7 +6342,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -6358,12 +6358,12 @@ "bundled": true, "dev": true, "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" } }, "graceful-fs": { @@ -6383,8 +6383,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -6398,10 +6398,10 @@ "bundled": true, "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": { @@ -6415,9 +6415,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -6425,8 +6425,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6445,7 +6445,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -6483,7 +6483,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -6528,7 +6528,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -6536,7 +6536,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -6572,15 +6572,15 @@ "optional": true, "requires": { "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.2", - "rc": "1.2.1", + "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" } }, "nopt": { @@ -6589,8 +6589,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { @@ -6599,10 +6599,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" } }, "number-is-nan": { @@ -6627,7 +6627,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -6648,8 +6648,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -6686,10 +6686,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "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": { @@ -6705,13 +6705,13 @@ "bundled": true, "dev": true, "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" } }, "request": { @@ -6720,28 +6720,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" } }, "rimraf": { @@ -6749,7 +6749,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -6780,7 +6780,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -6789,14 +6789,14 @@ "dev": true, "optional": true, "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" }, "dependencies": { "assert-plus": { @@ -6812,9 +6812,9 @@ "bundled": true, "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" } }, "string_decoder": { @@ -6822,7 +6822,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringstream": { @@ -6836,7 +6836,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -6850,9 +6850,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -6861,14 +6861,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" } }, "tough-cookie": { @@ -6877,7 +6877,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -6886,7 +6886,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -6918,9 +6918,9 @@ "dev": true, "optional": true, "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" }, "dependencies": { "assert-plus": { @@ -6937,7 +6937,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -6952,14 +6952,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "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" }, "dependencies": { "assert-plus": { @@ -6974,12 +6974,12 @@ "resolved": "https://registry.npmjs.org/statehood/-/statehood-6.0.6.tgz", "integrity": "sha512-jR45n5ZMAkasw0xoE9j9TuLmJv4Sa3AkXe+6yIFT6a07kXYHgSbuD2OVGECdZGFxTmvNqLwL1iRIgvq6O6rq+A==", "requires": { - "boom": "7.2.0", - "bounce": "1.2.0", - "cryptiles": "4.1.1", - "hoek": "5.0.3", - "iron": "5.0.4", - "joi": "13.3.0" + "boom": "7.x.x", + "bounce": "1.x.x", + "cryptiles": "4.x.x", + "hoek": "5.x.x", + "iron": "5.x.x", + "joi": "13.x.x" } }, "statuses": { @@ -6994,8 +6994,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "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": { @@ -7014,7 +7014,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -7061,10 +7061,10 @@ "integrity": "sha1-OjYN1mwbHX/UcFOJhg7aHQ9hEmw=", "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" } } } @@ -7074,11 +7074,11 @@ "resolved": "https://registry.npmjs.org/subtext/-/subtext-6.0.7.tgz", "integrity": "sha512-IcJUvRjeR+NB437Iq+LORFNJW4L6Knqkj3oQrBrkdhIaS2VKJvx/9aYEq7vi+PEx5/OuehOL/40SkSZotLi/MA==", "requires": { - "boom": "7.2.0", - "content": "4.0.5", - "hoek": "5.0.3", - "pez": "4.0.2", - "wreck": "14.0.2" + "boom": "7.x.x", + "content": "4.x.x", + "hoek": "5.x.x", + "pez": "4.x.x", + "wreck": "14.x.x" } }, "supports-color": { @@ -7087,7 +7087,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" }, "dependencies": { "has-flag": { @@ -7104,12 +7104,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", + "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" }, "dependencies": { "ajv": { @@ -7118,10 +7118,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "fast-deep-equal": { @@ -7144,10 +7144,10 @@ "integrity": "sha512-LdknWjPEiZC1nOBwhv0JBzfJBGPJar08dZg2rwZe0ZTLQoRGEzgrl7vF3qUEkCHpI/wN9e7RyCuDhMsJUCLPPQ==", "dev": true, "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.3", - "tar-stream": "1.6.1" + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" }, "dependencies": { "pump": { @@ -7156,8 +7156,8 @@ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -7168,13 +7168,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.6", - "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" }, "dependencies": { "readable-stream": { @@ -7183,13 +7183,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.2", - "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": { @@ -7198,7 +7198,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -7226,8 +7226,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "tiny-queue": { @@ -7242,7 +7242,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-boolean-x": { @@ -7263,10 +7263,10 @@ "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==", "dev": true, "requires": { - "is-finite-x": "3.0.4", - "is-nan-x": "1.0.3", - "math-sign-x": "3.0.0", - "to-number-x": "2.0.0" + "is-finite-x": "^3.0.2", + "is-nan-x": "^1.0.1", + "math-sign-x": "^3.0.0", + "to-number-x": "^2.0.0" } }, "to-number-x": { @@ -7275,11 +7275,11 @@ "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "nan-x": "1.0.2", - "parse-int-x": "2.0.0", - "to-primitive-x": "1.1.0", - "trim-x": "3.0.0" + "cached-constructors-x": "^1.0.0", + "nan-x": "^1.0.0", + "parse-int-x": "^2.0.0", + "to-primitive-x": "^1.1.0", + "trim-x": "^3.0.0" } }, "to-object-x": { @@ -7288,8 +7288,8 @@ "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "require-object-coercible-x": "1.4.3" + "cached-constructors-x": "^1.0.0", + "require-object-coercible-x": "^1.4.1" } }, "to-primitive-x": { @@ -7298,14 +7298,14 @@ "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2", - "is-date-object": "1.0.1", - "is-function-x": "3.3.0", - "is-nil-x": "1.4.2", - "is-primitive": "2.0.0", - "is-symbol": "1.0.1", - "require-object-coercible-x": "1.4.3", - "validate.io-undefined": "1.0.3" + "has-symbol-support-x": "^1.4.1", + "is-date-object": "^1.0.1", + "is-function-x": "^3.2.0", + "is-nil-x": "^1.4.1", + "is-primitive": "^2.0.0", + "is-symbol": "^1.0.1", + "require-object-coercible-x": "^1.4.1", + "validate.io-undefined": "^1.0.3" }, "dependencies": { "is-primitive": { @@ -7322,9 +7322,9 @@ "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2", - "to-primitive-x": "1.1.0", - "to-string-x": "1.4.5" + "has-symbol-support-x": "^1.4.1", + "to-primitive-x": "^1.1.0", + "to-string-x": "^1.4.2" } }, "to-string-symbols-supported-x": { @@ -7333,9 +7333,9 @@ "integrity": "sha512-3MRqhIhSNVDsVAk4M6WNcuBZrAQe54W13xrXX6RzxXS+pA4nj6DQ96RegQS5z9BSNyYbFsBsPvMVDIpP+a/5RA==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "has-symbol-support-x": "1.4.2", - "is-symbol": "1.0.1" + "cached-constructors-x": "^1.0.2", + "has-symbol-support-x": "^1.4.2", + "is-symbol": "^1.0.1" } }, "to-string-tag-x": { @@ -7344,8 +7344,8 @@ "integrity": "sha512-5+0EZ6dOVt/XArXmkooxPzWxmOR081HM/uXitUow7h11WYg5pPo15uYqDWuqO7ZY+O3Atn/dG26wcJCK+mFevg==", "dev": true, "requires": { - "lodash.isnull": "3.0.0", - "validate.io-undefined": "1.0.3" + "lodash.isnull": "^3.0.0", + "validate.io-undefined": "^1.0.3" } }, "to-string-x": { @@ -7354,8 +7354,8 @@ "integrity": "sha512-5xzlZDyDa9BUWNjNzZzHgKQ95PnV7qjvEhbqpFaj1ixaHgfJXOFaa3xdMJ+WLYd4hhaMJaxt8Pt5uKaWXfruXA==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "is-symbol": "1.0.1" + "cached-constructors-x": "^1.0.0", + "is-symbol": "^1.0.1" } }, "topo": { @@ -7363,7 +7363,7 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.0.tgz", "integrity": "sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw==", "requires": { - "hoek": "5.0.3" + "hoek": "5.x.x" } }, "tough-cookie": { @@ -7371,7 +7371,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" }, "dependencies": { "punycode": { @@ -7387,9 +7387,9 @@ "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "require-coercible-to-string-x": "1.0.2", - "white-space-x": "3.0.1" + "cached-constructors-x": "^1.0.0", + "require-coercible-to-string-x": "^1.0.0", + "white-space-x": "^3.0.0" } }, "trim-right-x": { @@ -7398,9 +7398,9 @@ "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==", "dev": true, "requires": { - "cached-constructors-x": "1.0.2", - "require-coercible-to-string-x": "1.0.2", - "white-space-x": "3.0.1" + "cached-constructors-x": "^1.0.0", + "require-coercible-to-string-x": "^1.0.0", + "white-space-x": "^3.0.0" } }, "trim-x": { @@ -7409,8 +7409,8 @@ "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==", "dev": true, "requires": { - "trim-left-x": "3.0.0", - "trim-right-x": "3.0.0" + "trim-left-x": "^3.0.0", + "trim-right-x": "^3.0.0" } }, "truncate-utf8-bytes": { @@ -7419,7 +7419,7 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "1.0.4" + "utf8-byte-length": "^1.0.1" } }, "tunnel-agent": { @@ -7439,7 +7439,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-is": { @@ -7449,7 +7449,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "~2.1.18" }, "dependencies": { "mime-db": { @@ -7464,7 +7464,7 @@ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } } } @@ -7481,9 +7481,9 @@ "dev": true, "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": { "source-map": { @@ -7525,9 +7525,9 @@ "integrity": "sha1-2ZzExudG0mSSiEW2EdtUsPNHTKo=", "dev": true, "requires": { - "esmangle-evaluator": "1.0.1", - "recast": "0.10.43", - "through2": "0.6.5" + "esmangle-evaluator": "^1.0.0", + "recast": "^0.10.1", + "through2": "^0.6.2" }, "dependencies": { "ast-types": { @@ -7549,9 +7549,9 @@ "dev": true, "requires": { "ast-types": "0.8.15", - "esprima-fb": "15001.1001.0-dev-harmony-fb", - "private": "0.1.8", - "source-map": "0.5.7" + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "private": "~0.1.5", + "source-map": "~0.5.0" } }, "source-map": { @@ -7567,7 +7567,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" } }, "url": { @@ -7625,9 +7625,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" }, "dependencies": { "assert-plus": { @@ -7647,7 +7647,7 @@ "resolved": "https://registry.npmjs.org/vise/-/vise-3.0.0.tgz", "integrity": "sha512-kBFZLmiL1Vm3rHXphkhvvAcsjgeQXRrOFCbJb0I50YZZP4HGRNH+xGzK3matIMcpbsfr3I02u9odj4oCD0TWgA==", "requires": { - "hoek": "5.0.3" + "hoek": "5.x.x" } }, "vision": { @@ -7655,10 +7655,10 @@ "resolved": "https://registry.npmjs.org/vision/-/vision-5.3.2.tgz", "integrity": "sha512-J4pEZnenx1Hz6ewx9Vtg5njulwSP7tZJFGmmiB2Ro6bN5BbZja1IEZY0eAbr/lsQd7Zxd51C4ZN5K6coFNTjvw==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3", - "items": "2.1.1", - "joi": "13.3.0" + "boom": "7.x.x", + "hoek": "5.x.x", + "items": "2.x.x", + "joi": "13.x.x" } }, "vuvuzela": { @@ -7675,11 +7675,11 @@ "optional": true, "requires": { "argsarray": "0.0.1", - "immediate": "3.2.3", - "noop-fn": "1.0.0", - "pouchdb-collections": "1.0.1", - "sqlite3": "3.1.13", - "tiny-queue": "0.2.1" + "immediate": "^3.2.2", + "noop-fn": "^1.0.0", + "pouchdb-collections": "^1.0.1", + "sqlite3": "^3.1.1", + "tiny-queue": "^0.2.1" }, "dependencies": { "immediate": { @@ -7704,7 +7704,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-pm-runs": { @@ -7725,7 +7725,7 @@ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -7734,7 +7734,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -7743,9 +7743,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": { @@ -7754,7 +7754,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -7789,8 +7789,8 @@ "resolved": "https://registry.npmjs.org/wreck/-/wreck-14.0.2.tgz", "integrity": "sha512-QCm3omWNJUseqrSzwX2QZi1rBbmCfbFHJAXputLLyZ37VSiFnSYQB0ms/mPnSvrlIu7GVm89Y/gBNhSY26uVIQ==", "requires": { - "boom": "7.2.0", - "hoek": "5.0.3" + "boom": "7.x.x", + "hoek": "5.x.x" } }, "write": { @@ -7799,7 +7799,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-stream": { @@ -7809,7 +7809,7 @@ "dev": true, "optional": true, "requires": { - "readable-stream": "0.0.4" + "readable-stream": "~0.0.2" }, "dependencies": { "readable-stream": { @@ -7826,9 +7826,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.2", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, "xhr2": { @@ -7842,8 +7842,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", "requires": { - "sax": "1.2.1", - "xmlbuilder": "4.2.1" + "sax": ">=0.6.0", + "xmlbuilder": "^4.1.0" } }, "xmlbuilder": { @@ -7851,7 +7851,7 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", "requires": { - "lodash": "4.17.10" + "lodash": "^4.0.0" } }, "xmlhttprequest": { @@ -7866,7 +7866,7 @@ "integrity": "sha512-HjGd9DEXQtuvsKFIVXuVdo7MJO7cAL2LdimzThxyLcIfkp6waMoZl22nbnuI2/GkXCTtF0W1xzBli8G+yEyi1g==", "dev": true, "requires": { - "xmlhttprequest": "1.8.0" + "xmlhttprequest": ">=1.8.0" } }, "xtend": { @@ -7886,9 +7886,9 @@ "dev": true, "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" } }, @@ -7897,7 +7897,7 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "requires": { - "fd-slicer": "1.0.1" + "fd-slicer": "~1.0.1" } } } diff --git a/package.json b/package.json index 0ce22116..b752cb50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nzz/q-server", - "version": "4.1.2", + "version": "5.0.0", "description": "", "main": "index.js", "scripts": { From 41f00a53e0493928e587f2345aaeee9778ed84de Mon Sep 17 00:00:00 2001 From: Manuel Roth Date: Tue, 26 Jun 2018 17:13:15 +0200 Subject: [PATCH 16/16] Upgrade node to version 10 --- .circleci/config.yml | 2 +- .nvmrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 447a6243..a24e4d84 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ defaults: &defaults working_directory: ~/q-server docker: - - image: circleci/node:9 + - image: circleci/node:10 version: 2 jobs: diff --git a/.nvmrc b/.nvmrc index ec635144..f599e28b 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -9 +10