diff --git a/docs/about-targets.md b/docs/about-targets.md index c1f043ca..1831e236 100644 --- a/docs/about-targets.md +++ b/docs/about-targets.md @@ -23,28 +23,32 @@ const tools = { $default: false, demo1: { path: '/rendering-info/html-static', // endpoint path to get rendering info for this specific target - stylesheets: [ // target specific stylesheets to load - { - url: 'https://service.sophie.nzz.ch/bundle/sophie-q@^1,sophie-font@^1,sophie-color@^1.css' - }, - { - content: '.q-item { color: #f5f5f5; background-color: #f5f5f5; }' - } - ] + additionalRenderingInfo: { + stylesheets: [ // target specific stylesheets to load + { + url: 'https://service.sophie.nzz.ch/bundle/sophie-q@^1,sophie-font@^1,sophie-color@^1.css' + }, + { + content: '.q-item { color: #f5f5f5; background-color: #f5f5f5; }' + } + ] + } }, demo2: { path: '/rendering-info/html-static', - stylesheets: [ - { - url: 'https://service.sophie.nzz.ch/bundle/sophie-color@^1.css' - }, - { - content: '.q-item { color: #f5f5f5; background-color: #f5f5f5; }' - }, - { - content: '.s-font-note { color: black; font-size: 14px; }' - } - ] + additionalRenderingInfo: { + stylesheets: [ + { + url: 'https://service.sophie.nzz.ch/bundle/sophie-color@^1.css' + }, + { + content: '.q-item { color: #f5f5f5; background-color: #f5f5f5; }' + }, + { + content: '.s-font-note { color: black; font-size: 14px; }' + } + ] + } } } //... diff --git a/docs/developing-tools.md b/docs/developing-tools.md index 76fb99ed..41eb0f9a 100644 --- a/docs/developing-tools.md +++ b/docs/developing-tools.md @@ -55,6 +55,9 @@ As explained in _on name and path_ on [Rendering Info?](rendering-info.html) we' module.exports = { method: 'GET', path: '/stylesheet/{name*}', + config: { + cache: false // set cache to false to use default cache-control headers from Q server config + } handler: function(request, reply) { const filePath = stylesDir + `${request.params.name}.scss`; fs.exists(filePath, (exists) => { @@ -89,6 +92,9 @@ As explained in _on name and path_ on [Rendering Info?](rendering-info.html) we' module.exports = { method: 'GET', path: '/script/system.js', + config: { + cache: false // set cache to false to use default cache-control headers from Q server config + } handler: function(request, reply) { reply.file(__dirname + '/../node_modules/systemjs/dist/system-production.src.js'); } @@ -159,7 +165,7 @@ services: - docker language: node_js node_js: -- '7.6' +- '8' install: - npm install before_script: diff --git a/helper/cache.js b/helper/cache.js new file mode 100644 index 00000000..9bb2cd3b --- /dev/null +++ b/helper/cache.js @@ -0,0 +1,24 @@ +function getCacheControlDirectivesFromConfig(server) { + const cacheControlDirectives = [ + 'public' + ]; + + if (server.settings.app.misc.get('/cache/cacheControl/maxAge')) { + cacheControlDirectives.push(`max-age=${server.settings.app.misc.get('/cache/cacheControl/maxAge')}`); + } + if (server.settings.app.misc.get('/cache/cacheControl/sMaxAge')) { + cacheControlDirectives.push(`s-maxage=${server.settings.app.misc.get('/cache/cacheControl/sMaxAge')}`); + } + if (server.settings.app.misc.get('/cache/cacheControl/staleWhileRevalidate')) { + cacheControlDirectives.push(`stale-while-revalidate=${server.settings.app.misc.get('/cache/cacheControl/staleWhileRevalidate')}`); + } + if (server.settings.app.misc.get('/cache/cacheControl/staleIfError')) { + cacheControlDirectives.push(`stale-if-error=${server.settings.app.misc.get('/cache/cacheControl/staleIfError')}`); + } + + return cacheControlDirectives; +} + +module.exports = { + getCacheControlDirectivesFromConfig: getCacheControlDirectivesFromConfig +}; \ No newline at end of file diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json deleted file mode 100644 index 5399a2f8..00000000 --- a/npm-shrinkwrap.json +++ /dev/null @@ -1,1688 +0,0 @@ -{ - "name": "@nzz/q-server", - "version": "2.2.0", - "dependencies": { - "accept": { - "version": "2.1.4", - "from": "accept@2.1.4", - "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "ajv": { - "version": "4.11.8", - "from": "ajv@>=4.9.1 <5.0.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz" - }, - "alce": { - "version": "1.2.0", - "from": "alce@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/alce/-/alce-1.2.0.tgz" - }, - "align-text": { - "version": "0.1.4", - "from": "align-text@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" - }, - "amdefine": { - "version": "1.0.1", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" - }, - "ammo": { - "version": "2.0.4", - "from": "ammo@2.0.4", - "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "ansi-regex": { - "version": "2.1.1", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - }, - "ansi-styles": { - "version": "2.2.1", - "from": "ansi-styles@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "argparse": { - "version": "1.0.9", - "from": "argparse@>=1.0.7 <2.0.0", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "asn1@0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "assertion-error": { - "version": "1.0.2", - "from": "assertion-error@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz" - }, - "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "asynckit": { - "version": "0.4.0", - "from": "asynckit@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - }, - "aws-sign2": { - "version": "0.5.0", - "from": "aws-sign2@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "aws4": { - "version": "1.6.0", - "from": "aws4@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz" - }, - "b64": { - "version": "3.0.2", - "from": "b64@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz" - }, - "balanced-match": { - "version": "0.4.2", - "from": "balanced-match@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "optional": true - }, - "bl": { - "version": "0.9.5", - "from": "bl@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.26 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } - }, - "bluebird": { - "version": "2.11.0", - "from": "bluebird@>=2.9.30 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz" - }, - "boom": { - "version": "4.3.1", - "from": "boom@4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz" - }, - "brace-expansion": { - "version": "1.1.7", - "from": "brace-expansion@>=1.1.7 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz" - }, - "browser-request": { - "version": "0.3.3", - "from": "browser-request@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz" - }, - "browser-stdout": { - "version": "1.3.0", - "from": "browser-stdout@1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz" - }, - "builtin-modules": { - "version": "1.1.1", - "from": "builtin-modules@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - }, - "call": { - "version": "4.0.2", - "from": "call@4.0.2", - "resolved": "https://registry.npmjs.org/call/-/call-4.0.2.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "from": "call-me-maybe@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" - }, - "camelcase": { - "version": "3.0.0", - "from": "camelcase@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" - }, - "caseless": { - "version": "0.9.0", - "from": "caseless@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz" - }, - "catbox": { - "version": "7.1.4", - "from": "catbox@7.1.4", - "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.4.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "catbox-memory": { - "version": "2.0.4", - "from": "catbox-memory@2.0.4", - "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz" - }, - "center-align": { - "version": "0.1.3", - "from": "center-align@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "optional": true - }, - "chai": { - "version": "3.5.0", - "from": "chai@3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - }, - "cliui": { - "version": "3.2.0", - "from": "cliui@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" - }, - "co": { - "version": "4.6.0", - "from": "co@>=4.6.0 <5.0.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - }, - "code-point-at": { - "version": "1.1.0", - "from": "code-point-at@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - }, - "combined-stream": { - "version": "0.0.7", - "from": "combined-stream@>=0.0.5 <0.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz" - }, - "commander": { - "version": "2.9.0", - "from": "commander@>=2.8.1 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "confidence": { - "version": "3.0.2", - "from": "confidence@3.0.2", - "resolved": "https://registry.npmjs.org/confidence/-/confidence-3.0.2.tgz", - "dependencies": { - "boom": { - "version": "3.2.2", - "from": "boom@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz" - } - } - }, - "content": { - "version": "3.0.4", - "from": "content@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "cookie": { - "version": "0.1.5", - "from": "cookie@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "cryptiles": { - "version": "3.1.2", - "from": "cryptiles@3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "ctype": { - "version": "0.5.3", - "from": "ctype@0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - }, - "dashdash": { - "version": "1.14.1", - "from": "dashdash@>=1.12.0 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "debug": { - "version": "2.6.8", - "from": "debug@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "decamelize@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "deep-eql": { - "version": "0.1.3", - "from": "deep-eql@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "dependencies": { - "type-detect": { - "version": "0.1.1", - "from": "type-detect@0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" - } - } - }, - "delayed-stream": { - "version": "0.0.5", - "from": "delayed-stream@0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - }, - "diff": { - "version": "3.2.0", - "from": "diff@3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz" - }, - "duplexify": { - "version": "3.5.0", - "from": "duplexify@>=3.1.2 <4.0.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "optional": true - }, - "encoding": { - "version": "0.1.12", - "from": "encoding@>=0.1.11 <0.2.0", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz" - }, - "end-of-stream": { - "version": "1.0.0", - "from": "end-of-stream@1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz" - }, - "error-ex": { - "version": "1.3.1", - "from": "error-ex@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" - }, - "errs": { - "version": "0.3.2", - "from": "errs@>=0.3.2 <0.4.0", - "resolved": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz" - }, - "es6-promise": { - "version": "3.3.1", - "from": "es6-promise@>=3.1.2 <4.0.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "esprima": { - "version": "1.2.5", - "from": "esprima@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz" - }, - "estraverse": { - "version": "1.9.3", - "from": "estraverse@>=1.5.0 <2.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" - }, - "extend": { - "version": "3.0.1", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz" - }, - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "fast-safe-stringify": { - "version": "1.1.13", - "from": "fast-safe-stringify@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.1.13.tgz" - }, - "find-up": { - "version": "1.1.2", - "from": "find-up@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - }, - "follow": { - "version": "0.12.1", - "from": "follow@>=0.12.1 <0.13.0", - "resolved": "https://registry.npmjs.org/follow/-/follow-0.12.1.tgz", - "dependencies": { - "request": { - "version": "2.55.0", - "from": "request@>=2.55.0 <2.56.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz" - } - } - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "0.2.0", - "from": "form-data@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz" - }, - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "get-caller-file": { - "version": "1.0.2", - "from": "get-caller-file@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz" - }, - "getpass": { - "version": "0.1.7", - "from": "getpass@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "glob": { - "version": "7.1.1", - "from": "glob@7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" - }, - "good": { - "version": "7.2.0", - "from": "good@7.2.0", - "resolved": "https://registry.npmjs.org/good/-/good-7.2.0.tgz" - }, - "good-console": { - "version": "6.4.0", - "from": "good-console@6.4.0", - "resolved": "https://registry.npmjs.org/good-console/-/good-console-6.4.0.tgz", - "dependencies": { - "joi": { - "version": "8.1.1", - "from": "joi@>=8.1.0 <8.2.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-8.1.1.tgz" - } - } - }, - "good-squeeze": { - "version": "5.0.2", - "from": "good-squeeze@5.0.2", - "resolved": "https://registry.npmjs.org/good-squeeze/-/good-squeeze-5.0.2.tgz" - }, - "graceful-fs": { - "version": "4.1.11", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "growl": { - "version": "1.9.2", - "from": "growl@1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz" - }, - "h2o2": { - "version": "5.4.0", - "from": "h2o2@5.4.0", - "resolved": "https://registry.npmjs.org/h2o2/-/h2o2-5.4.0.tgz", - "dependencies": { - "boom": { - "version": "3.2.2", - "from": "boom@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz" - }, - "joi": { - "version": "9.2.0", - "from": "joi@>=9.0.0 <10.0.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz" - } - } - }, - "handlebars": { - "version": "4.0.10", - "from": "handlebars@>=4.0.5 <5.0.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "async@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - } - } - }, - "hapi": { - "version": "16.4.3", - "from": "hapi@16.4.3", - "resolved": "https://registry.npmjs.org/hapi/-/hapi-16.4.3.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@5.1.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "hapi-auth-couchdb-cookie": { - "version": "3.1.0", - "from": "hapi-auth-couchdb-cookie@3.1.0", - "resolved": "https://registry.npmjs.org/hapi-auth-couchdb-cookie/-/hapi-auth-couchdb-cookie-3.1.0.tgz", - "dependencies": { - "boom": { - "version": "2.10.1", - "from": "boom@>=2.7.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - } - } - }, - "hapi-etags": { - "version": "0.1.0", - "from": "hapi-etags@0.1.0", - "resolved": "https://registry.npmjs.org/hapi-etags/-/hapi-etags-0.1.0.tgz", - "dependencies": { - "boom": { - "version": "2.10.1", - "from": "boom@>=2.7.1 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.13.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "isemail": { - "version": "1.2.0", - "from": "isemail@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz" - }, - "joi": { - "version": "6.10.1", - "from": "joi@>=6.4.1 <7.0.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz" - }, - "topo": { - "version": "1.1.0", - "from": "topo@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz" - } - } - }, - "hapi-swagger": { - "version": "7.7.0", - "from": "hapi-swagger@7.7.0", - "resolved": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-7.7.0.tgz", - "dependencies": { - "joi": { - "version": "10.2.2", - "from": "joi@10.2.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-10.2.2.tgz" - } - } - }, - "har-schema": { - "version": "1.0.5", - "from": "har-schema@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" - }, - "har-validator": { - "version": "1.8.0", - "from": "har-validator@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "has-flag": { - "version": "1.0.0", - "from": "has-flag@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - }, - "hawk": { - "version": "2.3.1", - "from": "hawk@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", - "dependencies": { - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - } - } - }, - "heavy": { - "version": "4.0.4", - "from": "heavy@4.0.4", - "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "hoek": { - "version": "4.1.1", - "from": "hoek@4.1.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" - }, - "hosted-git-info": { - "version": "2.4.2", - "from": "hosted-git-info@>=2.1.4 <3.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz" - }, - "http-signature": { - "version": "0.10.1", - "from": "http-signature@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz" - }, - "http-status": { - "version": "1.0.1", - "from": "http-status@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.0.1.tgz" - }, - "iconv-lite": { - "version": "0.4.17", - "from": "iconv-lite@>=0.4.13 <0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz" - }, - "inert": { - "version": "4.2.0", - "from": "inert@4.2.0", - "resolved": "https://registry.npmjs.org/inert/-/inert-4.2.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "invert-kv": { - "version": "1.0.0", - "from": "invert-kv@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - }, - "iron": { - "version": "4.0.5", - "from": "iron@4.0.5", - "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "from": "is-arrayish@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - }, - "is-buffer": { - "version": "1.1.5", - "from": "is-buffer@>=1.1.5 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "from": "is-builtin-module@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - }, - "is-my-json-valid": { - "version": "2.16.0", - "from": "is-my-json-valid@>=2.12.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "is-stream": { - "version": "1.1.0", - "from": "is-stream@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "is-utf8": { - "version": "0.2.1", - "from": "is-utf8@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "isemail": { - "version": "2.2.1", - "from": "isemail@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "items": { - "version": "2.1.1", - "from": "items@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "optional": true - }, - "joi": { - "version": "10.5.2", - "from": "joi@10.5.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" - }, - "js-yaml": { - "version": "3.8.4", - "from": "js-yaml@>=3.6.0 <4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "dependencies": { - "esprima": { - "version": "3.1.3", - "from": "esprima@>=3.1.1 <4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" - } - } - }, - "jsbn": { - "version": "0.1.1", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "from": "json-schema@0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - }, - "json-schema-ref-parser": { - "version": "3.1.2", - "from": "json-schema-ref-parser@3.1.2", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-3.1.2.tgz" - }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.0 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "json3": { - "version": "3.3.2", - "from": "json3@3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz" - }, - "jsonify": { - "version": "0.0.0", - "from": "jsonify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - }, - "jsonpointer": { - "version": "4.0.1", - "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" - }, - "jsprim": { - "version": "1.4.0", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "kind-of": { - "version": "3.2.2", - "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - }, - "lazy-cache": { - "version": "1.0.4", - "from": "lazy-cache@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "optional": true - }, - "lcid": { - "version": "1.0.0", - "from": "lcid@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - }, - "load-json-file": { - "version": "1.1.0", - "from": "load-json-file@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - }, - "lodash._baseassign": { - "version": "3.2.0", - "from": "lodash._baseassign@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz" - }, - "lodash._basecopy": { - "version": "3.0.1", - "from": "lodash._basecopy@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" - }, - "lodash._basecreate": { - "version": "3.0.3", - "from": "lodash._basecreate@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz" - }, - "lodash._getnative": { - "version": "3.9.1", - "from": "lodash._getnative@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - }, - "lodash.assign": { - "version": "4.2.0", - "from": "lodash.assign@>=4.0.3 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" - }, - "lodash.create": { - "version": "3.1.1", - "from": "lodash.create@3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz" - }, - "lodash.get": { - "version": "4.4.2", - "from": "lodash.get@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - }, - "lodash.isarguments": { - "version": "3.1.0", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" - }, - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - }, - "lodash.isequal": { - "version": "4.5.0", - "from": "lodash.isequal@>=4.4.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - }, - "lodash.keys": { - "version": "3.1.2", - "from": "lodash.keys@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" - }, - "longest": { - "version": "1.0.1", - "from": "longest@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" - }, - "lru-cache": { - "version": "4.0.2", - "from": "lru-cache@>=4.0.0 <4.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz" - }, - "mime-db": { - "version": "1.28.0", - "from": "mime-db@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.28.0.tgz" - }, - "mime-types": { - "version": "2.0.14", - "from": "mime-types@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "mime-db@>=1.12.0 <1.13.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - }, - "mimos": { - "version": "3.0.3", - "from": "mimos@3.0.3", - "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz" - }, - "minimatch": { - "version": "3.0.4", - "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "minimist@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "mocha": { - "version": "3.4.2", - "from": "mocha@3.4.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", - "dependencies": { - "debug": { - "version": "2.6.0", - "from": "debug@2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz" - }, - "ms": { - "version": "0.7.2", - "from": "ms@0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" - }, - "supports-color": { - "version": "3.1.2", - "from": "supports-color@3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" - } - } - }, - "moment": { - "version": "2.15.2", - "from": "moment@>=2.15.0 <2.16.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz" - }, - "ms": { - "version": "2.0.0", - "from": "ms@2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - }, - "nano": { - "version": "6.3.0", - "from": "nano@6.3.0", - "resolved": "https://registry.npmjs.org/nano/-/nano-6.3.0.tgz" - }, - "nigel": { - "version": "2.0.2", - "from": "nigel@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz" - }, - "node-fetch": { - "version": "1.7.1", - "from": "node-fetch@1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz" - }, - "node-uuid": { - "version": "1.4.8", - "from": "node-uuid@>=1.4.0 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz" - }, - "normalize-package-data": { - "version": "2.3.8", - "from": "normalize-package-data@>=2.3.2 <3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz" - }, - "number-is-nan": { - "version": "1.0.1", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - }, - "oauth-sign": { - "version": "0.6.0", - "from": "oauth-sign@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz" - }, - "once": { - "version": "1.3.3", - "from": "once@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "ono": { - "version": "2.2.5", - "from": "ono@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz" - }, - "oppsy": { - "version": "1.0.2", - "from": "oppsy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/oppsy/-/oppsy-1.0.2.tgz" - }, - "optimist": { - "version": "0.6.1", - "from": "optimist@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" - }, - "os-locale": { - "version": "1.4.0", - "from": "os-locale@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" - }, - "parse-json": { - "version": "2.2.0", - "from": "parse-json@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - }, - "path-exists": { - "version": "2.1.0", - "from": "path-exists@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "path-type": { - "version": "1.1.0", - "from": "path-type@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - }, - "performance-now": { - "version": "0.2.0", - "from": "performance-now@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" - }, - "pez": { - "version": "2.1.5", - "from": "pez@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "pify": { - "version": "2.3.0", - "from": "pify@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - }, - "podium": { - "version": "1.2.5", - "from": "podium@1.2.5", - "resolved": "https://registry.npmjs.org/podium/-/podium-1.2.5.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "pseudomap": { - "version": "1.0.2", - "from": "pseudomap@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - }, - "pump": { - "version": "1.0.2", - "from": "pump@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", - "dependencies": { - "end-of-stream": { - "version": "1.4.0", - "from": "end-of-stream@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "dependencies": { - "once": { - "version": "1.4.0", - "from": "once@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - } - } - } - } - }, - "pumpify": { - "version": "1.3.5", - "from": "pumpify@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz" - }, - "punycode": { - "version": "1.4.1", - "from": "punycode@>=1.4.1 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - }, - "qs": { - "version": "2.4.2", - "from": "qs@>=2.4.0 <2.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" - }, - "reach": { - "version": "1.0.0", - "from": "reach@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/reach/-/reach-1.0.0.tgz" - }, - "read-pkg": { - "version": "1.1.0", - "from": "read-pkg@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "from": "read-pkg-up@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - }, - "readable-stream": { - "version": "2.2.10", - "from": "readable-stream@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz" - }, - "repeat-string": { - "version": "1.6.1", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - }, - "request": { - "version": "2.81.0", - "from": "request@>=2.76.0 <3.0.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "caseless": { - "version": "0.12.0", - "from": "caseless@>=0.12.0 <0.13.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "form-data": { - "version": "2.1.4", - "from": "form-data@>=2.1.1 <2.2.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz" - }, - "har-validator": { - "version": "4.2.1", - "from": "har-validator@>=4.2.1 <4.3.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@>=3.1.3 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "http-signature": { - "version": "1.1.1", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" - }, - "mime-db": { - "version": "1.27.0", - "from": "mime-db@>=1.27.0 <1.28.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" - }, - "mime-types": { - "version": "2.1.15", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "oauth-sign@>=0.8.1 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "qs": { - "version": "6.4.0", - "from": "qs@>=6.4.0 <6.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz" - }, - "tunnel-agent": { - "version": "0.6.0", - "from": "tunnel-agent@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - }, - "uuid": { - "version": "3.0.1", - "from": "uuid@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" - } - } - }, - "require-directory": { - "version": "2.1.1", - "from": "require-directory@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - }, - "require-main-filename": { - "version": "1.0.1", - "from": "require-main-filename@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" - }, - "right-align": { - "version": "0.1.3", - "from": "right-align@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "optional": true - }, - "safe-buffer": { - "version": "5.1.0", - "from": "safe-buffer@>=5.0.1 <6.0.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz" - }, - "semver": { - "version": "5.3.0", - "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0||>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - }, - "set-blocking": { - "version": "2.0.0", - "from": "set-blocking@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - }, - "shot": { - "version": "3.4.2", - "from": "shot@3.4.2", - "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - } - } - }, - "source-map": { - "version": "0.4.4", - "from": "source-map@>=0.4.4 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" - }, - "spdx-correct": { - "version": "1.0.2", - "from": "spdx-correct@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz" - }, - "spdx-expression-parse": { - "version": "1.0.4", - "from": "spdx-expression-parse@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" - }, - "spdx-license-ids": { - "version": "1.2.2", - "from": "spdx-license-ids@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" - }, - "sprintf-js": { - "version": "1.0.3", - "from": "sprintf-js@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - }, - "sshpk": { - "version": "1.13.0", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "statehood": { - "version": "5.0.2", - "from": "statehood@5.0.2", - "resolved": "https://registry.npmjs.org/statehood/-/statehood-5.0.2.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - } - } - }, - "stream-shift": { - "version": "1.0.0", - "from": "stream-shift@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" - }, - "string_decoder": { - "version": "1.0.1", - "from": "string_decoder@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz" - }, - "string-width": { - "version": "1.0.2", - "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "strip-bom": { - "version": "2.0.0", - "from": "strip-bom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - }, - "subtext": { - "version": "4.4.1", - "from": "subtext@4.4.1", - "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", - "dependencies": { - "boom": { - "version": "5.1.0", - "from": "boom@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" - }, - "wreck": { - "version": "12.2.2", - "from": "wreck@>=12.0.0 <13.0.0", - "resolved": "https://registry.npmjs.org/wreck/-/wreck-12.2.2.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "swagger-methods": { - "version": "1.0.0", - "from": "swagger-methods@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-1.0.0.tgz" - }, - "swagger-parser": { - "version": "3.4.1", - "from": "swagger-parser@>=3.4.1 <4.0.0", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-3.4.1.tgz", - "dependencies": { - "json-schema-ref-parser": { - "version": "1.4.1", - "from": "json-schema-ref-parser@>=1.4.1 <2.0.0", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz" - } - } - }, - "swagger-schema-official": { - "version": "2.0.0-bab6bed", - "from": "swagger-schema-official@2.0.0-bab6bed", - "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz" - }, - "topo": { - "version": "2.0.2", - "from": "topo@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" - }, - "tough-cookie": { - "version": "2.3.2", - "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz" - }, - "traverse": { - "version": "0.6.6", - "from": "traverse@0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tweetnacl": { - "version": "0.14.5", - "from": "tweetnacl@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "optional": true - }, - "type-detect": { - "version": "1.0.0", - "from": "type-detect@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz" - }, - "uglify-js": { - "version": "2.8.28", - "from": "uglify-js@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", - "optional": true, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "optional": true - }, - "cliui": { - "version": "2.1.0", - "from": "cliui@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "optional": true - }, - "source-map": { - "version": "0.5.6", - "from": "source-map@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "optional": true - }, - "window-size": { - "version": "0.1.0", - "from": "window-size@0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "optional": true - }, - "yargs": { - "version": "3.10.0", - "from": "yargs@>=3.10.0 <3.11.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "optional": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "optional": true - }, - "underscore": { - "version": "1.8.3", - "from": "underscore@>=1.8.3 <2.0.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "from": "validate-npm-package-license@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" - }, - "validator": { - "version": "6.3.0", - "from": "validator@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - }, - "vise": { - "version": "2.0.2", - "from": "vise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz" - }, - "vision": { - "version": "4.1.1", - "from": "vision@4.1.1", - "resolved": "https://registry.npmjs.org/vision/-/vision-4.1.1.tgz" - }, - "which-module": { - "version": "1.0.0", - "from": "which-module@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" - }, - "white-out": { - "version": "2.0.0", - "from": "white-out@2.0.0", - "resolved": "https://registry.npmjs.org/white-out/-/white-out-2.0.0.tgz" - }, - "window-size": { - "version": "0.2.0", - "from": "window-size@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" - }, - "wordwrap": { - "version": "0.0.3", - "from": "wordwrap@>=0.0.2 <0.1.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "wrap-ansi": { - "version": "2.1.0", - "from": "wrap-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" - }, - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - }, - "wreck": { - "version": "9.0.0", - "from": "wreck@>=9.0.0 <10.0.0", - "resolved": "https://registry.npmjs.org/wreck/-/wreck-9.0.0.tgz", - "dependencies": { - "boom": { - "version": "3.2.2", - "from": "boom@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz" - } - } - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "y18n": { - "version": "3.2.1", - "from": "y18n@>=3.2.1 <4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" - }, - "yallist": { - "version": "2.1.2", - "from": "yallist@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - }, - "yargs": { - "version": "4.8.1", - "from": "yargs@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" - }, - "yargs-parser": { - "version": "2.4.1", - "from": "yargs-parser@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" - }, - "z-schema": { - "version": "3.18.2", - "from": "z-schema@>=3.17.0 <4.0.0", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.2.tgz" - } - } -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..e85f9370 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2172 @@ +{ + "name": "@nzz/q-server", + "version": "2.5.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accept": { + "version": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", + "integrity": "sha1-iHr1TO7lx/RDBGGXHsQAxh0JrLs=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } + }, + "alce": { + "version": "https://registry.npmjs.org/alce/-/alce-1.2.0.tgz", + "integrity": "sha1-qL4trKrEJJRhLxjcCdtpHz3qSqs=", + "requires": { + "esprima": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" + } + }, + "align-text": { + "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "longest": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + } + }, + "amdefine": { + "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ammo": { + "version": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", + "integrity": "sha1-v4CqshFpjqePY+9efxE91dnokX8=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=" + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" + }, + "assertion-error": { + "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" + }, + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=" + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "b64": { + "version": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", + "integrity": "sha1-ep1gRmrfe43hFMvfZRpf38yQiU0=" + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + } + }, + "bl": { + "version": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", + "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + }, + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bluebird": { + "version": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + }, + "browser-request": { + "version": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", + "integrity": "sha1-ns5bWsqJopkyJC4Yv5M975h2zBc=" + }, + "browser-stdout": { + "version": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "call": { + "version": "https://registry.npmjs.org/call/-/call-4.0.2.tgz", + "integrity": "sha1-33b19R7o3Ui4VqyEAPfmnm1zmcQ=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "call-me-maybe": { + "version": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", + "integrity": "sha1-t7Zc5r8UE4hlOc/VM/CzDv+pz4g=" + }, + "catbox": { + "version": "https://registry.npmjs.org/catbox/-/catbox-7.1.4.tgz", + "integrity": "sha1-ipUO0YtkuoCIwa4TLoXFhHnStsw=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "catbox-memory": { + "version": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz", + "integrity": "sha1-Qz4lWQLK9UIz0ShkKcj03xToItU=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "center-align": { + "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + } + }, + "chai": { + "version": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "requires": { + "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "deep-eql": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + } + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, + "co": { + "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confidence": { + "version": "https://registry.npmjs.org/confidence/-/confidence-3.0.2.tgz", + "integrity": "sha1-0c0pmU47e8P2kwD4f1vCZcUzXlA=", + "requires": { + "alce": "https://registry.npmjs.org/alce/-/alce-1.2.0.tgz", + "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "content": { + "version": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", + "integrity": "sha1-yj3eBEgPElGbcVJuxEvUiN37P+8=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "cookie": { + "version": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", + "integrity": "sha1-armUiksa4hlSzSWIUwpHItQETXw=" + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "ctype": { + "version": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=" + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-eql": { + "version": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "requires": { + "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + }, + "dependencies": { + "type-detect": { + "version": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + } + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "diff": { + "version": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" + }, + "duplexify": { + "version": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "requires": { + "end-of-stream": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "stream-shift": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" + } + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + } + }, + "encoding": { + "version": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz" + } + }, + "end-of-stream": { + "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + } + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + } + }, + "errs": { + "version": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz", + "integrity": "sha1-eYCZstvTfKK8dJ5TinwTB9C1BJk=" + }, + "es6-promise": { + "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=" + }, + "estraverse": { + "version": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "fast-safe-stringify": { + "version": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.1.13.tgz", + "integrity": "sha1-oB6c2cnkkXFcmKdaQtXwu9EH/3Y=" + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "follow": { + "version": "https://registry.npmjs.org/follow/-/follow-0.12.1.tgz", + "integrity": "sha1-LA76u82RYTsLtzgmQPOQ7ejKuVg=", + "requires": { + "browser-request": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.55.0.tgz" + }, + "dependencies": { + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", + "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=", + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "bl": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", + "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "node-uuid": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + } + } + } + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz" + } + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "generate-function": { + "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "good": { + "version": "https://registry.npmjs.org/good/-/good-7.2.0.tgz", + "integrity": "sha1-yU2qRL+5Y4jyj2zorIv9Rowt9wQ=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz", + "oppsy": "https://registry.npmjs.org/oppsy/-/oppsy-1.0.2.tgz", + "pumpify": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz" + } + }, + "good-console": { + "version": "https://registry.npmjs.org/good-console/-/good-console-6.4.0.tgz", + "integrity": "sha1-cpTJ2QxMnwWaCC4YBiVJWWbSulk=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-8.1.1.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "moment": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz" + }, + "dependencies": { + "joi": { + "version": "https://registry.npmjs.org/joi/-/joi-8.1.1.tgz", + "integrity": "sha1-LYtSpdkJ0hftRySFd+7+ixeY9I8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "moment": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" + } + } + } + }, + "good-squeeze": { + "version": "https://registry.npmjs.org/good-squeeze/-/good-squeeze-5.0.2.tgz", + "integrity": "sha1-qOWCQrSgsyzb3zF7YOc6Gafwh5s=", + "requires": { + "fast-safe-stringify": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.1.13.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "growl": { + "version": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" + }, + "h2o2": { + "version": "https://registry.npmjs.org/h2o2/-/h2o2-5.4.0.tgz", + "integrity": "sha1-1oV8oFNVIAyJCzSmZgbKugIp7Vg=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", + "wreck": "9.0.0" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "joi": { + "version": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", + "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "moment": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" + } + }, + "wreck": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-9.0.0.tgz", + "integrity": "sha1-HeY9SbsHuU/nGIZLi+YxduYzMew=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "handlebars": { + "version": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "requires": { + "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "hapi": { + "version": "https://registry.npmjs.org/hapi/-/hapi-16.4.3.tgz", + "integrity": "sha1-vk2q8tzb7peVfOUDBhsJdlB4qgU=", + "requires": { + "accept": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", + "ammo": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "call": "https://registry.npmjs.org/call/-/call-4.0.2.tgz", + "catbox": "https://registry.npmjs.org/catbox/-/catbox-7.1.4.tgz", + "catbox-memory": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "heavy": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "iron": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz", + "mimos": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", + "podium": "https://registry.npmjs.org/podium/-/podium-1.2.5.tgz", + "shot": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", + "statehood": "https://registry.npmjs.org/statehood/-/statehood-5.0.2.tgz", + "subtext": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "hapi-auth-couchdb-cookie": { + "version": "https://registry.npmjs.org/hapi-auth-couchdb-cookie/-/hapi-auth-couchdb-cookie-3.1.0.tgz", + "integrity": "sha1-7sLTS0jJ6KhrjqdxDG68IJ/GtsE=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cookie": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", + "nano": "https://registry.npmjs.org/nano/-/nano-6.3.0.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "hapi-etags": { + "version": "https://registry.npmjs.org/hapi-etags/-/hapi-etags-0.1.0.tgz", + "integrity": "sha1-g3FRmBrrpcL5cCXy/zYgtPcbPi0=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "isemail": { + "version": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", + "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" + }, + "joi": { + "version": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", + "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "isemail": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", + "moment": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz" + } + }, + "topo": { + "version": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", + "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + } + } + }, + "hapi-swagger": { + "version": "https://registry.npmjs.org/hapi-swagger/-/hapi-swagger-7.7.0.tgz", + "integrity": "sha1-href9QoJABEKnoNZWUGp7bx7atY=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "handlebars": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "http-status": "https://registry.npmjs.org/http-status/-/http-status-1.0.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.2.2.tgz", + "json-schema-ref-parser": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-3.1.2.tgz", + "swagger-parser": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-3.4.1.tgz" + }, + "dependencies": { + "joi": { + "version": "https://registry.npmjs.org/joi/-/joi-10.2.2.tgz", + "integrity": "sha1-3Fp5K3tMb/+lYiQqlbVdnT8HfiQ=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" + } + } + } + }, + "har-schema": { + "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", + "requires": { + "bluebird": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz" + } + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "heavy": { + "version": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", + "integrity": "sha1-NskTNsAMz+hSyqTRUwhjNc0vAOk=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=" + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "ctype": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + }, + "http-status": { + "version": "https://registry.npmjs.org/http-status/-/http-status-1.0.1.tgz", + "integrity": "sha1-3EMAGov8UKyH1IWokvdXiWS8lKI=" + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz", + "integrity": "sha1-T9qjs4rLwsAxsEXQ7c3+HsqxjI0=" + }, + "inert": { + "version": "https://registry.npmjs.org/inert/-/inert-4.2.0.tgz", + "integrity": "sha1-aqXajOGZgutyqr70vdpk/WdQsAU=", + "requires": { + "ammo": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", + "boom": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz", + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz" + } + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "iron": { + "version": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", + "integrity": "sha1-TwQszri5c480a1mqc0yDqJvDFCg=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "requires": { + "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "is-property": { + "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "is-stream": { + "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=" + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "items": { + "version": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=" + }, + "jodid25519": { + "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true, + "requires": { + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + } + }, + "joi": { + "version": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz", + "integrity": "sha1-ZPaFOwgOnfDPTMniBPoSzI95LEg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" + } + }, + "js-yaml": { + "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "requires": { + "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" + }, + "dependencies": { + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-ref-parser": { + "version": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-3.1.2.tgz", + "integrity": "sha1-o47Ld3T4fzLn65cj1ZITkOdqmkI=", + "requires": { + "call-me-maybe": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "ono": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz", + "z-schema": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.2.tgz" + } + }, + "json-stable-stringify": { + "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + } + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "jsonify": { + "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + }, + "lazy-cache": { + "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + } + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + } + }, + "lodash._baseassign": { + "version": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "lodash.keys": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" + } + }, + "lodash._basecopy": { + "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basecreate": { + "version": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" + }, + "lodash._getnative": { + "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash.assign": { + "version": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.create": { + "version": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "requires": { + "lodash._baseassign": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "lodash._basecreate": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "lodash._isiterateecall": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" + } + }, + "lodash.get": { + "version": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isarguments": { + "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isequal": { + "version": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.keys": { + "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "lodash.isarguments": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "lodash.isarray": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" + } + }, + "longest": { + "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "yallist": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + } + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.28.0.tgz", + "integrity": "sha1-/t00m+BtKGW3/FfYN8beTxfXrDw=" + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + }, + "dependencies": { + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" + } + } + }, + "mimos": { + "version": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", + "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.28.0.tgz" + } + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz" + } + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", + "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", + "requires": { + "browser-stdout": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "diff": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "growl": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "json3": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "lodash.create": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + } + } + }, + "moment": { + "version": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", + "integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nano": { + "version": "https://registry.npmjs.org/nano/-/nano-6.3.0.tgz", + "integrity": "sha1-qcu9giWb/NdDAloqosAWVvbhEeE=", + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "errs": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz", + "follow": "https://registry.npmjs.org/follow/-/follow-0.12.1.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "underscore": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + } + }, + "nigel": { + "version": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", + "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "vise": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz" + } + }, + "node-fetch": { + "version": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha1-iZyz0KPJL5UsR/G4dvTIrqvUANU=", + "requires": { + "encoding": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + } + }, + "node-uuid": { + "version": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "requires": { + "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + } + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", + "integrity": "sha1-fb6uRPbKRU4fFoRR1jB0ZzWBPOM=" + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "ono": { + "version": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz", + "integrity": "sha1-2vCUiLURdNp6fkJ136sxtDj/oOM=" + }, + "oppsy": { + "version": "https://registry.npmjs.org/oppsy/-/oppsy-1.0.2.tgz", + "integrity": "sha1-mAFM1pZ2U6g8//pVQibckAULqtQ=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz" + } + }, + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + } + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" + } + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "performance-now": { + "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "pez": { + "version": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", + "integrity": "sha1-XsLMYlAMw+tCNtSkFM9aF7XrUAc=", + "requires": { + "b64": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "content": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "nigel": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + }, + "podium": { + "version": "https://registry.npmjs.org/podium/-/podium-1.2.5.tgz", + "integrity": "sha1-h8VmwvA2W88KHsdgLE0BlIzdKtU=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + } + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pump": { + "version": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", + "requires": { + "end-of-stream": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" + }, + "dependencies": { + "end-of-stream": { + "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + }, + "dependencies": { + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + } + } + } + }, + "pumpify": { + "version": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "requires": { + "duplexify": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "pump": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz" + } + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=" + }, + "reach": { + "version": "https://registry.npmjs.org/reach/-/reach-1.0.0.tgz", + "integrity": "sha1-TRLRYJYLysZ9xiTw+Ruv6zb3lPY=" + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "path-type": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + } + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "integrity": "sha1-7/5yu3yITA3TNeI3nVJhltnQEe4=", + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + }, + "repeat-string": { + "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "performance-now": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + } + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "requires": { + "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + } + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "har-schema": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" + } + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz" + } + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + } + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz" + } + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" + } + } + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "right-align": { + "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" + } + }, + "safe-buffer": { + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "integrity": "sha1-/kyEYDl/nqqqWOc75GJzQIpF4iM=" + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shot": { + "version": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", + "integrity": "sha1-Hlw/bysmZJrcQvfrNQIUpaApHWc=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + } + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "dependencies": { + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + } + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "jodid25519": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + }, + "dependencies": { + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "statehood": { + "version": "https://registry.npmjs.org/statehood/-/statehood-5.0.2.tgz", + "integrity": "sha1-xrO6oW7YsSHT8Jo/+oXiIZWn8qk=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "iron": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "stream-shift": { + "version": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + } + }, + "subtext": { + "version": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", + "integrity": "sha1-L87JRd5CkoPD0YsVH/D6HxuHrsk=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "content": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "pez": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", + "wreck": "https://registry.npmjs.org/wreck/-/wreck-12.2.2.tgz" + }, + "dependencies": { + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "wreck": { + "version": "https://registry.npmjs.org/wreck/-/wreck-12.2.2.tgz", + "integrity": "sha1-4hgj00w21nIATu+jR66MT2BQ49s=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + } + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "swagger-methods": { + "version": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-1.0.0.tgz", + "integrity": "sha1-s5x3lX0wWmU1wKHgFQgRhbmdYfw=" + }, + "swagger-parser": { + "version": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-3.4.1.tgz", + "integrity": "sha1-ApBSnbriVNF4tEKpXfYNI9FCMB0=", + "requires": { + "call-me-maybe": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "json-schema-ref-parser": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz", + "ono": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz", + "swagger-methods": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-1.0.0.tgz", + "swagger-schema-official": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", + "z-schema": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.2.tgz" + }, + "dependencies": { + "json-schema-ref-parser": { + "version": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz", + "integrity": "sha1-wMLkOL8HlnI7AkUbrovH3Qs3/tA=", + "requires": { + "call-me-maybe": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "ono": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz" + } + } + } + }, + "swagger-schema-official": { + "version": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", + "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" + }, + "topo": { + "version": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + }, + "traverse": { + "version": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-detect": { + "version": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=" + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", + "integrity": "sha1-4zUDLfm7INy5GPFkWJ1a9H84g0o=", + "optional": true, + "requires": { + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "optional": true + }, + "window-size": { + "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + } + } + } + }, + "uglify-to-browserify": { + "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "underscore": { + "version": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + } + }, + "validator": { + "version": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz", + "integrity": "sha1-R84j7Y1Ord+p1LjvAHG2zxB418g=" + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "requires": { + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + } + }, + "vise": { + "version": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", + "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz" + } + }, + "vision": { + "version": "https://registry.npmjs.org/vision/-/vision-4.1.1.tgz", + "integrity": "sha1-4bYSstLi8gMQoDkpD9SdUSSPgto=", + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "joi": "https://registry.npmjs.org/joi/-/joi-10.5.2.tgz" + } + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "white-out": { + "version": "https://registry.npmjs.org/white-out/-/white-out-2.0.0.tgz", + "integrity": "sha1-lYGfXentpt3inWmnkoMNX9jUIcI=", + "requires": { + "reach": "https://registry.npmjs.org/reach/-/reach-1.0.0.tgz", + "traverse": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" + } + }, + "window-size": { + "version": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "wreck": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-13.0.3.tgz", + "integrity": "sha512-OKAzNGjz4yvi44LrLznWfMRDqAMRhITmW0mdXCpogmH095JH426x+re/Xf/qg9U1pGv6/dqAeqfF7gCRbO+d2g==", + "requires": { + "boom": "6.0.0", + "hoek": "5.0.0" + }, + "dependencies": { + "boom": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-6.0.0.tgz", + "integrity": "sha512-LYLa8BmiiOWjvxTMVh73lcZzd2E5yczrKvxAny1UuzO2tkarLrw4tdp3rdfmus3+YfKcZP0vRSM3Obh+fGK6eA==", + "requires": { + "hoek": "5.0.0" + } + }, + "hoek": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.0.tgz", + "integrity": "sha512-/eDT+s5IgB/MR88VEIF8bYqqRiQ2yPownGng7NrmQzRv0kntBnDF68JBcpxVsnuOqDjmkemEoKlF+ln4z4NY0g==" + } + } + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "requires": { + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "lodash.assign": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "lodash.assign": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" + } + }, + "z-schema": { + "version": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.2.tgz", + "integrity": "sha1-5CIZa17+YLRq3vPD8q7y3qqREWE=", + "requires": { + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "lodash.get": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "lodash.isequal": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "validator": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz" + } + } + } +} diff --git a/package.json b/package.json index ccafd624..83753f22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nzz/q-server", - "version": "2.4.0", + "version": "2.5.0", "description": "", "main": "index.js", "scripts": { @@ -23,7 +23,9 @@ "boom": "^4.2.0", "catbox-memory": "^2.0.4", "chai": "^3.5.0", + "clone": "^2.1.1", "confidence": "^3.0.2", + "deepmerge": "^1.5.0", "good": "^7.1.0", "good-console": "^6.4.0", "good-squeeze": "^5.0.2", @@ -40,6 +42,7 @@ "nano": "^6.2.0", "node-fetch": "^1.6.3", "vision": "^4.1.1", - "white-out": "^2.0.0" + "white-out": "^2.0.0", + "wreck": "^13.0.3" } } diff --git a/processing/rendering-info-fetcher.js b/processing/rendering-info-fetcher.js index 67286cdb..88ce0fde 100644 --- a/processing/rendering-info-fetcher.js +++ b/processing/rendering-info-fetcher.js @@ -1,5 +1,7 @@ const querystring = require('querystring'); const fetch = require('node-fetch'); +const clone = require('clone'); +const deepmerge = require('deepmerge'); const Boom = require('boom'); const server = require('../server').getServer(); const deleteMetaProperties = require('../helper/meta-properties').deleteMetaProperties; @@ -13,6 +15,8 @@ function isToolConfiguredForTarget(toolName, target, tools) { } function getRenderingInfo(data, target, toolRuntimeConfig) { + // we will change data in this function, so we clone it here to have be pure + data = clone(data); const toolName = data.tool; if (!isToolConfiguredForTarget(toolName, target, server.settings.app.tools)) { @@ -64,26 +68,47 @@ function getRenderingInfo(data, target, toolRuntimeConfig) { } }) .then(renderingInfo => { - // add the path to the stylesheets returned from rendering service - if (renderingInfo.stylesheets !== undefined && renderingInfo.stylesheets.length > 0) { - for (var i = 0; i < renderingInfo.stylesheets.length; i++) { - let stylesheet = renderingInfo.stylesheets[i]; - if (stylesheet.name !== undefined) { - stylesheet.path = `/tools/${toolName}/stylesheet/${stylesheet.name}`; - } - } - } - // add stylesheets configured in tool config if (endpoint.stylesheets && endpoint.stylesheets.length) { + console.log('DEPRECATION NOTICE: endpoint.stylesheets support will be removed in Q server 3.0. Use endpoint.additionalRenderingInfo.stylesheets'); if (Array.isArray(renderingInfo.stylesheets)) { renderingInfo.stylesheets = renderingInfo.stylesheets.concat(endpoint.stylesheets); } else { renderingInfo.stylesheets = endpoint.stylesheets; } + } + + // add scripts configured in tool config + if (endpoint.scripts && endpoint.scripts.length) { + console.log('DEPRECATION NOTICE: endpoint.scripts support will be removed in Q server 3.0. Use endpoint.additionalRenderingInfo.scripts'); + renderingInfo.scripts = renderingInfo.scripts.concat(endpoint.scripts) } - // add the path to the scripts returned from rendering service + return renderingInfo; + }) + .then(renderingInfo => { + // check if the tool config has additional renderingInfo and apply it if so + if (endpoint.additionalRenderingInfo) { + renderingInfo = deepmerge(renderingInfo, endpoint.additionalRenderingInfo, { + arrayMerge: (destArr, srcArr) => { + return srcArr.concat(destArr); + } + }); + } + return renderingInfo; + }) + .then(renderingInfo => { + // add the path to the stylesheets returned from rendering service if they have a name property + if (renderingInfo.stylesheets !== undefined && renderingInfo.stylesheets.length > 0) { + for (var i = 0; i < renderingInfo.stylesheets.length; i++) { + let stylesheet = renderingInfo.stylesheets[i]; + if (stylesheet.name !== undefined) { + stylesheet.path = `/tools/${toolName}/stylesheet/${stylesheet.name}`; + } + } + } + + // add the path to the scripts returned from rendering service if they have a name property if (renderingInfo.scripts !== undefined && renderingInfo.scripts.length > 0) { for (var i = 0; i < renderingInfo.scripts.length; i++) { let script = renderingInfo.scripts[i]; @@ -93,11 +118,6 @@ function getRenderingInfo(data, target, toolRuntimeConfig) { } } - // add scripts configured in tool config - if (endpoint.scripts && endpoint.scripts.length) { - renderingInfo.scripts = renderingInfo.scripts.concat(endpoint.scripts) - } - return renderingInfo; }) } diff --git a/routes/rendering-info.js b/routes/rendering-info.js index 7eccb99d..2a500f49 100644 --- a/routes/rendering-info.js +++ b/routes/rendering-info.js @@ -5,6 +5,7 @@ const renderingInfoFetcher = require('../processing/rendering-info-fetcher.js'); const getDb = require('../db.js').getDb; const server = require('../server.js').getServer(); +const getCacheControlDirectivesFromConfig = require('../helper/cache.js').getCacheControlDirectivesFromConfig; // size, width and height are optional // if a width or height array is defined the following restrictions apply: @@ -169,10 +170,6 @@ const getRenderingInfoRoute = { allowUnknown: true } }, - cache: { - expiresIn: server.settings.app.misc.get('/cache/cacheControl/maxAge') * 1000, - privacy: 'public' - }, description: 'Returns rendering information for the given graphic id and target (as configured in the environment).', tags: ['api', 'reader-facing'] }, @@ -198,19 +195,23 @@ const getRenderingInfoRoute = { requestToolRuntimeConfig = request.query.toolRuntimeConfig; } + const configCacheControl = getCacheControlDirectivesFromConfig(server); + if (request.query.noCache) { getRenderingInfoForId(request.params.id, request.params.target, requestToolRuntimeConfig, request.query.ignoreInactive, (err, result) => { if (err) { return reply(err); } - reply(result); + return reply(result) + .header('cache-control', 'no-cache'); }) } else { request.server.methods.getRenderingInfoForId(request.params.id, request.params.target, requestToolRuntimeConfig, request.query.ignoreInactive, (err, result) => { if (err) { return reply(err); } - reply(result); + return reply(result) + .header('cache-control', configCacheControl.join(', ')); }) } } diff --git a/routes/routes.js b/routes/routes.js index d1a3d569..4a4af8e5 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -1,7 +1,4 @@ module.exports = [ - require('./tools/script'), - require('./tools/stylesheet'), - require('./tools/locales'), require('./tools/default').get, require('./tools/default').post, diff --git a/routes/tools/default.js b/routes/tools/default.js index 3d5bb785..e4e25955 100644 --- a/routes/tools/default.js +++ b/routes/tools/default.js @@ -1,10 +1,13 @@ const Joi = require('joi'); const Boom = require('boom'); +const Wreck = require('wreck'); const fetch = require('node-fetch'); const querystring = require('querystring'); +const getCacheControlDirectivesFromConfig = require('../../helper/cache.js').getCacheControlDirectivesFromConfig; function handler(request, reply) { const tool = request.server.settings.app.tools.get(`/${request.params.tool}`); + if (!tool) { return reply(Boom.notFound(`Tool ${request.params.tool} is not known`)); } @@ -16,6 +19,53 @@ function handler(request, reply) { return reply.proxy({ uri: `${tool.baseUrl}/${request.params.path}?${queryString}`, + ttl: 'upstream', + onResponse: (err, res, proxyRequest, reply, settings, ttl) => { + if (err) { + return reply(err); + } + + const configCacheControl = getCacheControlDirectivesFromConfig(request.server); + + // if a tool has set a Cache Control header, we honor it but add some additional directives for the CDN + if (res.headers['cache-control']) { + + const responseCacheControl = Wreck.parseCacheControl(res.headers['cache-control']); + const defaultCacheControl = Wreck.parseCacheControl(configCacheControl.join(', ')); + + // in any case we want the CDN to return a stale copy if it has one + if (!responseCacheControl['stale-if-error']) { + responseCacheControl['stale-if-error'] = defaultCacheControl['stale-if-error']; + } + + // the CDN should only get specific caching instructions if we do not have no-cache set + if (responseCacheControl['no-cache'] !== true) { + // s-maxage and stale-while-revalidate headers get defaulted if not given + if (!responseCacheControl['s-maxage']) { + responseCacheControl['s-maxage'] = defaultCacheControl['s-maxage']; + } + if (!responseCacheControl['stale-while-revalidate']) { + responseCacheControl['stale-while-revalidate'] = defaultCacheControl['stale-while-revalidate']; + } + } + + res.headers['cache-control'] = Object.keys(responseCacheControl) + .map(directive => { + if (responseCacheControl[directive] === true) { + return `${directive}` + } + return `${directive}=${responseCacheControl[directive]}`; + }) + .join(', ') + + return reply(res); + } + + // if no Cache Control header is given from the tool we add a default one here for sanity + // if a tool does not want a resource to be cached, it should respond with Cache-Control: no-cache + return reply(res) + .header('cache-control', configCacheControl.join(', ')); + } }) } diff --git a/routes/tools/locales.js b/routes/tools/locales.js deleted file mode 100644 index 99f2c401..00000000 --- a/routes/tools/locales.js +++ /dev/null @@ -1,56 +0,0 @@ -const fetch = require('node-fetch'); -const server = require('../../server').getServer(); -const Boom = require('boom'); - -var getTranslations = function(tool, lng, next) { - const baseUrl = server.settings.app.tools.get(`/${tool}/baseUrl`); - fetch(`${baseUrl}/locales/${lng}/translation.json`) - .then(response => { - if (!response.ok || response.status >= 400) { - throw Boom.create(response.status, response.statusText); - } - return response.json(); - }) - .then(translation => { - next(null, translation); - }) - .catch(err => { - if (err.isBoom) { - next(err, null); - } else { - const error = Boom.badRequest(); - next(error, null); - } - }) -} - -server.method('getTranslations', getTranslations, { - cache: { - expiresIn: server.settings.app.misc.get('/cache/serverCacheTime'), - generateTimeout: 10000 - } -}); - -var route = { - method: 'GET', - path: '/tools/{tool}/locales/{lng}/translation.json', - config: { - cache: { - expiresIn: server.settings.app.misc.get('/cache/cacheControl/maxAge') * 1000, - privacy: 'public' - }, - description: 'Returns the translations by the given language by proxying the renderer service for the given tool as defined in the environment', - tags: ['api', 'editor', 'non-critical'] - }, - handler: function(request, reply) { - let lng = request.params.lng; - request.server.methods.getTranslations(request.params.tool, lng, (err, result) => { - if (err) { - return reply(err); - } - return reply(result); - }) - } -} - -module.exports = route; diff --git a/routes/tools/script.js b/routes/tools/script.js deleted file mode 100644 index 26d01749..00000000 --- a/routes/tools/script.js +++ /dev/null @@ -1,56 +0,0 @@ -const fetch = require('node-fetch'); -const server = require('../../server').getServer(); -const Boom = require('boom'); - -var getScript = function(tool, scriptName, next) { - const baseUrl = server.settings.app.tools.get(`/${tool}/baseUrl`); - fetch(`${baseUrl}/script/${scriptName}`) - .then(response => { - if (!response.ok) { - throw Boom.create(response.status, response.statusText); - } - return response.text(); - }) - .then(script => { - next(null, script); - }) - .catch(err => { - if (err.isBoom) { - next(err, null); - } else { - const error = Boom.badRequest(); - next(error, null); - } - }) -} - -server.method('getScript', getScript, { - cache: { - expiresIn: server.settings.app.misc.get('/cache/serverCacheTime'), - generateTimeout: 10000 - } -}); - -var scriptRoute = { - method: 'GET', - path: '/tools/{tool}/script/{scriptName}', - config: { - cache: { - expiresIn: server.settings.app.misc.get('/cache/cacheControl/maxAge') * 1000, - privacy: 'public' - }, - description: 'Returns the script by the given name by proxying the renderer service for the given tool as defined in the environment', - tags: ['api', 'reader-facing'] - }, - handler: function(request, reply) { - let scriptName = request.params.scriptName; - request.server.methods.getScript(request.params.tool, scriptName, (err, result) => { - if (err) { - return reply(err); - } - return reply(result).type('text/javascript'); - }) - } -} - -module.exports = scriptRoute; diff --git a/routes/tools/stylesheet.js b/routes/tools/stylesheet.js deleted file mode 100644 index c2f77c1f..00000000 --- a/routes/tools/stylesheet.js +++ /dev/null @@ -1,55 +0,0 @@ -const fetch = require('node-fetch'); -const server = require('../../server').getServer(); -const Boom = require('boom'); - -var getStylesheet = function(tool, stylesheetName, next) { - const baseUrl = server.settings.app.tools.get(`/${tool}/baseUrl`); - fetch(`${baseUrl}/stylesheet/${stylesheetName}`) - .then(response => { - if (!response.ok) { - throw Boom.create(response.status, response.statusText); - } - return response.text(); - }) - .then(stylesheet => { - next(null, stylesheet); - }) - .catch(err => { - if (err.isBoom) { - next(err, null); - } else { - const error = Boom.badRequest(); - next(error, null); - } - }) -} - -server.method('getStylesheet', getStylesheet, { - cache: { - expiresIn: server.settings.app.misc.get('/cache/serverCacheTime'), - generateTimeout: 10000 - } -}); - -var styleRoute = { - method: 'GET', - path: '/tools/{tool}/stylesheet/{stylesheetName}', - config: { - cache: { - expiresIn: server.settings.app.misc.get('/cache/cacheControl/maxAge') * 1000, - privacy: 'public' - }, - description: 'Returns the css by the given name by proxying the renderer service for the given tool as defined in the environment', - tags: ['api', 'reader-facing'] - }, - handler: function(request, reply) { - request.server.methods.getStylesheet(request.params.tool, request.params.stylesheetName, (err, result) => { - if (err) { - return reply(err); - } - return reply(result).type('text/css') - }) - } -} - -module.exports = styleRoute;