├── .dockerignore ├── .editorconfig ├── .eslintrc ├── .gitattributes ├── .gitignore ├── .istanbul.yml ├── .travis.yml ├── .yarnrc ├── Dockerfile ├── LICENSE ├── README.md ├── bin ├── development.sh ├── sample.dev.env ├── sample.test.env ├── test.sh └── wait-for-it.sh ├── config ├── custom-environment-variables.json ├── default.json └── test.json ├── docker-compose.test.yml ├── docker-compose.yml ├── index.js ├── package.json ├── plugins.js ├── routes.js ├── server.js ├── server ├── utils │ └── logger.js └── weather │ ├── weatherCtrl.js │ ├── weatherHandler.js │ ├── weatherRoutes.js │ ├── weatherService.js │ └── weatherValidations.js ├── test ├── index.test.js ├── integration │ └── weather │ │ └── weather.test.js └── unit │ └── weather │ └── weatherService.test.js └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | *.md 3 | coverage 4 | node_modules 5 | .* 6 | !.eslintrc 7 | !.istanbul.yml 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "standard", 3 | "rules": { 4 | "generator-star-spacing": ["error", { "before": false, "after": true }], 5 | "no-use-before-define": ["error", { "functions": false, "classes": true, "variables": true }], 6 | "operator-linebreak": ["error", "after"], 7 | "padded-blocks": "off" 8 | }, 9 | "env": { 10 | "mocha": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Convert text file line endings to lf 2 | * text=auto 3 | *.js text 4 | # Denote all files that are truly binary and should not be modified. 5 | *.mp4 binary 6 | *.jpg binary 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | 13 | # Directory for instrumented libs generated by jscoverage/JSCover 14 | lib-cov 15 | 16 | # Coverage directory used by tools like istanbul 17 | coverage 18 | 19 | # nyc test coverage 20 | .nyc_output 21 | 22 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 23 | .grunt 24 | 25 | # node-waf configuration 26 | .lock-wscript 27 | 28 | # Compiled binary addons (http://nodejs.org/api/addons.html) 29 | build/Release 30 | 31 | # Dependency directories 32 | node_modules 33 | jspm_packages 34 | 35 | # Optional npm cache directory 36 | .npm 37 | 38 | # Optional REPL history 39 | .node_repl_history 40 | 41 | # Jetbrains dir 42 | .idea/ 43 | 44 | .DS_Store 45 | 46 | # github dir 47 | .github/ 48 | 49 | # .env files 50 | bin/dev.env 51 | bin/test.env 52 | -------------------------------------------------------------------------------- /.istanbul.yml: -------------------------------------------------------------------------------- 1 | verbose: false 2 | instrumentation: 3 | excludes: ['coverage/**', 'index.js'] 4 | include-all-sources: true 5 | reporting: 6 | print: summary 7 | reports: 8 | - lcov 9 | dir: ./coverage 10 | watermarks: 11 | statements: [50, 70] 12 | lines: [50, 70] 13 | functions: [50, 70] 14 | branches: [50, 70] 15 | check: 16 | global: 17 | statements: 50 18 | lines: 50 19 | branches: 50 20 | functions: 50 21 | each: 22 | statements: 50 23 | lines: 50 24 | branches: 50 25 | functions: 50 26 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8.4" 4 | cache: 5 | directories: 6 | - node_modules 7 | git: 8 | depth: 3 9 | script: 10 | - yarn test 11 | after_script: 12 | - yarn report-coverage 13 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | save-prefix false 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Use latest version of node v8 2 | FROM node:8.4.0 3 | 4 | #create an app directory 5 | RUN mkdir /app 6 | 7 | #make /app as the working directory 8 | WORKDIR /app 9 | 10 | COPY package.json yarn.lock /app/ 11 | 12 | # update the package manager, install git. 13 | # install all the prod dependency and remove the unnnecessary packages again to make the build size small. 14 | # --pure-lockfile: Don’t generate a yarn.lock lockfile 15 | RUN yarn --production --pure-lockfile 16 | 17 | COPY . /app/ 18 | 19 | #expose default port of the docker to 3000 20 | EXPOSE 3030 21 | 22 | #runs this command when the container is created, can be overriden in the docker-compose.yml 23 | CMD ["yarn", "start"] 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Crowdfire Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hapi Starter Kit | Hapi based REST application boilerplate, uses async/await 2 | 3 | [![Build Status](https://img.shields.io/travis/Codigami/hapi-starter-kit/master.svg?style=flat-square)](https://travis-ci.org/Codigami/hapi-starter-kit) 4 | [![Code Climate](https://codeclimate.com/github/Codigami/hapi-starter-kit/badges/gpa.svg)](https://codeclimate.com/github/Codigami/hapi-starter-kit) 5 | [![Test Coverage](https://codeclimate.com/github/Codigami/hapi-starter-kit/badges/coverage.svg)](https://codeclimate.com/github/Codigami/hapi-starter-kit/coverage) 6 | [![bitHound Overall Score](https://www.bithound.io/github/Codigami/hapi-starter-kit/badges/score.svg)](https://www.bithound.io/github/Codigami/hapi-starter-kit) 7 | [![bitHound Dependencies](https://www.bithound.io/github/Codigami/hapi-starter-kit/badges/dependencies.svg)](https://www.bithound.io/github/Codigami/hapi-starter-kit/master/dependencies/npm) 8 | [![MIT License](https://img.shields.io/npm/l/stack-overflow-copy-paste.svg?style=flat-square)](http://opensource.org/licenses/MIT) 9 | [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) 10 | 11 | ## Overview 12 | 13 | A lean boilerplate application for building RESTful APIs (Microservice) in Node.js using [hapi.js](https://github.com/hapijs/hapi). 14 | Follows industry standard best practices, and uses latest [async/await](https://blog.risingstack.com/mastering-async-await-in-nodejs/) ES8 feature. 15 | Bring your own front-end. 16 | Plug-in your own Database. 17 | 18 | ## Features 19 | 20 | | Feature | Summary | 21 | |-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 22 | | Uses latest ES8/ES2017 features (async/await) | Uses latest ES7 and ES8 features including async/await | 23 | | Application Configuration via [config](https://github.com/lorenwest/node-config) | Node-config organizes hierarchical configurations for your app deployments. It lets you define a set of default parameters, and extend them for different deployment environments (development, qa, staging, production, etc.). 24 | | Auto Documentation via [hapi-swagger](https://www.npmjs.com/package/hapi-swagger) | This will self document the API interface. You can also tests your APIs using the Swagger interface. 25 | | Unit and Integration Tests via [Mocha](https://mochajs.org/) with async/await | Demo unit and integration tests using latest ES7/ES8 features. 26 | | Code Coverage via [istanbul](https://www.npmjs.com/package/istanbul) | Supports code coverage of ES8 code using istanbul and mocha. Code coverage reports are saved in `coverage/` directory post `yarn test` execution. Open `coverage/lcov-report/index.html` to view coverage report. `yarn test` also displays code coverage summary on console. Code coverage can also be enforced overall and per file as well, configured via .istanbul.yml | 27 | | Logging via [bunyan](https://www.npmjs.com/package/bunyan) | Bunyan is simple and fast JSON logging library. Logs timestamp, machine name and process ID and most importantly makes it really easy to parse logs as it logs in JSON format. You can selectively turn on/off logs by setting log level via LOG_LEVEL env variable. 28 | | Code Linting via [Standard](https://github.com/standard/standard) | JavaScript code linting is done using [ESLint](http://eslint.org) - a pluggable linter tool for identifying and reporting on patterns in JavaScript. 29 | | API parameter validation via [joi](https://www.npmjs.com/package/joi) | Validate body, params, query, headers and cookies of a request (via middleware) and return a response with errors; if any of the configured validation rules fail. You won't anymore need to make your route handler dirty with such validations. | 30 | | Application monitoring via [New Relic](https://newrelic.com/application-monitoring) | Set `NEW_RELIC_APP_NAME` and `NEW_RELIC_LICENSE_KEY` environment variables in production environment to get metrics in New Relic Dashboard | 31 | | Pre-commit hooks via [husky](https://www.npmjs.com/package/husky) | Runs lint and tests before any commit is made locally, making sure that only tested and quality code goes through 32 | | Uses [Sinon](https://www.npmjs.com/package/sinon) for spies, stubs and mocks | Standalone and test framework agnostic JavaScript test spies, stubs and mocks 33 | | Uses [nock](https://www.npmjs.com/package/nock) for mocking http requests in integration tests | Nock is an HTTP mocking and expectations library. It can be used to test modules that perform HTTP requests in isolation. 34 | | Uses [yarn](https://yarnpkg.com) over npm | Uses new released yarn package manager by facebook. You can read more about it [here](https://code.facebook.com/posts/1840075619545360) | 35 | | [Docker](https://www.docker.com/) compatible | Docker and [Docker Compose](https://docs.docker.com/compose/overview/) files to develop and deploy via Docker | 36 | | Uses [EditorConfig](http://editorconfig.org/) | EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs | 37 | 38 | ## Requirements 39 | - [node.js](https://nodejs.org/en/download/current/) >= `8.4.0` 40 | - [yarn](https://yarnpkg.com/en/docs/install) >= `0.27.5` 41 | - [docker](https://docs.docker.com/engine/installation/#supported-platforms) 42 | - Docker is optional and is required only if you want to develop and deploy using Docker 43 | 44 | ## Getting Started 45 | ```bash 46 | # Install dependencies 47 | $ yarn 48 | ``` 49 | ![yarn](https://user-images.githubusercontent.com/4172932/29668267-2b4777f6-88fd-11e7-8006-dd0bcc5cb474.png) 50 | 51 | ```bash 52 | # Start Server 53 | # Set environment variables defined in `config/custom-environment-variables.json` like `OPEN_WEATHER_API_KEY=xxx` 54 | $ yarn start 55 | ``` 56 | ![yarn start](https://user-images.githubusercontent.com/4172932/29668371-9010e5dc-88fd-11e7-9327-68fa1e7944e3.png) 57 | 58 | ```bash 59 | # Try GET /ping to make sure server is up 60 | $ curl http://localhost:3030/ping 61 | ``` 62 | 63 | ```bash 64 | # Run Tests 65 | $ yarn test 66 | ``` 67 | ![yarn test](https://user-images.githubusercontent.com/4172932/29669393-ea39b5a4-8900-11e7-80f3-ed3256191ecb.png) 68 | 69 | 70 | ## Docker 71 | 72 | #### Development 73 | ```bash 74 | # copy sample.dev.env to dev.env 75 | $ cp bin/sample.dev.env bin/dev.env 76 | ``` 77 | 78 | ```bash 79 | # Start Server 80 | $ bash bin/development.sh 81 | ``` 82 | ![Docker Development](https://user-images.githubusercontent.com/4172932/29667973-22ae5642-88fc-11e7-8255-9413c8dc037c.png) 83 | 84 | ### Tests 85 | 86 | ```bash 87 | # copy sample.test.env to test.env 88 | $ cp bin/sample.test.env bin/test.env 89 | ``` 90 | 91 | ```bash 92 | # Run Tests 93 | $ bash bin/test.sh 94 | ``` 95 | ![docker test](https://user-images.githubusercontent.com/4172932/29669714-f5ad82ac-8901-11e7-86ae-a9af82ca152c.png) 96 | 97 | ## Environment Configuration 98 | [config](https://github.com/lorenwest/node-config) is used to configure application. 99 | - Default values of environment variables, which are common across all environments can be configured via `config/default.json` 100 | - Values specific to a particular environment can be set by creating a file with same name in config directory. Like `config/test/json` for test environment. 101 | - `config/custom-environment-variables` is used to read values from environment variables. For ex. if `APP_PORT` env var is set it can be accessed as `config.get('app.port')`. 102 | You can read more on custom environment variables [here](https://github.com/lorenwest/node-config/wiki/Environment-Variables#custom-environment-variables). 103 | 104 | ## More Tasks 105 | ```bash 106 | # Run lint 107 | yarn lint 108 | ``` 109 | ![yarn lint](https://user-images.githubusercontent.com/4172932/29670154-7207532c-8903-11e7-9695-32fa4c25122c.png) 110 | 111 | ## Deployment 112 | - Simply set environment variables defined in `bin/sample.dev.env` in your own environment (AWS, Heroku etc) and `yarn start` 113 | 114 | #### Docker 115 | - Build the docker image 116 | - `docker build -t hapi-starter-kit-oss .` 117 | - Start Docker Container 118 | - `docker run -d -p 3030:3030 --name hapi-starter-kit-oss hapi-starter-kit-oss` 119 | 120 | ## Documentation 121 | - `hapi-swagger` self documents all the APIs. 122 | - Visit `http://localhost:3030/documentation` to access the documentation after starting the server. 123 | ![Documentation](https://user-images.githubusercontent.com/4172932/29810159-75a90d10-8cbc-11e7-986d-4059315052d6.png) 124 | 125 | ## Miscellaneous 126 | - To turn off logs getting logged via `good-console` in development environment, remove it from `plugins.js` 127 | 128 | ## Issues 129 | Please feel free to open an issue if you can have any questions or trouble using this starter kit. 130 | 131 | ## Contributions 132 | Contributions are all welcome and encouraged. For code contributions submit a pull request with unit test. 133 | 134 | ## License 135 | This project is licensed under the [MIT License](https://github.com/Codigami/hapi-starter-kit/blob/master/LICENSE) 136 | 137 | -------------------------------------------------------------------------------- /bin/development.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker-compose up --build --abort-on-container-exit 4 | 5 | -------------------------------------------------------------------------------- /bin/sample.dev.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=development 2 | APP_NAME=hapi-starter-kit 3 | APP_PORT=3030 4 | LOG_LEVEL=info 5 | OPEN_WEATHER_API_KEY=xxx 6 | NEW_RELIC_APP_NAME=hapi-starter-kit 7 | NEW_RELIC_LICENSE_KEY=xxx 8 | -------------------------------------------------------------------------------- /bin/sample.test.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=test 2 | APP_NAME=hapi-starter-kit 3 | APP_PORT=3030 4 | LOG_LEVEL=fatal 5 | OPEN_WEATHER_API_KEY=xxx 6 | NEW_RELIC_APP_NAME=hapi-starter-kit 7 | NEW_RELIC_LICENSE_KEY=xxx 8 | -------------------------------------------------------------------------------- /bin/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export IMAGE_NAME="${REPO_NAME:-hapi-starter-kit}:${REPO_TAG:-latest}" 4 | docker-compose -f 'docker-compose.test.yml' -p ci up --build --abort-on-container-exit 5 | exit $(docker wait ci_hapi-starter-kit_1) 6 | 7 | 8 | -------------------------------------------------------------------------------- /bin/wait-for-it.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Use this script to test if a given TCP host/port are available 3 | # Reference: https://github.com/vishnubob/wait-for-it 4 | 5 | cmdname=$(basename $0) 6 | 7 | echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } 8 | 9 | usage() 10 | { 11 | cat << USAGE >&2 12 | Usage: 13 | $cmdname host:port [-s] [-t timeout] [-- command args] 14 | -h HOST | --host=HOST Host or IP under test 15 | -p PORT | --port=PORT TCP port under test 16 | Alternatively, you specify the host and port as host:port 17 | -s | --strict Only execute subcommand if the test succeeds 18 | -q | --quiet Don't output any status messages 19 | -t TIMEOUT | --timeout=TIMEOUT 20 | Timeout in seconds, zero for no timeout 21 | -- COMMAND ARGS Execute command with args after the test finishes 22 | USAGE 23 | exit 1 24 | } 25 | 26 | wait_for() 27 | { 28 | if [[ $TIMEOUT -gt 0 ]]; then 29 | echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT" 30 | else 31 | echoerr "$cmdname: waiting for $HOST:$PORT without a timeout" 32 | fi 33 | start_ts=$(date +%s) 34 | while : 35 | do 36 | (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 37 | result=$? 38 | if [[ $result -eq 0 ]]; then 39 | end_ts=$(date +%s) 40 | echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds" 41 | break 42 | fi 43 | sleep 1 44 | done 45 | return $result 46 | } 47 | 48 | wait_for_wrapper() 49 | { 50 | # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 51 | if [[ $QUIET -eq 1 ]]; then 52 | timeout $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & 53 | else 54 | timeout $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & 55 | fi 56 | PID=$! 57 | trap "kill -INT -$PID" INT 58 | wait $PID 59 | RESULT=$? 60 | if [[ $RESULT -ne 0 ]]; then 61 | echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT" 62 | fi 63 | return $RESULT 64 | } 65 | 66 | # process arguments 67 | while [[ $# -gt 0 ]] 68 | do 69 | case "$1" in 70 | *:* ) 71 | hostport=(${1//:/ }) 72 | HOST=${hostport[0]} 73 | PORT=${hostport[1]} 74 | shift 1 75 | ;; 76 | --child) 77 | CHILD=1 78 | shift 1 79 | ;; 80 | -q | --quiet) 81 | QUIET=1 82 | shift 1 83 | ;; 84 | -s | --strict) 85 | STRICT=1 86 | shift 1 87 | ;; 88 | -h) 89 | HOST="$2" 90 | if [[ $HOST == "" ]]; then break; fi 91 | shift 2 92 | ;; 93 | --host=*) 94 | HOST="${1#*=}" 95 | shift 1 96 | ;; 97 | -p) 98 | PORT="$2" 99 | if [[ $PORT == "" ]]; then break; fi 100 | shift 2 101 | ;; 102 | --port=*) 103 | PORT="${1#*=}" 104 | shift 1 105 | ;; 106 | -t) 107 | TIMEOUT="$2" 108 | if [[ $TIMEOUT == "" ]]; then break; fi 109 | shift 2 110 | ;; 111 | --timeout=*) 112 | TIMEOUT="${1#*=}" 113 | shift 1 114 | ;; 115 | --) 116 | shift 117 | CLI="$@" 118 | break 119 | ;; 120 | --help) 121 | usage 122 | ;; 123 | *) 124 | echoerr "Unknown argument: $1" 125 | usage 126 | ;; 127 | esac 128 | done 129 | 130 | if [[ "$HOST" == "" || "$PORT" == "" ]]; then 131 | echoerr "Error: you need to provide a host and port to test." 132 | usage 133 | fi 134 | 135 | TIMEOUT=${TIMEOUT:-15} 136 | STRICT=${STRICT:-0} 137 | CHILD=${CHILD:-0} 138 | QUIET=${QUIET:-0} 139 | 140 | if [[ $CHILD -gt 0 ]]; then 141 | wait_for 142 | RESULT=$? 143 | exit $RESULT 144 | else 145 | if [[ $TIMEOUT -gt 0 ]]; then 146 | wait_for_wrapper 147 | RESULT=$? 148 | else 149 | wait_for 150 | RESULT=$? 151 | fi 152 | fi 153 | 154 | if [[ $CLI != "" ]]; then 155 | if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then 156 | echoerr "$cmdname: strict mode, refusing to execute subprocess" 157 | exit $RESULT 158 | fi 159 | exec $CLI 160 | else 161 | exit $RESULT 162 | fi 163 | -------------------------------------------------------------------------------- /config/custom-environment-variables.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": { 3 | "port": "APP_PORT", 4 | "name": "APP_NAME", 5 | "logLevel": "LOG_LEVEL" 6 | }, 7 | "openWeather": { 8 | "apiKey": "OPEN_WEATHER_API_KEY" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /config/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": { 3 | "port": "3030", 4 | "name": "hapi-starter-kit", 5 | "logLevel": "info" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /config/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": { 3 | "logLevel": "fatal" 4 | }, 5 | "openWeather": { 6 | "apiKey": "2b203abc44d124cbe6fe803dd3a9c02e" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docker-compose.test.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | hapi-starter-kit: 5 | build: 6 | context: . 7 | image: ${IMAGE_NAME} 8 | # Disable mounting of volumes if packages are not installed locally. 9 | volumes: 10 | - /app/node_modules 11 | env_file: 12 | - bin/test.env 13 | # The docker image already contains production code with dependencies; 14 | # hence we only need to add the dependencies for running the full suite 15 | # of tests. 16 | command: 17 | - /bin/bash 18 | - -c 19 | - yarn && yarn test 20 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | hapi-starter-kit: 5 | build: 6 | context: . 7 | # Disable mounting of volumes if packages are not installed locally. 8 | volumes: 9 | - .:/app 10 | # Wait for aerospike to be available on port 3000 before starting application 11 | # command: ["./bin/wait-for-it.sh", "aerospike:3000", "--", "yarn", "start"] 12 | env_file: 13 | - bin/dev.env 14 | # Pick ports from config or env. 15 | ports: 16 | - "3030:3030" 17 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | // require new relic at the top only in production environment 4 | if (process.env.NODE_ENV === 'production') { 5 | require('newrelic') 6 | } 7 | 8 | const config = require('config') 9 | 10 | const server = require('./server') 11 | const logger = require('./server/utils/logger') 12 | 13 | const gracefulStopServer = function () { 14 | // Wait 10 secs for existing connection to close and then exit. 15 | server.stop({timeout: 10 * 1000}, () => { 16 | logger.info('Shutting down server') 17 | process.exit(0) 18 | }) 19 | } 20 | 21 | process.on('uncaughtException', err => { 22 | logger.error(err, 'Uncaught exception') 23 | process.exit(1) 24 | }) 25 | 26 | process.on('unhandledRejection', (reason, promise) => { 27 | logger.error({ 28 | promise: promise, 29 | reason: reason 30 | }, 'unhandledRejection') 31 | process.exit(1) 32 | }) 33 | 34 | process.on('SIGINT', gracefulStopServer) 35 | process.on('SIGTERM', gracefulStopServer) 36 | 37 | /** 38 | * Starts the server 39 | * @returns {Promise.} 40 | */ 41 | const startServer = async function () { 42 | try { 43 | // add things here before the app starts, like database connection check etc 44 | await server.start() 45 | logger.info(`server started at port: ${config.get('app.port')} with env: ${config.util.getEnv('NODE_ENV')}`) 46 | } catch (error) { 47 | logger.error(error) 48 | process.exit(1) 49 | } 50 | } 51 | 52 | startServer() 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hapi-starter-kit", 3 | "version": "2.0.0", 4 | "description": "Hapi Starter Kit", 5 | "author": "Kunal Kapadia", 6 | "license": "MIT", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/Codigami/hapi-starter-kit" 10 | }, 11 | "main": "index.js", 12 | "engines": { 13 | "node": ">=8.3.0", 14 | "npm": ">=5.3.0", 15 | "yarn": ">=0.27.5" 16 | }, 17 | "scripts": { 18 | "start": "node index.js", 19 | "lint": "eslint *.js server test config bin && echo Lint Passed ❤", 20 | "test": "NODE_ENV=test istanbul --include-all-sources cover _mocha -- -u bdd $(find test -name '*.js') && istanbul check-coverage && echo All tests passed 👍", 21 | "precommit": "yarn lint && yarn test", 22 | "report-coverage": "codeclimate-test-reporter < ./coverage/lcov.info" 23 | }, 24 | "dependencies": { 25 | "axios": "0.16.2", 26 | "bluebird": "3.5.0", 27 | "boom": "5.2.0", 28 | "bunyan": "1.8.12", 29 | "config": "1.26.2", 30 | "glob": "7.1.2", 31 | "good": "7.3.0", 32 | "good-console": "6.4.0", 33 | "hapi": "16.5.2", 34 | "hapi-swagger": "7.7.1", 35 | "http-status": "1.0.1", 36 | "inert": "4.2.1", 37 | "joi": "10.6.0", 38 | "lodash": "4.17.4", 39 | "newrelic": "2.2.0", 40 | "vision": "4.1.1" 41 | }, 42 | "devDependencies": { 43 | "chai": "4.1.1", 44 | "codeclimate-test-reporter": "0.5.0", 45 | "eslint": "4.5.0", 46 | "eslint-config-standard": "10.2.1", 47 | "eslint-plugin-import": "2.7.0", 48 | "eslint-plugin-node": "5.1.1", 49 | "eslint-plugin-promise": "3.5.0", 50 | "eslint-plugin-standard": "3.0.1", 51 | "husky": "0.14.3", 52 | "istanbul": "1.1.0-alpha.1", 53 | "mocha": "3.5.0", 54 | "nock": "9.0.14", 55 | "sinon": "3.2.1", 56 | "sinon-chai": "2.13.0" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /plugins.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * Vendor modules 5 | */ 6 | const Inert = require('inert') 7 | const Vision = require('vision') 8 | const HapiSwagger = require('hapi-swagger') 9 | const Good = require('good') 10 | const config = require('config') 11 | 12 | /** 13 | * Internal modules 14 | */ 15 | const Package = require('./package.json') 16 | 17 | const DEVELOPMENT = 'development' 18 | 19 | /** 20 | * exports array of plugins with configuration. 21 | * @type {Array} 22 | */ 23 | let plugins = [] 24 | 25 | if (config.util.getEnv('NODE_ENV') === DEVELOPMENT) { 26 | 27 | // add hapi swagger integration 28 | plugins = plugins.concat([Inert, 29 | Vision, 30 | { 31 | register: HapiSwagger, 32 | options: { 33 | info: { 34 | 'title': Package.description, 35 | 'version': Package.version 36 | }, 37 | pathPrefixSize: 4 38 | } 39 | }]) 40 | 41 | // add good console for log reporting 42 | plugins.push({ 43 | register: Good, 44 | options: { 45 | reporters: { 46 | console: [{ 47 | module: 'good-console' 48 | }, 'stdout'] 49 | } 50 | } 51 | }) 52 | } 53 | 54 | module.exports = plugins 55 | -------------------------------------------------------------------------------- /routes.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const glob = require('glob') 4 | const path = require('path') 5 | const _ = require('lodash') 6 | 7 | // add ping route by default for health check 8 | const routes = [{ 9 | method: 'GET', 10 | path: '/ping', 11 | handler: function (request, reply) { 12 | return reply('pong') 13 | }, 14 | config: { 15 | tags: ['api'] 16 | } 17 | }] 18 | 19 | // add all routes from all modules to the routes array manually or write your routes inside a folder inside the server folder 20 | // with suffix as Routes.js e.g weatherRoutes.js 21 | glob.sync('./server/**/*Routes.js').forEach((file) => { 22 | routes.push(require(path.resolve(file))) 23 | }) 24 | 25 | // export routes 26 | module.exports = _.flattenDeep(routes) 27 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const Hapi = require('hapi') 4 | const config = require('config') 5 | 6 | const routes = require('./routes') 7 | const plugins = require('./plugins') 8 | const logger = require('./server/utils/logger') 9 | 10 | const server = new Hapi.Server() 11 | 12 | server.connection({ 13 | port: config.get('app.port') 14 | }) 15 | 16 | // attach routes here 17 | server.route(routes) 18 | 19 | // register plugins 20 | const registerPlugins = async () => { 21 | try { 22 | await server.register(plugins) 23 | } catch (error) { 24 | logger.error(error, 'Failed to register hapi plugins') 25 | throw error 26 | } 27 | } 28 | 29 | registerPlugins() 30 | 31 | // export modules 32 | module.exports = server 33 | -------------------------------------------------------------------------------- /server/utils/logger.js: -------------------------------------------------------------------------------- 1 | const bunyan = require('bunyan') 2 | const config = require('config') 3 | 4 | // create a logger instance 5 | const log = bunyan.createLogger({ 6 | name: config.get('app.name'), 7 | level: config.get('app.logLevel'), 8 | serializers: bunyan.stdSerializers 9 | }) 10 | 11 | module.exports = log 12 | -------------------------------------------------------------------------------- /server/weather/weatherCtrl.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const weatherService = require('./weatherService') 4 | 5 | const getWeatherByCityName = async function (cityName) { 6 | return weatherService.getWeatherByCityName(cityName) 7 | } 8 | 9 | module.exports = { 10 | getWeatherByCityName 11 | } 12 | -------------------------------------------------------------------------------- /server/weather/weatherHandler.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const boom = require('boom') 4 | const httpStatus = require('http-status') 5 | 6 | const weatherCtrl = require('./weatherCtrl') 7 | const logger = require('../utils/logger') 8 | 9 | const getWeatherByCityName = async function (req, res) { 10 | const cityName = req.query.cityName 11 | 12 | try { 13 | const data = await weatherCtrl.getWeatherByCityName(cityName) 14 | return res({ 15 | name: data.name, 16 | coord: data.coord, 17 | weather: data.weather 18 | }) 19 | } catch (error) { 20 | const errorMessage = `Failed to fetch weather for ${cityName}` 21 | !error.logged && logger.error(error, errorMessage) 22 | return res(boom.boomify(error, { statusCode: httpStatus.INTERNAL_SERVER_ERROR, message: errorMessage })) 23 | } 24 | } 25 | 26 | module.exports = { 27 | getWeatherByCityName 28 | } 29 | -------------------------------------------------------------------------------- /server/weather/weatherRoutes.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const config = require('config') 4 | 5 | const weatherHandler = require('./weatherHandler') 6 | const weatherValidations = require('./weatherValidations') 7 | 8 | const API_PATH = '/' + config.get('app.name') + '/api/1.0' 9 | 10 | const routes = [] 11 | 12 | // GET /getWeatherByCityName 13 | routes.push({ 14 | path: API_PATH + '/getWeatherByCityName', 15 | method: 'GET', 16 | handler: weatherHandler.getWeatherByCityName, 17 | config: { 18 | tags: ['api'], 19 | validate: weatherValidations.getWeatherByCityName 20 | } 21 | }) 22 | 23 | module.exports = routes 24 | -------------------------------------------------------------------------------- /server/weather/weatherService.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const axios = require('axios') 4 | const config = require('config') 5 | const logger = require('../utils/logger') 6 | 7 | const getWeatherByCityName = async function (cityName) { 8 | const options = { 9 | method: 'get', 10 | url: 'http://api.openweathermap.org/data/2.5/weather', 11 | params: { 12 | q: cityName, 13 | APPID: config.get('openWeather.apiKey') 14 | } 15 | } 16 | 17 | try { 18 | const response = await axios(options) 19 | return response.data 20 | } catch (error) { 21 | logger.error(error, `Failed to fetch weather for ${cityName}`) 22 | error.logged = true 23 | throw error 24 | } 25 | } 26 | 27 | module.exports = { 28 | getWeatherByCityName 29 | } 30 | -------------------------------------------------------------------------------- /server/weather/weatherValidations.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const joi = require('joi') 4 | 5 | const weatherValidations = { 6 | // GET /getWeatherByCityName 7 | getWeatherByCityName: { 8 | headers: {}, 9 | query: { 10 | cityName: joi.string().trim().required().description('name of the city whose weather is to be fetched') 11 | }, 12 | options: { 13 | allowUnknown: true 14 | } 15 | } 16 | } 17 | 18 | module.exports = weatherValidations 19 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * Root level hook 5 | */ 6 | 7 | before((done) => { 8 | done() 9 | }) 10 | 11 | after((done) => { 12 | done() 13 | }) 14 | -------------------------------------------------------------------------------- /test/integration/weather/weather.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /* eslint-disable max-nested-callbacks */ 4 | 5 | const Promise = require('bluebird') 6 | const httpStatus = require('http-status') 7 | const chai = require('chai') 8 | const sinon = require('sinon') 9 | const sinonChai = require('sinon-chai') 10 | const config = require('config') 11 | 12 | const weatherService = require('../../../server/weather/weatherService') 13 | const server = require('./../../../server.js') 14 | 15 | const API_PATH = `/${config.get('app.name')}/api/1.0` 16 | 17 | chai.should() 18 | chai.use(sinonChai) 19 | 20 | const apiResponse = { 21 | 'name': 'Mumbai', 22 | 'coord': { 23 | 'lon': 73.02, 24 | 'lat': 19.04 25 | }, 26 | 'weather': [ 27 | { 28 | 'id': 500, 29 | 'main': 'Rain', 30 | 'description': 'light rain', 31 | 'icon': '10d' 32 | } 33 | ] 34 | } 35 | 36 | describe('## Weather APIs', () => { 37 | describe('# GET /getWeatherByCityName', () => { 38 | const cityName = 'Mumbai' 39 | let getWeatherByCityNameStub 40 | 41 | it('should return weather for the given city', async () => { 42 | // mock getWeatherByCityName 43 | getWeatherByCityNameStub = sinon.stub(weatherService, 'getWeatherByCityName').callsFake(async () => { 44 | return Promise.resolve(apiResponse) 45 | }) 46 | 47 | const options = { 48 | method: 'GET', 49 | url: `${API_PATH}/getWeatherByCityName?cityName=${cityName}` 50 | } 51 | 52 | const res = await server.inject(options) 53 | res.statusCode.should.equal(httpStatus.OK) 54 | getWeatherByCityNameStub.should.have.been.calledWith(cityName) 55 | res.result.should.deep.equal(apiResponse) 56 | 57 | // restore mock 58 | getWeatherByCityNameStub.restore() 59 | }) 60 | 61 | it('should return internal server error', async () => { 62 | // mock getWeatherByCityName 63 | getWeatherByCityNameStub = sinon.stub(weatherService, 'getWeatherByCityName').callsFake(async () => { 64 | return Promise.reject(new Error(`Failed to fetch weather for ${cityName}`)) 65 | }) 66 | 67 | const options = { 68 | method: 'GET', 69 | url: `${API_PATH}/getWeatherByCityName?cityName=${cityName}` 70 | } 71 | 72 | const res = await server.inject(options) 73 | res.statusCode.should.equal(httpStatus.INTERNAL_SERVER_ERROR) 74 | getWeatherByCityNameStub.should.have.been.calledWith(cityName) 75 | 76 | // restore mock 77 | getWeatherByCityNameStub.restore() 78 | }) 79 | 80 | it('should return an error if cityName is not present', async () => { 81 | const options = { 82 | method: 'GET', 83 | url: `${API_PATH}/getWeatherByCityName` 84 | } 85 | 86 | const res = await server.inject(options) 87 | res.statusCode.should.equal(httpStatus.BAD_REQUEST) 88 | }) 89 | }) 90 | }) 91 | -------------------------------------------------------------------------------- /test/unit/weather/weatherService.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /* eslint-disable max-nested-callbacks */ 4 | 5 | const nock = require('nock') 6 | const chai = require('chai') 7 | const httpStatus = require('http-status') 8 | const sinonChai = require('sinon-chai') 9 | const config = require('config') 10 | 11 | const weatherService = require('../../../server/weather/weatherService') 12 | const openWeatherHostname = 'http://api.openweathermap.org' 13 | 14 | chai.should() 15 | chai.use(sinonChai) 16 | 17 | const apiResp = { 18 | 'name': 'Mumbai', 19 | 'coord': { 20 | 'lon': 73.02, 21 | 'lat': 19.04 22 | }, 23 | 'weather': [ 24 | { 25 | 'id': 500, 26 | 'main': 'Rain', 27 | 'description': 'light rain', 28 | 'icon': '10d' 29 | } 30 | ] 31 | } 32 | 33 | describe('## Weather Service', () => { 34 | describe('.getWeatherByCityName', () => { 35 | const cityName = 'Mumbai' 36 | 37 | it('should return weather for the given city', async () => { 38 | // mock openWeatherAPI 39 | nock(openWeatherHostname) 40 | .get('/data/2.5/weather') 41 | .query({q: cityName, APPID: config.get('openWeather.apiKey')}) 42 | .reply(httpStatus.OK, apiResp) 43 | 44 | const data = await weatherService.getWeatherByCityName(cityName) 45 | data.should.deep.equal(apiResp) 46 | 47 | // clean all interceptors 48 | nock.cleanAll() 49 | }) 50 | 51 | it('should return error in case of non 200 response', async () => { 52 | // mock openWeatherAPI 53 | nock(openWeatherHostname) 54 | .get('/data/2.5/weather') 55 | .query({q: cityName, APPID: config.get('openWeather.apiKey')}) 56 | .reply(httpStatus.INTERNAL_SERVER_ERROR) 57 | 58 | try { 59 | await weatherService.getWeatherByCityName(cityName) 60 | } catch (error) { 61 | error.response.status.should.equal(httpStatus.INTERNAL_SERVER_ERROR) 62 | } 63 | 64 | // clean all interceptors 65 | nock.cleanAll() 66 | }) 67 | }) 68 | }) 69 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@newrelic/native-metrics@^2.1.0": 6 | version "2.1.1" 7 | resolved "https://registry.yarnpkg.com/@newrelic/native-metrics/-/native-metrics-2.1.1.tgz#2a7abd87373e46b3c957a08124a72c0c41968dc8" 8 | dependencies: 9 | nan "^2.4.0" 10 | 11 | abbrev@1, abbrev@1.0.x: 12 | version "1.0.9" 13 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 14 | 15 | accept@^2.1.4: 16 | version "2.1.4" 17 | resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" 18 | dependencies: 19 | boom "5.x.x" 20 | hoek "4.x.x" 21 | 22 | acorn-jsx@^3.0.0: 23 | version "3.0.1" 24 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 25 | dependencies: 26 | acorn "^3.0.4" 27 | 28 | acorn@^3.0.4: 29 | version "3.3.0" 30 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 31 | 32 | acorn@^5.1.1: 33 | version "5.1.1" 34 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" 35 | 36 | agent-base@~1.0.1: 37 | version "1.0.2" 38 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-1.0.2.tgz#6890d3fb217004b62b70f8928e0fae5f8952a706" 39 | 40 | ajv-keywords@^1.0.0: 41 | version "1.5.1" 42 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 43 | 44 | ajv@^4.7.0: 45 | version "4.11.5" 46 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" 47 | dependencies: 48 | co "^4.6.0" 49 | json-stable-stringify "^1.0.1" 50 | 51 | ajv@^5.2.0: 52 | version "5.2.2" 53 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" 54 | dependencies: 55 | co "^4.6.0" 56 | fast-deep-equal "^1.0.0" 57 | json-schema-traverse "^0.3.0" 58 | json-stable-stringify "^1.0.1" 59 | 60 | align-text@^0.1.1, align-text@^0.1.3: 61 | version "0.1.4" 62 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 63 | dependencies: 64 | kind-of "^3.0.2" 65 | longest "^1.0.1" 66 | repeat-string "^1.5.2" 67 | 68 | amdefine@>=0.0.4: 69 | version "1.0.1" 70 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 71 | 72 | ammo@2.x.x: 73 | version "2.0.3" 74 | resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.3.tgz#914bbcf65b043ed0f58a8a9d0196e250ec51e6a7" 75 | dependencies: 76 | boom "4.x.x" 77 | hoek "4.x.x" 78 | 79 | ammo@^2.0.4: 80 | version "2.0.4" 81 | resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" 82 | dependencies: 83 | boom "5.x.x" 84 | hoek "4.x.x" 85 | 86 | ansi-escapes@^2.0.0: 87 | version "2.0.0" 88 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" 89 | 90 | ansi-regex@^2.0.0: 91 | version "2.1.1" 92 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 93 | 94 | ansi-regex@^3.0.0: 95 | version "3.0.0" 96 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 97 | 98 | ansi-styles@^2.2.1: 99 | version "2.2.1" 100 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 101 | 102 | ansi-styles@^3.1.0: 103 | version "3.2.0" 104 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 105 | dependencies: 106 | color-convert "^1.9.0" 107 | 108 | append-transform@^0.4.0: 109 | version "0.4.0" 110 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" 111 | dependencies: 112 | default-require-extensions "^1.0.0" 113 | 114 | argparse@^1.0.7: 115 | version "1.0.9" 116 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 117 | dependencies: 118 | sprintf-js "~1.0.2" 119 | 120 | array-union@^1.0.1: 121 | version "1.0.2" 122 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 123 | dependencies: 124 | array-uniq "^1.0.1" 125 | 126 | array-uniq@^1.0.1: 127 | version "1.0.3" 128 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 129 | 130 | arrify@^1.0.0: 131 | version "1.0.1" 132 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 133 | 134 | asn1@~0.2.3: 135 | version "0.2.3" 136 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 137 | 138 | assert-plus@1.0.0, assert-plus@^1.0.0: 139 | version "1.0.0" 140 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 141 | 142 | assert-plus@^0.2.0: 143 | version "0.2.0" 144 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 145 | 146 | assertion-error@^1.0.1: 147 | version "1.0.2" 148 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 149 | 150 | async@1.x, async@^1.4.0, async@~1.5.2: 151 | version "1.5.2" 152 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 153 | 154 | async@^2.1.4: 155 | version "2.5.0" 156 | resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" 157 | dependencies: 158 | lodash "^4.14.0" 159 | 160 | asynckit@^0.4.0: 161 | version "0.4.0" 162 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 163 | 164 | aws-sign2@~0.6.0: 165 | version "0.6.0" 166 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 167 | 168 | aws4@^1.2.1: 169 | version "1.6.0" 170 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 171 | 172 | axios@0.16.2: 173 | version "0.16.2" 174 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" 175 | dependencies: 176 | follow-redirects "^1.2.3" 177 | is-buffer "^1.1.5" 178 | 179 | b64@3.x.x: 180 | version "3.0.2" 181 | resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d" 182 | 183 | babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: 184 | version "6.26.0" 185 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 186 | dependencies: 187 | chalk "^1.1.3" 188 | esutils "^2.0.2" 189 | js-tokens "^3.0.2" 190 | 191 | babel-generator@^6.18.0: 192 | version "6.26.0" 193 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" 194 | dependencies: 195 | babel-messages "^6.23.0" 196 | babel-runtime "^6.26.0" 197 | babel-types "^6.26.0" 198 | detect-indent "^4.0.0" 199 | jsesc "^1.3.0" 200 | lodash "^4.17.4" 201 | source-map "^0.5.6" 202 | trim-right "^1.0.1" 203 | 204 | babel-messages@^6.23.0: 205 | version "6.23.0" 206 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 207 | dependencies: 208 | babel-runtime "^6.22.0" 209 | 210 | babel-runtime@^6.22.0, babel-runtime@^6.26.0: 211 | version "6.26.0" 212 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 213 | dependencies: 214 | core-js "^2.4.0" 215 | regenerator-runtime "^0.11.0" 216 | 217 | babel-template@^6.16.0: 218 | version "6.26.0" 219 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 220 | dependencies: 221 | babel-runtime "^6.26.0" 222 | babel-traverse "^6.26.0" 223 | babel-types "^6.26.0" 224 | babylon "^6.18.0" 225 | lodash "^4.17.4" 226 | 227 | babel-traverse@^6.18.0, babel-traverse@^6.26.0: 228 | version "6.26.0" 229 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 230 | dependencies: 231 | babel-code-frame "^6.26.0" 232 | babel-messages "^6.23.0" 233 | babel-runtime "^6.26.0" 234 | babel-types "^6.26.0" 235 | babylon "^6.18.0" 236 | debug "^2.6.8" 237 | globals "^9.18.0" 238 | invariant "^2.2.2" 239 | lodash "^4.17.4" 240 | 241 | babel-types@^6.18.0, babel-types@^6.26.0: 242 | version "6.26.0" 243 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 244 | dependencies: 245 | babel-runtime "^6.26.0" 246 | esutils "^2.0.2" 247 | lodash "^4.17.4" 248 | to-fast-properties "^1.0.3" 249 | 250 | babylon@^6.17.4, babylon@^6.18.0: 251 | version "6.18.0" 252 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 253 | 254 | balanced-match@^0.4.1: 255 | version "0.4.2" 256 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 257 | 258 | balanced-match@^1.0.0: 259 | version "1.0.0" 260 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 261 | 262 | bcrypt-pbkdf@^1.0.0: 263 | version "1.0.1" 264 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 265 | dependencies: 266 | tweetnacl "^0.14.3" 267 | 268 | bluebird@3.5.0: 269 | version "3.5.0" 270 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" 271 | 272 | boom@2.x.x: 273 | version "2.10.1" 274 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 275 | dependencies: 276 | hoek "2.x.x" 277 | 278 | boom@4.x.x: 279 | version "4.0.0" 280 | resolved "https://registry.yarnpkg.com/boom/-/boom-4.0.0.tgz#7e59469264eaddb74fedfbc1b16524d69a694577" 281 | dependencies: 282 | hoek "4.x.x" 283 | 284 | boom@5.2.0, boom@5.x.x, boom@^5.2.0: 285 | version "5.2.0" 286 | resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 287 | dependencies: 288 | hoek "4.x.x" 289 | 290 | bossy@3.x.x: 291 | version "3.0.4" 292 | resolved "https://registry.yarnpkg.com/bossy/-/bossy-3.0.4.tgz#f9ae9f26e81b41a318f4ee0d83686e4a5c2507b9" 293 | dependencies: 294 | hoek "4.x.x" 295 | joi "10.x.x" 296 | 297 | brace-expansion@^1.0.0: 298 | version "1.1.6" 299 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 300 | dependencies: 301 | balanced-match "^0.4.1" 302 | concat-map "0.0.1" 303 | 304 | brace-expansion@^1.1.7: 305 | version "1.1.8" 306 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 307 | dependencies: 308 | balanced-match "^1.0.0" 309 | concat-map "0.0.1" 310 | 311 | browser-stdout@1.3.0: 312 | version "1.3.0" 313 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 314 | 315 | buffer-shims@^1.0.0: 316 | version "1.0.0" 317 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 318 | 319 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 320 | version "1.1.1" 321 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 322 | 323 | bunyan@1.8.12: 324 | version "1.8.12" 325 | resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" 326 | optionalDependencies: 327 | dtrace-provider "~0.8" 328 | moment "^2.10.6" 329 | mv "~2" 330 | safe-json-stringify "~1" 331 | 332 | call-me-maybe@^1.0.1: 333 | version "1.0.1" 334 | resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" 335 | 336 | call@^4.0.2: 337 | version "4.0.2" 338 | resolved "https://registry.yarnpkg.com/call/-/call-4.0.2.tgz#df76f5f51ee8dd48b856ac8400f7e69e6d7399c4" 339 | dependencies: 340 | boom "5.x.x" 341 | hoek "4.x.x" 342 | 343 | caller-path@^0.1.0: 344 | version "0.1.0" 345 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 346 | dependencies: 347 | callsites "^0.2.0" 348 | 349 | callsites@^0.2.0: 350 | version "0.2.0" 351 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 352 | 353 | camelcase@^1.0.2: 354 | version "1.2.1" 355 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 356 | 357 | caseless@~0.11.0: 358 | version "0.11.0" 359 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 360 | 361 | catbox-memory@^2.0.4: 362 | version "2.0.4" 363 | resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" 364 | dependencies: 365 | hoek "4.x.x" 366 | 367 | catbox@^7.1.5: 368 | version "7.1.5" 369 | resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.5.tgz#c56f7e8e9555d27c0dc038a96ef73e57d186bb1f" 370 | dependencies: 371 | boom "5.x.x" 372 | hoek "4.x.x" 373 | joi "10.x.x" 374 | 375 | center-align@^0.1.1: 376 | version "0.1.3" 377 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 378 | dependencies: 379 | align-text "^0.1.3" 380 | lazy-cache "^1.0.3" 381 | 382 | chai@4.1.1: 383 | version "4.1.1" 384 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.1.tgz#66e21279e6f3c6415ff8231878227900e2171b39" 385 | dependencies: 386 | assertion-error "^1.0.1" 387 | check-error "^1.0.1" 388 | deep-eql "^2.0.1" 389 | get-func-name "^2.0.0" 390 | pathval "^1.0.0" 391 | type-detect "^4.0.0" 392 | 393 | "chai@>=1.9.2 <4.0.0": 394 | version "3.5.0" 395 | resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" 396 | dependencies: 397 | assertion-error "^1.0.1" 398 | deep-eql "^0.1.3" 399 | type-detect "^1.0.0" 400 | 401 | chalk@^1.1.1, chalk@^1.1.3: 402 | version "1.1.3" 403 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 404 | dependencies: 405 | ansi-styles "^2.2.1" 406 | escape-string-regexp "^1.0.2" 407 | has-ansi "^2.0.0" 408 | strip-ansi "^3.0.0" 409 | supports-color "^2.0.0" 410 | 411 | chalk@^2.0.0, chalk@^2.1.0: 412 | version "2.1.0" 413 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" 414 | dependencies: 415 | ansi-styles "^3.1.0" 416 | escape-string-regexp "^1.0.5" 417 | supports-color "^4.0.0" 418 | 419 | check-error@^1.0.1: 420 | version "1.0.2" 421 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 422 | 423 | ci-info@^1.0.0: 424 | version "1.0.0" 425 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" 426 | 427 | circular-json@^0.3.1: 428 | version "0.3.1" 429 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 430 | 431 | cli-cursor@^2.1.0: 432 | version "2.1.0" 433 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 434 | dependencies: 435 | restore-cursor "^2.0.0" 436 | 437 | cli-width@^2.0.0: 438 | version "2.1.0" 439 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 440 | 441 | cliui@^2.1.0: 442 | version "2.1.0" 443 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 444 | dependencies: 445 | center-align "^0.1.1" 446 | right-align "^0.1.1" 447 | wordwrap "0.0.2" 448 | 449 | co@^4.6.0: 450 | version "4.6.0" 451 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 452 | 453 | code@4.1.x: 454 | version "4.1.0" 455 | resolved "https://registry.yarnpkg.com/code/-/code-4.1.0.tgz#209ad11d05af8a0c1c7aaf694d9fa4d2c7d95b85" 456 | dependencies: 457 | hoek "4.x.x" 458 | 459 | codeclimate-test-reporter@0.5.0: 460 | version "0.5.0" 461 | resolved "https://registry.yarnpkg.com/codeclimate-test-reporter/-/codeclimate-test-reporter-0.5.0.tgz#93fa06b1c18e4117349128dc4e38aad08043828e" 462 | dependencies: 463 | async "~1.5.2" 464 | commander "2.9.0" 465 | lcov-parse "0.0.10" 466 | request "~2.79.0" 467 | 468 | color-convert@^1.9.0: 469 | version "1.9.0" 470 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 471 | dependencies: 472 | color-name "^1.1.1" 473 | 474 | color-name@^1.1.1: 475 | version "1.1.3" 476 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 477 | 478 | combined-stream@^1.0.5, combined-stream@~1.0.5: 479 | version "1.0.5" 480 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 481 | dependencies: 482 | delayed-stream "~1.0.0" 483 | 484 | commander@2.9.0, commander@^2.7.1: 485 | version "2.9.0" 486 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 487 | dependencies: 488 | graceful-readlink ">= 1.0.0" 489 | 490 | commander@^2.9.0: 491 | version "2.11.0" 492 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" 493 | 494 | concat-map@0.0.1: 495 | version "0.0.1" 496 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 497 | 498 | concat-stream@^1.5.0, concat-stream@^1.6.0: 499 | version "1.6.0" 500 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 501 | dependencies: 502 | inherits "^2.0.3" 503 | readable-stream "^2.2.2" 504 | typedarray "^0.0.6" 505 | 506 | config@1.26.2: 507 | version "1.26.2" 508 | resolved "https://registry.yarnpkg.com/config/-/config-1.26.2.tgz#2466291168d8afae0aae8ab99ea4d4272f520cae" 509 | dependencies: 510 | json5 "0.4.0" 511 | os-homedir "1.0.2" 512 | 513 | contains-path@^0.1.0: 514 | version "0.1.0" 515 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 516 | 517 | content@3.x.x: 518 | version "3.0.3" 519 | resolved "https://registry.yarnpkg.com/content/-/content-3.0.3.tgz#000f8a01371b95c66afe99be9390fa6cb91aa87a" 520 | dependencies: 521 | boom "4.x.x" 522 | 523 | core-js@^2.4.0: 524 | version "2.5.0" 525 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" 526 | 527 | core-util-is@1.0.2, core-util-is@~1.0.0: 528 | version "1.0.2" 529 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 530 | 531 | cross-spawn@^5.1.0: 532 | version "5.1.0" 533 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 534 | dependencies: 535 | lru-cache "^4.0.1" 536 | shebang-command "^1.2.0" 537 | which "^1.2.9" 538 | 539 | cryptiles@2.x.x: 540 | version "2.0.5" 541 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 542 | dependencies: 543 | boom "2.x.x" 544 | 545 | cryptiles@3.x.x: 546 | version "3.1.1" 547 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.1.tgz#86a9203f7367a0e9324bc7555ff0fcf5f81979ee" 548 | dependencies: 549 | boom "4.x.x" 550 | 551 | cryptiles@^3.1.2: 552 | version "3.1.2" 553 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 554 | dependencies: 555 | boom "5.x.x" 556 | 557 | dashdash@^1.12.0: 558 | version "1.14.1" 559 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 560 | dependencies: 561 | assert-plus "^1.0.0" 562 | 563 | debug@2, debug@^2.2.0: 564 | version "2.2.0" 565 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 566 | dependencies: 567 | ms "0.7.1" 568 | 569 | debug@2.6.8, debug@^2.4.5, debug@^2.6.3, debug@^2.6.8: 570 | version "2.6.8" 571 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 572 | dependencies: 573 | ms "2.0.0" 574 | 575 | debug@^3.0.0: 576 | version "3.0.1" 577 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" 578 | dependencies: 579 | ms "2.0.0" 580 | 581 | decamelize@^1.0.0: 582 | version "1.2.0" 583 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 584 | 585 | deep-eql@^0.1.3: 586 | version "0.1.3" 587 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" 588 | dependencies: 589 | type-detect "0.1.1" 590 | 591 | deep-eql@^2.0.1: 592 | version "2.0.2" 593 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" 594 | dependencies: 595 | type-detect "^3.0.0" 596 | 597 | deep-equal@^1.0.0: 598 | version "1.0.1" 599 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 600 | 601 | deep-is@~0.1.3: 602 | version "0.1.3" 603 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 604 | 605 | default-require-extensions@^1.0.0: 606 | version "1.0.0" 607 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" 608 | dependencies: 609 | strip-bom "^2.0.0" 610 | 611 | del@^2.0.2: 612 | version "2.2.2" 613 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 614 | dependencies: 615 | globby "^5.0.0" 616 | is-path-cwd "^1.0.0" 617 | is-path-in-cwd "^1.0.0" 618 | object-assign "^4.0.1" 619 | pify "^2.0.0" 620 | pinkie-promise "^2.0.0" 621 | rimraf "^2.2.8" 622 | 623 | delayed-stream@~1.0.0: 624 | version "1.0.0" 625 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 626 | 627 | detect-indent@^4.0.0: 628 | version "4.0.0" 629 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 630 | dependencies: 631 | repeating "^2.0.0" 632 | 633 | diff@3.2.0: 634 | version "3.2.0" 635 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 636 | 637 | diff@3.3.x, diff@^3.1.0: 638 | version "3.3.0" 639 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" 640 | 641 | doctrine@1.5.0: 642 | version "1.5.0" 643 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 644 | dependencies: 645 | esutils "^2.0.2" 646 | isarray "^1.0.0" 647 | 648 | doctrine@^2.0.0: 649 | version "2.0.0" 650 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 651 | dependencies: 652 | esutils "^2.0.2" 653 | isarray "^1.0.0" 654 | 655 | dtrace-provider@~0.8: 656 | version "0.8.5" 657 | resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.5.tgz#98ebba221afac46e1c39fd36858d8f9367524b92" 658 | dependencies: 659 | nan "^2.3.3" 660 | 661 | duplexify@^3.1.2: 662 | version "3.5.0" 663 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" 664 | dependencies: 665 | end-of-stream "1.0.0" 666 | inherits "^2.0.1" 667 | readable-stream "^2.0.0" 668 | stream-shift "^1.0.0" 669 | 670 | ecc-jsbn@~0.1.1: 671 | version "0.1.1" 672 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 673 | dependencies: 674 | jsbn "~0.1.0" 675 | 676 | end-of-stream@1.0.0: 677 | version "1.0.0" 678 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" 679 | dependencies: 680 | once "~1.3.0" 681 | 682 | end-of-stream@^1.1.0: 683 | version "1.4.0" 684 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" 685 | dependencies: 686 | once "^1.4.0" 687 | 688 | error-ex@^1.2.0: 689 | version "1.3.1" 690 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 691 | dependencies: 692 | is-arrayish "^0.2.1" 693 | 694 | es6-promise@^3.0.2: 695 | version "3.3.1" 696 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 697 | 698 | es6-promise@^4.1.1: 699 | version "4.1.1" 700 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" 701 | 702 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 703 | version "1.0.5" 704 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 705 | 706 | eslint-config-hapi@10.x.x: 707 | version "10.1.0" 708 | resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-10.1.0.tgz#e65720917575da292c4ffe8d59ad9aa4e5b0a2ac" 709 | 710 | eslint-config-standard@10.2.1: 711 | version "10.2.1" 712 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" 713 | 714 | eslint-import-resolver-node@^0.3.1: 715 | version "0.3.1" 716 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" 717 | dependencies: 718 | debug "^2.6.8" 719 | resolve "^1.2.0" 720 | 721 | eslint-module-utils@^2.1.1: 722 | version "2.1.1" 723 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" 724 | dependencies: 725 | debug "^2.6.8" 726 | pkg-dir "^1.0.0" 727 | 728 | eslint-plugin-hapi@4.x.x: 729 | version "4.0.0" 730 | resolved "https://registry.yarnpkg.com/eslint-plugin-hapi/-/eslint-plugin-hapi-4.0.0.tgz#44aa2e45f7939a523929cd832bb9aa129a95e823" 731 | dependencies: 732 | hapi-capitalize-modules "1.x.x" 733 | hapi-for-you "1.x.x" 734 | hapi-scope-start "2.x.x" 735 | no-arrowception "1.x.x" 736 | 737 | eslint-plugin-import@2.7.0: 738 | version "2.7.0" 739 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" 740 | dependencies: 741 | builtin-modules "^1.1.1" 742 | contains-path "^0.1.0" 743 | debug "^2.6.8" 744 | doctrine "1.5.0" 745 | eslint-import-resolver-node "^0.3.1" 746 | eslint-module-utils "^2.1.1" 747 | has "^1.0.1" 748 | lodash.cond "^4.3.0" 749 | minimatch "^3.0.3" 750 | read-pkg-up "^2.0.0" 751 | 752 | eslint-plugin-node@5.1.1: 753 | version "5.1.1" 754 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz#a7ed956e780c22aef6afd1116005acd82f26eac6" 755 | dependencies: 756 | ignore "^3.3.3" 757 | minimatch "^3.0.4" 758 | resolve "^1.3.3" 759 | semver "5.3.0" 760 | 761 | eslint-plugin-promise@3.5.0: 762 | version "3.5.0" 763 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" 764 | 765 | eslint-plugin-standard@3.0.1: 766 | version "3.0.1" 767 | resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" 768 | 769 | eslint-scope@^3.7.1: 770 | version "3.7.1" 771 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 772 | dependencies: 773 | esrecurse "^4.1.0" 774 | estraverse "^4.1.1" 775 | 776 | eslint@4.4.x: 777 | version "4.4.1" 778 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.4.1.tgz#99cd7eafcffca2ff99a5c8f5f2a474d6364b4bd3" 779 | dependencies: 780 | ajv "^5.2.0" 781 | babel-code-frame "^6.22.0" 782 | chalk "^1.1.3" 783 | concat-stream "^1.6.0" 784 | cross-spawn "^5.1.0" 785 | debug "^2.6.8" 786 | doctrine "^2.0.0" 787 | eslint-scope "^3.7.1" 788 | espree "^3.5.0" 789 | esquery "^1.0.0" 790 | estraverse "^4.2.0" 791 | esutils "^2.0.2" 792 | file-entry-cache "^2.0.0" 793 | functional-red-black-tree "^1.0.1" 794 | glob "^7.1.2" 795 | globals "^9.17.0" 796 | ignore "^3.3.3" 797 | imurmurhash "^0.1.4" 798 | inquirer "^3.0.6" 799 | is-resolvable "^1.0.0" 800 | js-yaml "^3.9.1" 801 | json-stable-stringify "^1.0.1" 802 | levn "^0.3.0" 803 | lodash "^4.17.4" 804 | minimatch "^3.0.2" 805 | mkdirp "^0.5.1" 806 | natural-compare "^1.4.0" 807 | optionator "^0.8.2" 808 | path-is-inside "^1.0.2" 809 | pluralize "^4.0.0" 810 | progress "^2.0.0" 811 | require-uncached "^1.0.3" 812 | semver "^5.3.0" 813 | strip-json-comments "~2.0.1" 814 | table "^4.0.1" 815 | text-table "~0.2.0" 816 | 817 | eslint@4.5.0: 818 | version "4.5.0" 819 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.5.0.tgz#bb75d3b8bde97fb5e13efcd539744677feb019c3" 820 | dependencies: 821 | ajv "^5.2.0" 822 | babel-code-frame "^6.22.0" 823 | chalk "^2.1.0" 824 | concat-stream "^1.6.0" 825 | cross-spawn "^5.1.0" 826 | debug "^2.6.8" 827 | doctrine "^2.0.0" 828 | eslint-scope "^3.7.1" 829 | espree "^3.5.0" 830 | esquery "^1.0.0" 831 | estraverse "^4.2.0" 832 | esutils "^2.0.2" 833 | file-entry-cache "^2.0.0" 834 | functional-red-black-tree "^1.0.1" 835 | glob "^7.1.2" 836 | globals "^9.17.0" 837 | ignore "^3.3.3" 838 | imurmurhash "^0.1.4" 839 | inquirer "^3.0.6" 840 | is-resolvable "^1.0.0" 841 | js-yaml "^3.9.1" 842 | json-stable-stringify "^1.0.1" 843 | levn "^0.3.0" 844 | lodash "^4.17.4" 845 | minimatch "^3.0.2" 846 | mkdirp "^0.5.1" 847 | natural-compare "^1.4.0" 848 | optionator "^0.8.2" 849 | path-is-inside "^1.0.2" 850 | pluralize "^4.0.0" 851 | progress "^2.0.0" 852 | require-uncached "^1.0.3" 853 | semver "^5.3.0" 854 | strip-ansi "^4.0.0" 855 | strip-json-comments "~2.0.1" 856 | table "^4.0.1" 857 | text-table "~0.2.0" 858 | 859 | espree@3.5.x, espree@^3.5.0: 860 | version "3.5.0" 861 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" 862 | dependencies: 863 | acorn "^5.1.1" 864 | acorn-jsx "^3.0.0" 865 | 866 | esprima@^3.1.1: 867 | version "3.1.3" 868 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 869 | 870 | esprima@^4.0.0: 871 | version "4.0.0" 872 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 873 | 874 | esquery@^1.0.0: 875 | version "1.0.0" 876 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 877 | dependencies: 878 | estraverse "^4.0.0" 879 | 880 | esrecurse@^4.1.0: 881 | version "4.1.0" 882 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 883 | dependencies: 884 | estraverse "~4.1.0" 885 | object-assign "^4.0.1" 886 | 887 | estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: 888 | version "4.2.0" 889 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 890 | 891 | estraverse@~4.1.0: 892 | version "4.1.1" 893 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 894 | 895 | esutils@^2.0.2: 896 | version "2.0.2" 897 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 898 | 899 | extend@3: 900 | version "3.0.0" 901 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 902 | 903 | extend@~3.0.0: 904 | version "3.0.1" 905 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 906 | 907 | external-editor@^2.0.4: 908 | version "2.0.4" 909 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" 910 | dependencies: 911 | iconv-lite "^0.4.17" 912 | jschardet "^1.4.2" 913 | tmp "^0.0.31" 914 | 915 | extsprintf@1.3.0, extsprintf@^1.2.0: 916 | version "1.3.0" 917 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 918 | 919 | fast-deep-equal@^1.0.0: 920 | version "1.0.0" 921 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 922 | 923 | fast-levenshtein@~2.0.4: 924 | version "2.0.6" 925 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 926 | 927 | figures@^2.0.0: 928 | version "2.0.0" 929 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 930 | dependencies: 931 | escape-string-regexp "^1.0.5" 932 | 933 | file-entry-cache@^2.0.0: 934 | version "2.0.0" 935 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 936 | dependencies: 937 | flat-cache "^1.2.1" 938 | object-assign "^4.0.1" 939 | 940 | fileset@^2.0.2: 941 | version "2.0.3" 942 | resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" 943 | dependencies: 944 | glob "^7.0.3" 945 | minimatch "^3.0.3" 946 | 947 | find-rc@3.0.x: 948 | version "3.0.1" 949 | resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" 950 | 951 | find-up@^1.0.0: 952 | version "1.1.2" 953 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 954 | dependencies: 955 | path-exists "^2.0.0" 956 | pinkie-promise "^2.0.0" 957 | 958 | find-up@^2.0.0: 959 | version "2.1.0" 960 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 961 | dependencies: 962 | locate-path "^2.0.0" 963 | 964 | flat-cache@^1.2.1: 965 | version "1.2.2" 966 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 967 | dependencies: 968 | circular-json "^0.3.1" 969 | del "^2.0.2" 970 | graceful-fs "^4.1.2" 971 | write "^0.2.1" 972 | 973 | follow-redirects@^1.2.3: 974 | version "1.2.4" 975 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" 976 | dependencies: 977 | debug "^2.4.5" 978 | 979 | forever-agent@~0.6.1: 980 | version "0.6.1" 981 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 982 | 983 | form-data@~2.1.1: 984 | version "2.1.4" 985 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 986 | dependencies: 987 | asynckit "^0.4.0" 988 | combined-stream "^1.0.5" 989 | mime-types "^2.1.12" 990 | 991 | format-util@^1.0.3: 992 | version "1.0.3" 993 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.3.tgz#032dca4a116262a12c43f4c3ec8566416c5b2d95" 994 | 995 | formatio@1.2.0, formatio@^1.2.0: 996 | version "1.2.0" 997 | resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" 998 | dependencies: 999 | samsam "1.x" 1000 | 1001 | fs.realpath@^1.0.0: 1002 | version "1.0.0" 1003 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1004 | 1005 | function-bind@^1.0.2: 1006 | version "1.1.0" 1007 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 1008 | 1009 | functional-red-black-tree@^1.0.1: 1010 | version "1.0.1" 1011 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1012 | 1013 | g@^2.0.1: 1014 | version "2.0.1" 1015 | resolved "https://registry.yarnpkg.com/g/-/g-2.0.1.tgz#0b5963ebd0ca70e3bc8c6766934a021821c8b857" 1016 | 1017 | generate-function@^2.0.0: 1018 | version "2.0.0" 1019 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1020 | 1021 | generate-object-property@^1.1.0: 1022 | version "1.2.0" 1023 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1024 | dependencies: 1025 | is-property "^1.0.0" 1026 | 1027 | get-func-name@^2.0.0: 1028 | version "2.0.0" 1029 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1030 | 1031 | getpass@^0.1.1: 1032 | version "0.1.7" 1033 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1034 | dependencies: 1035 | assert-plus "^1.0.0" 1036 | 1037 | glob@7.1.1, glob@^7.0.3, glob@^7.0.5: 1038 | version "7.1.1" 1039 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1040 | dependencies: 1041 | fs.realpath "^1.0.0" 1042 | inflight "^1.0.4" 1043 | inherits "2" 1044 | minimatch "^3.0.2" 1045 | once "^1.3.0" 1046 | path-is-absolute "^1.0.0" 1047 | 1048 | glob@7.1.2, glob@^7.1.2: 1049 | version "7.1.2" 1050 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1051 | dependencies: 1052 | fs.realpath "^1.0.0" 1053 | inflight "^1.0.4" 1054 | inherits "2" 1055 | minimatch "^3.0.4" 1056 | once "^1.3.0" 1057 | path-is-absolute "^1.0.0" 1058 | 1059 | glob@^6.0.1: 1060 | version "6.0.4" 1061 | resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" 1062 | dependencies: 1063 | inflight "^1.0.4" 1064 | inherits "2" 1065 | minimatch "2 || 3" 1066 | once "^1.3.0" 1067 | path-is-absolute "^1.0.0" 1068 | 1069 | globals@^9.17.0, globals@^9.18.0: 1070 | version "9.18.0" 1071 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1072 | 1073 | globby@^5.0.0: 1074 | version "5.0.0" 1075 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1076 | dependencies: 1077 | array-union "^1.0.1" 1078 | arrify "^1.0.0" 1079 | glob "^7.0.3" 1080 | object-assign "^4.0.1" 1081 | pify "^2.0.0" 1082 | pinkie-promise "^2.0.0" 1083 | 1084 | good-console@6.4.0: 1085 | version "6.4.0" 1086 | resolved "https://registry.yarnpkg.com/good-console/-/good-console-6.4.0.tgz#7294c9d90c4c9f059a082e180625495966d2ba59" 1087 | dependencies: 1088 | hoek "4.x.x" 1089 | joi "8.1.x" 1090 | json-stringify-safe "5.0.x" 1091 | moment "2.15.x" 1092 | 1093 | good@7.3.0: 1094 | version "7.3.0" 1095 | resolved "https://registry.yarnpkg.com/good/-/good-7.3.0.tgz#25da74d51f336692ec86fe8d6533453585fa85fe" 1096 | dependencies: 1097 | hoek "4.x.x" 1098 | joi "10.x.x" 1099 | oppsy "1.x.x" 1100 | pumpify "1.3.x" 1101 | 1102 | graceful-fs@^4.1.2: 1103 | version "4.1.11" 1104 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1105 | 1106 | "graceful-readlink@>= 1.0.0": 1107 | version "1.0.1" 1108 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1109 | 1110 | growl@1.9.2: 1111 | version "1.9.2" 1112 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 1113 | 1114 | handlebars@4.x.x, handlebars@^4.0.10, handlebars@^4.0.3: 1115 | version "4.0.10" 1116 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" 1117 | dependencies: 1118 | async "^1.4.0" 1119 | optimist "^0.6.1" 1120 | source-map "^0.4.4" 1121 | optionalDependencies: 1122 | uglify-js "^2.6" 1123 | 1124 | hapi-capitalize-modules@1.x.x: 1125 | version "1.1.6" 1126 | resolved "https://registry.yarnpkg.com/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz#7991171415e15e6aa3231e64dda73c8146665318" 1127 | 1128 | hapi-for-you@1.x.x: 1129 | version "1.0.0" 1130 | resolved "https://registry.yarnpkg.com/hapi-for-you/-/hapi-for-you-1.0.0.tgz#d362fbee8d7bda9c2c7801e207e5a5cd1a0b6a7b" 1131 | 1132 | hapi-scope-start@2.x.x: 1133 | version "2.1.1" 1134 | resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" 1135 | 1136 | hapi-swagger@7.7.1: 1137 | version "7.7.1" 1138 | resolved "https://registry.yarnpkg.com/hapi-swagger/-/hapi-swagger-7.7.1.tgz#ddcee31f3d769237e3fd915ca2217261b39a5e52" 1139 | dependencies: 1140 | boom "^5.2.0" 1141 | g "^2.0.1" 1142 | handlebars "^4.0.10" 1143 | hoek "^4.2.0" 1144 | http-status "^1.0.1" 1145 | joi "10.6.0" 1146 | json-schema-ref-parser "^3.3.1" 1147 | lab "^14.2.0" 1148 | swagger-parser "^3.4.2" 1149 | 1150 | hapi@16.5.2: 1151 | version "16.5.2" 1152 | resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.5.2.tgz#d1dadf33721c6ac3aaa905ce086d9c7ffb883092" 1153 | dependencies: 1154 | accept "^2.1.4" 1155 | ammo "^2.0.4" 1156 | boom "^5.2.0" 1157 | call "^4.0.2" 1158 | catbox "^7.1.5" 1159 | catbox-memory "^2.0.4" 1160 | cryptiles "^3.1.2" 1161 | heavy "^4.0.4" 1162 | hoek "^4.2.0" 1163 | iron "^4.0.5" 1164 | items "^2.1.1" 1165 | joi "^10.6.0" 1166 | mimos "^3.0.3" 1167 | podium "^1.3.0" 1168 | shot "^3.4.2" 1169 | statehood "^5.0.3" 1170 | subtext "^5.0.0" 1171 | topo "^2.0.2" 1172 | 1173 | har-validator@~2.0.6: 1174 | version "2.0.6" 1175 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 1176 | dependencies: 1177 | chalk "^1.1.1" 1178 | commander "^2.9.0" 1179 | is-my-json-valid "^2.12.4" 1180 | pinkie-promise "^2.0.0" 1181 | 1182 | has-ansi@^2.0.0: 1183 | version "2.0.0" 1184 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1185 | dependencies: 1186 | ansi-regex "^2.0.0" 1187 | 1188 | has-flag@^1.0.0: 1189 | version "1.0.0" 1190 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1191 | 1192 | has-flag@^2.0.0: 1193 | version "2.0.0" 1194 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 1195 | 1196 | has@^1.0.1: 1197 | version "1.0.1" 1198 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 1199 | dependencies: 1200 | function-bind "^1.0.2" 1201 | 1202 | hawk@~3.1.3: 1203 | version "3.1.3" 1204 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1205 | dependencies: 1206 | boom "2.x.x" 1207 | cryptiles "2.x.x" 1208 | hoek "2.x.x" 1209 | sntp "1.x.x" 1210 | 1211 | heavy@^4.0.4: 1212 | version "4.0.4" 1213 | resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" 1214 | dependencies: 1215 | boom "5.x.x" 1216 | hoek "4.x.x" 1217 | joi "10.x.x" 1218 | 1219 | hoek@2.x.x: 1220 | version "2.16.3" 1221 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1222 | 1223 | hoek@4.x.x: 1224 | version "4.1.0" 1225 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.0.tgz#4a4557460f69842ed463aa00628cc26d2683afa7" 1226 | 1227 | hoek@^4.2.0: 1228 | version "4.2.0" 1229 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" 1230 | 1231 | hosted-git-info@^2.1.4: 1232 | version "2.5.0" 1233 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 1234 | 1235 | http-signature@~1.1.0: 1236 | version "1.1.1" 1237 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1238 | dependencies: 1239 | assert-plus "^0.2.0" 1240 | jsprim "^1.2.2" 1241 | sshpk "^1.7.0" 1242 | 1243 | http-status@1.0.1, http-status@^1.0.1: 1244 | version "1.0.1" 1245 | resolved "https://registry.yarnpkg.com/http-status/-/http-status-1.0.1.tgz#dc43001a8bfc50ac87d485a892f7578964bc94a2" 1246 | 1247 | https-proxy-agent@^0.3.5: 1248 | version "0.3.6" 1249 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-0.3.6.tgz#713fa38e5d353f50eb14a342febe29033ed1619b" 1250 | dependencies: 1251 | agent-base "~1.0.1" 1252 | debug "2" 1253 | extend "3" 1254 | 1255 | husky@0.14.3: 1256 | version "0.14.3" 1257 | resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" 1258 | dependencies: 1259 | is-ci "^1.0.10" 1260 | normalize-path "^1.0.0" 1261 | strip-indent "^2.0.0" 1262 | 1263 | iconv-lite@^0.4.17: 1264 | version "0.4.18" 1265 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" 1266 | 1267 | ignore@^3.3.3: 1268 | version "3.3.3" 1269 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" 1270 | 1271 | imurmurhash@^0.1.4: 1272 | version "0.1.4" 1273 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1274 | 1275 | inert@4.2.1: 1276 | version "4.2.1" 1277 | resolved "https://registry.yarnpkg.com/inert/-/inert-4.2.1.tgz#da743c478a18a8378032f80ada128a28cd2bba93" 1278 | dependencies: 1279 | ammo "2.x.x" 1280 | boom "5.x.x" 1281 | hoek "4.x.x" 1282 | items "2.x.x" 1283 | joi "10.x.x" 1284 | lru-cache "4.1.x" 1285 | 1286 | inflight@^1.0.4: 1287 | version "1.0.6" 1288 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1289 | dependencies: 1290 | once "^1.3.0" 1291 | wrappy "1" 1292 | 1293 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 1294 | version "2.0.3" 1295 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1296 | 1297 | inquirer@^3.0.6: 1298 | version "3.2.2" 1299 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" 1300 | dependencies: 1301 | ansi-escapes "^2.0.0" 1302 | chalk "^2.0.0" 1303 | cli-cursor "^2.1.0" 1304 | cli-width "^2.0.0" 1305 | external-editor "^2.0.4" 1306 | figures "^2.0.0" 1307 | lodash "^4.3.0" 1308 | mute-stream "0.0.7" 1309 | run-async "^2.2.0" 1310 | rx-lite "^4.0.8" 1311 | rx-lite-aggregates "^4.0.8" 1312 | string-width "^2.1.0" 1313 | strip-ansi "^4.0.0" 1314 | through "^2.3.6" 1315 | 1316 | invariant@^2.2.2: 1317 | version "2.2.2" 1318 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1319 | dependencies: 1320 | loose-envify "^1.0.0" 1321 | 1322 | iron@4.x.x: 1323 | version "4.0.4" 1324 | resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.4.tgz#c1f8cc4c91454194ab8920d9247ba882e528061a" 1325 | dependencies: 1326 | boom "4.x.x" 1327 | cryptiles "3.x.x" 1328 | hoek "4.x.x" 1329 | 1330 | iron@^4.0.5: 1331 | version "4.0.5" 1332 | resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" 1333 | dependencies: 1334 | boom "5.x.x" 1335 | cryptiles "3.x.x" 1336 | hoek "4.x.x" 1337 | 1338 | is-arrayish@^0.2.1: 1339 | version "0.2.1" 1340 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1341 | 1342 | is-buffer@^1.0.2, is-buffer@^1.1.5: 1343 | version "1.1.5" 1344 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1345 | 1346 | is-builtin-module@^1.0.0: 1347 | version "1.0.0" 1348 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1349 | dependencies: 1350 | builtin-modules "^1.0.0" 1351 | 1352 | is-ci@^1.0.10: 1353 | version "1.0.10" 1354 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" 1355 | dependencies: 1356 | ci-info "^1.0.0" 1357 | 1358 | is-finite@^1.0.0: 1359 | version "1.0.2" 1360 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1361 | dependencies: 1362 | number-is-nan "^1.0.0" 1363 | 1364 | is-fullwidth-code-point@^2.0.0: 1365 | version "2.0.0" 1366 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1367 | 1368 | is-my-json-valid@^2.12.4: 1369 | version "2.16.0" 1370 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 1371 | dependencies: 1372 | generate-function "^2.0.0" 1373 | generate-object-property "^1.1.0" 1374 | jsonpointer "^4.0.0" 1375 | xtend "^4.0.0" 1376 | 1377 | is-path-cwd@^1.0.0: 1378 | version "1.0.0" 1379 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1380 | 1381 | is-path-in-cwd@^1.0.0: 1382 | version "1.0.0" 1383 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1384 | dependencies: 1385 | is-path-inside "^1.0.0" 1386 | 1387 | is-path-inside@^1.0.0: 1388 | version "1.0.0" 1389 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1390 | dependencies: 1391 | path-is-inside "^1.0.1" 1392 | 1393 | is-promise@^2.1.0: 1394 | version "2.1.0" 1395 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1396 | 1397 | is-property@^1.0.0: 1398 | version "1.0.2" 1399 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1400 | 1401 | is-resolvable@^1.0.0: 1402 | version "1.0.0" 1403 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 1404 | dependencies: 1405 | tryit "^1.0.1" 1406 | 1407 | is-typedarray@~1.0.0: 1408 | version "1.0.0" 1409 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1410 | 1411 | is-utf8@^0.2.0: 1412 | version "0.2.1" 1413 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1414 | 1415 | isarray@0.0.1: 1416 | version "0.0.1" 1417 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1418 | 1419 | isarray@^1.0.0, isarray@~1.0.0: 1420 | version "1.0.0" 1421 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1422 | 1423 | isemail@2.x.x: 1424 | version "2.2.1" 1425 | resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" 1426 | 1427 | isexe@^2.0.0: 1428 | version "2.0.0" 1429 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1430 | 1431 | isstream@~0.1.2: 1432 | version "0.1.2" 1433 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1434 | 1435 | istanbul-api@^1.1.0-alpha: 1436 | version "1.1.11" 1437 | resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.11.tgz#fcc0b461e2b3bda71e305155138238768257d9de" 1438 | dependencies: 1439 | async "^2.1.4" 1440 | fileset "^2.0.2" 1441 | istanbul-lib-coverage "^1.1.1" 1442 | istanbul-lib-hook "^1.0.7" 1443 | istanbul-lib-instrument "^1.7.4" 1444 | istanbul-lib-report "^1.1.1" 1445 | istanbul-lib-source-maps "^1.2.1" 1446 | istanbul-reports "^1.1.1" 1447 | js-yaml "^3.7.0" 1448 | mkdirp "^0.5.1" 1449 | once "^1.4.0" 1450 | 1451 | istanbul-lib-coverage@^1.1.1: 1452 | version "1.1.1" 1453 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" 1454 | 1455 | istanbul-lib-hook@^1.0.7: 1456 | version "1.0.7" 1457 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" 1458 | dependencies: 1459 | append-transform "^0.4.0" 1460 | 1461 | istanbul-lib-instrument@^1.7.4: 1462 | version "1.7.4" 1463 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" 1464 | dependencies: 1465 | babel-generator "^6.18.0" 1466 | babel-template "^6.16.0" 1467 | babel-traverse "^6.18.0" 1468 | babel-types "^6.18.0" 1469 | babylon "^6.17.4" 1470 | istanbul-lib-coverage "^1.1.1" 1471 | semver "^5.3.0" 1472 | 1473 | istanbul-lib-report@^1.1.1: 1474 | version "1.1.1" 1475 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" 1476 | dependencies: 1477 | istanbul-lib-coverage "^1.1.1" 1478 | mkdirp "^0.5.1" 1479 | path-parse "^1.0.5" 1480 | supports-color "^3.1.2" 1481 | 1482 | istanbul-lib-source-maps@^1.2.1: 1483 | version "1.2.1" 1484 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" 1485 | dependencies: 1486 | debug "^2.6.3" 1487 | istanbul-lib-coverage "^1.1.1" 1488 | mkdirp "^0.5.1" 1489 | rimraf "^2.6.1" 1490 | source-map "^0.5.3" 1491 | 1492 | istanbul-reports@^1.1.1: 1493 | version "1.1.1" 1494 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" 1495 | dependencies: 1496 | handlebars "^4.0.3" 1497 | 1498 | istanbul@1.1.0-alpha.1: 1499 | version "1.1.0-alpha.1" 1500 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-1.1.0-alpha.1.tgz#781795656018a2174c5f60f367ee5d361cb57b77" 1501 | dependencies: 1502 | abbrev "1.0.x" 1503 | async "1.x" 1504 | istanbul-api "^1.1.0-alpha" 1505 | js-yaml "3.x" 1506 | mkdirp "0.5.x" 1507 | nopt "3.x" 1508 | which "^1.1.1" 1509 | wordwrap "^1.0.0" 1510 | 1511 | items@2.x.x, items@^2.1.1: 1512 | version "2.1.1" 1513 | resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" 1514 | 1515 | joi@10.6.0, joi@^10.6.0: 1516 | version "10.6.0" 1517 | resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" 1518 | dependencies: 1519 | hoek "4.x.x" 1520 | isemail "2.x.x" 1521 | items "2.x.x" 1522 | topo "2.x.x" 1523 | 1524 | joi@10.x.x: 1525 | version "10.3.1" 1526 | resolved "https://registry.yarnpkg.com/joi/-/joi-10.3.1.tgz#2d22cab6eea650f02601144e51c35e2ba5ec497a" 1527 | dependencies: 1528 | hoek "4.x.x" 1529 | isemail "2.x.x" 1530 | items "2.x.x" 1531 | topo "2.x.x" 1532 | 1533 | joi@8.1.x: 1534 | version "8.1.1" 1535 | resolved "https://registry.yarnpkg.com/joi/-/joi-8.1.1.tgz#2d8b52a5d909d217ed47248577eefe8b1798f48f" 1536 | dependencies: 1537 | hoek "4.x.x" 1538 | isemail "2.x.x" 1539 | moment "2.x.x" 1540 | topo "2.x.x" 1541 | 1542 | js-tokens@^3.0.0, js-tokens@^3.0.2: 1543 | version "3.0.2" 1544 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1545 | 1546 | js-yaml@3.x, js-yaml@^3.4.6: 1547 | version "3.8.2" 1548 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721" 1549 | dependencies: 1550 | argparse "^1.0.7" 1551 | esprima "^3.1.1" 1552 | 1553 | js-yaml@^3.7.0, js-yaml@^3.9.1: 1554 | version "3.9.1" 1555 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" 1556 | dependencies: 1557 | argparse "^1.0.7" 1558 | esprima "^4.0.0" 1559 | 1560 | jsbn@~0.1.0: 1561 | version "0.1.1" 1562 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1563 | 1564 | jschardet@^1.4.2: 1565 | version "1.5.1" 1566 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" 1567 | 1568 | jsesc@^1.3.0: 1569 | version "1.3.0" 1570 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1571 | 1572 | json-schema-ref-parser@^1.4.1: 1573 | version "1.4.1" 1574 | resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz#c0c2e438bf0796723b02451bae8bc7dd0b37fed0" 1575 | dependencies: 1576 | call-me-maybe "^1.0.1" 1577 | debug "^2.2.0" 1578 | es6-promise "^3.0.2" 1579 | js-yaml "^3.4.6" 1580 | ono "^2.0.1" 1581 | 1582 | json-schema-ref-parser@^3.3.1: 1583 | version "3.3.1" 1584 | resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-3.3.1.tgz#86e751b8099357bf601a7cfe42d10123ee906a32" 1585 | dependencies: 1586 | call-me-maybe "^1.0.1" 1587 | debug "^3.0.0" 1588 | es6-promise "^4.1.1" 1589 | js-yaml "^3.9.1" 1590 | ono "^4.0.2" 1591 | z-schema "^3.18.2" 1592 | 1593 | json-schema-traverse@^0.3.0: 1594 | version "0.3.1" 1595 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1596 | 1597 | json-schema@0.2.3: 1598 | version "0.2.3" 1599 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1600 | 1601 | json-stable-stringify@1.x.x, json-stable-stringify@^1.0.1: 1602 | version "1.0.1" 1603 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1604 | dependencies: 1605 | jsonify "~0.0.0" 1606 | 1607 | json-stringify-safe@5.0.x, json-stringify-safe@5.x.x, json-stringify-safe@^5.0.0, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: 1608 | version "5.0.1" 1609 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1610 | 1611 | json3@3.3.2: 1612 | version "3.3.2" 1613 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1614 | 1615 | json5@0.4.0: 1616 | version "0.4.0" 1617 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d" 1618 | 1619 | jsonify@~0.0.0: 1620 | version "0.0.0" 1621 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1622 | 1623 | jsonpointer@^4.0.0: 1624 | version "4.0.1" 1625 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1626 | 1627 | jsprim@^1.2.2: 1628 | version "1.4.1" 1629 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1630 | dependencies: 1631 | assert-plus "1.0.0" 1632 | extsprintf "1.3.0" 1633 | json-schema "0.2.3" 1634 | verror "1.10.0" 1635 | 1636 | just-extend@^1.1.22: 1637 | version "1.1.22" 1638 | resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" 1639 | 1640 | kind-of@^3.0.2: 1641 | version "3.1.0" 1642 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1643 | dependencies: 1644 | is-buffer "^1.0.2" 1645 | 1646 | lab@^14.2.0: 1647 | version "14.2.1" 1648 | resolved "https://registry.yarnpkg.com/lab/-/lab-14.2.1.tgz#690c197ebd58077c98e74708ba32c5017cab4273" 1649 | dependencies: 1650 | bossy "3.x.x" 1651 | code "4.1.x" 1652 | diff "3.3.x" 1653 | eslint "4.4.x" 1654 | eslint-config-hapi "10.x.x" 1655 | eslint-plugin-hapi "4.x.x" 1656 | espree "3.5.x" 1657 | find-rc "3.0.x" 1658 | handlebars "4.x.x" 1659 | hoek "4.x.x" 1660 | items "2.x.x" 1661 | json-stable-stringify "1.x.x" 1662 | json-stringify-safe "5.x.x" 1663 | mkdirp "0.5.x" 1664 | seedrandom "2.4.x" 1665 | source-map "0.5.x" 1666 | source-map-support "0.4.x" 1667 | 1668 | lazy-cache@^1.0.3: 1669 | version "1.0.4" 1670 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1671 | 1672 | lcov-parse@0.0.10: 1673 | version "0.0.10" 1674 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" 1675 | 1676 | levn@^0.3.0, levn@~0.3.0: 1677 | version "0.3.0" 1678 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1679 | dependencies: 1680 | prelude-ls "~1.1.2" 1681 | type-check "~0.3.2" 1682 | 1683 | load-json-file@^2.0.0: 1684 | version "2.0.0" 1685 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1686 | dependencies: 1687 | graceful-fs "^4.1.2" 1688 | parse-json "^2.2.0" 1689 | pify "^2.0.0" 1690 | strip-bom "^3.0.0" 1691 | 1692 | locate-path@^2.0.0: 1693 | version "2.0.0" 1694 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1695 | dependencies: 1696 | p-locate "^2.0.0" 1697 | path-exists "^3.0.0" 1698 | 1699 | lodash._baseassign@^3.0.0: 1700 | version "3.2.0" 1701 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 1702 | dependencies: 1703 | lodash._basecopy "^3.0.0" 1704 | lodash.keys "^3.0.0" 1705 | 1706 | lodash._basecopy@^3.0.0: 1707 | version "3.0.1" 1708 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 1709 | 1710 | lodash._basecreate@^3.0.0: 1711 | version "3.0.3" 1712 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 1713 | 1714 | lodash._getnative@^3.0.0: 1715 | version "3.9.1" 1716 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 1717 | 1718 | lodash._isiterateecall@^3.0.0: 1719 | version "3.0.9" 1720 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 1721 | 1722 | lodash.cond@^4.3.0: 1723 | version "4.5.2" 1724 | resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" 1725 | 1726 | lodash.create@3.1.1: 1727 | version "3.1.1" 1728 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 1729 | dependencies: 1730 | lodash._baseassign "^3.0.0" 1731 | lodash._basecreate "^3.0.0" 1732 | lodash._isiterateecall "^3.0.0" 1733 | 1734 | lodash.get@^4.0.0, lodash.get@^4.1.2: 1735 | version "4.4.2" 1736 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1737 | 1738 | lodash.isarguments@^3.0.0: 1739 | version "3.1.0" 1740 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 1741 | 1742 | lodash.isarray@^3.0.0: 1743 | version "3.0.4" 1744 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 1745 | 1746 | lodash.isequal@^4.0.0, lodash.isequal@^4.4.0: 1747 | version "4.5.0" 1748 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 1749 | 1750 | lodash.keys@^3.0.0: 1751 | version "3.1.2" 1752 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 1753 | dependencies: 1754 | lodash._getnative "^3.0.0" 1755 | lodash.isarguments "^3.0.0" 1756 | lodash.isarray "^3.0.0" 1757 | 1758 | lodash@4.17.4, lodash@^4.14.0, lodash@^4.17.4, lodash@~4.17.2: 1759 | version "4.17.4" 1760 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1761 | 1762 | lodash@^4.0.0, lodash@^4.3.0: 1763 | version "4.15.0" 1764 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.15.0.tgz#3162391d8f0140aa22cf8f6b3c34d6b7f63d3aa9" 1765 | 1766 | lolex@^1.6.0: 1767 | version "1.6.0" 1768 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" 1769 | 1770 | lolex@^2.1.2: 1771 | version "2.1.2" 1772 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" 1773 | 1774 | longest@^1.0.1: 1775 | version "1.0.1" 1776 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1777 | 1778 | loose-envify@^1.0.0: 1779 | version "1.3.1" 1780 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1781 | dependencies: 1782 | js-tokens "^3.0.0" 1783 | 1784 | lru-cache@4.1.x, lru-cache@^4.0.1: 1785 | version "4.1.1" 1786 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 1787 | dependencies: 1788 | pseudomap "^1.0.2" 1789 | yallist "^2.1.2" 1790 | 1791 | mime-db@1.x.x: 1792 | version "1.27.0" 1793 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1794 | 1795 | mime-db@~1.29.0: 1796 | version "1.29.0" 1797 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" 1798 | 1799 | mime-types@^2.1.12, mime-types@~2.1.7: 1800 | version "2.1.16" 1801 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" 1802 | dependencies: 1803 | mime-db "~1.29.0" 1804 | 1805 | mimic-fn@^1.0.0: 1806 | version "1.1.0" 1807 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 1808 | 1809 | mimos@^3.0.3: 1810 | version "3.0.3" 1811 | resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" 1812 | dependencies: 1813 | hoek "4.x.x" 1814 | mime-db "1.x.x" 1815 | 1816 | "minimatch@2 || 3", minimatch@^3.0.2: 1817 | version "3.0.3" 1818 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1819 | dependencies: 1820 | brace-expansion "^1.0.0" 1821 | 1822 | minimatch@^3.0.3, minimatch@^3.0.4: 1823 | version "3.0.4" 1824 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1825 | dependencies: 1826 | brace-expansion "^1.1.7" 1827 | 1828 | minimist@0.0.8, minimist@~0.0.1: 1829 | version "0.0.8" 1830 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1831 | 1832 | mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: 1833 | version "0.5.1" 1834 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1835 | dependencies: 1836 | minimist "0.0.8" 1837 | 1838 | mocha@3.5.0: 1839 | version "3.5.0" 1840 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.0.tgz#1328567d2717f997030f8006234bce9b8cd72465" 1841 | dependencies: 1842 | browser-stdout "1.3.0" 1843 | commander "2.9.0" 1844 | debug "2.6.8" 1845 | diff "3.2.0" 1846 | escape-string-regexp "1.0.5" 1847 | glob "7.1.1" 1848 | growl "1.9.2" 1849 | json3 "3.3.2" 1850 | lodash.create "3.1.1" 1851 | mkdirp "0.5.1" 1852 | supports-color "3.1.2" 1853 | 1854 | moment@2.15.x, moment@2.x.x: 1855 | version "2.15.2" 1856 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc" 1857 | 1858 | moment@^2.10.6: 1859 | version "2.18.1" 1860 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 1861 | 1862 | ms@0.7.1: 1863 | version "0.7.1" 1864 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1865 | 1866 | ms@2.0.0: 1867 | version "2.0.0" 1868 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1869 | 1870 | mute-stream@0.0.7: 1871 | version "0.0.7" 1872 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1873 | 1874 | mv@~2: 1875 | version "2.1.1" 1876 | resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" 1877 | dependencies: 1878 | mkdirp "~0.5.1" 1879 | ncp "~2.0.0" 1880 | rimraf "~2.4.0" 1881 | 1882 | nan@^2.3.3, nan@^2.4.0: 1883 | version "2.6.2" 1884 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" 1885 | 1886 | native-promise-only@^0.8.1: 1887 | version "0.8.1" 1888 | resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" 1889 | 1890 | natural-compare@^1.4.0: 1891 | version "1.4.0" 1892 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1893 | 1894 | ncp@~2.0.0: 1895 | version "2.0.0" 1896 | resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" 1897 | 1898 | newrelic@2.2.0: 1899 | version "2.2.0" 1900 | resolved "https://registry.yarnpkg.com/newrelic/-/newrelic-2.2.0.tgz#ccb38e3324c3f92d845d3c1ffd3d87d283b10d7e" 1901 | dependencies: 1902 | concat-stream "^1.5.0" 1903 | https-proxy-agent "^0.3.5" 1904 | json-stringify-safe "^5.0.0" 1905 | readable-stream "^2.1.4" 1906 | semver "^5.3.0" 1907 | optionalDependencies: 1908 | "@newrelic/native-metrics" "^2.1.0" 1909 | 1910 | nigel@2.x.x: 1911 | version "2.0.2" 1912 | resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" 1913 | dependencies: 1914 | hoek "4.x.x" 1915 | vise "2.x.x" 1916 | 1917 | nise@^1.0.1: 1918 | version "1.0.1" 1919 | resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" 1920 | dependencies: 1921 | formatio "^1.2.0" 1922 | just-extend "^1.1.22" 1923 | lolex "^1.6.0" 1924 | path-to-regexp "^1.7.0" 1925 | 1926 | no-arrowception@1.x.x: 1927 | version "1.0.0" 1928 | resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" 1929 | 1930 | nock@9.0.14: 1931 | version "9.0.14" 1932 | resolved "https://registry.yarnpkg.com/nock/-/nock-9.0.14.tgz#2211550253173ce298bcd89fca825e83813ca72b" 1933 | dependencies: 1934 | chai ">=1.9.2 <4.0.0" 1935 | debug "^2.2.0" 1936 | deep-equal "^1.0.0" 1937 | json-stringify-safe "^5.0.1" 1938 | lodash "~4.17.2" 1939 | mkdirp "^0.5.0" 1940 | propagate "0.4.0" 1941 | qs "^6.0.2" 1942 | semver "^5.3.0" 1943 | 1944 | nopt@3.x: 1945 | version "3.0.6" 1946 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1947 | dependencies: 1948 | abbrev "1" 1949 | 1950 | normalize-package-data@^2.3.2: 1951 | version "2.4.0" 1952 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1953 | dependencies: 1954 | hosted-git-info "^2.1.4" 1955 | is-builtin-module "^1.0.0" 1956 | semver "2 || 3 || 4 || 5" 1957 | validate-npm-package-license "^3.0.1" 1958 | 1959 | normalize-path@^1.0.0: 1960 | version "1.0.0" 1961 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" 1962 | 1963 | number-is-nan@^1.0.0: 1964 | version "1.0.1" 1965 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1966 | 1967 | oauth-sign@~0.8.1: 1968 | version "0.8.2" 1969 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1970 | 1971 | object-assign@^4.0.1: 1972 | version "4.1.1" 1973 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1974 | 1975 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1976 | version "1.4.0" 1977 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1978 | dependencies: 1979 | wrappy "1" 1980 | 1981 | once@~1.3.0: 1982 | version "1.3.3" 1983 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 1984 | dependencies: 1985 | wrappy "1" 1986 | 1987 | onetime@^2.0.0: 1988 | version "2.0.1" 1989 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1990 | dependencies: 1991 | mimic-fn "^1.0.0" 1992 | 1993 | ono@^2.0.1: 1994 | version "2.2.4" 1995 | resolved "https://registry.yarnpkg.com/ono/-/ono-2.2.4.tgz#f6c1d9ea64da07a54863986535da3de67e502696" 1996 | 1997 | ono@^4.0.2: 1998 | version "4.0.2" 1999 | resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.2.tgz#2e18ff7c21b9eac0cab794f7a3082507000d6d36" 2000 | dependencies: 2001 | format-util "^1.0.3" 2002 | 2003 | oppsy@1.x.x: 2004 | version "1.0.2" 2005 | resolved "https://registry.yarnpkg.com/oppsy/-/oppsy-1.0.2.tgz#98014cd6967653a83cfffa554226dc90050baad4" 2006 | dependencies: 2007 | hoek "4.x.x" 2008 | items "2.x.x" 2009 | 2010 | optimist@^0.6.1: 2011 | version "0.6.1" 2012 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 2013 | dependencies: 2014 | minimist "~0.0.1" 2015 | wordwrap "~0.0.2" 2016 | 2017 | optionator@^0.8.2: 2018 | version "0.8.2" 2019 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2020 | dependencies: 2021 | deep-is "~0.1.3" 2022 | fast-levenshtein "~2.0.4" 2023 | levn "~0.3.0" 2024 | prelude-ls "~1.1.2" 2025 | type-check "~0.3.2" 2026 | wordwrap "~1.0.0" 2027 | 2028 | os-homedir@1.0.2: 2029 | version "1.0.2" 2030 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2031 | 2032 | os-tmpdir@~1.0.1: 2033 | version "1.0.2" 2034 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2035 | 2036 | p-limit@^1.1.0: 2037 | version "1.1.0" 2038 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 2039 | 2040 | p-locate@^2.0.0: 2041 | version "2.0.0" 2042 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2043 | dependencies: 2044 | p-limit "^1.1.0" 2045 | 2046 | parse-json@^2.2.0: 2047 | version "2.2.0" 2048 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2049 | dependencies: 2050 | error-ex "^1.2.0" 2051 | 2052 | path-exists@^2.0.0: 2053 | version "2.1.0" 2054 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2055 | dependencies: 2056 | pinkie-promise "^2.0.0" 2057 | 2058 | path-exists@^3.0.0: 2059 | version "3.0.0" 2060 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2061 | 2062 | path-is-absolute@^1.0.0: 2063 | version "1.0.1" 2064 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2065 | 2066 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 2067 | version "1.0.2" 2068 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2069 | 2070 | path-parse@^1.0.5: 2071 | version "1.0.5" 2072 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2073 | 2074 | path-to-regexp@^1.7.0: 2075 | version "1.7.0" 2076 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" 2077 | dependencies: 2078 | isarray "0.0.1" 2079 | 2080 | path-type@^2.0.0: 2081 | version "2.0.0" 2082 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 2083 | dependencies: 2084 | pify "^2.0.0" 2085 | 2086 | pathval@^1.0.0: 2087 | version "1.1.0" 2088 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 2089 | 2090 | pez@2.x.x: 2091 | version "2.1.4" 2092 | resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.4.tgz#73f822fa62d599d65c4606f490d54d345191bc7c" 2093 | dependencies: 2094 | b64 "3.x.x" 2095 | boom "4.x.x" 2096 | content "3.x.x" 2097 | hoek "4.x.x" 2098 | nigel "2.x.x" 2099 | 2100 | pify@^2.0.0: 2101 | version "2.3.0" 2102 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2103 | 2104 | pinkie-promise@^2.0.0: 2105 | version "2.0.1" 2106 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2107 | dependencies: 2108 | pinkie "^2.0.0" 2109 | 2110 | pinkie@^2.0.0: 2111 | version "2.0.4" 2112 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2113 | 2114 | pkg-dir@^1.0.0: 2115 | version "1.0.0" 2116 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 2117 | dependencies: 2118 | find-up "^1.0.0" 2119 | 2120 | pluralize@^4.0.0: 2121 | version "4.0.0" 2122 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" 2123 | 2124 | podium@^1.3.0: 2125 | version "1.3.0" 2126 | resolved "https://registry.yarnpkg.com/podium/-/podium-1.3.0.tgz#3c490f54d16f10f5260cbe98641f1cb733a8851c" 2127 | dependencies: 2128 | hoek "4.x.x" 2129 | items "2.x.x" 2130 | joi "10.x.x" 2131 | 2132 | prelude-ls@~1.1.2: 2133 | version "1.1.2" 2134 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2135 | 2136 | process-nextick-args@~1.0.6: 2137 | version "1.0.7" 2138 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2139 | 2140 | progress@^2.0.0: 2141 | version "2.0.0" 2142 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 2143 | 2144 | propagate@0.4.0: 2145 | version "0.4.0" 2146 | resolved "https://registry.yarnpkg.com/propagate/-/propagate-0.4.0.tgz#f3fcca0a6fe06736a7ba572966069617c130b481" 2147 | 2148 | pseudomap@^1.0.2: 2149 | version "1.0.2" 2150 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2151 | 2152 | pump@^1.0.0: 2153 | version "1.0.2" 2154 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" 2155 | dependencies: 2156 | end-of-stream "^1.1.0" 2157 | once "^1.3.1" 2158 | 2159 | pumpify@1.3.x: 2160 | version "1.3.5" 2161 | resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b" 2162 | dependencies: 2163 | duplexify "^3.1.2" 2164 | inherits "^2.0.1" 2165 | pump "^1.0.0" 2166 | 2167 | punycode@^1.4.1: 2168 | version "1.4.1" 2169 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2170 | 2171 | qs@^6.0.2: 2172 | version "6.4.0" 2173 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 2174 | 2175 | qs@~6.3.0: 2176 | version "6.3.2" 2177 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" 2178 | 2179 | read-pkg-up@^2.0.0: 2180 | version "2.0.0" 2181 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 2182 | dependencies: 2183 | find-up "^2.0.0" 2184 | read-pkg "^2.0.0" 2185 | 2186 | read-pkg@^2.0.0: 2187 | version "2.0.0" 2188 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2189 | dependencies: 2190 | load-json-file "^2.0.0" 2191 | normalize-package-data "^2.3.2" 2192 | path-type "^2.0.0" 2193 | 2194 | readable-stream@^2.0.0, readable-stream@^2.2.2: 2195 | version "2.2.6" 2196 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" 2197 | dependencies: 2198 | buffer-shims "^1.0.0" 2199 | core-util-is "~1.0.0" 2200 | inherits "~2.0.1" 2201 | isarray "~1.0.0" 2202 | process-nextick-args "~1.0.6" 2203 | string_decoder "~0.10.x" 2204 | util-deprecate "~1.0.1" 2205 | 2206 | readable-stream@^2.1.4: 2207 | version "2.3.3" 2208 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 2209 | dependencies: 2210 | core-util-is "~1.0.0" 2211 | inherits "~2.0.3" 2212 | isarray "~1.0.0" 2213 | process-nextick-args "~1.0.6" 2214 | safe-buffer "~5.1.1" 2215 | string_decoder "~1.0.3" 2216 | util-deprecate "~1.0.1" 2217 | 2218 | regenerator-runtime@^0.11.0: 2219 | version "0.11.0" 2220 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" 2221 | 2222 | repeat-string@^1.5.2: 2223 | version "1.6.1" 2224 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2225 | 2226 | repeating@^2.0.0: 2227 | version "2.0.1" 2228 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2229 | dependencies: 2230 | is-finite "^1.0.0" 2231 | 2232 | request@~2.79.0: 2233 | version "2.79.0" 2234 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 2235 | dependencies: 2236 | aws-sign2 "~0.6.0" 2237 | aws4 "^1.2.1" 2238 | caseless "~0.11.0" 2239 | combined-stream "~1.0.5" 2240 | extend "~3.0.0" 2241 | forever-agent "~0.6.1" 2242 | form-data "~2.1.1" 2243 | har-validator "~2.0.6" 2244 | hawk "~3.1.3" 2245 | http-signature "~1.1.0" 2246 | is-typedarray "~1.0.0" 2247 | isstream "~0.1.2" 2248 | json-stringify-safe "~5.0.1" 2249 | mime-types "~2.1.7" 2250 | oauth-sign "~0.8.1" 2251 | qs "~6.3.0" 2252 | stringstream "~0.0.4" 2253 | tough-cookie "~2.3.0" 2254 | tunnel-agent "~0.4.1" 2255 | uuid "^3.0.0" 2256 | 2257 | require-uncached@^1.0.3: 2258 | version "1.0.3" 2259 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2260 | dependencies: 2261 | caller-path "^0.1.0" 2262 | resolve-from "^1.0.0" 2263 | 2264 | resolve-from@^1.0.0: 2265 | version "1.0.1" 2266 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 2267 | 2268 | resolve@^1.2.0, resolve@^1.3.3: 2269 | version "1.4.0" 2270 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" 2271 | dependencies: 2272 | path-parse "^1.0.5" 2273 | 2274 | restore-cursor@^2.0.0: 2275 | version "2.0.0" 2276 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 2277 | dependencies: 2278 | onetime "^2.0.0" 2279 | signal-exit "^3.0.2" 2280 | 2281 | right-align@^0.1.1: 2282 | version "0.1.3" 2283 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 2284 | dependencies: 2285 | align-text "^0.1.1" 2286 | 2287 | rimraf@^2.2.8, rimraf@^2.6.1: 2288 | version "2.6.1" 2289 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 2290 | dependencies: 2291 | glob "^7.0.5" 2292 | 2293 | rimraf@~2.4.0: 2294 | version "2.4.5" 2295 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" 2296 | dependencies: 2297 | glob "^6.0.1" 2298 | 2299 | run-async@^2.2.0: 2300 | version "2.3.0" 2301 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 2302 | dependencies: 2303 | is-promise "^2.1.0" 2304 | 2305 | rx-lite-aggregates@^4.0.8: 2306 | version "4.0.8" 2307 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 2308 | dependencies: 2309 | rx-lite "*" 2310 | 2311 | rx-lite@*, rx-lite@^4.0.8: 2312 | version "4.0.8" 2313 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 2314 | 2315 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2316 | version "5.1.1" 2317 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 2318 | 2319 | safe-json-stringify@~1: 2320 | version "1.0.4" 2321 | resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz#81a098f447e4bbc3ff3312a243521bc060ef5911" 2322 | 2323 | samsam@1.x, samsam@^1.1.3: 2324 | version "1.2.1" 2325 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" 2326 | 2327 | seedrandom@2.4.x: 2328 | version "2.4.3" 2329 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" 2330 | 2331 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 2332 | version "5.4.1" 2333 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 2334 | 2335 | semver@5.3.0: 2336 | version "5.3.0" 2337 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2338 | 2339 | shebang-command@^1.2.0: 2340 | version "1.2.0" 2341 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2342 | dependencies: 2343 | shebang-regex "^1.0.0" 2344 | 2345 | shebang-regex@^1.0.0: 2346 | version "1.0.0" 2347 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2348 | 2349 | shot@^3.4.2: 2350 | version "3.4.2" 2351 | resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" 2352 | dependencies: 2353 | hoek "4.x.x" 2354 | joi "10.x.x" 2355 | 2356 | signal-exit@^3.0.2: 2357 | version "3.0.2" 2358 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2359 | 2360 | sinon-chai@2.13.0: 2361 | version "2.13.0" 2362 | resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-2.13.0.tgz#b9a42e801c20234bfc2f43b29e6f4f61b60990c4" 2363 | 2364 | sinon@3.2.1: 2365 | version "3.2.1" 2366 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.2.1.tgz#d8adabd900730fd497788a027049c64b08be91c2" 2367 | dependencies: 2368 | diff "^3.1.0" 2369 | formatio "1.2.0" 2370 | lolex "^2.1.2" 2371 | native-promise-only "^0.8.1" 2372 | nise "^1.0.1" 2373 | path-to-regexp "^1.7.0" 2374 | samsam "^1.1.3" 2375 | text-encoding "0.6.4" 2376 | type-detect "^4.0.0" 2377 | 2378 | slice-ansi@0.0.4: 2379 | version "0.0.4" 2380 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 2381 | 2382 | sntp@1.x.x: 2383 | version "1.0.9" 2384 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2385 | dependencies: 2386 | hoek "2.x.x" 2387 | 2388 | source-map-support@0.4.x: 2389 | version "0.4.16" 2390 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" 2391 | dependencies: 2392 | source-map "^0.5.6" 2393 | 2394 | source-map@0.5.x: 2395 | version "0.5.7" 2396 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2397 | 2398 | source-map@^0.4.4: 2399 | version "0.4.4" 2400 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 2401 | dependencies: 2402 | amdefine ">=0.0.4" 2403 | 2404 | source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: 2405 | version "0.5.6" 2406 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 2407 | 2408 | spdx-correct@~1.0.0: 2409 | version "1.0.2" 2410 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2411 | dependencies: 2412 | spdx-license-ids "^1.0.2" 2413 | 2414 | spdx-expression-parse@~1.0.0: 2415 | version "1.0.4" 2416 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2417 | 2418 | spdx-license-ids@^1.0.2: 2419 | version "1.2.2" 2420 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2421 | 2422 | sprintf-js@~1.0.2: 2423 | version "1.0.3" 2424 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2425 | 2426 | sshpk@^1.7.0: 2427 | version "1.13.1" 2428 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 2429 | dependencies: 2430 | asn1 "~0.2.3" 2431 | assert-plus "^1.0.0" 2432 | dashdash "^1.12.0" 2433 | getpass "^0.1.1" 2434 | optionalDependencies: 2435 | bcrypt-pbkdf "^1.0.0" 2436 | ecc-jsbn "~0.1.1" 2437 | jsbn "~0.1.0" 2438 | tweetnacl "~0.14.0" 2439 | 2440 | statehood@^5.0.3: 2441 | version "5.0.3" 2442 | resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.3.tgz#c07a75620db5379b60d2edd47f538002a8ac7dd6" 2443 | dependencies: 2444 | boom "5.x.x" 2445 | cryptiles "3.x.x" 2446 | hoek "4.x.x" 2447 | iron "4.x.x" 2448 | items "2.x.x" 2449 | joi "10.x.x" 2450 | 2451 | stream-shift@^1.0.0: 2452 | version "1.0.0" 2453 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 2454 | 2455 | string-width@^2.0.0: 2456 | version "2.0.0" 2457 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 2458 | dependencies: 2459 | is-fullwidth-code-point "^2.0.0" 2460 | strip-ansi "^3.0.0" 2461 | 2462 | string-width@^2.1.0: 2463 | version "2.1.1" 2464 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2465 | dependencies: 2466 | is-fullwidth-code-point "^2.0.0" 2467 | strip-ansi "^4.0.0" 2468 | 2469 | string_decoder@~0.10.x: 2470 | version "0.10.31" 2471 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2472 | 2473 | string_decoder@~1.0.3: 2474 | version "1.0.3" 2475 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 2476 | dependencies: 2477 | safe-buffer "~5.1.0" 2478 | 2479 | stringstream@~0.0.4: 2480 | version "0.0.5" 2481 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2482 | 2483 | strip-ansi@^3.0.0: 2484 | version "3.0.1" 2485 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2486 | dependencies: 2487 | ansi-regex "^2.0.0" 2488 | 2489 | strip-ansi@^4.0.0: 2490 | version "4.0.0" 2491 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2492 | dependencies: 2493 | ansi-regex "^3.0.0" 2494 | 2495 | strip-bom@^2.0.0: 2496 | version "2.0.0" 2497 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2498 | dependencies: 2499 | is-utf8 "^0.2.0" 2500 | 2501 | strip-bom@^3.0.0: 2502 | version "3.0.0" 2503 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2504 | 2505 | strip-indent@^2.0.0: 2506 | version "2.0.0" 2507 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" 2508 | 2509 | strip-json-comments@~2.0.1: 2510 | version "2.0.1" 2511 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2512 | 2513 | subtext@^5.0.0: 2514 | version "5.0.0" 2515 | resolved "https://registry.yarnpkg.com/subtext/-/subtext-5.0.0.tgz#9c3f083018bb1586b167ad8cfd87083f5ccdfe0f" 2516 | dependencies: 2517 | boom "5.x.x" 2518 | content "3.x.x" 2519 | hoek "4.x.x" 2520 | pez "2.x.x" 2521 | wreck "12.x.x" 2522 | 2523 | supports-color@3.1.2: 2524 | version "3.1.2" 2525 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 2526 | dependencies: 2527 | has-flag "^1.0.0" 2528 | 2529 | supports-color@^2.0.0: 2530 | version "2.0.0" 2531 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2532 | 2533 | supports-color@^3.1.2: 2534 | version "3.2.3" 2535 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 2536 | dependencies: 2537 | has-flag "^1.0.0" 2538 | 2539 | supports-color@^4.0.0: 2540 | version "4.2.1" 2541 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" 2542 | dependencies: 2543 | has-flag "^2.0.0" 2544 | 2545 | swagger-methods@^1.0.0: 2546 | version "1.0.0" 2547 | resolved "https://registry.yarnpkg.com/swagger-methods/-/swagger-methods-1.0.0.tgz#b39c77957d305a6535c0a1e015081185b99d61fc" 2548 | 2549 | swagger-parser@^3.4.2: 2550 | version "3.4.2" 2551 | resolved "https://registry.yarnpkg.com/swagger-parser/-/swagger-parser-3.4.2.tgz#244d67d6eeed08c00acb5d95950d5aefbd6185a3" 2552 | dependencies: 2553 | call-me-maybe "^1.0.1" 2554 | debug "^3.0.0" 2555 | es6-promise "^4.1.1" 2556 | json-schema-ref-parser "^1.4.1" 2557 | ono "^4.0.2" 2558 | swagger-methods "^1.0.0" 2559 | swagger-schema-official "2.0.0-bab6bed" 2560 | z-schema "^3.16.1" 2561 | 2562 | swagger-schema-official@2.0.0-bab6bed: 2563 | version "2.0.0-bab6bed" 2564 | resolved "https://registry.yarnpkg.com/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz#70070468d6d2977ca5237b2e519ca7d06a2ea3fd" 2565 | 2566 | table@^4.0.1: 2567 | version "4.0.1" 2568 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" 2569 | dependencies: 2570 | ajv "^4.7.0" 2571 | ajv-keywords "^1.0.0" 2572 | chalk "^1.1.1" 2573 | lodash "^4.0.0" 2574 | slice-ansi "0.0.4" 2575 | string-width "^2.0.0" 2576 | 2577 | text-encoding@0.6.4: 2578 | version "0.6.4" 2579 | resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" 2580 | 2581 | text-table@~0.2.0: 2582 | version "0.2.0" 2583 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2584 | 2585 | through@^2.3.6: 2586 | version "2.3.8" 2587 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2588 | 2589 | tmp@^0.0.31: 2590 | version "0.0.31" 2591 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" 2592 | dependencies: 2593 | os-tmpdir "~1.0.1" 2594 | 2595 | to-fast-properties@^1.0.3: 2596 | version "1.0.3" 2597 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 2598 | 2599 | topo@2.x.x, topo@^2.0.2: 2600 | version "2.0.2" 2601 | resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" 2602 | dependencies: 2603 | hoek "4.x.x" 2604 | 2605 | tough-cookie@~2.3.0: 2606 | version "2.3.2" 2607 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2608 | dependencies: 2609 | punycode "^1.4.1" 2610 | 2611 | trim-right@^1.0.1: 2612 | version "1.0.1" 2613 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2614 | 2615 | tryit@^1.0.1: 2616 | version "1.0.3" 2617 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 2618 | 2619 | tunnel-agent@~0.4.1: 2620 | version "0.4.3" 2621 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 2622 | 2623 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2624 | version "0.14.5" 2625 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2626 | 2627 | type-check@~0.3.2: 2628 | version "0.3.2" 2629 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2630 | dependencies: 2631 | prelude-ls "~1.1.2" 2632 | 2633 | type-detect@0.1.1: 2634 | version "0.1.1" 2635 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" 2636 | 2637 | type-detect@^1.0.0: 2638 | version "1.0.0" 2639 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" 2640 | 2641 | type-detect@^3.0.0: 2642 | version "3.0.0" 2643 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55" 2644 | 2645 | type-detect@^4.0.0: 2646 | version "4.0.3" 2647 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 2648 | 2649 | typedarray@^0.0.6: 2650 | version "0.0.6" 2651 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2652 | 2653 | uglify-js@^2.6: 2654 | version "2.8.16" 2655 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.16.tgz#d286190b6eefc6fd65eb0ecac6551e0b0e8839a4" 2656 | dependencies: 2657 | source-map "~0.5.1" 2658 | yargs "~3.10.0" 2659 | optionalDependencies: 2660 | uglify-to-browserify "~1.0.0" 2661 | 2662 | uglify-to-browserify@~1.0.0: 2663 | version "1.0.2" 2664 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2665 | 2666 | util-deprecate@~1.0.1: 2667 | version "1.0.2" 2668 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2669 | 2670 | uuid@^3.0.0: 2671 | version "3.1.0" 2672 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 2673 | 2674 | validate-npm-package-license@^3.0.1: 2675 | version "3.0.1" 2676 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2677 | dependencies: 2678 | spdx-correct "~1.0.0" 2679 | spdx-expression-parse "~1.0.0" 2680 | 2681 | validator@^6.0.0: 2682 | version "6.3.0" 2683 | resolved "https://registry.yarnpkg.com/validator/-/validator-6.3.0.tgz#47ce23ed8d4eaddfa9d4b8ef0071b6cf1078d7c8" 2684 | 2685 | validator@^8.0.0: 2686 | version "8.1.0" 2687 | resolved "https://registry.yarnpkg.com/validator/-/validator-8.1.0.tgz#89cf6b512ff71eba886afd8d10d47f8dc800eac0" 2688 | 2689 | verror@1.10.0: 2690 | version "1.10.0" 2691 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2692 | dependencies: 2693 | assert-plus "^1.0.0" 2694 | core-util-is "1.0.2" 2695 | extsprintf "^1.2.0" 2696 | 2697 | vise@2.x.x: 2698 | version "2.0.2" 2699 | resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" 2700 | dependencies: 2701 | hoek "4.x.x" 2702 | 2703 | vision@4.1.1: 2704 | version "4.1.1" 2705 | resolved "https://registry.yarnpkg.com/vision/-/vision-4.1.1.tgz#e1b612b2d2e2f20310a039290fd49d51248f82da" 2706 | dependencies: 2707 | boom "4.x.x" 2708 | hoek "4.x.x" 2709 | items "2.x.x" 2710 | joi "10.x.x" 2711 | 2712 | which@^1.1.1: 2713 | version "1.2.14" 2714 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 2715 | dependencies: 2716 | isexe "^2.0.0" 2717 | 2718 | which@^1.2.9: 2719 | version "1.3.0" 2720 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 2721 | dependencies: 2722 | isexe "^2.0.0" 2723 | 2724 | window-size@0.1.0: 2725 | version "0.1.0" 2726 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2727 | 2728 | wordwrap@0.0.2: 2729 | version "0.0.2" 2730 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2731 | 2732 | wordwrap@^1.0.0, wordwrap@~1.0.0: 2733 | version "1.0.0" 2734 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2735 | 2736 | wordwrap@~0.0.2: 2737 | version "0.0.3" 2738 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2739 | 2740 | wrappy@1: 2741 | version "1.0.2" 2742 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2743 | 2744 | wreck@12.x.x: 2745 | version "12.2.3" 2746 | resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.2.3.tgz#3cb2ea880ea51c5982a23fa8182c53970b9b3afe" 2747 | dependencies: 2748 | boom "5.x.x" 2749 | hoek "4.x.x" 2750 | 2751 | write@^0.2.1: 2752 | version "0.2.1" 2753 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 2754 | dependencies: 2755 | mkdirp "^0.5.1" 2756 | 2757 | xtend@^4.0.0: 2758 | version "4.0.1" 2759 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2760 | 2761 | yallist@^2.1.2: 2762 | version "2.1.2" 2763 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2764 | 2765 | yargs@~3.10.0: 2766 | version "3.10.0" 2767 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2768 | dependencies: 2769 | camelcase "^1.0.2" 2770 | cliui "^2.1.0" 2771 | decamelize "^1.0.0" 2772 | window-size "0.1.0" 2773 | 2774 | z-schema@^3.16.1: 2775 | version "3.18.2" 2776 | resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.2.tgz#e422196b5efe60b46adef3c3f2aef2deaa911161" 2777 | dependencies: 2778 | lodash.get "^4.1.2" 2779 | lodash.isequal "^4.4.0" 2780 | validator "^6.0.0" 2781 | optionalDependencies: 2782 | commander "^2.7.1" 2783 | 2784 | z-schema@^3.18.2: 2785 | version "3.18.3" 2786 | resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.3.tgz#45592990891d0342fe20a36823fc44d89ab4d8a2" 2787 | dependencies: 2788 | lodash.get "^4.0.0" 2789 | lodash.isequal "^4.0.0" 2790 | validator "^8.0.0" 2791 | optionalDependencies: 2792 | commander "^2.7.1" 2793 | --------------------------------------------------------------------------------