diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 57e989f..98d6043 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -258,9 +258,9 @@ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", "dependencies": { "nan": { - "version": "2.4.0", + "version": "2.5.0", "from": "nan@>=2.0.8 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" } } }, @@ -854,7 +854,7 @@ }, "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "inherits@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" }, "once": { @@ -1036,7 +1036,7 @@ }, "minimatch": { "version": "3.0.3", - "from": "minimatch@>=3.0.0 <3.1.0", + "from": "minimatch@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", "dependencies": { "brace-expansion": { @@ -1257,25 +1257,30 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", "dependencies": { "concat-stream": { - "version": "1.5.2", + "version": "1.6.0", "from": "concat-stream@>=1.4.6 <2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "dependencies": { "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "inherits@>=2.0.3 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" }, "typedarray": { "version": "0.0.6", - "from": "typedarray@>=0.0.5 <0.1.0", + "from": "typedarray@>=0.0.6 <0.0.7", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" }, "readable-stream": { - "version": "2.0.6", - "from": "readable-stream@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "version": "2.2.2", + "from": "readable-stream@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "buffer-shims@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, "core-util-is": { "version": "1.0.2", "from": "core-util-is@>=1.0.0 <1.1.0", @@ -1306,9 +1311,9 @@ } }, "debug": { - "version": "2.3.3", + "version": "2.6.0", "from": "debug@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", "dependencies": { "ms": { "version": "0.7.2", @@ -1423,9 +1428,9 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz", "dependencies": { "acorn": { - "version": "4.0.3", + "version": "4.0.4", "from": "acorn@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.3.tgz" + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz" }, "acorn-jsx": { "version": "3.0.1", @@ -1457,13 +1462,13 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", "dependencies": { "flat-cache": { - "version": "1.2.1", + "version": "1.2.2", "from": "flat-cache@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", "dependencies": { "circular-json": { "version": "0.3.1", - "from": "circular-json@>=0.3.0 <0.4.0", + "from": "circular-json@>=0.3.1 <0.4.0", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz" }, "del": { @@ -1808,9 +1813,9 @@ } }, "jsonpointer": { - "version": "4.0.0", + "version": "4.0.1", "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", @@ -1885,9 +1890,9 @@ } }, "lodash": { - "version": "4.17.2", + "version": "4.17.4", "from": "lodash@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2.tgz" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" }, "mkdirp": { "version": "0.5.1", @@ -1927,9 +1932,9 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" }, "fast-levenshtein": { - "version": "2.0.5", + "version": "2.0.6", "from": "fast-levenshtein@>=2.0.4 <2.1.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" } } }, @@ -1993,9 +1998,9 @@ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "dependencies": { "ajv": { - "version": "4.9.2", + "version": "4.10.4", "from": "ajv@>=4.7.0 <5.0.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.9.2.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz", "dependencies": { "co": { "version": "4.6.0", @@ -2005,9 +2010,9 @@ } }, "ajv-keywords": { - "version": "1.2.0", + "version": "1.5.0", "from": "ajv-keywords@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.2.0.tgz" + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz" }, "slice-ansi": { "version": "0.0.4", @@ -2476,9 +2481,9 @@ } }, "jsonpointer": { - "version": "4.0.0", + "version": "4.0.1", "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", @@ -2591,9 +2596,9 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" }, "tweetnacl": { - "version": "0.14.4", + "version": "0.14.5", "from": "tweetnacl@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.4.tgz" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" }, "jodid25519": { "version": "1.0.2", @@ -2785,6 +2790,11 @@ } } }, + "lodash.merge": { + "version": "4.6.0", + "from": "lodash.merge@4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz" + }, "memcached": { "version": "2.2.1", "from": "memcached@2.2.1", @@ -3006,9 +3016,9 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", "dependencies": { "lodash": { - "version": "4.17.2", + "version": "4.17.4", "from": "lodash@>=4.14.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2.tgz" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" } } } @@ -3100,9 +3110,9 @@ } }, "jsonpointer": { - "version": "4.0.0", + "version": "4.0.1", "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", @@ -3215,9 +3225,9 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" }, "tweetnacl": { - "version": "0.14.4", + "version": "0.14.5", "from": "tweetnacl@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.4.tgz" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" }, "jodid25519": { "version": "1.0.2", @@ -3433,9 +3443,9 @@ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.4.tgz", "dependencies": { "debug": { - "version": "2.3.3", + "version": "2.6.0", "from": "debug@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", "dependencies": { "ms": { "version": "0.7.2", @@ -3471,7 +3481,7 @@ "dependencies": { "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "inherits@>=2.0.1 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" } } @@ -3591,9 +3601,9 @@ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", "dependencies": { "nan": { - "version": "2.4.0", + "version": "2.5.0", "from": "nan@>=2.0.8 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" } } } @@ -3793,9 +3803,9 @@ } }, "jsonpointer": { - "version": "4.0.0", + "version": "4.0.1", "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", @@ -3908,9 +3918,9 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" }, "tweetnacl": { - "version": "0.14.4", + "version": "0.14.5", "from": "tweetnacl@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.4.tgz" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" }, "jodid25519": { "version": "1.0.2", @@ -4005,9 +4015,9 @@ "resolved": "https://registry.npmjs.org/deeper/-/deeper-2.1.0.tgz" }, "foreground-child": { - "version": "1.5.3", + "version": "1.5.6", "from": "foreground-child@>=1.3.3 <2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.3.tgz", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", "dependencies": { "cross-spawn": { "version": "4.0.2", @@ -4122,7 +4132,7 @@ "dependencies": { "argparse": { "version": "1.0.9", - "from": "argparse@>=1.0.7 <2.0.0", + "from": "argparse@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "dependencies": { "sprintf-js": { @@ -5696,9 +5706,9 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.2.tgz" }, "debug": { - "version": "2.3.3", + "version": "2.6.0", "from": "debug@>=2.1.3 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", "dependencies": { "ms": { "version": "0.7.2", @@ -5782,7 +5792,7 @@ }, "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "inherits@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" } } diff --git a/package.json b/package.json index 72614fe..a65b424 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "deep-equal": "1.0.1", "ip": "1.1.3", "ip-reputation-js-client": "1.0.1", + "lodash.merge": "4.6.0", "memcached": "2.2.1", "newrelic": "1.30.1", "restify": "4.1.1" diff --git a/scripts/config-set.js b/scripts/config-set.js index fcd61f9..632a91e 100755 --- a/scripts/config-set.js +++ b/scripts/config-set.js @@ -22,6 +22,7 @@ var Memcached = require('memcached') var P = require('bluebird') var BL = require('bl') +var merge = require('lodash.merge') P.promisifyAll(Memcached.prototype) @@ -35,6 +36,17 @@ if (!/.+:\d+/.test(process.argv[2])) { return console.error(x) } +function writeMergedSettings(mc, key, newSettings) { + return mc.getAsync(key) + .then( + function (settings) { + settings = settings || {} + merge(settings, newSettings) + return mc.setAsync(key, settings, 0) + } + ) +} + var b = process.stdin.pipe(new BL()) process.stdin.on('end', function () { @@ -49,19 +61,19 @@ process.stdin.on('end', function () { var actions = [] if (input.limits) { - actions.push(mc.setAsync('limits', input.limits, 0)) + actions.push(writeMergedSettings(mc, 'limits', input.limits)) } if (input.allowedIPs) { - actions.push(mc.setAsync('allowedIPs', input.allowedIPs, 0)) + actions.push(writeMergedSettings(mc, 'allowedIPs', input.allowedIPs)) } if (input.allowedEmailDomains) { - actions.push(mc.setAsync('allowedEmailDomains', input.allowedEmailDomains, 0)) + actions.push(writeMergedSettings(mc, 'allowedEmailDomains', input.allowedEmailDomains)) } if (input.requestChecks) { - actions.push(mc.setAsync('requestChecks', input.requestChecks, 0)) + actions.push(writeMergedSettings(mc, 'requestChecks', input.requestChecks)) } P.all(actions)