From 7fc31c2fe5d64d053e6edc1711697f654645dd97 Mon Sep 17 00:00:00 2001 From: Ryan Clark Date: Fri, 15 Jun 2018 17:52:28 -0700 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=20that=20container=20(#184)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ♻ that container * Add logging (#185) * adds logging of watcher-level errors, worker receives, and completion status * prefixed logs from child processes * fixes logger factory to accept a message * --> false for legibility * move binary split to dependency * package lock changes * Scale down threshold (#187) * change scale-down MetricIntervalLowerBound to MetricIntervalUpperBound * exit main loop after workers finish * resolve() after all workers return instead of exiting * fix tests and mocks * cleanup * logs * another log * use logger and process.stdout for logs * more logs * edit logs * Add alarms to "♻️ that container" PR (#198) * Add alarms and alarm docs * Add failedPlacementAlarmPeriods * Add CloudWatch Alarms snapshots * Update template jest snapshots * Add CloudWatch Alarms snapshots * Add failedworker and failedworkerplacement metric * Typo r/LogGroup/Logs * Change metric name * Metric Filter of worker errors to "[failure]" * Have current published version instead of undefined * Jake's Review * uh update-jest * Update alarms.md * Add template validation tests (#215) * Add travis user * Ensure this fails * Add validation for notificationEmail or notificationTopic * Add minSize and maxSize of service scaleup and scaledown, deadletter queue threshold, info to doc (#211) * Closes #208, #207, #206, #182, #149, #72, #15 (cherry picked from commit 8de328df79ccf52b8d612c625891555808c2fa0e) * Add minSize as option * update jest tests * Change MinSize to 0 * update jest * identation and minSize to 0 * Add deadletterThreshold info in Worker-retry-cycle * Update tests with maxSize property * remove superfluous logging * add fresh mode as a watchbot option * if else * freshMode * console log * typeof * true * concise * add fresh * fix tests * fix binary test * update snapshots * Allow users to write to any volume (#200) * Restrict writes to volumes and clean them after every job * Try out the `ReadOnlyRootFilesystem` option * Capitalization * Add watchbot-log * use strict * No need to chmod now --- .eslintrc | 59 +- .travis.yml | 9 +- Dockerfile | 26 - bin/bootstrap.sh | 23 - bin/cli.js | 44 - bin/watchbot-log.js | 15 +- bin/watchbot-progress.sh | 8 - bin/watchbot.js | 63 +- .../{ci.template.js => travis.template.js} | 12 +- docs/alarms.md | 15 - docs/api/assets/anchor.js | 197 - docs/api/assets/bass-addons.css | 12 - docs/api/assets/bass.css | 543 - .../assets/fonts/EOT/SourceCodePro-Bold.eot | Bin 83598 -> 0 bytes .../fonts/EOT/SourceCodePro-Regular.eot | Bin 83790 -> 0 bytes docs/api/assets/fonts/LICENSE.txt | 93 - .../assets/fonts/OTF/SourceCodePro-Bold.otf | Bin 143932 -> 0 bytes .../fonts/OTF/SourceCodePro-Regular.otf | Bin 140088 -> 0 bytes .../assets/fonts/TTF/SourceCodePro-Bold.ttf | Bin 197004 -> 0 bytes .../fonts/TTF/SourceCodePro-Regular.ttf | Bin 197644 -> 0 bytes .../WOFF/OTF/SourceCodePro-Bold.otf.woff | Bin 90556 -> 0 bytes .../WOFF/OTF/SourceCodePro-Regular.otf.woff | Bin 89024 -> 0 bytes .../WOFF/TTF/SourceCodePro-Bold.ttf.woff | Bin 89188 -> 0 bytes .../WOFF/TTF/SourceCodePro-Regular.ttf.woff | Bin 89604 -> 0 bytes .../WOFF2/OTF/SourceCodePro-Bold.otf.woff2 | Bin 77136 -> 0 bytes .../WOFF2/OTF/SourceCodePro-Regular.otf.woff2 | Bin 76256 -> 0 bytes .../WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 | Bin 65028 -> 0 bytes .../WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 | Bin 64948 -> 0 bytes docs/api/assets/fonts/source-code-pro.css | 23 - docs/api/assets/github.css | 123 - docs/api/assets/site.js | 108 - docs/api/assets/style.css | 136 - docs/api/config.json | 11 - docs/api/index.html | 2524 ----- docs/building-a-template.md | 128 - docs/command-line-utilities.md | 57 - docs/logging-and-metrics.md | 53 - docs/reduce-mode.md | 63 - docs/worker-retry-cycle.md | 9 +- docs/worker-runtime-details.md | 40 - index.js | 35 +- lib/dead-letter.js | 350 - lib/logger.js | 70 + lib/logs.js | 89 - lib/main.js | 238 - lib/message.js | 88 + lib/messages.js | 220 +- lib/notifications.js | 37 - lib/tasks.js | 321 - lib/template.js | 1155 +-- lib/watcher.js | 46 + lib/worker-capacity.js | 87 - lib/worker.js | 88 + mappings/ecr-region.json | 26 - package-lock.json | 9223 ++++++++++------- package.json | 79 +- readme.md | 52 +- test/Dockerfile | 8 + test/__snapshots__/template.jest.js.snap | 1301 +++ test/bin.watchbot.test.js | 94 + test/dead-letter.test.js | 486 - test/fixtures/capacity.js | 138 - test/logger.test.js | 221 + test/logs.test.js | 142 - test/main.test.js | 402 - test/message.test.js | 204 + test/messages.test.js | 814 +- test/notifications.test.js | 34 - test/stubber.js | 20 + test/tasks.test.js | 525 - test/template.jest.js | 57 + test/template.test.js | 551 - test/template.validation.js | 75 + test/util.js | 225 - test/watcher.test.js | 142 + test/worker-capacity.test.js | 260 - test/worker.test.js | 360 + 77 files changed, 9159 insertions(+), 13498 deletions(-) delete mode 100644 Dockerfile delete mode 100755 bin/bootstrap.sh delete mode 100755 bin/cli.js mode change 100755 => 100644 bin/watchbot-log.js delete mode 100755 bin/watchbot-progress.sh rename cloudformation/{ci.template.js => travis.template.js} (62%) delete mode 100644 docs/api/assets/anchor.js delete mode 100644 docs/api/assets/bass-addons.css delete mode 100644 docs/api/assets/bass.css delete mode 100755 docs/api/assets/fonts/EOT/SourceCodePro-Bold.eot delete mode 100755 docs/api/assets/fonts/EOT/SourceCodePro-Regular.eot delete mode 100755 docs/api/assets/fonts/LICENSE.txt delete mode 100755 docs/api/assets/fonts/OTF/SourceCodePro-Bold.otf delete mode 100755 docs/api/assets/fonts/OTF/SourceCodePro-Regular.otf delete mode 100755 docs/api/assets/fonts/TTF/SourceCodePro-Bold.ttf delete mode 100755 docs/api/assets/fonts/TTF/SourceCodePro-Regular.ttf delete mode 100755 docs/api/assets/fonts/WOFF/OTF/SourceCodePro-Bold.otf.woff delete mode 100755 docs/api/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff delete mode 100755 docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff delete mode 100755 docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff delete mode 100755 docs/api/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 delete mode 100755 docs/api/assets/fonts/WOFF2/OTF/SourceCodePro-Regular.otf.woff2 delete mode 100755 docs/api/assets/fonts/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 delete mode 100755 docs/api/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 delete mode 100755 docs/api/assets/fonts/source-code-pro.css delete mode 100644 docs/api/assets/github.css delete mode 100644 docs/api/assets/site.js delete mode 100644 docs/api/assets/style.css delete mode 100644 docs/api/config.json delete mode 100644 docs/api/index.html delete mode 100644 docs/building-a-template.md delete mode 100644 docs/command-line-utilities.md delete mode 100644 docs/logging-and-metrics.md delete mode 100644 docs/reduce-mode.md delete mode 100644 docs/worker-runtime-details.md delete mode 100644 lib/dead-letter.js create mode 100644 lib/logger.js delete mode 100644 lib/logs.js delete mode 100644 lib/main.js create mode 100644 lib/message.js delete mode 100644 lib/notifications.js delete mode 100644 lib/tasks.js create mode 100644 lib/watcher.js delete mode 100644 lib/worker-capacity.js create mode 100644 lib/worker.js delete mode 100644 mappings/ecr-region.json create mode 100644 test/Dockerfile create mode 100644 test/__snapshots__/template.jest.js.snap create mode 100644 test/bin.watchbot.test.js delete mode 100644 test/dead-letter.test.js delete mode 100644 test/fixtures/capacity.js create mode 100644 test/logger.test.js delete mode 100644 test/logs.test.js delete mode 100644 test/main.test.js create mode 100644 test/message.test.js delete mode 100644 test/notifications.test.js create mode 100644 test/stubber.js delete mode 100644 test/tasks.test.js create mode 100644 test/template.jest.js delete mode 100644 test/template.test.js create mode 100644 test/template.validation.js delete mode 100644 test/util.js create mode 100644 test/watcher.test.js delete mode 100644 test/worker-capacity.test.js create mode 100644 test/worker.test.js diff --git a/.eslintrc b/.eslintrc index 8adf4c69..ab069e95 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,24 +1,45 @@ { - "rules": { - "indent": [2, 2], - "quotes": [2, "single"], - "quote-props": [2, "as-needed"], - "no-console": [1], - "semi": [2, "always"], - "space-before-function-paren": [2, "never"], - "object-curly-spacing": [2, "always"], - "array-bracket-spacing": [2, "never"], - "comma-spacing": [2, { "before": false, "after": true }], - "key-spacing": [2, { "beforeColon": false, "afterColon": true }] - }, + "extends": "eslint:recommended", "env": { - "node": true, - "es6": true + "node": true, + "es6": true, + "jest": true }, - "globals": { - "process": true, - "module": true, - "require": true + "parserOptions": { + "ecmaVersion": "2017" }, - "extends": "eslint:recommended" + "plugins": [ + "node" + ], + "rules": { + "arrow-parens": ["error", "always"], + "no-var": "error", + "prefer-const": "error", + "array-bracket-spacing": ["error", "never"], + "comma-dangle": ["error", "never"], + "computed-property-spacing": ["error", "never"], + "eol-last": "error", + "eqeqeq": ["error", "smart"], + "indent": ["error", 2, { "SwitchCase": 1 }], + "no-confusing-arrow": ["error", {"allowParens": false}], + "no-extend-native": "error", + "no-mixed-spaces-and-tabs": "error", + "no-spaced-func": "error", + "no-trailing-spaces": "error", + "no-unused-vars": "error", + "no-use-before-define": ["error", "nofunc"], + "object-curly-spacing": ["error", "always"], + "prefer-arrow-callback": "error", + "quotes": ["error", "single", "avoid-escape"], + "semi": ["error", "always"], + "space-infix-ops": "error", + "spaced-comment": ["error", "always"], + "keyword-spacing": ["error", { before: true, after: true }], + "template-curly-spacing": ["error", "never"], + "semi-spacing": "error", + "strict": "error", + "no-console": "off", + "node/no-unsupported-features": ["error", {"version": 8}], + "node/no-missing-require": "error" + } } diff --git a/.travis.yml b/.travis.yml index ade28134..4d451c1a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,5 @@ -cache: apt language: node_js node_js: -- '4' -env: - global: - - secure: Pn+WVEuDcuNlUia2ehSAgH5wdWlBdSDVXYSjzAoBJO9oPotrfLSN26Lu+gOTXyJ92h99vwN00osQyw7cqGYrX2dO2nu0JfVhIZ99iXJmjRnWQvkf0DcE6RsxcL1bIRYtlJlQMr2sS2zJ7owUAzX7EFpOvurT0EeuB3IQg5bwhoy3nTJuwxg7XWJ9wWHyFSXAieTfyODw3LGemmtZjTe0K5Vu07VQkph0MMohWF64dXptEE99Df6LumMQ4u6RTczayih7EXWwXRvDzw4r1AUQKBkAa767vpg3UelWb6mHKwhl6GpjXiaW8qlfIszyFyHU8Dc454wagd3VhPG4UxdZUdnV8hjd79Ak1bKubjlo9ZgxZAYqT11+g6UNZ2bmO8hLsnvvXbxWmZ0I81lf5iCkzPhqOLoIVyfQs8aINrmfqoqCMgwKlzoT+cda6v/5kxzG9UO9Hmhm2XhHMAleo36rRw+a0x9yNtCU8qVrmEVIyxVMvzsdDm8/pAUCyzUd042rCH1YAzRvk2Lb39nbNW4gGaJKghvjOF9iAB4QisyqfvnmTN7JvIL1M5EdAJaa86XROFTfUlPoTaLyGeztGWNQpzry4IqNBQFBrzvPrw0gnP9eUWRPxtttZFK/2GOS7sZT7MaFOpZ4w6YcaR9VrviqryepYM8eluA7EDqkrSUpCrs= - - secure: Pk6fpHDyWPwh8Zek++MA5Q4aVZzQGOjh7Tz5LD4UN+g31CY7EGQ1nivIhVQLQKlS/4H18VXYew3wyxKDmec7Iwz2GqCj2ZDTVCXQG2ITGA6BB3NJ5Ei0C0Ah12Vv5sHlPTCo8UhkpTBNt6ytEV1CWhotY+WajIIEm4HN3PgmpX+tam4cPEUezK+ScJH8xhQCuQqow42T47hSXvkPUu17tMaZfhGLCGX3fKzcEoFYiqdHIbKxSaQ//uRVbXWcSHgsNsA1nFHUgemJC1lH2o02uAdtZuMQ+JyIsQY1nMamsgCv3JpGlgSaIrt6wiJX1ipJOmtRH8L5fRmWgFKsCXDSo6oMfE8arMF1vED6AhTWlv3Kb5v1boehNwgheSxLLvHESP7T0wsc77nNybpnUSV8bOJ3bfPknES3YoGcyffPyu4Xi/MG7ibGvd9B/OnmysZyHinBkb9JI7X1paAVW2RQgEXm0sx0rkqO74N7vEFAfxlU+GgN12AAq79pKUCRMIOXKjB9lZFQnYXmTa1H/CyNE//gdHBLdZGSjHMpJ8N0+tww0SIQo1FHhJmJH0/p5heZJRzTARfVtRGsbEH7+W/5IUTtW10YtGWYtKAS+8S3cD6WIfrm20jZaFbk9clmW/n4WRB0y2s5LxwPF4sNStZRJDhn0ozrcM1IRVJz4r/rdik= +- '8' +services: +- docker diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3fa14172..00000000 --- a/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM ubuntu:16.04 - -# Setup -RUN apt-get update -qq && apt-get install -y curl - -# Install node.js -RUN curl -s https://s3.amazonaws.com/mapbox/apps/install-node/v2.0.0/run | NV=4.4.2 NP=linux-x64 OD=/usr/local sh - -# Setup application directory -RUN mkdir -p /usr/local/src/watchbot -WORKDIR /usr/local/src/watchbot - -# npm installation -COPY ./package.json ./ -RUN npm install --production - -# Copy files into the container -COPY ./index.js ./ -COPY ./lib ./lib -COPY ./bin ./bin - -# Logging onto the host EC2 -VOLUME /mnt/log - -# Run the watcher -CMD ["/bin/sh", "-c", "npm start"] diff --git a/bin/bootstrap.sh b/bin/bootstrap.sh deleted file mode 100755 index c732261d..00000000 --- a/bin/bootstrap.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -set -eux - -# Log docker client into ECR -eval "$(aws ecr get-login --region us-east-1)" - -# Make sure the ECR repository exists -aws ecr describe-repositories --region us-east-1 --repository-names ecs-watchbot > /dev/null 2>&1 || \ - aws ecr create-repository --region us-east-1 --repository-name ecs-watchbot > /dev/null - -# Fetch the ECR repository URI -desc=$(aws ecr describe-repositories --region us-east-1 --repository-names ecs-watchbot) -uri=$(node -e "console.log(${desc}.repositories[0].repositoryUri);") - -# Build the docker image -docker build -t ecs-watchbot ./ - -# Tag the image into the ECR repository -docker tag ecs-watchbot "${uri}:$(git rev-parse head)" - -# Push the image into the ECR repository -docker push "${uri}:$(git rev-parse head)" diff --git a/bin/cli.js b/bin/cli.js deleted file mode 100755 index a23e94e0..00000000 --- a/bin/cli.js +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env node - -/* eslint-disable no-console */ - -var meow = require('meow'); - -var cli = meow({ - help: ` - USAGE: watchbot [OPTIONS] - - Commands: - worker-capacity assess available resources on the cluster - dead-letter triage messages in dead letter queue - - Options: - -h, --help show this help message - -s, --stack-name the full name of a watchbot stack - -r, --region the region of the stack (default us-east-1) - `, - description: 'Helper utilities for interacting with watchbot stacks' -}, { - alias: { s: 'stack-name', r: 'region' }, - defaults: { region: 'us-east-1' } -}); - -var command = cli.input[0]; -if (!command) { - console.error('ERROR: You must specify a command'); - cli.showHelp(1); -} - -var fn; -try { fn = require(`../lib/${command}`); } -catch(err) { - console.error('"' + command + '" is not a valid command'); - cli.showHelp(1); -} - -fn(cli.flags, function(err) { - if (err) { - console.error(err.stack); - cli.showHelp(1); - } -}); diff --git a/bin/watchbot-log.js b/bin/watchbot-log.js old mode 100755 new mode 100644 index 42c5b91d..f4697ba7 --- a/bin/watchbot-log.js +++ b/bin/watchbot-log.js @@ -1,4 +1,5 @@ #!/usr/bin/env node +'use strict'; /** * watchbot-log "something that you want logged" @@ -6,15 +7,13 @@ * echo "somehing that you want logged" | watchbot-log */ -var watchbot = require('..'); -var args = process.argv.slice(2); +const Logger = require('..').Logger; +const args = process.argv.slice(2); + +const logger = new Logger('worker'); if (args[0]) { - return watchbot.log(args[0]); + return logger.log(args[0]); } -process.stdin.on('data', function(d) { - d.toString().trim().split('\n').forEach(function(line) { - watchbot.log(line); - }); -}); +process.stdin.pipe(logger.stream()); diff --git a/bin/watchbot-progress.sh b/bin/watchbot-progress.sh deleted file mode 100755 index cc2e6029..00000000 --- a/bin/watchbot-progress.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -e - -progress=$(node -e "console.log(require.resolve('@mapbox/watchbot-progress'));") -base=$(dirname ${progress}) - -${base}/bin/watchbot-progress.js "$@" diff --git a/bin/watchbot.js b/bin/watchbot.js index 697673a1..f3dd3240 100755 --- a/bin/watchbot.js +++ b/bin/watchbot.js @@ -1,34 +1,33 @@ #!/usr/bin/env node -var fastlog = require('fastlog')('watchbot'); -var _ = require('underscore'); -var sendNotification = require('../lib/notifications')(process.env.NotificationTopic).send; -var watchbot = require('..'); - -var required = [ - 'Cluster', - 'TaskDefinition', - 'Concurrency', - 'QueueUrl', - 'TaskEventQueueUrl', - 'NotificationTopic', - 'StackName', - 'LogGroupArn', - 'AlarmOnEachFailure' -]; - -var missing = _.difference(required, Object.keys(process.env)); -if (missing.length) { - var err = new Error('Missing from environment: ' + missing.join(', ')); - fastlog.error(err); - sendNotification('[watchbot] config error', err.message); - process.exit(1); -} - -/** - * The main Watchbot loop. This function runs continuously on one or more containers, - * each of which is responsible for polling SQS and spawning tasks to process - * messages, while maintaining a predefined task concurrency and reporting any failed - * processing tasks. - */ -watchbot.main(process.env); +'use strict'; + +const Watcher = require('../lib/watcher'); +const Logger = require('../lib/logger'); + +const main = async () => { + if (process.argv[2] !== 'listen') + throw new Error(`Invalid arguments: ${process.argv.slice(2).join(' ')}`); + + const logger = Logger.create('watcher'); + const command = process.argv.slice(3).join(' '); + const volumes = process.env.Volumes.split(','); + + const options = { + queueUrl: process.env.QueueUrl, + fresh: process.env.fresh === 'true' ? true : false, + workerOptions: { command, volumes } + }; + + const watcher = Watcher.create(options); + + try { + await watcher.listen(); + } catch (err) { + logger.log(`[error] ${err.stack}`); + } +}; + +module.exports = main; + +if (require.main === module) main(); diff --git a/cloudformation/ci.template.js b/cloudformation/travis.template.js similarity index 62% rename from cloudformation/ci.template.js rename to cloudformation/travis.template.js index 80b23843..d9f18223 100644 --- a/cloudformation/ci.template.js +++ b/cloudformation/travis.template.js @@ -1,7 +1,8 @@ -var cloudfriend = require('@mapbox/cloudfriend'); +const cf = require('@mapbox/cloudfriend'); module.exports = { AWSTemplateFormatVersion: '2010-09-09', + Description: 'ecs-clusters ci resources for validating the template', Resources: { User: { Type: 'AWS::IAM::User', @@ -12,7 +13,7 @@ module.exports = { PolicyDocument: { Statement: [ { - Action: 'cloudformation:ValidateTemplate', + Action: ['cloudformation:ValidateTemplate'], Effect: 'Allow', Resource: '*' } @@ -25,12 +26,13 @@ module.exports = { AccessKey: { Type: 'AWS::IAM::AccessKey', Properties: { - UserName: cloudfriend.ref('User') + UserName: cf.ref('User') } } }, Outputs: { - AccessKeyId: { Value: cloudfriend.ref('AccessKey') }, - SecretAccessKey: { Value: cloudfriend.getAtt('AccessKey', 'SecretAccessKey') } + AccessKeyId: { Value: cf.ref('AccessKey') }, + SecretAccessKey: { Value: cf.getAtt('AccessKey', 'SecretAccessKey') } } }; + diff --git a/docs/alarms.md b/docs/alarms.md index a61d0060..1c485e74 100644 --- a/docs/alarms.md +++ b/docs/alarms.md @@ -4,21 +4,6 @@ This document describes CloudWatch alarms that Watchbot configures. If one of th **In all cases**, SQS messages that failed and led to these alarms are put back into SQS to be retried. [See the worker retry documentation](./worker-retry-cycle.md) for more info. -## FailedWorkerPlacement - -### Why? - -There were more than 5 attempts to place a worker container in 60 seconds that could not be placed. The failed placement could be due to: - -- insufficient CPU or memory was available on the cluster -- failure to start a docker container on a host EC2 because of disk I/O exhaustion -- any other scenario that may have caused the worker not to be placed - -### What to do - -Most of the time, this is due to a lack of available cluster resources. Use [the provided CLI command](./command-line-utilities.md#assessing-worker-capacity-in-your-service's cluster) to get a sense of how much space is free in your cluster. If necessary, increase available resources on your cluster by removing other tasks or launching new EC2s. - -If resource availability on the cluster does not appear to be the problem, then you'll need to dig into logs in order to understand what the problem is. Check watcher logs for any indication of the reason for job placement failure by searching for `failedPlacement`. ## WorkerErrors diff --git a/docs/api/assets/anchor.js b/docs/api/assets/anchor.js deleted file mode 100644 index 47d871ad..00000000 --- a/docs/api/assets/anchor.js +++ /dev/null @@ -1,197 +0,0 @@ -/*! - * AnchorJS - v1.2.1 - 2015-07-02 - * https://github.com/bryanbraun/anchorjs - * Copyright (c) 2015 Bryan Braun; Licensed MIT - */ - -function AnchorJS(options) { - 'use strict'; - - this.options = options || {}; - - this._applyRemainingDefaultOptions = function(opts) { - this.options.icon = this.options.hasOwnProperty('icon') ? opts.icon : '\ue9cb'; // Accepts characters (and also URLs?), like '#', '¶', '❡', or '§'. - this.options.visible = this.options.hasOwnProperty('visible') ? opts.visible : 'hover'; // Also accepts 'always' - this.options.placement = this.options.hasOwnProperty('placement') ? opts.placement : 'right'; // Also accepts 'left' - this.options.class = this.options.hasOwnProperty('class') ? opts.class : ''; // Accepts any class name. - }; - - this._applyRemainingDefaultOptions(options); - - this.add = function(selector) { - var elements, - elsWithIds, - idList, - elementID, - i, - roughText, - tidyText, - index, - count, - newTidyText, - readableID, - anchor; - - this._applyRemainingDefaultOptions(this.options); - - // Provide a sensible default selector, if none is given. - if (!selector) { - selector = 'h1, h2, h3, h4, h5, h6'; - } else if (typeof selector !== 'string') { - throw new Error('The selector provided to AnchorJS was invalid.'); - } - - elements = document.querySelectorAll(selector); - if (elements.length === 0) { - return false; - } - - this._addBaselineStyles(); - - // We produce a list of existing IDs so we don't generate a duplicate. - elsWithIds = document.querySelectorAll('[id]'); - idList = [].map.call(elsWithIds, function assign(el) { - return el.id; - }); - - for (i = 0; i < elements.length; i++) { - - if (elements[i].hasAttribute('id')) { - elementID = elements[i].getAttribute('id'); - } else { - roughText = elements[i].textContent; - - // Refine it so it makes a good ID. Strip out non-safe characters, replace - // spaces with hyphens, truncate to 32 characters, and make toLowerCase. - // - // Example string: // '⚡⚡⚡ Unicode icons are cool--but they definitely don't belong in a URL fragment.' - tidyText = roughText.replace(/[^\w\s-]/gi, '') // ' Unicode icons are cool--but they definitely dont belong in a URL fragment' - .replace(/\s+/g, '-') // '-Unicode-icons-are-cool--but-they-definitely-dont-belong-in-a-URL-fragment' - .replace(/-{2,}/g, '-') // '-Unicode-icons-are-cool-but-they-definitely-dont-belong-in-a-URL-fragment' - .substring(0, 64) // '-Unicode-icons-are-cool-but-they-definitely-dont-belong-in-a-URL' - .replace(/^-+|-+$/gm, '') // 'Unicode-icons-are-cool-but-they-definitely-dont-belong-in-a-URL' - .toLowerCase(); // 'unicode-icons-are-cool-but-they-definitely-dont-belong-in-a-url' - - // Compare our generated ID to existing IDs (and increment it if needed) - // before we add it to the page. - newTidyText = tidyText; - count = 0; - do { - if (index !== undefined) { - newTidyText = tidyText + '-' + count; - } - // .indexOf is supported in IE9+. - index = idList.indexOf(newTidyText); - count += 1; - } while (index !== -1); - index = undefined; - idList.push(newTidyText); - - // Assign it to our element. - // Currently the setAttribute element is only supported in IE9 and above. - elements[i].setAttribute('id', newTidyText); - - elementID = newTidyText; - } - - readableID = elementID.replace(/-/g, ' '); - - // The following code builds the following DOM structure in a more effiecient (albeit opaque) way. - // ''; - anchor = document.createElement('a'); - anchor.className = 'anchorjs-link ' + this.options.class; - anchor.href = '#' + elementID; - anchor.setAttribute('aria-label', 'Anchor link for: ' + readableID); - anchor.setAttribute('data-anchorjs-icon', this.options.icon); - - if (this.options.visible === 'always') { - anchor.style.opacity = '1'; - } - - if (this.options.icon === '\ue9cb') { - anchor.style.fontFamily = 'anchorjs-icons'; - anchor.style.fontStyle = 'normal'; - anchor.style.fontVariant = 'normal'; - anchor.style.fontWeight = 'normal'; - anchor.style.lineHeight = 1; - } - - if (this.options.placement === 'left') { - anchor.style.position = 'absolute'; - anchor.style.marginLeft = '-1em'; - anchor.style.paddingRight = '0.5em'; - elements[i].insertBefore(anchor, elements[i].firstChild); - } else { // if the option provided is `right` (or anything else). - anchor.style.paddingLeft = '0.375em'; - elements[i].appendChild(anchor); - } - } - - return this; - }; - - this.remove = function(selector) { - var domAnchor, - elements = document.querySelectorAll(selector); - for (var i = 0; i < elements.length; i++) { - domAnchor = elements[i].querySelector('.anchorjs-link'); - if (domAnchor) { - elements[i].removeChild(domAnchor); - } - } - return this; - }; - - this._addBaselineStyles = function() { - // We don't want to add global baseline styles if they've been added before. - if (document.head.querySelector('style.anchorjs') !== null) { - return; - } - - var style = document.createElement('style'), - linkRule = - ' .anchorjs-link {' + - ' opacity: 0;' + - ' text-decoration: none;' + - ' -webkit-font-smoothing: antialiased;' + - ' -moz-osx-font-smoothing: grayscale;' + - ' }', - hoverRule = - ' *:hover > .anchorjs-link,' + - ' .anchorjs-link:focus {' + - ' opacity: 1;' + - ' }', - anchorjsLinkFontFace = - ' @font-face {' + - ' font-family: "anchorjs-icons";' + - ' font-style: normal;' + - ' font-weight: normal;' + // Icon from icomoon; 10px wide & 10px tall; 2 empty below & 4 above - ' src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype");' + - ' }', - pseudoElContent = - ' [data-anchorjs-icon]::after {' + - ' content: attr(data-anchorjs-icon);' + - ' }', - firstStyleEl; - - style.className = 'anchorjs'; - style.appendChild(document.createTextNode('')); // Necessary for Webkit. - - // We place it in the head with the other style tags, if possible, so as to - // not look out of place. We insert before the others so these styles can be - // overridden if necessary. - firstStyleEl = document.head.querySelector('[rel="stylesheet"], style'); - if (firstStyleEl === undefined) { - document.head.appendChild(style); - } else { - document.head.insertBefore(style, firstStyleEl); - } - - style.sheet.insertRule(linkRule, style.sheet.cssRules.length); - style.sheet.insertRule(hoverRule, style.sheet.cssRules.length); - style.sheet.insertRule(pseudoElContent, style.sheet.cssRules.length); - style.sheet.insertRule(anchorjsLinkFontFace, style.sheet.cssRules.length); - }; -} - -var anchors = new AnchorJS(); diff --git a/docs/api/assets/bass-addons.css b/docs/api/assets/bass-addons.css deleted file mode 100644 index c27e96d8..00000000 --- a/docs/api/assets/bass-addons.css +++ /dev/null @@ -1,12 +0,0 @@ -.input { - font-family: inherit; - display: block; - width: 100%; - height: 2rem; - padding: .5rem; - margin-bottom: 1rem; - border: 1px solid #ccc; - font-size: .875rem; - border-radius: 3px; - box-sizing: border-box; -} diff --git a/docs/api/assets/bass.css b/docs/api/assets/bass.css deleted file mode 100644 index 15e0dc9a..00000000 --- a/docs/api/assets/bass.css +++ /dev/null @@ -1,543 +0,0 @@ -/*! Basscss | http://basscss.com | MIT License */ - -.h1{ font-size: 2rem } -.h2{ font-size: 1.5rem } -.h3{ font-size: 1.25rem } -.h4{ font-size: 1rem } -.h5{ font-size: .875rem } -.h6{ font-size: .75rem } - -.font-family-inherit{ font-family:inherit } -.font-size-inherit{ font-size:inherit } -.text-decoration-none{ text-decoration:none } - -.bold{ font-weight: bold; font-weight: bold } -.regular{ font-weight:normal } -.italic{ font-style:italic } -.caps{ text-transform:uppercase; letter-spacing: .2em; } - -.left-align{ text-align:left } -.center{ text-align:center } -.right-align{ text-align:right } -.justify{ text-align:justify } - -.nowrap{ white-space:nowrap } -.break-word{ word-wrap:break-word } - -.line-height-1{ line-height: 1 } -.line-height-2{ line-height: 1.125 } -.line-height-3{ line-height: 1.25 } -.line-height-4{ line-height: 1.5 } - -.list-style-none{ list-style:none } -.underline{ text-decoration:underline } - -.truncate{ - max-width:100%; - overflow:hidden; - text-overflow:ellipsis; - white-space:nowrap; -} - -.list-reset{ - list-style:none; - padding-left:0; -} - -.inline{ display:inline } -.block{ display:block } -.inline-block{ display:inline-block } -.table{ display:table } -.table-cell{ display:table-cell } - -.overflow-hidden{ overflow:hidden } -.overflow-scroll{ overflow:scroll } -.overflow-auto{ overflow:auto } - -.clearfix:before, -.clearfix:after{ - content:" "; - display:table -} -.clearfix:after{ clear:both } - -.left{ float:left } -.right{ float:right } - -.fit{ max-width:100% } - -.max-width-1{ max-width: 24rem } -.max-width-2{ max-width: 32rem } -.max-width-3{ max-width: 48rem } -.max-width-4{ max-width: 64rem } - -.border-box{ box-sizing:border-box } - -.align-baseline{ vertical-align:baseline } -.align-top{ vertical-align:top } -.align-middle{ vertical-align:middle } -.align-bottom{ vertical-align:bottom } - -.m0{ margin:0 } -.mt0{ margin-top:0 } -.mr0{ margin-right:0 } -.mb0{ margin-bottom:0 } -.ml0{ margin-left:0 } -.mx0{ margin-left:0; margin-right:0 } -.my0{ margin-top:0; margin-bottom:0 } - -.m1{ margin: .5rem } -.mt1{ margin-top: .5rem } -.mr1{ margin-right: .5rem } -.mb1{ margin-bottom: .5rem } -.ml1{ margin-left: .5rem } -.mx1{ margin-left: .5rem; margin-right: .5rem } -.my1{ margin-top: .5rem; margin-bottom: .5rem } - -.m2{ margin: 1rem } -.mt2{ margin-top: 1rem } -.mr2{ margin-right: 1rem } -.mb2{ margin-bottom: 1rem } -.ml2{ margin-left: 1rem } -.mx2{ margin-left: 1rem; margin-right: 1rem } -.my2{ margin-top: 1rem; margin-bottom: 1rem } - -.m3{ margin: 2rem } -.mt3{ margin-top: 2rem } -.mr3{ margin-right: 2rem } -.mb3{ margin-bottom: 2rem } -.ml3{ margin-left: 2rem } -.mx3{ margin-left: 2rem; margin-right: 2rem } -.my3{ margin-top: 2rem; margin-bottom: 2rem } - -.m4{ margin: 4rem } -.mt4{ margin-top: 4rem } -.mr4{ margin-right: 4rem } -.mb4{ margin-bottom: 4rem } -.ml4{ margin-left: 4rem } -.mx4{ margin-left: 4rem; margin-right: 4rem } -.my4{ margin-top: 4rem; margin-bottom: 4rem } - -.mxn1{ margin-left: -.5rem; margin-right: -.5rem; } -.mxn2{ margin-left: -1rem; margin-right: -1rem; } -.mxn3{ margin-left: -2rem; margin-right: -2rem; } -.mxn4{ margin-left: -4rem; margin-right: -4rem; } - -.ml-auto{ margin-left:auto } -.mr-auto{ margin-right:auto } -.mx-auto{ margin-left:auto; margin-right:auto; } - -.p0{ padding:0 } -.pt0{ padding-top:0 } -.pr0{ padding-right:0 } -.pb0{ padding-bottom:0 } -.pl0{ padding-left:0 } -.px0{ padding-left:0; padding-right:0 } -.py0{ padding-top:0; padding-bottom:0 } - -.p1{ padding: .5rem } -.pt1{ padding-top: .5rem } -.pr1{ padding-right: .5rem } -.pb1{ padding-bottom: .5rem } -.pl1{ padding-left: .5rem } -.py1{ padding-top: .5rem; padding-bottom: .5rem } -.px1{ padding-left: .5rem; padding-right: .5rem } - -.p2{ padding: 1rem } -.pt2{ padding-top: 1rem } -.pr2{ padding-right: 1rem } -.pb2{ padding-bottom: 1rem } -.pl2{ padding-left: 1rem } -.py2{ padding-top: 1rem; padding-bottom: 1rem } -.px2{ padding-left: 1rem; padding-right: 1rem } - -.p3{ padding: 2rem } -.pt3{ padding-top: 2rem } -.pr3{ padding-right: 2rem } -.pb3{ padding-bottom: 2rem } -.pl3{ padding-left: 2rem } -.py3{ padding-top: 2rem; padding-bottom: 2rem } -.px3{ padding-left: 2rem; padding-right: 2rem } - -.p4{ padding: 4rem } -.pt4{ padding-top: 4rem } -.pr4{ padding-right: 4rem } -.pb4{ padding-bottom: 4rem } -.pl4{ padding-left: 4rem } -.py4{ padding-top: 4rem; padding-bottom: 4rem } -.px4{ padding-left: 4rem; padding-right: 4rem } - -.col{ - float:left; - box-sizing:border-box; -} - -.col-right{ - float:right; - box-sizing:border-box; -} - -.col-1{ - width:8.33333%; -} - -.col-2{ - width:16.66667%; -} - -.col-3{ - width:25%; -} - -.col-4{ - width:33.33333%; -} - -.col-5{ - width:41.66667%; -} - -.col-6{ - width:50%; -} - -.col-7{ - width:58.33333%; -} - -.col-8{ - width:66.66667%; -} - -.col-9{ - width:75%; -} - -.col-10{ - width:83.33333%; -} - -.col-11{ - width:91.66667%; -} - -.col-12{ - width:100%; -} -@media (min-width: 40em){ - - .sm-col{ - float:left; - box-sizing:border-box; - } - - .sm-col-right{ - float:right; - box-sizing:border-box; - } - - .sm-col-1{ - width:8.33333%; - } - - .sm-col-2{ - width:16.66667%; - } - - .sm-col-3{ - width:25%; - } - - .sm-col-4{ - width:33.33333%; - } - - .sm-col-5{ - width:41.66667%; - } - - .sm-col-6{ - width:50%; - } - - .sm-col-7{ - width:58.33333%; - } - - .sm-col-8{ - width:66.66667%; - } - - .sm-col-9{ - width:75%; - } - - .sm-col-10{ - width:83.33333%; - } - - .sm-col-11{ - width:91.66667%; - } - - .sm-col-12{ - width:100%; - } - -} -@media (min-width: 52em){ - - .md-col{ - float:left; - box-sizing:border-box; - } - - .md-col-right{ - float:right; - box-sizing:border-box; - } - - .md-col-1{ - width:8.33333%; - } - - .md-col-2{ - width:16.66667%; - } - - .md-col-3{ - width:25%; - } - - .md-col-4{ - width:33.33333%; - } - - .md-col-5{ - width:41.66667%; - } - - .md-col-6{ - width:50%; - } - - .md-col-7{ - width:58.33333%; - } - - .md-col-8{ - width:66.66667%; - } - - .md-col-9{ - width:75%; - } - - .md-col-10{ - width:83.33333%; - } - - .md-col-11{ - width:91.66667%; - } - - .md-col-12{ - width:100%; - } - -} -@media (min-width: 64em){ - - .lg-col{ - float:left; - box-sizing:border-box; - } - - .lg-col-right{ - float:right; - box-sizing:border-box; - } - - .lg-col-1{ - width:8.33333%; - } - - .lg-col-2{ - width:16.66667%; - } - - .lg-col-3{ - width:25%; - } - - .lg-col-4{ - width:33.33333%; - } - - .lg-col-5{ - width:41.66667%; - } - - .lg-col-6{ - width:50%; - } - - .lg-col-7{ - width:58.33333%; - } - - .lg-col-8{ - width:66.66667%; - } - - .lg-col-9{ - width:75%; - } - - .lg-col-10{ - width:83.33333%; - } - - .lg-col-11{ - width:91.66667%; - } - - .lg-col-12{ - width:100%; - } - -} -.flex{ display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex } - -@media (min-width: 40em){ - .sm-flex{ display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex } -} - -@media (min-width: 52em){ - .md-flex{ display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex } -} - -@media (min-width: 64em){ - .lg-flex{ display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex } -} - -.flex-column{ -webkit-box-orient:vertical; -webkit-box-direction:normal; -webkit-flex-direction:column; -ms-flex-direction:column; flex-direction:column } -.flex-wrap{ -webkit-flex-wrap:wrap; -ms-flex-wrap:wrap; flex-wrap:wrap } - -.items-start{ -webkit-box-align:start; -webkit-align-items:flex-start; -ms-flex-align:start; -ms-grid-row-align:flex-start; align-items:flex-start } -.items-end{ -webkit-box-align:end; -webkit-align-items:flex-end; -ms-flex-align:end; -ms-grid-row-align:flex-end; align-items:flex-end } -.items-center{ -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; -ms-grid-row-align:center; align-items:center } -.items-baseline{ -webkit-box-align:baseline; -webkit-align-items:baseline; -ms-flex-align:baseline; -ms-grid-row-align:baseline; align-items:baseline } -.items-stretch{ -webkit-box-align:stretch; -webkit-align-items:stretch; -ms-flex-align:stretch; -ms-grid-row-align:stretch; align-items:stretch } - -.self-start{ -webkit-align-self:flex-start; -ms-flex-item-align:start; align-self:flex-start } -.self-end{ -webkit-align-self:flex-end; -ms-flex-item-align:end; align-self:flex-end } -.self-center{ -webkit-align-self:center; -ms-flex-item-align:center; align-self:center } -.self-baseline{ -webkit-align-self:baseline; -ms-flex-item-align:baseline; align-self:baseline } -.self-stretch{ -webkit-align-self:stretch; -ms-flex-item-align:stretch; align-self:stretch } - -.justify-start{ -webkit-box-pack:start; -webkit-justify-content:flex-start; -ms-flex-pack:start; justify-content:flex-start } -.justify-end{ -webkit-box-pack:end; -webkit-justify-content:flex-end; -ms-flex-pack:end; justify-content:flex-end } -.justify-center{ -webkit-box-pack:center; -webkit-justify-content:center; -ms-flex-pack:center; justify-content:center } -.justify-between{ -webkit-box-pack:justify; -webkit-justify-content:space-between; -ms-flex-pack:justify; justify-content:space-between } -.justify-around{ -webkit-justify-content:space-around; -ms-flex-pack:distribute; justify-content:space-around } - -.content-start{ -webkit-align-content:flex-start; -ms-flex-line-pack:start; align-content:flex-start } -.content-end{ -webkit-align-content:flex-end; -ms-flex-line-pack:end; align-content:flex-end } -.content-center{ -webkit-align-content:center; -ms-flex-line-pack:center; align-content:center } -.content-between{ -webkit-align-content:space-between; -ms-flex-line-pack:justify; align-content:space-between } -.content-around{ -webkit-align-content:space-around; -ms-flex-line-pack:distribute; align-content:space-around } -.content-stretch{ -webkit-align-content:stretch; -ms-flex-line-pack:stretch; align-content:stretch } -.flex-auto{ - -webkit-box-flex:1; - -webkit-flex:1 1 auto; - -ms-flex:1 1 auto; - flex:1 1 auto; - min-width:0; - min-height:0; -} -.flex-none{ -webkit-box-flex:0; -webkit-flex:none; -ms-flex:none; flex:none } - -.order-0{ -webkit-box-ordinal-group:1; -webkit-order:0; -ms-flex-order:0; order:0 } -.order-1{ -webkit-box-ordinal-group:2; -webkit-order:1; -ms-flex-order:1; order:1 } -.order-2{ -webkit-box-ordinal-group:3; -webkit-order:2; -ms-flex-order:2; order:2 } -.order-3{ -webkit-box-ordinal-group:4; -webkit-order:3; -ms-flex-order:3; order:3 } -.order-last{ -webkit-box-ordinal-group:100000; -webkit-order:99999; -ms-flex-order:99999; order:99999 } - -.relative{ position:relative } -.absolute{ position:absolute } -.fixed{ position:fixed } - -.top-0{ top:0 } -.right-0{ right:0 } -.bottom-0{ bottom:0 } -.left-0{ left:0 } - -.z1{ z-index: 1 } -.z2{ z-index: 2 } -.z3{ z-index: 3 } -.z4{ z-index: 4 } - -.border{ - border-style:solid; - border-width: 1px; -} - -.border-top{ - border-top-style:solid; - border-top-width: 1px; -} - -.border-right{ - border-right-style:solid; - border-right-width: 1px; -} - -.border-bottom{ - border-bottom-style:solid; - border-bottom-width: 1px; -} - -.border-left{ - border-left-style:solid; - border-left-width: 1px; -} - -.border-none{ border:0 } - -.rounded{ border-radius: 3px } -.circle{ border-radius:50% } - -.rounded-top{ border-radius: 3px 3px 0 0 } -.rounded-right{ border-radius: 0 3px 3px 0 } -.rounded-bottom{ border-radius: 0 0 3px 3px } -.rounded-left{ border-radius: 3px 0 0 3px } - -.not-rounded{ border-radius:0 } - -.hide{ - position:absolute !important; - height:1px; - width:1px; - overflow:hidden; - clip:rect(1px, 1px, 1px, 1px); -} - -@media (max-width: 40em){ - .xs-hide{ display:none !important } -} - -@media (min-width: 40em) and (max-width: 52em){ - .sm-hide{ display:none !important } -} - -@media (min-width: 52em) and (max-width: 64em){ - .md-hide{ display:none !important } -} - -@media (min-width: 64em){ - .lg-hide{ display:none !important } -} - -.display-none{ display:none !important } - diff --git a/docs/api/assets/fonts/EOT/SourceCodePro-Bold.eot b/docs/api/assets/fonts/EOT/SourceCodePro-Bold.eot deleted file mode 100755 index d24cc39f470643cb28cfd7363ee2b9dabec436b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83598 zcmafZWl$Wzvh^-3?(VX}I|O$K4#5Hhx1b3SlDynoufBT! zzUi9kp3|pK_57Xb6geOODhmX_{WA~%0Dwb7LV*Xt!@+@ofPT1t06<0KCmetpUhp5` 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

bf=Edk@=;Z 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 K98&AnI6A-}N>YXZ diff --git a/docs/api/assets/fonts/EOT/SourceCodePro-Regular.eot b/docs/api/assets/fonts/EOT/SourceCodePro-Regular.eot deleted file mode 100755 index 09e94730dbb7fdedbfccd07705ba6db7e606a189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83790 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 gw3GoW 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 z z4|euJCAl*Ebf~iiZO>)~U$nLktsIP&H9_}U8#>qC(4fAA{?i3|&tTLmgTICn>Y!b$ z%1TFRxl8w?pQXpr6X~h+o0Kp8F1?Um%22x@edyJMnk6p(Nv{@1dbNC}SA%X;LKvo3 z3xvh=YThVCC6qxA4pbldnKs}DJ)pTs;s$XexN(rmKjLO_3%O<78pz^ba0j@rxHH@Z zCfk!f4l@K&(;;uBkMrUDQKK5*WD(#K%`k&?hIYpaxpXj>&Ap3xX$qIi&E^(ypF_Ui z!tLS?a>vle7oDj%G)lE$LioxQSEf-4Ww~#Dh0Ekda}&8~ z+$UJYECC+(Ci^RM0kww4B@wgR|#)hv-GOwF5yGMr-aWLx^RRVLU*9v#gnicVE|!e z!eBy`&;m5LL=rY4Y);sgFq$xiurJW$l1P|Lm`*s9a3tY)!uNq@m+6Ev3Fi?mCR|Rq zmT)uB;XQ&l`2CbIRlhBtih%lJYKv)}S)HWh)P1uF7 zFW~^fOu~^slXeo}G{PB#a|jm^E+bqGG;22!?j$@wc#QBY;bp?xK#TSs;bX$z2wyN% z1VUFrkBlL48A=&KUqT&WRl=Ht2Ey=+A%ilMdW6jhI}-LJOe7pcIBZx#dYUqx@O{GR zgfj`}5iTZNjyaRZ4EOJ$Owv_p=)>@g333;cwcg^D_BosHwQLp2X&(~aCA>|@p0aY< zZwaphdF@5QvxFxIj}Y!7+(~!`BO;7|B|!ihwN%I|4OYtb~9~2^$dB zCNvR-5?X++T9q)EkjY`L+5p0GgiK@Us`UlBXv+|K5MrGVAAzCU3&P(BUjp6S@(G_1 zJ|Mh9c$4rl;ccMSjrE1r?OVb#gvSUE5$+*80#w{sUnp)n2{#k2C0tIpm~bV~-Hr8y zyW0Z7S%kTSQwb+9Bs%r}H&MhYz=vrMAvyi;U1%w!AOKw{-x7rE87`BL8DdTFZ(;=s z`R^dZfC3k5>FdbY||K?=3g|K&S8)@7{R|A1~4P&3rWt&G!lciNJ}c75Tr zpE~UaPWvuw?7eWk>9j98?K4jMOQ*fhX>WJho6(~fk({gR$|BdIBG=3!*VH1{*do`^ zB3C-=5m&|q1lL5uzJxJ^(S&UYTO(hQ)3`=C?MSC>a@tHw!R}*s2-&PX*fksD?yhW% zySus*Y6w}Iy1P6le9G|OY2~6YA}Fmq)^KdR{O?`hBb4Glp$@B;mRKXiU}ZJ{tDs?! z?cc{rY7SN|E3rP|l+$LM zm0b^Y+F4FJ(`mEbVfP0)?Nq1D`iuDwaN3M#vuoCa%#KIfJML>>i~M%}7=INjU*^8e z|0duGJ-d%}IN72n-DA%peH|%C7oGMKhb_B1V#`{&f*k7fvp8*MspLt{>uFA#aZThR zFLUIgVU&PtO(-X5=5Q6TvJS-Bx+0!dR}v}x38GMe zaP+O;n5iCho(RBnK{uFMB1Xh{F> zY-_nY?%yMPAa{fNXTnEv48;ciB}Pw*!SI3HgJLjz1YIo44~Q7NoD6EH3C%zQjQMD; zFGhSOH2agdTxbKagiwN9iChUqF6_*c*vOHf;c(vNF$0V9p`&8H zD+_(0Pbj=!qR0gfD!a09yh?sdXXOsv5z=IP?Bt4cuS3y25B_UPyBgbR=Zu+6cUc;s zSEt|VB0uc%lYXXDu$#`|V!P##GUgO%7JlEek&0g+^N}$|q_agnbOTq;Kh&()A1@TU zz;?AiT`_J`^v8pEUj6ZmI~Dz5?_se&JYO#M$1`qS^v7$9oN(|=k|_G)*_=}NCrC3n z56J~Q&P~!visX(rFL_8MrBafYR7NT-d7>pUIS=u7@wsRhUx^Av9yd(Z3-V=WmAxTI<;7pNHU8$Y~N)eYL{C)9(__O#>d?Y>=e-WREzlwNux0o+J z6MsYZyo3aX%|l!$9*^gVL&PjG8#`%o#9`uaafJA;I8yvpx-UJHevy8ao=G<8xn!6A zkP2j8mSq>&O~wns>m{I&yuvq1;$*A~%y;$gSiyayz+$+)3_?W`ZP&*^lE( z;#UekXr6iSPF7}c&oYb_g*JusDKM^43FSY_g~@%PhdnK{fkwE4(DseJgPx%t`j5*g z$1-jWjVz>IUgXOI*pAF{Vmq-NS6=d#yg6U=UpdHvOtuMv;rKcjnLK(j0I~!R4p$k^ z=Uefu`8Ir8z8#*2ci=nno%m?f;sL9LXq0pa$Fp6xn1R_$&kMr{u@e@3kuNcsh!;J8 zqS!|qAPzxpJa#e7B1+=Lo$S8U5GXNSv|Lgy4Yw9L&^S=%GQI{M$`9rs4npMyW5BP@y<})bDAES;h9djo*Eo*UCl)eOJANIVKJ^u(o zoNAaQ@YDmzoWaup0ke!iGPnhrT3>onQ4d<_q0pKSgXsZn`C;g~k3yfl3>^9{cXm~C|CN&`c-@jBLj4VKF0G%akMyw(~9fG4X7z9 zEpBDK4t|Bvf@`?t-atY8T>_`1CydyIP9fNuj#0?(7{?S=?n{&`qBZf%kbj2{=6vy# z=o+p;58_zR(rj@K#i6|68_J&*7J=3VV$WNOm@1};gT%quRhJ=t^H$nQ;3^X}gdwkD z^zcT03|>q;`EQ=H6w%*5_7Pf){W)fc64Fj-C$1KtMTSdXNZ7w4l!v>5v`gBB_Gc|+ zm3B+J(YhFEe7v+r+5_?C1>7~IebPQWu&Ivt-$)0f191O=I6q4VrGp%&+=KhRbVxeH zaV5V&_*&9o=`hEY#(XCnkznwc?HIy*BpsEGa$MOSaJP`Yl)mIR-=zq@F|z*9lw@62 zLV8A0T58=OeW)6wOGve*#V4iqs~a>VGchDQsD3?dWJXp$T~d7Apnl0YgZk?YdIUqn z)Qq}8{WCKM)vi@5J3Bix+ZdXb-mjKHRn=OE5TwgWO2}@MHneV#s?)>s6$I7Ox>pyXh8V&^!c8HTh!8y@ z>Gk0u22&U!B4D`H9Ht9r^)l-8VX#fA&JY&Hsu9T=2iE_x>Gf}`>7DIZykYbv>WPR@ zb79+9P)C&9pbs%cu(pW^v6xK7+Qx#mF`;cD&^8evXgi(7XrZ<->O;aKLc+pA^x=jO zz0rV1HW#*y#i)zW>-2j3SR0x3Izxo{Ewqi{Ew_y!A~r4oi83nHhlQgz4JK=ZK?hO} zGlZarnWeXcWrdj3Fl#s(3bnxxWW+2z=uFiaEg?po1@wVR8)%kt@Cd3RYQ?IEK6t%~ zDywODIO`q@8V`*Ci@L`c9u^vwY_Nodm<*w&EThF3s{d;nIx;XtPzJDGWnf_`gUDI> zCiDW)9aGFiMT#;D4~q z1`rJ>ka0i|V0Z`^0@>hsjKP7if!ItYP&e2!V}Ri_$iV;&xNid0!Vbp(VKH?UN^dNQ~jbDPlsw85no4FzphufdlbGhk*!r2S{#5%NGe!U_h^>2Z;pfg*(z?7SeE} zO6f&VdW2wi78;Mv@;N)xgsESRD^5A#VPPn)gUfq($`Nlz6j2Zl8 ztec71zA-5S8{cf17XrS-n3jWM6!H~EOR@g^&xX3;tu33K9Tt(Gs^)kHcXkMNDw|6p zPzAPK#KLrR#ouz17b79ymDt#%@G$n0&%c1&Vc$qL_nLGE zp%lXskD-}04m3Tcun_3L^d?4?;cSU*fr||t#Dv9$4=%!WU;?l~3J|C;6c~kpdsFhb zattXpz`${gATksaS)wqAVPeP%isbYW(3zktD5=Uiyg1R5QpSXt0V9$vW}t5ZseoCr zZf8tf&9Fe9fC0;xJH%5~6D(O-9Z)-{1~3U*Km|-C!*o{&$O45J99{oPtagg&uQEZ~ zuuPb!h)hhB2@@7y%LIZcG66}mOi&26(0)@Ue>?q#MX-)F8);z_VG3ol6WnN=P>A(m zSTyO4Sn{wr4UHX&F2xE69UO}4g@r;}WC*ud+1d&eq1WS3Ue^^HXFlC-qJH30^U#l4mB4W)vRJ{y~G^s zHc&N!R+yR$(OELg{wvuSjc9TQXyhs99vXy zXlPX!+kk~@D=PtJS{=eOufoiVdPDuoa*>HP7E8Dl6CWx>BbLqMG;qOH*mUj~xS%%& zcVL4X?1(h41`J%35HptroDS<&^y%weWkmJ=3po^DKR7$`Pwg0P!2=D}j9@TKGtZh5 z4Fv@Vx|eYs$jFST85!syK104>{|E*T2etf%;_TbjQzpj6sYa)=fu5a&sr^k*EMQVL zG9{}%Jef_<^nd}^pkgcvpp|631b8TcNaxVFO+_YQa#KLKZ_I^uLtBFHj5M6hcD6taPCbTW z$3zG01nmH7pF#9gyTFe7eG#rA_6XJ|!)j_p8qE+s9HYAlc2*di<5rK8n5+%8}^4*CgsVAPBp&HTV~0*p^spcNBC$uh9b$)r zV+0}JUbw1)cs<}^)Ybsk?Qn;+WjtEF2U;x(dv>mHSFnTdF?RJm=B8l(o*jF4?qXl$ z*YKH+UDngl@(W=`;Uw%7oICviZ=m@NVcB~QSK?gdRv5;AtvLDVgBtQkyDdy2dV!r? zb=0pR>Q{^E*ABH{b@D=w#o-ibP3&=HoK8mkM&Kcgr*#0$RD(|<(y4{EDTh?5;(jEh zo`|?C6~-AX)Fyr4ufsXqbo6sugjEr%7HZlGXF+q3a}@SC)gyj|9e`*F2Zv{)zY*wH z2cO zS&BxO21uma7dB; zKHO}l8!KnMf<&Bl9>(25PYq>d=5at1zi3dyC{R#yob&C4J;7b^>kZ0e;n;5{ez%?O z0QB!5jM|b^`>yB_$DGs|XOGvRb*F*8rlBPB@cRh+_s@X>pZ?2xc_`BwP#!bv)bcu9 zJ;2#u7Vlr(TY~ez)38HtHBMenMqWp7PI(>7R60T36s~EwH<|kteYzABKLzKe7vgR% z!ZI@rA#%Az2r(Hs+VQTX&p;`)(V}fI=4#`Nw;pZW7Bn3UzLf%u#{IrHZ5;w?3d401 z_%q`N3T1X6p~LU5*a_iSekHcK0xEW17d%Buk=Suv553s}rXpOg44ccn3w{KB z8Vi1ed5$_u*m3EGQOeN2U`N5tf)@pMP}j(Urv-l?eLYIV=EKwCe+E z%inPV{sFFj2OZ6Tdpg1##*V?0ILBdz{|3Z-z}-hZ*!lZWIL-YzD3txC<7D_8^xQq} z7sOmZ+=}s~Jvak@7$?P9_yV-k0EC=_v2c~cw?D97{0w)KuLOI$)7(SsJ;?7mek|8> z$ZG>)Plp+WoYJ_5xZZ%Vbc*HAD+Tp28Wte+DTE&(Pj++sfoXGht;v=_G{dNCp4d6E5W-6 zi^i7Q2(PsQ&+8S{O(WOv5CvbEQ)4yS8X6oY8XJb!@-FJ6c2H{;^Qo{nU~~myl#v)> zaS&aF{#Yhn?KCC{fXbC9s!!FPZx#{U;q1pnv2GI%}~dR5Ao}| zNEEOQywu2#@7qTlY1{o?t2x={H81L@C5noQZQq?~=#gqVhUZ`DhK3s*1q zt_c~L3F)c2#<7DE^kq~}=I!F8L=C|U+f%c!Uob&m5~;yg>!peAADf+-p!Zk(n1|w3 z#^IrBoRFTGl$d0V&BR_veW2>kZi`+%&fC#RDaa)@We~PT>KZpx1Im`b(`@#5oc?0U zmcYXh1D?Vd%@O8^7`1n?!glUdn4Q+EOsAZb*woAftFCcc`k=IQM|P?j>d3BI(QTHY zu2W%-of6WslB@|C$XXYoYi3Z#@rWVnyKCR%Xy;vpZ zqoA(AX;-&bJ=8d3;DNoN?PKg^4rEPh%vWi=Iq!Cpr+2pvKbUzU=)&e1oM3D7^WM$d zqACwO*{4aJucJ;i_RJ_dc1qIb8pme`tWNi<+GcRz2K_aAhghN0vX#$T)Rc!d`K;FD zQ$NoB@#WOpUF+99l6$pf{&3^>Ia>SUA(I-;D>y86n7#5s^1_dkCMLWy?!5zj%N+Xh zt2$*a?;GvJo;sn*WVJN~7J^NRY+*NI12}D=bgQZ%MTLy0lbL z4O|Ku)|XeyIw+?UOOWUVx&k~m))yxaj305#7*2GX`(e(bQQg&*kNR(U{+*lu7wyJs zdWH2_)^VZF2lp!Ex<#cvOS#`|gnIY)qz@`(D4uD}R;-OEogchm?t0&Y)9!bl$*no% z-e%(&{W8~{!NXqM9_HV*_40&rKjk!tt1>h7=+UqN<0`sNYk2S4rLOh;vs+9I_R;iS z7Cs=zb4iEt<3?^($4W~u;-@%AyvOOM;a|SoYfhCe4w&WV+y1o@|JTQmV+^Z!a#4H? z8zKtFaNPfB44Xhm#4>99(-`iQ)Gsw5osDDDKaS(YRwW{8`xliyk81ISM?v1>SZ$|| z*U!4Lre?{Ohf@nCM0V<2()*NDzs4UcX3o5{CpJgv@m1>ySwGxt+$!jkhX-mj-oNl- z|IO1Hw0rno_>R(tD?N$t_SoBy*0yWj+DS`=3&8;=Tiv>5{if_>Lyz^nXU8m`U%kCY z*@rW)#MWuj!T+>p7bUmZi&blXORU>$^`P`0bARk}veb@46AT}Hg%m+=eqRyu%L~V*M=S)ba+qOaaCRI%I+2IX1m@hRXu&>Nyj)I z%XdXfbyD3K@zbyqu-x%sS5?^1_!mRQWwe@6IGixR`>6?PaN#uucz|<^W@d!Y7|+fK z&2VyP8t7p~VTB1bUWJWKiVb}&Xf3=dBg7gT($5fTO-NTGS>XaDvuafJi)t+jDIS|K zgntnmtl-}r<%VL+t?7}ZB_1uy1box_az|^~`n@f?O59NcSurX}1Z{~h~o@FtK z@Z8Wkn?DNXT0j0UP7NEnWPCN3v~nA-SGl_A{0wpBgtk={&S@Z4xOVEhoZ}VyYc6j! zY);wxv}RSS@%t9>DJAY4?B`*VmztADO!hhQ)5aScf4ZhSGPvZ)PcpA=?RkB7SYYF! zcZO~`SzXdCS@}z=LzCY5$Yb=^rC(g@nU&hEw?~tv4O2_3zZX7dL+#6MgG;@rkh6L8 z@YP9A|CqPc-KWMcqk6d2o!jHK&oQqtDO_lHiRJHnSo7A#r!gz|b>8!8)@tE*CFqNT zFNeVA^7u}(^TV6(RO$XYn;LWM z&wQe+>WxN+tl`lmAw7u=_L{mDsn*a!p+fQUDZHVJP9KtyscV~%nVptCP+uFb9U`Gb zU)}l+w7+3G3>ylzNFf-WsJIY-|_ZOr0|UXg`Sbd8f^ zGct5WUHc(%$w^jS`}8Ed#6IWGl8&ySBdyFF#*fSnxdt;>*ejlBz$KnJJLH-%Q~z99 zryTWnf{jy-LX}@J#XnWKu3E=YY*SHy!eTcWnwgLqk2-dVO-_m@K?y=rJftEtsZ$L5 zCoyPB<8^t5mbW>1=HXGxzD4inWK_SH{lmWKqh{L|Kl?4b*LBdj&VJR(uQ+~_m)FWq z*8HgP|5~$r&BPt$#@7n)cZ)lBt;Dmko7J@59kYC`n_PA^RuhK2MM@(Pthm1>eE2Xy&i)tKq9A3F{@6B=IX@p6`bROQ-tlk$8k58Twe%&$*9#vN{>x9?uJ zwqj)5{d<=$&cE>Bqkv5ZqXMG+$Ikt^yVpZ?(09o*Zq;--_u;3t^BvL zP69g3Unlied#W)S2~JM!s8%gZPT+lfoyoD2L5!h-%2;Bxtb;PZ+?>S_1hs==1<&q)VYMu4_tfj#bed&*Txagg>^~~-WSz}>z8o9hEAE-+;j5S zM{a#uxKCg3{W44*T^>&s@3>(x(F+P{-rV`yvj#rJ*Py&8NQK4gVUPW&IoBENss z{A1;&wt0cez&gUXuM@x7ackC7kA+ExLOX}@Gv6IK-hFh|5XHT6;lZH9g zilvBvCE3dbo9@E(*oDv5?x0vKi;*zP4HvHN+Qwj;iD~JnNwNCUYDwnl;_lihHdWU$ zEh9k>a%Wyzci)EbX>nkxIaoxeWU!gaxiH0c4^Ooe3#7QaMdu7kz}%CXSr}0)^DiR) zqgZ>xGWVBTf%Sj)ZTkG?m6f)d%CWTWd5s=@H!|g`Sv!xHnfP1u{Fq;USiLFalV`2n zW|vdC-qbh!uA|qi^6l#cYQ9?)H}%U6mrl0XS$VbA|Iz6VJGK>c3HaReMztZWI$pn9 zu6fRg4kc^J)zA7Qv@!g8+0*RVuj-DzY0s<)QzFCSe)-~Avl9_P4L(1wz20U0?;h{_ zjE{NeTdPZ2+ew{&Yq%=Q@A#xDPfyI<@^hPkKb)Vj`{MD3yQbcLC*~*N?uF}aHAW{j zn!L~c@r*jtdq>Ua9MXI2d7odWZ#j}TZo%{Sy&_zyYvS6@-a0oT!n?|hf~8OEXCMCH z&ZDjG&CWMn=-z5x7iGY^GDG%UmlK@%BICXI8ZgU%A!hzjLKD91VO^xt8=H2 zLdw7v3+iy{ZhtR{$-s@!KVZal)Cj!XQ0Y6NIX@x43GY%C3&nq%A4jk>0ws2GGjvhS zMZpuQJGpE^mK7rH8-!JMgIMjGMex^nEJX11!fHVTPgLWfPjXHHn0a)?b9o+jt?BHD?X)h<1TWhzBirN$3{P6yi@#|Z~jq{AYQ0G{1 zOrI);%k8)p+3oqaT`qofKJMnztJ#y6AO0bEw7FM>o0%oz$29KPrIvTsE;ofbv!aGB zuby=5*7@caepxkWnOnT&>n7s$_@__IwHD5LmcC$h`uLgOXf6&L_uC2U=?ahHKb$Ju zdfzs==uZ@0A`iX;On` zYimv(VeNUm#h!bOJA5+ykW@4B0B9a|B*DYIkSYQL7; zn$y;$>+P~ZyZ!Aq1Kxdce&)PM3HJR>FZVj~@$JgrEq2-8O+Q3GR$2&VJXgS1JjUex zA7i#cslQAPuauUH#vH=LU8vl26ZP)JRF;xjq1ct8_rOZ>m5S3_t@J9Qq=%lU#A5fL z*!5F9V)uu{v}k#3*^V4*Xh`=&bGX! zJ-hm*{8MRN2Wwy=vMRGirUrEN?jS=>hV6c+}tVm-2EO& z#>`)BW}SDJ!TN$`?|z^4?s@-*p;Hf8zvz7=|AN2QH*=Z~h`8iickV5xeY?meRFPo2?Yvh{GyYt2OOHWjAm0jB; zf4%4Wm?xd0#&2ktm(qLToJtR_EUEf(*30EtTO<0pwwO9>?m^Rc#@*ifCetT(9~$TL zQ{T&NN@nMc6%=)>;PR@EH2Sf8J~-!7MyBciZ9S1t>Mx3_Vr17#E%&NmqFyPwaN$98 zMf51^OF~kBXn?cO2JEL+WBx*P?~84^1;3a&u3Cwg+>1-^8?R1Y7xM;k7+%7=#gPja zO0@`RbwBrc_U4l}rR?J_hTQFs@7|vxYKp*jOniJ zKe)8nr(VXpE6dm0bNj*v3!gNqkltbvA~S6S!eBFJB*AV2P R;nJmcnB45yX7*B^{|~|z2W9{O diff --git a/docs/api/assets/fonts/TTF/SourceCodePro-Bold.ttf b/docs/api/assets/fonts/TTF/SourceCodePro-Bold.ttf deleted file mode 100755 index e0c576f1b02314a890f50d6fa096f0566f636153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197004 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 O>BEC*{a+;mBL4>`Q~#F$ diff --git a/docs/api/assets/fonts/TTF/SourceCodePro-Regular.ttf b/docs/api/assets/fonts/TTF/SourceCodePro-Regular.ttf deleted file mode 100755 index 437f47280b4f611f2b211506c5c5eb887661194f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197644 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%0A_ga!fgk_H{|QsoYlXD8DIo)mg2t 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

    p*zB|mb{Co`icB` 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 GhwuOaz#3Wr diff --git a/docs/api/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff b/docs/api/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff deleted file mode 100755 index 395436eb8493c7f2b990460567348950d0171c94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89024 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 n(Q diff --git a/docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff b/docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff deleted file mode 100755 index c65ba841a76ac46b4c12e6c33f8c9d02df73523e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89188 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

    O<#pymF^9yyjS)oNJ7Yo%(CxAXqNtZ3zQ;i4X(* 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 NgCOW%0MT2D3jj>5ERO&H diff --git a/docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff b/docs/api/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff deleted file mode 100755 index 0af792a1e4b5f8e5bd076fedd38cf23b6f696b00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89604 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 diff --git a/docs/api/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 b/docs/api/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 deleted file mode 100755 index cbe383538a98c1676a934e1a7913bd1365af3fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77136 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

    hpWgireG=cWpW_Hm-$UYm=>#3Ll!PMY(`2I zVLXSA_Qb{$6P9v^*tL!7gI)!br@FKo)y2w7_(-@1cRLru=KUdc(~Rp4uZPtrJfXsx zr36RMY>hCZ_r#P1*QJ6Oj!vwSoi4@?ngbQ#bBD(fxcreXy53#^-X+7YKUQn( z7&-t^c42g0b-oR^d`u1;9I7)04SvIi?oyReNaw1*BcJ4Rj!ia^?pH=?@mgQfj^Z@Q z^=WnXvOi}}CJ@;{G5pX>H3nuVaeYODCv#d<8Zcdt#A_%+vj6|Bl1J?44R~aF>x)3l ztM#;h4JF}JwjL1eGWBrj+Dgt@SL;0U96aYfwu(d0{~T6PWTW9cbmhyRgP4P8EEmV% zc5C%cobt;qXF;X6YjMNp)$hL;OH~E%Iny9scoxo~5Oszx`G2}cgUs)wk-tYA%ThF*GfT#=OF+ESo0mP2DaW}VBNE0ix zq2AUe71+4Ug&=NFT8qT#@#4{!a<09jKmS3TWWnpP1pA(m;&i5m3QsNukb~PI+4(j>VSaCgi_SmxqQmX72hCz_NiWf*aY8J=V|x0yacL{4`WSBMx(3-k5{5 zb*+n|KfJHJQm$#PB3tgwY^xAu3g$V|tJYkH3i?&B=auG~i#|0u<~wX^UFV>+>q?QR zO71zjw4-Ph!SeO*e_CkWdVa0)O8NR|G1Piu6nXC8QJ5@(%>xY_zXe&O@Qf$dAsqzq zeUzZFe40Z85*8J>Z*R$3evW4NuWZy4S+)wlXk7{HlF)DWNRNf|dZMF?bs+Id`HXC= z(D5Xqd5f~TgG-^_Ko+cO3TO5e24-dxwDHUc}qq;Y;|h zluJ;SDfu=D0+L4mHd?{o3g6%hd##vdQy}%k(Vq~X27$LMu$!MB@3!2cH$tpvXWC%{Sxetko@KEHpWSi{fOr?F{AH8mUJ5ebNs18hA)*Hp>39; z!zW%#K7yy7>0M7B++-b4dkvL_tW(>FnK(?|xT5N>!;mbwgztfl`LcEjmSE-P&`8;W z>k4YCw>3b=!LwiPG+-+q=VdfdVjNm+WA8aFB}I!q-lJtHsnC((_j5HvAktd}$n0Rz zVnk$~gab4kvV!?ICB|z%g&l7Bfjz;U`2N22Pj@TP4-Qy2=iUSY9vS^fMCW?l{{!v| zDQD)MxnpAoyu^LAD;sDZ9=ohEB0pd|*=S{bG@GOL{BG zJV^a0MLa~ZVT(Yk3W)5Q3XN#uaWMd5=cviNn@<{W8mEGLC0?VB`zJdfdlS==yK_{k z2@tH`{7O;Ee(_B)<#v9DgZmPdY1)teMddL!kd8HP9TpF3hiGypK!^a{-*OY^vhlY$ z1R_um0&Q6+uJ7gF8hWz0nAKLR=f8R2hftvfZDy#Z#O3W3(n-aq`s)>7Qf&*`w=jHD}&AbCq3+Z?yyA{&-vQ!n?g7S6cbxK2#j`n$_ z0u5#!l-w5H&X^;g)``6t%gQT3Bunk%cw=9eeLMit(BU(-R5^glEQ0;XQ4ZVuSr1JQ zWY0>paPe2Pba{KdVclBMAIRVQIq4(g6g<$$uYp^6kUrC+O{EM@iGXC%B}<>;tMC$6 z`a0&8S^a~@lHdEIE|L#VPqk2wXof%j2;{uv(HR~iNgtf!{OhR}EpP=1$P=KK*Bsf% z24yEwb^6&Y$D&CFN{~-=u>hV-Dcl!>xR2UbhZ_9pfnr@n2@p^k-UHGLXr_EvpunEc zf$hhM*oooWBND|8EZ*hy)R4xEy~m5Oq*~t4wTgnW`G+fU1Q~nL=ZGFnNVD!ndRg-_ z56d@b`8N0PAN0yPL_knTVDScLlZKo;4V9==P$c(s-02d6{olG!{5xUs7XzJWgXYFz zl%nv8*Uwo$6-Pe7(?cInPbUZ>elnU+>blYudgZBCZ{MjjOz#-fHV>qY+fNG9c5}nj zF|q=QX>BXzpqYjyg+)n~$zAR3%5X!`UF+ygS9e_9*}S5CoKS!ICe~8-<|I6poRObQ z!Epo+qD_P$TEZOE2FYL4vuK=?#>yl4XLOJ@SD)0#2vuMEq(&Vp?KWN2Y5Dt$

    E& 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%0ADN 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

    czinNKe-tO)l(rzySrOOi4Cv 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

    -RUF8%~d!l#P`8wCa8Nx`{! zzZLyy^v?8+5B}fxRQ#Hk^=$1k$S*OCsf)cH$E&>|_zDM~mDg7EdK|BH`Gr@}f5|sq z^A_-fRx0=G$2J79dj8R+(NRz!&HziE`tgkf>j&7ES^hq$Q`YXcH`T9VaZ#Ei@Luw) z?imIO^JE(!Uzs|U&W%PxhW=tIx?E>Ev-LJDjoN5*O#Llfr09;Wq;iOXn;q+A&hfaA@Bj1xkZgzq;B}mDjvj z;c^4oNEnw}?O@3PN8^GJUcJ8YpGSqik!bw@a|*F7baAI(I!NU# zx>v@jyRiJeRX6DR{V67Bu)9&pLdjZ(=y+7v65C_H^0-RoYLH6Bh?iLATNhCUI=H+J z%b?n5TcPR*;gp+|8l}Bk2qOfRi6m_NvBF)WaY0=H=YwCRv0`8z9zDSJjMq^Su~xR};^I$~w&A}z zsvXX?l_kfh#08Jm&4G3P#36XRChH-I@cZJ%Z&tndGDmfwX3i@M+n8>+b3Q@+0~ zzU6(BXKZ^j>^2$&)`AcI;O2txVZr)TB((-0Sc}>p>UnNS_0I9bPZ3(9BNO%ML;kwc zA9rf5Ed{15#Iw*SmE#A0P+7)z#|=Lv_xn~@aOek1mVTqsT-XDS7OF6eZ>E=2$nEJ& z$dIrHG0%ap`rICX0fnq&qVB;ZUsqCMh1r0TWva>_vqb=CfC9_|Ouz;|f&gG2NKld6 zc1u`AjZQb$L^~;agA2d<=|a-$qx^~QdF401g4#oD zsZ!gLKFnQIHYBs#z3_?V%NWA3NkEhj#S?kns8rT|dwg0pD)p#Y?yX#2?BlHhzWn30 zh|CrsP|&!F;Q*XFn(?V=q2JI3 z3bEB&p)zNQi;s!5=H?^U+Lx@pl%F%2F5k|ckf?uyWf{b5iB(oxtImTS0zBX+Kl?Ec zJc1NTjY_N5iN^fT4wUnbLC32AFDgY^>K5<#&LO8DR2LbSl(R&w1{!a=`M$==uE;V- zi8_s@ns0%{R#|VO?e@CTHEwj!A-B2D10MB+r#zvPFhA; zRaRGHozd|*3zw*slAfKLUszo3m@CyVt7K#57M7M*)*{V2;2+>P_!|5OPEo8BH^om0 zQ6iKIN}95Pyor3A;!H(Saa1~0K-E*-)F`!q+D#p!^iu{X(}JHPE~=z5%YQ=lv6*(K z%kA;{+@-;Q83(RBgo+R?R)QpHGUX|ZE%K^BTDyX` z|Iyim+(k;(PP=_(R(J`idgYc=IfTUIlr*R;NM-W-;u9W>U0x|Iqq$?b)qZ0sut`ATMeG!^NCH56};c0JCXJZ^d6|Tluc1 z?x!83jgDb&4$-6Zba6R-6~Ap~bL1BiKA&!fCW65x;Gue(DtXHeg{cpS;pTM*juS_JS zEdbz60N?=L1`;KjOpK%f;5RmZmGvHg1*ML3+%w2lp!IQVKlr@RymQANx-$!pXZs(# zhCt)UR2ulTAWCq3B!gN)wJbn6l1dJ?eeA8)8jWd_CUi)Lbyicm1fX}!ZnN(kIFsf} z*)z|cvmQ5JX6B2=!c0X;4sFK~vK_sEpGR)IT+c0CBL^{!(ufzf!Cd+b%gDlBIECfo z!t!|yOxGEG-&^jyyl|JT}CX?Ltt>Hv+8N)&0wtNW7Sq}70o-YUGXC+)2W@G;fs zy{~0Xx5j`BnMEfTJA)P-df*9z48?d@f)sOHSo$YOI5IqAl<2L>m*8-@8$SAO3_Uq^Usd zh3hU_Z?XD{(_g%S5)75(T}3|izR!O2sb78WXP*_&)wvkR2r^lws}-WY`{LU&Sfb&Q zjg(@vRAZ%i8r49sgtlp9w4rHND!|kzPDiTCM@zxIYq0Sqnry1+W}0oT`4)P2o4VCv zA95=2)kQ!`?i2WHb`bwKJh!k2$>`*ggPf3Yv6Qd$qkgmx_~_EfkDc>zFA+3>xxxA3 zlJbhR<9YM)=R?H{ms(bc(*H!8*Q=^)YU}E)4UJ9B00_YdgJL*AQnaG0n(^KI27R%7 zg{Q6GZ2#H6JAOESy8d_12wi~2F_kr){oR%odux5{^na z!*Er`9hN5?Z+N~4{1F8rX-%mul_{yUr_oWl&a}GH=}vD^4>|ToVmp%BmE4|`_N8_p ztwZS@$qbeiB0E%0nA~vVrJE?jR9U9WHdBt-a?O?JL+|?9N51v3?`^dIGeE}U<+Ug- zwRMEzRLOeR)3Md;I{}kgx(B+vShZS?pHsZ3b20q@%w9UG)Om*Ce@R_YK}ka7&-l5e;_gSI$sj~Ame6Knv;dzh~#*~dY#x8!0p%;iYrk&t!+a*)mga*@3Q^5E+O z@?qft1uMnny-~O=Cq;^-DN&-JOG!XsjR9pNtteN{M}-QODpkr+We^F24Po6wDXc$W zSYh1(!wVY>7%|d;kw)q^>dc2>o(0H^0Sl3N0~R4O2P}q71}s4)4Okj((=7YlV6vYZ zky!(7Lgo&*8JRuc7T9dSy(sYk_aW^E+`oKVv)y=L#|;O$uI>d54KF`Ub{x^tazb0% z|DO)K^P>d|F1KjWuq8_d9CXlFFH?do_ye9PJTc(ei*0W_w=wp7ypVF#i(b^%FHzWW zz{^FJ40xr;-~q8bb}G&iC(ej?@zzR^z+0kZqEe)AlzK9$y|Oe~**dKp-Q>#GYZd6H zP_fyo#Qat2-zu|Hxoh^lu3r_kzPKU5O}AZHcidQaeO&kaf88JX^Wgi*|MB-cm0fr} z^UMa%J-5{huk82QYlpq@&I9kg_rwPuG(8{LDEZ_YjsDJ6QTyh{#=+0?`xfDkKVtm# zSE+ygY3~1$R>}uwU*h5jAcUnDM;3`k9>*4iUu|4abaFJtg~cRSYg}ABW(or?c}Dr#;mlP`|cU@(q10BZ!AdrdFp|&EFI*PhsNS` znCBiD3)4|vpJUL@aoRjFmZy`v@zhw6PV@GhLD;inbvlQL=f~P~0WmL*HR%$fULKp$ z6{Nj7Hl}Mxd3|h4H<0({*p+Uf?Cr55-9ho(Mg81^ocpx+U>r^l(e=?dnjT}}lW`n$^ZHIra-1;A7LYe8b_1V1i#H=QEK6tt>ai~L;q?2;_ll4 ziBIQ$cE4SaZ1;GOdPuQ%JWPG0+CLtp0n!{BUD7z4oEj6;G}oLP$J0Cpei>uZS1$Tv zY)?N?@YiUZe#7UV(K-EPqyI)?`Y+RQe8U>ZM_7w|AgqH@g!L#G!fDisa2>irc!D~C zjng&AB`B?SR+y#`3Q>>tws- zNb0Pm)Z4+b%WfH~LH283$wA(TBXZ<8CReT&`3kfuQmkF6Qk|+a=+~lEmmWPP_3AaFPoF9M`pp?IV9cOF z(}oP`F=E77qeksCX3PQO#vSbm3an``D9qFZAyI-5BS~?LB`C^i8cheCF4+dtz+@6m zk)jBih6qs{$M8H51WptMYinz@K{7iij*ez0CwpfXM>jWT50&VseNH&xkh3m2?3!y% zxap=-#E3aff`l`)LnlQ9Lxy6RG8M|2wJ0`h#IR*cnH@V}>^V~5%$WvPt~9xEqs^T= zKMbK>2p3C6oH**@#nX}?8AFN`{!*3FQKpQGa?7i7?&;2z~S5dr{=Z-M)NmNc z_W#e-!oDjH}#@Z=MK3o+Ldpi~`Gg5d=k1^r~;5WN66VrufD;rux>mG~fBo zG(Y;0?k7K)?q@$U{Nfig{OVVx-~48#qmHs1bIdG%`jf|B{xaL&{$~5fKjt{;B(JEb zxng2`-Abu>VB0Ze$^_evohgf2uDmfP6aZp6WH3m4bTczEvOwlVMN3P9 zj?Qj+dXh{`8km{MfI#-Ku#g3V?Pp~r$HwMfc6KTp9PZ=fq{_wRer|4RA|hTF6=kVH zg?FW-xT#d>eQ9YoD|Y~tLx_Qp3Jk-b^R07={Yd^xLx3+qOTBqrr9k^*oLJDKSgB0~QyBfh8Z}En{eg zoZJ!$3eD+QC1@#xRnP*gM#~_qftFw`S`J|yv;ynV3J4oQSz{dItQ^yrrcKSDRS>p7 zTd)_lrJ?1BzpH(Cc_4|D{3(Rv8`U@+K^PCz&SL%>0F62c)E z3J#-F5RSkwa1@<}a14fnxF8~8AR%EPqi{n- z#RQ-$1OkO%W3z1uMH7>PQ948fIR!f^Dh{-vOYFhGpp21G6%(_Rwo%C2Ax7uma$H=< zS;@_GTeWLI^#ypXqoLQ0qN`6*(MU>Un39`o?F+TD6pRoUw zVZ)Ryo0A+lSn}j?SEPs+G&D~oN@yxmMi2pk4k98qR8%%-Xsq$@SP>9#rlH}%#l>8$ zTBhpM(bK3Y41aR7^-Z&4#VnD7ma+yA^ndK~pKko$3;;@+Zc&M9g1~!awSzz~5i(IK zbk<Gqya z_4GT1ANc*as^;H89F7?1l_^tAN3Vi`K_dvH9t_r?R;_Xk8kB0%q(rl3Wu|D4qMyQ2 z-V}<6NYtoNl?VOs?~MLd;ALcW0kNWK4sQ~Jqj9p&f#4Y{{Fj6%vj(i(h^TK?p!j3; zWBL?o3)GM4bLjsxAp9ArxRO19b=*Ek`col>6SolC(5IoiXXF5CkHZX{UL|7R?vP7| z>T8d}1Y!=+Cvyd}X0*M0(V#^C?#{MiYDV&!` zlm(%RaK(|jYR|rreJK(>$o3z3H=WSCX1bKBh|##Db>c`Ho?k+b)vzqmV1T0>k7TKs zmu?`e4EjnPpEoPbEzXv22k$ylODH|kFbZbQGT(lj>YnV!b>xOav_8$UiAG`K zywM7~jYJPhB4Po=bs+$=AAohTL9YcD3gGSyfNdRMQwH$j*AxJNkRS+9FPGFJ=42(i zUCMTI4dEY2+uZN2F^TMUp(=jVsEVH6*5u;{p+dgI-l@hzzC1g;ZPH~9 zrL#K9?wcVO;-$61#|Se&@K{b&9Ny>ww8tL|9#na+s^%G*#5WN?;xi4oMNYDR&}2h+ znnf;QNQ89_+CNDQRL^QOWq-QtVF6C+vsa$Yt?Z=Ev@GdqqO8UoIAjmGqSzspfz_#M z{0x&e<@ridL{teFhk+kcR>UdO8^X z$qWMy1VhZyQ`O1$-^7~K0d39ra53+EiOwerA~Lkp^n2Dw$(AjUfbV^#oCnDCFo(50Znf&1#?z zQG_WeoN1&TBAw;0X*w@U*xH$aA~7*UfI=JE)1ZzAb1c)eV5voncT563#Ivk z%z@Hg%*$(H6;(uw|ab#wiH^$M`s9mvf zr-e{VU;zM0%9!5@fhJIPn1Y83EMch2-98_MwXTOB7oXLy!_cSJ7JsA-;RI00VT6-Xs3}v+L?8e{T&mG|`Cx zJAxE~L}0LqxvZQ+dStg1@|k~9KdBZRNO@&)>FVZQyPhodF;ZaC_0^4?a)TyStfkN> z)+L!vZa>K-K};r2i7Dx1)|YLvx#<*i65Lzjz#X=xVKW(00MOI@THdnUP#oR>EkG6m zL@kPec~z~BKg-h2bp^XB0$4(mo+_w35j07F2nrPK3tS74#Xy>AwVLcPM2Ctj767Kb z8l&pVJq4cqn*f?~M?N&b@G1nXO+Fvme^6v5vWN>o%#aK7A-YOy-^vUASfS#+W4;O{ zFvdpnM*$FNTJF{a^N5=|EUKe8twjIU)*&Cg$}<5Wg}rv+Eh2%n-scRMEdq2DAy}P8nG^;%V_6Aj8v?!LE8agSDW$ijpFsm2B*(WC z8L4+;w+D-)j<4D)cw>hM6ALP9S4C~kj@qMDy=c)NroadYvl0)YE+af2D134RUF>QD zp+|3z1T>IyYOD-QHKgZ^U?vnKNts0^h|QDqzWuU>$~(WLf`&R5=gW^hemB=So{D9zLCRN!7^Qbrfmqm zxvSu`lq;}7lBmy7CptIfY-wHU|AZWB8gwd;f2h+CnsNP4YD>9iR{<4Zrj1)~=1A#i zpDlP9B6G;01?nFMFITQ{ecTIgu=*cW(jIM%Xx5&q*`2Ti*A7FK%JYy`@k&eSj+QQ& z_=W>)K4dDCLU`e_6Ha}H2@_K7d>w61$Eb$i5=^t1S3C#%%F$8;1pLy?BY9@PWe^9T zyB+!fHT50~&@RAg8y=B+)LTZSfx#FtzmIGyp+#_?YE;kw>>|n(|-rq z?4~!)4JXZHr+LvZC@#4b+AJ$Tkb%=Zv4>F$vYNl8*2fvV^*GR_qJcX+VZQzznJ)g&iWO#0%Z#!bm%T( zx%c{9rI+454k$%#KYA6mE@#K0(V=z&YU7x&#}R%c$j^DD?kH%CKk(YIK;JL5(^Si=m|jsC zO0+d~NrCAi?r^%ivO^RNq=JcxSAyeVy*P3QhB$ShymrX}?DXE<6cbq1^((bz{dwH@ zszduT0==2fH((4UZf^&&P)lV^bdsO6_h#gzt@(9$yt6@}ucMgt3gL~-d*WKg6 zLr9GF_~UQWhU?C}O~1~(czN5S9_Y~UH{Xs%pL^%U=P!Hl?dLlBlg2{#{?vDlyJYlo z-(~y%nD((gdUMOtV#8O=a@H`A4Yup`Mh@DI57(UcJ^rGHEuiVTfEf0L}G=Wb}ymhH(>&K=4FtGffXj#BXYMMOG8te{}wSmZlkj`F4_*xyH z&N_1W%84|_(<_nEVd9Hiez<5-{`(CPL)_4b@SVF|Vxj|~=cQ%3YmT;$JYbz4qTfc^ zP39IMBFFaZ9QRlvbGaIsZR)4YUYR++ui*L~k9a0uU_mQ7@FNcMhB4J8SskB;PwYLt zcChM~Fww~GJZbqR%z*RiXa`gFY3|px4rri!om}w*hse_AwRQ~u_{qy$st~Yb(ecR1 zt||CoL6T8`w5bbEv(N_WmH0S&+uh1D2gWpSA)LOg(M#?6^BgNL;E(qA+B(Z8;}cd4 zYn7NA;{VaytYNh6-`7NIBN9`-?vQOi8ytoL#n3B!*vRJemk-F3#Vm##Ch2Ui5o6RP zE!Zv-oG`OHpo|0A$xZ97FSjx({opA!oscN?3Uj;~(VJ(Az^@U*#i=xc-&yfpMi;&-_>*_BXY0LWa{06$mzz*(>pOc_CWWXGLqdGz8qce>e+>0n7({a6>r0+5g}Lw zb%3Va1`~1pnlQc8*GNGk<)Ipj(vtw#A|mO%842W1!r`fRRMXi}6+-{M2pUbIrUYZH zMnZ|=;B<3U2(2@^vjFeVj&;pI$ITGr&n6fgjEQ~I1H_?eX?+nsc zLSdpakhplJXN!_{uGkbu!q|?8{yBn@LFXZ3N*-kN01q^toLU+w>()1z1bh-vb}LsS zSmE5A(bP1Z&ZK6Cm6kx=R2_o}WHSo|FGS?XByrTJqc1N3iMC-%@cH+3L}VkzUv{EM zI!*mF30_ah@BYag>tz`uKAuRZlhTT#bHibq*}Ga(DM>;Uf1|*p5B@zMpM86l+-vIm zSA@xtcA;Si8?3i9s{?wpZ2Xx9SJEv-o5Po_Lm0{za55#;t|>{QNRTt;9v=8S@{ z5pz|1cgWFobkasE2Vr+hW|9?wL4QJE2Nf*zMtH{7tzv%&B&9iFRFJ$30AhQ<(9`-D zc(C7#YYAl|5KAC@YkkEuoxg4i>j@tH)$TKngTvJHt>jagF+0lV$a#aK(Xy?CS5M7TjTK0C z(&S<7nc?VeXt`>O`#9goh;xGsb{^~2^k4q-*7ESJ`xv!bM<4Qp57Y_&@e4XD7|Y`g zZa$E)!=rmd_{5Jpq`fb*@ZrhJ`u8P5#u9%3eXJ#-d&Cy-V38r0*D2mDD=6|gK(%J}{luCG=PD|?|KC-0e0k1~`P8go?OH8tsU^KrL8dC}bsI%B zXB>(dAK@%vn|4`|bC>HV$AYb! zGy{#40{F>5w=_qB3BO=N!J^OL<&gkx0rf*PlABwCqGGPcIz;vbd6yBMgRIVcHCS$eku&~R049VL`5aEM)0P8O%^YZnKF6sf!kK8?^ zK6ac&9q7*&-&e5Cgtc&2%j(1VoXmYE?7lAbv+%SYI5cV$E?nK0wCg^ye1IS5uaIQ>EdrW^-zQVGQk%7)jtc{_ql`hs_BxX> z=I+q!$rf=Pir6%gs`^CizpGQa|7cbkN(?t10f=eUF38U>vnTAO*yaS?Ev&9rG>J|4 z?of|c68yByDxpF^UCJs7MjJg_|EWQ!#kJk_D^hW0t&1HfJG;p7XnuM+E@Bl6tHoYp z8%G1LlC-qgptJF>^}9kYj2kU9(A?oBoC!X8f;^gMH|AQ&5nEEWcFpS>^H6J9m47uY zd?E+v66RO!KT?`6ay-=OsO5%RUpAZf))7u6?UkcCRzmzPU2WYVev0_wK+U&7p?*Z0 zrk-G}_I;nWuP@v?B;{w{YF#j?<6ha#s(5l?VEtWFCupZoWI;H0&gn07z9_c*a~M<` zFKPyZoi*C-v8yEP{hiUIP{m%@tMn%OwTpe*Jcv(Vbcmr75xg&mVrzvCcHFy^pY z`j*7+Cxm>vV#*2lc!X2-5~F2|?^mdw#K4-r>kl~rc}l)?jCL3^0y)a*>U?_LO3f{~ z{{lxkn)m^NR)3aT4+2cr#oJ^GivMc6YSR;wt$V2;fAmpVYacXO_~=bv=V-G0=&&2H zZbS-OkuO;Y$l0mTZ8H-{sptSE=E+#m6ARqDtWn+YK0MqCgJls>A}__X8V#`7c9VaX zU<;g!j0^cN%j6ae_qj6m<#!78{l{Z^xmCFF4L<#NS0Nia@RE z%Alcu-826boARB+yrC77$%EfiMykUGM1lYVLsi1>`!P!nbsO8UZoQm(Re!7-XDw0> z_>W8rPM^1!&z zMRn4CpZlMfTO4~I(c~Z@d6G$K4t}D%3;|i+sTw1@`rwnc<1nS6`n)_b@))~^xd08O zWt;RIG_NOwX3qJ0cTti7qV@aKQ4p%&Fn-HY71U%8rb&3}%lC87X{>?-bV!ADAz8U+ z$wdjb6|_1c9H$$Dx}EhctE^+dar=%H1>)>8Ok4Shf%GDD06r|q)Y&+4%beN;tQo$D zK?!NFb3hy*6P zZW{)~@~X>*@g*}j2k9v*h$zib!no2Qu0-Esl7FeAz7=$x=45{spg;I9IhW>XT2MY` z2(i7zG0F|vqE=R)Z79X5(FXp(K%&)JwH0sh`T)EOs=+e7S7gq>iv(t@yL6P<+qrNn z8)w^4>m`Bzc>F&O@L|~F?o*s;4|}$cQh`=5+wfEwNy%yJ3XNI~` zXgT`^%Ib<>IH(UHZ&)=ua3#1j=+vo(bS9PDsvx%2M@$}twjdq?K8T`-b_=@;ifX2ptc+yh8e1@;*05!I zo@z&tJrmiyb-Ep6neH}UnWS@tlNED~aYvz74Jrk$!S`4~Y;mI0`kho};rM3>@7MC) z@~tJyeR&pN0ryJC*fqq5^8G7W9kCTUk22vpwcC!|W&*a6AMRv)u=0kbuRhjW7XP_? zCs_+=iymkPdcO76ef%I+f)5-{Fr^%Arz`-ifHd(B7P9M5=NKdE4BLKvHq7e#C$X|G z6kdGQ$Pz9}e3(pk{3d~+j${Ez11sbfH@P3UCAF}iNBA61mEA$R=n`d(@|ot2R#e&h zDt+p(d=B1`bpug9dZIn(FM?k4hucRLMSI_i^_cDvFpL24{2#i4TOhq2g=2s@9T8tv zH^tY9O`<=wNf5c^CHff2FySIR2p?3!*)sGlUc$5zV+4hlRHI5CR@kMAe*d;+bIo_s z4P6TV$?Tl5#RW^=%S&*&Qu~5LdIA;qogD#%3=#)N zXB8EM1b(~cIE5Q$^JG3jz$MTUbQc{=z6Cc{P%;}8w6Dqf#6M@~j4Jr)uvn&fq-)}k zATN>m?j8xSI!1j31%gD`N45XPf0ncPtny#^FA}iZ7qGK;Oihf_D32{~sgyj5vNzBV z#8zc{rsb;~u=)qoQ-aSeN6PZ!=j#v6#R&6^I-xUY=sU%aa!otCXj;CX#`$IQ=D*5e z#-RY0Y?@i?qjbWNek~c=`{*lQ6y)sWw|K=zHXa`;cgN|6>;vgfVMOgV7#~lmY~wY9 z?YvoT_AyV2LfxxL5KCM& zg9O3KZ5=(-6xBXty%MlV41HCTY$L&wX&8Ag8e)Dt$Yk9u4Hz8YPiVk;=u)QSs#?-F z*{ADKvhYLkaV8+~LJ#a20NlsdN$OKfi9ihbrz@GJ_v*@0Nd6Z64d_r)4+;H}j z&owdJ(?22Mab5%J+kvs;z)R9YV~SfbCXlKMWS%>}G}&R%CiTW_ElP`-onN+HEZTMJ z{$ojVOu*qhCP?U#E=#k5a zZz{BpMmJ8}I<?NU3NjW`i(RT59#TwiwxIb?-8pSby4MhxEHqpCvI8AO?z| zLMZSb$8@DMw4es@7O4Jqk`KRAPS)jq-Td-D`TZ`AiHBF`=-bq+)Q*)My*&CS8BB zVj$}?)9#0|Oum>KaqThnV+$AaGc&e4?BYL-z4{UfG zrT7_4_vuutW^hIrrQk*-T7E=a#KpB%z^+{FIpmcjn=t2#IU8ak$Ih;V)=)3#D`QwU zyZAM2{IFrnXfNJCgS235T@!5uYca{-tV4F`tH!=HoG1@S~xk>!=;ztS{lm0fiq)pVKuIFx=pM z;cyUz_AastLn(hC`R(Dx$1~5j1BVA~m6}2~_|&;PU5@ljVy_VD%VR0t}I3ahQGVI3xz zMV#@)=!>0DiBhqNTUuhnTF*6meYM9B8b)Zjt;lm_=O9HgIj5$ifC-m5mXammU|z9m zaZ*_E$}5`YR$e$U<@<+ZibrzHgPeSr7lsv@2Gity#|bopFFyz`Sf!&z>p?k-M5P~D zhM%cPL9)IPCVI9}1LFN|>dN3dVnbc`SR|5q_U?FhC%4ydw8>K}m1a50`nD4zxR8Ltd6AQ;vAN#1eGN)D^Ng>* zofZ_F0Uf328VmOlPtxc;ySiEfQO29*CwjY1jfUuQli<>hnx>XMZwIT%k!XG}@pYA^ zyeq|QZFy`#iH8)d;Aaj$xkHfQlWyd&eo7u*9v~2YN*TUlv_2#>XF9Hylp;(nP)Vg% ziKCT{iB2kU&Vn_hR}*rj6F6#cmkYIz^ye`N@;rEsxOs9qG~C> z5=NHpdDpU-bmKWe(&=MsoNI~BS`$*2Tt9z?b$(+=HSLxgaD9FfbY~`gztA|B499A( zl1-2-ELvtSd(O^nl`ozZFC^(gE1I0^^RL+5UfMGrVSy&iaJB_D9=@G8p;YFZ8LfZp zF9~arm3mcEF6%6#ovaF^CnVi;KRrNQlP;uR9{S>HGIP@3kOQ7xfhWy6rK)denO#rU z_Qt#ubCGS|b#)}+3D5Qe^1zSFu!JhYN zYpxMxYP3=CLz19bZr)!b+BgbmCsp@Rg24Gfv(`v(rC?^`X2xtImQcUO+xAYUlWuT* z!_C2a>-XJL@2SX#HIeC@4}XV1V`-x=G3@R=I#b!28(yCy?cfOMte@qzs!LX{!u|=6 z!}*~X%7zu}!!q#I!mjrq@6cFtk6JohMaa)gFQc`Z*`$(G9!m$$>a7^Ab-uKw7% z@mbJZH}+~pJM$PbUzPaJf7(m?SlISvyZdfD?3yDC5ud@Oo=`A}@wJ?d`V&d+{E%|_ zFuBAHo4mqUl*@av*QW{0T>IAa4?+!fOKJzY0{!YhB7h*V1t*w{ZP*M`+vU>;jzxl} zjb1)kHW_6H`a_cM=PW!J2i5-W$Ex@U@*;uPD)0B|%4&Ix)b>NU-(;fgNAY1r#mASI zy^5)Mtz24AtMr-ZmuD^7Wr=w6n@XR8ryGpzzC*z?^wdVpzKdt^nZ{?H=4VgQ{1y0Y zAV5&!kY<^bIakiiA+?rxn^s+wq(ih4JkQmcdHmOnisRTo?oSZX zucm(WbNCnV^I!cEf5mS8jORN|q{PIY!Z5Tu@CWaQk%itA+j9xwMMoZNaW#C-&JX=B zqg>v0D7I6ioeK%gFba6LH)qjGPOxFiVT+QQPS#2YyeeOF%xACLc8qa|r*b?byOwas z@g@YC@Ef4?p<=EsIw!NyA%hAk;rXS2f_FwGqNImr3(@T91tC+0jq-(|f8TlY!h3|v zmB!*?_=46jyBa)s*p)98`)z~m{z@G*M-D>)%G8fl-VX;Mo{baUptj{2I6BU%+vr0* z>0)sDPH^1k(W*yHY3RuenBVj~UVem#Vm2cBV`#&9dHCkhs;g#)iOq4eNC#+{ZvW7P z4e!9^=Lo)eCbzWZ)>~7i}DaEvVy?eF**~&5AyDV~>s0UuLpBfv>WS;DU zslcaWIPHntlWcDvGJZUKtnYDtQd_z$*{=yPC$3KS5{X*W;e)A>>|VhlL+F06AIxLr z(gK<9^q*l(wMR0m+108Mcc{3#FS8SBTK^sho9Dfn%i7?HE9M1d@d7do@zkX6e1gEP zMSy{lZL=}jcN5Fx#AZ@#Q^OT* zkbFWlR5gwooWMe$Ia-fJX_d6sixpe*Wo8a?9#v~vw=mJ&5)rWrpO9Vc!F}OlWSwso zOctiL6Z^pCN4zgF%$9sTa4jjup!qI*!eu)9A4t&3Tvq*fhCRaezUS|Oh zV;2QZR43`#tY9S3ompdQBH?JD7fdM)g|;fKb^bPPuI2&*R|i2@ct67owuiJ+sC9mBz8e!+1@gO zuh{7}oBC1H-M;>(QP*dM?P*`90kyYq#c-Jd0=eVHm?kgy4j44 z{XyINSHYG_sxh-Yjmb>Q+7z6!JY~-|dueEk_huIGRbv`|^5&Q>-~9S057%1*(C-V{ zWAcM(CS@0^LO$K!UT!Znd-Dg1JoWy-N=Z|4w!m0zz}3WneO=;}KSRMP4}E$1pYdeC z{DgDjN1Mo%fPZ%DJ0}Nv4&_UY*62C5~0AmZ6o1$!epgN@Yv2?LsB5 zg$GJ#xY206je47QCa(0|Vet@S7`->xB#ga4+=1HAFlGF7;)~f``F}s-t zX}j>{9L`<;iqI36v{YM6msyUv8)zu&dgcjtNUlU&2Y@G=7&M^#jq${Jt$nP|O%&22 zf0kTt3UlHY1;PqJUdF{qb2wBx1a3_jAzQa@6>^KM5gvW4-2qzd*eE+6?Gp4fQ>K&g zdEtSb&w4Z+81T{z2;b4Xxq~U<0W9k@!H!WLkOx((u=D@bfQy&iv4%IxHBI#~sC)8J z_`(-{@g18km{|t{H!K~z@`g}{U-81>MIO+5>E63M1#yG9LEYeflypLihL>*SN*@W& ztIIvO7ARwl*;f>$Tph1lQ_-^zLJ$_Tl$Or@#7EJ@AEuGFSJFxTM&DTDo4WUZOF~&S zKaMqRQIK|g_kx5%C&tF!ifI9H{`a5SMfhwp=t|LY6=)?P_Wd>0QGZYXfXaBHeM)j# z@4#T^z+k+!jj;;VXEN>J#B%G9URg8p(?-*d{!#++(*Ifgreb^As3q(-#oHxs&yYH{ zg9iwOf7V^?+IO{UJ!kDj?s~0q{E;Y8_^)4xy?k`Tub|XTu7Kq%r&U~uRaK6O1OMhQ z3zbp3v{e;?u`q420Tourk3^-zk+5Vmn(P%>Obzm)kg2ha$=I+3ua-5XyF84;wQ&`p z8m(jepxnX=2ZTehm|$io)XlMR2k`9sXFP&>9X{~UI0vuFjPJ90&ihpVX%)xnZyVol zrL6gE{rvNK5-OsQABu{GBN6dvDA6f0!x{ODI6)hM17xOQ{jw%sSD=)zw=`q=U7x~s zp&uHzeINO5>$V|A5DL%m+P>A+3u2-JSX_)Et*xEok5!gCt%?#G=S4kpkDo_ub1F+^ z8(#@^I0O0Ry#4)-Upg_$`q%Ue#%&13us}DyHsbHH6mo?<)a$#gS4lZx$3&+%LXK>B z*7_L#4Zgz;Jjak@qJxffsVZu`ze5tV43xkd=RREGXhsJu0j2PINp3z$mnpEtS);KC zYuFa6L8m5UzQO-EUOh@mB#Ej7`c3>9yRbU6m#% zV>jbf(_0l6^U7?@S7Z&#+@c+ruAmQ1}iPyN+UCR<6YD(377P=sPD2`YH6B$Lj z`v^r7->PKeuVz=4+Qb~c&SlQ1SAbirZ`5xyV+QM_M?+%bJQUpQtBE!GlPsz99Rl); z4s2ypevVYy9U@-syBK%2%D-|7pqWjX+}b~gxBpV{{Wtf z+8SK9X+&~TJ|t`Zqx>;=vizu|J?+KVoxKC%_4mon2jCZq^S*ff+BGp7?)&AB35isR|54v)+_!;PAo1G*{y;br94I^hf`*CrW< z$w>-~4IkO5nq>svMMx|5&7&CC_zds42T9dkYiKKKb%Y5B?nIQP6L^aLBeiD-`CSwh z?zik}FkwEEMhZ_+=|&$5>AOTDWGx3bvm=Ef5Z(}rkKAcowg?lc>8uJI>>tpi=j8d3*Q^3~o9R{}w--1b!}f;_ewm8g{*9+wGk0 za6;>&jrrQEr_VHTeg+pp-Y=jT)D>H+;TNWJyNk4nx5WOvtUI9D+_nC z{t^Q1Xa(9;1Z-5xcwDj`d`uJo7Z%*n@YUrpZ)Q9me-!Sn*`~EbMC3wEzqa1>xCSBy zXW|c*$Nb4S=L%3V6X?hfP@utjl99I30fpRavCt?5?7zx+Y(3lswx1xCXkwA$Fe5 zKwp$hp3&?eiz`$#I6HxhvNj1`gr{$q$!cD*Wb)zN--8;rzNH~Hk<%VoC78i)*Z4EjXBKK8Ls{rV7AwF}&eQ5{vkUV7+bP(1Xghw_)r zQ7+Aqx+==4+ZRx`S3u=bq!g6TCf#4C`Z!G7q;-}nkwRx{I$=v1d%xYL_XGag9mg(! zeJUGYyMFWkyCw(b=&oM72M*P3@zYf;J&TL|PUvP~1UaYIJb2L?fA22d^CsAbSMG?p z*LD6gh3BYt;GB+Nw&3N|eHsT}XecYu?orWSB4VpydFxzVgmZ}ki0-q|3ow}ZNaTDB zW&!Zui&<8w1V3@k!%JQl>sECfvKYDW7NT@2xVzwcn{EFul znSr-ONRQ@#I`m~Fxu`r6&8no+TJ8}#`d)XzkK#RmWcIl9Lb@$&BuyoUd5!m)E7bO~ zH-1DvQsRF{21_OQhqY_Aoe8nY{VQn18H9Oq=*2a7@114nHG5V%A29nR?=|!@tVeJ2 zE!_ryd0miyVyhuon<7txLlKb>QbJqYH8_?rpk?$R31S#z19agZuh6&l1UuYgy?Ep4 zHIi9-;Y}8Lg|bkv1x@MeBTwPaHpW)^?rz532Y7=DTip<$)82ho<2Pn|f(mQxbV9qe zTi!hhm=fB-FMGY1zDqCSWLJWw9{jp#33YBA#~I?xjKz3E?m#0;56;}uURyu3dZ#sX zpm-C4F!gPBb%?$&w67v@A=F<34(ltjc=*pKK=K77o;bXDr)TQC0o#Z_DSFUIH)i@9 zOT*zo2g^`lVV7BMOGz~uqP;4YyEBm5>|Cf?Na`z#P+S1qgFs?a^MrZrHG#E?ukhx! z9BrC=(;d@-l9@+E^mUQl-V%Nsk6A9Ey@aBeAZTAobNQkO8Q)>I=i(2^SX!%vGlQWX zj#c6RxR5P{s*aR<+-6Q8CUnrijWnwC%*XN7uUE%I;hD3}weOtcB6=iM z0%DWm<5k_u!tdHSLV<^&4p2wahYZ^d%JIJLnnR2oj)cP36QHz}-i@p3cxcxvGOC6> z-iDYzT*3tw(rAllv>^bPuHx?Z{a~aYC!tTH#0CLz#>ncrxo#i0zMamu7%b|N#W?I@ z6lyURw-`9-kdAWvlYv(ck9J-((jhL)Y!s1z#JCSuQX%Nh)tHfve^XaMLt_HwKvzXy zv5|@+{cp1Cv2-;=N$Yitj2`mRx%>k)pp(ygL+pCFO+JMfZyIwg9egm; zoBwuHG<*4{WtwynN-FNsYPa^TE{3XqUX3M+vj|WB|X$OkM`#6`)wslF!dBeXx(3r0(8> z_w0k7SGTCi|Au9?1I@VhNI6|04>f%zl7}onYTXg@lIsOT@?uB!5dpGKkCqoRz_x%g z3#ry*BG<|+R*=m(;pYeQ80=RJ)c)SoNIHgWY@dmf;i*gy+ho3Wx*w;G4PrJHbwj;h zprs968!(t=OldoA5weI*6(so-;%fw6TJd1zM_*EKMjX&eo#a~`G$zmtl%iX3i!s?u zFnubL5NEL4`dm5dOGkaKk?XA6cq;Z3gzrSj`A|Hn?SR|LaC)eM@OV-ap)Nixw6W<a?E-MF6&ma1IRoDFu?XN9IF79iu*y&x;3lxB&Fjep<{&u zgpkB9~1e zFd6@FzFpzleozh)bU3sNn&0Nkd3wYBGa!`OBj<+Q1 z96>EBLd9;w8?-!>X`qx}aoARpWrlDgs=+Y<6x0ITvhPhiexiRtM)wpmjTdMv_PlSxqP zu{49K?gq|6BwdC94nexlm-*o!B*09To5Z#Lgz<1NW|+?+l0=B!IF`p?-F%uU;M@H+ zBd~@b$BCV*8XKs4y)O-Ms8r;jn8uKJ8LEuK$;06ChX+&0VIF4F@e|)KC$wJ+!j|D* z^132>8_U+fPLIsG=sQ%Xd_a)ppg4!KevN~j4@)O3784|ddmpp|waj)Rm$M3|_kwHX z%&bBD)e4sSp-F08Na`{|Q}69r8r<(ckGfuHK%8M1y|SJ09!iV?NPKHzYGo;g4d&Ds zP5c@++yMHMU8|qLXFCa>AV;=lb(GAk!3S~(Og1p}P%QXUgc2X!DHUqLGYCm?UmiuS ztpOb{r`BlX)jHrbsO}bRT7Dmrp}Pe2k6{!L;w8^&&h8+S-s|+sq{2A1y;i$Z$%F|L zH26th=*jjksTlNxs}`$_N=27b(khFODd_~pM6M;ytK_3~O$L-Ixx~UwaTFh9!1r&c zEafjoctB7q<<#ud-{dH^b`s8~$=VPpR}x7#?R*zuXK?Dh`Q)S?rOl$bAa1P%7S_3; z8k$1jE9%9v!J!{O-V%Qf_goAm=w^OMA|7SZ8fX+24#%Zw?T$di3MKt=Alrv!yB(`8 zSxnzAj9s|FL4%B<&U!ZyPx)msT*b6q1FaqfG~S_Fb72;Y!Z{C z_}_U+cT6oH=P<6+wdZEp@YA$MW}U)v)E2WzW|>uR-n$KV%FoR371K0J{WZucIVpkd z2Slk*Yr%{T@-qa1r998G+?L{b4*br$uVw>ywDbs^8m_X;iGv1ZQ$1!u4Qv+I`QQdn z1-5-^fQb!XHm$vnA!Rk@bL>v9midl8wf^f*KNZ+k@n`O&AY3}fKJV4uHGR6Ld(ng7 zAak$o>Czqjuc{qd&{2t?JB>->OUuoWzF}fry0dRe!Il6s2meA_J6C8WDH#BA!Sqtr|Yo@0@-;-lx3su==*`sWA@T zaa)*6hCismm2m$bgI*hw*Lsq+`ZKX(8yZTh;^!WTv2~rMB|#4{r98BIel&GjaOz5k z&2r4r2kEnjrypwuk6+q(^S4u^m5t}6vXPbBQ!gNRTT<~j;cj16-;CuItlGJ;t%>wQ ziz6xh4-&k@2@@lym2k3W;Wl&Uu>%?Emn)b@E=+*aZ#_MV*7m#~V;0jbmGf_KgaZmu zP*4`j^OLQ;bg#j7(srX=(|2wtlD-WS$<#1o-|NX!haTG++$?Se|BTR^kXsJ*|heN>v@CEmY z?bqZ5p2r<+w=cduTS2vpgMyEen*b_ifFNqNc!2z1lOnS9g3Lot z_GJ19YtU_X*2CKW80xL1e#@$ZVOE_H3exzbH*oL!2h`2xX5;pXuYbRUm7|@-y*3ox z-{R+8uYFv(=4-UT6$PUr7sI+1`?zqVSIykaNY(4Xv=(ZUR$R1Rya2$Z&#{@!bj|Fq z9{+f2$fB}A#}#L`SU$F$3{>K(d3x_B$9x|JJ}^6x7Y(zen6)PIOxy!Z@f6pjlW^O6 zUM&UH)JG}cd{Z5BG9>P7$or@Ck2L=aF4TDbZ6HpWq(P+mvjQk-2ySFM)ZxjO$ulrJ z+m@s7w0XOHo=ZHBf9!V`PkZjG(>PbOAKp^9Nxs=J$*X~82qxkMA2YMUQ{1$5zjn+R z(^jpx!4+bIb~cK#j0`R9CFI{(G?E~a$|}Q# z)fDIoMB&wcJXjF!GooMZr1hD@HA4Hyqnmmwt0?=CbJZkYo=Em`LN>e@t3(n@RA}Dy z)1J5P#kQ_v(Zd*kGr7l)I045!6#D}Yu^d#UYOhL^m>4IfCXXi_CyyeDfX1NXo3(j1X6a=NX(2r5{Gajfklk`5>Eqc#ZgGq-;XDxs@yqc``nqHDs})?Bnk3xuO{hAZ;0^{Dc_ayz3Gr-ud4r};>D5BO|p$( z?W;Ynm$yl^sg?&bY>9!F~8ioHy zXL%K}-Xa{?YzeErJk5A8`g+>?u7&9r+T2GOPp}2aEmxySQuQ6bR7bJtvu}c1H!!mC zoduiU;@jD;`tnoK!ShAGs)Z+PC$xFjrE48cb!k_Ys(NxM9)Dz;o3?R$XTyPbzo=@y z1^aLs)ev`ugc|}L9IW49zz>zddPfyd-n7t%yuuy+u%vK&*h(mt&{A*s?>p$9JagtZ zb3Qyn?0g+OPv|@nz(?sb#I_`BBy>}Ef*PS7hpx%CWUcsCth%qEUf*fztZ%SqVey8R zjur*{eAoVu1&gDAhp$?fA?tlJ$9`JRSQXIt?;q?ArO2GR`0>}*$)~N(gXgx~W)FwY z#zZLm$Ni3q;uIz$9y;MSDpJ>MOw5~9x45Qy#yoCLsE949w(6Q03l5OP61U?Xw{z7HYe*_hq7P>s-Fs1br5r1Od$``|NR zWA)tv(kiD$4!^*8uA4*}KZirjn?0J>M=A*8+?PwQZ9*9?fZLIVhjk-e`}TLOr>@;h zTU%nPDi+#Dij$vp&$S+F>#px!b=Eq%XAtqT-EH5~zqfX`BGQY0u-w8ItjVjAt&VBb z5g^51hw_aTsgsnEaEvmnj{10FUxTNPQifwAJ*tlT1ftR6)hL%xh<;*_x(b1KiRu~* z(N7AY=6`+_U6LhpW5wP@-1Qwu=@?jvcC7JQ-!jIHRWLu4%!{hyk^ep@05GfTSo&Q~rwiUjbglY7)F%d%TS(WCiaIUk z`k$`x7dXHZE7oE&OEUTKo`mgKcrJRu7dt4kuikL**GUG8&kTRT=EmQ>#-kt2eaUw5 z;UVXdE)gM76JeI~d}XIu5{ZKES_fVv`@IYe7;LcPnQT9qMMCy@)sZ>93eIkCTp4mrIk@&JKIx*2F?1#= ztJ;}qu7J3}8M~d-esjgz3a9t^NuC;B4VU`$Q+?i^gJ~WVBB>%UdW2v<+rHkegs;BN zrrcf?Y%`K`!ufL{dXNyS(g^lP!Ii%EYxyWmvJk2S7o?_u3nG(K0*xjmfKuRsl+-3@ zQ%b0=!btWZl>86*#h!ga^aBiV0HNx?m+&5-sTV>6<>Z}6mE_b43p+0-W*={-Ac}%{( z?etWftSEOv7}@cLj367oQFBmxCN1V%?qe8Ou4y|D(0uywdC4CBqvdF z&?&JOBBl*UrkQ8(?0O|1K{I1$$f0#tach;tnKVcOw2s1Gf&VCNB4SVNC(WB*h%Hww zOa1rokhk{~dl2hZR~)`Wq=?;iERkj#ObEtQ<@c$eXf{ci!&PYwTia=-P*7iYVuvPr~j zZ0_p5A<`vVb>9Nats$_sCvKT4b^S)qtKfA;tyKy#D za5Nnr#k+c>NRhkKa?sPhmk<0&EdIcW>Rk6IjD^xC0BwY@oSp;IDcRwgrOBa;B0L$5 z6BV+AQcqM=*o1(VP^Pg1hB51^pzEEf%h@?|4c3wW!)Ry0nG>s^rxVWvzD%vU2AZy{ z8J1s;UQTWJ3DkYqw`H@2O~phcGbuTt`3n@G3^Ym%DJrX^e1a{Q3G4NehUNJ!Xvb*RTd7bOV|fSCDoSH^7**YPQ5BjjlCp+bQV|)ga$?E|4jVQ4 zzjE?iKSyr0e~zI`$5`PCP68E|kCwB2ComqBzI8e}q~*p<25}~6ZlafK)8Hf6bp8X$ z9CjLLe4`Tk^>x3WXhcd{>p%%ph)%tr+V+!(81IfUv|KM{KT{%6i2SR-^S(71hKd=u zt0!!}=ird__i@A#BJWL-H|S|y&B+jPck|uHf8sgz7Y#4p2Jrdc>R^#BOpN1cYw7Y2 z3k13dMS-_*Kw9&El>XREyo|ogT}N%pU&x5Hkb?jZaIDmj#c-p{mSMaUf2iiD;r+gy zBWk7=25U{QcJaNegdj7i(DOX!*GmZ1m*28O$cnE|o6jHL4Ux;@C;pPmqg!kCzTz5){JxFfpp*sd7MWM6lzA<7S)d5BXMPmFkgQjj zc(t|n!N3P2aM<#ya#k#0QtX(SvAlNfyv0nil1|9PzkgA-@eHNmo(B2ai4!m6ZHoMYz4$@;OqHld|;~;33ZW?Vw~cSx%C=%Dvfe zx9EqOc^KD60>OO7vUvsc1N3&T)4`~ZquIhHVy8QX6Qzdwx5~3VG zW#!LH5mlC0g&e24oE3njDXgNpFJxFG^xYAn_2W)KAElD#db3I*>kFV#NHj!|o+=Jz zP>P)&TkyUCU%xbq4I&BqW7q;}d;c6#!HM7@v%+&n%V6AKJ z`Zgb*zoP})A>QodZd*W@)l<1pjAWHeFJW2G%UDpjkstOqMIwM$4U72v4x4XrMDWy|FZDL{4^@SwJoj7>25Izij?W>lAw;3^g|Froj7oBXmf0lz6LO~XguK)i zt+0>VW^~?FcIvhNc^1Atgl{i@=7|4_(hXcn8Q6#nEva*$i0D5E^RmvmKqeMZhL$5t zMak}_=9Bt5|BGG;Z&=Y$M@?qTWwr;(0-1Z?UsH)5=Wu-sTb3!(Gb(uQS@6kbgMPjDM z`WLi0Im4e`Ct(OpKKG=A@%rb`m{{1v+J8iyChL$}OzpftOgJl<6pw_$Q`qh~P({ij z=M}RMW8DjX_)l77YH(IHZr-~uXDGF?fO#t~KEj+Ax*rrvw~J>B}T>TrE6D<_%B6xdOl5q5{hUvD*6dkb(A#{i4qB0zDVbusC==) ze!LUD>K7cF5dYFy9~|{xzRQpV^abV7xCJC;ym$`E56rSb46M> zPDbx*EKx>HJqJ zdVhEX=&_hKIQdB7utVP*6VRN_o+S=^~kyh(PzcKm?d9z;H2vk4`{y)-zs)> zoZNh#KlA0JMI}gCNz0dy(QtSTycQ}wk%c&j$OKLuAtWfw5k{ButI`*h+7iV~J{}+U zu`C^l9x46oDxA(}xp(>PzT1Z1kDmzooU6ADpM)KFQP1GM9CmEIEDWXXaPFO z)sv!k;92{?U4J4qeBAclJV*~tQ=4)^`4nM-L7WoL+4q;WY|M5DDOM~#cNs$=$k3*2+2VVJa zXHs8!@jFbMfc;=vL$J2sRO4>X-6s1|h^ls0k>hePa-qczDvIKI7_HQId(KiAtsa;w zLS;=wE)=hDgwLw=_Do(JdCmL7p6lMwF7 zvvhGlI?zrvsw;{iI*Ubfi;x{s1$(-kU0o7&Kkn(|IH$vM-t^wmd}k5y;Yy7(z5V`Y za?2fs`mybZ)~E7km!we=p%pv-f;;N$i}N^#&6O9mzh=dtkcaN!=jrx4W6ro-74Q|# z%BshT2Ly}{+%s1{Tc{)dlDfUAyL$7P5c_Be9Y~j~>peDfmAE+d)0cDXwMPshc*<$=E$in}qteyhB2%a-=Ty+LxF_<63fSnzam225&7 z1P!!?xZ!=0^BSRjg#!e`-sPSaqeJ-`7+BoUkY=TKls!De(a}kD*vF*`Tr2mHi5+}N z0N3kk2bP5x;>^}cRA?UHfq1nRi?}ujwE=oY|o_u``e^Q~jvMbWtyaSX)FYSNP*+=Usv>`{L;{Gsm@bM-wZyj6Yt<~|_Ph7lJ-s#TPGzAa@ze`o zM8U_y+eYSQ^xVVaIG-)mx}!F?OBWv`Hf7)W^Sh?GN`LTp~(V60E&fRihswXC9r);e_>7MZLcn@z93e5QT@%Z;AM(~BEiSOZ4#kYmR{}mTy34IWXyP6Tr;#W|S zngSDHHh{dO*Qm-IG)C2?V{Bz4Xro00N3$9)eWQ}x|5@~w-|?$(Iyhi0lKT28=)u1k z+}G7q90^xCAlOg)A~3-#Z;xYG1@ize|9o>4oEZ*-L*__|tC49iSA(VfBF{8OQ+#zV ze(WwXVltt_pR{>+%)5;YBT(eCh4^K(?M&t#8v0U49zVFfq&=lJNMdv#msf}AV%GBR z`e0n(1tlRl`@vp~W}##Lb+$ZA-a%7{xvU5jiAJsuz9g)%O0cL%rPO83{HtLKl`xxG zhJI7wHYdN@CuY+zLiRIPMe_XuZ<8{Py+Py4&9*V{v@X^pz_NZVZ;*G z6I$!zykh|+J3vPMqnaEiqN3&UCQIh;7?wzFlgXrzOi?_ydfjv+uNWG$Iza{u3A`|X zdxxP=sJLNUd5RJ@pkyfwr&ll#ONr*h>g%{FTa)m4tU-2?Mz$>_sBpy*29xi=1u1U1 zoauk4^OSa$3if;<$#i`3sk4dMw?dQeI%se&dDmF`sOI6DrV!ZO&l^TBbx0NQQ5pmO zW)YVx&OO)#*3Wh*xHM>q7B7+d@EJ115h?9SWY?*$D1iOq=38RH$bbH<8$w17i)$AY z@deFXY}LXF&+T+7-y%*D;*<}!CS?B{TAFs3ggRT3sKB4i=3;R`gvsDL!(_~Wvsjj4 zIK6ziHlj*j&rKS>C_G%; z)nJweOZ&Jt2Jxb(d-3zekS>)9?f9z2!(+}LNCzE=>qZ;C0@%Z3?4{B6G73)VK>6iD z?85GFz{R(arPc)6g`gjmm`Ss%VK4MfQ+s6Cf=v;untUF%qKVm4&jV9;(=<{Z zD{79$qF-7q3HIS~0L5XJp{K|w%E#6$s`PvfOA}h8b%ZLe-e$=8R^95oUp*B@LffRX30k5iMDZ%+%n(6NW;*?R zv9`jOR7v$bzu_flaghf{uxKF>Mpt~k5Pu8TNSeW+1Vk%3^~J%YjDY2Y$=_}!61P5u z5d6(B{_8JUaTp7^DAEaKg$$}1nU_PHeAJFSx9Ng8``WRxKj&=OWonqD>&*Q*9vZ%94flV~(-)5ahQztVB zJf*EqdGsE2FGeTSQ!#ssPE3_ro|$Khryfq+Q$pKJy32i4KeFb9{O=3?gj~LJh5eQQ zA*7cZqP|FCILTr8H5#jV1=Nei7bj4YpKDJ;<)F)cqK=F@qT=Q^h3i%}_$ zeQSED=|STz77zUN!0dzbt^wL#OGZn8^CiaagfOvd8lN0?06$zU!L0{9UQ zOe!Kqve^n3VUZldjqMS(iN$R~6f9y@nU|Q0Xw8U?__C!3&m075%aD5|&-DPw8OU4J z!rs!?jC+ATeNK*KFW58zw2FotYHopfqiPNr_apT&niIU-C!}&%PU)) zQAy(k1g&dwMAM|a9ItORQI6k>$kqDURwwcu99)&=q~_`#90!kNFK}V z_eARiw3kdDZ5?e9zQmwMOy4utua@8(TfL#LYBE-nYE zR@lKN4^PTZGqqZ2xeOqobNOE-~r>4Yc#6rR{s8$p=b=Yyq73b0&g7$$d zLAK~v39XqGgOu?y8UMTjb7RFA;Qzk|FXKO)%VrWR1Ei$$1$Qx z>9ZXYZaSn+u1p!Z&z&Wa18GkBnx3=#T%~Z>DgXW-wbeDHDl5fnz07qZ#%rH|bNXhS za%7s+Ad6s6dUARHZMd7(V;2PB2Jm@mE=SGdtL#0GV@%6^fm2;-A6oZ?GhTt?= zagEnIuuBW=N)L=`VDlDgMh}$Q!B+OCrUn+C>CiZ;XPuG#Di7a)t8V_xdZFwPw486e zt@X`u_CdQ7owI2T8_QU%F@7!e>*ZElvi* z*d^AII|KwLbGK}63%v^CK%!;z zsuo?Wc5*p5+cq~~B?#%uj8Cbew;U(InOI6${y+Ft1qwFrQaLaHorVC&q8qM|$+))1 zU)UJr(@#2~EMBN;A}d0RCGmRs>byM33SCBr$f%95lompTQV`e%@<({2`(+@7%ZIpW z{CtGxFJD&C8FsqH4faO@j6R*u%jAi6oZ-3F>OHX@EQm;zPHv;)k0-|C4PCr=R6Z-2 zkW(3>XWNLt{G{rv73mEk09WSL!NM%6(TnOE3;R#k*$B2xIR z4BUz8AneKf6(tI((v$f`an+g99SMzYJ{oFmdSyXTLUj%HE|3pMa$x_UPj`EW5ZlbNhpO6p5;C9RsT z0?(Tp4&(bVWj`MOdXLTi|Kd2jJRjd?a3ypQ&CRap5;0`R@0ato96-&@Q1+7n5a0_QtwI8&~q=F~LmoVtXFcUF^N?~3&2eL$gv z@syhY`sCYNh<6d`T}dyWLrBO_HI>r4{TF)hS-ypQ7UvO52)+q&vRJYlZgL<&xFT)c~+DfFZqIpkk|Le06s)Mi}Q*l1n&eHS>P^xZ!<9}Um+0X zyNU4Ta~ke*?o`;q>3Bav(rvbA8^kjV6* zKteHvR7YY!QY{oB2~dDxW)+81H6sB4i5cLeJu^uQl%7*4J}52yK%qFtExQ_y1dmpm zj_K!6_XmwTbGi%AiCD^thu5cg2D?_lp#79F2!$w`w20?r`R6Pay#$V=vo(}wsC*L| zP5W+RmITKm9QZ=Rkb1u6-6vyh+CqcaxJ8ulxysYGTWqYZP{0bKPJ{v_(O-)vZ^ogP zBT;kE@Z`hYuub=k3;oOcQ2v9yc#RPe9fWeJGak^lAvV7n?@hnRHt58G1bO zpQ~3GDuKk9-fm>keVeYz#1)+KflyF2!3ju~@$xj~Da!zC#fG9>1BOnL z!BB7r!9>0BcJz(iFy8T*~%#Zsv7C740CbNFo#687SbwO zt|l~PBfi+{5&u2ia&^=lKSwP69%1h0z*yABJkHzierIs@%nzm)vT*c zi`~B@aZBpv#KKYgfpt~)@+*DC0j5^wGF@&xMGYa8Z2tKOU=94;pnISUoJI|k$x$k$ zflRJL-2Xy;8ccC<&*n2WGXEOYJrGeJlphcJcX8y{Ty-zs#lEMZZ{~vbv!!t(AL@Xi zVw>J$&a&$cCXtWgA&w?-0>Xn z-*G$RQ*tC4R=GTD`?8>m{^q+qJl^4VN9gop@AmR|hu$5g#RDJn_#Xqn$9&$$h;{#; zOU%sn;}Xqwvu-OHS0|CzDBd^jrlyapJHMQCQ6F$No<5w)@>VZncKGIl7i&_ERQpA5x*_BmOH6mN|`ATF+1fgpv(Y zf8;CUBiRNu;-{(_cdKMg&AD3p+L0RJ8gqpkF<2FLHB(l=%nm3sYlWV>0%gu|Zy>M8 z(72|PM~jl};VIH6VrEs>zIg*B<3*&A9QC6#TVejb;(-$M5}&2^4P!;;fy>hf>o#O8 z^qM1KRi<`MM80@o)$ly~q&-R8g=UNU@ZRtzh}Bg=yUyBl%XQ z7v`OZ@O#;mSq^LG!?0&}&11%=AZ}WHFUoO%w0mZThdk>qOe4x&1e^3nH2sGS3F{)- zak{yC>gE<9Y>7W%VizmP@7s|8^T}Hx#N)g(c8TSuq-&Q&su2IJiq}~@9>UkTXw@5s z-HEjXaq+LuX?iPvFYTCi0}%ftTO}aqB`v6Y-dOb6B!|5HIbLJtoXNsig6JhUDjVN44jF}p;ydtML zP7#}x4d8O3@Li`{u3mP>%@Io{AuxZDoapyJxPypck}zcjui~j3kDkF=(iud=zs9s5 z)mx!TtL3X3ihZT7_&Hn-9-(|ku6X4rRO#iYNO=|1{aphH~$8nZnHw)MLhB8G)+ zXiT^;+~p31DHb5_kD%_bsYv}5sKkTWQx_ScWAnlTN>#S&iJI$;Y9>Y`!Z5)2_I9}<)#WAI}lX9LH6sEmQ1zmP3d)Vo5*ZC1~RS5 zJGLFN9YH%}O9ol}q3yRxmPg=iPs_KVFWClJOJqBPcFK0z%vO}hNO5Ro@#7KEQQXAB zJdG5}@hE_2|`P)QPh@6pb3wg)QzMVh&ikoCDJd#-eGnm$|ESAcka%Khl1nn^_;aQ0^UwO7 z65g*wEH~tOay^s-6hGR9Q%>GCRAnJ`?l_F(Oo=p4ZJ&ibor?2cl+oZW%p|Gb22!?s z?~8T!v+&%EgVm7r0amUAlB=t_o3<6AQ7yR1X$Zm|)x^nfHxGpZjTb9~tJ;^Kge64crtXi4N=FIKQX$NyxJ7nS|jBX04j7DTj|GWC0@)xD4DHT?QkiPc& z)#f8ydBMqBBdQQ{UcrRiiAZyZ_sE&kayZxLI*l>>T6o#?iEgO=G%ryc0hMSQBKOcc5}G0bD7kZaar5{Hck4q)gl_DDG3y2^m?3NuQ{4hv{Z%DtJIuFA zom<)16D@o-F~}*YZ7$u#Fo(K5n&a$g^?+HL1MD8K>oFh2gO@c7e z9ki5caC-#?7B1`1MaB*_>VIr*rj_~5;9{M4YbjiTMsxc&ZFFD$zR^M?MwXVfewYti zUlQY9(zA3~6Sj0&4;b*6zB`Y9g!v~3e$9ZsV9O+S;`LiL>^~@TzU8gTg)Upbgpe%i z8@n(N8{)`W*Irv%M>T492|DQ@?Amzfb8XEQTbuNw`C~)JzWjaL3%76P4$_9%COVE@ z-&M70)Cy(^=Yz0cD0Y(L7)rIQjAg`y=&wJGTte@|D4h=8wXXLB+D< z&~bLAjb`S5NGq_X0Ux$z9tUF5o(0h3AI8&UvPchxuXkAgg_S{ciR%Y|ESC@ zYVkm+@%BrVk$e)rNh|z1d2IvgWgl#QSr(Mj;MAhJ-AbUAa8+T-%i?0`(Z83u7aYKI zmmF*nmV+o;*1j)96D9Y0VFl;$?8N{_8MR;8zAWesNesTSRzV@y4$87w(RC8gv}pb2 zY*<@6py_)2nZAqki)fK&e!c8T)e8@^SAVMi)aGeD(yf>~n7l%NA54B~r66~G8=eNk ztRDQ}Z=Bz37GNr4e-O<+ql&}bw6lsr%PsnGRN+R1^Sug*$b(0_`zi|R+fv%#f8~0F zLG(ZwcbMvF#~LmLrndYn8jB#MiB>YtlSqXmxUkgk_a@7fmjTL;G-XA;UO44x+fi?W z8VH~<@2B`EZMM==$sck!6lk!~TJiv!IACuRczCYe<<6Sy;(m)la|$+IHul!MpyqUV zoqf;W%ql3Zq3q8)$FX_LPEL0V?7o)t%#~|ouF8E0;Zz3Nc0a0yU?&bU9O<&?<5XuT z*{kwkqASfP&IltZz0hUoEa|+t?)NVH<6D$d-A**e^S`mXy0C5C_;YtS`0Bi;HOAb0 ziCN6a&RbQ0tFWJ!oO4ZoEVpVfyfZ;Dfn4v5Y}i$GRC zH9ngQa+(t<+(Cx+=^`3{-gpFrQR1^qO>xQ*&Z&U;CwSm#Y)EB0bA=sfZzCauK!f~t zBt+d_Nv0~j@7n_)&|Gr$WKun($w zft=mW>Xc_dkz&sWd|;c^O$fpPRVnvdlaI98>Gju?hVk;G)j zUj3T%HfFM)RyS0!R(+Vf0I`FF9l95RBW?ce9t-m%0o2af@V?ZC^ZeEY3ZEJzGtCT?EiqI(tbwa5E;%?-h31s8lKjg5;T~-N`#e!7)TI3BRoJ~Zy{eZC z;#>lG>DDcVNsqG3B==RTV6GV~{_%G2!!E8DTwTw*x*P@g1<@*$islqaFQNoQy84HS z9T%|#!;2c<;*U0t7PD)o%bP$tQG~kaCvtj$L6j~-8&vwpzM!)1;&bFvR7pPic~&G2 z0P+q*K1b%4pq`S*Ng5WxC)F%XV8kq#IUM;KT=wehssROB@)|j3ju->RmL{abvMA*i zy$0?XZ0_s?*8^M8Tk&Mswv=?9ns>lSg5vYR z@e_Cv0`&lodw@a|AzaTG)zdePXwE3z6|NxJo4MTq~fh zY7#2hY^6jc(9`Tm2c0e`I}N~bgA!89rgkix*P*zi@HUYHA_cR;3T2q(n zaJ-ZN&5=ZOVLL)_h4d;wCXvX9k%oE=@El4CV*gmTE`IZLQDNtIJ$jwX6%KBEtj%t% zUqaM|yrfY0$V52#-nEB1U=9eEKsa!tK^sOqa@`WQMO(AN&JUY`oKqvr2-A#t!)YN2 z!DzkWJ8;Ffb!|57p1aE0jg*woQ9|4#1f}oM>F-H{Ay4U(BnFsxqQoF-31JUr5r+=> zrXn25;%=zOw_Cs=Ne><5vF`N)JDUG+UsXLJ&3_=`045%)z;otzoLTC&Q*i|k0rI2* zRRzWNcRKLAhB9R>Oo(q?KvatJ^Pk4iI7}i-6NByg1}&%BgfRLuzDN2<-Caj93-_i( zT3D_752Q6=AofBMGemMiFC@d-_xkV)I6q8I9Oi^3(~?Zw>@bBOO9ya>)oJtMBp;Qo zuL&1}DP(D3FuauvB4pAx)|s=`9)iYgJ5r^t-q!`4@%CTq!PCA$vHc#RmWFcL9jO2$ zL{SDoeIWx_hJ_yRv$W4$wU&g%nnse(9{7@6yd}B#$vi!hTx7soAGW!{Cka!KcK!&r zZnG^psdoi(`d%lM{jtK$UFBV!=irrERbXg6QX6NDHjP__>bsrpTaDs}2(GV>0irN% zBbPfG)M-FW=PP_fI2nm#Da&#R^#CxF0IQuRJ_3>BsyKUIl(wL_m%&(346xwSv>$#^ zB`YFeGabn-B+?u*wMMKEqvoMD3c7i`dV!#x$LmJ%Pk52pEDD!PVX-Nw({q_uz?EPu z8@zJLbs(KSPFq5KWT@?08g<<%+8Us>XyJ)%5eW!7!5l!Kl&`rY16I@~K9Sg1A;KX> zjxyJ|yGut9F_|otAD0-b5a9%Rp#^toI>K8Z(Thb5R&N2K=8_mMm_s{4r=OtFPSEMc zsQlwPqkU48yr8ebo8P}m4s(W0_Rt`(n@-z9qXP8ZRK5nb7zF&5gkg{TUzpJ2`M+MY!sM-3D0H5OX2pD)J;$k^|S#5&uN3`nqOl?x$*Mh%xHG_MMbjYJZEvjmB7c{?&2 zRlJFbe>N-RpH2yr*=Ozy&|d0Bz?IHvaO^U00=Smo9=#AySg^x+auwjSZ|8lP0KLIf zC_YRhbHB`sM5DUxlI>J;Boc3VDm#$%H@56=7Gn2Hd17m{9Q9&G7BmZ9xoc*wKa0Kc8De9=!=@MJfEJY*-O}VP|sXo<}`SJ+bmGCt~v!&H?TL966dU$+iVq6zumst;tMe- zG2%@C>fr=5G7wUuzI&xd7LoNZTx!*WQ;66JnAl=uUL8y`bP@RYMEZ0(tP20BrF;y1 zrb&qK_FNK3Br-@O#^wvY;|k7RYEi$W7BNmAC!u>o32DFleITghhAy3B{X2bm${faa zIRPM%B?N+mOaivCr{^Jjzt+Ka^T%LsUAojPz_)XZ}V^29eetwSoVO!=A_Rdn6J39J_9M85pT7$diqAxNJedsNXbX@9X z=Wt{N_Dg+J^Didv-JK~Z|C%F_EB^PLKNSPsg>@;pyV7Ei1n(lYs`piQGb#O$a5py+ zx!c%S2H#S~BqO7}AyX-qDAwlNJtOteq%`qvv8YA7+uJ~2w%g*5Mh=@0n$yslSv zM<4w+wL2-2anxvDUQqsk&HAEGzQeWcPI2|ZlsSxOR?+CxK?ckG=v&h5eZ?go3&GV} zZJm3ER9N_NHcT6z9VHUr>AxT6v)C7>bi94nyP)u$_%WUR4?325Z#|!{=kx|OSSL!N z<#K~oCkhu7>@8WMjZ9BoGM4X>xOPcKtX}YzN@a*RP>Jb$es$b|iWhAQUsh1dl6ap( zK37P?75!_$(zpScRYkw`16mR4dswS*d7Ps3hg+~4yQ`AYqbT-3+KIHwC_TEc1Ep8< zc>bsZrBmw4j@oXAYoN>WL)^Ho`-~nf^|P!m2npc?Z*^kDO^-8erN8bMq?RYMZLH;Q_b4&qj%MaqF=&JI$f4JKt!@}5B-h_7ttS0 z!*QVg93}xoTl}VLtRkRc{@}Oc%k7IVN2eCyb#Qz1Z6M(-;o=Nokgf;2jQE}s=dtY? z#)Wfk_W<8zT>9=i4y+U}yVk%Vo-KPnW{*}Q;67*D3I7Z?YYJNsgjn9s$t3>G|zUF|cO-QxOSUspUAZjI0{cM2#nOL=!5F~4g?5aK&QqPHG zNo7D51xjELB{zZw8L3#Qvu6twkt9DjAvw*KX#5#Ca>ZIJ31(?kuGX-S}N1L5FEIb+X>L>Oyqgv0JhhN`qeo!ANvYSkhV z$%P)YN@ZdzI9_Y!kaJQhB&_i+c?eT;ze(qWRxoy*O}CY#pE}U;58MJZ;s;w^P9N`Qladsc(T4-@I zx>2oqPyOIA;`KAqWWul-CsBA!n2|H6&Px;?il>ePLRYK`6I)A=z~k zaAW(4NU)bD!yS{Xe{dh2B?~UpEi|9K%BW1cS>#2AOZbsUbL~$+Ng)}jWLkK#!vi#R za7UgrC&B!6Hi{3tsI{JHZa^VF12pHsvgNVC^Udb5V6}a*)Gx~TnGuz~43sVJT<*t= z{;X$8Lw_r=^MlO|+W7#!^t+eU!DD9g{NUJ-TmLpV6Y8=4F(A5?-8RwL`FdXfe4e{e zdC>B?r?b<3kJwhbvN6@2O=f6ECFILw(?LzA6C=o%dCkb)!_iIPEzw!cjE)W~51a!K z{%-sXz1(0Nc}@Oj{BN?_I4Gx+Wyapg55^CZ3ykf}3F8DTn03yowtTGT)+&5RW#C_$ zi2Hw9$e;3evkF;l6BNew!{@vtO2NCp;yiujH~-i9H9p- z)6!3o#N^wZL+$&CQpKs|`e!SE$Rp2MYHs9DrakFhlm@aM&24#NTbK&69*%{1ARPA? zRsxX^7YUPAg}mKl)>wQoStbRoe$;xJtn6 zY75%ODsOKP%|$=Zx>cT#x|KeG_S##nn?I7!wl4q4AK%fCG>%4>ip@P+(CU@PsACDc z%#BTuU`nL4woaGIu^eX;I=&}8ug+0x(~>Q0WtX`v5=oSvc-fA&spn2BE*0gTr_aAt z-q?kuLmEr_anPnso3`26J9fSDn9O9ec8%VPLTK=@k8J59l94`=kgub^(6HwffA9s$ zM%{SSCWoEPFS(Kb?#5sDocoNH8^iaWS+$f-Gt^Ocazrtv7{uy5nzzamVw;O#?pphj z6lI`C3^2d|0~S~)O?H_llRqXGLyQ3i7fZLjn6{2&>H?oY~r6#95 zj@<_;vPqv&Q^)Ri;@foY(bO?5w{+`0TD|gcp3Cb^WJ)tPUZp&zH$N%!EE3Iz)$L%A zK?WIQ(1Hs=msdJXdN_)MImU+N^0TU(PZXTgnh(aUZIxxpI4I4Tsp%KCSnHztGGt|l zq1_>Ka|zi%scln_+mpRh9?!0|#*AuBJ^CE1v)F&OJ5Rdj>s1RHK*;_TH*KPfGKRQQ z@SH%0SDIO?dNsQghO$~%!`gcM&2E2oBo`-gGN+c)(;xY7AJ6J#t=@;kFX-9CXM{7n zpSu^tb5vp}PD_(hq<%G~NKQ4XNcfHBY?{_lMiKMM0z4-H3l_ppT(Y0!!^sKxhM{yKarUU!D4K4UTA zI4jmMRq^$FeU74IE{eao=l=UzOFoEhM)#JCsL;|6qU!@|YALM{<1R8=GNPK5s-|Vq zl$24%EZ$N=nJ5i0Yc+1PtQ3Z_T3Ewc8{a*XBe^_xgxRmBt%|H@a!Nepc=KwYRZE0D zmDC5mL`9yvWA(b^WPFWjgH)dE_U&Hh{)MIuW!0Esl~rZ$)m)dm_GM(rSe5EiuluW8 zwbv&1G`WZzAMI8h?}t>U%7DsXrN88X?jrdbA zh}Uzd;H=hkFy6$Q)>)=L2SwTU>9DW$&A&7XV}EP028>#)1BNBzr60WhzfJ>%#>W8} z=WV=Gmgl6!B7>)vX+YP-^NA)?w!(Fu#?uf(*mSKo{bDS>S@GL4I;R8e9;?irQN|E= z3Z4__@Jcf)>~k%ZN(VQoGBX16~(l8X~LnN!Q@>HO~=Z)}9yT9Gihyp? zg_!KSv;MZE2>Ej>@AIipRU5)peMqYs>i-&ru`LuZc2NJ{D2&|{NRuHcEM{V77=7N5-MVqKt%bbeUUsD&EW;W{LY_&xCmt#8Ea!6-dk z{}rF%ro*!pD?~L*Km50fk&v!QLyKun>uv5;hj_13-7GSTkml=KA8yVV-46ENtD%mW z_17Avlp<$-tr04d_WXA?T}{%KE|B)#KU3yqnjLbQ!awZ{h?Kpfp`0PC+F$w|dxxAW zG=+K^-Pt5n2mU^NG_d}=^|tgd;q@ZCGjkErl!m@^?lr1DQ15ff^11`C{*PH zyF65%Bvwma%$lw#6Z1)o1EXF#kBy)+g^x9PF1wt+coN@Ueb6;u?;2LXvYxT-V@qwb z_2`zCck%zzp=*)uIQ3bkT`9IwcDIitT(Ol6{?$7l==1rPD5#^)0<(PW{s6@bU7m#ZZZ%-Vv0sLVH+JM&IIfs zyeKLxMpIO^sL}Jn_Ph&xcULEx0!~ijCOU7O`Qcu1ws`3-%GX;HOaBKpyVGKlL-j{8a4Cd<#}(>~_?O zCCc*oL@3`h$MT3+9f{J!Hmu}Mm7C8u+3h;LB;r*)Sak(DNE&@cmO5nrohIDLPd`yy z9kGAwo0KrdZR+!X1)zW-wmS6xf3ExXX!^hFwzvN`zDNK6+jYDA9d6>xp`YBDXy2ow z>C@=vRq%f{i154#0Hb*I|4_WmZ{6Dfp8C@jhujORUXAqD{7in=Sob>FdpJ3h0QP`w z9{UvlSA%uk(*RG68z8`8?!R8$Yc&AC&yT%x*t=j2S@*aN{9fAuUw0PB8&09bbvHE= zc%NRd8X-XfG!P#W5jTEiv>N$wVZ8ix>b4s% z6@C){9~{&GWm!vIhqPUdNGLOn%^&~}28FArCC!1Nd8e(KsL}0Os8(h(CDmO&*THBi z0H;uv8%IZ4%BCX$zCc+m_t24AK$kzC2NdRv0xMz&K!QfZ)Icq1t{)FEWFT{_RJYS^ zfMi?K1)5xlTEYpf0SyU)j#SGC8?i3eQkyDj2@y=#0Zd}8r4|*oM`3AAjXmT|0E9tN zhg}rDfikLri)NE6%-tR&sG<{Mmy!6p{+-O7DFdz!Z!gx7<9FBCR(c%H~!)Gs7SBWMX%~}_^A;Mf}hm|K3{}&3f8EhZ?V#>Stuo@;QJ2lEZa-E+@ine? zoG?8%aFDTZGaFOWcN>k|vh{|%UW9;|^^vrN_-pn@Io6#xOob;G&@w$O!*vV_R2GGX zpk50^usz|;+PT2pv99KqPEnEj=9sU zOkw#TWZA%Bs$6NipBpW*;ydA{LlkdY)guxuLqG0SML`9YvZvYsw5+8lV7OQC%1U4S zjbmuUQ{G==QZKs|4DWO<2Z1Yw&p#@BYLN_H>5>w9gy?EUc4D^VnHPHp zr$UwNOd|ITCG?%ZIL0vSURmL6?=~DbG>)?1pf?Pdshp;`{4RkQN8Ca(Zoa#BsMaB3FiOpF>^(K77m#@y%_eK>!o z;mu6Kj?#ukThrK&y*#)XmcgrGWs~sG!F4y%CMvRBb)IuG>GxXQqHG*jeDA<4Ey5Rl zL5n7ym!Iq;rMf^t&J~|ube1ll8+0XIf8aJnxm~?ev?yE9rMYd}w#~C`+c?{{ZQHhO z+qP}nMxFYry8DjKr|&Hzb42D^F;>K!+Dg8+NP`a}hT0bLx@t!gzaGhi?&^l`gwP9T z;_zn$`%$_>wnBQbM$btX=W$m(pzcj zED1JKBoFPbu-5#$7L1`@ z4kSdEI#~K-y;dLJBBTeOAAN44dXz0}}BMPovl$^udbOk#2@OU46<55j$qLgW-AazePgN zIC(X1^r89Gos2efIn%Cr4-!Qxd%Gx6DW`m5?hPt*;kR=Vv|pJo$mrfEFW*{)NxfrD z#RbI2Xp^0RZNfCUE1*lwgGVH}Dh#J!@9WuLW=JfbP?XluC->AhCY>$a_?3S&Dh}{D zVtd+DQ&8w)HRS(HkL^=2aVpaMZOU+XLgvkQcT|*{ov73|I>&{MWaE7@F)gkM!YLAS zayH!RmFW63XTeBi=0%mNIzNNyzKnz&*TSa#e8m!S-0gK+;#^moahn3L2OT_xlZ#by zGbC6H2FHhUa3N6a*t*X4l20baD>?ED(aW;GFFU&C7%3c#$-!;a;n~2%hp)!OYv-Gx z2Vy!B(q_tVXQng5SjfT*ERO!*#GB%CAk(<%uVZ?k;@Ce>kUw6j_20ww38!f>N=S$! z63gemSA*ScyC*#B_@YlNAm6v~Ajw*=##Nv!{z0b6E8m?bCV`-QtGrlZr~-LPQ_X@0 zl>$hF1*)|He0YBz8?&Cmc4o!EH21)a03IB#Mi<+VVD+q}i~?{XBLxR#>nIZjbY*#l zZz^z-OTcD02c&u8#&R$%0DzFJvpKO4=LR_q6fURO2(3s)I7>k3F}`kzs2WHNB0;zr zGt#L8;>?COQ89P_}2$wU=DerfIB_T=K)dWT<@KYZnYik4&TJDpEghC2PIzf)P*j)DMQ zt5sMgk1h;A$q+j1DKKnFNL+Fwk!OJJ5lVlQd})5qn(6R#S3!v$PrFNMKXKW< zPi5*<>MK5CIkqpB=eYA8#fIpzki3H?;2;>Ag7YvycyZQPU%~zfaO+kbb9|;iP^?S~ zYm>0W2%2AhO0e7N9+&1odZfD}oKnDN&-O!=b;l$h>UKjF+Nv$q~HyL6hO} zOC!t>o6+=Rc;d{tG^%=p)GW*GLa#NEEuUeUUJ^<(v&c@nCh2H;L?z_afBitR)r0JL zOmwa5rLpVaecWM_mINOF>w*v5|JjN6%~B_EOQgD06)$gY)D>q0%04FZSMCl|jTL31 z$Fde}k)PsMm!4R24o*jDh#sq^0)MJjG`&o(x+y?DW*pHRjc`&Z0X|1sZtdn>X5lF} zklzcYvzZ9gVH_i2qeLKO}*@mrwZ6s7@xaVYII^I!2O5ie5;S zpXcWq=F-Ph#xiDCWum0MD>SGRFF=y~qjWMKsUZBt#wH~up|0rjpe5_r?m8_1E=GEc zP|a0uTVkXDj>`=R;ISpY%{z0{Z9mg{QIs)rwr>n2O$;!J)9~6+1B8G|t+eTl0zhF~ z+Myt0N<25P??2xcXU+OdhTVPo=!&Hta$Zd0fE;Kql!)p@o#hnG!$8z>U}Q}`ELcLu z&5dz1V&bAndWgdrIvld^ZM6*$n;D3x6TPoh&B#oBKTf(_-(w9sa)3t<2RYCVC=h?f z{bL1ZGJePz%t|u%a!2-b!?_3OHDMbB+wl}67 z2LVJ97lTvX=?;+7!;r;hfXU>3Q2`NCXcAe``ehLbzX%-x?t5pH^F5s@&g@1U0+CSO z0M;1tUVK(8=WT!b23aQeUI^_sXs7LqTK$RTg-s$v8NOBwhoL5=TJv~+%19tXum__- zQsHRvIUe36C_wD65jThU2JB45@-jMg2`KW^Afe1wI-d3J5VK(cqY7Wo{ z!O{UToyIeX+3}BVpd-%CJwW9ydDUpIJoU1v2#!Oqn?e>l5!bTU}wHpYE4H=tTeVFPRe4nn+wPHI)>4La)vu6?l4X%rM29AKY zkq-58Lo_UKJyFhVHv(_JgLA`;!^EWpFWQXZhl76|_na9n%)FFGX%S)Ed4Z8|oU<~d zPazIlE0&dTv?X5D7}=IryaI(P17}>^vCP{j`798MLJ<0FVu%ng4Y~UQWpR2fcv@)F zDhowL^4nkORNON2#a+$;|I}#561ZzxVz){{;20XF;wIn^;j-K=Z=-nk%)rtmOnEen zw6ryj+?}qaxsVW-q+!_CCA)k*0MK10TxGWG^36RkhVu^!M?+j(NcN`!3-_;@{PG-; zMhq=2l|Cl==P#S9dk8H}g?TFX{iKX)b%lZ;s3YJ`_g?^pfFKD5p{OT!A~$0x;Lw-K2br}1j0cC5sN&@z zv>89$i8uJq{E})+;Kaara1Z-RW@btQ7}E5(B7Tm)c3%YZD=650Hp7)ZQcjRxmYf(v zv7sp37Wvx%@r6y_db9=e%z=mv41AhXB@Z02Jc;wv$^86doye|?;`xK3z$oF~3w$^; zi_qjX#Ro^ly0kZ!H&CN9m^{lFbJScOLcz0NhM!{8Jp8v|B9~NR$+5aqP5HEN+#Jy3 z+T3Uvd2Ee2S?RZ$RMrKg`uy=XcZ6rzJyMa7> zAu3`3zEqnLFZp2aWCUWNXwC!Gi=gZ5&(>FFNh!Z*mA@MrdEr=?&tcr;=agAo*LO!U zXr+P6616mp-=aZ%ALG7Lsp4O&BKB2s3_<%5IN#31dkO{mfO2a>R9XLwn@LP$kVcil zC4F%KBTW-qBIy10Z${JiT&C8^XbKtPFirba(zS$Gwsds}-(H?<^xchVb zQms3h0z_jVsAr%s;tOx(tnzXZ!dfDNH)~3%iu@Rc`$ThTWHg{B2+D;+YEZ?S=!x}x zX^rO)9F-2EK`CCyo0H4*y`7Qhxtx?cAnA^l#XM=)+t7=c2LAYCRY*sPtMr56V4)_3dV>q$#dA~&nK-6J=(-bNU`VnL3v^n1 z=W-?74oURPAAxoRn)61fSI3tsYAVk`IdH%x1;RJ$X^E%WfU=yESQg=VBn;NRlxH?;)gUEW>VdnnGqvejJN4(td-fCBy7M{Msr zBX?IlMo!gA9-?5_qH7e8TGm7ZPIZgp10ch>;vs;W=t+ zwZi6Su}6ZtzE#xj!Jo^ULQsNTUpt(S+o3LFaCR3Y|(I=}Htl4zlSJjt}cgqFb z#Dw9fLOe9Nw+bg}5ar&v>>E}fC(<$d)IwUS4vQ>q|c9{l#UhzQ==xDu-u8iHm7YNp5U+HK0x9;0y#Iw4)w04+& zQn?zR+zTLaIDYlROzuhH>D>@(f42E57*KF4xD;e1#aE+`Ul3;|yc}X&Z1J|nV|9Qn zi!XO!Xm4KA-Ogg@X1)y0J?H%U-#an2GKUN6(Sh@%B@Mts#EID=9$c|g+(F#r_Lap2 z6y@3dlhAe%7+lUo0b%z}|MxKxGYGZw0@C2F^5Mf$b# z*#Q+544B1Z#jwe~kG%54?|$42B~}@@(_SDc4kCZ>>g-7MrngVlZEYVO<8fc<^sW(E zNgJXlrvP=?^#l+e7lC9(@ZST{L)k&Vqk?D;qVqM2ZTT3R@)k)0Yk3C01O~jYq9#L? z4lIUP?S?W3Wtt$jZj#O$7lt{>KrjTeV*n!&09EFV&`5%g!sLPLnrd6y4a&rRe*$3& zU>(!8$ZsE#X6X8eVOv!apd67=wk8vpyeTB4T8e!T27Jbg}xE z;kYk#%^ihk(%&^gn)}xdzLKY-K)>Gcf~JSRgX*pJ#`l8Q?6 zHrF#V{W&gO|ApxS@i~7nwW1edn|~xtzfBpg(h4#$C`HsKVCbWJ!&&DBF~W{^Us6QC zy^+mPpE?HKa!U$hD!xm4%{{TW4VNjlKIOP_@=MCo3-fd|*Hn*8S~dR|iud+2#%*M_ zs-fl1IP!GtBT%dq(lm+V#w~i5P38r*%+3eb>@s~(FF!>5^QRztNk4Psz1+JRs5ZyH zuV46xTR0N4@n%QW^v3sLK^>Er%?yuIvUokrUR`UWykSEVIaSis^$`I2g&1!~Uj+x%=NGEqDqP>^5zs$0c@ zGu7TthV{C>u!RRr6df3^&NK@(;W0&j&z`P>jq-1VHJ}H`9*z@j>#z>QPopw$6? zbG-oWgUPWinm(0@>eLa#Kdr6S>94UM3lTfE(u${?$^1l808Be?`rs%Kb+Ixi(StBo z^$a09HugZ13>F-TnI#J36rA3Q@5S3JyFI_xN*?Ph=6s@6*-g)`>ijVkIi9DF+~D7R>MNO)81b3}<5UShm=gYs%`<7|`=F8AR$&&|xA7}WiZ34&oq z3*2FVrkbDw%O!043)ucTDDmS$6F4ri3a}AM3KAsGn^BF1y0qkCxvhAhyEMwBj`_}Y z66ktcnnkfL1IO8JzoW|E7-`@aDiR^0>Tkg4f7YXyRdPWvfL`_$&yET;|3J z`q&L)W4C#Eu(62kTYp%lgfR0eSGtwlBM^}nXNFy)WjpkYF6OVz$fpX#;1wj?U2rw# zPdsKY)+LT>$&^@8EL5v0iZqMGiZ<_aL<&RZ1%(av7`H^*`a%bkga9b#2Ayd+-wSTn zg$`(HMk`&~*1K~7-|nxz%|6{KW>BtzU7W6W-)^L+tPmGvll{N$ux}=IiUzqrzws zBR;A0R5piP6W@8Lho>m8cfV;9>1=OPpf$J`Z_1j;at5y{c4;Co7}cAdE}1IhD50o| z-ueXu>7lp=Zq4AIXjH2AFA{IMqhdc}N!M=Q8_hzE7IF#S`;^W=})=BGpPMzedn$7e9)XQlAaXMCGvkFg0cjCoWyt z6QB)TwS+PkX6(rL1;U3n1Duvn3MmFNE`{c)iyD%5)Oa)>neT=|O+CC{Z9{CDUv2@i zTButn%xcR{vclh;xfHldHT=fr&!{Dqj&rTME%=UDID`S3^Sg#yw@=(~BLq0^HMXnf zz)HtGGJV_KXtOtBH<`_!3DB?Ye%Z{)^;G+Yc4geO43GTE@rG4mu9imi%DZ%BtY?AJ zUmP||Nq%#vPE+KV{5Xhqg+(6Zd*e(|CJ_n$!R1`OGf^?1#z+%rOY8Ep^uu+8unRL$s2Gg|i-s97 zqP_5ys`a4>>0ODxRNmDP4RLVwYxz{%sp*}vPhky_>60V}2Rzv+>GzJY8D-D>q;nD; z=~*R4j2ox99u5Nlc0Oa-p@U^Rq^yE)OiF8$(@FR&*;=zV(dsKKj7J8gWDe%=(@Q%R zfPO&<1Qf6#=axPGbPF=mqt=M#x%l*3T5y>k<=Z3yC8R4u@*;(EXeV5Co$Wvp8y{!_ zIS<_@q;&K%eK8pW^?l9NNeLIX_D$#88^llfDR$0_V*m(@k9r|Cg{J6lr@d-_S32>; zsA4pfjY*wWAAh*SJu}02S0XsS$U3qr-{f90BAdSQ9#C#3JghhYL)1RFSXXQhxGF~2 zQX#OTdz2v&C(YN|SdMQeYf(11%ZW;$GDO`404?w`h)9@o7srZt7oNPap3rtdis9kU zi7H}Atd}&NI5pli8JceR@&aQ*WnSs3C8&S$+-&U{riW*16J>A4mp`o6Rc59)wNxSr z50oqajB2lbj+5&w^}@P}M>GAtTao-z+R2!;hEvO4&s3qs2C6i(()#&fIe_ zl<$PkZbs8>zmLzBhMXjVVnESCXQee?@k~Ok`V{He&K#2agpb_tR+{wFF`Ksg{uh8p zR2J5c^!VWqMqBmxD9%A^o?4NhI2!)+DSFe{n+ANKovhu+O>-bvb9%7JX$54uWv!h! zncc^``HLhe0tYQJL>X%i!&cWqPuH3S;iJipWsfo|L4Q|=?me{ip0pBfq^~#6CIoWc zz}wAUC}o~mv?<@$VJZOTZEQ^s335KQ4`Znb2`N}<9Ksk8G@&cD=r^zYA$ZjF?pp|# zOzx7iyGS%T4#<}7m0x*HAoWEhI(nTsWpm(uq_vpBVMP6{6vjVklLZ_F4>=YuB$z@R zZdQD>R`uaJ5~6kRB25A*H{)P45P+lJY*$9Tlqddf_L}zR=S#a1U!05Gr$R5w4<_54 zm>xCiJJ4>xfHPzI^?=xwoB4L+KwftFr9&lMPGa`K%0H~5p5f5=1I!t9W9c0N{UR8` z1fYrOO8qO+gh{kgK>$U{hcR-qMsRVC9276hIks*CO5T`*kNeF&9{l)|^q6BKO16I; z^18B39lZY%?T+Q#vp#U%u||u#JS4wqvwQSn(C2-gXRL(OHp9Md*KA|o%W}@h=jVI5 zZbpK)C zY;f7~PmR?Ok%5}qZuA5DQdWTsd3T6Z3~5tK%BG9$LEt zP<8u&hMw3tU7g=SB4#dAoz7i=(*mV`#`ggeLjpD4rZ}75#Lr)Uk|t?#BFL9|G-YxD zRJ>mh847SpYOIKWC4uX;PbD6lB0#{a8CK`vLniq9 zeLSf>%MCCVz3;rGbl0bP2!$+1^49NT@Qd8k8{yb9IM=z;e>u0hJ}?;0FYTt}3)8*kxvucJ7Saagx)&I912=y!PxK-ptO%(RUffo& z)_{%74@LL_C?m61jRReu#?tH&z@U#m4FwVD*zK%r@UPc^(|lZ~BgO@$_>akXBp;2F zz50~QVnM_MDp+ERvz8#%%6b!Al4LueI^!=#92VZefkYiSn(OogC0qe{9vrkt1VDQm zr9e!_^kL9tP1Py)?Q*xX>2A|F&v^@x6k=?n`9P0ne_WOzD)d8B7pbnmf!P#c)$4L= zy~i%eC3a1ox`;ATwqO)CRhN{`_@hIxcaP4-@Z|j@M#brHx*8r4i!rOiHbXkAStthF z&Q&2{fXJkSm9gj>K`Vf44(HUII)Ob>#Qrjs%t7@JS0xA`65-z;sQXVTriyBykC6jvdZ+HEZ)Op;@+Mt_aM~Nl!M`qhcR|B*gnini!|>N67$Aa=aD-1l zRBAsE#E?76{hH-o{G>^5B3>)UJOTTnE&QThi_t>+Q08mA(A+omGsCrzT3^LmZhVdG zuhjHl!Qr|@8;dInxNXIc)S!tTII)>eu42W(a1+|5fAuFb>CKR;WHjQVJs_fI8(G8e z7d3^klm`h3q=vIL1OTA+iOKxDq{tnG2n41%e6inX2M~(-?5dkYP%y@xZsPJYAVPEN z*xPcgVNVoX1~5}Nc42=3wu?bz>YPY$GysuL*(@%uh?QiptnQeJ-zFhK_|;R`HnBPfx5OKzE}v$3Jyd2t@a>U`eH`~~1F zwf#YMZo^ebIGGa<93d6sV7wxYO9?F=ao$xhxb&FC*OV2L)A31mB`^v=&xptlJ)@hg z9QC5^K7;RK5qiI`R3-1GzwOURjC}UP+U{nVds9N~_w|kKKl>fSB9Av#eGM+Ki*3eN zLBlz|Y{4w9rh5;s+2oi>d&f@D&Ea$;-AC9tqqTFTucR|=9#YaW^(MBRPxELYr!`Cw z#1thRMvh=#nNH3P!Rpq|F8#=j(%W4zn^$w$*W%_I%@mEJ3kbyU zRmc?H)J_oiIf?-eC8JJb@uP;SC1*va(F%h1;VP^21H0Eb%ZIrE+VMN`7lpjThuZm^ zwVogi0RSP-N2eQn2DgxriXNi(cYdAzBq5UXbCY{Q8TdT^ByL_5gFEew_?@!wI_liyBDeEnuF$dqYMHV{`qA6;Yb)k0kig+m?#i&{Q?#8;d`#9&fj zUo;Lh-kNv!ioD=MN9m8F{!?V|0lpMf#L<8XvmfW%|t+w-LgdPfwlbgS99~ z>daO(a-2L?YmnDRxMc4Vadg3eI7!u%$|5=opAm{C1~`&^KRa5syAPnBCo^DDi^`Hy zJ|T9f_(HqUph(51JT9O{_RKy%m^8=_nU>Q+PiYtcA%L4Z{fCFQjjWFee zhDW;7*z|O3;6FEb##$_2ywrsUaeDdsM_>U6XOtcf79ul2ex)dEHypG$ykc6S>eM+n zR#7>bNn(6C?2cZK*-}4u?W(=+23{u)x{;X)Y^D~vXgVFu8HY;vrvKk(( zFSj^jsmlkPU5&QPyXgX4OX&6l1@gI22f$+=UEHSGfy)BS@wK{}Q>8c)2Iw3n!D|mr zOnv z^r=|%Sg7RqE`?cLV@*p2lznVib^sz+OKvAmY$e^z0IC3G8q_kHlgMAyH9kA=CaFf5 zefufV^ZP~#O!N$jKK@Qx$MAKZqm2j4bfc{ztE3hrX*4|4{`oEpNZ8F0VW#5H+>CR088J@7;=Gqt~h5cvl5-F@-k`LSb zh|$GS64tXg)Ak5r5^|2Q;T^#fmn$>LVA@f%-xKj}q5d*H- zFX;n+#WL$C&B_OK6na|U@uLPBe&+Cnxs6%1UB>O+u0 zOo!VDvnZhy1Dk*CW^WHf+V@&OAoLtRKph&vnIs0#UOXOT^64J(n>`@Np+~UxmX#pY z%`!$5`ZUB|5vUZfI&gZ@I_vF{1~%rBsm?~qz9G-ic%70T>rq2~mRw&_s@eoBMvJyg zKXvQeUcBp^{&*eIoyOr{*s4k4^ zp%;X?kQe0TZdNWH=VwSh?g9#}7myY16a`Q6uLN(Cs+pFHxo!)(O9$=oW#RM4yV zbK5;XWnbTZy3Pv<^ifK=%RkfXbY%`*+6qT7zyj%xY!n|{o9+5}kBAr{T&8V>RK^G# z7VLj~MUo)K)9PJ6Jtt4hYLJ4 zcYqJ2!_&~42LpqvFweIl-u&wXFdKN@r69fG;nB2soyFK2Hp50>pJoyK0aN&s2aF=2 zlP=$MyY+``oBc9NhsqEUliAv%%l8CMLi+~{O<8ZH5d6u`w%5@O(88%7>nfn1bVC#W z*HTP^$sEpTeg-z-yKTgf-+ARLF2P)*R|u&@+#orrcyaO+`b`31MRa!AvJMn4x>&_z zXkqQ~9b_?uE?f7uT&3el>EBF6Xf<(06{hl*T_$Vkk)}4rm48i~Z#Ez7$PZ%3&XmRP zH((X@Z?k0An=c>Rp2TwRVKTPJ4b8o1x{Scm5;b;z+R&1W;~NP{Lk(YfheZZT7d5u! z+qPu37ha9)F4sO)lH@~obqL)FFgbCabfxwIT+b|Xp{+!#vDE-s;-vspi2sSn*U|wr z7hMR{xVVF;4`mI8Gm|Y*T}RE5adsPHF5%c$Pk+n3gf9iT#vnr}=oym=e<9aP&7)pR z^MfX8l4=kzX8I0N^9Vzqe4{HLJ{*aFj!d*y+RM5tKbo0>HRphL94%bCiR&=MYmHB$ zkj=WcyyorpB7TSG!E>W#?6kyN%sJ?>+hLnoX>&9~xnLj+{R(FxmMV09!{yj-8l5>U zO`05S3why46BfMe=7(UnbCL~gj$56>7Yk@>$7U|h{>1+Q=PfI4{ zRR-*?=@*e5Lr!vKjN&e$kb@CYY8A7n#WuA~J1r5>Wi20)n7c#0Y0vqLRqi3*Fu>xL zWq$2(0uQbZuB;)R?G+VyCK%UfYx9uG`{y9B3Cd^>L<&d!hwNAxYT0JK=MQJ7w4j8x ziDR+G&KknPqcM%vhI)eodx@g1WK8+-H16F7c`JeA)a+Z`xkI3ZY!pw%)ws`z0Au*; zdagq(6C7cDT8*m(3;$tvnxk=J^&0B@b%xA}Li1Ae8E&T z_~shXoK?Oyb4zHo(}X7;LFFNjP+^R%MY5|+sjBp5;sl-+)p;~SRQRU-6#HA{S7$fl z#hNMZpMtBF2E?;SSs*Po8M;`WPLLs1_Ot0|?a%mk$bT^us&w?nV+3ndzDj?Jli&si zHK(mP{AZrV8Sd|JOn5mzl|8((2vJSCTcTA`vRMSDxS3f5*}Ax4V6_bby2VAvt1_6( zhB2GPegV4WA&^Qq#HOPD2TBXx-hRqZ0Aqgmh@);C=mg9PMFXWNpbdnM((*!!IQdLQ zzw#B!i|C1rDoa8LBSJUpb#^i`2HGdfuw$vXuHmybJ!NP?31 zfu+#hMWPq0+hTgV1-MD<)cM_zSJu7-!S>#VlR?gg@JgY`=B&j|38Z-q3L$q$$%hx& zO?}~=V?|XmjbaLn0Le{#3r?2LLfLIf?&MW*wSu~^ji~8|L)Lq}Z%U1bR?fXY`LBu%s7mf zv^0tY8My#Hmc}zf=%XPrPj31^)fmHVK_2|(M*YKnl#Ftar?SFE*IXR8nMj@XAJ zM@Ac<9pzs>`>1l{86hfYfP(lSFGO+RZXg&OzNob=r%7wqE$3Np_&-l$hH`(NryS|K zo+d19yGX^u7!boPjyWWlNGPl9FwDMZ0u2%0$K+(sB&lEzkLiM7(RB-ZjolFG6pttr z3PIbf{4!cP{wX9d8V<)Gv+H_Q1FA~PKcT085t18MESXcuWzu2U zAZ4*?z2I;<9?vAQ|Mf9cr?WS@^jFQ-DQ7AjORi{eO0TG>DcQKFsLdbAu&60s*~n1j z7Ijq2sI9#5*aMdhAzQGnJBMX0OowG(Fl)@f&6`A3Yb4q2+KZd3y9*mDJ4;(@dkY#W zI!anJ;kML1{r^Q~Q9C&6Q}HjZi|X1RFf6OG zeNpK=nbzO*CERJizpK#n3v-|MiYy~;xyW)_NanNWU$H*FMa(*!i6kK~7>xQ`xU#9Kt+AWLvS;f>Ifup$!HUHzMo1c^>==iAj*c-Am>mU{^=))cjUc?%HZ8#% zM0RcKbhSjJw#?^SLFQ)lF|HC%NFOhyw4(=?%>1QiI8dZjcfC0Qb% z2m-kcmLbP(0zlaV!hIKCrRIt2|L4}5htKc8{j@B85Xcj4agx}VUSSd$&mSBDiY$W; zT?CR11r{Cpnk|POJ_w@r2_~EY1yvU%*B|;>C!lfaOMe{Ha^F)3Txl>J6ci~`ETUEa zg*{JNoW?{0Cr6MlhC&6K7YIWZIlcez29z&O6F+eTRV-Oexq9&gRyYo$FNle*Xl|Gd z&v>k;g+F4hyJF2ZBSqi;X$pGyZCW@F1jYzsDX2pcVw!+*E!200PzThEBrDveAzWgU zHU^BA#m6U|%neG*cr++x=vm{jWbL6e^`^fpWS78Y-1axoRPr z$HAM~a-KrsNw>%-mnW2!wEzMJP;ft@I0{za@IIvFKRY89V0_ER;Z`3Ms^}R2RtgPl zZg6t+SFbROc%|8a?e?6rkE@nN3N6~lFz{?xZQxCPnLt4|&ph>Ct-Kj3>gz>KZx6oX&>jJUy4J6?v}T0d^nDxd4W)UQ;cw|m(WO>2Ix?}Dz?tS za|h2Z-d+MtL(NhWY}QVjt0pd0P#2<3dC#)ivYqwe<>~Fg#mUfCxpgH)g++?e;zCnB zBLlF0h=_dG)nsby8aaRpa8d3`TPNOFrK1x@f24y6D0^UEMSsrN%a zE9Wtzn)5KcpRo6jZu}OMh|5$IdFUEdB6n~``HX`>I&o(^IS~KMRaCR1- zdk7t9icngQN-r|j7iG7+I!dr3erTtRwE$K4lVrNlfW^u71D79Rmc@r`FTrr&JtO>C zQ%c!`#0&w48!!wQ*z+%vm$c!iewIGO1%2}*i{}?*&imK(_UCjW^UP#w_4K4?Gk3L{ z2gePE+yIy>j04$L{K2VW-6qT?f_Pe`TcXQ-WbQAULAC%LDiw3!Y|X{X!lZ~0M}OUM z2j~OMcA%oPZ`IEJ@2hR>@2_NEcXS#&jc^U*Dc4I09{`BIwPvlr`{OJ;k%^zbfB1XL z0;1QOMe<>RO07P6^FvZ)e2xCo42^x%Vayr?v?tEy*_`N<$u!331r2nalwpc+xXE7> z6xePadI`dN#Z*;@?3urdCVN4i72E37q_*bo^+ifBVr|M%$aWDrO3o*ZK>yxH41L>{ zY5PZ}Zm!R4l`Pp`9Um1hpWjuy9(kKDIgc&ne?D=?AcI`ZTe2~o+bhDA9N-8?MaOII z*D0Ic+c6dv!0D1({Qg*PV?wrbDK^>I{L<}lA)t&rlk9rKKq!99-(ywjd|?=-{pY?MK6$fJm*$thSfcQ|X!8Or1+_JgP^_uw^YNN?(CF=? z5k^UWBMv$fTRwUUz;OyVN$B}Y;`N^_Q(<-mHXF2pTEtu<`g;-Lz6WO_kw4q7)H7C z>4_r1J(r2bh3P?OO6+-S>vi)=J6zm`8hfD9791OAPaYv+Y)L6OU|{EJqm96TzvZBV5sbz~z6ti$8tzh0_py(VN@*{bk<{ zt2SGx%t|Tqcu@XwLBF?JD|WyCndut4XzQ7=zQ}4L@azs;bILO6sQlA4@^=4unAP`7 zn?2p|*!AUwSEhHfK%_})GYR(--N^ULOD`ijKrT+d1^)2fxC?Q33aVhkn@!~t?$*3k z{r>$KtHjqi5E4Rjw{M~5R%?AlcNJ6)Stf;QAN))HDY3B##@_r!ei~ANW~gd0E_YF? zCX(e)i(Qpi{_F^lwTOKc^3Maxn75z&NSM1?CuP@LraQG_Hv(Mj+anp9(9lZS>&6k> zf4h4&Jka~s;`b$gLUM_=+h%IVZuLFAd*~+N>!OK?;S0j@SSS7duCkIE*q@&w%5b{l zq|k>erM=U|n64I@+tgQg^0%e(7VJ6?w`s6)KgWXv0_IJzl`)B zW{XPsLjsJTRA>y$qQn>qf)JU43*-o(ui%K3iP)&R-j_!(5X4jiC36viNe%iRM*V-8 z(^APzloG*_kT3;pNSg>+k&Xdf_2EYR4`O~hq_CJ~T6(XqJo=J$+GDk+XwyR>JUPYa z0@L6SO1zroM-m&!mgK8s>y637Wmn~+J1c$>?WY1k@VQuE#~yRx@RiqNkQ9wJhADui zYku>|Kp^$xK9IwHVkDFuVEg!H=i9e-<;S8GxX2wHniYBG(NSxzz_+Xg>)R+7tybg| zN(B_Ns*A@cH+r_w3O#lJu$PX)(pqorMk82XD9qz9{2!Gn_onaIM@R681pyp|W*24~ znJ7Mks|kk8=JQ3Y-7MiW7B11JQxNQ{vr$&e-f#Cd-#_0RWwwf-^oR@-JXa+D^yGCL z1H^{_+yM|2k?$Y@ip1i`008+MuHd}LN;#B#g(p>t$55~cWHyBx*lo98EuAAuA*$*} zlt6$ixBNTfAXrF{km!Jq0Qtpb`p5y|@B}gdK)moLobIXJ`H`6j2%eev@c@FBK)iqe z&Jl|s`TJh;rO|s6z*z_b53Mxn)1Y`GHwtlfHo!*ta2X>K+2tC$5EPSDwwrYLqAD|U z&}2N0ErggGI4-YkxWje@E{vz7Z66`Y5^?KbGL5R*F$6Q3D{rR~SLrN7okH!~O42me zLn^$H3z402=^6&sv$4uXRAwr5i@>VomBkLu6t&d_QeYm1fdlvvb+K(1XDdcGgFHO> zR9^x_pnKoNg@bG_W$3%jCI^8^!N9~s@|^Wk12XmoHZ8i?vTCPAv58eJqrvZ4;G)Ic zqgnsZ!Eu*)6BBiIph{ubYevaPE$!X==AO`Mu-*!71W^Nw9lnk4lE!%?YQJ5&7Y2w} zr5x*FJ2tcdAJ!jQ~b^PDbs%e^2?7nGA7VE zeSG~j9eDUR0LgW}GAGsRKcc2nTMFHxu~aRk+PGu{I@vX4I)LpC&SX??kv4mH>1ZW( zW?#OYm67j!P@FmzdX1OSZ+Vf0d;nFmisn?Nx?+Q2YfV~jt3$01X9`HK2tDj#wNZZ7 z?HW|c#edyF0O4~*c!fpg&LqZ2rVH=AHf~*;q8dFx+t_-QZtwMI{RE9AM|DY*0ev){ zyq$4+s-Xl|KqEB-iNhew{|^QaF-Zx7FiRChnxet9#im5)(MXdpc;8nJ`hoAUZyxM; zhcKE#MmeSS1NQL;K^kkLW-P%ns}lW(k^aL>|6!>AFx7t;>p#r(A6EUJDv0WT9vJ5T zG&o c6{+1&8a!>~LUoTCd;IXd{s-P?004mh1y5CZU;qFB diff --git a/docs/api/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 b/docs/api/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 deleted file mode 100755 index 18d2199ea495528929c813317aec63a38c8cd4f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64948 zcmV)LK)JtnPew8T0RR910R6N86951J0_zw60R2t?0s@Z!00000000000000000000 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 - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #f8f8f8; - -webkit-text-size-adjust: none; -} - -.hljs-comment, -.diff .hljs-header, -.hljs-javadoc { - color: #998; - font-style: italic; -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.nginx .hljs-title, -.hljs-subst, -.hljs-request, -.hljs-status { - color: #1184CE; -} - -.hljs-number, -.hljs-hexcolor, -.ruby .hljs-constant { - color: #ed225d; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.hljs-dartdoc, -.tex .hljs-formula { - color: #ed225d; -} - -.hljs-title, -.hljs-id, -.scss .hljs-preprocessor { - color: #900; - font-weight: bold; -} - -.hljs-list .hljs-keyword, -.hljs-subst { - font-weight: normal; -} - -.hljs-class .hljs-title, -.hljs-type, -.vhdl .hljs-literal, -.tex .hljs-command { - color: #458; - font-weight: bold; -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal; -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body { - color: #008080; -} - -.hljs-regexp { - color: #009926; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.lisp .hljs-keyword, -.clojure .hljs-keyword, -.scheme .hljs-keyword, -.tex .hljs-special, -.hljs-prompt { - color: #990073; -} - -.hljs-built_in { - color: #0086b3; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.diff .hljs-change { - background: #0086b3; -} - -.hljs-chunk { - color: #aaa; -} diff --git a/docs/api/assets/site.js b/docs/api/assets/site.js deleted file mode 100644 index 559c65e5..00000000 --- a/docs/api/assets/site.js +++ /dev/null @@ -1,108 +0,0 @@ -/* global anchors */ - -// add anchor links to headers -anchors.options.placement = 'left'; -anchors.add('h3'); - -// Filter UI -var tocElements = document.getElementById('toc') - .getElementsByTagName('li'); - -document.getElementById('filter-input') - .addEventListener('keyup', function (e) { - - var i, element, children; - - // enter key - if (e.keyCode === 13) { - // go to the first displayed item in the toc - for (i = 0; i < tocElements.length; i++) { - element = tocElements[i]; - if (!element.classList.contains('display-none')) { - location.replace(element.firstChild.href); - return e.preventDefault(); - } - } - } - - var match = function () { - return true; - }; - - var value = this.value.toLowerCase(); - - if (!value.match(/^\s*$/)) { - match = function (element) { - return element.firstChild.innerHTML.toLowerCase().indexOf(value) !== -1; - }; - } - - for (i = 0; i < tocElements.length; i++) { - element = tocElements[i]; - children = Array.from(element.getElementsByTagName('li')); - if (match(element) || children.some(match)) { - element.classList.remove('display-none'); - } else { - element.classList.add('display-none'); - } - } - }); - -var toggles = document.getElementsByClassName('toggle-step-sibling'); -for (var i = 0; i < toggles.length; i++) { - toggles[i].addEventListener('click', toggleStepSibling); -} - -function toggleStepSibling() { - var stepSibling = this.parentNode.parentNode.parentNode.getElementsByClassName('toggle-target')[0]; - var klass = 'display-none'; - if (stepSibling.classList.contains(klass)) { - stepSibling.classList.remove(klass); - stepSibling.innerHTML = '▾'; - } else { - stepSibling.classList.add(klass); - stepSibling.innerHTML = '▸'; - } -} - -var items = document.getElementsByClassName('toggle-sibling'); -for (var j = 0; j < items.length; j++) { - items[j].addEventListener('click', toggleSibling); -} - -function toggleSibling() { - var stepSibling = this.parentNode.getElementsByClassName('toggle-target')[0]; - var icon = this.getElementsByClassName('icon')[0]; - var klass = 'display-none'; - if (stepSibling.classList.contains(klass)) { - stepSibling.classList.remove(klass); - icon.innerHTML = '▾'; - } else { - stepSibling.classList.add(klass); - icon.innerHTML = '▸'; - } -} - -function showHashTarget(targetId) { - var hashTarget = document.getElementById(targetId); - // new target is hidden - if (hashTarget && hashTarget.offsetHeight === 0 && - hashTarget.parentNode.parentNode.classList.contains('display-none')) { - hashTarget.parentNode.parentNode.classList.remove('display-none'); - } -} - -window.addEventListener('hashchange', function() { - showHashTarget(location.hash.substring(1)); -}); - -showHashTarget(location.hash.substring(1)); - -var toclinks = document.getElementsByClassName('pre-open'); -for (var k = 0; k < toclinks.length; k++) { - toclinks[k].addEventListener('mousedown', preOpen, false); -} - -function preOpen() { - showHashTarget(this.hash.substring(1)); -} diff --git a/docs/api/assets/style.css b/docs/api/assets/style.css deleted file mode 100644 index d7e56e04..00000000 --- a/docs/api/assets/style.css +++ /dev/null @@ -1,136 +0,0 @@ -.documentation { - font-family: Helvetica, sans-serif; - color: #666; - line-height: 1.5; - background: #f5f5f5; -} - -.black { - color: #666; -} - -.bg-white { - background-color: #fff; -} - -h4 { - margin: 20px 0 10px 0; -} - -.documentation h3 { - color: #000; -} - -.border-bottom { - border-color: #ddd; -} - -a { - color: #1184CE; - text-decoration: none; -} - -.documentation a[href]:hover { - text-decoration: underline; -} - -a:hover { - cursor: pointer; -} - -.py1-ul li { - padding: 5px 0; -} - -.max-height-100 { - max-height: 100%; -} - -section:target h3 { - font-weight:700; -} - -.documentation td, -.documentation th { - padding: .25rem .25rem; -} - -h1:hover .anchorjs-link, -h2:hover .anchorjs-link, -h3:hover .anchorjs-link, -h4:hover .anchorjs-link { - opacity: 1; -} - -.fix-3 { - width: 25%; - max-width: 244px; -} - -.fix-3 { - width: 25%; - max-width: 244px; -} - -@media (min-width: 52em) { - .fix-margin-3 { - margin-left: 25%; - } -} - -.pre, pre, code, .code { - font-family: Source Code Pro,Menlo,Consolas,Liberation Mono,monospace; - font-size: 14px; -} - -.fill-light { - background: #F9F9F9; -} - -.width2 { - width: 1rem; -} - -.input { - font-family: inherit; - display: block; - width: 100%; - height: 2rem; - padding: .5rem; - margin-bottom: 1rem; - border: 1px solid #ccc; - font-size: .875rem; - border-radius: 3px; - box-sizing: border-box; -} - -table { - border-collapse: collapse; -} - -.prose table th, -.prose table td { - text-align: left; - padding:8px; - border:1px solid #ddd; -} - -.prose table th:nth-child(1) { border-right: none; } -.prose table th:nth-child(2) { border-left: none; } - -.prose table { - border:1px solid #ddd; -} - -.prose-big { - font-size: 18px; - line-height: 30px; -} - -.quiet { - opacity: 0.7; -} - -.minishadow { - box-shadow: 2px 2px 10px #f3f3f3; -} diff --git a/docs/api/config.json b/docs/api/config.json deleted file mode 100644 index dc3fec9e..00000000 --- a/docs/api/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "order": [ - "watchbot", - "messages", - "environment", - "tasks", - "taskStatus", - "finishedTask", - "notifications" - ] -} diff --git a/docs/api/index.html b/docs/api/index.html deleted file mode 100644 index 605f5713..00000000 --- a/docs/api/index.html +++ /dev/null @@ -1,2524 +0,0 @@ - - - - - @mapbox/watchbot 1.5.0 | Documentation - - - - - - -

    -
    -
    -
    -

    @mapbox/watchbot

    -
    1.5.0
    - -
    - -
    - -
    -
    -
    - - -
    - - -
    - -

    - watchbot -

    - - -
    - - -

    Watchbot's JavaScript API

    - - -
    watchbot
    - - - - - - - - - - - - - - - - - - - - -
    Static Members
    -
    - -
    -
    -
    - - merge -
    -
    - -
    - -
    -
    -
    - - main -
    -
    - -
    - -
    -
    -
    - - notifications -
    -
    - -
    - -
    -
    -
    - - messages -
    -
    - -
    - -
    -
    -
    - - tasks -
    -
    - -
    - -
    -
    -
    - - template -
    -
    - -
    - -
    -
    -
    - - log -
    -
    - -
    - -
    -
    -
    - - fetch -
    -
    - -
    - -
    - - - - - - -
    - - - - -
    - - -
    - -

    - notifications -

    - - -
    - - -

    An notifications object

    - - -
    notifications
    - - - - - - - - - - - - - - - - - - - - -
    Static Members
    -
    - -
    -
    -
    - - send(subject, message, callback) -
    -
    - -
    - -
    - - - - - - -
    - - - - -
    - - -
    - -

    - environment -

    - - -
    - - -

    Environment variables providing SQS message details to the processing task

    - - -
    environment
    - - - - - - - - - - - - -
    Properties
    -
    - -
    - MessageId (string) - : the SQS MessageId - - -
    - -
    - Subject (string) - : the message's subject - - -
    - -
    - Message (string) - : the message's body - - -
    - -
    - SentTimestamp (string) - : the time the message was sent - - -
    - -
    - ApproximateFirstReceiveTimestamp (string) - : the time the -message was first received - - -
    - -
    - ApproximateReceiveCount (string) - : the number of times the -message has been received - - -
    - -
    - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - messages -

    - - -
    - - -

    An SQS message tracker

    - - -
    messages
    - - - - - - - - - - - - - - - - - - - - -
    Static Members
    -
    - -
    -
    -
    - - poll(max, callback) -
    -
    - -
    - -
    -
    -
    - - complete(finishedTask, callback) -
    -
    - -
    - -
    - - - - - - -
    - - - - -
    - - -
    - -

    - tasks -

    - - -
    - - -

    An ECS task runner and status tracker

    - - -
    tasks
    - - - - - - - - - - - - - - - - - - - - -
    Static Members
    -
    - -
    -
    -
    - - run(env, callback) -
    -
    - -
    - -
    -
    -
    - - poll(callback) -
    -
    - -
    - -
    - - - - - - -
    - - - - -
    - - -
    - -

    - taskStatus -

    - - -
    - - -

    An array of finishedTask objects

    - - -
    taskStatus
    - - - - - - - - - - - - -
    Properties
    -
    - -
    - free (number) - : the difference between current and maximum -desired task concurrency. - - -
    - -
    - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - outcome -

    - - -
    - - -

    Possible task outcomes

    - - -
    outcome
    - - - - - - - - - - - - -
    Properties
    -
    - -
    - success (string) - : indicates that the container(s) provided an -exit code 0. The SQS message should be deleted. - - -
    - -
    - fail (string) - : indicates that the container(s) provided an exit -code 3. The SQS message should be deleted and a notification sent. - - -
    - -
    - noop (string) - : indicates that the container(s) provided an exit -code 4. The SQS message should be returned. - - -
    - -
    - retry (string) - : indicates that container(s) provided an unknown -or mismatched exit code. The SQS message should be returned and a -notification sent. - - -
    - -
    - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - success -

    - - -
    - - -

    A task's reason for finishing -If exit code is 0, return success. If exit code does not equal 0 and -stopped container reason is provided return that. Otherwise, return -stopped task reason.

    - - -
    success
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - finishedTask -

    - - -
    - - -

    An object providing information about the outcome of a task

    - - -
    finishedTask
    - - - - - - - - - - - - -
    Properties
    -
    - -
    - arns (object) - : indentifiers for resources involved in running the task - - -
      - -
    • arns.cluster string - -

      the ECS cluster's ARN

      -
    • - -
    • arns.instance string - -

      the EC2's ARN (use in ecs.describeContainerInstances requests)

      -
    • - -
    • arns.task string - -

      the tasks ARN (use in ecs.describeTasks requests)

      -
    • - -
    - -
    - -
    - reason (string) - : the ECS-provided reason that the task ended - - -
    - -
    - env (object) - : key-value pairs indicating the task's -environment variables - - -
    - -
    - outcome (string) - : one of the outcomes defined by -tasks.outcome - - -
    - -
    - - - - - - - - - - - - - -
    - - - - -
    - - -
    - -

    - WatchbotOutput -

    - - -
    - - -

    The Watchbot template builder output object

    - - -
    WatchbotOutput
    - - - - - - - - - - - - -
    Properties
    -
    - -
    - Resources (object) - : A CloudFormation Resources object - - -
    - -
    - Metadata (object) - : A CloudFormation Metadata object - - -
    - -
    - Mappings (object) - : A CloudFormation Mappings object - - -
    - -
    - refs (object) - : a set of CloudFormation -Ref -s to important -Watchbot resources. These references are only useful in the context of a -CloudFormation template. - - -
      - -
    • refs.logGroup object - -

      the name of the CloudWatch LogGroup to -which Watchbot will write watcher and worker logs.

      -
    • - -
    • refs.topic object - -

      the ARN for Watchbot's SNS topic. Publish -messages to this topic to trigger processing.

      -
    • - -
    • refs.queueUrl object - -

      the URL for Watchbot's SQS queue.

      -
    • - -
    • refs.queueArn object - -

      the ARN for Watchbot's SQS queue.

      -
    • - -
    • refs.accessKeyId object? - -

      if the user parameter was set to -true, this is an access key with permission to publish messages to Watchbot's -SNS topic.

      -
    • - -
    • refs.secretAccessKey object? - -

      if the user parameter was set to -true, this is a secret access key with permission to publish messages to Watchbot's -SNS topic.

      -
    • - -
    • refs.webhookEndpoint object? - -

      if the webhook parameter was -set to true, this is the URL for the ApiGateway endpoint. JSON payloads -POSTed to this endpoint will be passed through to Watchbot's SNS topic to -spawn processing.

      -
    • - -
    • refs.webhookKey object? - -

      if the webhookKey parameter was -set to true, this access token must be provided in all POST requests to the -webhook endpoint.

      -
    • - -
    - -
    - -
    - - - - - - - - - - - - - -
    - - - -
    -
    -
    - - - - diff --git a/docs/building-a-template.md b/docs/building-a-template.md deleted file mode 100644 index a4a502f2..00000000 --- a/docs/building-a-template.md +++ /dev/null @@ -1,128 +0,0 @@ -## Building a Watchbot template - -Watchbot provides two important methods to help you build a CloudFormation template: - -- **watchbot.template(options)** creates CloudFormation JSON objects for the various Resources that Watchbot needs in order to do its job. -- **watchbot.merge(...templates)** takes multiple CloudFormation templates and merges them together into a single JSON template. - -With those two tools in hand, creating a Watchbot stack will generally involve: -- determine the appropriate `options` to provide to `watchbot.template` for your situation. See the table below for more details on the various required options, optional ones, and default values. -- write a CloudFormation template that defines the configuration parameters, stack outputs, permissions required by your worker containers, and any additional resources that are required in order to process jobs. -- write a script which merges the two templates, adding Watchbot's resources to your template. -- use [cfn-config](https://github.com/mapbox/cfn-config) to deploy the template by referencing the script that you've written. - -As an example, consider a service where the workers are expected to manipulate objects in an S3 bucket. In the CloudFormation template, we wish to create the S3 bucket that our workers will interact with, and then build the Watchbot resources required to perform the task in response to SNS events. - -```js -var watchbot = require('@mapbox/watchbot'); - -// Build the parameters, resources, and outputs that your service needs -var myTemplate = { - Parameters: { - GitSha: { Type: 'String' }, - Cluster: { Type: 'String' }, - AlarmEmail: { Type: 'String' } - }, - Resources: { - MyBucket: { - Type: 'AWS::S3::Bucket', - Properties: { - Name: 'my-bucket' - } - } - } -}; - -// Generate Watchbot resources. You can use references to parameters and -// resources that were defined above. -var watch = watchbot.template({ - cluster: { Ref: 'Cluster' }, - service: 'my-repo-name', - serviceVersion: { Ref: 'GitSha' }, - env: { BucketName: 'my-bucket' }, - workers: 5, - reservation: { memory: 512 }, - notificationEmail: { Ref: 'AlarmEmail' }, - permissions: [ - { - Effect: 'Allow', - Action: ['s3:*'], - Resource: { - 'Fn::Join': ['', ['arn:aws:s3:::', { Ref: 'MyBucket' }]] - } - } - ] -}); - -module.exports = watchbot.merge(myTemplate, watch); -``` - -### watchbot.template options - -Use the following configuration options to adjust the resources that Watchbot will provide. Bold options must be provided. - -Name | Default | Description ---- | --- | --- -**cluster** | | the ARN for an ECS cluster -**service** | | the name of the worker service -**serviceVersion** | | the version of the worker service to use -**notificationEmail** | | the email address to receive failure notifications. Should not be provided if notificationTopic exists. -**notificationTopic** | | the ARN of an SNS topic to receive failure notifications. Should not be provided if notificationEmail exists. -alarmOnEachFailure | false | send a notification email each time a worker errors -alarmPeriods | 24 | number of 5-min intervals SQS must be above threshold to alarm -alarmThreshold | 40 | number of jobs in SQS to trigger alarm -command | | overrides a Dockerfile's `CMD` -debugLogs | false | enable verbose watcher logging -env | {} | environment variables to set on worker containers -family | service name | the name of the the task definition family that watchbot will create revisions of -errorThreshold | 10 | number of failed workers to trigger alarm -failedPlacementAlarmPeriods | 1 | number of 1-min intervals for which failed placements exceeds the threshold of 5 in order to alarm -logAggregationFunction | | the ARN of the log collection Lambda function -messageRetention | 1209600 | max seconds a message can remain in SQS -messageTimeout | 600 | max seconds it takes to process a job -mounts | | defines persistent container mount points from host EC2s or ephemeral mount points on the container -permissions | [] | permissions to any AWS resources that the worker will need to perform a task. Be sure to unwrap any `PolicyDocument` objects. The use of `PolicyDocument` here will pass `aws cloudformation validate-template`, but will prevent your stack from being created successfully. -placementConstraints | false | Add any [ECS task placement constraints](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) -prefix | `Watchbot` | a prefix for logical resource names -privileged | false | give the worker container elevated privileges on the host EC2 -reduce | false | enable reduce-mode (see below) -readCapacityUnits | 30 | approximate reads per second to progress table in reduce-mode -reservation | {} | specify desired memory/cpu reservations for worker containers -reservation.cpu | | specify a soft CPU limit -reservation.memory | 64 | specify a hard memory limit -reservation.softMemory | | specify a soft memory limit -user | false | create an IAM user with permission to publish -watchbotVersion | installed version | the version of watchbot to use -watchers | 1 | number of watcher containers -webhook | false | create an HTTPS endpoint to accept jobs -webbhookKey | false | require an access token on the webhook endpoint -workers | 1 | number of concurrent worker containers per watcher -writeCapacityUnits | 30 | approximate writes per second to progress table in reduce-mode - -### watchbot.template references - -After building Watchbot resources using `watchbot.template()`, you may wish to reference some of those resources. The object returned from `watchbot.template()` provides references to a few of its resources through a `.ref` property: - -Name | Description ---- | --- -.ref.logGroup | the CloudWatch LogGroup where watcher and worker container's logs are written -.ref.topic | the SNS topic that you can publish messages to in order to have them processed by Watchbot -.ref.queueUrl | the URL of the SQS Queue Watchbot built -.ref.queueArn | the ARN of the SQS Queue Watchbot built -.ref.queueName | the name of the SQS Queue Watchbot built -.ref.notificationTopic | the SNS topic that receives notifications when processing fails -.ref.webhookEnpoint | [conditional] if requested, the URL for the webhook endpoint -.ref.webhookKey | [conditional] if requested, the access token for making webhook requests -.ref.accessKeyId | [conditional] if requested, an AccessKeyId with permission to publish to Watchbot's SNS topic -.ref.secretAccessKey | [conditional] if requested, a SecretAccessKey with permission to publish to Watchbot's SNS topic -.ref.progressTable | [conditional] if running in reduce-mode, the name of the DynamoDB table that tracks job progress - -These properties each return CloudFormation references (i.e. `{ "Ref": "..." }` objects) that can be used in your template. In the above example, if I wanted my stack to output the SNS topic built by Watchbot, I could: - -```js -var outputs = { - Outputs: { SnsTopic: { Value: watcher.ref.topic } } -}; - -module.exports.watchbot.merge(myTemplate, watcher, outputs); -``` diff --git a/docs/command-line-utilities.md b/docs/command-line-utilities.md deleted file mode 100644 index 6c050a32..00000000 --- a/docs/command-line-utilities.md +++ /dev/null @@ -1,57 +0,0 @@ -## Command-line utilities - -``` -> watchbot --help - - Build an AWS stack to do your work for you - - USAGE: watchbot [OPTIONS] - - Commands: - worker-capacity assess available resources on the cluster - dead-letter triage messages in dead letter queue - - Options: - -h, --help show this help message - -s, --stack-name the full name of a watchbot stack - -r, --region the region of the stack (default us-east-1) -``` - -### worker-capacity - -`worker-capacity` helps estimate how many additional workers can be placed in -your service's cluster at its current capacity using the CPU and memory -reservations provided in your `watchbot.template`. - -You must provide both a service region and stack name to execute this command. Note -that your stack will need to expose the cluster ARN in your Watchbot stack `Outputs` -property. Pre-2.0 versions of Watchbot do not expose these outputs. - -### dead-letter - -`dead-letter` is an interactive tool for dealing with messages in Watchbot's [dead letter queue](./worker-retry-cycle.md#the-dead-letter-queue). - -You must provide both a service region and stack name to execute this command. Note -that your stack will need to expose the cluster ARN in your Watchbot stack `Outputs` -property. Pre-2.0 versions of Watchbot do not expose these outputs. - -### Dead letter workflow - -First, if your stack contains more than one watchbot system, you will first be prompted to select which one you wish to work with. If your stack contains only one watchbot system, you will proceed straight to the next step. - -You'll be asked with action you wish to take. Your choices are: - - - **Triage dead messages individually?**: interact with messages one-by-one - - **Print out all dead messages?**: This will print the subject and message of every job in the dead letter queue as line-delimited JSON strings - - **Return all dead messages to the work queue?**: Every message in the dead letter queue is sent back to Watchbot's primary work queue for another attempt. You will be asked to confirm before this will proceed. - - **Purge the dead letter queue?**: Deletes every message from the dead letter queue. If messages in the dead letter queue still need to be processed, you will have to send them to Watchbot's primary work queue again manually. You will be asked to confirm before this will proceed. - -If you selected individual triage, you'll be presented with a set of options for each message in the dead letter queue. - - - **View this message's recent logs?**: Queries CloudWatch Logs to try and find the most recent 50kb worth of logs related to the message. *Warning:* this can be quite slow. - - **Return this message to the work queue?**: Sends this message back to Watchbot's primary work queue for reprocessing. - - **Return this message to the dead letter queue?**: Puts the message back into the dead letter queue to be investigated later. - - **Delete this message entirely?**: Removes the message from the dead letter queue. If the message still needs to be processed, you will have to send it to Watchbot's primary work queue again manually. - - **Stop individual triage?**: Stop triaging and exit the CLI. - -Once all the messages in the dead letter queue have been either sent back to primary work queue or deleted, the CLI will exit. diff --git a/docs/logging-and-metrics.md b/docs/logging-and-metrics.md deleted file mode 100644 index 0003210a..00000000 --- a/docs/logging-and-metrics.md +++ /dev/null @@ -1,53 +0,0 @@ -## Logging - -Each Watchbot stack will write all its logs to a single CloudWatch LogGroup. The [awscli](http://docs.aws.amazon.com/cli/latest/reference/logs/index.html) or [cwlogs](https://github.com/mapbox/cwlogs) are a couple of tools that can be used to view log events in a LogGroup. - -If your host EC2s **are not** built from [ECS-optimized AMIs](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html), make sure that the `awslogs` driver is enabled on the ecs-agent by setting the following agent configuration: - -``` -ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] -``` - -See [the AWS documentation](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) for more information. - -### Formatting log messages - -In order to help isolate and aggregate logs from any single message, watchbot provides a logging helper that will prefix each line with the ID of the message being processed. Use these utilities in your worker scripts to make sure that your logs are consistent and easy to search. - -```js -var watchbot = require('@mapbox/watchbot'); - -// watchbot.log() works just like console.log() -var breakfast = 'eggs and beans'; -watchbot.log('This is something that I want logged: %s', breakfast); -// [Thu, 28 Jul 2016 00:12:37 GMT] [worker] [e2c045cc-5606-4950-964b-20877900bccb] This is something that I want logged: eggs and beans - -// watchbot.logStream() creates a writable stream that will log everything with watchbot.log -var logstream = watchbot.logStream(); -require('child_process').exec('cat ~/.bashrc').stdout.pipe(logstream); -``` - -There is also a CLI tool to accomplish the same task: - -```bash -# Perform this global installation in your Dockerfile -$ npm install -g watchbot - -# Log a single line instead of using `echo` -$ watchbot-log "This is something that I want logged: eggs and beans" - -# Pipe another command's output into watchbot-log -$ echo "This is something that I want logged: eggs and beans" | watchbot-log -``` - -## Custom metrics - -Custom metrics are collected under the namespace `Mapbox/ecs-watchbot`. They are mined via filters on CloudWatch logs, and can help you learn about the state of your Watchbot stack. Each custom metric is suffixed with your stack's name, e.g. `-MyWatchbotStack`. - -Metric | Description | Statistics ---- | --- | --- -**FailedWorkerPlacement** | The total number of times a watcher had difficulty placing a worker on the cluster - This probably means your concurrency is too high, your reservations are too high, or your cluster is too small | Sum -**WorkerErrors** | The total number of failed workers per minute. High levels of this error trigger the `WorkerErrors` alarm | Sum -**MessageReceives** | A metric collected for every received message that indicates how many times the message has been pulled from the queue | Maximum -**WatcherConcurrency** | The number of workers running per watcher | `Sum`and `Average` -**WorkerDuration** | The amount of time taken by a worker to run a task | `Average`, `Minimum` and `Maximum` diff --git a/docs/reduce-mode.md b/docs/reduce-mode.md deleted file mode 100644 index 2bc9fe84..00000000 --- a/docs/reduce-mode.md +++ /dev/null @@ -1,63 +0,0 @@ -## Reduce mode - -By setting the `Reduce` parameter to true, Watchbot will be capable of helping track the -progress of distributed map-reduce operations. This is useful if your stack performs -a bunch of individual jobs that need to be "rolled up" into a final output of some sort. - -### Messaging patterns - -Generally, a reduce-enabled Watchbot stack should be built in order to process three types -of messages: one type that kicks of a map-reduce operation, one type that processes -individual parts, and another type that performs the reduce or "roll up" operation. - -Your code should include all the logic required to interpret these different types -of messages. The flow of messages will generally be as follows: - -1. You (or some AWS resource) sends the initial message to your Watchbot stack's SNS -topic. When your code receives this message, it should: - - determine how the work will be split across multiple parts - - generate an identifier for the entire map-reduce operation - - report to Watchbot the identifier, and the number of parts - - send SNS messages to Watchbot's SNS topic for each part, providing the identifier - for the operation, and the part number. Part numbers start a `1` and increase up - to the total number of parts. -2. Watchbot will receive the "work" jobs that were sent by your initial message processor. -When your code receives these messages, it should: - - perform appropriate processing - - once processing is complete, report the identifier and the part number of the job - to Watchbot. In response, Watchbot will inform your code as to whether or not all - the parts in the map-reduce operation are completed. - - if the worker receives the notification that all parts are complete, the worker - should send a single message to Watchbot's SNS topic to trigger the reduce step -3. Upon receiving the reduce message, your code should take any appropriate roll-up -action. - -### Using watchbot-progress - -`watchbot-progress` is a CLI command that is available to use on a reduce-enabled -stack. This is one mechanism by which you can report progress to Watchbot as part -ofthe above messaging flow. - -For usage examples and and additional documentation, see [watchbot-progress](https://github.com/mapbox/watchbot-progress). - -Install Watchbot globally as part of your worker's Dockerfile to gain access to the -CLI command on your workers at runtime: - -``` -RUN npm install -g watchbot -``` - -``` -$ watchbot-progress [options] -``` - -Note that by default, workers in reduce-enabled Watchbot stacks will have the `$ProgressTable` -environment variable set automatically. For more information on this command, see - -#### Reporting progress in JavaScript - -A JavaScript module is also available as a mechanism for progress reporting. - -```js -var progress = require('@mapbox/watchbot').progress(); -``` diff --git a/docs/worker-retry-cycle.md b/docs/worker-retry-cycle.md index 2a6d1e55..740e47fe 100644 --- a/docs/worker-retry-cycle.md +++ b/docs/worker-retry-cycle.md @@ -1,6 +1,6 @@ ## Worker retry cycle -Any single Watchbot message will be attempted up to 10 times. Each time the message fails it is put back into the queue with an increasing backoff interval before it can be attempted again. These intervals look like: +Any single Watchbot message will be attempted up to `deadletterThreshold` times. Each time the message fails it is put back into the queue with an increasing backoff interval before it can be attempted again. These intervals look like: attempt number | backoff interval (s) --- | --- @@ -17,14 +17,15 @@ attempt number | backoff interval (s) This means that after a failure on the 9th attempt, the message will be invisible for at least 512 seconds before it is retried. Providing an increasing backoff interval with an increasing number of failures helps alleviate load that your processing may be placing on external systems. +The default `deadletterThreshold` is 10. The user can adjust while creating the +watchbot service. + Each time a message fails during processing, it is recorded in [the WorkerErrors or FailedWorkerPlacement metrics](./logging-and-metrics.md#custom-metrics). The [WorkerErrors alarm](./alarms.md#workererrors) will trigger whenever there are more than a configured number of failed attempts per minute. The [FailedWorkerPlacement alarm](./alarms.md#failedworkerplacement) will trigger if there are more than 5 failed placements per minute. If the 10th attempt to process a message fails, then the message will have been retrying for a minimum of 17 minutes, and at this point it will fall into a dead letter queue. -**Important: number of attempts != number of times a worker has tried to process a message**. If a cluster is full, Watchbot will attempt to place workers, fail, replace the messages in the queue, and try again. This counts as an attempt. If cluster capacity is a problem, the cluster basically has 17 minutes to accommodate the increased demand before message will start falling into the dead letter queue. During this time, Watchbot will also trip the [FailedWorkerPlacement alarm](./alarms.md#failedworkerplacement), in case manual intervention is required. - ## The dead letter queue -If a message fails processing 10 times, Watchbot will stop attempting it. The message will be dropped into a second SQS queue, called a dead letter queue. When there are **any** messages visible in this queue, Watchbot will trip the [DeadLetter alarm](./alarms.md#deadletter). This helps to give visibility into edge-case messages that may highlight a bug in worker code. +If a message fails processing deadletter Threshold times, Watchbot will stop attempting it. The message will be dropped into a second SQS queue, called a dead letter queue. When there are **any** messages visible in this queue, Watchbot will trip the [DeadLetter alarm](./alarms.md#deadletter). This helps to give visibility into edge-case messages that may highlight a bug in worker code. Once a message is in the dead letter queue, it will stay there until it is manually removed, or after 14 days. See [the CLI documentation](./command-line-utilities.md#dead-letter) for instructions for interacting with the dead letter queue. diff --git a/docs/worker-runtime-details.md b/docs/worker-runtime-details.md deleted file mode 100644 index cbe19d89..00000000 --- a/docs/worker-runtime-details.md +++ /dev/null @@ -1,40 +0,0 @@ -## Worker runtime environment - -In addition to any environment variables pre-configured for your worker via `watchbot.template()` (see below), Watchbot will provide each worker with a set of environment variables representing the details of the message which it should process: - -Name | Description ---- | --- -Subject | the message's subject -Message | the message's body -MessageId | the message's ID defined by SQS -SentTimestamp | the time the message was sent -ApproximateFirstReceiveTimestamp | the time the message was first attempted -ApproximateReceiveCount | the number of times the message has been attempted - -The environment will also contain some variables referencing resources that Watchbot created: - -Name | Description ---- | --- -WorkTopic | the ARN of the SNS topic that provides messages to SQS -LogGroup | the name of the CloudWatch LogGroup where logs are sent - -**:lock: Encrypting & decrypting environment variables** - -The recommended flow for deploying Watchbot stacks is to use [cfn-config(http://github.com/mapbox/cfn-config) which provides a `--kms` option for automatically encrypting CloudFormation parameters marked with `[secure]`. To decrypt at runtime, install [decrypt-kms-env](https://github.com/mapbox/decrypt-kms-env) as a dependency in your Dockerfile and invoke it in your `CMD`. Example: - -```Dockerfile -RUN eval $(./node_modules/.bin/decrypt-kms-env) && npm start -``` - -## Worker completion - -The exit code from your worker determines what the watcher will do with the message that was being processed. Your options are: - -Exit code | Description | Outcome ---- | --- | --- -0 | completed successfully | message is removed from the queue without notification -3 | rejected the message | message is removed from the queue and a notification is sent -4 | no-op | message is returned to the queue without notification -other | failure | message is returned to the queue and a notification is sent - -When a message is returned to the queue, it will be retried. [See the worker retry documentation](./worker-retry-cycle.md) for more info. diff --git a/index.js b/index.js index 517b4c72..07cebe03 100644 --- a/index.js +++ b/index.js @@ -1,33 +1,10 @@ -var cf = require('@mapbox/cloudfriend'); +'use strict'; -/** - * Watchbot's JavaScript API - * - * @name watchbot - */ module.exports = { - main: require('./lib/main'), - notifications: require('./lib/notifications'), - messages: require('./lib/messages'), - tasks: require('./lib/tasks'), template: require('./lib/template'), - log: require('./lib/logs').log, - logStream: require('./lib/logs').logStream, - fetch: require('./lib/logs').fetch, - progress: require('@mapbox/watchbot-progress').progress, - - /** - * Merges CloudFormation templates together. - * - * @static - * @memberof watchbot - * @name merge - * @param {...object} template - a CloudFormation template to merge with - * @returns {object} a CloudFormation template including all the Metadata, - * Parameters, Mappings, Conditions, Resources, and Outputs from the input - * templates - * @throws errors when there is overlap in logical resource names between - * templates - */ - merge: cf.merge + Messages: require('./lib/messages'), + Message: require('./lib/message'), + Worker: require('./lib/worker'), + Watcher: require('./lib/watcher'), + Logger: require('./lib/logger') }; diff --git a/lib/dead-letter.js b/lib/dead-letter.js deleted file mode 100644 index e199408f..00000000 --- a/lib/dead-letter.js +++ /dev/null @@ -1,350 +0,0 @@ -/* eslint-disable no-console */ - -var AWS = require('aws-sdk'); -var inquirer = require('inquirer'); -var stream = require('stream'); -var Queue = require('p-queue'); -var logs = require('./logs'); -var Spinner = require('cli-spinner').Spinner; - -module.exports = function(options, callback) { - var cfn = new AWS.CloudFormation({ region: options.region }); - var sqs = new AWS.SQS({ region: options.region }); - - var actions = { purge, writeOut, replay, triage }; - - findQueues(cfn, options) - .then((queues) => selectQueue(queues)) - .then((queue) => triageSelection(queue)) - .then((data) => actions[data.action](sqs, data.queue)) - .then(() => callback()) - .catch((err) => callback(err)); -}; - -function findQueues(cfn, options) { - return cfn.describeStacks({ StackName: options.stackName }).promise().then((res) => { - if (!res.Stacks[0]) - return Promise.reject(new Error(`Could not find ${options.stackName} in ${options.region}`)); - - var deadLetterQueues = res.Stacks[0].Outputs - .filter((o) => /DeadLetterQueueUrl/.test(o.OutputKey)) - .map((o) => ({ - prefix: o.OutputKey.replace('DeadLetterQueueUrl', ''), - url: o.OutputValue - })); - - var workQueues = res.Stacks[0].Outputs - .filter((o) => /QueueUrl/.test(o.OutputKey) && !/DeadLetterQueueUrl/.test(o.OutputKey)) - .map((o) => ({ - prefix: o.OutputKey.replace('QueueUrl', ''), - url: o.OutputValue - })); - - var logGroups = res.Stacks[0].Outputs - .filter((o) => /LogGroup/.test(o.OutputKey)) - .map((o) => ({ - prefix: o.OutputKey.replace('LogGroup', ''), - arn: o.OutputValue - })); - - return { deadLetterQueues, workQueues, logGroups }; - }); -} - -function selectQueue(queues) { - if (queues.deadLetterQueues.length === 1) return Promise.resolve({ - deadLetter: queues.deadLetterQueues[0].url, - work: queues.workQueues.find((queue) => queue.prefix === queues.deadLetterQueues[0].prefix).url, - logs: queues.logGroups.find((group) => group.prefix === queues.deadLetterQueues[0].prefix).arn - }); - - return inquirer.prompt([ - { - type: 'list', - name: 'queue', - message: 'Which queue would you like to triage?', - choices: queues.deadLetterQueues.map((queue) => queue.prefix) - } - ]).then((answers) => { - var deadLetterQueue = queues.deadLetterQueues.find((queue) => queue.prefix === answers.queue); - return { - deadLetter: deadLetterQueue.url, - work: queues.workQueues.find((queue) => queue.prefix === deadLetterQueue.prefix).url, - logs: queues.logGroups.find((group) => group.prefix === deadLetterQueue.prefix).arn - }; - }); -} - -function triageSelection(queue) { - return inquirer.prompt([ - { - type: 'list', - name: 'action', - message: 'Would you like to:', - choices: [ - 'Triage dead messages individually?', - 'Print out all dead messages?', - 'Return all dead messages to the work queue?', - 'Purge the dead letter queue?' - ] - } - ]).then((answers) => { - var mapping = { - 'Purge the dead letter queue?': 'purge', - 'Return all dead messages to the work queue?': 'replay', - 'Triage dead messages individually?': 'triage', - 'Print out all dead messages?': 'writeOut' - }; - - return { queue, action: mapping[answers.action] }; - }); -} - -function purge(sqs, queue) { - return inquirer.prompt([ - { - type: 'confirm', - name: 'purge', - message: 'You are about to remove all jobs from the dead letter queue permanently. Are you sure?' - } - ]).then((answers) => { - if (answers.purge) - return sqs.purgeQueue({ QueueUrl: queue.deadLetter }).promise(); - return Promise.resolve(); - }); -} - -function writeOut(sqs, queue) { - var reciever = receiveAll(sqs, queue.deadLetter); - - var stringifier = new stream.Transform({ - objectMode: true, - transform: function(msg, _, callback) { - var data = { subject: msg.subject, message: msg.message }; - this.push(`${JSON.stringify(data)}\n`); - stringifier.handles.push(msg.handle); - callback(); - } - }); - stringifier.handles = []; - - return new Promise((resolve, reject) => { - var done = () => returnMany(sqs, queue.deadLetter, stringifier.handles) - .then(() => resolve()) - .catch((err) => reject(err)); - - reciever - .on('error', reject) - .pipe(stringifier) - .on('error', reject) - .on('end', done) - .pipe(process.stdout); - }); -} - -function replay(sqs, queue) { - return inquirer.prompt([ - { - type: 'confirm', - name: 'replayAll', - message: 'You are about to return all messages in the dead letter queue to the work queue. Are you sure?' - } - ]).then((answers) => { - if (!answers.replayAll) return Promise.resolve(); - - var spinner = new Spinner('Returning all dead messages to the work queue...'); - spinner.setSpinnerString('⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆'); - spinner.start(); - - var reciever = receiveAll(sqs, queue.deadLetter); - - var replayer = new stream.Writable({ - objectMode: true, - write: function(msg, _, callback) { - replayOne(sqs, queue.work, msg) - .then(() => deleteOne(sqs, queue.deadLetter, msg)) - .then(() => callback()) - .catch((err) => callback(err)); - } - }); - - return new Promise((resolve, reject) => { - reciever - .on('error', reject) - .pipe(replayer) - .on('error', reject) - .on('finish', resolve); - }) - .then(() => spinner.stop(true)); - }); -} - -function triage(sqs, queue) { - return new Promise((resolve, reject) => { - (function recurse() { - triageOne(sqs, queue) - .then(() => recurse()) - .catch((err) => { - if (err.finished) return resolve(); - reject(err); - }); - })(); - }); -} - -function triagePrompts(sqs, queue, message) { - var actions = { replayOne, returnOne, deleteOne }; - - return inquirer.prompt([ - { - type: 'list', - name: 'action', - message: 'Would you like to:', - choices: [ - 'View this message\'s recent logs?', - 'Return this message to the work queue?', - 'Return this message to the dead letter queue?', - 'Delete this message entirely?', - 'Stop individual triage?' - ] - } - ]).then((answers) => { - var mapping = { - 'View this message\'s recent logs?': 'logs', - 'Return this message to the work queue?': 'replayOne', - 'Return this message to the dead letter queue?': 'returnOne', - 'Delete this message entirely?': 'deleteOne', - 'Stop individual triage?': 'stop' - }; - - var choice = mapping[answers.action]; - var queueUrl = choice === 'replayOne' ? queue.work : queue.deadLetter; - - if (choice === 'logs') return getLogs(sqs, queue, message); - - if (choice === 'stop') return returnOne(sqs, queueUrl, message) - .then(() => Promise.reject({ finished: true })); - - if (choice === 'replayOne') return replayOne(sqs, queueUrl, message) - .then(() => deleteOne(sqs, queue.deadLetter, message)); - - return actions[choice](sqs, queueUrl, message); - }); -} - -function triageOne(sqs, queue) { - return receive(sqs, 1, queue.deadLetter) - .then((messages) => { - var message = messages[0]; - if (!message) return Promise.reject({ finished: true }); - - console.log(''); - console.log(`Subject: ${message.subject}`); - console.log(`Message: ${message.message}`); - - return triagePrompts(sqs, queue, message); - }); -} - -function receive(sqs, count, queueUrl) { - return sqs.receiveMessage({ - QueueUrl: queueUrl, - WaitTimeSeconds: 1, - MaxNumberOfMessages: count, - VisibilityTimeout: 10 * 60 - }).promise().then((data) => (data.Messages || []).map((message) => ({ - id: message.MessageId, - body: message.Body, - subject: JSON.parse(message.Body).Subject, - message: JSON.parse(message.Body).Message, - handle: message.ReceiptHandle - }))); -} - -function returnOne(sqs, queueUrl, message) { - var handle = typeof message === 'string' ? message : message.handle; - return sqs.changeMessageVisibility({ - QueueUrl: queueUrl, - ReceiptHandle: handle, - VisibilityTimeout: 0 - }).promise(); -} - -function returnMany(sqs, queueUrl, handles) { - var spinner = new Spinner(`Returning ${handles.length} jobs to the queue...`); - spinner.setSpinnerString('⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆'); - spinner.start(); - - var queue = new Queue({ concurrency: 10 }); - var returns = handles.map((handle) => queue.add(() => returnOne(sqs, queueUrl, handle))); - return Promise.all(returns) - .then(() => spinner.stop(true)); -} - -function replayOne(sqs, queueUrl, message) { - return sqs.sendMessage({ - QueueUrl: queueUrl, - MessageBody: message.body - }).promise(); -} - -function deleteOne(sqs, queueUrl, message) { - return sqs.deleteMessage({ - QueueUrl: queueUrl, - ReceiptHandle: message.handle - }).promise(); -} - -function receiveAll(sqs, queueUrl) { - var messages = []; - var pending = false; - - var next = function() { - pending = true; - return receive(sqs, 10, queueUrl).then((msgs) => { - pending = false; - msgs.forEach((msg) => messages.push(msg)); - if (!msgs.length) next = null; - }); - }; - - return new stream.Readable({ - objectMode: true, - read: function() { - var status = true; - while (status && messages.length) status = this.push(messages.shift()); - if (messages.length) return; - if (!next) return this.push(null); - if (status && !pending) return next() - .then(() => this._read()) - .catch((err) => this.emit('error', err)); - } - }); -} - -function getLogs(sqs, queue, message) { - var spinner = new Spinner('Searching CloudWatch logs...'); - spinner.setSpinnerString('⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆'); - spinner.start(); - - return new Promise((resolve, reject) => { - logs.fetch(queue.logs, message.message, (err, data) => { - if (err) return reject(err); - - var re = new RegExp(`\\[watchbot\\] \\[(.*?)\\] {"subject":".*?","message":"${message.message}"`); - var line = data.split('\n').find((line) => re.test(line)); - if (!line) return Promise.resolve('Could not find any matching logs\n'); - - var id = line.match(re)[1]; - logs.fetch(queue.logs, id, (err, data) => { - if (err) return reject(err); - resolve(data); - }); - }); - }).then((data) => { - spinner.stop(true); - console.log(); - console.log(data); - return triagePrompts(sqs, queue, message); - }); -} diff --git a/lib/logger.js b/lib/logger.js new file mode 100644 index 00000000..6dc0a8c0 --- /dev/null +++ b/lib/logger.js @@ -0,0 +1,70 @@ +'use strict'; + +const stream = require('stream'); +const split = require('binary-split'); +const combiner = require('stream-combiner2'); + +class Logger { + constructor(type, message) { + if (type !== 'watcher' && type !== 'worker') + throw new Error(`Invalid logger type: ${type}`); + + if (message && !(message instanceof require('./message'))) + throw new Error('Invalid message'); + + this.type = type; + this.message = message; + } + + messageReceived() { + this.log( + JSON.stringify({ + subject: this.message.env.Subject, + message: this.message.env.Message, + receives: this.message.env.ApproximateReceiveCount + }) + ); + } + + workerSuccess(results) { + this.log(JSON.stringify(results)); + } + + workerFailure(results) { + this.log(`[failure] ${JSON.stringify(results)}`); + } + + workerError(err) { + this.log(`[error] [worker] ${err.message}`); + } + + queueError(err) { + this.log(`[error] [sqs] ${err.message}`); + } + + log(line) { + let leader = ''; + leader += `[${new Date().toGMTString()}] `; + leader += `[${this.type}] `; + if (this.message) leader += `[${this.message.id}] `; + process.stdout.write(`${leader}${line}\n`); + } + + stream() { + const writable = new stream.Writable(); + const splitter = split(); + + writable._write = (line, enc, callback) => { + this.log(line.toString()); + callback(); + }; + + return combiner([splitter, writable]); + } + + static create(options, message) { + return new Logger(options, message); + } +} + +module.exports = Logger; diff --git a/lib/logs.js b/lib/logs.js deleted file mode 100644 index 82cbecff..00000000 --- a/lib/logs.js +++ /dev/null @@ -1,89 +0,0 @@ -var fastlog = require('fastlog'); -var cwlogs = require('cwlogs'); -var stream = require('stream'); -var split = require('binary-split'); -var combine = require('stream-combiner'); - -module.exports.log = log; -module.exports.logStream = logStream; -module.exports.fetch = fetch; - -/** - * Writes logs to stdout prefixed with a timestamp, category, and message id. Usage - * is identical to `console.log` - * - * @static - * @memberof watchbot - * @name log - * @param {string} msg - a string containing one or more substition strings - * @param {string} subst1 - strings with which to replace substitution strings within `msg` - */ -function log() { - var template = '[${timestamp}] [${category}] [' + process.env.MessageId + ']'; - var logger = fastlog('worker', 'info', template); - logger.info.apply(null, arguments); -} - -function logStream() { - var writable = new stream.Writable(); - var splitter = split(); - - writable._write = function(line, enc, callback) { - log(line.toString()); - callback(); - }; - - return combine([splitter, writable]); -} - -/** - * Retrieve container logs from CloudWatch logs. This function searches the last - * 15 minutes of available logs, and returns up to 50kb of the most recent events - * - * @static - * @memberof watchbot - * @name fetch - * @param {string} logGroup - the ARN of the CloudWatch LogGroup - * @param {string} messageId - the SQS message id to search for - * @param {function} callback - a function that will be given a string of logs - */ -function fetch(logGroup, messageId, callback) { - var readable = cwlogs.readable({ - region: logGroup.split(':')[3], - group: logGroup.split(':')[6], - pattern: messageId, - messages: true, - start: Date.now() - 6 * 60 * 60 * 1000 - }).on('error', callback); - - var writable = new stream.Writable(); - writable.buffer = []; - writable.buffer.current = 0; - - writable.buffer.add = function(line) { - if (writable.buffer.current + line.length < 50 * 1024) { - writable.buffer.current += line.length; - writable.buffer.push(line); - } else { - var drop = writable.buffer.shift(); - if (!drop) { - var truncate = line.substring(0, 50 * 1024 - 5) + '...'; - writable.buffer.add(truncate); - } else { - writable.buffer.current -= drop.length; - writable.buffer.add(line); - } - } - }; - - writable._write = function(line, enc, callback) { - writable.buffer.add(line.toString()); - callback(); - }; - - writable.on('finish', function() { - callback(null, writable.buffer.join('\n') + '\n'); - }).on('error', callback); - - readable.pipe(split()).pipe(writable); -} diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 045b7868..00000000 --- a/lib/main.js +++ /dev/null @@ -1,238 +0,0 @@ -var events = require('events'); -var fastlog = require('fastlog'); -var d3 = require('d3-queue'); -var stop = false; - -/** - * The main Watchbot loop - * - * @static - * @memberof watchbot - * @name main - * @param {object} config - configuration parameters - * @param {string} config.NotificationTopic - the ARN for the notification SNS topic - * @param {string} config.Cluster - the ARN for the ECS cluster - * @param {string} config.TaskDefinition - the ARN for the worker task definition - * @param {string} config.ContainerName - the name of the container defined by the TaskDefinition - * @param {number} config.Concurrency - the number of concurrent tasks - * @param {string} config.QueueUrl - the URL for the SQS queue - * @param {string} config.TaskEventQueueUrl - the URL for the SQS queue containing task-state events - * @param {string} config.StackName - the name of the CFN stack - * @param {boolean} config.AlarmOnEachFailure - whether to send errors when workers fail - * @param {string} [config.LogLevel=info] - fastlog log level - * @returns {object} an event emitter that will emit an `finish` event if the - * main loop is stopped. - */ -module.exports = function(config) { - var template = '[${timestamp}] [${category}]'; - var log = fastlog('watchbot', config.LogLevel || 'info', template); - var emitter = new events.EventEmitter(); - - var tasks = require('../lib/tasks')( - config.Cluster, - config.TaskDefinition, - config.ContainerName, - Number(config.Concurrency), - config.TaskEventQueueUrl, - config.StackName - ).on('error', function(err) { - log.error('Error in tasks: %s', err.message); - }); - - var messages = require('../lib/messages')( - config.QueueUrl, - config.NotificationTopic, - config.StackName, - config.AlarmOnEachFailure === 'true' || config.AlarmOnEachFailure === true ? true : false, - config.LogGroupArn - ); - - (function status() { - log.info(JSON.stringify({ - max: config.Concurrency, - concurrency: Object.keys(tasks.inFlight).length, - messages: Object.keys(messages.inFlight).length - })); - - setTimeout(status, 60000).unref(); - })(); - - (function main() { - log.debug('[debug] starting loop'); - log.debug('[debug] should stop: %s', stop); - if (stop) { - emitter.emit('finish'); - tasks.stop(); - return stop = false; - } - - // First, poll for status of any running tasks - log.debug('[debug] poll tasks'); - tasks.poll(function(err, status) { - if (err) { - log.error(err); - return setTimeout(main, 1000, config, emitter); - } - - // If there are no free tasks, wait a second before polling tasks again - log.debug('[debug] %s tasks in-flight: %s', Object.keys(tasks.inFlight).length, Object.keys(tasks.inFlight).join(', ')); - log.debug('[debug] task polling result: %j', status); - log.debug('[debug] free tasks: %s/%s', status.free, config.Concurrency); - if (!status || !status.free) - return setTimeout(main, 1000, config, emitter); - - gotTasks(status); - }); - - // There are free tasks indicated by the `status` array - function gotTasks(status) { - var queue = d3.queue(10); - - // Handle each finished task - status.forEach(function(finishedTask) { - log.info( - '[%s] %s', - finishedTask.env.MessageId, - JSON.stringify({ - outcome: tasks.report(finishedTask.outcome), - reason: finishedTask.reason, - duration: Math.ceil(finishedTask.duration / 1000), - pending: Math.ceil(finishedTask.pending / 1000) - }) - ); - queue.defer(messages.complete, finishedTask); - }); - - queue.awaitAll(function(err) { - if (err) log.error(err); - completedTasks(status); - }); - } - - function completedTasks(status) { - log.debug('[debug] poll for %s messages', status.free); - messages.poll(status.free, function(err, envs, skips) { - if (err) log.error(err); - - // If there are no messages, wait a second before repeating - log.debug('[debug] %s messages in flight: %s', Object.keys(messages.inFlight).length, Object.keys(messages.inFlight).join(', ')); - log.debug('[debug] messages received: %s', envs ? envs.length : 0); - - var queue = d3.queue(10); - - // Log duplicate receives, and stop in-flight tasks if they are pending - if (skips) { - skips.forEach(function(skipped) { - log.info( - '[%s] [duplicate-receive] %s', - skipped.MessageId, - JSON.stringify({ - subject: skipped.Subject, - message: skipped.Message.substr(0, 2048), - receives: skipped.ApproximateReceiveCount - }) - ); - - queue.defer(function(next) { - tasks.stopIfPending(skipped, function(err, stopped) { - if (err) return next(err); - - if (!stopped) return next(); - - log.info( - '[%s] [stopped-pending] %s', - skipped.MessageId, - JSON.stringify({ - subject: skipped.Subject, - message: skipped.Message.substr(0, 2048), - receives: skipped.ApproximateReceiveCount - }) - ); - - messages.complete({ - arns: {}, - reason: 'Task stuck in PENDING state', - env: skipped, - outcome: tasks.outcome.noop - }, function(err) { - if (err) log.error(err); - next(); - }); - }); - }); - }); - } - - queue.awaitAll(function(err) { - if (err) log.error(err); - - if (!envs || !envs.length) - return setTimeout(main, 1000, config, emitter); - - messagesPolled(envs); - }); - }); - } - - // There are messages to process - function messagesPolled(envs) { - var queue = d3.queue(10); - - // Run a task for each message - envs.forEach(function(env) { - queue.defer(function(next) { - tasks.run(env, function(err) { - if (!err) { - log.info( - '[%s] %s', - env.MessageId, - JSON.stringify({ - subject: env.Subject, - message: env.Message.substr(0, 2048), - receives: env.ApproximateReceiveCount - }) - ); - return next(); - } - - log.warn( - '[%s] %s', - env.MessageId, - JSON.stringify({ - failedPlacement: 'true', - reason: err.message - }) - ); - - messages.complete({ - arns: {}, - reason: err.message, - env: env, - outcome: err.code === 'NotRun' ? tasks.outcome.noop : tasks.outcome.retry - }, function(err) { - if (err) log.error(err); - next(); - }); - }); - }); - }); - - queue.awaitAll(function() { - // Wait a second before repeating the process - log.debug('[debug] ran tasks'); - return setTimeout(main, 1000, config, emitter); - }); - } - })(); - - return emitter; -}; - -/** - * Signals the main loop to shut down. - * - * @memberof watchbot.main - */ -module.exports.end = function() { - stop = true; -}; diff --git a/lib/message.js b/lib/message.js new file mode 100644 index 00000000..a0198ad1 --- /dev/null +++ b/lib/message.js @@ -0,0 +1,88 @@ +'use strict'; + +const url = require('url'); +const AWS = require('aws-sdk'); +const Logger = require('./logger'); + +class Message { + constructor(sqsMessage = {}, options = {}) { + let valid = ['Body', 'MessageId', 'ReceiptHandle', 'Attributes'].reduce( + (valid, key) => { + if (!valid) return false; + return sqsMessage.hasOwnProperty(key); + }, + true + ); + + if (!valid) throw new Error('Invalid SQS message object'); + + valid = [ + 'SentTimestamp', + 'ApproximateFirstReceiveTimestamp', + 'ApproximateReceiveCount' + ].reduce((valid, key) => { + if (!valid) return false; + return sqsMessage.Attributes.hasOwnProperty(key); + }, true); + + if (!valid) throw new Error('Invalid SQS message attributes'); + + if (!options.queueUrl) throw new Error('Missing options: queueUrl'); + + const snsMessage = JSON.parse(sqsMessage.Body); + + this.id = sqsMessage.MessageId; + this.handle = sqsMessage.ReceiptHandle; + + this.env = { + MessageId: sqsMessage.MessageId, + Subject: snsMessage.Subject, + Message: snsMessage.Message, + SentTimestamp: new Date( + Number(sqsMessage.Attributes.SentTimestamp) + ).toISOString(), + ApproximateFirstReceiveTimestamp: new Date( + Number(sqsMessage.Attributes.ApproximateFirstReceiveTimestamp) + ).toISOString(), + ApproximateReceiveCount: sqsMessage.Attributes.ApproximateReceiveCount.toString() + }; + + this.sqs = new AWS.SQS({ + region: url.parse(options.queueUrl).host.split('.')[1], + params: { QueueUrl: options.queueUrl } + }); + + this.logger = Logger.create('watcher', this); + } + + async retry() { + const receives = Number(this.env.ApproximateReceiveCount); + if (receives > 14) return; + + const params = { + ReceiptHandle: this.handle, + VisibilityTimeout: Math.pow(2, receives) + }; + + try { + return await this.sqs.changeMessageVisibility(params).promise(); + } catch (err) { + this.logger.queueError(err); + } + } + + async complete() { + const params = { ReceiptHandle: this.handle }; + try { + return await this.sqs.deleteMessage(params).promise(); + } catch (err) { + this.logger.queueError(err); + } + } + + static create(sqsMessage, options) { + return new Message(sqsMessage, options); + } +} + +module.exports = Message; diff --git a/lib/messages.js b/lib/messages.js index de5b3cd4..3c0e4102 100644 --- a/lib/messages.js +++ b/lib/messages.js @@ -1,190 +1,64 @@ -var url = require('url'); -var util = require('util'); -var AWS = require('aws-sdk'); -var d3 = require('d3-queue'); -var notifications = require('./notifications'); -var logs = require('./logs'); +'use strict'; -function messageToEnv(message) { - var snsMessage = JSON.parse(message.Body); +const url = require('url'); +const AWS = require('aws-sdk'); +const Logger = require('./logger'); +const Message = require('./message'); - /** - * Environment variables providing SQS message details to the processing task - * - * @name environment - * @property {string} MessageId - the SQS MessageId - * @property {string} Subject - the message's subject - * @property {string} Message - the message's body - * @property {string} SentTimestamp - the time the message was sent - * @property {string} ApproximateFirstReceiveTimestamp - the time the - * message was first received - * @property {string} ApproximateReceiveCount - the number of times the - * message has been received - */ - return { - MessageId: message.MessageId, - Subject: snsMessage.Subject, - Message: snsMessage.Message, - SentTimestamp: message.Attributes.SentTimestamp.toString(), - ApproximateFirstReceiveTimestamp: message.Attributes.ApproximateFirstReceiveTimestamp.toString(), - ApproximateReceiveCount: message.Attributes.ApproximateReceiveCount.toString() - }; -} - -/** - * Creates messages objects - * - * @static - * @memberof watchbot - * @name messages - * @param {string} queue - the URL of an SQS queue - * @param {string} topic - the ARN of an SNS topic for failure notifications - * @param {string} stackName - the name of the CloudFormation stack - * @param {boolean} sendNotifications - whether to send a notification email - * each time an invocation fails. - * @param {string} [logGroup] - the ARN of a CloudWatch LogGroup where container - * logs are written - * @returns {object} a {@link messages} object - */ -module.exports = function(queue, topic, stackName, sendNotifications, logGroup) { - var sqs = new AWS.SQS({ - region: url.parse(queue).host.split('.')[1], - params: { QueueUrl: queue } - }); +class Messages { + constructor(options = {}) { + if (!options.queueUrl) throw new Error('Missing options: queueUrl'); + this.options = options; - /** - * An SQS message tracker - */ - var messages = {}; + this.sqs = new AWS.SQS({ + region: url.parse(options.queueUrl).host.split('.')[1], + params: { QueueUrl: options.queueUrl } + }); - var sendNotification = notifications(topic).send; - var messagesInFlight = messages.inFlight = {}; + this.logger = Logger.create('watcher'); + } - /** - * Poll SQS to find jobs - * - * @param {number} max - the maximum number of jobs to take from the queue (max 10) - * @param {function} callback - a function called after polling completes. The - * callback will be provided with an object of key-value object pairs representing - * environment variables (see {@link environment}) to be provided to a task - */ - messages.poll = function(max, callback) { - sqs.receiveMessage({ + async waitFor(num = 1) { + const params = { AttributeNames: [ 'SentTimestamp', 'ApproximateFirstReceiveTimestamp', 'ApproximateReceiveCount' ], WaitTimeSeconds: 20, - MaxNumberOfMessages: Math.min(max, 10) - }, function(err, data) { - if (err) return callback(err); - - if (!data.Messages || !data.Messages.length) - return callback(null, []); - - var skips = []; - var envs = data.Messages.filter(function(message) { - var isInFlight = messagesInFlight[message.MessageId]; - if (isInFlight) skips.push(messageToEnv(message)); - messagesInFlight[message.MessageId] = message.ReceiptHandle; - return !isInFlight; - }).map(function(message) { - return messageToEnv(message); - }); - - callback(null, envs, skips); - }); - }; - - /** - * Handle a completed SQS message - * - * @param {object} finishedTask - a {@link fainishedTask} object defining the task outcome - * @param {function} callback - a function called when the finished job has been - * handled appropriately - */ - messages.complete = function(finishedTask, callback) { - var queue = d3.queue(2); - - var messageId = finishedTask.env.MessageId; - var receives = Number(finishedTask.env.ApproximateReceiveCount); - var handle = messagesInFlight[messageId]; - - if (!handle) return allDone(); - - function messageMissing(err) { - return /Message does not exist or is not available for visibility timeout change/.test(err.message); - } - - finishedTask.outcome.split(' & ').forEach(function(toDo) { - if (toDo === 'delete') { - queue.defer(function(next) { - sqs.deleteMessage({ ReceiptHandle: handle }, function(err) { - if (err && messageMissing(err)) return next(); - next(err); - }); + MaxNumberOfMessages: Math.min(num, 10) + }; + + return new Promise((resolve) => { + const poll = async () => { + if (this.stop) return resolve(); + + let data; + try { + data = await this.sqs.receiveMessage(params).promise(); + } catch (err) { + this.logger.queueError(err); + return setImmediate(poll); + } + + if (!data.Messages || !data.Messages.length) return setImmediate(poll); + + const messages = data.Messages.map((msg) => { + const message = Message.create(msg, this.options); + message.logger.messageReceived(); + return message; }); - } - - if (toDo === 'return' || toDo === 'immediate') { - queue.defer(function(next) { - if (receives > 14) return next(); - sqs.changeMessageVisibility({ - ReceiptHandle: handle, - VisibilityTimeout: Math.pow(2, receives) - }, function(err) { - if (err && messageMissing(err)) return next(); - next(err); - }); - }); - } + return resolve(messages); + }; - if (toDo === 'notify' && sendNotifications) { - var subject = util.format('%s failed processing message %s', stackName, messageId); - if (subject.length > 100) subject = util.format('%s failed task', stackName); - if (subject.length > 100) subject = util.format('Watchbot task failure: %s', messageId); - - var message = util.format('At %s, processing message %s failed on %s\n\n', (new Date()).toUTCString(), messageId, stackName); - - message += util.format('Task outcome: %s\n\n', finishedTask.outcome); - message += util.format('Task stopped reason: %s\n\n', finishedTask.reason); - - message += 'Message information:\n'; - Object.keys(finishedTask.env).forEach(function(key) { - message += util.format('%s: %s\n', key, finishedTask.env[key]); - }); - - message += '\nRuntime resources:\n'; - message += util.format('Cluster ARN: %s\n', finishedTask.arns.cluster); - message += util.format('Instance ARN: %s\n', finishedTask.arns.instance); - message += util.format('Task ARN: %s\n', finishedTask.arns.task); - - if (!logGroup) return queue.defer(sendNotification, subject, message); - - queue.defer(function(next) { - logs.fetch(logGroup, messageId, function(err, data) { - if (err) return next(err); - - message += '\nRecent logs:\n'; - message += data; - - sendNotification(subject, message, next); - }); - }); - } + poll(); }); + } - function allDone(err) { - if (!finishedTask.skip) delete messagesInFlight[messageId]; - callback(err); - } - - queue.awaitAll(allDone); - }; - - return messages; -}; + static create(options) { + return new Messages(options); + } +} -module.exports.messageToEnv = messageToEnv; +module.exports = Messages; diff --git a/lib/notifications.js b/lib/notifications.js deleted file mode 100644 index 9d5ea6f1..00000000 --- a/lib/notifications.js +++ /dev/null @@ -1,37 +0,0 @@ -var AWS = require('aws-sdk'); - -/** - * Creates notifications objects - * - * @static - * @memberof watchbot - * @name notifications - * @param {string} topic - the ARN of an SNS topic to receive notifications - * @returns {object} an {@link notifications} object - */ -module.exports = function notifications(topic) { - var sns = new AWS.SNS({ - region: topic.split(':')[3], - params: { TopicArn: topic } - }); - - /** - * An notifications object - */ - var notifications = {}; - - /** - * Send a notification to the SNS topic - * - * @param {string} subject - the subject of the message - * @param {string} message - the body of the message - * @param {function} callback - a function to call when the notification has - * been sent - */ - notifications.send = function(subject, message, callback) { - callback = callback || function() {}; - sns.publish({ Subject: subject, Message: message }, callback); - }; - - return notifications; -}; diff --git a/lib/tasks.js b/lib/tasks.js deleted file mode 100644 index 498e5570..00000000 --- a/lib/tasks.js +++ /dev/null @@ -1,321 +0,0 @@ -'use strict'; - -var AWS = require('aws-sdk'); -var url = require('url'); -var events = require('events'); -var d3 = require('d3-queue'); - -function envToRunTaskParams(env, taskDefinition, containerName, startedBy) { - return { - startedBy: startedBy ? startedBy.slice(0, 36) : 'watchbot', - taskDefinition: taskDefinition, - overrides: { - containerOverrides: [ - { - name: containerName, - environment: Object.keys(env).map(function(key) { - return { name: key, value: env[key] }; - }) - } - ] - } - }; -} - -/** - * Creates tasks objects - * - * @static - * @memberof watchbot - * @name tasks - * @param {string} cluster - the ARN of the ECS cluster to run tasks on - * @param {string} taskDefinition - the ARN of the processing TaskDefinition to run - * @param {string} containerName - the name of the container defined by the TaskDefinition - * @param {number} concurrency - the desired task concurrency - * @param {string} queue - the SQS URL that receives task-status events - * @param {string} [startedBy=watchbot] - the desired `startedBy` string for worker tasks - * @returns {object} a {@link tasks} object - */ -module.exports = function(cluster, taskDefinition, containerName, concurrency, queue, startedBy) { - var ecs = new AWS.ECS({ - region: cluster.split(':')[3], - params: { cluster: cluster } - }); - - var sqs = new AWS.SQS({ - region: url.parse(queue).host.split('.')[1], - params: { QueueUrl: queue } - }); - - /** - * An ECS task runner and status tracker - */ - var tasks = new events.EventEmitter(); - - var taskStateCache = new TaskStateCache(sqs).startPolling(); - taskStateCache.on('error', function(err) { tasks.emit('error', err); }); - tasks.stop = function() { taskStateCache.stopPolling(); }; - tasks.inFlight = taskStateCache.inFlight; - - /** - * Runs a task if currently below desired concurrency - * - * @param {object} env - key-value pairs of environment variables to provide - * to the task - * @param {function} callback - a function to run when the task has been started. - * An error object with code `AboveConcurrency` indicates that there are already - * the maximum number of concurrent tasks running. - */ - tasks.run = function(env, callback) { - if (taskStateCache.inFlightCount >= concurrency) { - var err = new Error('Above desired concurrency'); - err.code = 'AboveConcurrency'; - return callback(err); - } - - var params = envToRunTaskParams(env, taskDefinition, containerName, startedBy); - - ecs.runTask(params, function(err, data) { - if (err) return callback(err); - - data.tasks.forEach(function(task) { - taskStateCache.taskStarted(task.taskArn, env); - }); - - if (data.failures && data.failures.length) { - err = new Error(data.failures[0].reason); - err.code = 'NotRun'; - return callback(err); - } - - callback(); - }); - }; - - tasks.outcome = outcome; - - tasks.report = function(outcome) { - switch(outcome) { - case tasks.outcome.success: return 'success'; - case tasks.outcome.noop: return 'no-op, will retry'; - case tasks.outcome.fail: return 'failed, removed from queue'; - case tasks.outcome.retry: return 'failed, will retry'; - } - }; - - /** - * Checks the status of all pending tasks - * - * @param {function} callback - a function to handle the response. Will be - * provided a {@link taskStatus} object. - */ - tasks.poll = function(callback) { - /** - * An array of {@link finishedTask} objects - * - * @property {number} free - the difference between current and maximum - * desired task concurrency. - */ - var taskStatus = taskStateCache.completedTasks; - taskStatus.free = concurrency - taskStateCache.inFlightCount; - setImmediate(callback, null, taskStatus); - }; - - tasks.stopIfPending = function(env, callback) { - var taskArn = taskStateCache.messageIndex[env.MessageId]; - - if (!taskArn) return callback(null, false); - - ecs.describeTasks({ tasks: [taskArn] }, function(err, data) { - if (err) return callback(err); - - var isPending = data.tasks[0].lastStatus === 'PENDING'; - if (!isPending) return callback(null, false); - - ecs.stopTask({ task: taskArn }, function(err) { - if (err) return callback(err); - callback(null, true); - }); - }); - }; - - return tasks; -}; - -/** - * Possible task outcomes - * - * @property {string} success - indicates that the container(s) provided an - * exit code 0. The SQS message should be deleted. - * @property {string} fail - indicates that the container(s) provided an exit - * code 3. The SQS message should be deleted and a notification sent. - * @property {string} noop - indicates that the container(s) provided an exit - * code 4. The SQS message should be returned. - * @property {string} retry - indicates that container(s) provided an unknown - * or mismatched exit code. The SQS message should be returned and a - * notification sent. - */ -var outcome = { - success: 'delete', - noop: 'immediate', - fail: 'delete & notify', - retry: 'return & notify' -}; - -function getMessages(sqs, callback) { - sqs.receiveMessage({ - AttributeNames: [ - 'SentTimestamp', - 'ApproximateFirstReceiveTimestamp', - 'ApproximateReceiveCount' - ], - WaitTimeSeconds: 20, - MaxNumberOfMessages: 10 - }, function(err, data) { - if (err) return callback(err); - - if (!data.Messages || !data.Messages.length) - return callback(null, []); - - var finishedTasks = data.Messages.map(function(message) { - var task = JSON.parse(message.Body).detail; - var duration = +new Date(task.stoppedAt) - +new Date(task.startedAt); - var pending = +new Date(task.startedAt) - +new Date(task.createdAt); - if (isNaN(duration)) duration = 0; - - /** - * A task's reason for finishing - * If exit code is 0, return success. If exit code does not equal 0 and - * stopped container reason is provided return that. Otherwise, return - * stopped task reason. - */ - var success = task.containers.every(function(c) { return c.exitCode === 0; }); - var containerReason = task.containers.find(function(c) { return c.reason; }); - - var taskReason; - if (task.stoppedReason) taskReason = task.stoppedReason; - if (containerReason) taskReason = containerReason.reason; - if (success) taskReason = 'success'; - - var taskOutcome = (function() { - if (/Cannot.*ContainerError/.test(taskReason)) return outcome.noop; - if (/DockerTimeoutError/.test(taskReason)) return outcome.noop; - if (task.containers[0].exitCode === 0) return outcome.success; - if (task.containers[0].exitCode === 3) return outcome.fail; - if (task.containers[0].exitCode === 4) return outcome.noop; - return outcome.retry; - })(); - - /** - * An object providing information about the outcome of a task - * - * @name finishedTask - * @property {object} arns - indentifiers for resources involved in running the task - * @property {string} arns.cluster - the ECS cluster's ARN - * @property {string} arns.instance - the EC2's ARN (use in ecs.describeContainerInstances requests) - * @property {string} arns.task - the tasks ARN (use in ecs.describeTasks requests) - * @property {string} reason - the ECS-provided reason that the task ended - * @property {object} env - key-value pairs indicating the task's - * environment variables - * @property {string} outcome - one of the outcomes defined by {@link tasks.outcome} - */ - return { - reason: taskReason, - - duration: duration, - - pending: pending, - - outcome: taskOutcome, - - removeEvent: function(callback) { - sqs.deleteMessage({ ReceiptHandle: message.ReceiptHandle }, callback); - }, - - ignoreEvent: function(callback) { - sqs.changeMessageVisibility({ - ReceiptHandle: message.ReceiptHandle, - VisibilityTimeout: 0 - }, callback); - }, - - arns: { - cluster: task.clusterArn, - instance: task.containerInstanceArn, - task: task.taskArn - }, - - env: task.overrides.containerOverrides[0].environment.reduce(function(env, item) { - env[item.name] = item.value; - return env; - }, {}) - }; - }); - - return callback(null, finishedTasks); - }); -} - -class TaskStateCache extends events.EventEmitter { - constructor(sqs) { - super(); - this.sqs = sqs; - this.inFlight = {}; - this.messageIndex = {}; - this.pendingCompletion = []; - } - - startPolling() { - setTimeout(() => this.poll(), 50); - return this; - } - - poll() { - getMessages(this.sqs, (err, finishedTasks) => { - if (err) this.emit('error', err); - - var queue = d3.queue(10); - (finishedTasks || []).forEach((task) => { - if (!this.inFlight[task.arns.task]) return queue.defer(task.ignoreEvent); - this.pendingCompletion.push(task); - queue.defer(task.removeEvent); - }); - - queue.awaitAll((err) => { - if (err) this.emit('error', err); - if (!this.stop) this.poll(); - }); - }); - } - - get inFlightCount() { - return Object.keys(this.inFlight).length; - } - - get completedTasks() { - var completed = [].concat(this.pendingCompletion); - this.pendingCompletion = []; - return completed.map((task) => { - this.taskCompleted(task); - delete task.removeEvent; - delete task.ignoreEvent; - return task; - }); - } - - taskStarted(taskArn, env) { - this.inFlight[taskArn] = true; - this.messageIndex[env.MessageId] = taskArn; - } - - taskCompleted(task) { - delete this.inFlight[task.arns.task]; - delete this.messageIndex[task.env.MessageId]; - } - - stopPolling() { - this.stop = true; - } -} - -module.exports.envToRunTaskParams = envToRunTaskParams; diff --git a/lib/template.js b/lib/template.js index af3afd48..15b20640 100644 --- a/lib/template.js +++ b/lib/template.js @@ -1,99 +1,68 @@ -var cf = require('@mapbox/cloudfriend'); -var path = require('path'); -var pkg = require(path.resolve(__dirname, '..', 'package.json')); -var table = require('@mapbox/watchbot-progress').table; +'use strict'; + +const cf = require('@mapbox/cloudfriend'); +const path = require('path'); +const pkg = require(path.resolve(__dirname, '..', 'package.json')); /** * Builds Watchbot resources for you to include in a CloudFormation template * - * @static - * @memberof watchbot - * @name template - * @param {object} options - configuration parameters - * @param {string|ref} options.cluster - the ARN for the ECS cluster that will + * @param {Object} options - configuration parameters + * @param {String|ref} options.cluster - the ARN for the ECS cluster that will * host Watchbot's containers. - * @param {string} options.service - the name of your service. This is usually + * @param {String} options.service - the name of your service. This is usually * the name of your Github repository. It **must** match the name of the ECR * repository where your images are stored. - * @param {string|ref} options.serviceVersion - the version of you service to + * @param {String|ref} options.serviceVersion - the version of you service to * deploy. This should reference a specific image in ECR. - * @param {array} [options.permissions=[]] - permissions that your worker will + * @param {String} [options.command] - the shell command that should be executed + * in order to process a single message. + * @param {Array} [options.permissions=[]] - permissions that your worker will * need in order to complete tasks. - * @param {object} [options.env={}] - key-value pairs that will be provided to the worker - * containers as environment variables. Keys must be strings, and values can either - * be strings or references to other CloudFormation resources via `{"Ref": "..."}`. - * @param {array} [command=undefined] - an array of strings to that define the - * command to run when the container is launched. If your Dockerfile specifies a - * CMD, it will be overriden. + * @param {Object} [options.env={}] - key-value pairs that will be provided to + * the worker containers as environment variables. Keys must be strings, and + * values can either be strings or references to other CloudFormation resources + * via `{"Ref": "..."}`. * @param {string|ref} [options.watchbotVersion=current] - the version of Watchbot's * container that will be deployed. Defaults to the installed version * @param {string|ref} [options.notificationEmail] - an email address to receive * notifications when processing fails. * @param {string|ref} [options.notificationTopic] - an ARN of the SNS topic to receive * notifications when processing fails. - * @param {boolean|ref} [options.alarmOnEachFailure=false] - if set to `true`, - * the provided notificationEmail or notificationTopic will be sent a message - * every time any single worker fails. When `false`, the email or topic will - * only receive a message when there have been more than some threshold number - * of errors in a 60s period. See `options.errorThreshold` for more information. - * @param {string} [options.prefix='Watchbot'] - a prefix that will be applied + * @param {String} [options.prefix='Watchbot'] - a prefix that will be applied * to the logical names of all the resources Watchbot creates. If you're * building a template that includes more than one Watchbot system, you'll need * to specify this in order to differentiate the resources. - * @param {string} [options.family] - the name of the the task definition family + * @param {String} [options.family] - the name of the the task definition family * that watchbot will create revisions of. - * @param {boolean} [options.user=false] - if true, Watchbot will build an IAM - * User and associated access key pair. The user will have permission to publish - * messages to Watchbot's SNS topic in order to spawn processing jobs. The - * AccessKeyId and SecretAccessKey will be available as stack outputs. - * @param {boolean} [options.webhook=false] - if true, Watchbot will build an - * HTTPS endpoint via ApiGateway. JSON payloads can be POSTed to this endpoint, - * and will be passed through to Watchbot's SNS topic, spawning processing jobs. - * By default, no authentication is required in order to POST to the endpoint. - * The endpoint URL will be available as a stack output. - * @param {boolean} [options.webhookKey=false] - if true, Watchbot will generate - * an API token and require that it be passed to all POST requests to the webhook - * endpoint. The token will be available as a stack output. - * @param {boolean} [options.reduce=false] - if true, Watchbot will enable the - * workers to utilize a DynamoDB table to track the progress of a distributed - * map-reduce operation. - * @param {number|ref} [options.readCapacityUnits=30] - approximate number of reads - * per second to DynamoDB table in reduce-mode - * @param {number|ref} [options.writeCapacityUnits=30] - approximate number of writes - * per second to DynamoDB table in reduce-mode - * @param {number|ref} [options.watchers=1] - the number of watcher containers - * to run. Each watcher container reads from SQS and spawns worker containers - * when messages arrive. Each watcher is responsible for spawning and monitoring - * as many workers as you specify with the `workers` parameter. This parameter - * can be provided as either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.workers=1] - the number of concurrent worker - * containers that any single watcher is responsible for spawning and monitoring. - * This parameter can be provided as either a number or a reference, i.e. - * `{"Ref": "..."}`. - * @param {string} [options.logAggregationFunction=''] - the ARN of a Lambda function - * function to send logs to. - * @param {string} [options.mounts=''] - if your worker containers need to mount - * files or folders from the host EC2 file system, specify those mounts with this - * parameter. A single persistent mount point can be specified as - * `{host location}:{container location}`, e.g. /root:/mnt/root. A single ephemeral - * mount point can be specified as - * `{container location}`, e.g. /mnt/tmp. Separate multiple mount strings with commas - * if you need to mount more than one location. You can also specify a mount object - * with `container` and `host` property arrays, in which the indeces correspond: - * `{ container: [{container location}], host: [{host location}] }`, e.g. - * { container: [/mnt/root, /mnt/tmp], host: [/root, ''] }. A blank host entry will - * create an ephemeral mount point at the corresponding container filepath. - * @param {object} [options.reservation={}] - worker container resource reservations - * @param {number|ref} [options.reservation.memory=64] - the number of - * MB of RAM to reserve. If your worker container tries to utilize more than - * this much RAM, it will be shut down. This parameter can be provided as either - * a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.reservation.cpu=undefined] - the number of CPU - * units to reserve for your worker container. This will only impact the - * placement of your container on an EC2 with sufficient CPU capacity, but will - * not limit your container's utilization. This parameter can be provided as + * @param {Number} [options.maxSize=1] - the maximum size for the service to + * scale up to. This parameter must be provided as a number. + * @param {Number|ref} [options.minSize=0] - the minimum size for the service to + * scale down to. This parameter can be provided as either a number or a reference, + * i.e. `{"Ref": "..."}`. + * @param {String} [options.mounts=''] - if your worker containers need to write + * files or folders inside its file system, specify those locations with this parameter. + * A single ephemeral mount point can be specified as `{container location}`, e.g. /mnt/tmp. + * Separate multiple mount strings with commas if you need to mount more than one location. + * You can also specify a mount object as an arrays of paths. Every mounted volume will be + * cleaned after each job. + * @param {Object} [options.reservation={}] - worker container resource reservations + * @param {Number|ref} [options.reservation.memory] - the number of MB of RAM + * to reserve as a hard limit. If your worker container tries to utilize more + * than this much RAM, it will be shut down. This parameter can be provided as * either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.messageTimeout=600] - once Watchbot pulls a + * @param {Number|ref} [options.reservation.softMemory] - the number of MB of + * RAM to reserve as a soft limit. Your worker container will be able to utilize + * more than this much RAM if it happens to be available on the host. This + * parameter can be provided as either a number or a reference, i.e. `{"Ref": "..."}`. + * @param {Number|ref} [options.reservation.cpu] - the number of CPU units to + * reserve for your worker container. This will only impact the placement of + * your container on an EC2 with sufficient CPU capacity, but will not limit + * your container's utilization. This parameter can be provided as either a + * number or a reference, i.e. `{"Ref": "..."}`. + * @param {Boolean} [options.privileged=false] - give the container elevated + * privileges on the host container instance + * @param {Number|ref} [options.messageTimeout=600] - once Watchbot pulls a * message from SQS and spawns a worker to process it, SQS will wait this many * seconds for a response. If the worker has not yet finished processing the * message for any reason, SQS will make the message visible again and Watchbot @@ -102,85 +71,117 @@ var table = require('@mapbox/watchbot-progress').table; * routine processing to occur. If set too low, you will end up processing jobs * multiple times. This parameter can be provided as either a number or a * reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.messageRetention=1209600] - the number of seconds - * that a message will exist in SQS until it is deleted. The default value is the - * maximum time that SQS allows, 14 days. This parameter can be provided as + * @param {Number|ref} [options.messageRetention=1209600] - the number of seconds + * that a message will exist in SQS until it is deleted. The default value is + * the maximum time that SQS allows, 14 days. This parameter can be provided as * either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.errorThreshold=10] - Watchbot creates a + * @param {Number|ref} [options.errorThreshold=10] - Watchbot creates a * CloudWatch alarm that will fire if there have been more than this number * of failed worker invocations in a 60 second period. This parameter can be provided as * either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.alarmThreshold=40] - Watchbot creates a + * @param {Number|ref} [options.alarmThreshold=40] - Watchbot creates a * CloudWatch alarm that will go off when there have been too many messages in * SQS for a certain period of time. Use this parameter to adjust the Threshold * number of messages to trigger the alarm. This parameter can be provided as * either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.alarmPeriods=24] - Use this parameter to control + * @param {Number|ref} [options.alarmPeriods=24] - Use this parameter to control * the duration that the SQS queue must be over the message threshold before * triggering an alarm. You specify the number of 5-minute periods before an * alarm is triggered. The default is 24 periods, or 2 hours. This parameter * can be provided as either a number or a reference, i.e. `{"Ref": "..."}`. - * @param {number|ref} [options.failedPlacementAlarmPeriods=1] - Use this + * @param {Number|ref} [options.failedPlacementAlarmPeriods=1] - Use this * parameter to control the duration for which the failed placements exceed * the threshold of 5 before triggering an alarm. You specify the number * of 1-minute periods before an alarm is triggered. The default is 1 period, or * 1 minute. This parameter can be provided as either a number or a reference, * i.e. `{"Ref": "..."}`. - * @param {boolean} [options.debugLogs=false] - enable verbose watcher logging - * @param {boolean} [options.privileged=false] - give the container elevated - * privileges on the host container instance - * @returns {@type WatchbotOutput} Watchbot resources and references + * @param {Number|ref} [options.deadLetterThreshold=10] - Use this parameter to + * control the duration that the number of times a message is delivered to the + * source queue before being moved to the dead-letter queue. This parameter + * can be provided as either a number or a reference, i.e. `{"Ref": "..."}`. */ -module.exports = function(options) { - function prefixed(name) { - return options.prefix + name; - } +module.exports = (options = {}) => { + ['service', 'serviceVersion', 'command', 'cluster'].forEach((required) => { + if (!options[required]) throw new Error(`options.${required} is required`); + }); - options.watchbotVersion = options.watchbotVersion || 'v' + pkg.version; - options.prefix = options.prefix || 'Watchbot'; - options.reservation = options.reservation || {}; + options = Object.assign( + { + prefix: 'Watchbot', + watchbotVersion: 'v' + pkg.version, + reservation: {}, + env: {}, + messageTimeout: 600, + messageRetention: 1209600, + maxSize: 1, + minSize: 0, + mounts: '', + privileged: false, + fresh: false, + family: options.service, + errorThreshold: 10, + alarmThreshold: 40, + alarmPeriods: 24, + failedPlacementAlarmPeriods: 1, + deadletterThreshold: 10 + }, + options + ); - // If there is no soft memory reservation, there must be a hard limit - if (!options.reservation.softMemory) - options.reservation.memory = options.reservation.memory || 64; + const prefixed = (name) => `${options.prefix}${name}`; - options.env = options.env || {}; - options.alarmOnEachFailure = options.alarmOnEachFailure || false; - options.errorThreshold = options.errorThreshold || 10; - options.alarmThreshold = options.alarmThreshold || 40; - options.alarmPeriods = options.alarmPeriods || 24; - options.failedPlacementAlarmPeriods = options.failedPlacementAlarmPeriods || 1; - options.messageTimeout = options.messageTimeout || 600; - options.messageRetention = options.messageRetention || 1209600; - options.watchers = options.watchers || 1; - options.workers = options.workers || 1; - options.mounts = options.mounts || ''; - options.readCapacityUnits = options.readCapacityUnits || 30; - options.writeCapacityUnits = options.writeCapacityUnits || 30; - options.privileged = options.privileged || false; - options.family = options.family || options.service; + const unpackEnv = (env, mountPoints) => { + return Object.keys(env).reduce( + (unpacked, key) => { + unpacked.push({ Name: key, Value: env[key] }); + return unpacked; + }, + [ + { Name: 'WorkTopic', Value: cf.ref(prefixed('Topic')) }, + { Name: 'QueueUrl', Value: cf.ref(prefixed('Queue')) }, + { Name: 'fresh', Value: options.fresh }, + { Name: 'Volumes', Value: mountPoints.map((m) => m.ContainerPath).join(',') } + ] + ); + }; - var resources = {}; - var conditions = {}; - var references = { - logGroup: cf.ref(prefixed('LogGroup')), - topic: cf.ref(prefixed('Topic')), - queueUrl: cf.ref(prefixed('Queue')), - queueArn: cf.getAtt(prefixed('Queue'), 'Arn'), - queueName: cf.getAtt(prefixed('Queue'), 'QueueName'), - notificationTopic: cf.ref(prefixed('NotificationTopic')) + const mount = (mountInputs) => { + let formatted = []; + const mounts = { + mountPoints: [{ ContainerPath: '/tmp', SourceVolume: 'tmp' }], + volumes: [{ Name: 'tmp' }] + }; + + if (typeof mountInputs === 'object') formatted = mountInputs; + if (typeof mountInputs === 'string') { + mountInputs.split(',').forEach((mountStr) => { + if (!mountStr.length) return; + + const persistent = /:/.test(mountStr); + formatted.push( + persistent ? mountStr.split(':')[1] : mountStr + ); + }); + } + + formatted.forEach((container, i) => { + const name = 'mnt-' + i; + + mounts.mountPoints.push({ ContainerPath: container, SourceVolume: name }); + mounts.volumes.push({ Name: name }); + }); + + return mounts; }; - if (options.user) user(prefixed, resources, references); - if (options.webhook) webhook(prefixed, !!options.webhookKey, resources, references); - if (options.logAggregationFunction) logAggregator(prefixed, resources, conditions, options); - if (options.reduce) reduce(prefixed, resources, options, references); - var mounts = mount(options.mounts); + const mounts = mount(options.mounts); + const Resources = {}; if (options.notificationTopic && options.notificationEmail) throw new Error('Cannot provide both notificationTopic and notificationEmail.'); - var notify = options.notificationTopic || cf.ref(prefixed('NotificationTopic')); + if (!options.notificationTopic && !options.notificationEmail) throw new Error('Must provide either notificationTopic or notificationEmail.'); + const notify = options.notificationTopic || cf.ref(prefixed('NotificationTopic')); - if (options.notificationEmail) resources[prefixed('NotificationTopic')] = { + if (options.notificationEmail) Resources[prefixed('NotificationTopic')] = { Type: 'AWS::SNS::Topic', Description: 'Subscribe to this topic to receive emails when tasks fail or retry', Properties: { @@ -193,15 +194,7 @@ module.exports = function(options) { } }; - resources[prefixed('LogGroup')] = { - Type: 'AWS::Logs::LogGroup', - Properties: { - LogGroupName: cf.join('-', [cf.stackName, cf.region, options.prefix.toLowerCase()]), - RetentionInDays: 14 - } - }; - - resources[prefixed('DeadLetterQueue')] = { + Resources[prefixed('DeadLetterQueue')] = { Type: 'AWS::SQS::Queue', Description: 'List of messages that failed to process 14 times', Properties: { @@ -210,45 +203,21 @@ module.exports = function(options) { } }; - resources[prefixed('DeadLetterAlarm')] = { - Type: 'AWS::CloudWatch::Alarm', - Description: 'Provides notification when messages are visible in the dead letter queue', - Properties: { - AlarmDescription: `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#deadletter`, - MetricName: 'ApproximateNumberOfMessagesVisible', - Namespace: 'AWS/SQS', - Statistic: 'Minimum', - Period: '60', - EvaluationPeriods: 1, - Threshold: 1, - AlarmActions: [notify], - Dimensions: [ - { - Name: 'QueueName', - Value: cf.getAtt(prefixed('DeadLetterQueue'), 'QueueName') - } - ], - ComparisonOperator: 'GreaterThanOrEqualToThreshold' - } - }; - - resources[prefixed('Queue')] = { + Resources[prefixed('Queue')] = { Type: 'AWS::SQS::Queue', - Description: 'Watchbot\'s backlog of messages to process', Properties: { VisibilityTimeout: options.messageTimeout, QueueName: cf.join([cf.stackName, '-', prefixed('Queue')]), MessageRetentionPeriod: options.messageRetention, RedrivePolicy: { deadLetterTargetArn: cf.getAtt(prefixed('DeadLetterQueue'), 'Arn'), - maxReceiveCount: 10 + maxReceiveCount: options.deadletterThreshold } } }; - resources[prefixed('Topic')] = { + Resources[prefixed('Topic')] = { Type: 'AWS::SNS::Topic', - Description: 'Send messages to this topic to trigger tasks', Properties: { Subscription: [ { @@ -259,9 +228,8 @@ module.exports = function(options) { } }; - resources[prefixed('QueuePolicy')] = { + Resources[prefixed('QueuePolicy')] = { Type: 'AWS::SQS::QueuePolicy', - Description: 'A policy allowing the work topic to enqueue messages', Properties: { Queues: [cf.ref(prefixed('Queue'))], PolicyDocument: { @@ -285,214 +253,29 @@ module.exports = function(options) { } }; - resources[prefixed('FailedWorkerPlacementMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - FilterPattern: '{ $.failedPlacement = true }', - LogGroupName: cf.ref(prefixed('LogGroup')), - MetricTransformations: [{ - MetricName: cf.join([prefixed('FailedWorkerPlacement-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: 1 - }] - } - }; - - resources[prefixed('FailedWorkerPlacementAlarm')] = { - Type: 'AWS::CloudWatch::Alarm', - Properties: { - AlarmDescription: `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#failedworkerplacement`, - MetricName: cf.join([prefixed('FailedWorkerPlacement-'), cf.stackName]), - Namespace: 'Mapbox/ecs-watchbot', - Statistic: 'Sum', - Period: '60', - EvaluationPeriods: options.failedPlacementAlarmPeriods, - Threshold: 5, - AlarmActions: [notify], - ComparisonOperator: 'GreaterThanThreshold' - } - }; - - resources[prefixed('WorkerErrorsMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - FilterPattern: '{ $.outcome = "failed*" }', - LogGroupName: cf.ref(prefixed('LogGroup')), - MetricTransformations: [{ - MetricName: cf.join([prefixed('WorkerErrors-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: 1 - }] - } - }; - - resources[prefixed('WorkerErrorsAlarm')] = { - Type: 'AWS::CloudWatch::Alarm', - Properties: { - AlarmDescription: `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#workererrors`, - MetricName: cf.join([prefixed('WorkerErrors-'), cf.stackName]), - Namespace: 'Mapbox/ecs-watchbot', - Statistic: 'Sum', - Period: '60', - EvaluationPeriods: 1, - Threshold: options.errorThreshold, - AlarmActions: [notify], - ComparisonOperator: 'GreaterThanThreshold' - } - }; - - resources[prefixed('WorkerDurationMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - LogGroupName: cf.ref(prefixed('LogGroup')), - FilterPattern: '{ $.duration = * }', - MetricTransformations: [ - { - MetricName: cf.join([prefixed('WorkerDuration-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: '$.duration' - } - ] - } - }; - - resources[prefixed('WorkerPendingMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - LogGroupName: cf.ref(prefixed('LogGroup')), - FilterPattern: '{ $.pending = * }', - MetricTransformations: [ - { - MetricName: cf.join([prefixed('WorkerPending-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: '$.pending' - } - ] - } - }; - - resources[prefixed('MessageReceivesMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - LogGroupName: cf.ref(prefixed('LogGroup')), - FilterPattern: '{ $.receives = * }', - MetricTransformations: [ - { - MetricName: cf.join([prefixed('MessageReceives-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: '$.receives' - } - ] - } - }; - - resources[prefixed('WatcherConcurrencyMetric')] = { - Type: 'AWS::Logs::MetricFilter', - Properties: { - LogGroupName: cf.ref(prefixed('LogGroup')), - FilterPattern: '{ $.concurrency = * }', - MetricTransformations: [ - { - MetricName: cf.join([prefixed('WatcherConcurrency-'), cf.stackName]), - MetricNamespace: 'Mapbox/ecs-watchbot', - MetricValue: '$.concurrency' - } - ] - } - }; - - resources[prefixed('QueueSizeAlarm')] = { - Type: 'AWS::CloudWatch::Alarm', - Description: 'An alarm that is tripped when too many messages are in Watchbot\'s queue', - Properties: { - AlarmDescription: `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#queuesize`, - MetricName: 'ApproximateNumberOfMessagesVisible', - Namespace: 'AWS/SQS', - Statistic: 'Average', - Period: '300', - EvaluationPeriods: options.alarmPeriods, - Threshold: options.alarmThreshold, - AlarmActions: [notify], - Dimensions: [ - { - Name: 'QueueName', - Value: cf.getAtt(prefixed('Queue'), 'QueueName') - } - ], - ComparisonOperator: 'GreaterThanThreshold' - } - }; - - resources[prefixed('TaskEventQueue')] = { - Type: 'AWS::SQS::Queue', - Description: 'Watchbot\'s backlog of ECS task state-change events', + Resources[prefixed('LogGroup')] = { + Type: 'AWS::Logs::LogGroup', Properties: { - VisibilityTimeout: 10, - QueueName: cf.join([cf.stackName, '-', prefixed('TaskEventQueue')]), - MessageRetentionPeriod: 1200 + LogGroupName: cf.join('-', [ + cf.stackName, + cf.region, + options.prefix.toLowerCase() + ]), + RetentionInDays: 14 } }; - resources[prefixed('TaskEventQueuePolicy')] = { - Type: 'AWS::SQS::QueuePolicy', - Description: 'A policy allowing CloudWatch event logs to be enqueued', + Resources[prefixed('Role')] = { + Type: 'AWS::IAM::Role', Properties: { - Queues: [cf.ref(prefixed('TaskEventQueue'))], - PolicyDocument: { - Version: '2008-10-17', - Id: prefixed('WatchbotQueue'), + AssumeRolePolicyDocument: { Statement: [ { - Sid: 'EnqueueCloudwatchEvents', Effect: 'Allow', - Principal: { AWS: '*' }, - Action: ['sqs:SendMessage'], - Resource: cf.getAtt(prefixed('TaskEventQueue'), 'Arn'), - Condition: { - ArnEquals: { - 'aws:SourceArn': cf.getAtt(prefixed('TaskEventRule'), 'Arn') - } - } + Principal: { Service: ['ecs-tasks.amazonaws.com'] }, + Action: ['sts:AssumeRole'] } ] - } - } - }; - - resources[prefixed('TaskEventRule')] = { - Type: 'AWS::Events::Rule', - Description: 'Filter CloudWatch events for task-state changes', - Properties: { - Name: cf.join([cf.stackName, prefixed('-task-filter')]), - Description: cf.join(['Filter CloudWatch events for task-state changes related to ', cf.stackName]), - Targets: [ - { - Id: cf.stackName, - Arn: cf.getAtt(prefixed('TaskEventQueue'), 'Arn') - } - ], - EventPattern: { - source: ['aws.ecs'], - 'detail-type': ['ECS Task State Change'], - detail: { - clusterArn: [options.cluster], - lastStatus: ['STOPPED'], - taskDefinitionArn: [cf.ref(prefixed('Worker'))] - } - } - } - }; - - resources[prefixed('WorkerRole')] = { - Type: 'AWS::IAM::Role', - Description: 'The IAM role for the ' + options.service + ' worker', - Properties: { - AssumeRolePolicyDocument: { - Statement: [{ - Effect: 'Allow', - Principal: { Service: ['ecs-tasks.amazonaws.com'] }, - Action: ['sts:AssumeRole'] - }] }, Policies: [ { @@ -501,92 +284,31 @@ module.exports = function(options) { Statement: [ { Effect: 'Allow', - Action: ['sns:Publish'], - Resource: [notify, cf.ref(prefixed('Topic'))] - }, - { - Effect: 'Allow', - Action: ['logs:CreateLogStream', 'logs:PutLogEvents', 'logs:FilterLogEvents'], - Resource: '*' - }, - { - Effect: 'Allow', - Action: ['kms:Decrypt'], - Resource: [cf.importValue('cloudformation-kms-production')] - } - ] - } - } - ] - } - }; - - if (options.permissions) resources[prefixed('WorkerRole')].Properties.Policies.push({ - PolicyName: cf.join([cf.stackName, '-user-defined-worker']), - PolicyDocument: { - Statement: options.permissions - } - }); - - resources[prefixed('WatcherRole')] = { - Type: 'AWS::IAM::Role', - Description: 'The IAM role for the ' + options.service + ' watcher', - Properties: { - AssumeRolePolicyDocument: { - Statement: [{ - Effect: 'Allow', - Principal: { Service: ['ecs-tasks.amazonaws.com'] }, - Action: ['sts:AssumeRole'] - }] - }, - Policies: [ - { - PolicyName: cf.join([cf.stackName, '-watcher']), - PolicyDocument: { - Statement: [ - { - Effect: 'Allow', - Action: ['sqs:ReceiveMessage', 'sqs:DeleteMessage', 'sqs:ChangeMessageVisibility'], - Resource: [ - cf.getAtt(prefixed('Queue'), 'Arn'), - cf.getAtt(prefixed('TaskEventQueue'), 'Arn') - ] - }, - { - Effect: 'Allow', - Action: ['sns:Publish'], - Resource: notify - }, - { - Effect: 'Allow', - Action: ['ecs:RunTask'], - Resource: cf.ref(prefixed('Worker')), - Condition: { StringEquals: { 'ecs:cluster': options.cluster } } + Action: 'sns:Publish', + Resource: cf.ref(prefixed('Topic')) }, { Effect: 'Allow', Action: [ - 'ecs:DescribeTasks', - 'ecs:DescribeContainerInstances', - 'ecs:StopTask' + 'sqs:ReceiveMessage', + 'sqs:DeleteMessage', + 'sqs:ChangeMessageVisibility' ], - Resource: '*', - Condition: { StringEquals: { 'ecs:cluster': options.cluster } } - }, - { - Effect: 'Allow', - Action: ['ecs:ListContainerInstances'], - Resource: options.cluster + Resource: cf.getAtt(prefixed('Queue'), 'Arn') }, { Effect: 'Allow', - Action: ['ecs:DescribeTaskDefinition'], - Resource: '*' + Action: [ + 'logs:CreateLogStream', + 'logs:PutLogEvents', + 'logs:FilterLogEvents' + ], + Resource: cf.getAtt(prefixed('LogGroup'), 'Arn') }, { Effect: 'Allow', - Action: ['logs:CreateLogStream', 'logs:PutLogEvents', 'logs:FilterLogEvents'], - Resource: '*' + Action: 'kms:Decrypt', + Resource: cf.importValue('cloudformation-kms-production') } ] } @@ -595,23 +317,34 @@ module.exports = function(options) { } }; - resources[prefixed('Worker')] = { + if (options.permissions) + Resources[prefixed('Role')].Properties.Policies.push({ + PolicyName: cf.join([cf.stackName, '-user-defined-worker']), + PolicyDocument: { + Statement: options.permissions + } + }); + + Resources[prefixed('Task')] = { Type: 'AWS::ECS::TaskDefinition', - DependsOn: prefixed('WorkerRole'), - Description: 'The task definition responsible for processing messages', Properties: { - TaskRoleArn: cf.ref(prefixed('WorkerRole')), + TaskRoleArn: cf.ref(prefixed('Role')), Family: options.family, ContainerDefinitions: [ { - Name: prefixed('-worker-' + options.service), - Image: cf.join([cf.accountId, '.dkr.ecr.', cf.findInMap('EcrRegion', cf.region, 'Region'), '.amazonaws.com/', options.service, ':', options.serviceVersion]), - Memory: options.reservation.memory, + Name: prefixed(`-${options.service}`).toLowerCase(), + Image: cf.join([ + cf.accountId, + '.dkr.ecr.us-east-1.amazonaws.com/', + options.service, + ':', + options.serviceVersion + ]), Cpu: options.reservation.cpu, Privileged: options.privileged, - Environment: unpackEnv(prefixed, options.env), + Environment: unpackEnv(options.env, mounts.mountPoints), MountPoints: mounts.mountPoints, - Command: options.command, + Command: ['watchbot', 'listen', `${options.command}`], Ulimits: [ { Name: 'nofile', @@ -619,6 +352,7 @@ module.exports = function(options) { HardLimit: 10240 } ], + ReadonlyRootFilesystem: true, LogConfiguration: { LogDriver: 'awslogs', Options: { @@ -633,169 +367,61 @@ module.exports = function(options) { } }; - if (options.placementConstraints) - resources[prefixed('Worker')] - .Properties - .PlacementConstraints = options.placementConstraints; - if (options.reservation.memory) - resources[prefixed('Worker')] - .Properties - .ContainerDefinitions[0] - .Memory = options.reservation.memory; + Resources[prefixed('Task')].Properties.ContainerDefinitions[0].Memory = + options.reservation.memory; if (options.reservation.softMemory) - resources[prefixed('Worker')] - .Properties - .ContainerDefinitions[0] - .MemoryReservation = options.reservation.softMemory; - - resources[prefixed('Watcher')] = { - Type: 'AWS::ECS::TaskDefinition', - Description: 'The task definition responsible for watching the queue and running tasks', - Properties: { - TaskRoleArn: cf.ref(prefixed('WatcherRole')), - Family: options.family, - ContainerDefinitions: [ - { - Name: prefixed('-watcher-' + options.service), - Image: cf.join([cf.accountId, '.dkr.ecr.', cf.findInMap('EcrRegion', cf.region, 'Region'), '.amazonaws.com/ecs-watchbot:', options.watchbotVersion]), - MemoryReservation: 128, - Environment: [ - { Name: 'Cluster', Value: options.cluster }, - { Name: 'TaskDefinition', Value: cf.ref(prefixed('Worker')) }, - { Name: 'ContainerName', Value: prefixed('-worker-' + options.service) }, - { Name: 'Concurrency', Value: typeof options.workers === 'object' ? options.workers : options.workers.toString() }, - { Name: 'QueueUrl', Value: cf.ref(prefixed('Queue')) }, - { Name: 'TaskEventQueueUrl', Value: cf.ref(prefixed('TaskEventQueue')) }, - { Name: 'NotificationTopic', Value: notify }, - { Name: 'StackName', Value: cf.stackName }, - { Name: 'LogGroupArn', Value: cf.getAtt(prefixed('LogGroup'), 'Arn') }, - { Name: 'LogLevel', Value: options.debugLogs ? 'debug' : 'info' }, - { Name: 'AlarmOnEachFailure', Value: typeof options.alarmOnEachFailure === 'object' ? options.alarmOnEachFailure : options.alarmOnEachFailure.toString() } - ], - LogConfiguration: { - LogDriver: 'awslogs', - Options: { - 'awslogs-group': cf.ref(prefixed('LogGroup')), - 'awslogs-region': cf.region, - 'awslogs-stream-prefix': options.serviceVersion - } - } - } - ] - } - }; + Resources[ + prefixed('Task') + ].Properties.ContainerDefinitions[0].MemoryReservation = + options.reservation.softMemory; - resources[prefixed('Service')] = { + Resources[prefixed('Service')] = { Type: 'AWS::ECS::Service', - Description: 'Maintains the desired number of watcher containers', - DependsOn: [prefixed('Worker'), prefixed('Watcher')], Properties: { Cluster: options.cluster, - DesiredCount: options.watchers, - TaskDefinition: cf.ref(prefixed('Watcher')) + DesiredCount: options.minSize, + TaskDefinition: cf.ref(prefixed('Task')) } }; - var outputs = { - ClusterArn: { - Description: 'Service cluster ARN', - Value: options.cluster - } - }; - - outputs[prefixed('DeadLetterQueueUrl')] = { - Description: 'The URL for the dead letter queue', - Value: cf.ref(prefixed('DeadLetterQueue')) - }; - - outputs[prefixed('QueueUrl')] = { - Description: 'The URL for the primary work queue', - Value: cf.ref(prefixed('Queue')) - }; - - outputs[prefixed('LogGroup')] = { - Description: 'The ARN of Watchbot\'s log group', - Value: cf.getAtt(prefixed('LogGroup'), 'Arn') - }; - - /** - * The Watchbot template builder output object - * - * @name WatchbotOutput - * @property {object} Resources - A CloudFormation Resources object - * @property {object} Metadata - A CloudFormation Metadata object - * @property {object} Mappings - A CloudFormation Mappings object - * @property {object} refs - a set of CloudFormation `Ref`s to important - * Watchbot resources. These references are only useful in the context of a - * CloudFormation template. - * @property {object} refs.logGroup - the name of the CloudWatch LogGroup to - * which Watchbot will write watcher and worker logs. - * @property {object} refs.topic - the ARN for Watchbot's SNS topic. Publish - * messages to this topic to trigger processing. - * @property {object} refs.queueUrl - the URL for Watchbot's SQS queue. - * @property {object} refs.queueArn - the ARN for Watchbot's SQS queue. - * @property {object} [refs.accessKeyId] - if the `user` parameter was set to - * true, this is an access key with permission to publish messages to Watchbot's - * SNS topic. - * @property {object} [refs.secretAccessKey] - if the `user` parameter was set to - * true, this is a secret access key with permission to publish messages to Watchbot's - * SNS topic. - * @property {object} [refs.webhookEndpoint] - if the `webhook` parameter was - * set to true, this is the URL for the ApiGateway endpoint. JSON payloads - * POSTed to this endpoint will be passed through to Watchbot's SNS topic to - * spawn processing. - * @property {object} [refs.webhookKey] - if the `webhookKey` parameter was - * set to true, this access token must be provided in all POST requests to the - * webhook endpoint. - */ - return { - Resources: resources, - Conditions: conditions, - Metadata: { - EcsWatchbotVersion: require('../package.json').version - }, - Mappings: { - EcrRegion: require('../mappings/ecr-region.json') - }, - ref: references, - Outputs: outputs - }; -}; - -function logAggregator(prefixed, resources, conditions, options) { - resources[prefixed('LogForwarding')] = { - Type: 'AWS::Logs::SubscriptionFilter', - Description: 'Sends log events from CloudWatch Logs to a Lambda function', - DependsOn: prefixed('LogGroup'), - Properties: { - DestinationArn: options.logAggregationFunction, - LogGroupName: cf.ref(prefixed('LogGroup')), - FilterPattern: '' - } - }; + if (options.placementConstraints) + Resources[prefixed('Service')].Properties.PlacementConstraints = + options.placementConstraints; - if (typeof options.logAggregationFunction !== 'string') { - conditions[prefixed('UseLogForwarding')] = cf.notEquals(options.logAggregationFunction, ''); - resources[prefixed('LogForwarding')].Condition = prefixed('UseLogForwarding'); - } -} + if (options.placementStrategies) + Resources[prefixed('Service')].Properties.PlacementStrategies = + options.placementStrategies; -function user(prefixed, resources, references) { - resources[prefixed('User')] = { - Type: 'AWS::IAM::User', - Description: 'An AWS user with permission to publish the the work topic', + Resources[prefixed('ScalingRole')] = { + Type: 'AWS::IAM::Role', Properties: { + AssumeRolePolicyDocument: { + Statement: [ + { + Effect: 'Allow', + Principal: { Service: ['application-autoscaling.amazonaws.com'] }, + Action: ['sts:AssumeRole'] + } + ] + }, + Path: '/', Policies: [ { - PolicyName: cf.join([cf.stackName, 'publish-to-sns']), + PolicyName: 'watchbot-autoscaling', PolicyDocument: { Statement: [ { Effect: 'Allow', - Action: ['sns:Publish'], - Resource: [cf.ref(prefixed('Topic'))] + Action: [ + 'application-autoscaling:*', + 'cloudwatch:DescribeAlarms', + 'cloudwatch:PutMetricAlarm', + 'ecs:UpdateService', + 'ecs:DescribeServices' + ], + Resource: '*' } ] } @@ -804,248 +430,183 @@ function user(prefixed, resources, references) { } }; - resources[prefixed('UserKey')] = { - Type: 'AWS::IAM::AccessKey', - Description: 'AWS access keys to authenticate as the Watchbot user', - Properties: { - Status: 'Active', - UserName: cf.ref(prefixed('User')) - } - }; - - references.accessKeyId = cf.ref(prefixed('UserKey')); - references.secretAccessKey = cf.getAtt(prefixed('UserKey'), 'SecretAccessKey'); -} - -function webhook(prefixed, useKey, resources, references) { - resources[prefixed('WebhookApi')] = { - Type: 'AWS::ApiGateway::RestApi', + Resources[prefixed('ScalingTarget')] = { + Type: 'AWS::ApplicationAutoScaling::ScalableTarget', Properties: { - Name: cf.join('-', [prefixed('-watchbot-webhook'), cf.stackName]), - FailOnWarnings: true + ServiceNamespace: 'ecs', + ScalableDimension: 'ecs:service:DesiredCount', + ResourceId: cf.join([ + 'service/', + options.cluster, + '/', + cf.getAtt(prefixed('Service'), 'Name') + ]), + MinCapacity: options.minSize, + MaxCapacity: options.maxSize, + RoleARN: cf.getAtt(prefixed('ScalingRole'), 'Arn') } }; - resources[prefixed('WebhookDeployment')] = { - Type: 'AWS::ApiGateway::Deployment', - DependsOn: prefixed('WebhookMethod'), + Resources[prefixed('ScaleUp')] = { + Type: 'AWS::ApplicationAutoScaling::ScalingPolicy', Properties: { - RestApiId: cf.ref(prefixed('WebhookApi')), - StageName: 'watchbot', - StageDescription: { - MethodSettings: [ + ScalingTargetId: cf.ref(prefixed('ScalingTarget')), + PolicyName: cf.sub('${AWS::StackName}-scale-up'), + PolicyType: 'StepScaling', + StepScalingPolicyConfiguration: { + AdjustmentType: 'ChangeInCapacity', + Cooldown: 300, + MetricAggregationType: 'Average', + StepAdjustments: [ { - HttpMethod: '*', - ResourcePath: '/*', - ThrottlingBurstLimit: 20, - ThrottlingRateLimit: 5 + ScalingAdjustment: Math.ceil(options.maxSize / 10), + MetricIntervalLowerBound: 0.0 } ] } } }; - resources[prefixed('WebhookMethod')] = { - Type: 'AWS::ApiGateway::Method', - Properties: { - RestApiId: cf.ref(prefixed('WebhookApi')), - ResourceId: cf.ref(prefixed('WebhookResource')), - ApiKeyRequired: useKey ? true : false, - AuthorizationType: 'None', - HttpMethod: 'POST', - Integration: { - Type: 'AWS', - IntegrationHttpMethod: 'POST', - IntegrationResponses: [ - { StatusCode: 200 }, - { StatusCode: 500, SelectionPattern: '^error.*' } - ], - Uri: cf.join(['arn:aws:apigateway:', cf.region, ':lambda:path/2015-03-31/functions/', cf.getAtt(prefixed('WebhookFunction'), 'Arn'), '/invocations']) - }, - MethodResponses: [ - { StatusCode: '200', ResponseModels: { 'application/json': 'Empty' } }, - { StatusCode: '500', ResponseModels: { 'application/json': 'Empty' } } - ] - } - }; - - resources[prefixed('WebhookResource')] = { - Type: 'AWS::ApiGateway::Resource', + Resources[prefixed('ScaleUpTrigger')] = { + Type: 'AWS::CloudWatch::Alarm', Properties: { - ParentId: cf.getAtt(prefixed('WebhookApi'), 'RootResourceId'), - RestApiId: cf.ref(prefixed('WebhookApi')), - PathPart: 'webhooks' + AlarmName: cf.sub('${AWS::StackName}-scale-up'), + AlarmDescription: 'Scale up due to visible messages in queue', + EvaluationPeriods: 1, + Statistic: 'Maximum', + Threshold: 0, + Period: 300, + ComparisonOperator: 'GreaterThanThreshold', + Namespace: 'AWS/SQS', + Dimensions: [ + { Name: 'QueueName', Value: cf.getAtt(prefixed('Queue'), 'QueueName') } + ], + MetricName: 'ApproximateNumberOfMessagesVisible', + AlarmActions: [cf.ref(prefixed('ScaleUp'))] } }; - resources[prefixed('WebhookFunctionRole')] = { - Type: 'AWS::IAM::Role', + Resources[prefixed('ScaleDown')] = { + Type: 'AWS::ApplicationAutoScaling::ScalingPolicy', Properties: { - AssumeRolePolicyDocument: { - Statement: [ + ScalingTargetId: cf.ref(prefixed('ScalingTarget')), + PolicyName: cf.sub('${AWS::StackName}-scale-down'), + PolicyType: 'StepScaling', + StepScalingPolicyConfiguration: { + AdjustmentType: 'PercentChangeInCapacity', + Cooldown: 300, + MetricAggregationType: 'Average', + StepAdjustments: [ { - Sid: 'webhookrole', - Effect: 'Allow', - Principal: { Service: 'lambda.amazonaws.com' }, - Action: 'sts:AssumeRole' + ScalingAdjustment: -100, + MetricIntervalUpperBound: 0.0 } ] - }, - Policies: [ - { - PolicyName: 'WatchbotWebhookPolicy', - PolicyDocument: { - Statement: [ - { - Effect: 'Allow', - Action: ['logs:*'], - Resource: ['arn:aws:logs:*:*:*'] - }, - { - Effect: 'Allow', - Action: ['sns:Publish'], - Resource: [cf.ref(prefixed('Topic'))] - } - ] - } - } - ] + } } }; - resources[prefixed('WebhookFunction')] = { - Type: 'AWS::Lambda::Function', + Resources[prefixed('ScaleDownTrigger')] = { + Type: 'AWS::CloudWatch::Alarm', Properties: { - Code: { - ZipFile: cf.join('\n', [ - 'var AWS = require("aws-sdk");', - cf.join(['var sns = new AWS.SNS({ region: "', cf.region, '" });']), - cf.join(['var topic = "', cf.ref(prefixed('Topic')), '";']), - 'module.exports.webhooks = function(event, context) {', - ' var params = {', - ' TopicArn: topic,', - ' Subject: event.Subject || "webhook",', - ' Message: event.Message || JSON.stringify(event)', - ' };', - ' sns.publish(params, function(err) {', - ' if (err) return context.done("error: " + err.message);', - ' context.done(null, "success");', - ' });', - '};' - ]) - }, - Role: cf.getAtt(prefixed('WebhookFunctionRole'), 'Arn'), - Description: cf.join([prefixed('-watchbot webhooks for '), cf.stackName]), - Handler: 'index.webhooks', - Runtime: 'nodejs4.3', - Timeout: 30, - MemorySize: 128 + AlarmName: cf.sub('${AWS::StackName}-scale-down'), + AlarmDescription: + 'Scale down due to lack of in-flight messages in queue', + EvaluationPeriods: 1, + Statistic: 'Maximum', + Threshold: 1, + Period: 600, + ComparisonOperator: 'LessThanThreshold', + Namespace: 'AWS/SQS', + Dimensions: [ + { Name: 'QueueName', Value: cf.getAtt(prefixed('Queue'), 'QueueName') } + ], + MetricName: 'ApproximateNumberOfMessagesNotVisible', + AlarmActions: [cf.ref(prefixed('ScaleDown'))] } }; - resources[prefixed('WebhookPermission')] = { - Type: 'AWS::Lambda::Permission', + Resources[prefixed('DeadLetterAlarm')] = { + Type: 'AWS::CloudWatch::Alarm', Properties: { - FunctionName: cf.ref(prefixed('WebhookFunction')), - Action: 'lambda:InvokeFunction', - Principal: 'apigateway.amazonaws.com', - SourceArn: cf.join(['arn:aws:execute-api:', cf.region, ':', cf.accountId, ':', cf.ref(prefixed('WebhookApi')), '/*']) + AlarmName: cf.sub('${AWS::StackName}-dead-letter'), + AlarmDescription: + 'Provides notification when messages are visible in the dead letter queue', + EvaluationPeriods: 1, + Statistic: 'Minimum', + Threshold: 1, + Period: '60', + ComparisonOperator: 'GreaterThanOrEqualToThreshold', + Namespace: 'AWS/SQS', + Dimensions: [ + { Name: 'QueueName', Value: cf.getAtt(prefixed('DeadLetterQueue'), 'QueueName') } + ], + MetricName: 'ApproximateNumberOfMessagesVisible', + AlarmActions: [notify] } }; - references.webhookEndpoint = cf.join(['https://', cf.ref(prefixed('WebhookApi')), '.execute-api.', cf.region, '.amazonaws.com/watchbot/webhooks']); - - if (useKey) { - resources[prefixed('WebhookKey')] = { - Type: 'AWS::ApiGateway::ApiKey', - DependsOn: prefixed('WebhookDeployment'), - Properties: { - Name: cf.join([prefixed('-watchbot-webhook-'), { Ref: 'AWS::StackName' }]), - Enabled: true, - StageKeys: [{ RestApiId: cf.ref(prefixed('WebhookApi')), StageName: 'watchbot' }] - } - }; - - references.webhookKey = cf.ref(prefixed('WebhookKey')); - } -} - -function mount(mountInputs) { - var formatted = { container: [], host: [] }; - var mounts = { - mountPoints: [], - volumes: [] + Resources[prefixed('WorkerErrorsMetric')] = { + Type: 'AWS::Logs::MetricFilter', + Properties: { + FilterPattern: '"[failure]"', + LogGroupName: cf.ref(prefixed('LogGroup')), + MetricTransformations: [{ + MetricName: cf.join([prefixed('WorkerErrors-'), cf.stackName]), + MetricNamespace: 'Mapbox/ecs-watchbot', + MetricValue: 1 + }] + } }; - if (typeof mountInputs === 'object') formatted = mountInputs; - if (typeof mountInputs === 'string') { - mountInputs.split(',').forEach(function(mountStr) { - if (!mountStr.length) return; - - var persistent = /:/.test(mountStr); - formatted.container.push(persistent ? mountStr.split(':')[1] : mountStr); - formatted.host.push(persistent ? mountStr.split(':')[0] : ''); - }); - } - - formatted.container.forEach((container, i) => { - var name = 'mnt-' + i; - var host = formatted.host[i] ? { SourcePath: formatted.host[i] } : {}; - - mounts.mountPoints.push({ ContainerPath: container, SourceVolume: name }); - mounts.volumes.push({ Name: name, Host: host }); - }); - - if (!mounts.mountPoints.length) { - mounts.mountPoints = undefined; - mounts.volumes = undefined; - } - - return mounts; -} - -function unpackEnv(prefixed, env) { - return Object.keys(env).reduce(function(unpacked, key) { - unpacked.push({ Name: key, Value: env[key] }); - return unpacked; - }, [ - { Name: 'WorkTopic', Value: cf.ref(prefixed('Topic')) }, - { Name: 'LogGroup', Value: cf.ref(prefixed('LogGroup')) } - ]); -} - -function reduce(prefixed, resources, options, references) { - var tableName = cf.join('-', [cf.stackName, prefixed('-progress')]); - var tableThroughput = { - readCapacityUnits: options.readCapacityUnits, - writeCapacityUnits: options.writeCapacityUnits + Resources[prefixed('WorkerErrorsAlarm')] = { + Type: 'AWS::CloudWatch::Alarm', + Properties: { + AlarmName: cf.sub('${AWS::StackName}-worker-errors'), + AlarmDescription: + `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#workererrors`, + EvaluationPeriods: 1, + Statistic: 'Sum', + Threshold: options.errorThreshold, + Period: '60', + ComparisonOperator: 'GreaterThanThreshold', + Namespace: 'Mapbox/ecs-watchbot', + MetricName: cf.join([prefixed('WorkerErrors-'), cf.stackName]), + AlarmActions: [notify] + } }; - resources[prefixed('ProgressTable')] = table(tableName, tableThroughput); - var tableArn = cf.join(['arn:aws:dynamodb:', cf.region, ':', cf.accountId, ':table/', cf.ref(prefixed('ProgressTable'))]); - - resources[prefixed('ProgressTablePermission')] = { - Type: 'AWS::IAM::Policy', + Resources[prefixed('QueueSizeAlarm')] = { + Type: 'AWS::CloudWatch::Alarm', Properties: { - Roles: [cf.ref(prefixed('WorkerRole'))], - PolicyName: 'watchbot-progress', - PolicyDocument: { - Statement: [ - { - Action: [ - 'dynamodb:GetItem', - 'dynamodb:PutItem', - 'dynamodb:UpdateItem' - ], - Effect: 'Allow', - Resource: tableArn - } - ] - } + AlarmName: cf.sub('${AWS::StackName}-queue-size'), + AlarmDescription: + `https://github.com/mapbox/ecs-watchbot/blob/${options.watchbotVersion}/docs/alarms.md#queuesize`, + EvaluationPeriods: options.alarmPeriods, + Statistic: 'Average', + Threshold: options.alarmThreshold, + Period: '300', + ComparisonOperator: 'GreaterThanThreshold', + Namespace: 'AWS/SQS', + MetricName: 'ApproximateNumberOfMessagesVisible', + Dimensions: [ + { + Name: 'QueueName', + Value: cf.getAtt(prefixed('Queue'), 'QueueName') + } + ], + AlarmActions: [notify] } }; - references.progressTable = cf.ref(prefixed('ProgressTable')); + const ref = { + logGroup: cf.ref(prefixed('LogGroup')), + topic: cf.ref(prefixed('Topic')), + queueUrl: cf.ref(prefixed('Queue')), + queueArn: cf.getAtt(prefixed('Queue'), 'Arn'), + queueName: cf.getAtt(prefixed('Queue'), 'QueueName'), + notificationTopic: cf.ref(prefixed('NotificationTopic')) + }; - options.env.ProgressTable = tableArn; -} + return { Resources, ref }; +}; diff --git a/lib/watcher.js b/lib/watcher.js new file mode 100644 index 00000000..167a66fe --- /dev/null +++ b/lib/watcher.js @@ -0,0 +1,46 @@ +'use strict'; + +const Messages = require('./messages'); +const Worker = require('./worker'); + +class Watcher { + /** + * @name Watcher + * @param {Object} options - configuration + * @param {Object} options.workerOptions - options object to pass to underlying Worker object + * @param {String} options.queueUrl - the SQS queue URL + */ + constructor(options = {}) { + if (!options.workerOptions) + throw new Error('Missing options: workerOptions'); + if (!options.queueUrl) throw new Error('Missing options: queueUrl'); + + this.workerOptions = options.workerOptions; + this.queueUrl = options.queueUrl; + this.messages = Messages.create({ queueUrl: options.queueUrl }); + this.freshMode = options.fresh; + } + + listen() { + return new Promise(async (resolve) => { + const loop = async () => { + if (this.stop) return resolve(); + + const messages = await this.messages.waitFor(); + + const workers = messages.map((message) => + Worker.create(message, this.workerOptions).waitFor() + ); + await Promise.all(workers); + return this.freshMode ? resolve() : setImmediate(loop); + }; + setImmediate(loop); + }); + } + + static create(options) { + return new Watcher(options); + } +} + +module.exports = Watcher; diff --git a/lib/worker-capacity.js b/lib/worker-capacity.js deleted file mode 100644 index b9f3f3a9..00000000 --- a/lib/worker-capacity.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable no-console */ - -var AWS = require('aws-sdk'); - -module.exports = run; -module.exports.getClusterArn = getClusterArn; -module.exports.getReservations = getReservations; -module.exports.listInstances = listInstances; -module.exports.calculateRoom = calculateRoom; - -function run(options, callback) { - if (!options.stackName) return callback(new Error('No stack name provided')); - if (!options.region) return callback(new Error('No region specified')); - - /* Run functions */ - getClusterArn(options, (err, clusterArn) => { - if (err) return callback(err); - getReservations(options, (err, reservations) => { - if (err) return callback(err); - listInstances(options, clusterArn, (err, resources) => { - if (err) return callback(err); - var result = { - capacity: calculateRoom(resources, reservations), - cluster: clusterArn.match(/arn:aws:ecs:.*:\d*:cluster\/(.*)/)[1], - stack: options.stackName - }; - - console.log('\n%s currently has enough space for an additional %s %s workers.\n', result.cluster, result.capacity, result.stack); - return callback(null, result); - }); - }); - }); -} - -function getClusterArn(argv, callback) { - var cfn = new AWS.CloudFormation({ region: argv.region }); - - cfn.describeStacks({ StackName: argv.stackName }, (err, res) => { - if (err) return callback(new Error(err)); - if (!res.Stacks[0] || !res.Stacks[0].Outputs.length) return callback(new Error('Check that the provided region and stack name are correct. You may need to re-create your stack to expose the Outputs property.')); - - var cluster = res.Stacks[0].Outputs.find((o) => { return o.OutputKey === 'ClusterArn'; }); - if (!cluster) return callback(new Error('Recreate your stack to expose the cluster ARN output.')); - return callback(null, cluster.OutputValue); - }); -} - -function getReservations(argv, callback) { - var cfn = new AWS.CloudFormation({ region: argv.region }); - var ecs = new AWS.ECS({ region: argv.region }); - - cfn.describeStackResources({ StackName: argv.stackName }, (err, res) => { - if (err) return callback(new Error(err)); - var worker = res.StackResources.find((r) => { return r.LogicalResourceId === 'WatchbotWorker'; }).PhysicalResourceId; - ecs.describeTaskDefinition({ taskDefinition: worker }, (err, res) => { - if (err) return callback(new Error(err)); - var def = res.taskDefinition.containerDefinitions[0]; - return callback(null, { - Memory: def.memory || def.memoryReservation, - Cpu: def.cpu - }); - }); - }); -} - -function listInstances(argv, cluster, callback) { - var ecs = new AWS.ECS({ region: argv.region }); - - var resources = []; - ecs.listContainerInstances({ cluster: cluster }).eachPage((err, data, done) => { - if (err) return callback(new Error(err)); - if (!data) return callback(null, resources); - ecs.describeContainerInstances({ cluster: cluster, containerInstances: data.containerInstanceArns }, (err, data) => { - if (err) return callback(new Error(err)); - data.containerInstances.forEach((i) => { resources.push(i.remainingResources); }); - done(); - }); - }); -} - -function calculateRoom(resources, reservations) { - return resources.reduce(function(memo, instance) { - var workerCpu = instance.find((e) => { return e.name === 'CPU'; }).integerValue / reservations.Cpu; - var workerMemory = instance.find((e) => { return e.name === 'MEMORY'; }).integerValue / reservations.Memory; - return memo + Number(Math.min(workerCpu, workerMemory).toFixed(0)); - }, 0); -} diff --git a/lib/worker.js b/lib/worker.js new file mode 100644 index 00000000..d64ccd30 --- /dev/null +++ b/lib/worker.js @@ -0,0 +1,88 @@ +'use strict'; + +const child_process = require('child_process'); +const fsExtra = require('fs-extra'); +const Message = require('./message'); +const Logger = require('./logger'); + +const child = async (command, options, logger) => + new Promise((resolve, reject) => { + const start = Date.now(); + + const child = child_process + .spawn(command, options) + .on('error', (err) => reject(err)) + .on('exit', (code, signal) => { + const duration = Date.now() - start; + resolve({ code, signal, duration }); + }); + + child.stdout.pipe(logger.stream()); + child.stderr.pipe(logger.stream()); + }); + +class Worker { + constructor(message = {}, options = {}) { + if (!(message instanceof Message)) + throw new Error('Invalid Message object'); + + if (!options.command) throw new Error('Missing options: command'); + + this.command = options.command; + this.volumes = options.volumes; + this.message = message; + this.logger = Logger.create('watcher', message); + } + + async success(results) { + this.logger.workerSuccess(results); + return await this.message.complete(); + } + + async ignore(results) { + this.logger.workerSuccess(results); + return await this.message.complete(); + } + + async noop(results) { + this.logger.workerSuccess(results); + return await this.message.retry(); + } + + async fail(results) { + this.logger.workerFailure(results); + return await this.message.retry(); + } + + async clean(volumes) { + return Promise.all(volumes.map((volume) => fsExtra.emptyDir(volume))); + } + + async waitFor() { + const options = { + shell: true, + env: Object.assign({}, process.env, this.message.env), + stdio: [process.stdin, 'pipe', 'pipe'] + }; + + try { + const results = await child(this.command, options, this.logger); + + await this.clean(this.volumes); + + if (results.code === 0) return await this.success(results); + if (results.code === 3) return await this.ignore(results); + if (results.code === 4) return await this.noop(results); + return await this.fail(results); + } catch (err) { + this.logger.workerError(err); + return await this.message.retry(); + } + } + + static create(message, options) { + return new Worker(message, options); + } +} + +module.exports = Worker; diff --git a/mappings/ecr-region.json b/mappings/ecr-region.json deleted file mode 100644 index cdbef67f..00000000 --- a/mappings/ecr-region.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "us-east-1": { - "Region": "us-east-1" - }, - "us-west-2": { - "Region": "us-west-2" - }, - "eu-central-1": { - "Region": "eu-west-1" - }, - "eu-west-1": { - "Region": "eu-west-1" - }, - "ap-northeast-1": { - "Region": "us-west-2" - }, - "ap-southeast-1": { - "Region": "us-west-2" - }, - "ap-southeast-2": { - "Region": "us-west-2" - }, - "us-east-2": { - "Region": "us-east-1" - } -} diff --git a/package-lock.json b/package-lock.json index ac0032b3..f90ac7c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,59 +4,75 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.39", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.39.tgz", + "integrity": "sha512-PConL+YIK9BgNUWWC2q4fbltj1g475TofpNVNivSypcAAKElfpSS1cv7MrpLYRG8TzZvwcVu9M30hLA/WAp1HQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, "@mapbox/cloudfriend": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@mapbox/cloudfriend/-/cloudfriend-1.9.0.tgz", "integrity": "sha512-7N5U8KqWqIQcYpFg39d35e3zTT//tr32VlHh7+FBy6uTxaCWPDKWQkHEiAYr/0tSk1qDzdy60gKNMU9BR/1VhQ==", "requires": { - "aws-sdk": "2.135.0" + "aws-sdk": "2.188.0" } }, "@mapbox/mock-aws-sdk-js": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mapbox/mock-aws-sdk-js/-/mock-aws-sdk-js-0.0.4.tgz", - "integrity": "sha1-6+8IgqoLxIFBeflBGR6EZsIRAV8=", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mapbox/mock-aws-sdk-js/-/mock-aws-sdk-js-0.0.5.tgz", + "integrity": "sha1-0z+FPwbp8AwS4WY4EoXHzcEzh5s=", "dev": true, "requires": { - "aws-sdk": "2.135.0", - "sinon": "1.17.7", + "aws-sdk": "2.188.0", + "sinon": "2.4.1", "traverse": "0.6.6" - } - }, - "@mapbox/watchbot-progress": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@mapbox/watchbot-progress/-/watchbot-progress-1.1.4.tgz", - "integrity": "sha512-EeQlWwvvlmLjHskBNO99YOZB5K1eJP3R33WVLw70PoIoLj12Z/bxUAt2j+Fyh+45FgjJvlRcp9VS9iPNJuYx4A==", - "requires": { - "aws-sdk": "2.135.0", - "d3-queue": "2.0.3", - "dyno": "1.4.1", - "meow": "3.7.0" - } - }, - "abstract-leveldown": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz", - "integrity": "sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA=", - "dev": true, - "requires": { - "xtend": "3.0.0" }, "dependencies": { - "xtend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", - "dev": true + "sinon": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", + "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", + "dev": true, + "requires": { + "diff": "3.4.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.3.0", + "text-encoding": "0.6.4", + "type-detect": "4.0.7" + } } } }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "dev": true }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.3.0" + } + }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", @@ -75,25 +91,44 @@ } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, "ansi-regex": { @@ -108,22 +143,23 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, - "optional": true + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, - "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "default-require-extensions": "1.0.0" } }, "argparse": { @@ -135,10 +171,26 @@ "sprintf-js": "1.0.3" } }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true }, "array-union": { "version": "1.0.2", @@ -155,28 +207,63 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.4" } }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, "aws-sdk": { - "version": "2.135.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.135.0.tgz", - "integrity": "sha1-gfSke5khLy8ja/WxGws6OgIIbbQ=", + "version": "2.188.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.188.0.tgz", + "integrity": "sha1-kGKrx9umOTRZ+i80I89dKU8ARhE=", "requires": { "buffer": "4.9.1", - "crypto-browserify": "1.0.9", "events": "1.1.1", "jmespath": "0.15.0", "querystring": "0.2.0", @@ -187,6 +274,270 @@ "xmlbuilder": "4.2.1" } }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.2.0.tgz", + "integrity": "sha512-Uh26WMQOxa7Xa2zu1Wrds+q5NcYPVYIUmaSDKF2vfAkTkpsa7wt8BE13YnTXVhlhaO6dD/blJYnLKy7sqKf/0w==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.2.0.tgz", + "integrity": "sha512-NwicD5n1YQaj6sM3PVULdPBDk1XdlWvh8xBeUJg3nqZwp79Vofb8Q7GOVeWoZZ/RMlMuJMMrEAgSQl/p392nLA==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-preset-jest": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.2.0.tgz", + "integrity": "sha512-p61cPMGYlSgfNScn1yQuVnLguWE4bjhB/br4KQDMbYZG+v6ryE5Ch7TKukjA6mRuIQj1zhyou7Sbpqrh4/N6Pg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "22.2.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -198,10 +549,15 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "binary-split": { "version": "1.0.3", @@ -211,46 +567,13 @@ "through2": "2.0.3" } }, - "bindings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", - "dev": true, - "optional": true - }, - "bl": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz", - "integrity": "sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4=", + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "readable-stream": "1.0.34" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "hoek": "4.2.0" } }, "brace-expansion": { @@ -263,6 +586,49 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -273,35 +639,11 @@ "isarray": "1.0.0" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "bytewise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", - "integrity": "sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4=", - "dev": true, - "requires": { - "bytewise-core": "1.2.3", - "typewise": "1.0.3" - } - }, - "bytewise-core": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", - "integrity": "sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI=", - "dev": true, - "requires": { - "typewise-core": "1.2.0" - } + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "caller-path": { "version": "0.1.0", @@ -319,38 +661,71 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true, - "optional": true + "supports-color": "4.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true }, "circular-json": { "version": "0.3.3", @@ -359,26 +734,41 @@ "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "2.0.0" } }, - "cli-spinner": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.6.tgz", - "integrity": "sha1-illwMyTpOpCPbmAeTnT1uFs3Hlw=", - "dev": true - }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -392,9 +782,9 @@ "dev": true }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -406,6 +796,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -423,10 +822,22 @@ "typedarray": "0.0.6" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "core-util-is": { @@ -434,46 +845,65 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "crypto-browserify": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", - "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=" - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, "requires": { - "array-find-index": "1.0.2" + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, - "cwlogs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cwlogs/-/cwlogs-1.0.3.tgz", - "integrity": "sha1-Pz/roei6uvyZ1eAfsGKn4rxLJns=", + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, "requires": { - "aws-sdk": "2.135.0", - "minimist": "1.2.0" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } } }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "es5-ext": "0.10.35" + "cssom": "0.3.2" } }, - "d3-queue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-2.0.3.tgz", - "integrity": "sha1-B/vaOsrlNYqcUpmq+ICt8JU+0sI=" + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -482,7 +912,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "deep-equal": { "version": "1.0.1", @@ -490,26 +921,19 @@ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true, - "optional": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "deferred-leveldown": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz", - "integrity": "sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ=", + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { - "abstract-leveldown": "0.12.4" + "strip-bom": "2.0.0" } }, "define-properties": { @@ -543,110 +967,88 @@ "rimraf": "2.6.2" } }, - "delegates": { + "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "repeating": "2.0.1" } }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true }, - "dynalite": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dynalite/-/dynalite-1.2.0.tgz", - "integrity": "sha1-P3wcytPeQNJ9oZ4zhJdQ082bUMY=", - "dev": true, - "requires": { - "async": "2.5.0", - "big.js": "3.2.0", - "buffer-crc32": "0.2.13", - "lazy": "1.0.11", - "level-sublevel": "6.6.1", - "leveldown": "1.9.0", - "levelup": "1.3.9", - "lock": "0.1.4", - "memdown": "1.4.1", - "minimist": "1.2.0", - "once": "1.4.0" - } + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true }, - "dynamodb-test": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dynamodb-test/-/dynamodb-test-0.2.2.tgz", - "integrity": "sha1-q/J/tttoma32RTfNvPUIPHf5F+k=", + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "aws-sdk": "2.135.0", - "dynalite": "1.2.0", - "dyno": "1.4.1", - "underscore": "1.8.3" + "esutils": "2.0.2" } }, - "dyno": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dyno/-/dyno-1.4.1.tgz", - "integrity": "sha1-+3E6qxcTi2aM0dG/E+WH3MePwHo=", + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, "requires": { - "aws-sdk": "2.135.0", - "big.js": "3.2.0", - "event-stream": "3.3.4", - "minimist": "1.2.0", - "parallel-stream": "1.1.2", - "queue-async": "1.0.7", - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" - } + "webidl-conversions": "4.0.2" } }, - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "requires": { - "once": "1.4.0" + "readable-stream": "2.3.3" } }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, + "optional": true, "requires": { - "prr": "0.0.0" + "jsbn": "0.1.1" } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, "requires": { "is-arrayish": "0.2.1" } }, "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { "es-to-primitive": "1.1.1", @@ -667,171 +1069,121 @@ "is-symbol": "1.0.1" } }, - "es5-ext": { - "version": "0.10.35", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", - "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } } }, "eslint": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", - "integrity": "sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", + "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", "dev": true, "requires": { - "chalk": "1.1.3", + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", "concat-stream": "1.6.0", - "debug": "2.6.9", - "doctrine": "1.5.0", - "es6-map": "0.1.5", - "escope": "3.6.0", - "espree": "3.5.1", - "estraverse": "4.2.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", "esutils": "2.0.2", - "file-entry-cache": "1.3.1", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", + "globals": "11.2.0", + "ignore": "3.3.7", "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", + "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", + "minimatch": "3.0.4", "mkdirp": "0.5.1", + "natural-compare": "1.4.0", "optionator": "0.8.2", - "path-is-absolute": "1.0.1", "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", + "pluralize": "7.0.0", + "progress": "2.0.0", "require-uncached": "1.0.3", - "shelljs": "0.6.1", - "strip-json-comments": "1.0.4", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.3.0" }, "dependencies": { - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } } }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.3.0", "acorn-jsx": "3.0.1" } }, @@ -841,6 +1193,15 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, "esrecurse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", @@ -863,126 +1224,198 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" + "merge": "1.2.0" } }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.2.0.tgz", + "integrity": "sha512-eqFxBnAeedkNLMGjNoYW4ZPbPQf2JJtVg6Yf6Fm3yVwHbMSNAMQJggxqI/PUrR+Bzb3QHF4O9tUdPyTTKicDUw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "22.1.0", + "jest-get-type": "22.1.0", + "jest-matcher-utils": "22.2.0", + "jest-message-util": "22.2.0", + "jest-regex-util": "22.1.0" }, "dependencies": { - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, "requires": { - "duplexer": "0.1.1" + "color-convert": "1.9.1" } } } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, - "expand-template": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz", - "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ==", - "dev": true, - "optional": true - }, "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "dev": true, "requires": { + "chardet": "0.4.2", "iconv-lite": "0.4.19", - "jschardet": "1.5.1", "tmp": "0.0.33" } }, - "fast-future": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz", - "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo=", + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, - "optional": true + "requires": { + "is-extglob": "1.0.0" + } }, - "fast-levenshtein": { + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastlog": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fastlog/-/fastlog-1.1.0.tgz", - "integrity": "sha1-W5+qgZG3BpVxY4lR1mGUvZZ9S04=", + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, "requires": { - "minimist": "1.2.0", - "split": "0.3.3", - "underscore": "1.5.2" - }, - "dependencies": { - "underscore": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz", - "integrity": "sha1-EzXF5PXm0zu7SwBrqMhqAPVW3gg=" - } + "bser": "2.0.0" } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "1.0.5" } }, "file-entry-cache": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { "flat-cache": "1.3.0", "object-assign": "4.1.1" } }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "locate-path": "2.0.0" } }, "flat-cache": { @@ -1006,1843 +1439,3312 @@ "is-function": "1.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "samsam": "1.1.2" + "for-in": "1.0.2" } }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, - "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { + "formatio": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "function-bind": "1.1.1" + "samsam": "1.3.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", "requires": { - "ansi-regex": "2.1.1" + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" - }, - "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", - "dev": true - }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true, - "optional": true - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "ajv": { + "version": "4.11.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "1.9.0" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - } + "optional": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "restore-cursor": "2.0.0" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "asn1": { + "version": "0.2.3", + "bundled": true, "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } + "optional": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, "dev": true }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "mimic-fn": "1.1.0" + "tweetnacl": "0.14.5" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "block-stream": { + "version": "0.0.9", + "bundled": true, "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "inherits": "2.0.3" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "boom": { + "version": "2.10.1", + "bundled": true, "dev": true, "requires": { - "is-promise": "2.1.0" + "hoek": "2.16.3" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "brace-expansion": { + "version": "1.1.7", + "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "balanced-match": "0.4.2", + "concat-map": "0.0.1" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } + "optional": true }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "co": { + "version": "4.6.0", + "bundled": true, "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", - "dev": true - }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jschardet": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", - "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=", - "dev": true - }, - "level-codec": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", - "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", - "dev": true - }, - "level-errors": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", - "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", - "dev": true, - "requires": { - "errno": "0.1.4" - } - }, - "level-iterator-stream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", - "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "level-errors": "1.0.5", - "readable-stream": "1.1.14", - "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, "dev": true }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "combined-stream": { + "version": "1.0.5", + "bundled": true, "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "delayed-stream": "1.0.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "level-post": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.5.tgz", - "integrity": "sha1-KmY5BAm/ahYhpES6tvAWREzJgCw=", - "dev": true, - "requires": { - "ltgt": "2.1.3" - } - }, - "level-sublevel": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.1.tgz", - "integrity": "sha1-+ad/dSGrcKj46S7VbyGjx4hqRIU=", - "dev": true, - "requires": { - "bytewise": "1.1.0", - "levelup": "0.19.1", - "ltgt": "2.1.3", - "pull-level": "2.0.3", - "pull-stream": "3.6.1", - "typewiselite": "1.0.0", - "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { + "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "bundled": true, "dev": true }, - "levelup": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.19.1.tgz", - "integrity": "sha1-86anIFJyxLXzXkEv8ASgOgrt9Qs=", + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, "dev": true, "requires": { - "bl": "0.8.2", - "deferred-leveldown": "0.2.0", - "errno": "0.1.4", - "prr": "0.0.0", - "readable-stream": "1.0.34", - "semver": "5.1.1", - "xtend": "3.0.0" - }, - "dependencies": { - "xtend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", - "dev": true - } + "boom": "2.10.1" } }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dashdash": { + "version": "1.14.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "semver": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz", - "integrity": "sha1-oykqNz5vPgeY2gsgZBuanFvEfhk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "leveldown": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-1.9.0.tgz", - "integrity": "sha512-3MwcrnCUIuFiKp/jSrG1UqDTV4k1yH8f5HH6T9dpqCKG+lRxcfo2KwAqbzTT+TTKfCbaATeHMy9mm1y6sI3ZvA==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "2.7.2", - "bindings": "1.3.0", - "fast-future": "1.0.2", - "nan": "2.7.0", - "prebuild-install": "2.3.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "debug": { + "version": "2.6.8", + "bundled": true, "dev": true, "optional": true, "requires": { - "xtend": "4.0.1" + "ms": "2.0.0" } - } - } - }, - "levelup": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", - "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", - "dev": true, - "requires": { - "deferred-leveldown": "1.2.2", - "level-codec": "7.0.1", - "level-errors": "1.0.5", - "level-iterator-stream": "1.3.1", - "prr": "1.0.1", - "semver": "5.4.1", - "xtend": "4.0.1" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", - "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "xtend": "4.0.1" + "jsbn": "0.1.1" } }, - "deferred-leveldown": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", - "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "abstract-leveldown": "2.6.3" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, "dev": true - } - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "lock": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/lock/-/lock-0.1.4.tgz", - "integrity": "sha1-/sfervF+fDoKVeHaBCgD4l2RdF0=", - "dev": true - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lolex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", - "dev": true - }, - "looper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", - "integrity": "sha1-Zs0Md0rz1P7axTeU90LbVtqPCew=", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "ltgt": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", - "integrity": "sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" - }, - "memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", - "dev": true, - "requires": { - "abstract-leveldown": "2.7.2", - "functional-red-black-tree": "1.0.1", - "immediate": "3.2.3", - "inherits": "2.0.3", - "ltgt": "2.2.0", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + }, + "fstream": { + "version": "1.0.11", + "bundled": true, "dev": true, "requires": { - "xtend": "4.0.1" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, - "ltgt": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.0.tgz", - "integrity": "sha1-tlul/LNJopkkyOMz98alVi8uSEI=", - "dev": true - } - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", - "dev": true, - "optional": true - }, - "node-abi": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.1.tgz", - "integrity": "sha512-6oxV13poCOv7TfGvhsSz6XZWpXeKkdGVh72++cs33OfMh3KAX8lN84dCvmqSETyDXAFcUHtV7eJrgFBoOqZbNQ==", - "dev": true, - "optional": true - }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", - "dev": true, - "optional": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nyc": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-6.6.1.tgz", - "integrity": "sha1-L2AUYQpXBwAhxMBn6bnjMKI6xqc=", - "dev": true, - "requires": { - "append-transform": "0.4.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.2.0", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "1.1.2", - "foreground-child": "1.5.1", - "glob": "7.0.3", - "istanbul": "0.4.3", - "md5-hex": "1.3.0", - "micromatch": "2.3.8", - "mkdirp": "0.5.1", - "pkg-up": "1.0.0", - "resolve-from": "2.0.0", - "rimraf": "2.5.2", - "signal-exit": "3.0.0", - "source-map": "0.5.6", - "spawn-wrap": "1.2.3", - "test-exclude": "1.1.0", - "yargs": "4.7.1" - }, - "dependencies": { - "append-transform": { - "version": "0.4.0", + "fstream-ignore": { + "version": "1.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { - "default-require-extensions": "1.0.0" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, - "arrify": { - "version": "1.0.1", + "gauge": { + "version": "2.7.4", "bundled": true, - "dev": true + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, - "caching-transform": { - "version": "1.0.1", + "getpass": { + "version": "0.1.7", "bundled": true, "dev": true, + "optional": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.1.4" + "assert-plus": "1.0.0" }, "dependencies": { - "write-file-atomic": { - "version": "1.1.4", + "assert-plus": { + "version": "1.0.0", "bundled": true, "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - } - } + "optional": true } } }, - "convert-source-map": { - "version": "1.2.0", + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", "bundled": true, "dev": true }, - "default-require-extensions": { + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "strip-bom": "2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "0.2.1" - }, - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } + "number-is-nan": "1.0.1" } }, - "find-cache-dir": { + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { "version": "0.1.1", "bundled": true, "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" }, "dependencies": { - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "pkg-dir": { + "assert-plus": { "version": "1.0.0", "bundled": true, "dev": true, - "requires": { - "find-up": "1.1.2" - } + "optional": true } } }, - "find-up": { - "version": "1.1.2", + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - } + "mime-db": "1.27.0" } }, - "foreground-child": { - "version": "1.5.1", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, "requires": { - "cross-spawn-async": "2.2.4", - "signal-exit": "2.1.2", - "which": "1.2.10" - }, - "dependencies": { - "cross-spawn-async": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "4.0.1", - "which": "1.2.10" - }, - "dependencies": { - "lru-cache": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.0.0" - }, - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "signal-exit": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "which": { - "version": "1.2.10", - "bundled": true, - "dev": true, - "requires": { - "isexe": "1.1.2" - }, - "dependencies": { - "isexe": { - "version": "1.1.2", - "bundled": true, - "dev": true - } - } - } + "brace-expansion": "1.1.7" } }, - "glob": { - "version": "7.0.3", + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, "requires": { - "inflight": "1.0.5", - "inherits": "2.0.1", - "minimatch": "3.0.0", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - }, - "dependencies": { - "inflight": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "once": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true, - "dev": true - } + "minimist": "0.0.8" } }, - "istanbul": { - "version": "0.4.3", + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", "bundled": true, "dev": true, + "optional": true, "requires": { - "abbrev": "1.0.7", - "async": "1.5.2", - "escodegen": "1.8.0", - "esprima": "2.7.2", - "fileset": "0.2.1", - "handlebars": "4.0.5", - "js-yaml": "3.6.1", + "detect-libc": "1.0.2", + "hawk": "3.1.3", "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.3.3", - "resolve": "1.1.7", - "supports-color": "3.1.2", - "which": "1.2.10", - "wordwrap": "1.0.0" - }, - "dependencies": { - "abbrev": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "escodegen": { - "version": "1.8.0", - "bundled": true, - "dev": true, - "requires": { - "esprima": "2.7.2", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.1", - "source-map": "0.2.0" - }, - "dependencies": { - "estraverse": { - "version": "1.9.3", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "optionator": { - "version": "0.8.1", - "bundled": true, - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "1.1.3", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "deep-is": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "fast-levenshtein": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - } - } - }, - "source-map": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.0" - }, - "dependencies": { - "amdefine": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - } - } - }, - "esprima": { - "version": "2.7.2", - "bundled": true, - "dev": true - }, - "fileset": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "5.0.15", - "minimatch": "2.0.10" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "bundled": true, - "dev": true, - "requires": { - "inflight": "1.0.5", - "inherits": "2.0.1", - "minimatch": "2.0.10", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - }, - "dependencies": { - "inflight": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "minimatch": { - "version": "2.0.10", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - } - } - }, - "handlebars": { - "version": "4.0.5", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", "bundled": true, "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.6.2" - }, - "dependencies": { - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "bundled": true, - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - } - } - }, - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": "1.0.0" - }, - "dependencies": { - "amdefine": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "uglify-js": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "bundled": true, - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.5.6", - "bundled": true, - "dev": true, - "optional": true - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "kind-of": "3.0.3", - "longest": "1.0.1", - "repeat-string": "1.5.4" - }, - "dependencies": { - "kind-of": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "is-buffer": "1.1.3" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "repeat-string": { - "version": "1.5.4", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "kind-of": "3.0.3", - "longest": "1.0.1", - "repeat-string": "1.5.4" - }, - "dependencies": { - "kind-of": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "is-buffer": "1.1.3" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "repeat-string": { - "version": "1.5.4", - "bundled": true, - "dev": true, - "optional": true - } - } - } - } - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - } - } - } - } - } - } - }, - "js-yaml": { - "version": "3.6.1", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.2.0.tgz", + "integrity": "sha512-RDC7Tj17I/56wpVvCVLSXtnn2Fo6CQZ9vaj+ARn+qlzm/ozbKQZe+j9fvHZCbSq+4JSGjTpKEt7p/AA1IKXRFA==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.2.1.tgz", + "integrity": "sha512-RXFH79Wdi1MiIC9jchU9iGvflSGI/FEKrccp279UirxjK/DJ3X62/iPXPahknPya+QU49ccUt7LKg+Lsmu/bFw==", + "dev": true, + "requires": { + "import-local": "1.0.0", + "jest-cli": "22.2.1" + }, + "dependencies": { + "jest-cli": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.2.1.tgz", + "integrity": "sha512-4ZvaStLTNFgiIIiNrTRmPrfpZVKWYlHOZuyfkiTDdVWiciFtAbtJhCpYsK+1mMx5NOdPCr72vxeodP6U0WlzfA==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "exit": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "import-local": "1.0.0", + "is-ci": "1.1.0", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "22.2.0", + "jest-config": "22.2.1", + "jest-environment-jsdom": "22.2.0", + "jest-get-type": "22.1.0", + "jest-haste-map": "22.2.0", + "jest-message-util": "22.2.0", + "jest-regex-util": "22.1.0", + "jest-resolve-dependencies": "22.1.0", + "jest-runner": "22.2.1", + "jest-runtime": "22.2.1", + "jest-snapshot": "22.2.0", + "jest-util": "22.2.0", + "jest-worker": "22.2.0", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "yargs": "10.1.2" + } + } + } + }, + "jest-changed-files": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.2.0.tgz", + "integrity": "sha512-SzqOvoPMrXB0NPvDrSPeKETpoUNCtNDOsFbCzAGWxqWVvNyrIMLpUjVExT3u3LfdVrENlrNGCfh5YoFd8+ZeXg==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.2.1.tgz", + "integrity": "sha512-1vqJDHuF35ScbIsnGU3psDS7L89dhGRmgS1ybiMGFoyuxoNeJ+Hhu25o7vbCWdwI/Gplh0ePibGS4srCfwhtiw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "22.2.0", + "jest-environment-node": "22.2.0", + "jest-get-type": "22.1.0", + "jest-jasmine2": "22.2.1", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.2.0", + "jest-util": "22.2.0", + "jest-validate": "22.2.0", + "pretty-format": "22.1.0" + } + }, + "jest-diff": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.1.0.tgz", + "integrity": "sha512-lowdbU/dzXh+2/MR5QcvU5KPNkO4JdAEYw0PkQCbIQIuy5+g3QZBuVhWh8179Fmpg4CQrz1WgoK/yQHDCHbqqw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.4.0", + "jest-get-type": "22.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-docblock": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.2.0.tgz", + "integrity": "sha512-Hh/JRuhIcKL+o4aOTE/kXsz3e6LCdaZoYmkSvuElp+WCt9hdhhRTErX8v6j8O4sNndhhMhYCOjNZgzHI4n51Hg==", + "dev": true, + "requires": { + "detect-newline": "2.1.0" + } + }, + "jest-environment-jsdom": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.2.0.tgz", + "integrity": "sha512-OV9EGbS3uJxFJdvI98s031Ie0ejLasuNelKFRWY/G4nAvFQB4QnHjNWxoNv911mj5Qd1KrUdiUPHc1qzCXR+CQ==", + "dev": true, + "requires": { + "jest-mock": "22.2.0", + "jest-util": "22.2.0", + "jsdom": "11.6.2" + } + }, + "jest-environment-node": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.2.0.tgz", + "integrity": "sha512-bP4p75KOHsRoTHn8UCxkLRfd4EsbO9e1zwiRCMv+lzECtXs6jEUXgVzm1Wx0xzRbpXOrB90z7O0eu7VXeYMKng==", + "dev": true, + "requires": { + "jest-mock": "22.2.0", + "jest-util": "22.2.0" + } + }, + "jest-get-type": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.1.0.tgz", + "integrity": "sha512-nD97IVOlNP6fjIN5i7j5XRH+hFsHL7VlauBbzRvueaaUe70uohrkz7pL/N8lx/IAwZRTJ//wOdVgh85OgM7g3w==", + "dev": true + }, + "jest-haste-map": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.2.0.tgz", + "integrity": "sha512-JjAVy+faan8qmB6sERUx+6aI2eDmKpdCA2RQ7VprjvxqP+y+uHWIbRFzzoiOKB1o6bfJrv3YmdHnVJ3a6sPVaA==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.2.0", + "jest-worker": "22.2.0", + "micromatch": "2.3.11", + "sane": "2.3.0" + } + }, + "jest-jasmine2": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.2.1.tgz", + "integrity": "sha512-+XpH9wxS4fz3uAUUDKjo9HKCnaaPXgrqMjdPoQX55e7WvLDy0CcpgBNmU69cy3ZqJkLPYqtjSQLOnqlAMjtzNA==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "co": "4.6.0", + "expect": "22.2.0", + "graceful-fs": "4.1.11", + "is-generator-fn": "1.0.0", + "jest-diff": "22.1.0", + "jest-matcher-utils": "22.2.0", + "jest-message-util": "22.2.0", + "jest-snapshot": "22.2.0", + "source-map-support": "0.5.3" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.1.0.tgz", + "integrity": "sha512-8QsCWkncWAqdvrXN4yXQp9vgWF6CT3RkRey+d06SIHX913uXzAJhJdZyo6eE+uHVYMxUbxqW93npbUFhAR0YxA==", + "dev": true, + "requires": { + "pretty-format": "22.1.0" + } + }, + "jest-matcher-utils": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.2.0.tgz", + "integrity": "sha512-jO0cnQ93mR4on+nbmEeK4bChCvLeMFN1bP2qjRjwFv5KzQt34y5SmUq9FgzKjZQZG8zUmaQN+/pHJMUQ0xAcgQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-message-util": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.2.0.tgz", + "integrity": "sha512-LHPYu5kyA07FZK2CpvJ0xBE+gqy+dW30sFU3oep78lmscyc27mVOWDVwzmROhUeY8LlYpW3mcpRB/w5ibD6ZkA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.39", + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" + } + }, + "jest-mock": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.2.0.tgz", + "integrity": "sha512-eOfoUYLOB/JlxChOFkh/bzpWGqUXb9I+oOpkprHHs9L7nUNfL8Rk28h1ycWrqzWCEQ/jZBg/xIv7VdQkfAkOhw==", + "dev": true + }, + "jest-regex-util": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.1.0.tgz", + "integrity": "sha512-on0LqVS6Xeh69sw3d1RukVnur+lVOl3zkmb0Q54FHj9wHoq6dbtWqb3TSlnVUyx36hqjJhjgs/QLqs07Bzu72Q==", + "dev": true + }, + "jest-resolve": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.2.0.tgz", + "integrity": "sha512-Ta9c+uZdF9KaEiTdB0drql1cUlYStF0All1uhgYgbjw4AGP2jatkGsDHOSY4gs9zhkXe9u2wHw0N9if3KgCtIA==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0" + } + }, + "jest-resolve-dependencies": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz", + "integrity": "sha512-76Ll61bD/Sus8wK8d+lw891EtiBJGJkWG8OuVDTEX0z3z2+jPujvQqSB2eQ+kCHyCsRwJ2PSjhn3UHqae/oEtA==", + "dev": true, + "requires": { + "jest-regex-util": "22.1.0" + } + }, + "jest-runner": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.2.1.tgz", + "integrity": "sha512-oTbyozpPKBBTdJxqPBOyUr3S0eVi/Rvx2CvwGCTCvmVkwrkoMCqG4w3WJmMbKARVv892Zy/l7rxYzEdzo24yNA==", + "dev": true, + "requires": { + "exit": "0.1.2", + "jest-config": "22.2.1", + "jest-docblock": "22.2.0", + "jest-haste-map": "22.2.0", + "jest-jasmine2": "22.2.1", + "jest-leak-detector": "22.1.0", + "jest-message-util": "22.2.0", + "jest-runtime": "22.2.1", + "jest-util": "22.2.0", + "jest-worker": "22.2.0", + "throat": "4.1.0" + } + }, + "jest-runtime": { + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.2.1.tgz", + "integrity": "sha512-5GQ0U6gFQyr3O6BaisL6C00+/Bxs/3WCmv51c6BQ53cKKn0J/jdWsfnVk6uzETEJv9vaLdxIukvOQuv7O+23hA==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "22.2.0", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "exit": "0.1.2", + "graceful-fs": "4.1.11", + "jest-config": "22.2.1", + "jest-haste-map": "22.2.0", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.2.0", + "jest-util": "22.2.0", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "10.1.2" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.2.0.tgz", + "integrity": "sha512-nc4hOfENTO/09NWJDz6ojf5zdAGPutQ4ZKmidWuEirTyBwhndxBlckO8ZaiQk9NDfDUeoVNptd6zJW84GWPRKw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "22.1.0", + "jest-matcher-utils": "22.2.0", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.1.0" + } + }, + "jest-util": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.2.0.tgz", + "integrity": "sha512-k8oLZA6EMStGriZdg75CBcg8eGls7/WwVhzPi7W3ghu7j5TiAOu8Jy9Gm4Zn+M9a5QhCI0Rh5QxSs8PVhw3tnw==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "jest-message-util": "22.2.0", + "jest-validate": "22.2.0", + "mkdirp": "0.5.1" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-validate": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.2.0.tgz", + "integrity": "sha512-wQVZaNUMdY/OJMd9cMe1UEU1lgvrPwvQW2z3WrGtBPfXqDSZ+Ze5dOsKnC6y6c19NQ3FEQKR0c04ZtyNPRpDBg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.1.0", + "leven": "2.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-worker": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.2.0.tgz", + "integrity": "sha512-RKXSCsSSn5cPpJASHs1bOAnunpgcTo+DnLEcaCvVcf5yx/4ks5TEuTTCJMQasjJwwYpHW2MJX20i2tYHfrInEw==", + "dev": true, + "requires": { + "merge-stream": "1.0.1" + } + }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "11.6.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.3.0", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "4.0.0", + "pn": "1.1.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "ws": "4.0.0", + "xml-name-validator": "3.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nise": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.2.tgz", + "integrity": "sha512-rvxf+PSZeCKtP0DgmwMmNf1G3I6X1r4WHiP2H88PlIkOkt7mGqufdokjS8caoHBgZzVx0ee/5ytGcGHbZaUw8w==", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", "bundled": true, "dev": true, - "requires": { - "argparse": "1.0.7", - "esprima": "2.7.2" - }, - "dependencies": { - "argparse": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "bundled": true, - "dev": true - } - } - } - } - }, - "nopt": { - "version": "3.0.6", + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", "bundled": true, "dev": true, "requires": { - "abbrev": "1.0.7" + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" } - }, - "once": { - "version": "1.3.3", + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } + "amdefine": "1.0.1" } - }, - "resolve": { - "version": "1.1.7", - "bundled": true, - "dev": true - }, + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { "supports-color": { - "version": "3.1.2", + "version": "3.2.3", "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - } } - }, - "which": { - "version": "1.2.10", + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "isexe": "1.1.2" - }, - "dependencies": { - "isexe": { - "version": "1.1.2", - "bundled": true, - "dev": true - } + "ms": "2.0.0" } - }, - "wordwrap": { - "version": "1.0.0", - "bundled": true, - "dev": true } } }, - "md5-hex": { + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { "version": "1.3.0", "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" }, "dependencies": { - "md5-o-matic": { - "version": "0.1.1", + "path-exists": { + "version": "3.0.0", "bundled": true, "dev": true } } }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "micromatch": { - "version": "2.3.8", + "version": "2.3.11", "bundled": true, "dev": true, "requires": { @@ -2851,1162 +4753,704 @@ "braces": "1.8.5", "expand-brackets": "0.1.5", "extglob": "0.3.2", - "filename-regex": "2.0.0", + "filename-regex": "2.0.1", "is-extglob": "1.0.0", "is-glob": "2.0.1", - "kind-of": "3.0.3", - "normalize-path": "2.0.1", - "object.omit": "2.0.0", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", "parse-glob": "3.0.4", - "regex-cache": "0.4.3" + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "1.0.1" - }, - "dependencies": { - "arr-flatten": { - "version": "1.0.1", - "bundled": true, - "dev": true - } - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - }, - "dependencies": { - "expand-range": { - "version": "1.8.2", - "bundled": true, - "dev": true, - "requires": { - "fill-range": "2.2.3" - }, - "dependencies": { - "fill-range": { - "version": "2.2.3", - "bundled": true, - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.5", - "repeat-element": "1.1.2", - "repeat-string": "1.5.4" - }, - "dependencies": { - "is-number": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.0.3" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "randomatic": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-number": "2.1.0", - "kind-of": "3.0.3" - } - }, - "repeat-string": { - "version": "1.5.4", - "bundled": true, - "dev": true - } - } - } - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - }, - "dependencies": { - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - } - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "filename-regex": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.3" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.3", - "bundled": true, - "dev": true - } - } - }, - "normalize-path": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "object.omit": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "for-own": "0.1.4", - "is-extendable": "0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "for-in": "0.1.5" - }, - "dependencies": { - "for-in": { - "version": "0.1.5", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - } - } - }, - "parse-glob": { - "version": "3.0.4", + "find-up": { + "version": "1.1.2", "bundled": true, "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.2", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - } - } - }, - "is-dotfile": { - "version": "1.0.2", - "bundled": true, - "dev": true - } + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } - }, - "regex-cache": { - "version": "0.4.3", + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" + "kind-of": "3.2.2" }, "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", + "kind-of": { + "version": "3.2.2", "bundled": true, "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-buffer": "1.1.6" } - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true } } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, - "mkdirp": { - "version": "0.5.1", + "read-pkg": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" }, "dependencies": { - "minimist": { - "version": "0.0.8", + "find-up": { + "version": "1.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } } } }, - "pkg-up": { - "version": "1.0.0", + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.4", "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "1.0.2" } }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, "resolve-from": { "version": "2.0.0", "bundled": true, "dev": true }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, "rimraf": { - "version": "2.5.2", + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "glob": "7.0.3" + "shebang-regex": "1.0.0" } }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "signal-exit": { - "version": "3.0.0", + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", "bundled": true, "dev": true }, "source-map": { - "version": "0.5.6", + "version": "0.5.7", "bundled": true, "dev": true }, "spawn-wrap": { - "version": "1.2.3", + "version": "1.4.2", "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.1", + "foreground-child": "1.5.6", "mkdirp": "0.5.1", - "os-homedir": "1.0.1", - "rimraf": "2.5.2", - "signal-exit": "2.1.2", - "which": "1.2.10" + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { - "os-homedir": { - "version": "1.0.1", + "ansi-regex": { + "version": "3.0.0", "bundled": true, "dev": true }, - "signal-exit": { - "version": "2.1.2", + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true, "dev": true }, - "which": { - "version": "1.2.10", + "strip-ansi": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "isexe": "1.1.2" - }, - "dependencies": { - "isexe": { - "version": "1.1.2", - "bundled": true, - "dev": true - } + "ansi-regex": "3.0.0" } } } }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, "test-exclude": { - "version": "1.1.0", + "version": "4.1.1", "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", - "lodash.assign": "4.0.9", - "micromatch": "2.3.8", + "micromatch": "2.3.11", + "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { - "lodash.assign": { - "version": "4.0.9", - "bundled": true, - "dev": true, - "requires": { - "lodash.keys": "4.0.7", - "lodash.rest": "4.0.3" - }, - "dependencies": { - "lodash.keys": { - "version": "4.0.7", - "bundled": true, - "dev": true - }, - "lodash.rest": { - "version": "4.0.3", - "bundled": true, - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", + "yargs": { + "version": "3.10.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.3.5", - "path-type": "1.1.0" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "1.3.0" - }, - "dependencies": { - "error-ex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "0.2.1" - }, - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "normalize-package-data": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "2.1.5", - "is-builtin-module": "1.0.0", - "semver": "5.1.0", - "validate-npm-package-license": "3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.1.5", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - } - } - }, - "semver": { - "version": "5.1.0", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.2" - }, - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "1.2.1" - }, - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1", - "bundled": true, - "dev": true - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "1.0.4", - "spdx-license-ids": "1.2.1" - }, - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.1", - "bundled": true, - "dev": true - } - } - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - } - } - } - } - } + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" } - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true } } }, - "yargs": { - "version": "4.7.1", + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "lodash.assign": "4.0.9", - "os-locale": "1.4.0", - "pkg-conf": "1.1.3", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1", - "set-blocking": "1.0.0", - "string-width": "1.0.1", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "1.0.1", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "wrap-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "1.0.1" - } - } - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "lodash.assign": { - "version": "4.0.9", - "bundled": true, - "dev": true, - "requires": { - "lodash.keys": "4.0.7", - "lodash.rest": "4.0.3" - }, - "dependencies": { - "lodash.keys": { - "version": "4.0.7", - "bundled": true, - "dev": true - }, - "lodash.rest": { - "version": "4.0.3", - "bundled": true, - "dev": true - } - } - }, - "os-locale": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "lcid": "1.0.0" - }, - "dependencies": { - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "1.0.0" - }, - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "pkg-conf": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "find-up": "1.1.2", - "load-json-file": "1.1.0", - "object-assign": "4.1.0", - "symbol": "0.2.3" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "1.3.0" - }, - "dependencies": { - "error-ex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "0.2.1" - }, - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "object-assign": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "symbol": { - "version": "0.2.3", - "bundled": true, - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.3.5", - "path-type": "1.1.0" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "1.3.0" - }, - "dependencies": { - "error-ex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "0.2.1" - }, - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "normalize-package-data": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "2.1.5", - "is-builtin-module": "1.0.0", - "semver": "5.1.0", - "validate-npm-package-license": "3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.1.5", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - } - } - }, - "semver": { - "version": "5.1.0", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.2" - }, - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "1.2.1" - }, - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1", - "bundled": true, - "dev": true - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "1.0.4", - "spdx-license-ids": "1.2.1" - }, - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.1", - "bundled": true, - "dev": true - } - } - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.4", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - } - } - } - } - } + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.1", + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", "bundled": true, "dev": true, "requires": { - "code-point-at": "1.0.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "strip-ansi": { - "version": "3.0.1", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } - }, - "window-size": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "y18n": { - "version": "3.2.1", + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", "bundled": true, "dev": true - }, - "yargs-parser": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "2.1.1", - "lodash.assign": "4.0.9" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "bundled": true, - "dev": true - } - } } } } } }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-inspect": { "version": "1.3.0", @@ -4020,6 +5464,26 @@ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4030,10 +5494,13 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "opener": { "version": "1.4.3", @@ -4041,6 +5508,24 @@ "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", "dev": true }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -4061,27 +5546,70 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-queue": { + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-1.2.0.tgz", - "integrity": "sha1-Y5y4sHJwwVtx16ZEao4wQU88ltE=", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "parallel-stream": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/parallel-stream/-/parallel-stream-1.1.2.tgz", - "integrity": "sha1-EsGWM455sk5OqIdCmDVMoazcZBs=" + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, "requires": { "error-ex": "1.3.1" } @@ -4092,13 +5620,17 @@ "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", "dev": true }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -4112,48 +5644,82 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, "requires": { "graceful-fs": "4.1.11", "pify": "2.3.0", "pinkie-promise": "2.0.1" } }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "requires": { - "through": "2.3.8" - } + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { "pinkie": "2.0.4" } }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, "plur": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", @@ -4161,33 +5727,16 @@ "dev": true }, "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "prebuild-install": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.3.0.tgz", - "integrity": "sha512-gzjq2oHB8oMbzJSsSh9MQ64zrXZGt092/uT4TLZlz2qnrPxpWqp4vYB7LZrDxnlxf5RfbCjkgDI/z0EIVuYzAw==", - "dev": true, - "optional": true, - "requires": { - "expand-template": "1.1.0", - "github-from-package": "0.0.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "node-abi": "2.1.1", - "noop-logger": "0.1.1", - "npmlog": "4.1.2", - "os-homedir": "1.0.2", - "pump": "1.0.2", - "rc": "1.2.2", - "simple-get": "1.4.3", - "tar-fs": "1.16.0", - "tunnel-agent": "0.6.0", - "xtend": "4.0.1" - } + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true }, "prelude-ls": { "version": "1.1.2", @@ -4195,6 +5744,39 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.1.0.tgz", + "integrity": "sha512-0HHR5hCmjDGU4sez3w5zRDAAwn7V0vT4SgPiYPZ1XDm5sT3Icb+Bh+fsOP3+Y3UwPjMr7TbRj+L7eQyMkPAxAw==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, "pretty-ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", @@ -4206,111 +5788,84 @@ "plur": "1.0.0" } }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "pull-cat": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", - "integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs=", - "dev": true - }, - "pull-level": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.3.tgz", - "integrity": "sha1-lQBjXiV5Rdb+7eGF9deiR3NFWxc=", - "dev": true, - "requires": { - "level-post": "1.0.5", - "pull-cat": "1.1.11", - "pull-live": "1.0.1", - "pull-pushable": "2.1.1", - "pull-stream": "3.6.1", - "pull-window": "2.1.4", - "stream-to-pull-stream": "1.7.2" - } - }, - "pull-live": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz", - "integrity": "sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU=", - "dev": true, - "requires": { - "pull-cat": "1.1.11", - "pull-stream": "3.6.1" - } - }, - "pull-pushable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.1.1.tgz", - "integrity": "sha1-hmZqu+P1QC8ffq0D7v1pt4Xspbg=", - "dev": true - }, - "pull-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.1.tgz", - "integrity": "sha1-xcKuSlEkbv7rzGXAQSo9clqSzgA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, - "pull-window": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", - "integrity": "sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA=", - "dev": true, - "requires": { - "looper": "2.0.0" - } - }, - "pump": { + "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", - "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", - "dev": true, - "requires": { - "end-of-stream": "1.4.0", - "once": "1.4.0" - } + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "queue-async": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/queue-async/-/queue-async-1.0.7.tgz", - "integrity": "sha1-Iq4KHaxKkvW81GNPmTxoKiqBCUU=" - }, - "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, - "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "re-emitter": { @@ -4323,6 +5878,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, "requires": { "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", @@ -4333,9 +5889,31 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } } }, "readable-stream": { @@ -4352,26 +5930,42 @@ "util-deprecate": "1.0.2" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "realpath-native": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", + "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" + "util.promisify": "1.0.0" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "is-equal-shallow": "0.1.3" } }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -4382,10 +5976,73 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, "requires": { "is-finite": "1.0.2" } }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -4397,14 +6054,31 @@ } }, "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -4412,13 +6086,13 @@ "dev": true }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "resumer": { @@ -4430,6 +6104,16 @@ "through": "2.3.8" } }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -4440,18 +6124,18 @@ } }, "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "once": "1.4.0" + "is-promise": "2.1.0" } }, "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, "rx-lite-aggregates": { @@ -4460,7 +6144,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "3.1.2" + "rx-lite": "4.0.8" } }, "safe-buffer": { @@ -4469,73 +6153,163 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "samsam": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", - "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", "dev": true }, + "sane": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.3.0.tgz", + "integrity": "sha512-6GB9zPCsqJqQPAGcvEkUPijM1ZUFI+A/DrscL++dXO3Ltt5q5mPDayGxZtr3cBRkrbb4akbwszVVkTIFefEkcg==", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "optional": true + "requires": { + "shebang-regex": "1.0.0" + } }, - "shelljs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", - "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, - "simple-get": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", - "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", + "sinon": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.2.2.tgz", + "integrity": "sha512-BEa593xl+IkIc94nKo0O0LauQC/gQy8Gyv4DkzPwF/9DweC5phr1y+42zibCpn9abfkdHxt9r8AhD0R6u9DE/Q==", "dev": true, - "optional": true, "requires": { - "once": "1.4.0", - "unzip-response": "1.0.2", - "xtend": "4.0.1" + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.2", + "nise": "1.2.2", + "supports-color": "5.1.0", + "type-detect": "4.0.7" + }, + "dependencies": { + "lolex": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", + "dev": true + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, - "sinon": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", - "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "formatio": "1.1.1", - "lolex": "1.3.2", - "samsam": "1.1.2", - "util": "0.10.3" + "is-fullwidth-code-point": "2.0.0" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, "requires": { "spdx-license-ids": "1.2.2" } @@ -4543,20 +6317,14 @@ "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "requires": { - "through": "2.3.8" - } + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true }, "sprintf-js": { "version": "1.0.3", @@ -4564,42 +6332,61 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" } }, - "stream-to-pull-stream": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz", - "integrity": "sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4=", + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "looper": "3.0.0", - "pull-stream": "3.6.1" - }, - "dependencies": { - "looper": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", - "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", - "dev": true - } + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" } }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "string.prototype.trim": { @@ -4609,7 +6396,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.9.0", + "es-abstract": "1.10.0", "function-bind": "1.1.1" } }, @@ -4621,89 +6408,74 @@ "safe-buffer": "5.1.1" } }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, "requires": { "is-utf8": "0.2.1" } }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "4.0.1" - } + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" } }, "tap-out": { @@ -4745,11 +6517,43 @@ "through2": "2.0.3" }, "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, "lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } } } }, @@ -4772,56 +6576,61 @@ "resumer": "0.0.0", "string.prototype.trim": "1.1.2", "through": "2.3.8" - } - }, - "tar-fs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", - "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", - "dev": true, - "optional": true, - "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.2", - "tar-stream": "1.5.4" - } - }, - "tar-stream": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", - "dev": true, - "optional": true, - "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" }, "dependencies": { - "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, - "optional": true, "requires": { - "readable-stream": "2.3.3" + "path-parse": "1.0.5" } } } }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.3", @@ -4841,6 +6650,52 @@ "os-tmpdir": "1.0.2" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", @@ -4853,15 +6708,10 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "tunnel-agent": { @@ -4869,11 +6719,17 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "optional": true, "requires": { "safe-buffer": "5.1.1" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -4883,45 +6739,63 @@ "prelude-ls": "1.1.2" } }, + "type-detect": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.7.tgz", + "integrity": "sha512-4Rh17pAMVdMWzktddFhISRnUnFIStObtUMNGzDwlA6w/77bmGv3aBbRdCmQR6IjzfkTo9otnW+2K/cDRhKSxDA==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typewise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", - "integrity": "sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE=", + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, + "optional": true, "requires": { - "typewise-core": "1.2.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } } }, - "typewise-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", - "integrity": "sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU=", - "dev": true - }, - "typewiselite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz", - "integrity": "sha1-yIgvobsQksBgBal/NO9chQjjZk4=", - "dev": true - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - }, - "unzip-response": { + "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -4931,37 +6805,21 @@ "querystring": "0.2.0" } }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -4971,27 +6829,154 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, "requires": { "spdx-correct": "1.0.2", "spdx-expression-parse": "1.0.4" } }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "dev": true, - "optional": true, "requires": { - "string-width": "1.0.2" + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5007,6 +6992,34 @@ "mkdirp": "0.5.1" } }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.0.0.tgz", + "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "xml2js": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", @@ -5028,6 +7041,68 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } } } } diff --git a/package.json b/package.json index f4a34d65..a36e4d91 100644 --- a/package.json +++ b/package.json @@ -1,57 +1,50 @@ { "name": "@mapbox/watchbot", "version": "3.5.1", - "description": "Build an AWS stack to do your work for you", + "description": "", + "main": "index.js", + "engines": { + "node": ">=8" + }, + "bin": { + "watchbot": "./bin/watchbot.js", + "watchbot-log": "./bin/watchbot-log.js" + }, + "scripts": { + "pretest": "npm run lint && npm run validate-templates", + "lint": "eslint bin lib test index.js", + "test": "docker build -q -t ecs-watchbot -f test/Dockerfile ./ && docker run -t ecs-watchbot npm run test-container", + "test-container": "tape test/*.test.js | tap-spec && jest test/*.jest.js", + "validate-templates": "tape test/template.validation.js | tap-spec", + "update-jest-snapshots": "jest -u test/*.jest.js", + "coverage": "nyc --reporter html tape test/*.test.js && opener coverage/index.html" + }, "repository": { "type": "git", - "url": "git://github.com/mapbox/ecs-watchbot.git" + "url": "git+https://github.com/mapbox/ecs-watchbot.git" }, "author": "Mapbox", - "license": "ISC", + "license": "BSD-2-Clause", "bugs": { "url": "https://github.com/mapbox/ecs-watchbot/issues" }, - "homepage": "https://github.com/mapbox/ecs-watchbot", - "engines": { - "node": "^4.0.0||>=6.0.0" - }, - "main": "index.js", - "scripts": { - "start": "bin/watchbot.js", - "test": "nyc tape test/*.test.js | tap-spec", - "coverage": "nyc --reporter html tape test/*.test.js && opener coverage/index.html", - "pretest": "eslint bin lib test index.js", - "dev-docs": "documentation build --format html --output docs/api --config docs/api/config.json && opener docs/api/index.html" - }, - "bin": { - "watchbot-log": "./bin/watchbot-log.js", - "watchbot-progress": "bin/watchbot-progress.sh", - "watchbot": "./bin/cli.js" - }, - "dependencies": { - "@mapbox/cloudfriend": "^1.8.2", - "@mapbox/watchbot-progress": "^1.1.3", - "aws-sdk": "^2.4.11", - "binary-split": "^1.0.2", - "cwlogs": "^1.0.2", - "d3-queue": "^2.0.3", - "dyno": "^1.2.0", - "fastlog": "^1.0.0", - "stream-combiner": "^0.2.2", - "underscore": "^1.8.3" - }, + "homepage": "https://github.com/mapbox/ecs-watchbot#readme", "devDependencies": { - "@mapbox/mock-aws-sdk-js": "0.0.4", - "cli-spinner": "^0.2.6", - "dynamodb-test": "^0.2.2", - "eslint": "^2.6.0", - "inquirer": "^3.0.1", - "meow": "^3.7.0", - "nyc": "^6.4.0", - "opener": "^1.4.1", - "p-queue": "^1.0.0", - "sinon": "^1.17.5", + "@mapbox/mock-aws-sdk-js": "0.0.5", + "eslint": "^4.16.0", + "eslint-plugin-node": "^5.2.1", + "jest": "^22.2.1", + "nyc": "^11.4.1", + "opener": "^1.4.3", + "sinon": "^4.2.2", "tap-spec": "^4.1.1", - "tape": "^4.5.1" + "tape": "^4.8.0" + }, + "dependencies": { + "@mapbox/cloudfriend": "^1.9.0", + "aws-sdk": "^2.188.0", + "binary-split": "^1.0.3", + "fs-extra": "^6.0.1", + "stream-combiner2": "^1.1.1" } } diff --git a/readme.md b/readme.md index 2a95dadf..823a734b 100644 --- a/readme.md +++ b/readme.md @@ -1,51 +1,3 @@ -[![Build Status](https://travis-ci.org/mapbox/ecs-watchbot.svg?branch=master)](https://travis-ci.org/mapbox/ecs-watchbot) +# ecs-watchbot -# watchbot - -A library to help run a highly-scalable AWS service that performs data processing tasks in response to external events. You provide the messages and the logic to process them, while Watchbot handles making sure that your processing task is run at least once for each message. Watchbot is similar in many regards to AWS Lambda, but is more configurable, more focused on data processing, and not subject to several of Lambda's limitations. - -## Helpful lingo - -- **queue**: [An SQS queue](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSConcepts.html) is a "backlog" of messages for your stack to process that helps to guarantee every message gets processed at least once. -- **message**: A message in the queue represents some job to be processed. Generally, you are responsible for sending messages to your stack by [publishing to Watchbot's SNS topic](http://docs.aws.amazon.com/sns/latest/dg/PublishTopic.html), or optionally by POST to a webhook endpoint (see `WatchbotUseWebhooks` in the parameters section below). -- **worker**: [An ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) responsible for processing a single message. You define the work performed by the worker through your own ECS image. Watchbot sets environment variables on the container that represent the content of a single message. -- **watcher**: A Watchbot-defined [An ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) that polls the queue, spawns workers to process messages, and tracks results. You specify how many watchers to run, and how many workers each watcher is responsible for. -- **cluster**: [An ECS cluster](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_clusters.html) of EC2s that are used to run the watcher and worker containers that make up your service. -- **template**: [A CloudFormation template](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#d0e3428) defining the resources Watchbot needs - -## What you provide: - -- a cluster that Watchbot will run on -- a docker image representing your worker, housed in [an ECR repository](http://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) and tagged with a git sha or a git tag -- a CloudFormation template defining any configuration Parameters, Resources, and Outputs that your service needs in order to perform its processing. - -**:bulb: Other prerequisites:** - -- `cloudformation-kms-production` deployed according to the instructions in [cloudformation-kms](https://github.com/mapbox/cloudformation-kms). Makes encryption of sensitive environment variables that need to be passed to ECS simple using [cfn-config](https://github.com/mapbox/cfn-config). - -## What Watchbot provides: - -- a queue for you to send messages to in order to trigger your workers to run -- [optionally] [an AWS access key](http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) with permission to send messages to the queue -- [an ECS TaskDefinition](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) for your worker, using the image you provide -- one or more watcher containers that run continuously on your cluster, polling the queue, running a worker for each message, removing messages from the queue as workers complete, and managing worker failures and retries -- a script to help you include the resources Watchbot needs to run in your template - - -## Building a Watchbot service - -1. Create a Github repository for your code. -2. Write and test the code that a worker will perform in response to a message. -3. Write a Dockerfile at the root of your repository which defines the steps required to bootstrap a worker. If you specify a `CMD` instructions, this will be executed when your worker is launched in response to a message. Note that message details will be provided as environment variables to your worker, and that your worker's exit code will determine whether the message is deleted or returned to the queue (see below). -4. Use the Dockerfile to build an image and store it in an ECR repository. See [ecs-conex](https://github.com/mapbox/ecs-conex) for a CI framework to do this for you whenever you commit to the repository. -5. Write and deploy your service using a CloudFormation template that watchbot helps you to build. - -## More documentation - -1. [Building a Watchbot template](./docs/building-a-template.md) -2. [The worker's runtime environment](./docs/worker-runtime-details.md) -3. [What happens when workers fail?](./docs/worker-retry-cycle.md) -4. [Logging and metrics](./docs/logging-and-metrics.md) -5. [Using Watchbot's reduce-mode](./docs/reduce-mode.md) -6. [Watchbot's command-line utilities](./docs/command-line-utilities.md) -7. [Watchbot's CloudWatch alarms](./docs/alarms.md) +[wip] Container re-use means we don't make any RunTask API calls. We launch a container or set of containers, and they keep processing SQS messages until there are no messages left to process. diff --git a/test/Dockerfile b/test/Dockerfile new file mode 100644 index 00000000..d50bd612 --- /dev/null +++ b/test/Dockerfile @@ -0,0 +1,8 @@ +FROM node:8.10 + +COPY ./package.json ./package.json +COPY ./package-lock.json ./package-lock.json + +RUN npm install + +COPY ./ ./ diff --git a/test/__snapshots__/template.jest.js.snap b/test/__snapshots__/template.jest.js.snap new file mode 100644 index 00000000..9a3b4485 --- /dev/null +++ b/test/__snapshots__/template.jest.js.snap @@ -0,0 +1,1301 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[template]: all-properties 1`] = ` +Object { + "AWSTemplateFormatVersion": "2010-09-09", + "Conditions": Object {}, + "Mappings": Object {}, + "Metadata": Object {}, + "Outputs": Object {}, + "Parameters": Object {}, + "Resources": Object { + "SoupDeadLetterAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "SoupNotificationTopic", + }, + ], + "AlarmDescription": "Provides notification when messages are visible in the dead letter queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-dead-letter", + }, + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "SoupDeadLetterQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": "60", + "Statistic": "Minimum", + "Threshold": 1, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "SoupDeadLetterQueue": Object { + "Description": "List of messages that failed to process 14 times", + "Properties": Object { + "MessageRetentionPeriod": 1209600, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-", + "SoupDeadLetterQueue", + ], + ], + }, + }, + "Type": "AWS::SQS::Queue", + }, + "SoupLogGroup": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "-", + Array [ + Object { + "Ref": "AWS::StackName", + }, + Object { + "Ref": "AWS::Region", + }, + "soup", + ], + ], + }, + "RetentionInDays": 14, + }, + "Type": "AWS::Logs::LogGroup", + }, + "SoupNotificationTopic": Object { + "Description": "Subscribe to this topic to receive emails when tasks fail or retry", + "Properties": Object { + "Subscription": Array [ + Object { + "Endpoint": "hello@mapbox.pagerduty.com", + "Protocol": "email", + }, + ], + }, + "Type": "AWS::SNS::Topic", + }, + "SoupQueue": Object { + "Properties": Object { + "MessageRetentionPeriod": 1096, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-", + "SoupQueue", + ], + ], + }, + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "SoupDeadLetterQueue", + "Arn", + ], + }, + "maxReceiveCount": 10, + }, + "VisibilityTimeout": 300, + }, + "Type": "AWS::SQS::Queue", + }, + "SoupQueuePolicy": Object { + "Properties": Object { + "PolicyDocument": Object { + "Id": "SoupWatchbotQueue", + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + ], + "Condition": Object { + "ArnEquals": Object { + "aws:SourceArn": Object { + "Ref": "SoupTopic", + }, + }, + }, + "Effect": "Allow", + "Principal": Object { + "AWS": "*", + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "Arn", + ], + }, + "Sid": "SendSomeMessages", + }, + ], + "Version": "2008-10-17", + }, + "Queues": Array [ + Object { + "Ref": "SoupQueue", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "SoupQueueSizeAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "SoupNotificationTopic", + }, + ], + "AlarmDescription": "https://github.com/mapbox/ecs-watchbot/blob/v3.5.1/docs/alarms.md#queuesize", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-queue-size", + }, + "ComparisonOperator": "GreaterThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 24, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": "300", + "Statistic": "Average", + "Threshold": 40, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "SoupRole": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sts:AssumeRole", + ], + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "ecs-tasks.amazonaws.com", + ], + }, + }, + ], + }, + "Policies": Array [ + Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": Object { + "Ref": "SoupTopic", + }, + }, + Object { + "Action": Array [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:ChangeMessageVisibility", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:FilterLogEvents", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "SoupLogGroup", + "Arn", + ], + }, + }, + Object { + "Action": "kms:Decrypt", + "Effect": "Allow", + "Resource": Object { + "Fn::ImportValue": "cloudformation-kms-production", + }, + }, + ], + }, + "PolicyName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-default-worker", + ], + ], + }, + }, + Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": "arn:aws:s3:::bucket/*", + }, + ], + }, + "PolicyName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-user-defined-worker", + ], + ], + }, + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "SoupScaleDown": Object { + "Properties": Object { + "PolicyName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-down", + }, + "PolicyType": "StepScaling", + "ScalingTargetId": Object { + "Ref": "SoupScalingTarget", + }, + "StepScalingPolicyConfiguration": Object { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 300, + "MetricAggregationType": "Average", + "StepAdjustments": Array [ + Object { + "MetricIntervalUpperBound": 0, + "ScalingAdjustment": -100, + }, + ], + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, + "SoupScaleDownTrigger": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "SoupScaleDown", + }, + ], + "AlarmDescription": "Scale down due to lack of in-flight messages in queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-down", + }, + "ComparisonOperator": "LessThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesNotVisible", + "Namespace": "AWS/SQS", + "Period": 600, + "Statistic": "Maximum", + "Threshold": 1, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "SoupScaleUp": Object { + "Properties": Object { + "PolicyName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-up", + }, + "PolicyType": "StepScaling", + "ScalingTargetId": Object { + "Ref": "SoupScalingTarget", + }, + "StepScalingPolicyConfiguration": Object { + "AdjustmentType": "ChangeInCapacity", + "Cooldown": 300, + "MetricAggregationType": "Average", + "StepAdjustments": Array [ + Object { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 9, + }, + ], + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, + "SoupScaleUpTrigger": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "SoupScaleUp", + }, + ], + "AlarmDescription": "Scale up due to visible messages in queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-up", + }, + "ComparisonOperator": "GreaterThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 0, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "SoupScalingRole": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sts:AssumeRole", + ], + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "application-autoscaling.amazonaws.com", + ], + }, + }, + ], + }, + "Path": "/", + "Policies": Array [ + Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "application-autoscaling:*", + "cloudwatch:DescribeAlarms", + "cloudwatch:PutMetricAlarm", + "ecs:UpdateService", + "ecs:DescribeServices", + ], + "Effect": "Allow", + "Resource": "*", + }, + ], + }, + "PolicyName": "watchbot-autoscaling", + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "SoupScalingTarget": Object { + "Properties": Object { + "MaxCapacity": 90, + "MinCapacity": 0, + "ResourceId": Object { + "Fn::Join": Array [ + "", + Array [ + "service/", + "processing", + "/", + Object { + "Fn::GetAtt": Array [ + "SoupService", + "Name", + ], + }, + ], + ], + }, + "RoleARN": Object { + "Fn::GetAtt": Array [ + "SoupScalingRole", + "Arn", + ], + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs", + }, + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + }, + "SoupService": Object { + "Properties": Object { + "Cluster": "processing", + "DesiredCount": 0, + "TaskDefinition": Object { + "Ref": "SoupTask", + }, + }, + "Type": "AWS::ECS::Service", + }, + "SoupTask": Object { + "Properties": Object { + "ContainerDefinitions": Array [ + Object { + "Command": Array [ + "watchbot", + "listen", + "echo hello world", + ], + "Cpu": 4096, + "Environment": Array [ + Object { + "Name": "WorkTopic", + "Value": Object { + "Ref": "SoupTopic", + }, + }, + Object { + "Name": "QueueUrl", + "Value": Object { + "Ref": "SoupQueue", + }, + }, + Object { + "Name": "fresh", + "Value": false, + }, + Object { + "Name": "Volumes", + "Value": "/tmp,/data,/ephemeral", + }, + Object { + "Name": "MyKey", + "Value": "MyValue", + }, + ], + "Image": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::AccountId", + }, + ".dkr.ecr.us-east-1.amazonaws.com/", + "example", + ":", + "1", + ], + ], + }, + "LogConfiguration": Object { + "LogDriver": "awslogs", + "Options": Object { + "awslogs-group": Object { + "Ref": "SoupLogGroup", + }, + "awslogs-region": Object { + "Ref": "AWS::Region", + }, + "awslogs-stream-prefix": "1", + }, + }, + "Memory": 512, + "MemoryReservation": 128, + "MountPoints": Array [ + Object { + "ContainerPath": "/tmp", + "SourceVolume": "tmp", + }, + Object { + "ContainerPath": "/data", + "SourceVolume": "mnt-0", + }, + Object { + "ContainerPath": "/ephemeral", + "SourceVolume": "mnt-1", + }, + ], + "Name": "soup-example", + "Privileged": true, + "ReadonlyRootFilesystem": true, + "Ulimits": Array [ + Object { + "HardLimit": 10240, + "Name": "nofile", + "SoftLimit": 10240, + }, + ], + }, + ], + "Family": "abc-123", + "TaskRoleArn": Object { + "Ref": "SoupRole", + }, + "Volumes": Array [ + Object { + "Name": "tmp", + }, + Object { + "Name": "mnt-0", + }, + Object { + "Name": "mnt-1", + }, + ], + }, + "Type": "AWS::ECS::TaskDefinition", + }, + "SoupTopic": Object { + "Properties": Object { + "Subscription": Array [ + Object { + "Endpoint": Object { + "Fn::GetAtt": Array [ + "SoupQueue", + "Arn", + ], + }, + "Protocol": "sqs", + }, + ], + }, + "Type": "AWS::SNS::Topic", + }, + "SoupWorkerErrorsAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "SoupNotificationTopic", + }, + ], + "AlarmDescription": "https://github.com/mapbox/ecs-watchbot/blob/v3.5.1/docs/alarms.md#workererrors", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-worker-errors", + }, + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "MetricName": Object { + "Fn::Join": Array [ + "", + Array [ + "SoupWorkerErrors-", + Object { + "Ref": "AWS::StackName", + }, + ], + ], + }, + "Namespace": "Mapbox/ecs-watchbot", + "Period": "60", + "Statistic": "Sum", + "Threshold": 10, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "SoupWorkerErrorsMetric": Object { + "Properties": Object { + "FilterPattern": "\\"[failure]\\"", + "LogGroupName": Object { + "Ref": "SoupLogGroup", + }, + "MetricTransformations": Array [ + Object { + "MetricName": Object { + "Fn::Join": Array [ + "", + Array [ + "SoupWorkerErrors-", + Object { + "Ref": "AWS::StackName", + }, + ], + ], + }, + "MetricNamespace": "Mapbox/ecs-watchbot", + "MetricValue": 1, + }, + ], + }, + "Type": "AWS::Logs::MetricFilter", + }, + }, +} +`; + +exports[`[template]: defaults 1`] = ` +Object { + "AWSTemplateFormatVersion": "2010-09-09", + "Conditions": Object {}, + "Mappings": Object {}, + "Metadata": Object {}, + "Outputs": Object {}, + "Parameters": Object {}, + "Resources": Object { + "WatchbotDeadLetterAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "WatchbotNotificationTopic", + }, + ], + "AlarmDescription": "Provides notification when messages are visible in the dead letter queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-dead-letter", + }, + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "WatchbotDeadLetterQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": "60", + "Statistic": "Minimum", + "Threshold": 1, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "WatchbotDeadLetterQueue": Object { + "Description": "List of messages that failed to process 14 times", + "Properties": Object { + "MessageRetentionPeriod": 1209600, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-", + "WatchbotDeadLetterQueue", + ], + ], + }, + }, + "Type": "AWS::SQS::Queue", + }, + "WatchbotLogGroup": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "-", + Array [ + Object { + "Ref": "AWS::StackName", + }, + Object { + "Ref": "AWS::Region", + }, + "watchbot", + ], + ], + }, + "RetentionInDays": 14, + }, + "Type": "AWS::Logs::LogGroup", + }, + "WatchbotNotificationTopic": Object { + "Description": "Subscribe to this topic to receive emails when tasks fail or retry", + "Properties": Object { + "Subscription": Array [ + Object { + "Endpoint": "hello@mapbox.pagerduty.com", + "Protocol": "email", + }, + ], + }, + "Type": "AWS::SNS::Topic", + }, + "WatchbotQueue": Object { + "Properties": Object { + "MessageRetentionPeriod": 1209600, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-", + "WatchbotQueue", + ], + ], + }, + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "WatchbotDeadLetterQueue", + "Arn", + ], + }, + "maxReceiveCount": 10, + }, + "VisibilityTimeout": 600, + }, + "Type": "AWS::SQS::Queue", + }, + "WatchbotQueuePolicy": Object { + "Properties": Object { + "PolicyDocument": Object { + "Id": "WatchbotWatchbotQueue", + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + ], + "Condition": Object { + "ArnEquals": Object { + "aws:SourceArn": Object { + "Ref": "WatchbotTopic", + }, + }, + }, + "Effect": "Allow", + "Principal": Object { + "AWS": "*", + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "Arn", + ], + }, + "Sid": "SendSomeMessages", + }, + ], + "Version": "2008-10-17", + }, + "Queues": Array [ + Object { + "Ref": "WatchbotQueue", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "WatchbotQueueSizeAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "WatchbotNotificationTopic", + }, + ], + "AlarmDescription": "https://github.com/mapbox/ecs-watchbot/blob/v3.5.1/docs/alarms.md#queuesize", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-queue-size", + }, + "ComparisonOperator": "GreaterThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 24, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": "300", + "Statistic": "Average", + "Threshold": 40, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "WatchbotRole": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sts:AssumeRole", + ], + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "ecs-tasks.amazonaws.com", + ], + }, + }, + ], + }, + "Policies": Array [ + Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": Object { + "Ref": "WatchbotTopic", + }, + }, + Object { + "Action": Array [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:ChangeMessageVisibility", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:FilterLogEvents", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "WatchbotLogGroup", + "Arn", + ], + }, + }, + Object { + "Action": "kms:Decrypt", + "Effect": "Allow", + "Resource": Object { + "Fn::ImportValue": "cloudformation-kms-production", + }, + }, + ], + }, + "PolicyName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::StackName", + }, + "-default-worker", + ], + ], + }, + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "WatchbotScaleDown": Object { + "Properties": Object { + "PolicyName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-down", + }, + "PolicyType": "StepScaling", + "ScalingTargetId": Object { + "Ref": "WatchbotScalingTarget", + }, + "StepScalingPolicyConfiguration": Object { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 300, + "MetricAggregationType": "Average", + "StepAdjustments": Array [ + Object { + "MetricIntervalUpperBound": 0, + "ScalingAdjustment": -100, + }, + ], + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, + "WatchbotScaleDownTrigger": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "WatchbotScaleDown", + }, + ], + "AlarmDescription": "Scale down due to lack of in-flight messages in queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-down", + }, + "ComparisonOperator": "LessThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesNotVisible", + "Namespace": "AWS/SQS", + "Period": 600, + "Statistic": "Maximum", + "Threshold": 1, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "WatchbotScaleUp": Object { + "Properties": Object { + "PolicyName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-up", + }, + "PolicyType": "StepScaling", + "ScalingTargetId": Object { + "Ref": "WatchbotScalingTarget", + }, + "StepScalingPolicyConfiguration": Object { + "AdjustmentType": "ChangeInCapacity", + "Cooldown": 300, + "MetricAggregationType": "Average", + "StepAdjustments": Array [ + Object { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 1, + }, + ], + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, + "WatchbotScaleUpTrigger": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "WatchbotScaleUp", + }, + ], + "AlarmDescription": "Scale up due to visible messages in queue", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-scale-up", + }, + "ComparisonOperator": "GreaterThanThreshold", + "Dimensions": Array [ + Object { + "Name": "QueueName", + "Value": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "QueueName", + ], + }, + }, + ], + "EvaluationPeriods": 1, + "MetricName": "ApproximateNumberOfMessagesVisible", + "Namespace": "AWS/SQS", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 0, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "WatchbotScalingRole": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sts:AssumeRole", + ], + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "application-autoscaling.amazonaws.com", + ], + }, + }, + ], + }, + "Path": "/", + "Policies": Array [ + Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "application-autoscaling:*", + "cloudwatch:DescribeAlarms", + "cloudwatch:PutMetricAlarm", + "ecs:UpdateService", + "ecs:DescribeServices", + ], + "Effect": "Allow", + "Resource": "*", + }, + ], + }, + "PolicyName": "watchbot-autoscaling", + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "WatchbotScalingTarget": Object { + "Properties": Object { + "MaxCapacity": 1, + "MinCapacity": 0, + "ResourceId": Object { + "Fn::Join": Array [ + "", + Array [ + "service/", + "processing", + "/", + Object { + "Fn::GetAtt": Array [ + "WatchbotService", + "Name", + ], + }, + ], + ], + }, + "RoleARN": Object { + "Fn::GetAtt": Array [ + "WatchbotScalingRole", + "Arn", + ], + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs", + }, + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + }, + "WatchbotService": Object { + "Properties": Object { + "Cluster": "processing", + "DesiredCount": 0, + "TaskDefinition": Object { + "Ref": "WatchbotTask", + }, + }, + "Type": "AWS::ECS::Service", + }, + "WatchbotTask": Object { + "Properties": Object { + "ContainerDefinitions": Array [ + Object { + "Command": Array [ + "watchbot", + "listen", + "echo hello world", + ], + "Cpu": undefined, + "Environment": Array [ + Object { + "Name": "WorkTopic", + "Value": Object { + "Ref": "WatchbotTopic", + }, + }, + Object { + "Name": "QueueUrl", + "Value": Object { + "Ref": "WatchbotQueue", + }, + }, + Object { + "Name": "fresh", + "Value": false, + }, + Object { + "Name": "Volumes", + "Value": "/tmp", + }, + ], + "Image": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "AWS::AccountId", + }, + ".dkr.ecr.us-east-1.amazonaws.com/", + "example", + ":", + "1", + ], + ], + }, + "LogConfiguration": Object { + "LogDriver": "awslogs", + "Options": Object { + "awslogs-group": Object { + "Ref": "WatchbotLogGroup", + }, + "awslogs-region": Object { + "Ref": "AWS::Region", + }, + "awslogs-stream-prefix": "1", + }, + }, + "MountPoints": Array [ + Object { + "ContainerPath": "/tmp", + "SourceVolume": "tmp", + }, + ], + "Name": "watchbot-example", + "Privileged": false, + "ReadonlyRootFilesystem": true, + "Ulimits": Array [ + Object { + "HardLimit": 10240, + "Name": "nofile", + "SoftLimit": 10240, + }, + ], + }, + ], + "Family": "example", + "TaskRoleArn": Object { + "Ref": "WatchbotRole", + }, + "Volumes": Array [ + Object { + "Name": "tmp", + }, + ], + }, + "Type": "AWS::ECS::TaskDefinition", + }, + "WatchbotTopic": Object { + "Properties": Object { + "Subscription": Array [ + Object { + "Endpoint": Object { + "Fn::GetAtt": Array [ + "WatchbotQueue", + "Arn", + ], + }, + "Protocol": "sqs", + }, + ], + }, + "Type": "AWS::SNS::Topic", + }, + "WatchbotWorkerErrorsAlarm": Object { + "Properties": Object { + "AlarmActions": Array [ + Object { + "Ref": "WatchbotNotificationTopic", + }, + ], + "AlarmDescription": "https://github.com/mapbox/ecs-watchbot/blob/v3.5.1/docs/alarms.md#workererrors", + "AlarmName": Object { + "Fn::Sub": "\${AWS::StackName}-worker-errors", + }, + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "MetricName": Object { + "Fn::Join": Array [ + "", + Array [ + "WatchbotWorkerErrors-", + Object { + "Ref": "AWS::StackName", + }, + ], + ], + }, + "Namespace": "Mapbox/ecs-watchbot", + "Period": "60", + "Statistic": "Sum", + "Threshold": 10, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "WatchbotWorkerErrorsMetric": Object { + "Properties": Object { + "FilterPattern": "\\"[failure]\\"", + "LogGroupName": Object { + "Ref": "WatchbotLogGroup", + }, + "MetricTransformations": Array [ + Object { + "MetricName": Object { + "Fn::Join": Array [ + "", + Array [ + "WatchbotWorkerErrors-", + Object { + "Ref": "AWS::StackName", + }, + ], + ], + }, + "MetricNamespace": "Mapbox/ecs-watchbot", + "MetricValue": 1, + }, + ], + }, + "Type": "AWS::Logs::MetricFilter", + }, + }, +} +`; diff --git a/test/bin.watchbot.test.js b/test/bin.watchbot.test.js new file mode 100644 index 00000000..424f1f29 --- /dev/null +++ b/test/bin.watchbot.test.js @@ -0,0 +1,94 @@ +'use strict'; + +const test = require('tape'); +const stubber = require('./stubber'); +const watchbot = require('../bin/watchbot'); +const Watcher = require('../lib/watcher'); +const Logger = require('../lib/logger'); + +test('[bin.watchbot] success', async (assert) => { + const watcher = stubber(Watcher).setup(); + + const argv = process.argv; + process.argv = ['', '', 'listen', 'echo', 'hello', 'world']; + process.env.QueueUrl = 'https://faker'; + process.env.Volumes = '/tmp,/mnt'; + + try { + await watchbot(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok( + Watcher.create.calledWith({ + queueUrl: 'https://faker', + fresh: false, + workerOptions: { + command: 'echo hello world', + volumes: ['/tmp', '/mnt'] + } + }), + 'watcher created with expected arguments' + ); + + assert.equal(watcher.listen.callCount, 1, 'called watcher.listen()'); + + delete process.env.QueueUrl; + delete process.env.Volumes; + process.argv = argv; + watcher.teardown(); + assert.end(); +}); + +test('[bin.watchbot] error handling', async (assert) => { + const watcher = stubber(Watcher).setup(); + const logger = stubber(Logger).setup(); + const err = new Error('foo'); + watcher.listen.returns(Promise.reject(err)); + + const argv = process.argv; + process.argv = ['', '', 'listen', 'echo', 'hello', 'world']; + process.env.QueueUrl = 'https://faker'; + process.env.Volumes = '/tmp,/mnt'; + + try { + await watchbot(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok( + logger.log.calledWith(`[error] ${err.stack}`), + 'logged error from watcher to console' + ); + + delete process.env.QueueUrl; + delete process.env.Volumes; + process.argv = argv; + logger.teardown(); + watcher.teardown(); + assert.end(); +}); + +test('[bin.watchbot] bad arguments', async (assert) => { + const argv = process.argv; + process.argv = ['', '', 'watch', 'echo', 'hello', 'world']; + process.env.QueueUrl = 'https://faker'; + process.env.Volumes = '/tmp,/mnt'; + + try { + await watchbot(); + } catch (err) { + assert.equal( + err.message, + 'Invalid arguments: watch echo hello world', + 'throws error on invalid arguments' + ); + } + + delete process.env.QueueUrl; + delete process.env.Volumes; + process.argv = argv; + assert.end(); +}); diff --git a/test/dead-letter.test.js b/test/dead-letter.test.js deleted file mode 100644 index 8e3088e4..00000000 --- a/test/dead-letter.test.js +++ /dev/null @@ -1,486 +0,0 @@ -var test = require('tape'); -var sinon = require('sinon'); -var AWS = require('@mapbox/mock-aws-sdk-js'); -var dead = require('../lib/dead-letter'); -var inquirer = require('inquirer'); -var logs = require('../lib/logs'); - -test('[dead-letter] proper client setup & stack description', (assert) => { - var desc = AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.reject(new Error('bail'))); - }); - - AWS.stub('SQS', 'purgeQueue'); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.equal(err.message, 'bail', 'test bail out'); - - assert.ok(AWS.CloudFormation.calledWith({ region: 'region' }), 'CloudFormation client in correct region'); - assert.equal(desc.callCount, 1, 'called describeStacks'); - assert.ok(desc.calledWith({ StackName: 'stack' }), 'describeStacks on provieded stack name'); - - assert.ok(AWS.SQS.calledWith({ region: 'region' }), 'SQS client in correct region'); - - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] stack not found', (assert) => { - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [] - })); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.equal(err.message, 'Could not find stack in region', 'expected error message'); - AWS.CloudFormation.restore(); - assert.end(); - }); -}); - -test('[dead-letter] check initial prompts (multiple watchbots)', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ queue: 'one' })); - prompt.onCall(1).returns(Promise.resolve({ action: 'Purge the dead letter queue?' })); - prompt.onCall(2).returns(Promise.resolve({ purge: true })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'twoDeadLetterQueueUrl', OutputValue: 'twoDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'twoQueueUrl', OutputValue: 'twoWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' }, - { OutputKey: 'twoLogGroup', OutputValue: 'twoLogs' } - ] - } - ] - })); - }); - - var purge = AWS.stub('SQS', 'purgeQueue', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(prompt.callCount, 3, 'three prompts'); - - assert.equal(prompt.args[0][0].length, 1, 'first prompt one question'); - assert.equal(prompt.args[0][0][0].type, 'list', 'first prompt type = list'); - assert.deepEqual(prompt.args[0][0][0].choices, ['one', 'two'], 'first prompt correctly identifies queue prefixes'); - - assert.equal(prompt.args[1][0].length, 1, 'second prompt one question'); - assert.equal(prompt.args[1][0][0].type, 'list', 'second prompt type = list'); - assert.deepEqual(prompt.args[1][0][0].choices, [ - 'Triage dead messages individually?', - 'Print out all dead messages?', - 'Return all dead messages to the work queue?', - 'Purge the dead letter queue?' - ], 'second prompt expected actions'); - - assert.equal(prompt.args[2][0].length, 1, 'third prompt one question'); - assert.equal(prompt.args[2][0][0].type, 'confirm', 'third prompt type = confirm'); - - assert.equal(purge.callCount, 1, 'calls purgeQueue'); - assert.ok(purge.calledWith({ QueueUrl: 'oneDead' }), 'purges the dead letter queue'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] check initial prompts (single watchbot)', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Purge the dead letter queue?' })); - prompt.onCall(1).returns(Promise.resolve({ purge: true })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var purge = AWS.stub('SQS', 'purgeQueue', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(prompt.callCount, 2, 'two prompts'); - - assert.equal(prompt.args[0][0].length, 1, 'first prompt one question'); - assert.equal(prompt.args[0][0][0].type, 'list', 'first prompt type = list'); - assert.deepEqual(prompt.args[0][0][0].choices, [ - 'Triage dead messages individually?', - 'Print out all dead messages?', - 'Return all dead messages to the work queue?', - 'Purge the dead letter queue?' - ], 'first prompt expected actions'); - - assert.equal(prompt.args[1][0].length, 1, 'second prompt one question'); - assert.equal(prompt.args[1][0][0].type, 'confirm', 'second prompt type = confirm'); - - assert.equal(purge.callCount, 1, 'calls purgeQueue'); - assert.ok(purge.calledWith({ QueueUrl: 'oneDead' }), 'purges the dead letter queue'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] reject purge confirmation', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Purge the dead letter queue?' })); - prompt.onCall(1).returns(Promise.resolve({ purge: false })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var purge = AWS.stub('SQS', 'purgeQueue', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(purge.callCount, 0, 'does not call purgeQueue'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] return messages to work queue', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Return all dead messages to the work queue?' })); - prompt.onCall(1).returns(Promise.resolve({ replayAll: true })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var receives = 0; - var receive = AWS.stub('SQS', 'receiveMessage', function() { - receives++; - var payload = {}; - - if (receives === 1) payload = { - Messages: [ - { - MessageId: 'id-1', - Body: JSON.stringify({ Subject: 'subject-1', Message: 'message-1' }), - ReceiptHandle: 'handle-1' - }, - { - MessageId: 'id-2', - Body: JSON.stringify({ Subject: 'subject-2', Message: 'message-2' }), - ReceiptHandle: 'handle-2' - } - ] - }; - - if (receives > 1) payload = { Messages: [] }; - - this.request.promise.returns(Promise.resolve(payload)); - }); - - var send = AWS.stub('SQS', 'sendMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var del = AWS.stub('SQS', 'deleteMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(prompt.args[1][0].length, 1, 'second prompt one question'); - assert.equal(prompt.args[1][0][0].type, 'confirm', 'second prompt type = confirm'); - - assert.equal(receive.callCount, 2, 'calls receiveMessage twice'); - assert.ok(receive.alwaysCalledWith({ - QueueUrl: 'oneDead', - WaitTimeSeconds: 1, - MaxNumberOfMessages: 10, - VisibilityTimeout: 600 - }), 'reads correct queue, uses long-polling, receives up to 10, 10min timeout'); - - assert.equal(send.callCount, 2, 'calls sendMessage twice'); - assert.ok(send.calledWith({ - QueueUrl: 'oneWork', - MessageBody: JSON.stringify({ Subject: 'subject-1', Message: 'message-1' }) - }), 'sends one dead SQS message back to work queue'); - assert.ok(send.calledWith({ - QueueUrl: 'oneWork', - MessageBody: JSON.stringify({ Subject: 'subject-2', Message: 'message-2' }) - }), 'sends the other dead SQS message back to work queue'); - - assert.equal(del.callCount, 2, 'calls deleteMessage twice'); - assert.ok(del.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-1' - }), 'deletes one message from dead letter queue'); - assert.ok(del.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-2' - }), 'deletes the other message from dead letter queue'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] reject return messages confirmation', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Return all dead messages to the work queue?' })); - prompt.onCall(1).returns(Promise.resolve({ replayAll: false })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var receive = AWS.stub('SQS', 'receiveMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var send = AWS.stub('SQS', 'sendMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var del = AWS.stub('SQS', 'deleteMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(receive.callCount, 0, 'receives no messages'); - assert.equal(send.callCount, 0, 'sends no messages'); - assert.equal(del.callCount, 0, 'deletes no messages'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] individual message triage', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Triage dead messages individually?' })); - prompt.onCall(1).returns(Promise.resolve({ action: 'Return this message to the work queue?' })); - prompt.onCall(2).returns(Promise.resolve({ action: 'Return this message to the dead letter queue?' })); - prompt.onCall(3).returns(Promise.resolve({ action: 'Delete this message entirely?' })); - prompt.onCall(4).returns(Promise.resolve({ action: 'View this message\'s recent logs?' })); - prompt.onCall(5).returns(Promise.resolve({ action: 'Stop individual triage?' })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var receive = AWS.stub('SQS', 'receiveMessage'); - receive.onCall(0).returns({ - promise: () => Promise.resolve({ Messages: [{ MessageId: 'id-1', Body: JSON.stringify({ Subject: 'subject-1', Message: 'message-1' }), ReceiptHandle: 'handle-1' }] }) - }); - receive.onCall(1).returns({ - promise: () => Promise.resolve({ Messages: [{ MessageId: 'id-2', Body: JSON.stringify({ Subject: 'subject-2', Message: 'message-2' }), ReceiptHandle: 'handle-2' }] }) - }); - receive.onCall(2).returns({ - promise: () => Promise.resolve({ Messages: [{ MessageId: 'id-3', Body: JSON.stringify({ Subject: 'subject-3', Message: 'message-3' }), ReceiptHandle: 'handle-3' }] }) - }); - receive.onCall(3).returns({ - promise: () => Promise.resolve({ Messages: [{ MessageId: 'id-4', Body: JSON.stringify({ Subject: 'subject-4', Message: 'message-4' }), ReceiptHandle: 'handle-4' }] }) - }); - - var send = AWS.stub('SQS', 'sendMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var del = AWS.stub('SQS', 'deleteMessage', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var vis = AWS.stub('SQS', 'changeMessageVisibility', function() { - this.request.promise.returns(Promise.resolve()); - }); - - var fetch = sinon.stub(logs, 'fetch'); - fetch.onCall(0).yields(null, [ - '[Sun, 12 Feb 2017 00:24:41 GMT] [watchbot] [a406f47b-a0f2-49a6-a159-b0f8578104bf] {"subject":"bozo","message":"message-4","receives":"1"}', - '[Sun, 12 Feb 2017 00:24:42 GMT] [watchbot] [436d13dc-a666-44fd-a2df-70f1f4b3f107] {"subject":"bozo","message":"message-5","receives":"1"}' - ].join('\n')); - fetch.onCall(1).yields(null, 'final logs\n'); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(send.callCount, 1, 'one sendMessage request'); - assert.ok(send.calledWith({ - QueueUrl: 'oneWork', - MessageBody: JSON.stringify({ Subject: 'subject-1', Message: 'message-1' }) - }), 'returns the first message to work queue'); - - assert.equal(del.callCount, 2, 'two deleteMessage requests'); - assert.ok(del.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-1' - }), 'deletes the first message from the dead letter queue'); - assert.ok(del.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-3' - }), 'deletes the third message from the dead letter queue'); - - assert.equal(vis.callCount, 2, 'two changeMessageVisibility requests'); - assert.ok(vis.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-2', - VisibilityTimeout: 0 - }), 'returns the second message to the dead letter queue'); - assert.ok(vis.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-4', - VisibilityTimeout: 0 - }), 'returns the fourth message to the dead letter queue'); - - assert.equal(fetch.callCount, 2, 'two calls to fetch recent logs'); - assert.ok(fetch.calledWith('oneLogs', 'message-4'), 'one fetch call based on message itself'); - assert.ok(fetch.calledWith('oneLogs', 'a406f47b-a0f2-49a6-a159-b0f8578104bf'), 'one fetch call based on original message id'); - - prompt.restore(); - fetch.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); - -test('[dead-letter] write out messages', (assert) => { - var prompt = sinon.stub(inquirer, 'prompt'); - prompt.onCall(0).returns(Promise.resolve({ action: 'Print out all dead messages?' })); - - AWS.stub('CloudFormation', 'describeStacks', function() { - this.request.promise.returns(Promise.resolve({ - Stacks: [ - { - Outputs: [ - { OutputKey: 'oneDeadLetterQueueUrl', OutputValue: 'oneDead' }, - { OutputKey: 'oneQueueUrl', OutputValue: 'oneWork' }, - { OutputKey: 'oneLogGroup', OutputValue: 'oneLogs' } - ] - } - ] - })); - }); - - var receive = AWS.stub('SQS', 'receiveMessage'); - receive.onCall(0).returns({ - promise: () => Promise.resolve({ - Messages: [ - { MessageId: 'id-1', Body: JSON.stringify({ Subject: 'subject-1', Message: 'message-1' }), ReceiptHandle: 'handle-1' }, - { MessageId: 'id-2', Body: JSON.stringify({ Subject: 'subject-2', Message: 'message-2' }), ReceiptHandle: 'handle-2' } - ] - }) - }); - receive.onCall(1).returns({ - promise: () => Promise.resolve({}) - }); - - var vis = AWS.stub('SQS', 'changeMessageVisibility', function() { - this.request.promise.returns(Promise.resolve()); - }); - - dead({ stackName: 'stack', region: 'region' }, (err) => { - assert.ifError(err, 'success'); - if (err) return assert.end(); - - assert.equal(vis.callCount, 2, 'two changeMessageVisibility requests'); - assert.ok(vis.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-1', - VisibilityTimeout: 0 - }), 'returns the first message to the dead letter queue'); - assert.ok(vis.calledWith({ - QueueUrl: 'oneDead', - ReceiptHandle: 'handle-2', - VisibilityTimeout: 0 - }), 'returns the second message to the dead letter queue'); - - prompt.restore(); - AWS.CloudFormation.restore(); - AWS.SQS.restore(); - assert.end(); - }); -}); diff --git a/test/fixtures/capacity.js b/test/fixtures/capacity.js deleted file mode 100644 index ea94e786..00000000 --- a/test/fixtures/capacity.js +++ /dev/null @@ -1,138 +0,0 @@ -module.exports = {}; - -module.exports.describeStacks = { - Stacks: [ - { - StackId: 'arn:aws:cloudformation:us-east-1:123456789000:stack/cats-api-staging/00000000-ffff-0000-ffff-000000000000', - StackName: 'cats-api-staging', - Outputs: [ - { - OutputKey: 'ClusterArn', - OutputValue: 'arn:aws:ecs:us-east-1:123456789000:cluster/some-cluster-Cluster-000000000000', - Description: 'Service cluster ARN' - }, - { - OutputKey: 'SomeOtherOutputKey', - OutputValue: 'SomeOtherOutputValue', - Description: 'Decoy output!' - } - ] - } - ] -}; - -module.exports.describeStackResources = { - StackResources: [ - { - StackName: 'cats-api-staging', - StackId: 'arn:aws:cloudformation:us-east-1:123456789000:stack/cats-api-staging/00000000-ffff-0000-ffff-000000000000', - LogicalResourceId: 'WatchbotWorker', - PhysicalResourceId: 'arn:aws:ecs:us-east-1:123456789000:task-definition/cats-api-staging-WatchbotWorker-000000000000:1', - ResourceType: 'AWS::ECS::TaskDefinition', - Timestamp: '2017-02-09T18:31:48.982Z', - ResourceStatus: 'CREATE_COMPLETE' - } - ] -}; - -module.exports.describeStackResources = { - StackResources: [ - { - StackName: 'cats-api-staging', - StackId: 'arn:aws:cloudformation:us-east-1:123456789000:stack/cats-api-staging/00000000-ffff-0000-ffff-000000000000', - LogicalResourceId: 'WatchbotWorker', - PhysicalResourceId: 'arn:aws:ecs:us-east-1:123456789000:task-definition/cats-api-staging-WatchbotWorker-000000000000:1', - ResourceType: 'AWS::ECS::TaskDefinition', - Timestamp: '2017-02-09T18:31:48.982Z', - ResourceStatus: 'CREATE_COMPLETE' - } - ] -}; - -module.exports.describeTaskDefinitionSoftMem = { - taskDefinition: { - containerDefinitions: [ - { - cpu: 256, - memoryReservation: 128 - } - ] - } -}; - -module.exports.describeTaskDefinitionHardMem = { - taskDefinition: { - containerDefinitions: [ - { - cpu: 256, - memory: 128 - } - ] - } -}; - -module.exports.describeTaskDefinitionBothMem = { - taskDefinition: { - containerDefinitions: [ - { - cpu: 256, - memory: 128, - memoryReservation: 64 - } - ] - } -}; - -module.exports.listContainerInstances = { - containerInstanceArns: [ - 'arn:aws:ecs:us-east-1:123456789000:container-instance/00000000-ffff-0000-ffff-000000000000', - 'arn:aws:ecs:us-east-1:123456789000:container-instance/ffffffff-0000-ffff-0000-ffffffffffff' - ] -}; - -module.exports.listContainerInstancesPage0 = { - containerInstanceArns: [module.exports.listContainerInstances.containerInstanceArns[0]] -}; - -module.exports.listContainerInstancesPage1 = { - containerInstanceArns: [module.exports.listContainerInstances.containerInstanceArns[1]] -}; - -module.exports.describeContainerInstances = { - containerInstances: [ - { - ec2InstanceId: 'i-00000000000000000', - remainingResources: [ - { - name: 'CPU', - integerValue: 32768 - }, - { - name: 'MEMORY', - integerValue: 184306 - } - ] - }, - { - ec2InstanceId: 'i-fffffffffffffffff', - remainingResources: [ - { - name: 'CPU', - integerValue: 32768 - }, - { - name: 'MEMORY', - integerValue: 183986 - } - ] - } - ] -}; - -module.exports.describeContainerInstances0 = { - containerInstances: [module.exports.describeContainerInstances.containerInstances[0]] -}; - -module.exports.describeContainerInstances1 = { - containerInstances: [module.exports.describeContainerInstances.containerInstances[1]] -}; diff --git a/test/logger.test.js b/test/logger.test.js new file mode 100644 index 00000000..2d4b4c66 --- /dev/null +++ b/test/logger.test.js @@ -0,0 +1,221 @@ +'use strict'; + +const test = require('tape'); +const sinon = require('sinon'); +const Logger = require('../lib/logger'); +const Message = require('../lib/message'); + +const queueUrl = 'https://sqs.us-east-1.amazonaws.com/123456789012/fake'; +const sqsMessage = { + MessageId: '895ab607-3767-4bbb-bd45-2a3b341cbc46', + ReceiptHandle: 'a', + Body: JSON.stringify({ Subject: 'one', Message: '1' }), + Attributes: { + SentTimestamp: '1518027533772', + ApproximateFirstReceiveTimestamp: '1518027533772', + ApproximateReceiveCount: 3 + } +}; +const message = new Message(sqsMessage, { queueUrl }); + +test('[logger] constructor', (assert) => { + assert.throws( + () => new Logger('pie'), + /Invalid logger type/, + 'throws error on invalid type' + ); + + assert.throws( + () => new Logger('watcher', {}), + /Invalid message/, + 'throws error on invalid message' + ); + + assert.doesNotThrow(() => new Logger('watcher'), 'message is not required'); + + const logger = new Logger('worker', message); + + assert.equal(logger.type, 'worker', 'sets .type'); + assert.equal(logger.message, message, 'sets .message'); + + assert.end(); +}); + +test('[logger] factory', (assert) => { + const message = sinon.createStubInstance(Message); + const logger = Logger.create('watcher', message); + assert.ok(logger instanceof Logger, 'returns a Logger object'); + assert.equal(logger.message, message, 'sets .message'); + assert.end(); +}); + +test('[logger] messageReceived', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('watcher', message); + logger.messageReceived(); + + const data = process.stdout.write.args[0][0]; + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] [895ab607-3767-4bbb-bd45-2a3b341cbc46] {"subject":"one","message":"1","receives":"3"}\n', + 'expected message' + ); + + Date.prototype.toGMTString.restore(); + process.stdout.write.restore(); + assert.end(); +}); + +test('[logger] workerSuccess', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('watcher', message); + logger.workerSuccess({ code: 0, duration: 12345 }); + + const data = process.stdout.write.args[0][0]; + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] [895ab607-3767-4bbb-bd45-2a3b341cbc46] {"code":0,"duration":12345}\n', + 'expected message' + ); + + Date.prototype.toGMTString.restore(); + process.stdout.write.restore(); + assert.end(); +}); + +test('[logger] workerFailure', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('watcher', message); + logger.workerFailure({ code: 124, signal: 'SIGTERM', duration: 12345 }); + + const data = process.stdout.write.args[0][0]; + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] [895ab607-3767-4bbb-bd45-2a3b341cbc46] [failure] {"code":124,"signal":"SIGTERM","duration":12345}\n', + 'expected message' + ); + + Date.prototype.toGMTString.restore(); + process.stdout.write.restore(); + assert.end(); +}); + +test('[logger] workerError', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('watcher', message); + logger.workerError(new Error('foo')); + + const data = process.stdout.write.args[0][0]; + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] [895ab607-3767-4bbb-bd45-2a3b341cbc46] [error] [worker] foo\n', + 'expected message' + ); + + Date.prototype.toGMTString.restore(); + process.stdout.write.restore(); + assert.end(); +}); + +test('[logger] queueError', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('watcher'); + logger.queueError(new Error('foo')); + + const data = process.stdout.write.args[0][0]; + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] [error] [sqs] foo\n', + 'expected message' + ); + + Date.prototype.toGMTString.restore(); + process.stdout.write.restore(); + assert.end(); +}); + +test('[logger] log', (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + let logger = new Logger('worker', message); + logger.log('hello there'); + + let data = process.stdout.write.args[0][0]; + process.stdout.write.restore(); + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [worker] [895ab607-3767-4bbb-bd45-2a3b341cbc46] hello there\n', + 'prefixed with timestamp, type, and message id' + ); + + sinon.spy(process.stdout, 'write'); + logger = new Logger('watcher'); + logger.log('ok then'); + + data = process.stdout.write.args[0][0]; + process.stdout.write.restore(); + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [watcher] ok then\n', + 'prefixed with timestamp, and type' + ); + + Date.prototype.toGMTString.restore(); + assert.end(); +}); + +test('[logger] stream', async (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + sinon.spy(process.stdout, 'write'); + + const logger = new Logger('worker', message); + const writable = logger.stream(); + + writable.write('hello there\nhow are you'); + writable + .on('finish', () => { + const first = process.stdout.write.args[0][0]; + const second = process.stdout.write.args[1][0]; + process.stdout.write.restore(); + assert.equal( + first, + '[Fri, 09 Feb 2018 21:57:55 GMT] [worker] [895ab607-3767-4bbb-bd45-2a3b341cbc46] hello there\n', + 'prefixed first line with timestamp, type, and message id' + ); + + assert.equal( + second, + '[Fri, 09 Feb 2018 21:57:55 GMT] [worker] [895ab607-3767-4bbb-bd45-2a3b341cbc46] how are you\n', + 'splits on newline, prefixed second line with timestamp, type, and message id' + ); + + Date.prototype.toGMTString.restore(); + assert.end(); + }) + .end(); +}); diff --git a/test/logs.test.js b/test/logs.test.js deleted file mode 100644 index 1b5fe0a9..00000000 --- a/test/logs.test.js +++ /dev/null @@ -1,142 +0,0 @@ -/* eslint-disable no-console */ - -var watchbot = require('..'); -var test = require('tape'); -var util = require('util'); -var exec = require('child_process').exec; -var path = require('path'); -var sinon = require('sinon'); -var cwlogs = require('cwlogs'); -var stream = require('stream'); -var crypto = require('crypto'); - -var log = console.log.bind(console); -var logger = path.resolve(__dirname, '..', 'bin', 'watchbot-log.js'); - -test('[logs] via JS: adds prefixes, formats strings', function(assert) { - process.env.MessageId = 'testing'; - - var passes = false; - - console.log = function() { - passes = /\[worker\] \[testing\] ham and eggs/.test(util.format.apply(null, arguments)); - }; - - watchbot.log('ham and %s', 'eggs'); - console.log = log; - - assert.ok(passes, 'printed expected message'); - delete process.env.MessageId; - assert.end(); -}); - -test('[logs] via JS streaming API: adds prefixes, formats strings', function(assert) { - process.env.MessageId = 'testing'; - - var passes = false; - var i = 0; - console.log = function() { - var msg = util.format.apply(null, arguments); - i++; - passes = /\[worker\] \[testing\] ham and eggs/.test(msg) || /\[worker\] \[testing\] and toast/.test(msg); - }; - - var logstream = watchbot.logStream(); - logstream.write('ham and eggs\nand toast'); - logstream.end(); - console.log = log; - - assert.ok(passes, 'printed expected messages'); - assert.equal(i, 2, 'printed both lines'); - delete process.env.MessageId; - assert.end(); -}); - -test('[logs] via CLI: adds prefixes to provided argument', function(assert) { - process.env.MessageId = 'testing'; - exec([logger, '"ham and eggs"'].join(' '), function(err, stdout) { - if (err) return assert.end(err); - assert.ok(/\[worker\] \[testing\] ham and eggs/.test(stdout), 'printed expected message'); - delete process.env.MessageId; - assert.end(); - }); -}); - -test('[logs] via CLI: adds prefixes to stdin', function(assert) { - process.env.MessageId = 'testing'; - - var logging = exec(logger, function(err, stdout) { - if (err) return assert.end(err); - assert.ok(/\[worker\] \[testing\] ham and eggs/.test(stdout), 'printed expected message'); - delete process.env.MessageId; - assert.end(); - }); - - logging.stdin.write('ham and eggs'); - logging.stdin.end(); -}); - -test('[logs] via CLI: adds prefixes to stdin, splits multiline', function(assert) { - process.env.MessageId = 'testing'; - - var logging = exec(logger, function(err, stdout) { - if (err) return assert.end(err); - - stdout = stdout.trim().split('\n'); - assert.equal(stdout.length, 3, 'split into 3 lines'); - - assert.ok(/\[worker\] \[testing\] ham and eggs/.test(stdout[0]), 'printed expected first line'); - assert.ok(/\[worker\] \[testing\] bacon lettuce and tomato/.test(stdout[1]), 'printed expected second line'); - assert.ok(/\[worker\] \[testing\] roast beef and cheddar/.test(stdout[2]), 'printed expected third line'); - delete process.env.MessageId; - assert.end(); - }); - - logging.stdin.write('ham and eggs\nbacon lettuce and tomato\n'); - logging.stdin.write('roast beef and cheddar'); - logging.stdin.end(); -}); - -test('[logs] fetch a ton of logs', function(assert) { - var logGroupArn = 'arn:aws:logs:eu-west-1:123456789012:log-group:some-log-group:*'; - var messageId = 'message-id'; - - var logs = ''; - for (var i = 0; i < 70; i++) logs += crypto.randomBytes(512).toString('hex') + '\n'; - logs += '\n' + crypto.randomBytes(25 * 1024).toString('hex') + '\n'; - - sinon.stub(cwlogs, 'readable', function(options) { - var tminus6 = Date.now() - 6 * 60 * 60 * 1000; - assert.ok(Math.abs(tminus6 - options.start) < 10000, 'queries last 6 hours of logs'); - delete options.start; - - assert.deepEqual(options, { - region: 'eu-west-1', - group: 'some-log-group', - pattern: 'message-id', - messages: true - }, 'creates cwlog reader with expected options'); - - var readable = new stream.Readable(); - readable._read = function() { - readable.push(logs); - readable.push(null); - }; - - return readable; - }); - - watchbot.fetch(logGroupArn, messageId, function(err, data) { - if (err) return assert.end(err); - - assert.ok(data.length < 50 * 1024, 'output limited to 50kb'); - var lastFound = data.split('\n').slice(-2)[0]; - var lastExpected = logs.split('\n').slice(-2)[0]; - - // returns either whole or truncated log - assert.ok(lastFound === lastExpected || lastExpected.includes(lastFound.match(/(.*)...$/)[1]), 'returned most recent log'); - - cwlogs.readable.restore(); - assert.end(); - }); -}); diff --git a/test/main.test.js b/test/main.test.js deleted file mode 100644 index 9d76eb93..00000000 --- a/test/main.test.js +++ /dev/null @@ -1,402 +0,0 @@ -var util = require('./util'); -var watchbot = require('..'); - -var config = { - NotificationTopic: 'arn:aws:sns:us-east-1:123456789:fake-topic', - Cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - TaskDefinition: 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1', - Concurrency: '3', - QueueUrl: 'https://fake.us-east-1/sqs/url', - TaskEventQueueUrl: 'https://fake.us-east-1/sqs/url-for-events', - StackName: 'watchbot-testing', - AlarmOnEachFailure: 'true' - // , LogLevel: 'debug' -}; - -util.mock('[main] message polling error', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'error', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - var errorMsg = context.logs.find(function(log) { - return /Mock SQS error/.test(log); - }); - assert.deepEqual(context.sns.publish, [], 'sent no error notification'); - assert.ok(errorMsg, 'logged error message'); - assert.end(); - }); -}); - -util.mock('[main] nothing to do', function(assert) { - var context = this; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.end(); - }); -}); - -util.mock('[main] run a task', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.deepEqual(context.ecs.runTask, [ - { - startedBy: config.StackName, - taskDefinition: config.TaskDefinition, - overrides: { - containerOverrides: [ - { - name: config.ContainerName, - environment: [ - { name: 'MessageId', value: '1' }, - { name: 'Subject', value: 'subject1' }, - { name: 'Message', value: 'message1' }, - { name: 'SentTimestamp', value: '10' }, - { name: 'ApproximateFirstReceiveTimestamp', value: '20' }, - { name: 'ApproximateReceiveCount', value: '1' } - ] - } - ] - } - } - ], 'expected ecs.runTask request'); - assert.end(); - }); -}); - -util.mock('[main] task running error', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'ecs-error', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, '1 ecs.runTask request'); - assert.ok(context.logs.find(function(log) { - return /Mock ECS error/.test(log); - }), 'printed error message'); - - util.collectionsEqual(assert, context.sns.publish, [ - { - Subject: config.StackName + ' failed processing message ecs-error', - Message: 'At ${date}, processing message ecs-error failed on ' + config.StackName + '\n\nTask outcome: return & notify\n\nTask stopped reason: Mock ECS error\n\nMessage information:\nMessageId: ecs-error\nSubject: subject1\nMessage: message1\nSentTimestamp: 10\nApproximateFirstReceiveTimestamp: 20\nApproximateReceiveCount: 1\n\nRuntime resources:\nCluster ARN: undefined\nInstance ARN: undefined\nTask ARN: undefined\n' - } - ], 'sent expected error notification'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: '1', VisibilityTimeout: 2 } - ], 'expected sqs.changeMessageVisibility requests'); - assert.end(); - }); -}); - -util.mock('[main] task running failure (out of memory)', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'ecs-failure', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, '1 ecs.runTask request'); - assert.deepEqual(context.sns.publish, [], 'does not send failure notification'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: '1', VisibilityTimeout: 2 } - ], 'expected sqs.changeMessageVisibility requests'); - assert.end(); - }); -}); - -util.mock('[main] task running failure (unrecognized reason)', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'ecs-unrecognized', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, '1 ecs.runTask request'); - assert.deepEqual(context.sns.publish, [], 'does not send failure notification'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: '1', VisibilityTimeout: 2 } - ], 'expected sqs.changeMessageVisibility requests'); - assert.end(); - }); -}); - -util.mock('[main] message completion error after task run failure', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'ecs-error', ReceiptHandle: 'error', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, '1 ecs.runTask request'); - assert.ok(context.logs.find(function(log) { - return /Mock ECS error/.test(log); - }), 'printed error message'); - util.collectionsEqual(assert, context.sns.publish, [], 'sent no error notifications'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: 'error', VisibilityTimeout: 2 } - ], 'expected sqs.changeMessageVisibility requests'); - assert.end(); - }); -}); - -util.mock('[main] task polling error', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'task-failure', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - context.sqs.eventMessages = [ - { MessageId: 'error', Attributes: { ApproximateReceiveCount: 0 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, '1 ecs.runTask request'); - assert.ok(context.logs.find(function(log) { - return /Mock SQS error/.test(log); - }), 'printed error message'); - assert.deepEqual(context.sns.publish, [], 'sent no error notification'); - assert.end(); - }); -}); - -util.mock('[main] no free tasks', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '2', ReceiptHandle: '2', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '3', ReceiptHandle: '3', Body: JSON.stringify({ Subject: 'subject3', Message: 'message3' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '4', ReceiptHandle: '4', Body: JSON.stringify({ Subject: 'subject4', Message: 'message4' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 1, 'one sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 3, 'three ecs.runTask requests'); - assert.end(); - }); -}); - -util.mock('[main] manage messages for completed tasks', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'finish-0', ReceiptHandle: '0', Body: JSON.stringify({ Subject: 'subject0', Message: 'message0' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: 'finish-2', ReceiptHandle: '2', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 2, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: 'finish-3', ReceiptHandle: '3', Body: JSON.stringify({ Subject: 'subject3', Message: 'message3' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: 'finish-4', ReceiptHandle: '4', Body: JSON.stringify({ Subject: 'subject4', Message: 'message4' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - context.sqs.eventMessages = context.sqs.messages.map((message) => { - return { - MessageId: `${message.MessageId}-event`, - ReceiptHandle: `${message.ReceiptHandle}-event`, - Attributes: { - SentTimestamp: message.Attributes.SentTimestamp, - ApproximateReceiveCount: 0 - }, - Body: JSON.stringify({ - detail: { - clusterArn: 'cluster-arn', - containerInstanceArn: 'instance-arn', - taskArn: util.expectedArn(message, config.TaskDefinition, config.ContainerName, config.StackName), - lastStatus: 'STOPPED', - stoppedReason: message.MessageId.split('-')[1], - overrides: { - containerOverrides: [ - { - environment: [ - { name: 'MessageId', value: message.MessageId }, - { name: 'Subject', value: JSON.parse(message.Body).Subject }, - { name: 'Message', value: JSON.parse(message.Body).Message }, - { name: 'SentTimestamp', value: message.Attributes.SentTimestamp }, - { name: 'ApproximateFirstReceiveTimestamp', value: message.Attributes.ApproximateFirstReceiveTimestamp }, - { name: 'ApproximateReceiveCount', value: message.Attributes.ApproximateReceiveCount + 1 } - ] - } - ] - }, - containers: [{ exitCode: Number(message.MessageId.split('-')[1]) }], - createdAt: 1484155844718, - startedAt: 1484155849718, - stoppedAt: 1484155857691 - } - }) - }; - }); - - var testConfig = Object.assign({}, config, { - Concurrency: '5', - NotifyAfterRetries: '1' - }); - - setTimeout(watchbot.main.end, 1800); - watchbot.main(testConfig).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 4, 'four ecs.runTask requests'); - util.collectionsEqual(assert, context.sqs.deleteMessage, [ - { ReceiptHandle: '0-event' }, - { ReceiptHandle: '2-event' }, - { ReceiptHandle: '3-event' }, - { ReceiptHandle: '4-event' }, - { ReceiptHandle: '0' }, - { ReceiptHandle: '3' } - ], ' sqs.deleteMessage for all event messages, and for expected job messages'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: '2', VisibilityTimeout: 8 }, - { ReceiptHandle: '4', VisibilityTimeout: 2 } - ], 'expected sqs.changeMessageVisibility requests'); - util.collectionsEqual(assert, context.sns.publish, [ - { - Subject: config.StackName + ' failed processing message finish-2', - Message: 'At ${date}, processing message finish-2 failed on ' + config.StackName + '\n\nTask outcome: return & notify\n\nTask stopped reason: 2\n\nMessage information:\nMessageId: finish-2\nSubject: subject2\nMessage: message2\nSentTimestamp: 10\nApproximateFirstReceiveTimestamp: 20\nApproximateReceiveCount: 3\n\nRuntime resources:\nCluster ARN: cluster-arn\nInstance ARN: instance-arn\nTask ARN: 3120b788edc53b003f3ebb8afc557f07\n' - }, - { - Subject: config.StackName + ' failed processing message finish-3', - Message: 'At ${date}, processing message finish-3 failed on ' + config.StackName + '\n\nTask outcome: delete & notify\n\nTask stopped reason: 3\n\nMessage information:\nMessageId: finish-3\nSubject: subject3\nMessage: message3\nSentTimestamp: 10\nApproximateFirstReceiveTimestamp: 20\nApproximateReceiveCount: 1\n\nRuntime resources:\nCluster ARN: cluster-arn\nInstance ARN: instance-arn\nTask ARN: 496a1bbc7db7ef69c5b024bed0fa66e7\n' - } - ], 'expected sns.publish requests'); - - assert.end(); - }); -}); - -util.mock('[main] message completion error', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: 'finish-0', ReceiptHandle: 'error', Body: JSON.stringify({ Subject: 'subject0', Message: 'message0' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - context.sqs.eventMessages = context.sqs.messages.map((message) => { - return { - MessageId: `${message.MessageId}-event`, - ReceiptHandle: `${message.ReceiptHandle}-event`, - Attributes: { - SentTimestamp: message.Attributes.SentTimestamp, - ApproximateReceiveCount: 0 - }, - Body: JSON.stringify({ - detail: { - clusterArn: 'cluster-arn', - containerInstanceArn: 'instance-arn', - taskArn: util.expectedArn(message, config.TaskDefinition, config.ContainerName, config.StackName), - lastStatus: 'STOPPED', - stoppedReason: message.MessageId.split('-')[1], - overrides: { - containerOverrides: [ - { - environment: [ - { name: 'MessageId', value: message.MessageId }, - { name: 'Subject', value: JSON.parse(message.Body).Subject }, - { name: 'Message', value: JSON.parse(message.Body).Message }, - { name: 'SentTimestamp', value: message.Attributes.SentTimestamp }, - { name: 'ApproximateFirstReceiveTimestamp', value: message.Attributes.ApproximateFirstReceiveTimestamp }, - { name: 'ApproximateReceiveCount', value: message.Attributes.ApproximateReceiveCount + 1 } - ] - } - ] - }, - containers: [{ exitCode: Number(message.MessageId.split('-')[1]) }], - createdAt: 1484155844718, - startedAt: 1484155849718, - stoppedAt: 1484155857691 - } - }) - }; - }); - - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.equal(context.sqs.receiveMessage.length, 2, 'two sqs.receiveMessage requests'); - assert.equal(context.ecs.runTask.length, 1, 'one ecs.runTask requests'); - assert.equal(context.sqs.changeMessageVisibility.length, 0, 'no sqs.changeMessageVisibility requests'); - var errorMsg = context.logs.find(function(log) { - return /Mock SQS error/.test(log); - }); - assert.ok(errorMsg, 'logged error'); - util.collectionsEqual(assert, context.sqs.deleteMessage, [ - { ReceiptHandle: 'error' }, { ReceiptHandle: 'error-event' } - ], 'expected sqs.deleteMessage request'); - - util.collectionsEqual(assert, context.sns.publish, [], 'sent no error notifications'); - assert.end(); - }); -}); - -util.mock('[main] LogLevel', function(assert){ - config.LogLevel = 'debug'; - var context = this; - setTimeout(watchbot.main.end, 1800); - watchbot.main(config).on('finish', function() { - assert.ok(context.logs.find(function(log) { - return /\[debug\]/.test(log); - }), 'logs debug messages'); - delete config.LogLevel; - assert.end(); - }); -}); - -util.mock('[main] duplicated receives', function(assert) { - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '2', ReceiptHandle: '2', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '3', ReceiptHandle: '3', Body: JSON.stringify({ Subject: 'subject3', Message: 'message3' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '4', ReceiptHandle: '4', Body: JSON.stringify({ Subject: 'subject4', Message: 'message4' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '5', ReceiptHandle: '5', Body: JSON.stringify({ Subject: 'subject5', Message: 'message5' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '6', ReceiptHandle: '6', Body: JSON.stringify({ Subject: 'subject6', Message: 'message6' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '7', ReceiptHandle: '7', Body: JSON.stringify({ Subject: 'subject7', Message: 'message7' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '8', ReceiptHandle: '8', Body: JSON.stringify({ Subject: 'subject8', Message: 'message8' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '9', ReceiptHandle: '9', Body: JSON.stringify({ Subject: 'subject9', Message: 'message9' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '10', ReceiptHandle: '10', Body: JSON.stringify({ Subject: 'subject10', Message: 'message10' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0, ApproximateFirstReceiveTimestamp: 20 } }, - { MessageId: '1', ReceiptHandle: '11', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - setTimeout(watchbot.main.end, 1800); - watchbot.main(Object.assign({}, config, { Concurrency: 20 })).on('finish', function() { - assert.deepEqual(context.ecs.describeTasks, [ - { tasks: ['3b80fe64b7d8278090a63a16e5908ad9'] } - ], 'called describeTasks on the right task arn'); - assert.deepEqual(context.ecs.stopTask, [ - { task: '3b80fe64b7d8278090a63a16e5908ad9' } - ], 'called stopTask on the right task arn'); - assert.deepEqual(context.sqs.changeMessageVisibility, [ - { - ReceiptHandle: '11', - VisibilityTimeout: Math.pow(2, 2) - } - ], 'returns the message to SQS, using the new receipt handle'); - assert.end(); - }); -}); diff --git a/test/message.test.js b/test/message.test.js new file mode 100644 index 00000000..8671d695 --- /dev/null +++ b/test/message.test.js @@ -0,0 +1,204 @@ +'use strict'; + +const test = require('tape'); +const AWS = require('@mapbox/mock-aws-sdk-js'); +const Message = require('../lib/message'); +const Logger = require('../lib/logger'); +const stubber = require('./stubber'); + +const queueUrl = 'https://sqs.us-east-1.amazonaws.com/123456789012/fake'; +const sqsMessage = { + MessageId: '1', + ReceiptHandle: 'a', + Body: JSON.stringify({ Subject: 'one', Message: '1' }), + Attributes: { + SentTimestamp: '1518027533772', + ApproximateFirstReceiveTimestamp: '1518027533772', + ApproximateReceiveCount: 3 + } +}; + +test('[message] constructor', (assert) => { + AWS.stub('SQS', 'receiveMessage'); + + assert.throws( + () => new Message({ MessageId: 'a' }), + /Invalid SQS message object/, + 'throws if sqsMessage does not contain all required data' + ); + + assert.throws( + () => + new Message({ + MessageId: 'a', + Body: '', + ReceiptHandle: 'b', + Attributes: {} + }), + /Invalid SQS message attributes/, + 'throws when message attributes are missing' + ); + + assert.throws( + () => new Message(sqsMessage), + /Missing options: queueUrl/, + 'throws when no queueUrl is provided' + ); + + const message = new Message(sqsMessage, { queueUrl }); + + assert.equal(message.id, '1', 'sets .id'); + assert.equal(message.handle, 'a', 'sets .handle'); + assert.deepEqual( + message.env, + { + MessageId: '1', + Subject: 'one', + Message: '1', + SentTimestamp: '2018-02-07T18:18:53.772Z', + ApproximateFirstReceiveTimestamp: '2018-02-07T18:18:53.772Z', + ApproximateReceiveCount: '3' + }, + 'sets .env' + ); + + assert.ok( + AWS.SQS.calledWith({ + region: 'us-east-1', + params: { QueueUrl: queueUrl } + }), + 'created SQS client properly' + ); + + assert.ok(message.sqs, 'sets .sqs'); + + assert.ok(message.logger instanceof Logger, 'sets .logger'); + + AWS.SQS.restore(); + assert.end(); +}); + +test('[message] factory', (assert) => { + const message = Message.create(sqsMessage, { queueUrl }); + assert.ok(message instanceof Message, 'returns Message object'); + assert.end(); +}); + +test('[message] retry', async (assert) => { + const cmv = AWS.stub('SQS', 'changeMessageVisibility', function() { + this.request.promise.returns(Promise.resolve()); + }); + + const message = new Message(sqsMessage, { queueUrl }); + + try { + await message.retry(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok( + cmv.calledWith({ + ReceiptHandle: 'a', + VisibilityTimeout: 8 + }), + 'returns message to queue with backoff on visibility timeout' + ); + + AWS.SQS.restore(); + assert.end(); +}); + +test('[message] retry, too many receieves', async (assert) => { + const cmv = AWS.stub('SQS', 'changeMessageVisibility', function() { + this.request.promise.returns(Promise.resolve()); + }); + + const sqsMsg = Object.assign({}, sqsMessage); + sqsMsg.Attributes = Object.assign({}, sqsMessage.Attributes, { + ApproximateReceiveCount: 15 + }); + + const message = new Message(sqsMsg, { queueUrl }); + + try { + await message.retry(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.equal( + cmv.callCount, + 0, + 'lets message time out without explicitly changing visibility' + ); + + AWS.SQS.restore(); + assert.end(); +}); + +test('[message] retry, SQS error', async (assert) => { + const logger = stubber(Logger).setup(); + const err = new Error('foo'); + AWS.stub('SQS', 'changeMessageVisibility', function() { + this.request.promise.returns(Promise.reject(err)); + }); + + const message = new Message(sqsMessage, { queueUrl }); + + try { + await message.retry(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok(logger.queueError.calledWith(err), 'logged sqs error'); + + logger.teardown(); + AWS.SQS.restore(); + assert.end(); +}); + +test('[message] complete', async (assert) => { + const del = AWS.stub('SQS', 'deleteMessage', function() { + this.request.promise.returns(Promise.resolve()); + }); + + const message = new Message(sqsMessage, { queueUrl }); + + try { + await message.complete(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok( + del.calledWith({ ReceiptHandle: 'a' }), + 'removed message from queue' + ); + + AWS.SQS.restore(); + assert.end(); +}); + +test('[message] complete, SQS error', async (assert) => { + const logger = stubber(Logger).setup(); + const err = new Error('foo'); + AWS.stub('SQS', 'deleteMessage', function() { + this.request.promise.returns(Promise.reject(err)); + }); + + const message = new Message(sqsMessage, { queueUrl }); + + try { + await message.complete(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok(logger.queueError.calledWith(err), 'logged sqs error'); + + logger.teardown(); + AWS.SQS.restore(); + assert.end(); +}); diff --git a/test/messages.test.js b/test/messages.test.js index 2811d2ca..e12a43a1 100644 --- a/test/messages.test.js +++ b/test/messages.test.js @@ -1,662 +1,236 @@ -var util = require('./util'); -var watchbot = require('..'); -var d3 = require('d3-queue'); -var cwlogs = require('cwlogs'); -var stream = require('stream'); -var sinon = require('sinon'); - -util.mock('[messages] poll - more than max messages to receive', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName); - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '2', ReceiptHandle: '2', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '3', ReceiptHandle: '3', Body: JSON.stringify({ Subject: 'subject3', Message: 'message3' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; - - messages.poll(2, function(err, envs) { - if (err) return assert.end(err); - assert.deepEqual(context.sqs.config, { - region: 'us-east-1', - params: { QueueUrl: queueUrl } - }, 'sqs client initialized properly'); - assert.deepEqual(context.sqs.receiveMessage, [ - { - AttributeNames: [ - 'SentTimestamp', - 'ApproximateFirstReceiveTimestamp', - 'ApproximateReceiveCount' - ], - WaitTimeSeconds: 20, - MaxNumberOfMessages: 2 - } - ], 'expected receiveMessage request'); - assert.deepEqual(envs, [ - { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - { - MessageId: '2', - Subject: 'subject2', - Message: 'message2', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - } - ], 'found expected messages and converted to task envs'); - assert.end(); +'use strict'; + +const test = require('tape'); +const AWS = require('@mapbox/mock-aws-sdk-js'); +const stubber = require('./stubber'); +const Messages = require('../lib/messages'); +const Message = require('../lib/message'); +const Logger = require('../lib/logger'); + +test('[messages] constructor', (assert) => { + AWS.stub('SQS', 'receiveMessage'); + + assert.throws( + () => new Messages(), + /Missing options: queueUrl/, + 'queueUrl is required' + ); + + const messages = new Messages({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' }); -}); - -util.mock('[messages] poll - no messages to receive', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName); - var context = this; - messages.poll(1, function(err, envs) { - if (err) return assert.end(err); - assert.deepEqual(context.sqs.config, { + assert.ok(messages.sqs, 'sets .sqs'); + assert.ok( + AWS.SQS.calledWith({ region: 'us-east-1', - params: { QueueUrl: queueUrl } - }, 'sqs client initialized properly'); - assert.deepEqual(context.sqs.receiveMessage, [ - { - AttributeNames: [ - 'SentTimestamp', - 'ApproximateFirstReceiveTimestamp', - 'ApproximateReceiveCount' - ], - WaitTimeSeconds: 20, - MaxNumberOfMessages: 1 + params: { + QueueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' } - ], 'expected receiveMessage requests'); - assert.deepEqual(envs, [], 'empty envs array returned'); - assert.end(); - }); -}); + }), + 'created SQS client correctly' + ); -util.mock('[messages] poll - message still processing', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName); - var context = this; - var msg = { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }; - context.sqs.messages = [JSON.parse(JSON.stringify(msg))]; - - // receive the message once - messages.poll(1, function(err) { - if (err) return assert.end(err); - - // receive the same message again, with a new handle - context.sqs.messages = [JSON.parse(JSON.stringify(msg))]; - context.sqs.messages[0].ReceiptHandle = '2'; - messages.poll(1, function(err, envs, skips) { - if (err) return assert.end(err); - - assert.deepEqual(skips, [ - { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - } - ], 'provides a record of skipped message'); - - // complete the message - messages.complete({ reason: 'success', env: { MessageId: '1' }, outcome: 'delete' }, function(err) { - if (err) return assert.end(err); - - // complete the message a second time - messages.complete({ reason: 'success', env: { MessageId: '1' }, outcome: 'delete' }, function(err) { - if (err) return assert.end(err); - - assert.deepEqual(context.sqs.deleteMessage, [ - { ReceiptHandle: '2' } - ], 'deleted the message using most recent handle'); - - assert.end(); - }); - }); - }); - }); + assert.ok(messages.logger instanceof Logger, 'sets .logger'); + AWS.SQS.restore(); + assert.end(); }); -util.mock('[messages] poll - receiveMessage error', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName); - var context = this; - - context.sqs.messages = [ - { MessageId: 'error', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; - - messages.poll(4, function(err) { - if (!err) return assert.end('should have failed'); - assert.equal(err.message, 'Mock SQS error', 'sqs.receiveMessage error passed to callback'); - assert.end(); +test('[messages] factory', (assert) => { + const messages = Messages.create({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' }); + assert.ok(messages instanceof Messages, 'returns Messages object'); + assert.end(); }); -util.mock('[messages] complete', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName, true); - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '2', ReceiptHandle: '2', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '3', ReceiptHandle: '3', Body: JSON.stringify({ Subject: 'subject3', Message: 'message3' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '4', ReceiptHandle: '4', Body: JSON.stringify({ Subject: 'subject4', Message: 'message4' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; +test('[messages] waitFor polls enpty queue until you stop it', async (assert) => { + const receive = AWS.stub('SQS', 'receiveMessage'); - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'noop', - env: { - MessageId: '3', - Subject: 'subject3', - Message: 'message3', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return' - }, - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'retry', - env: { - MessageId: '4', - Subject: 'subject4', - Message: 'message4', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: '3', VisibilityTimeout: 2 }, - { ReceiptHandle: '4', VisibilityTimeout: 2 } - ], 'expected messages returned to queue with backoff'); - assert.end(); - }); + const messages = Messages.create({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' }); -}); -util.mock('[messages] complete - message not found in sqs', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName); - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: 'missing', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } }, - { MessageId: '2', ReceiptHandle: 'missing', Body: JSON.stringify({ Subject: 'subject2', Message: 'message2' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; - - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'noop', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return' - }, - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'success', - env: { - MessageId: '2', - Subject: 'subject2', - Message: 'message2', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'delete' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - util.collectionsEqual(assert, context.sqs.deleteMessage, [ - { ReceiptHandle: 'missing' } - ], 'expected messages deleted'); - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: 'missing', VisibilityTimeout: 2 } - ], 'expected messages returned to queue'); - assert.end(); - }); + const empty = { promise: () => Promise.resolve({ Messages: [] }) }; + receive.onCall(0).returns(empty); + receive.onCall(1).callsFake(() => { + messages.stop = true; + return empty; }); -}); -util.mock('[messages] complete - message cannot backoff anymore', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var messages = watchbot.messages(queueUrl, topic, stackName, true); - var context = this; + try { + await messages.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: 'missing', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 14, ApproximateFirstReceiveTimestamp: 20 } } - ]; + assert.pass('polling stopped'); + assert.equal(receive.callCount, 2, 'called sqs.receiveMessage twice'); - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'noop', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '15' - }, - outcome: 'return' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [], 'message allowed to timeout'); - assert.end(); - }); - }); + AWS.SQS.restore(); + assert.end(); }); -util.mock('[messages] complete - stack name is long', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-'; - var messages = watchbot.messages(queueUrl, topic, stackName, true); - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'failed', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' +test('[messages] waitFor gets message', async (assert) => { + const message = stubber(Message).setup(); + + const msgs = [ + { + MessageId: '1', + ReceiptHandle: 'a', + Body: JSON.stringify({ Subject: 'one', Message: '1' }), + Attributes: { + SentTimestamp: 1518027533772, + ApproximateFirstReceiveTimestamp: 1518027533772, + ApproximateReceiveCount: 1 } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - assert.equal(context.sns.publish.length, 1, 'one notification sent', 'subject was shortened'); - assert.equal(context.sns.publish[0].Subject, stackName + ' failed task'); - assert.end(); - }); - }); -}); - -util.mock('[messages] complete - stack name is way too long', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-test-'; - var messages = watchbot.messages(queueUrl, topic, stackName, true); - var context = this; - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } + } ]; - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'failed', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - assert.equal(context.sns.publish.length, 1, 'one notification sent'); - assert.equal(context.sns.publish[0].Subject, 'Watchbot task failure: 1', 'subject was shortened'); - assert.end(); - }); + const receive = AWS.stub('SQS', 'receiveMessage', function() { + this.request.promise.returns(Promise.resolve({ Messages: msgs })); }); -}); - -util.mock('[messages] complete - notification contains log snippet', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var context = this; - var logGroupArn = 'arn:aws:logs:eu-west-1:123456789012:log-group:some-log-group:*'; - var logs = 'oh snap it broke!\n'; - - var messages = watchbot.messages(queueUrl, topic, stackName, true, logGroupArn); - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } - ]; - - // mock the command to read logs underlaying watchbot.fetch - sinon.stub(cwlogs, 'readable', function(options) { - assert.equal(options.group, 'some-log-group', 'created cwlogs client with expected log group'); - assert.equal(options.region, 'eu-west-1', 'created cwlogs client with expected region'); - - var readable = new stream.Readable(); - readable._read = function() { - readable.push(logs); - readable.push(null); - }; - - return readable; + const messages = Messages.create({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' }); - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'failed', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - assert.equal(context.sns.publish.length, 1, 'one notification sent'); - - var notification = context.sns.publish[0].Message; - var expected = new RegExp('Recent logs:\n' + logs.trim()); - assert.ok(expected.test(notification), 'log snippet included in notification'); - cwlogs.readable.restore(); - assert.end(); - }); - }); + let data; + try { + data = await messages.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.equal(receive.callCount, 1, 'resolves after receiving a message'); + assert.ok( + receive.calledWith({ + AttributeNames: [ + 'SentTimestamp', + 'ApproximateFirstReceiveTimestamp', + 'ApproximateReceiveCount' + ], + WaitTimeSeconds: 20, + MaxNumberOfMessages: 1 + }), + 'called SQS.receiveMessage with expected parameters' + ); + + assert.equal(data.length, 1, 'one message returned'); + assert.ok(data[0] instanceof Message, 'returned as a Message object'); + assert.ok( + Message.create.calledWith(msgs[0], { + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' + }), + 'created Message object correctly' + ); + + message.teardown(); + AWS.SQS.restore(); + assert.end(); }); -util.mock('[messages] complete - failure to read CloudWatch logs', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var context = this; - var logGroupArn = 'arn:aws:logs:eu-west-1:123456789012:log-group:some-log-group:*'; - - var messages = watchbot.messages(queueUrl, topic, stackName, true, logGroupArn); - - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } +test('[messages] waitFor gets multiple messages', async (assert) => { + const message = stubber(Message).setup(); + + const msgs = [ + { + MessageId: '1', + ReceiptHandle: 'a', + Body: JSON.stringify({ Subject: 'one', Message: '1' }), + Attributes: { + SentTimestamp: 1518027533772, + ApproximateFirstReceiveTimestamp: 1518027533772, + ApproximateReceiveCount: 1 + } + }, + { + MessageId: '2', + ReceiptHandle: 'b', + Body: JSON.stringify({ Subject: 'two', Message: '2' }), + Attributes: { + SentTimestamp: 1518027533772, + ApproximateFirstReceiveTimestamp: 1518027533772, + ApproximateReceiveCount: 1 + } + } ]; - // mock the command to read logs underlaying watchbot.fetch - sinon.stub(cwlogs, 'readable', function() { - var readable = new stream.Readable(); - readable._read = function() { - readable.emit('error', new Error('oh snap!')); - }; - - return readable; + const receive = AWS.stub('SQS', 'receiveMessage', function() { + this.request.promise.returns(Promise.resolve({ Messages: msgs })); }); - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'failed', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - assert.equal(err.message, 'oh snap!', 'cwlogs error passed through to callback'); - cwlogs.readable.restore(); - assert.end(); - }); + const messages = Messages.create({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' }); -}); -util.mock('[messages] complete - no notification', function(assert) { - var queueUrl = 'https://fake.us-east-1/sqs/url'; - var topic = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var stackName = 'test'; - var context = this; - var logGroupArn = 'arn:aws:logs:eu-west-1:123456789012:log-group:some-log-group:*'; - var logs = 'oh snap it broke!\n'; + let data; + try { + data = await messages.waitFor(20); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.equal(receive.callCount, 1, 'resolves after receiving a message'); + assert.ok( + receive.calledWith({ + AttributeNames: [ + 'SentTimestamp', + 'ApproximateFirstReceiveTimestamp', + 'ApproximateReceiveCount' + ], + WaitTimeSeconds: 20, + MaxNumberOfMessages: 10 + }), + 'called SQS.receiveMessage with expected parameters' + ); + + assert.equal(data.length, 2, 'two messages returned'); + assert.ok( + data.every((m) => m instanceof Message), + 'returned as a Message objects' + ); + assert.ok( + Message.create.calledWith(msgs[0], { + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' + }), + 'created first Message object correctly' + ); + assert.ok( + Message.create.calledWith(msgs[1], { + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' + }), + 'created second Message object correctly' + ); + + message.teardown(); + AWS.SQS.restore(); + assert.end(); +}); - var messages = watchbot.messages(queueUrl, topic, stackName, false, logGroupArn); +test('[messages] waitFor handles SQS errors', async (assert) => { + const logger = stubber(Logger).setup(); + const err = new Error('foo'); + AWS.stub('SQS', 'receiveMessage', function() { + this.request.promise.returns(Promise.reject(err)); + }); - context.sqs.messages = [ - { MessageId: '1', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 1, ApproximateFirstReceiveTimestamp: 20 } } - ]; + const messages = Messages.create({ + queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/fake' + }); - // mock the command to read logs underlaying watchbot.fetch - sinon.stub(cwlogs, 'readable', function(options) { - assert.equal(options.group, 'some-log-group', 'created cwlogs client with expected log group'); - assert.equal(options.region, 'eu-west-1', 'created cwlogs client with expected region'); + logger.queueError.callsFake(() => (messages.stop = true)); - var readable = new stream.Readable(); - readable._read = function() { - readable.push(logs); - readable.push(null); - }; + try { + await messages.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } - return readable; - }); + assert.ok(logger.queueError.calledWith(err), 'logged queue error'); - // first poll in order to get the messages in flight - messages.poll(4, function(err) { - if (err) return assert.end(err); - - // Then generate fake finishedTask objects for each message - var finishedTasks = [ - { - arns: { - cluster: 'cluster-arn', - instance: 'instance-arn', - task: 'task-arn' - }, - reason: 'failed', - env: { - MessageId: '1', - Subject: 'subject1', - Message: 'message1', - SentTimestamp: '10', - ApproximateFirstReceiveTimestamp: '20', - ApproximateReceiveCount: '1' - }, - outcome: 'return & notify' - } - ]; - - // complete each finishedTask - var queue = d3.queue(); - finishedTasks.forEach(function(finishedTask) { - queue.defer(messages.complete, finishedTask); - }); - queue.awaitAll(function(err) { - if (err) return assert.end(err); - - // make assertions - assert.equal(context.sns.publish.length, 0, 'no notifications sent'); - - cwlogs.readable.restore(); - assert.end(); - }); - }); + logger.teardown(); + AWS.SQS.restore(); + assert.end(); }); diff --git a/test/notifications.test.js b/test/notifications.test.js deleted file mode 100644 index 85bd7803..00000000 --- a/test/notifications.test.js +++ /dev/null @@ -1,34 +0,0 @@ -var util = require('./util'); -var watchbot = require('..'); - -util.mock('[notifications] send with callback', function(assert) { - var arn = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var notifications = watchbot.notifications(arn); - var context = this; - notifications.send('subject', 'message', function(err) { - if (err) return assert.end(err); - assert.deepEqual(context.sns.config, { - region: 'us-east-1', - params: { TopicArn: arn } - }, 'sns client properly configured'); - assert.deepEqual(context.sns.publish, [ - { Subject: 'subject', Message: 'message' } - ], 'expected message published'); - assert.end(); - }); -}); - -util.mock('[notifications] send without callback', function(assert) { - var arn = 'arn:aws:sns:us-east-1:123456789:fake-topic'; - var notifications = watchbot.notifications(arn); - var context = this; - notifications.send('subject', 'message'); - assert.deepEqual(context.sns.config, { - region: 'us-east-1', - params: { TopicArn: arn } - }, 'sns client properly configured'); - assert.deepEqual(context.sns.publish, [ - { Subject: 'subject', Message: 'message' } - ], 'expected message published'); - assert.end(); -}); diff --git a/test/stubber.js b/test/stubber.js new file mode 100644 index 00000000..b13d20ec --- /dev/null +++ b/test/stubber.js @@ -0,0 +1,20 @@ +'use strict'; + +const sinon = require('sinon'); +const Logger = require('../lib/logger'); + +module.exports = (cls) => { + const stub = sinon.createStubInstance(cls); + stub.logger = sinon.createStubInstance(Logger); + + stub.setup = () => { + sinon.stub(cls, 'create').returns(stub); + return stub; + }; + + stub.teardown = () => { + cls.create.restore(); + }; + + return stub; +}; diff --git a/test/tasks.test.js b/test/tasks.test.js deleted file mode 100644 index 0ca59731..00000000 --- a/test/tasks.test.js +++ /dev/null @@ -1,525 +0,0 @@ -var util = require('./util'); -var watchbot = require('..'); -var d3 = require('d3-queue'); - -util.mock('[tasks] run - below concurrency', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { key: 'value' }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.run(env, function(err) { - if (err) return assert.end(err); - assert.deepEqual(context.ecs.config, { - region: 'us-east-1', - params: { cluster: cluster } - }, 'ecs client initialized properly'); - util.collectionsEqual(assert, context.ecs.runTask, [ - { - startedBy: 'watchbot', - taskDefinition: taskDef, - overrides: { - containerOverrides: [ - { - name: containerName, - environment: [ - { name: 'key', value: 'value' } - ] - } - ] - } - } - ], 'expected runTask request'); - - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - startedBy truncation', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { key: 'value' }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl, '1234567890123456789012345678901234567890'); - tasks.run(env, function(err) { - if (err) return assert.end(err); - assert.deepEqual(context.ecs.config, { - region: 'us-east-1', - params: { cluster: cluster } - }, 'ecs client initialized properly'); - assert.equal(context.ecs.runTask[0].startedBy, '123456789012345678901234567890123456', 'startedBy truncated to 36 characters'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - above concurrency', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 0; - var env = [ - { name: 'error', value: 'true' } - ]; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.run(env, function(err) { - if (!err) return assert.end('should have failed'); - assert.equal(err.message, 'Above desired concurrency', 'expected error message'); - assert.equal(err.code, 'AboveConcurrency', 'expected error code'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - runTask request error', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { error: 'true' }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.run(env, function(err) { - if (!err) return assert.end('should have failed'); - assert.equal(err.message, 'Mock ECS error', 'ecs.runTask error passed to callback'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - runTask failure (out of memory)', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { resourceMemory: 'true' }; - var context = this; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.run(env, function(err) { - assert.equal(err.toString(), 'Error: RESOURCE:MEMORY'); - assert.equal(err.code, 'NotRun'); - assert.equal(context.ecs.resourceFail, 1, 'retried runTask request when cluster out of memory'); - util.collectionsEqual(assert, context.ecs.runTask, [ - { - startedBy: 'watchbot', - taskDefinition: taskDef, - overrides: { - containerOverrides: [ - { - name: containerName, - environment: [{ name: 'resourceMemory', value: 'true' }] - } - ] - } - } - ], 'expected runTask requestss'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - runTask failure (out of cpu)', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { resourceCpu: 'true' }; - var context = this; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - tasks.run(env, function(err) { - assert.equal(err.toString(), 'Error: RESOURCE:CPU'); - assert.equal(err.code, 'NotRun'); - assert.equal(context.ecs.resourceFail, 1, 'retried runTask request when cluster out of cpu'); - util.collectionsEqual(assert, context.ecs.runTask, [ - { - startedBy: 'watchbot', - taskDefinition: taskDef, - overrides: { - containerOverrides: [ - { - name: containerName, - environment: [{ name: 'resourceCpu', value: 'true' }] - } - ] - } - } - ], 'expected runTask requests'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] run - runTask failure (unrecognized reason)', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - var env = { failure: 'true' }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.run(env, function(err) { - if (!err) return assert.end('should have failed'); - assert.equal(err.code, 'NotRun', 'ecs.runTask failure passed to callback'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] poll - no tasks in progress', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.poll(function(err, taskStatus) { - if (err) return assert.end(err); - assert.equal(taskStatus.free, 10, 'reports 10 free tasks'); - assert.deepEqual(context.ecs.describeTasks.length, 0, 'no ecs.describeTasks requests'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] poll - one of each outcome', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - // pretend that we received some work messages and parsed these envs - var envs = [ - { exit: '0', MessageId: 'exit-0', ApproximateReceiveCount: 1 }, - { exit: '1', MessageId: 'exit-1', ApproximateReceiveCount: 1 }, - { exit: '2', MessageId: 'exit-2', ApproximateReceiveCount: 1 }, - { exit: '3', MessageId: 'exit-3', ApproximateReceiveCount: 1 }, - { exit: '4', MessageId: 'exit-4', ApproximateReceiveCount: 1 }, - { exit: '137', MessageId: 'exit-137', ApproximateReceiveCount: 1 }, - { exit: 'pending', MessageId: 'pending', ApproximateReceiveCount: 1 } - ]; - - // expected task ARNs are md5sums of runtask request properties, see util.mock - var expectedArns = [ - 'bb8e8e7405617c973ceac2a9076ae19d', - '762676041b682bcea049706185d13ac6', - 'fc36323938489380babaf87c56568d7f', - '107e1fc31e0ad9b0e0d2304411596e05', - 'e7336cab2c12be8aacef9718acb7cdb5', - '6d8e580ee61b2fcb24bb9317d212a404', - 'ea5ebf4778bd7a4b37ed63052ad252fe' - ]; - - // setup SQS messages in the task event SQS queue - context.sqs.eventMessages = envs.map((env, i) => { - var message = { - MessageId: i.toString() + '-event', - ReceiptHandle: i.toString() + '-event', - Attributes: { - SentTimestamp: 10, - ApproximateReceiveCount: 1 - } - }; - - message.Body = JSON.stringify({ - detail: { - clusterArn: 'cluster-arn', - containerInstanceArn: 'instance-arn', - taskArn: expectedArns[i], - lastStatus: 'STOPPED', - stoppedReason: env.exit, - overrides: { containerOverrides: [{ environment: Object.keys(env).map((key) => ({ name: key, value: env[key] })) }] }, - containers: [ - { - exitCode: Number(env.exit), - reason: env.exit === '1' ? - 'some container reason' : env.exit === '137' ? - 'CannotPullContainerError: API error (500): Get https://123456789012.dkr.ecr.us-east-1.amazonaws.com/v1/_ping: dial tcp: i/o timeout' : undefined - } - ], - createdAt: 1484155844718, - startedAt: 1484155849718, - stoppedAt: 1484155857691 - } - }); - - return message; - }).slice(0, 6); // drop one off the list because it hasn't finished yet - - // Add an additional message that should get ignored & returned to SQS - context.sqs.eventMessages.push({ - MessageId: 'brother-from-another-mother', - ReceiptHandle: 'additional-event', - Attributes: { - SentTimestamp: 10, - ApproximateReceiveCount: 1 - }, - Body: JSON.stringify({ - detail: { - clusterArn: 'cluster-arn', - containerInstanceArn: 'instance-arn', - taskArn: 'hibbity-haw', - lastStatus: 'STOPPED', - stoppedReason: 'cuz a feel like it', - overrides: { containerOverrides: [{ environment: [] }] }, - containers: [{ exitCode: 0 }], - createdAt: 1484155844718, - startedAt: 1484155849718, - stoppedAt: 1484155857691 - } - }) - }); - - // Starting the tasks client will start polling SQS. The TaskStateCache backlogs - // finishedTask items. - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // First we run the tasks based on the evns that were parsed from pretend work messages - var queue = d3.queue(); - - envs.forEach(function(env) { - queue.defer(tasks.run, env); - }); - - queue.awaitAll(function(err) { - if (err) return assert.end(err); - // gives TaskStateCache time to poll SQS, then ask for results - setTimeout(poll, 500); - }); - - function poll() { - tasks.poll(function(err, taskStatus) { - if (err) return assert.end(err); - - assert.deepEqual(context.ecs.config, { - region: 'us-east-1', - params: { cluster: cluster } - }, 'ecs client initialized properly'); - - var expectedTaskStatus = [ - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: 'bb8e8e7405617c973ceac2a9076ae19d' }, env: { ApproximateReceiveCount: 1, exit: '0', MessageId: 'exit-0' }, outcome: 'delete', reason: 'success', duration: 7973, pending: 5000 }, - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: '762676041b682bcea049706185d13ac6' }, env: { ApproximateReceiveCount: 1, exit: '1', MessageId: 'exit-1' }, outcome: 'return & notify', reason: 'some container reason', duration: 7973, pending: 5000 }, - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: 'fc36323938489380babaf87c56568d7f' }, env: { ApproximateReceiveCount: 1, exit: '2', MessageId: 'exit-2' }, outcome: 'return & notify', reason: '2', duration: 7973, pending: 5000 }, - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: '107e1fc31e0ad9b0e0d2304411596e05' }, env: { ApproximateReceiveCount: 1, exit: '3', MessageId: 'exit-3' }, outcome: 'delete & notify', reason: '3', duration: 7973, pending: 5000 }, - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: 'e7336cab2c12be8aacef9718acb7cdb5' }, env: { ApproximateReceiveCount: 1, exit: '4', MessageId: 'exit-4' }, outcome: 'immediate', reason: '4', duration: 7973, pending: 5000 }, - { arns: { cluster: 'cluster-arn', instance: 'instance-arn', task: '6d8e580ee61b2fcb24bb9317d212a404' }, env: { ApproximateReceiveCount: 1, exit: '137', MessageId: 'exit-137' }, outcome: 'immediate', reason: 'CannotPullContainerError: API error (500): Get https://123456789012.dkr.ecr.us-east-1.amazonaws.com/v1/_ping: dial tcp: i/o timeout', duration: 7973, pending: 5000 } - ]; - expectedTaskStatus.free = 9; - - util.collectionsEqual(assert, taskStatus, expectedTaskStatus, 'expected taskStatus reported'); - - assert.equal(taskStatus.free, 9, 'correctly reports free workers'); - - // Check that messages were removed from the event queue - util.collectionsEqual(assert, context.sqs.deleteMessage, [ - { ReceiptHandle: '0-event' }, - { ReceiptHandle: '1-event' }, - { ReceiptHandle: '2-event' }, - { ReceiptHandle: '3-event' }, - { ReceiptHandle: '4-event' }, - { ReceiptHandle: '5-event' } - ], 'removes SQS messages for completed task events'); - - // Check that another watcher's message was returned to the queue - util.collectionsEqual(assert, context.sqs.changeMessageVisibility, [ - { ReceiptHandle: 'additional-event', VisibilityTimeout: 0 } - ], 'returns SQS messages for other watcher\'s task events'); - - // Finally, poll for tasks again and confirm that the TaskStateCache was cleared - tasks.poll(function(err, shouldBeEmpty) { - if (err) return assert.end(err); - assert.equal(shouldBeEmpty.length, 0, 'TaskStateCache was cleared'); - assert.equal(taskStatus.free, 9, 'correctly reports free workers'); - tasks.stop(); - assert.end(); - }); - }); - } -}); - -util.mock('[tasks] poll - SQS error', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - context.sqs.eventMessages = [ - { MessageId: 'error', ReceiptHandle: '1', Body: JSON.stringify({ Subject: 'subject1', Message: 'message1' }), Attributes: { SentTimestamp: 10, ApproximateReceiveCount: 0 } } - ]; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - tasks.on('error', function(err) { - assert.equal(err.message, 'Mock SQS error', 'emits error events for SQS polling problems'); - tasks.stop(); - assert.end(); - }); -}); - -util.mock('[tasks] stopIfPending - message id not in flight', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - const env = { exit: '0', MessageId: 'exit-0', ApproximateReceiveCount: 1 }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // Run the task - tasks.run(env, function(err) { - assert.ifError(err, 'tasks.run success'); - - // Then try and stop some other random task, based on message id - tasks.stopIfPending({ MessageId: 'not-in-flight' }, function(err, stopped) { - assert.ifError(err, 'tasks.stopIfPending success'); - assert.notOk(stopped, 'reports that no tasks was stopped'); - tasks.stop(); - assert.end(); - }); - }); -}); - -util.mock('[tasks] stopIfPending - describeTasks failure', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - const env = { exit: '0', MessageId: 'pending-describe-fail', ApproximateReceiveCount: 1 }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // Run the task - tasks.run(env, function(err) { - assert.ifError(err, 'tasks.run success'); - - // Then try and stop the task, expect describeTasks to fail - tasks.stopIfPending({ MessageId: 'pending-describe-fail' }, function(err) { - assert.equal(err.message, 'pending-describe-fail', 'passed through error from describeTasks failure'); - assert.deepEqual(context.ecs.describeTasks, [ - { tasks: ['5452a86a162f3603a9b7b5f0d3396d40'] } - ], 'described the task launched to process this message id'); - tasks.stop(); - assert.end(); - }); - }); -}); - -util.mock('[tasks] stopIfPending - task is RUNNING', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - const env = { exit: '0', MessageId: 'running', ApproximateReceiveCount: 1 }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // Run the task - tasks.run(env, function(err) { - assert.ifError(err, 'tasks.run success'); - - // Then try and stop the task, which is RUNNING - tasks.stopIfPending({ MessageId: 'running' }, function(err, stopped) { - assert.ifError(err, 'tasks.stopIfPending success'); - assert.notOk(stopped, 'reports that no tasks were stopped'); - assert.deepEqual(context.ecs.describeTasks, [ - { tasks: ['5328c55acbea9eb7c23336b0718f3324'] } - ], 'described the task launched to process this message id'); - assert.deepEqual(context.ecs.stopTask, [], 'no calls to stopTask'); - tasks.stop(); - assert.end(); - }); - }); -}); - -util.mock('[tasks] stopIfPending - task is PENDING, stopTask failure', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - const env = { exit: '0', MessageId: 'stop-task-failure', ApproximateReceiveCount: 1 }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // Run the task - tasks.run(env, function(err) { - assert.ifError(err, 'tasks.run success'); - - // Then try and stop the task, which is PENDING, but stopTask errors - tasks.stopIfPending({ MessageId: 'stop-task-failure' }, function(err) { - assert.equal(err.message, 'stop-task-failure', 'passes through error from stopTask request'); - assert.deepEqual(context.ecs.describeTasks, [ - { tasks: ['9f5d92d144855210733d560d83759e11'] } - ], 'described the task launched to process this message id'); - assert.deepEqual(context.ecs.stopTask, [ - { task: '9f5d92d144855210733d560d83759e11' } - ], 'called stopTask on the correct task'); - tasks.stop(); - assert.end(); - }); - }); -}); - -util.mock('[tasks] stopIfPending - task is PENDING, stopTask success', function(assert) { - var context = this; - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var taskDef = 'arn:aws:ecs:us-east-1:123456789012:task-definition/fake:1'; - var queueUrl = 'https://fake.us-east-1/sqs/url-for-events'; - var containerName = 'container'; - var concurrency = 10; - - const env = { exit: '0', MessageId: 'pending', ApproximateReceiveCount: 1 }; - - var tasks = watchbot.tasks(cluster, taskDef, containerName, concurrency, queueUrl); - - // Run the task - tasks.run(env, function(err) { - assert.ifError(err, 'tasks.run success'); - - // Then try and stop the task, which is PENDING - tasks.stopIfPending({ MessageId: 'pending' }, function(err, stopped) { - assert.ifError(err, 'tasks.stopIfPending success'); - assert.ok(stopped, 'reports that the task was stopped'); - assert.deepEqual(context.ecs.describeTasks, [ - { tasks: ['e3278f8cf0a7f9b795d5f91d3739f72d'] } - ], 'described the task launched to process this message id'); - assert.deepEqual(context.ecs.stopTask, [ - { task: 'e3278f8cf0a7f9b795d5f91d3739f72d' } - ], 'called stopTask on the correct task'); - tasks.stop(); - assert.end(); - }); - }); -}); diff --git a/test/template.jest.js b/test/template.jest.js new file mode 100644 index 00000000..d4c1b375 --- /dev/null +++ b/test/template.jest.js @@ -0,0 +1,57 @@ +'use strict'; + +/* NOTE: this scipt is meant to be run via Jest, not Tape */ + +const assert = require('assert'); +const template = require('../lib/template'); +const cf = require('@mapbox/cloudfriend'); + +test('[template]', () => { + assert.throws( + () => template(), + /options.service is required/, + 'throws when missing required options' + ); + + const builtWithDefaults = cf.merge(template({ + service: 'example', + serviceVersion: '1', + command: 'echo hello world', + cluster: 'processing', + notificationEmail: 'hello@mapbox.pagerduty.com' + })); + + expect(builtWithDefaults).toMatchSnapshot('defaults'); + + const setsAllOptions = cf.merge(template({ + service: 'example', + serviceVersion: '1', + command: 'echo hello world', + cluster: 'processing', + permissions: [ + { + Effect: 'Allow', + Action: 's3:GetObject', + Resource: 'arn:aws:s3:::bucket/*' + } + ], + env: { + MyKey: 'MyValue' + }, + prefix: 'Soup', + family: 'abc-123', + maxSize: 90, + mounts: '/data,/ephemeral', + reservation: { + memory: 512, + softMemory: 128, + cpu: 4096 + }, + privileged: true, + messageTimeout: 300, + messageRetention: 1096, + notificationEmail: 'hello@mapbox.pagerduty.com' + })); + + expect(setsAllOptions).toMatchSnapshot('all-properties'); +}); diff --git a/test/template.test.js b/test/template.test.js deleted file mode 100644 index d9c1533c..00000000 --- a/test/template.test.js +++ /dev/null @@ -1,551 +0,0 @@ -var test = require('tape'); -var watchbot = require('..'); -var cf = require('@mapbox/cloudfriend'); -var fs = require('fs'); -var path = require('path'); -var os = require('os'); -var crypto = require('crypto'); - -var pkg = require(path.resolve(__dirname, '..', 'package.json')); -var version = pkg.version; - -test('[template] bare-bones, all defaults, no references', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var watch = watchbot.template({ - notificationEmail: 'devnull@mapbox.com', - cluster: cluster, - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256' - }); - - assert.notOk(watch.Resources.WatchbotUser, 'user'); - assert.notOk(watch.Resources.WatchbotUserKey, 'user key'); - assert.notOk(watch.Resources.WatchbotWebhookApi, 'api'); - assert.notOk(watch.Resources.WatchbotWebhookDeployment, 'deployment'); - assert.notOk(watch.Resources.WatchbotWebhookMethod, 'method'); - assert.notOk(watch.Resources.WatchbotWebhookResource, 'resource'); - assert.notOk(watch.Resources.WatchbotWebhookFunctionRole, 'function role'); - assert.notOk(watch.Resources.WatchbotWebhookFunction, 'function'); - assert.notOk(watch.Resources.WatchbotWebhookPermission, 'permission'); - assert.notOk(watch.Resources.WatchbotWebhookKey, 'key'); - assert.ok(watch.Resources.WatchbotNotificationTopic, 'notification topic'); - assert.ok(watch.Resources.WatchbotLogGroup, 'log group'); - assert.notOk(watch.Resources.WatchbotLogForwarding, 'log forwarding function'); - assert.ok(watch.Resources.WatchbotQueue, 'queue'); - assert.ok(watch.Resources.WatchbotDeadLetterQueue, 'dead letter queue'); - assert.ok(watch.Resources.WatchbotDeadLetterAlarm, 'dead letter alarm'); - assert.ok(watch.Resources.WatchbotTopic, 'topic'); - assert.ok(watch.Resources.WatchbotQueuePolicy, 'queue policy'); - assert.ok(watch.Resources.WatchbotQueueSizeAlarm, 'queue alarm'); - assert.ok(watch.Resources.WatchbotTaskEventQueue, 'task event queue'); - assert.ok(watch.Resources.WatchbotTaskEventRule, 'task event rule'); - assert.ok(watch.Resources.WatchbotTaskEventQueuePolicy, 'task event queue policy'); - assert.ok(watch.Resources.WatchbotFailedWorkerPlacementMetric, 'failed placement metric'); - assert.ok(watch.Resources.WatchbotFailedWorkerPlacementAlarm, 'failed placement alarm'); - assert.equal(watch.Resources.WatchbotFailedWorkerPlacementAlarm.Properties.EvaluationPeriods, 1, 'failed placement alarm period'); - assert.ok(watch.Resources.WatchbotWorkerDurationMetric, 'worker duration metric'); - assert.ok(watch.Resources.WatchbotWorkerPendingMetric, 'worker pending metric'); - assert.ok(watch.Resources.WatchbotMessageReceivesMetric, 'message receives metric'); - assert.ok(watch.Resources.WatchbotWatcherConcurrencyMetric, 'watcher concurrency metric'); - assert.ok(watch.Resources.WatchbotWorkerErrorsMetric, 'worker errors metric'); - assert.ok(watch.Resources.WatchbotWorkerErrorsAlarm, 'worker errors alarm'); - assert.equal(watch.Resources.WatchbotWorkerErrorsAlarm.Properties.Threshold, 10, 'worker errors alarm threshold'); - assert.ok(watch.Resources.WatchbotWatcher.Properties.ContainerDefinitions[0].Environment.slice(-3, -2), 'notify after retry'); - assert.equal(watch.Resources.WatchbotWatcher.Properties.Family, 'my-service', 'watcher family = service name'); - assert.notOk(watch.Resources.WatchbotWorker.Properties.ContainerDefinitions[0].Privileged, 'privileged is false'); - assert.equal(watch.Resources.WatchbotWorker.Properties.ContainerDefinitions[0].Memory, 64, 'sets default hard memory limit'); - assert.equal(watch.Resources.WatchbotWorker.Properties.Family, 'my-service', 'worker family = service name'); - assert.ok(watch.Resources.WatchbotWorkerRole, 'worker role'); - assert.equal(watch.Resources.WatchbotWorkerRole.Properties.Policies.length, 1, 'default worker permissions'); - assert.ok(watch.Resources.WatchbotWatcherRole, 'watcher role'); - assert.ok(watch.Resources.WatchbotWorker, 'worker'); - assert.notOk(watch.Resources.WatchbotWorker.Properties.Volumes, 'no mounts, no volumes'); - assert.notOk(watch.Resources.WatchbotWorker.Properties.ContainerDefinitions[0].MountPoints, 'no mounts, no mount points'); - assert.equal(watch.Resources.WatchbotWorker.Properties.ContainerDefinitions[0].Memory, 64, 'default memory reservation'); - assert.ok(watch.Resources.WatchbotWatcher, 'watcher'); - var image = watch.Resources.WatchbotWatcher.Properties.ContainerDefinitions[0].Image; - var tag = image['Fn::Join'][1].slice(-2).join(''); // phew - assert.ok((new RegExp('ecs-watchbot:v' + version + '$')).test(tag), 'defaults to correct watchbotVersion'); - assert.ok(watch.Resources.WatchbotService, 'service'); - assert.notOk(watch.Resources.WatchbotProgressTable, 'progress table'); - assert.notOk(watch.Resources.WatchbotProgressTablePermission, 'progress table permission'); - assert.deepEqual(watch.Resources.WatchbotWatcher.Properties.ContainerDefinitions[0].Environment.slice(-2, -1), [{ Name: 'LogLevel', Value: 'info' }], 'log level env var'); - assert.deepEqual(watch.Resources.WatchbotWatcher.Properties.ContainerDefinitions[0].Environment.slice(-1), [{ Name: 'AlarmOnEachFailure', Value: 'false' }], 'alarm on failure env var'); - - assert.deepEqual(/^\d+\.\d+\.\d+$/.test(watch.Metadata.EcsWatchbotVersion), true, 'ecs-watchbot version metadata'); - - assert.deepEqual(watch.ref.logGroup, cf.ref('WatchbotLogGroup'), 'logGroup ref'); - assert.deepEqual(watch.ref.topic, cf.ref('WatchbotTopic'), 'topic ref'); - assert.deepEqual(watch.ref.queueUrl, cf.ref('WatchbotQueue'), 'queueUrl ref'); - assert.deepEqual(watch.ref.queueArn, cf.getAtt('WatchbotQueue', 'Arn'), 'queueArn ref'); - assert.deepEqual(watch.ref.queueName, cf.getAtt('WatchbotQueue', 'QueueName'), 'queueName ref'); - assert.deepEqual(watch.ref.notificationTopic, cf.ref('WatchbotNotificationTopic'), 'notificationTopic ref'); - assert.notOk(watch.ref.accessKeyId, 'accessKeyId ref'); - assert.notOk(watch.ref.secretAccessKey, 'secretAccessKey ref'); - assert.notOk(watch.ref.webhookKey, 'webhookKey ref'); - assert.notOk(watch.ref.progressTable, 'progressTable ref'); - - assert.ok(watch.Outputs.ClusterArn, 'cluster arn output exists'); - assert.equal(watch.Outputs.ClusterArn.Value, cluster, 'cluster arn ref'); - - assert.end(); -}); - -test('[template] webhooks but no key, no references', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var watch = watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - notificationEmail: 'devnull@mapbox.com', - cluster: cluster, - watchbotVersion: 'v0.0.7', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256', - env: { SomeKey: 'SomeValue', AnotherKey: 'AnotherValue' }, - watchers: 2, - workers: 2, - mounts: '/var/tmp:/var/tmp,/mnt/data:/mnt/data,/mnt/tmp', - reservation: { - memory: 512, - cpu: 4096 - }, - messageTimeout: 300, - messageRetention: 3000, - alarmThreshold: 10, - alarmPeriods: 6, - failedPlacementAlarmPeriods: 5, - privileged: true - }); - - assert.ok(watch.Resources.testUser, 'user'); - assert.ok(watch.Resources.testUserKey, 'user key'); - assert.ok(watch.Resources.testWebhookApi, 'api'); - assert.ok(watch.Resources.testWebhookDeployment, 'deployment'); - assert.ok(watch.Resources.testWebhookMethod, 'method'); - assert.ok(watch.Resources.testWebhookResource, 'resource'); - assert.ok(watch.Resources.testWebhookFunctionRole, 'function role'); - assert.ok(watch.Resources.testWebhookFunction, 'function'); - assert.ok(watch.Resources.testWebhookPermission, 'permission'); - assert.notOk(watch.Resources.testWebhookKey, 'key'); - assert.ok(watch.Resources.testNotificationTopic, 'notification topic'); - assert.ok(watch.Resources.testLogGroup, 'log group'); - assert.notOk(watch.Resources.testLogForwarding, 'log forwarding function'); - assert.ok(watch.Resources.testQueue, 'queue'); - assert.ok(watch.Resources.testDeadLetterQueue, 'dead letter queue'); - assert.ok(watch.Resources.testDeadLetterAlarm, 'dead letter alarm'); - assert.ok(watch.Resources.testTopic, 'topic'); - assert.ok(watch.Resources.testQueuePolicy, 'queue policy'); - assert.ok(watch.Resources.testQueueSizeAlarm, 'queue alarm'); - assert.ok(watch.Resources.testTaskEventQueue, 'task event queue'); - assert.ok(watch.Resources.testTaskEventRule, 'task event rule'); - assert.ok(watch.Resources.testTaskEventQueuePolicy, 'task event queue policy'); - assert.ok(watch.Resources.testFailedWorkerPlacementMetric, 'failed placement metric'); - assert.ok(watch.Resources.testFailedWorkerPlacementAlarm, 'failed placement alarm'); - assert.equal(watch.Resources.testFailedWorkerPlacementAlarm.Properties.EvaluationPeriods, 5, 'failed placement alarm period'); - assert.ok(watch.Resources.testWorkerDurationMetric, 'worker duration metric'); - assert.ok(watch.Resources.testWorkerPendingMetric, 'worker pending metric'); - assert.ok(watch.Resources.testMessageReceivesMetric, 'message receives metric'); - assert.ok(watch.Resources.testWatcherConcurrencyMetric, 'watcher concurrency metric'); - assert.ok(watch.Resources.testWorkerErrorsMetric, 'worker errors metric'); - assert.ok(watch.Resources.testWorkerErrorsAlarm, 'worker errors alarm'); - assert.equal(watch.Resources.testWorkerErrorsAlarm.Properties.Threshold, 10, 'worker errors alarm threshold'); - assert.ok(watch.Resources.testWatcher.Properties.ContainerDefinitions[0].Environment.slice(-3, -2), 'notify after retry'); - assert.ok(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Privileged, 'privileged is true'); - assert.ok(watch.Resources.testWorkerRole, 'worker role'); - assert.equal(watch.Resources.testWorkerRole.Properties.Policies.length, 1, 'default worker permissions'); - assert.ok(watch.Resources.testWatcherRole, 'watcher role'); - assert.ok(watch.Resources.testWorker, 'worker'); - assert.equal(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Memory, 512, 'non-default memory reservation'); - assert.ok(watch.Resources.testWatcher, 'watcher'); - assert.ok(watch.Resources.testService, 'service'); - assert.notOk(watch.Resources.testProgressTable, 'progress table'); - assert.notOk(watch.Resources.testProgressTablePermission, 'progress table permission'); - assert.ok(watch.Resources.testWorker.Properties.ContainerDefinitions[0].MountPoints.every((pt) => { return pt.ContainerPath && pt.SourceVolume; }), 'mount point properties'); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[0], { Name: 'mnt-0', Host: { SourcePath: '/var/tmp' } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[1], { Name: 'mnt-1', Host: { SourcePath: '/mnt/data' } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[2], { Name: 'mnt-2', Host: {} }); - - assert.deepEqual(watch.ref.logGroup, cf.ref('testLogGroup'), 'logGroup ref'); - assert.deepEqual(watch.ref.topic, cf.ref('testTopic'), 'topic ref'); - assert.deepEqual(watch.ref.queueUrl, cf.ref('testQueue'), 'queueUrl ref'); - assert.deepEqual(watch.ref.queueArn, cf.getAtt('testQueue', 'Arn'), 'queueArn ref'); - assert.deepEqual(watch.ref.queueName, cf.getAtt('testQueue', 'QueueName'), 'queueName ref'); - assert.deepEqual(watch.ref.notificationTopic, cf.ref('testNotificationTopic'), 'notificationTopic ref'); - assert.deepEqual(watch.ref.accessKeyId, cf.ref('testUserKey'), 'accessKeyId ref'); - assert.deepEqual(watch.ref.secretAccessKey, cf.getAtt('testUserKey', 'SecretAccessKey'), 'secretAccessKey ref'); - assert.notOk(watch.ref.webhookKey, 'webhookKey ref'); - assert.notOk(watch.ref.progressTable, 'progressTable ref'); - - assert.ok(watch.Outputs.ClusterArn, 'cluster arn output exists'); - assert.equal(watch.Outputs.ClusterArn.Value, cluster, 'cluster arn ref'); - - assert.end(); -}); - -test('[template] include all resources, no references', function(assert) { - var cluster = 'arn:aws:ecs:us-east-1:123456789012:cluster/fake'; - var watch = watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - webhookKey: true, - reduce: true, - notificationEmail: 'devnull@mapbox.com', - cluster: cluster, - watchbotVersion: 'v0.0.7', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256', - command: ['bash'], - env: { SomeKey: 'SomeValue', AnotherKey: 'AnotherValue' }, - permissions: [{ Effect: 'Allow', Actions: '*', Resources: '*' }], - watchers: 2, - workers: 2, - mounts: { - container: ['/var/tmp', '/mnt/data', '/mnt/tmp'], - host: ['/var/tmp', '/mnt/data', ''] - }, - logAggregationFunction: 'arn:aws:lambda:us-east-1:123456789000:function:log-fake-test', - reservation: { - memory: 512, - softMemory: 128, - cpu: 4096 - }, - messageTimeout: 300, - messageRetention: 3000, - errorThreshold: 11, - alarmThreshold: 10, - alarmPeriods: 6, - failedPlacementAlarmPeriods: 5, - debugLogs: true, - alarmOnEachFailure: true, - family: 'hibbity' - }); - - assert.ok(watch.Resources.testUser, 'user'); - assert.ok(watch.Resources.testUserKey, 'user key'); - assert.ok(watch.Resources.testWebhookApi, 'api'); - assert.ok(watch.Resources.testWebhookDeployment, 'deployment'); - assert.ok(watch.Resources.testWebhookMethod, 'method'); - assert.ok(watch.Resources.testWebhookResource, 'resource'); - assert.ok(watch.Resources.testWebhookFunctionRole, 'function role'); - assert.ok(watch.Resources.testWebhookFunction, 'function'); - assert.ok(watch.Resources.testWebhookPermission, 'permission'); - assert.ok(watch.Resources.testWebhookKey, 'key'); - assert.ok(watch.Resources.testNotificationTopic, 'notification topic'); - assert.ok(watch.Resources.testLogGroup, 'log group'); - assert.ok(watch.Resources.testLogForwarding, 'log forwarding function'); - assert.ok(watch.Resources.testQueue, 'queue'); - assert.ok(watch.Resources.testDeadLetterQueue, 'dead letter queue'); - assert.ok(watch.Resources.testDeadLetterAlarm, 'dead letter alarm'); - assert.ok(watch.Resources.testTopic, 'topic'); - assert.ok(watch.Resources.testQueuePolicy, 'queue policy'); - assert.ok(watch.Resources.testQueueSizeAlarm, 'queue alarm'); - assert.ok(watch.Resources.testTaskEventQueue, 'task event queue'); - assert.ok(watch.Resources.testTaskEventRule, 'task event rule'); - assert.ok(watch.Resources.testTaskEventQueuePolicy, 'task event queue policy'); - assert.ok(watch.Resources.testFailedWorkerPlacementMetric, 'failed placement metric'); - assert.ok(watch.Resources.testFailedWorkerPlacementAlarm, 'failed placement alarm'); - assert.ok(watch.Resources.testWorkerDurationMetric, 'worker duration metric'); - assert.ok(watch.Resources.testWorkerPendingMetric, 'worker pending metric'); - assert.ok(watch.Resources.testMessageReceivesMetric, 'message receives metric'); - assert.ok(watch.Resources.testWatcherConcurrencyMetric, 'watcher concurrency metric'); - assert.ok(watch.Resources.testWorkerErrorsMetric, 'worker errors metric'); - assert.ok(watch.Resources.testWorkerErrorsAlarm, 'worker errors alarm'); - assert.equal(watch.Resources.testWorkerErrorsAlarm.Properties.Threshold, 11, 'worker errors alarm threshold'); - assert.ok(watch.Resources.testWorkerRole, 'worker role'); - assert.equal(watch.Resources.testWorkerRole.Properties.Policies.length, 2, 'default and user-defined worker permissions'); - assert.deepEqual(watch.Resources.testWorkerRole.Properties.Policies[1].PolicyDocument.Statement, [{ Effect: 'Allow', Actions: '*', Resources: '*' }], 'user-defined permissions'); - assert.ok(watch.Resources.testWatcherRole, 'watcher role'); - assert.ok(watch.Resources.testWorker, 'worker'); - assert.ok(watch.Resources.testWatcher, 'watcher'); - assert.equal(watch.Resources.testWorker.Properties.Family, 'hibbity', 'worker family'); - assert.equal(watch.Resources.testWatcher.Properties.Family, 'hibbity', 'watcher family'); - assert.deepEqual(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Command, ['bash'], 'sets worker command'); - assert.equal(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Cpu, 4096, 'reserves cpu'); - assert.equal(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Memory, 512, 'sets hard memory limit'); - assert.equal(watch.Resources.testWorker.Properties.ContainerDefinitions[0].MemoryReservation, 128, 'sets soft memory limit'); - assert.ok(watch.Resources.testService, 'service'); - assert.ok(watch.Resources.testProgressTable, 'progress table'); - assert.equal(watch.Resources.testProgressTable.Properties.ProvisionedThroughput.ReadCapacityUnits, 30); - assert.equal(watch.Resources.testProgressTable.Properties.ProvisionedThroughput.WriteCapacityUnits, 30); - assert.ok(watch.Resources.testProgressTablePermission, 'progress table permission'); - assert.deepEqual(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Environment.slice(-1), [{ Name: 'ProgressTable', Value: cf.join(['arn:aws:dynamodb:', cf.region, ':', cf.accountId, ':table/', cf.ref('testProgressTable')]) }], 'progress table env var'); - assert.deepEqual(watch.Resources.testWatcher.Properties.ContainerDefinitions[0].Environment.slice(-2, -1), [{ Name: 'LogLevel', Value: 'debug' }], 'log level env var'); - assert.deepEqual(watch.Resources.testWatcher.Properties.ContainerDefinitions[0].Environment.slice(-1), [{ Name: 'AlarmOnEachFailure', Value: 'true' }], 'alarm on failure env var'); - assert.ok(watch.Resources.testWorker.Properties.ContainerDefinitions[0].MountPoints.every((pt) => { return pt.ContainerPath && pt.SourceVolume; }), 'mount point properties'); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[0], { Name: 'mnt-0', Host: { SourcePath: '/var/tmp' } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[1], { Name: 'mnt-1', Host: { SourcePath: '/mnt/data' } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[2], { Name: 'mnt-2', Host: {} }); - - assert.deepEqual(watch.ref.logGroup, cf.ref('testLogGroup'), 'logGroup ref'); - assert.deepEqual(watch.ref.topic, cf.ref('testTopic'), 'topic ref'); - assert.deepEqual(watch.ref.queueUrl, cf.ref('testQueue'), 'queueUrl ref'); - assert.deepEqual(watch.ref.queueArn, cf.getAtt('testQueue', 'Arn'), 'queueArn ref'); - assert.deepEqual(watch.ref.queueName, cf.getAtt('testQueue', 'QueueName'), 'queueName ref'); - assert.deepEqual(watch.ref.notificationTopic, cf.ref('testNotificationTopic'), 'notificationTopic ref'); - assert.deepEqual(watch.ref.accessKeyId, cf.ref('testUserKey'), 'accessKeyId ref'); - assert.deepEqual(watch.ref.secretAccessKey, cf.getAtt('testUserKey', 'SecretAccessKey'), 'secretAccessKey ref'); - assert.deepEqual(watch.ref.webhookKey, cf.ref('testWebhookKey'), 'webhookKey ref'); - assert.deepEqual(watch.ref.progressTable, cf.ref('testProgressTable'), 'progressTable ref'); - - assert.ok(watch.Outputs.ClusterArn, 'cluster arn output exists'); - assert.equal(watch.Outputs.ClusterArn.Value, cluster, 'cluster arn ref'); - - assert.end(); -}); - -test('[template] include all resources, all references', function(assert) { - var stackName = 'some-stack-name'; - var watch = watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - webhookKey: true, - reduce: true, - readCapacityUnits: 20, - writeCapacityUnits: 20, - notificationEmail: cf.ref('AlarmEmail'), - cluster: cf.ref('Cluster'), - watchbotVersion: cf.ref('WatchbotVersion'), - service: 'my-service', - serviceVersion: cf.ref('GitSha'), - env: { SomeKey: cf.ref('SomeResource'), AnotherKey: cf.ref('SomeParameter') }, - permissions: [{ Effect: 'Allow', Actions: '*', Resources: '*' }], - watchers: cf.ref('NumWatchers'), - workers: cf.ref('NumWorkers'), - mounts: { - container: [cf.sub('/var/tmp/${stack}', { stack: cf.ref(stackName) }), '/mnt/data', '/mnt/tmp'], - host: [cf.sub('/var/tmp/${stack}', { stack: cf.ref(stackName) }), '/mnt/data', ''] - }, - logAggregationFunction: cf.ref('LogAggregationFunction'), - reservation: { - memory: cf.ref('MemoryReservation'), - cpu: cf.ref('CpuReservation') - }, - messageTimeout: cf.ref('MessageTimeout'), - messageRetention: cf.ref('MessageRetention'), - alarmThreshold: cf.ref('AlarmThreshold'), - errorThreshold: cf.ref('Errors'), - alarmPeriods: cf.ref('AlarmPeriods'), - failedPlacementAlarmPeriods: cf.ref('failedPlacementAlarmPeriods'), - alarmOnEachFailure: cf.ref('AlarmOnFailures') - }); - - assert.ok(watch.Resources.testUser, 'user'); - assert.ok(watch.Resources.testUserKey, 'user key'); - assert.ok(watch.Resources.testWebhookApi, 'api'); - assert.ok(watch.Resources.testWebhookDeployment, 'deployment'); - assert.ok(watch.Resources.testWebhookMethod, 'method'); - assert.ok(watch.Resources.testWebhookResource, 'resource'); - assert.ok(watch.Resources.testWebhookFunctionRole, 'function role'); - assert.ok(watch.Resources.testWebhookFunction, 'function'); - assert.ok(watch.Resources.testWebhookPermission, 'permission'); - assert.ok(watch.Resources.testWebhookKey, 'key'); - assert.ok(watch.Resources.testNotificationTopic, 'notification topic'); - assert.ok(watch.Resources.testLogGroup, 'log group'); - assert.ok(watch.Resources.testLogForwarding, 'log forwarding function'); - assert.equal(watch.Resources.testLogForwarding.Condition, 'testUseLogForwarding', 'log forwarding function is conditional'); - assert.deepEqual(watch.Conditions.testUseLogForwarding, cf.notEquals(cf.ref('LogAggregationFunction'), ''), 'log forwarding condition provided'); - assert.ok(watch.Resources.testQueue, 'queue'); - assert.ok(watch.Resources.testDeadLetterQueue, 'dead letter queue'); - assert.ok(watch.Resources.testDeadLetterAlarm, 'dead letter alarm'); - assert.ok(watch.Resources.testTopic, 'topic'); - assert.ok(watch.Resources.testQueuePolicy, 'queue policy'); - assert.ok(watch.Resources.testQueueSizeAlarm, 'queue alarm'); - assert.ok(watch.Resources.testTaskEventQueue, 'task event queue'); - assert.ok(watch.Resources.testTaskEventRule, 'task event rule'); - assert.ok(watch.Resources.testTaskEventQueuePolicy, 'task event queue policy'); - assert.ok(watch.Resources.testFailedWorkerPlacementMetric, 'failed placement metric'); - assert.ok(watch.Resources.testFailedWorkerPlacementAlarm, 'failed placement alarm'); - assert.ok(watch.Resources.testWorkerDurationMetric, 'worker duration metric'); - assert.ok(watch.Resources.testWorkerPendingMetric, 'worker pending metric'); - assert.ok(watch.Resources.testMessageReceivesMetric, 'message receives metric'); - assert.ok(watch.Resources.testWatcherConcurrencyMetric, 'watcher concurrency metric'); - assert.ok(watch.Resources.testWorkerErrorsMetric, 'worker errors metric'); - assert.ok(watch.Resources.testWorkerErrorsAlarm, 'worker errors alarm'); - assert.deepEqual(watch.Resources.testWorkerErrorsAlarm.Properties.Threshold, cf.ref('Errors'), 'worker errors alarm threshold'); - assert.ok(watch.Resources.testWorkerRole, 'worker role'); - assert.equal(watch.Resources.testWorkerRole.Properties.Policies.length, 2, 'default and user-defined worker permissions'); - assert.deepEqual(watch.Resources.testWorkerRole.Properties.Policies[1].PolicyDocument.Statement, [{ Effect: 'Allow', Actions: '*', Resources: '*' }], 'user-defined permissions'); - assert.ok(watch.Resources.testWatcherRole, 'watcher role'); - assert.ok(watch.Resources.testWorker, 'worker'); - assert.ok(watch.Resources.testWatcher, 'watcher'); - assert.ok(watch.Resources.testService, 'service'); - assert.ok(watch.Resources.testProgressTable, 'progress table'); - assert.equal(watch.Resources.testProgressTable.Properties.ProvisionedThroughput.ReadCapacityUnits, 20, 'progressTable read capacity'); - assert.equal(watch.Resources.testProgressTable.Properties.ProvisionedThroughput.WriteCapacityUnits, 20, 'progressTable write capacity'); - assert.ok(watch.Resources.testProgressTablePermission, 'progress table permission'); - assert.deepEqual(watch.Resources.testWorker.Properties.ContainerDefinitions[0].Environment.slice(-1), [{ Name: 'ProgressTable', Value: cf.join(['arn:aws:dynamodb:', cf.region, ':', cf.accountId, ':table/', cf.ref('testProgressTable')]) }], 'progress table env var'); - assert.deepEqual(watch.Resources.testWatcher.Properties.ContainerDefinitions[0].Environment[3], { Name: 'Concurrency', Value: cf.ref('NumWorkers') }, 'sets Concurrency'); - assert.deepEqual(watch.Resources.testWatcher.Properties.ContainerDefinitions[0].Environment.slice(-1), [{ Name: 'AlarmOnEachFailure', Value: cf.ref('AlarmOnFailures') }], 'alarm on failure env var'); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[0], { Name: 'mnt-0', Host: { SourcePath: { 'Fn::Sub': ['/var/tmp/${stack}', { stack: { Ref: 'some-stack-name' } }] } } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[1], { Name: 'mnt-1', Host: { SourcePath: '/mnt/data' } }); - assert.deepEqual(watch.Resources.testWorker.Properties.Volumes[2], { Name: 'mnt-2', Host: {} }); - assert.deepEqual(watch.ref.logGroup, cf.ref('testLogGroup'), 'logGroup ref'); - assert.deepEqual(watch.ref.topic, cf.ref('testTopic'), 'topic ref'); - assert.deepEqual(watch.ref.queueUrl, cf.ref('testQueue'), 'queueUrl ref'); - assert.deepEqual(watch.ref.queueArn, cf.getAtt('testQueue', 'Arn'), 'queueArn ref'); - assert.deepEqual(watch.ref.queueName, cf.getAtt('testQueue', 'QueueName'), 'queueName ref'); - assert.deepEqual(watch.ref.notificationTopic, cf.ref('testNotificationTopic'), 'notificationTopic ref'); - assert.deepEqual(watch.ref.accessKeyId, cf.ref('testUserKey'), 'accessKeyId ref'); - assert.deepEqual(watch.ref.secretAccessKey, cf.getAtt('testUserKey', 'SecretAccessKey'), 'secretAccessKey ref'); - assert.deepEqual(watch.ref.webhookKey, cf.ref('testWebhookKey'), 'webhookKey ref'); - assert.deepEqual(watch.ref.progressTable, cf.ref('testProgressTable'), 'progressTable ref'); - - assert.ok(watch.Outputs.ClusterArn, 'cluster arn output exists'); - assert.deepEqual(watch.Outputs.ClusterArn.Value, cf.ref('Cluster'), 'cluster arn ref'); - - assert.end(); -}); - -test('[template] resources are valid', function(assert) { - var watch = watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - webhookKey: true, - reduce: true, - notificationEmail: 'devnull@mapbox.com', - cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - watchbotVersion: 'v0.0.7', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256', - command: ['bash'], - env: { SomeKey: 'SomeValue', AnotherKey: 'AnotherValue' }, - permissions: [{ Effect: 'Allow', Actions: '*', Resources: '*' }], - watchers: 2, - workers: 2, - mounts: '/var/tmp:/var/tmp,/mnt/data:/mnt/data,/mnt/tmp', - logAggregationFunction: 'arn:aws:lambda:us-east-1:123456789000:function:log-fake-test', - reservation: { - memory: 512, - cpu: 4096 - }, - messageTimeout: 300, - messageRetention: 3000, - alarmThreshold: 10, - alarmPeriods: 6, - failedPlacementAlarmPeriods: 5 - }); - - var tmp = path.join(os.tmpdir(), crypto.randomBytes(8).toString('hex') + '.json'); - fs.writeFileSync(tmp, JSON.stringify({ Resources: watch.Resources })); - - cf.validate(tmp).then(function() { - assert.pass('valid'); - assert.end(); - }).catch(function(err) { - assert.ifError(err, 'invalid'); - assert.end(); - }); -}); - -test('[template] notificationTopic vs notificationEmail', function(assert) { - assert.throws(function() { - watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - webhookKey: true, - reduce: true, - notificationEmail: 'devnull@mapbox.com', - notificationTopic: 'arn:aws:sns:us-east-1:123456789000:fake-topic', - cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - watchbotVersion: 'v0.0.7', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256', - command: ['bash'], - env: { SomeKey: 'SomeValue', AnotherKey: 'AnotherValue' }, - permissions: [{ Effect: 'Allow', Actions: '*', Resources: '*' }], - watchers: 2, - workers: 2, - mounts: '/var/tmp:/var/tmp,/mnt/data:/mnt/data,/mnt/tmp', - logAggregationFunction: 'arn:aws:lambda:us-east-1:123456789000:function:log-fake-test', - reservation: { - memory: 512, - cpu: 4096 - }, - messageTimeout: 300, - messageRetention: 3000, - alarmThreshold: 10, - alarmPeriods: 6, - failedPlacementAlarmPeriods: 5 - }); - }, /Cannot provide both notificationTopic and notificationEmail./); - - var watch = watchbot.template({ - prefix: 'test', - user: true, - webhook: true, - webhookKey: true, - reduce: true, - notificationTopic: 'arn:aws:sns:us-east-1:123456789000:fake-topic', - cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - watchbotVersion: 'v0.0.7', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256', - command: ['bash'], - env: { SomeKey: 'SomeValue', AnotherKey: 'AnotherValue' }, - permissions: [{ Effect: 'Allow', Actions: '*', Resources: '*' }], - watchers: 2, - workers: 2, - mounts: '/var/tmp:/var/tmp,/mnt/data:/mnt/data,/mnt/tmp', - logAggregationFunction: 'arn:aws:lambda:us-east-1:123456789000:function:log-fake-test', - reservation: { - memory: 512, - cpu: 4096 - }, - messageTimeout: 300, - messageRetention: 3000, - alarmThreshold: 10, - alarmPeriods: 6, - failedPlacementAlarmPeriods: 5 - }); - - var tmp = path.join(os.tmpdir(), crypto.randomBytes(8).toString('hex') + '.json'); - fs.writeFileSync(tmp, JSON.stringify({ Resources: watch.Resources })); - - cf.validate(tmp).then(function() { - assert.pass('valid'); - assert.end(); - }).catch(function(err) { - assert.ifError(err, 'invalid'); - assert.end(); - }); -}); - -test('[template] multi-watchbot merge', function(assert) { - var one = watchbot.template({ - prefix: 'one', - notificationEmail: 'devnull@mapbox.com', - cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256' - }); - - var two = watchbot.template({ - prefix: 'two', - notificationEmail: 'devnull@mapbox.com', - cluster: 'arn:aws:ecs:us-east-1:123456789012:cluster/fake', - service: 'my-service', - serviceVersion: '7a55878c2adbfcfed0ec2c2d5b29fe6c87c19256' - }); - - var result; - - assert.doesNotThrow(function() { - result = watchbot.merge(one, two); - }, 'can build multiple watchbots in a single template'); - - var rules = Object.keys(result.Resources).filter((name) => { - return result.Resources[name].Type === 'AWS::Events::Rule'; - }).map((name) => result.Resources[name]); - - assert.ok( - JSON.stringify(rules[0].Properties.Name) !== JSON.stringify(rules[1].Properties.Name), - 'cloudwatch event rules have different names' - ); - - assert.end(); -}); diff --git a/test/template.validation.js b/test/template.validation.js new file mode 100644 index 00000000..e097054b --- /dev/null +++ b/test/template.validation.js @@ -0,0 +1,75 @@ +'use strict'; + +const os = require('os'); +const path = require('path'); +const fs = require('fs'); +const crypto = require('crypto'); +const test = require('tape'); +const cf = require('@mapbox/cloudfriend'); +const template = require('../lib/template'); + +test('[template validation] defaults', async (assert) => { + const builtWithDefaults = cf.merge(template({ + service: 'example', + serviceVersion: '1', + command: 'echo hello world', + cluster: 'processing', + notificationEmail: 'hello@mapbox.pagerduty.com' + })); + + const tmp = path.join(os.tmpdir(), crypto.randomBytes(8).toString('hex')); + fs.writeFileSync(tmp, JSON.stringify(builtWithDefaults)); + + try { + await cf.validate(tmp); + assert.pass('template is valid'); + } catch (err) { + assert.ifError(err, 'template is not valid'); + } + + assert.end(); +}); + +test('[template validation] options set', async (assert) => { + const setsAllOptions = cf.merge(template({ + service: 'example', + serviceVersion: '1', + command: 'echo hello world', + cluster: 'processing', + permissions: [ + { + Effect: 'Allow', + Action: 's3:GetObject', + Resource: 'arn:aws:s3:::bucket/*' + } + ], + env: { + MyKey: 'MyValue' + }, + prefix: 'Soup', + family: 'abc-123', + maxSize: 90, + mounts: '/mnt/data:/data,/ephemeral', + reservation: { + memory: 512, + softMemory: 128, + cpu: 4096 + }, + privileged: true, + messageTimeout: 300, + messageRetention: 1096, + notificationEmail: 'hello@mapbox.pagerduty.com' + })); + + const tmp = path.join(os.tmpdir(), crypto.randomBytes(8).toString('hex')); + fs.writeFileSync(tmp, JSON.stringify(setsAllOptions)); + + try { + await cf.validate(tmp); + assert.pass('template is valid'); + } catch (err) { + assert.ifError(err, 'template is not valid'); + } + + assert.end(); +}); diff --git a/test/util.js b/test/util.js deleted file mode 100644 index bbf4a52d..00000000 --- a/test/util.js +++ /dev/null @@ -1,225 +0,0 @@ -/* eslint-disable no-console */ - -var AWS = require('aws-sdk'); -var tape = require('tape'); -var crypto = require('crypto'); -var util = require('util'); -var messageToEnv = require('../lib/messages').messageToEnv; -var envToRunTaskParams = require('../lib/tasks').envToRunTaskParams; - -module.exports.mock = function(name, callback) { - tape(name, function(assert) { - var sqs = AWS.SQS; - var sns = AWS.SNS; - var ecs = AWS.ECS; - var log = console.log.bind(console); - - var context = { - sqs: { - receiveMessage: [], - receiveEventMessage: [], - deleteMessage: [], - changeMessageVisibility: [] - }, - sns: { - publish: [] - }, - ecs: { - runTask: [], - stopTask: [], - describeTasks: [], - describeTaskDefinition: [], - describeContainerInstances: [], - listContainerInstances: [] - }, - logs: [] - }; - - AWS.SQS = function(config) { - context.sqs.config = config; - this.isEventQueue = /event/.test(config.params.QueueUrl); - }; - AWS.SQS.prototype.receiveMessage = function(params, callback) { - var messagesToReceive; - if (this.isEventQueue) { - messagesToReceive = context.sqs.eventMessages || []; - context.sqs.receiveEventMessage.push(params); - } else { - messagesToReceive = context.sqs.messages || []; - context.sqs.receiveMessage.push(params); - } - - if (!messagesToReceive.length) - return setImmediate(callback, null, { Messages: [] }); - var max = params.MaxNumberOfMessages || 1; - - var error = false; - var msgs = messagesToReceive.splice(0, max).map(function(msg) { - if (msg.MessageId === 'error') error = true; - msg.Attributes.ApproximateReceiveCount++; - if (msg.Attributes.ApproximateReceiveCount === 1) - msg.Attributes.ApproximateFirstReceiveTimestamp = 20; - return msg; - }); - - if (this.isEventQueue) - context.sqs.eventMessages = messagesToReceive; - else - context.sqs.messages = messagesToReceive; - - if (error) return setImmediate(callback, new Error('Mock SQS error')); - setImmediate(callback, null, { Messages: msgs }); - }; - AWS.SQS.prototype.deleteMessage = function(params, callback) { - context.sqs.deleteMessage.push(params); - if (params.ReceiptHandle === 'missing') - return callback(new Error('Message does not exist or is not available for visibility timeout change')); - if (params.ReceiptHandle === 'error') - return callback(new Error('Mock SQS error')); - callback(); - }; - AWS.SQS.prototype.changeMessageVisibility = function(params, callback) { - context.sqs.changeMessageVisibility.push(params); - if (params.ReceiptHandle === 'missing') - return callback(new Error('Message does not exist or is not available for visibility timeout change')); - if (params.ReceiptHandle === 'error') - return callback(new Error('Mock SQS error')); - callback(); - }; - - AWS.SNS = function(config) { context.sns.config = config; }; - AWS.SNS.prototype.publish = function(params, callback) { - context.sns.publish.push(params); - callback(); - }; - - var tasks = {}; - context.ecs.resourceFail = 0; - - AWS.ECS = function(config) { context.ecs.config = config; }; - AWS.ECS.prototype.runTask = function(params, callback) { - context.ecs.runTask.push(params); - - if (params.overrides.containerOverrides[0].environment[0].name === 'error') - return callback(new Error('Mock ECS error')); - - if (params.overrides.containerOverrides[0].environment[0].name === 'failure') - return callback(null, { tasks: [], failures: [{ reason: 'unrecognized' }] }); - - if (params.overrides.containerOverrides[0].environment[0].name === 'cannotPullContainer') { - var err = new Error('API error (500): Get https://234858372212.dkr.ecr.us-east-1.amazonaws.com/v1/_ping: dial tcp: i/o timeout'); - err.name = 'CannotPullContainerError'; - return callback(err); - } - - if (params.overrides.containerOverrides[0].environment[0].name === 'resourceMemory') { - if (context.ecs.resourceFail === 0) { - context.ecs.resourceFail++; - return callback(null, { tasks: [], failures: [{ reason: 'RESOURCE:MEMORY' }] }); - } - } - - if (params.overrides.containerOverrides[0].environment[0].name === 'resourceCpu') { - if (context.ecs.resourceFail === 0) { - context.ecs.resourceFail++; - return callback(null, { tasks: [], failures: [{ reason: 'RESOURCE:CPU' }] }); - } - } - - var messageId = params.overrides.containerOverrides[0].environment.find(function(item) { - return item.name === 'MessageId'; - }); - if (messageId && messageId.value === 'ecs-error') return callback(new Error('Mock ECS error')); - if (messageId && messageId.value === 'ecs-failure') { - if (context.ecs.resourceFail === 0) { - context.ecs.resourceFail++; - return callback(null, { tasks: [], failures: [{ reason: 'RESOURCE:MEMORY' }] }); - } - } - if (messageId && messageId.value === 'ecs-unrecognized') - return callback(null, { tasks: [], failures: [{ reason: 'unrecognized' }] }); - - var arn = crypto.createHash('md5').update(JSON.stringify(params)).digest('hex'); - tasks[arn] = params.overrides.containerOverrides[0].environment; - - callback(null, { - tasks: [{ taskArn: arn }] - }); - }; - - console.log = function() { - var msg = util.format.apply(null, arguments); - context.logs.push(msg); - log(msg); - }; - - var end = assert.end.bind(assert); - delete assert.plan; - assert.end = function(err) { - AWS.SQS = sqs; - AWS.SNS = sns; - AWS.ECS = ecs; - console.log = log; - if (err) end(err); - else end(); - }; - - AWS.ECS.prototype.describeTasks = function(params, callback) { - context.ecs.describeTasks.push(params); - - if (params.tasks[0] === '5452a86a162f3603a9b7b5f0d3396d40') - return callback(new Error('pending-describe-fail')); - - if (params.tasks[0] === '5328c55acbea9eb7c23336b0718f3324') - return callback(null, { tasks: [{ lastStatus: 'RUNNING' }] }); - - if (params.tasks[0] === '9f5d92d144855210733d560d83759e11' - || params.tasks[0] === 'e3278f8cf0a7f9b795d5f91d3739f72d' - || params.tasks[0] === '3b80fe64b7d8278090a63a16e5908ad9') - return callback(null, { tasks: [{ lastStatus: 'PENDING' }] }); - - callback(); - }; - - AWS.ECS.prototype.stopTask = function(params, callback) { - context.ecs.stopTask.push(params); - - if (params.task === '9f5d92d144855210733d560d83759e11') - return callback(new Error('stop-task-failure')); - - if (params.task === 'e3278f8cf0a7f9b795d5f91d3739f72d' - || params.task === '3b80fe64b7d8278090a63a16e5908ad9') - return callback(); - - callback(); - }; - - callback.call(context, assert); - }); -}; - -module.exports.collectionsEqual = function(assert, a, b, msg) { - if (a.length !== b.length) return assert.deepEqual(a, b, msg); - - function stringify(item) { - var str = JSON.stringify(item); - str = str.replace(/\w{3}, \d{2} \w{3} \d{4} \d{2}:\d{2}:\d{2} GMT/g, '${date}'); // sanitize dates as strings - return str; - } - - var compare = b.map(stringify); - var equal = a.map(stringify).reduce(function(equal, item) { - if (compare.indexOf(item) === -1) return false; - return equal; - }, a.length === b.length); - if (equal) assert.pass(msg); - else assert.deepEqual(a, b, msg); -}; - -module.exports.expectedArn = function(message, taskDefinition, containerName, startedBy) { - var clone = JSON.parse(JSON.stringify(message)); - clone.Attributes.ApproximateReceiveCount = clone.Attributes.ApproximateReceiveCount + 1; - var env = messageToEnv(clone); - var params = envToRunTaskParams(env, taskDefinition, containerName, startedBy); - return crypto.createHash('md5').update(JSON.stringify(params)).digest('hex'); -}; diff --git a/test/watcher.test.js b/test/watcher.test.js new file mode 100644 index 00000000..decf2909 --- /dev/null +++ b/test/watcher.test.js @@ -0,0 +1,142 @@ + +'use strict'; + +const test = require('tape'); +const sinon = require('sinon'); +const stubber = require('./stubber'); +const Watcher = require('../lib/watcher'); +const Message = require('../lib/message'); +const Messages = require('../lib/messages'); +const Worker = require('../lib/worker'); + +test('[watcher] constructor', (assert) => { + const messages = stubber(Messages).setup(); + + assert.throws( + () => new Watcher(), + /Missing options: workerOptions/, + 'throws for missing workerOptions' + ); + + assert.throws( + () => new Watcher({ workerOptions: {} }), + /Missing options: queueUrl/, + 'throws for missing queueUrl option' + ); + + const options = { + queueUrl: 'https://faker', + workerOptions: { + command: 'echo hello world', + volumes: ['/tmp'] + } + }; + const watcher = new Watcher(options); + + assert.deepEqual( + watcher.workerOptions, + options.workerOptions, + 'sets .workerOptions' + ); + assert.equal(watcher.queueUrl, options.queueUrl, 'sets .queueUrl'); + assert.ok(watcher.messages instanceof Messages, 'sets .messages'); + + messages.teardown(); + assert.end(); +}); + +test('[watcher] listens exactly once', async (assert) => { + const messages = stubber(Messages).setup(); + const message1 = sinon.createStubInstance(Message); + const message2 = sinon.createStubInstance(Message); + + messages.waitFor + .onCall(0) + .returns(Promise.resolve([message1])) + .onCall(1) + .returns(Promise.resolve([message2])); + + const watcher = new Watcher({ + queueUrl: 'https://faker', + fresh: true, + workerOptions: { + command: 'echo hello world', + volumes: ['/tmp'] + } + }); + + await watcher.listen(); + + assert.equals( + messages.waitFor.callCount, 1, + 'messages.waitFor is called once.' + ); + messages.teardown(); + assert.end(); +}); + +test('[watcher] listen', async (assert) => { + + const messages = stubber(Messages).setup(); + const worker = stubber(Worker).setup(); + const workerOptions = { + command: 'echo hello world', + volumes: ['/tmp','/mnt'] + }; + + const watcher = new Watcher({ + queueUrl: 'https://faker', + workerOptions + }); + + const message1 = sinon.createStubInstance(Message); + const message2 = sinon.createStubInstance(Message); + + messages.waitFor + .returns(Promise.resolve([])) + .onCall(1) + .returns(Promise.resolve([message1, message2])) + .onCall(2) + .callsFake(() => { + watcher.stop = true; + return Promise.resolve([]); + }); + + worker.waitFor.returns(Promise.resolve()); + + try { + await watcher.listen(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok( + Worker.create.calledWith(message1, workerOptions), + 'creates worker for message1' + ); + + assert.ok( + Worker.create.calledWith(message2, workerOptions), + 'creates worker for message2' + ); + + assert.equal(worker.waitFor.callCount, 2, 'waits for both workers'); + + messages.teardown(); + worker.teardown(); + assert.end(); + +}); + +test('[watcher] factory', (assert) => { + const watcher = Watcher.create({ + queueUrl: 'https://faker', + workerOptions: { + command: 'echo hello world', + volumes: ['/tmp'] + } + }); + + assert.ok(watcher instanceof Watcher, 'creates a Watcher object'); + assert.end(); +}); diff --git a/test/worker-capacity.test.js b/test/worker-capacity.test.js deleted file mode 100644 index ebbfe333..00000000 --- a/test/worker-capacity.test.js +++ /dev/null @@ -1,260 +0,0 @@ -var AWS = require('@mapbox/mock-aws-sdk-js'); -var capacity = require('../lib/worker-capacity'); -var fixtures = require('./fixtures/capacity'); -var test = require('tape'); - -var argv = { region: 'us-east-1', stackName: 'cats-api-staging' }; -var cluster = 'arn:aws:ecs:us-east-1:123456789000:cluster/some-cluster-Cluster-000000000000'; -var error = 'some error'; - -test('[capacity] run - missing region', (assert) => { - capacity({ stackName: 'cats-api-staging' }, (err) => { - assert.equal(err.message, 'No region specified'); - assert.end(); - }); -}); - -test('[capacity] run - missing stack', (assert) => { - capacity({ region: 'us-east-1' }, (err) => { - assert.equal(err.message, 'No stack name provided'); - assert.end(); - }); -}); - -test('[capacity] run', (assert) => { - AWS.stub('CloudFormation', 'describeStacks').yields(null, fixtures.describeStacks); - AWS.stub('CloudFormation', 'describeStackResources').yields(null, fixtures.describeStackResources); - AWS.stub('ECS', 'describeTaskDefinition').yields(null, fixtures.describeTaskDefinitionBothMem); - AWS.stub('ECS', 'listContainerInstances').returns({ - eachPage: (callback) => { - callback(null, fixtures.listContainerInstancesPage0, () => { - callback(null, fixtures.listContainerInstancesPage1, () => { - callback(); - }); - }); - } - }); - var describeContainerInstances = AWS.stub('ECS', 'describeContainerInstances'); - describeContainerInstances.onCall(0).yields(null, fixtures.describeContainerInstances0); - describeContainerInstances.onCall(1).yields(null, fixtures.describeContainerInstances1); - - capacity({ region: 'us-east-1', stackName: 'cats-api-staging' }, (err, res) => { - assert.ifError(err, 'should not error'); - assert.deepEqual(res, { capacity: 256, cluster: 'some-cluster-Cluster-000000000000', stack: 'cats-api-staging' }); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] getClusterArn - describeStacks error', (assert) => { - var describeStacks = AWS.stub('CloudFormation', 'describeStacks').yields(error); - - capacity.getClusterArn(argv, (err) => { - assert.deepEqual(describeStacks.firstCall.args[0], { StackName: argv.stackName }); - assert.equal(err.message, error); - AWS.CloudFormation.restore(); - assert.end(); - }); -}); - -test('[capacity] getClusterArn', (assert) => { - var describeStacks = AWS.stub('CloudFormation', 'describeStacks').yields(null, fixtures.describeStacks); - - capacity.getClusterArn(argv, (err, res) => { - assert.deepEqual(describeStacks.firstCall.args[0], { StackName: argv.stackName }); - assert.ifError(err, 'should not error'); - assert.equal(res, fixtures.describeStacks.Stacks[0].Outputs[0].OutputValue); - AWS.CloudFormation.restore(); - assert.end(); - }); -}); - -test('[capacity] getReservations - describeStackResources error', (assert) => { - var describeStackResources = AWS.stub('CloudFormation', 'describeStackResources').yields(error); - var describeTaskDefinition = AWS.stub('ECS', 'describeTaskDefinition'); - - capacity.getReservations(argv, (err) => { - assert.deepEqual(describeStackResources.firstCall.args[0], { StackName: argv.stackName }); - assert.equal(describeTaskDefinition.called, false, 'ecs.describeTaskDefinition should not be called'); - assert.equal(err.message, error); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] getReservations - describeTaskDefinition error', (assert) => { - var describeStackResources = AWS.stub('CloudFormation', 'describeStackResources').yields(null, fixtures.describeStackResources); - var describeTaskDefinition = AWS.stub('ECS', 'describeTaskDefinition').yields(error); - - capacity.getReservations(argv, (err) => { - assert.deepEqual(describeStackResources.firstCall.args[0], { StackName: argv.stackName }); - assert.deepEqual(describeTaskDefinition.firstCall.args[0], { taskDefinition: fixtures.describeStackResources.StackResources[0].PhysicalResourceId }); - assert.equal(err.message, error); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] getReservations - soft memory', (assert) => { - var describeStackResources = AWS.stub('CloudFormation', 'describeStackResources').yields(null, fixtures.describeStackResources); - var describeTaskDefinition = AWS.stub('ECS', 'describeTaskDefinition').yields(null, fixtures.describeTaskDefinitionSoftMem); - - capacity.getReservations(argv, (err, res) => { - assert.deepEqual(describeStackResources.firstCall.args[0], { StackName: argv.stackName }); - assert.deepEqual(describeTaskDefinition.firstCall.args[0], { taskDefinition: fixtures.describeStackResources.StackResources[0].PhysicalResourceId }); - assert.ifError(err, 'should not error'); - assert.deepEqual(res, { Memory: 128, Cpu: 256 }); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] getReservations - hard memory', (assert) => { - var describeStackResources = AWS.stub('CloudFormation', 'describeStackResources').yields(null, fixtures.describeStackResources); - var describeTaskDefinition = AWS.stub('ECS', 'describeTaskDefinition').yields(null, fixtures.describeTaskDefinitionHardMem); - - capacity.getReservations(argv, (err, res) => { - assert.deepEqual(describeStackResources.firstCall.args[0], { StackName: argv.stackName }); - assert.deepEqual(describeTaskDefinition.firstCall.args[0], { taskDefinition: fixtures.describeStackResources.StackResources[0].PhysicalResourceId }); - assert.ifError(err, 'should not error'); - assert.deepEqual(res, { Memory: 128, Cpu: 256 }); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] getReservations - both memories', (assert) => { - var describeStackResources = AWS.stub('CloudFormation', 'describeStackResources').yields(null, fixtures.describeStackResources); - var describeTaskDefinition = AWS.stub('ECS', 'describeTaskDefinition').yields(null, fixtures.describeTaskDefinitionBothMem); - - capacity.getReservations(argv, (err, res) => { - assert.deepEqual(describeStackResources.firstCall.args[0], { StackName: argv.stackName }); - assert.deepEqual(describeTaskDefinition.firstCall.args[0], { taskDefinition: fixtures.describeStackResources.StackResources[0].PhysicalResourceId }); - assert.ifError(err, 'should not error'); - assert.deepEqual(res, { Memory: 128, Cpu: 256 }); - AWS.CloudFormation.restore(); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] listInstances - listContainerInstances error', (assert) => { - var listContainerInstances = AWS.stub('ECS', 'listContainerInstances').returns({ - eachPage: (callback) => { - callback(error); - } - }); - var describeContainerInstances = AWS.stub('ECS', 'describeContainerInstances'); - - capacity.listInstances(argv, cluster, (err) => { - assert.deepEqual(listContainerInstances.firstCall.args, [{ cluster: cluster }]); - assert.equal(describeContainerInstances.called, false, 'should not have called ecs.describeContainerInstances'); - assert.equal(err.message, error); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] listInstances - describeContainerInstances error', (assert) => { - var listContainerInstances = AWS.stub('ECS', 'listContainerInstances').returns({ - eachPage: (callback) => { - callback(null, fixtures.listContainerInstances, () => { - callback(); - }); - } - }); - var describeContainerInstances = AWS.stub('ECS', 'describeContainerInstances').yields(error); - - capacity.listInstances(argv, cluster, (err) => { - assert.deepEqual(listContainerInstances.firstCall.args[0], { cluster: cluster }); - assert.deepEqual(describeContainerInstances.firstCall.args[0], { cluster: cluster, containerInstances: fixtures.listContainerInstances.containerInstanceArns }); - assert.equal(err.message, error); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] listInstances - single page', (assert) => { - var listContainerInstances = AWS.stub('ECS', 'listContainerInstances').returns({ - eachPage: (callback) => { - callback(null, listContainerInstances, () => { - callback(); - }); - } - }); - var describeContainerInstances = AWS.stub('ECS', 'describeContainerInstances').yields(null, fixtures.describeContainerInstances); - - capacity.listInstances(argv, cluster, (err, res) => { - assert.deepEqual(listContainerInstances.firstCall.args[0], { cluster: cluster }); - assert.deepEqual(describeContainerInstances.firstCall.args[0], { cluster: cluster, containerInstances: listContainerInstances.containerInstanceArns }); - assert.ifError(err, 'should not error'); - assert.deepEqual(res, [ - [{ name: 'CPU', integerValue: 32768 }, { name: 'MEMORY', integerValue: 184306 }], - [{ name: 'CPU', integerValue: 32768 }, { name: 'MEMORY', integerValue: 183986 }] - ]); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] listInstances - multiple pages', (assert) => { - var listContainerInstances = AWS.stub('ECS', 'listContainerInstances').returns({ - eachPage: (callback) => { - callback(null, fixtures.listContainerInstancesPage0, () => { - callback(null, fixtures.listContainerInstancesPage1, () => { - callback(); - }); - }); - } - }); - var describeContainerInstances = AWS.stub('ECS', 'describeContainerInstances'); - describeContainerInstances.onCall(0).yields(null, fixtures.describeContainerInstances0); - describeContainerInstances.onCall(1).yields(null, fixtures.describeContainerInstances1); - - capacity.listInstances(argv, cluster, (err, res) => { - assert.deepEqual(listContainerInstances.firstCall.args[0], { cluster: cluster }); - assert.deepEqual(describeContainerInstances.firstCall.args[0], { - cluster: 'arn:aws:ecs:us-east-1:123456789000:cluster/some-cluster-Cluster-000000000000', - containerInstances: ['arn:aws:ecs:us-east-1:123456789000:container-instance/00000000-ffff-0000-ffff-000000000000'] - }); - assert.deepEqual(describeContainerInstances.secondCall.args[0], { - cluster: 'arn:aws:ecs:us-east-1:123456789000:cluster/some-cluster-Cluster-000000000000', - containerInstances: ['arn:aws:ecs:us-east-1:123456789000:container-instance/ffffffff-0000-ffff-0000-ffffffffffff'] - }); - assert.ifError(err, 'should not error'); - assert.deepEqual(res, [ - [{ name: 'CPU', integerValue: 32768 }, { name: 'MEMORY', integerValue: 184306 }], - [{ name: 'CPU', integerValue: 32768 }, { name: 'MEMORY', integerValue: 183986 }] - ]); - AWS.ECS.restore(); - assert.end(); - }); -}); - -test('[capacity] calculateRoom - no room', (assert) => { - var reservation = { Cpu: '256', Memory: '512' }; - var noCpu = [[{ name: 'CPU', integerValue: '0' }, { name: 'MEMORY', integerValue: '1000' }]]; - var noMem = [[{ name: 'CPU', integerValue: '1000' }, { name: 'MEMORY', integerValue: '0' }]]; - - assert.equal(capacity.calculateRoom(noCpu, reservation), 0, 'should return room for 0 workers if no CPU remaining'); - assert.equal(capacity.calculateRoom(noMem, reservation), 0, 'should return room for 0 workers if no memory remaining'); - assert.end(); -}); - -test('[capacity] calculateRoom - room', (assert) => { - var reservation = { Cpu: '256', Memory: '512' }; - var resources = [ - [{ name: 'CPU', integerValue: '20000' }, { name: 'MEMORY', integerValue: '30000' }], - [{ name: 'CPU', integerValue: '40000' }, { name: 'MEMORY', integerValue: '40000' }], - [{ name: 'CPU', integerValue: '60000' }, { name: 'MEMORY', integerValue: '50000' }] - ]; - - var result = capacity.calculateRoom(resources, reservation); - assert.equal(result, 235, 'should equal sum of tasks per instance based on most limited resource'); - assert.end(); -}); diff --git a/test/worker.test.js b/test/worker.test.js new file mode 100644 index 00000000..e49f1252 --- /dev/null +++ b/test/worker.test.js @@ -0,0 +1,360 @@ +'use strict'; + +const stream = require('stream'); +const events = require('events'); +const child_process = require('child_process'); +const fs = require('fs'); +const fsExtra = require('fs-extra'); +const test = require('tape'); +const sinon = require('sinon'); +const Worker = require('../lib/worker'); +const Message = require('../lib/message'); +const Logger = require('../lib/logger'); +const stubber = require('./stubber'); + +test('[worker] constructor', (assert) => { + assert.throws( + () => new Worker(), + /Invalid Message object/, + 'must provide a message object' + ); + + assert.throws( + () => new Worker({}), + /Invalid Message object/, + 'message object must be of correct type' + ); + + assert.throws( + () => new Worker(sinon.createStubInstance(Message)), + /Missing options: command/, + 'must provide a command' + ); + + const message = sinon.createStubInstance(Message); + const worker = new Worker(message, { command: 'echo hello world', volumes: ['/tmp'] }); + + assert.equal(worker.message, message, 'sets .message'); + assert.equal(worker.command, 'echo hello world', 'sets .command'); + + assert.end(); +}); + +test('[worker] factory', (assert) => { + const message = sinon.createStubInstance(Message); + const options = { command: 'echo hello world', volumes: ['/tmp'] }; + const worker = Worker.create(message, options); + assert.ok(worker instanceof Worker, 'returns a Worker object'); + assert.end(); +}); + +test('[worker] fail', async (assert) => { + const logger = stubber(Logger).setup(); + const message = sinon.createStubInstance(Message); + const options = { command: 'echo hello world', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + const results = { code: 124, signal: 'SIGTERM', duration: 12345 }; + await worker.fail(results); + + assert.ok(logger.workerFailure.calledWith(results), 'logs worker failure'); + assert.equal(message.retry.callCount, 1, 'calls message.retry()'); + + logger.teardown(); + assert.end(); +}); + +test('[worker] noop', async (assert) => { + const logger = stubber(Logger).setup(); + const message = sinon.createStubInstance(Message); + const options = { command: 'echo hello world', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + const results = { code: 4, duration: 12345 }; + await worker.noop(results); + + assert.ok(logger.workerSuccess.calledWith(results), 'logs worker result'); + assert.equal(message.retry.callCount, 1, 'calls message.retry()'); + + logger.teardown(); + assert.end(); +}); + +test('[worker] ignore', async (assert) => { + const logger = stubber(Logger).setup(); + const message = sinon.createStubInstance(Message); + const options = { command: 'echo hello world', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + const results = { code: 3, duration: 12345 }; + await worker.ignore(results); + + assert.ok(logger.workerSuccess.calledWith(results), 'logs worker result'); + assert.equal(message.complete.callCount, 1, 'calls message.complete()'); + + logger.teardown(); + assert.end(); +}); + +test('[worker] success', async (assert) => { + const logger = stubber(Logger).setup(); + + const message = sinon.createStubInstance(Message); + const options = { command: 'echo hello world', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + const results = { code: 0, duration: 12345 }; + await worker.success(results); + + assert.ok(logger.workerSuccess.calledWith(results), 'logs worker result'); + assert.equal(message.complete.callCount, 1, 'calls message.complete()'); + + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, exit 0', async (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + + const logger = stubber(Logger).setup(); + const message = sinon.createStubInstance(Message); + message.id = '895ab607-3767-4bbb-bd45-2a3b341cbc46'; + message.env = { Message: 'banana' }; + + logger.log.restore(); + logger.stream.restore(); + logger.type = 'worker'; + logger.message = message; + + const options = { command: 'echo ${Message}', volumes: ['/tmp', '/var/tmp'] }; + const worker = new Worker(message, options); + + const env = process.env; + process.env = { fake: 'environment' }; + + sinon.spy(child_process, 'spawn'); + sinon.spy(process.stdout, 'write'); + sinon.spy(process.stderr, 'write'); + sinon.spy(fsExtra, 'emptyDir'); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + const data = process.stdout.write.args[0][0]; + process.stdout.write.restore(); + process.stderr.write.restore(); + + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [worker] [895ab607-3767-4bbb-bd45-2a3b341cbc46] banana\n', + 'prefixed worker output' + ); + + assert.ok( + child_process.spawn.calledWith('echo ${Message}', { + env: Object.assign(message.env, process.env), + shell: true, + stdio: [process.stdin, 'pipe', 'pipe'] + }), + 'spawned child process properly' + ); + + const results = logger.workerSuccess.args[0][0]; + assert.equal(results.code, 0, 'logged worker success exit code'); + assert.ok(results.duration, 'logged worker success duration'); + assert.equal(message.complete.callCount, 1, 'called message.complete()'); + + assert.equal(fsExtra.emptyDir.callCount, 2, 'called fsExtra.emptyDir() twice'); + assert.ok(fsExtra.emptyDir.calledWith('/tmp'), 'called fsExtra.emptyDir() on /tmp'); + assert.ok(fsExtra.emptyDir.calledWith('/var/tmp'), 'called fsExtra.emptyDir() on /tmp'); + + fsExtra.emptyDir.restore(); + Date.prototype.toGMTString.restore(); + child_process.spawn.restore(); + process.env = env; + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, write to /tmp, exit 0', async (assert) => { + sinon + .stub(Date.prototype, 'toGMTString') + .returns('Fri, 09 Feb 2018 21:57:55 GMT'); + + const logger = stubber(Logger).setup(); + const message = sinon.createStubInstance(Message); + message.id = '895ab607-3767-4bbb-bd45-2a3b341cbc46'; + message.env = { Message: 'banana' }; + + logger.log.restore(); + logger.stream.restore(); + logger.type = 'worker'; + logger.message = message; + + const options = { command: 'echo ${Message} > /tmp/banana.txt && cat /tmp/banana.txt', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + const env = process.env; + process.env = { fake: 'environment' }; + + sinon.spy(child_process, 'spawn'); + sinon.spy(process.stdout, 'write'); + sinon.spy(process.stderr, 'write'); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + const data = process.stdout.write.args[0][0]; + process.stdout.write.restore(); + process.stderr.write.restore(); + + assert.equal( + data, + '[Fri, 09 Feb 2018 21:57:55 GMT] [worker] [895ab607-3767-4bbb-bd45-2a3b341cbc46] banana\n', + 'prefixed worker output' + ); + + assert.ok( + child_process.spawn.calledWith('echo ${Message} > /tmp/banana.txt && cat /tmp/banana.txt', { + env: Object.assign(message.env, process.env), + shell: true, + stdio: [process.stdin, 'pipe', 'pipe'] + }), + 'spawned child process properly' + ); + + const results = logger.workerSuccess.args[0][0]; + assert.equal(results.code, 0, 'logged worker success exit code'); + assert.ok(results.duration, 'logged worker success duration'); + assert.equal(message.complete.callCount, 1, 'called message.complete()'); + + const tmpFiles = fs.readdirSync('/tmp'); + assert.equal(tmpFiles.length, 0, 'all files in /tmp are cleared out after the worker complets'); + + Date.prototype.toGMTString.restore(); + child_process.spawn.restore(); + process.env = env; + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, exit 1', async (assert) => { + const logger = stubber(Logger).setup(); + logger.log.restore(); + logger.stream.restore(); + const message = sinon.createStubInstance(Message); + message.env = { Message: 'banana' }; + const options = { command: 'exit 1', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + sinon.spy(child_process, 'spawn'); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + const results = logger.workerFailure.args[0][0]; + assert.equal(results.code, 1, 'logged worker failure exit code'); + assert.ok(results.duration, 'logged worker failure duration'); + assert.equal(message.retry.callCount, 1, 'calls message.retry()'); + + child_process.spawn.restore(); + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, exit 3', async (assert) => { + const logger = stubber(Logger).setup(); + logger.log.restore(); + logger.stream.restore(); + const message = sinon.createStubInstance(Message); + message.env = { Message: 'banana' }; + const options = { command: 'exit 3', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + sinon.spy(child_process, 'spawn'); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + const results = logger.workerSuccess.args[0][0]; + assert.equal(results.code, 3, 'logged worker success exit code'); + assert.ok(results.duration, 'logged worker success duration'); + assert.equal(message.complete.callCount, 1, 'calls message.complete()'); + + child_process.spawn.restore(); + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, exit 4', async (assert) => { + const logger = stubber(Logger).setup(); + logger.log.restore(); + logger.stream.restore(); + const message = sinon.createStubInstance(Message); + message.env = { Message: 'banana' }; + const options = { command: 'exit 4', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + + sinon.spy(child_process, 'spawn'); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + const results = logger.workerSuccess.args[0][0]; + assert.equal(results.code, 4, 'logged worker success exit code'); + assert.ok(results.duration, 'logged worker success duration'); + assert.equal(message.retry.callCount, 1, 'calls message.retry()'); + + child_process.spawn.restore(); + logger.teardown(); + assert.end(); +}); + +test('[worker] waitFor, child_process.spawn failure', async (assert) => { + const logger = stubber(Logger).setup(); + logger.log.restore(); + logger.stream.restore(); + const message = sinon.createStubInstance(Message); + message.env = { Message: 'banana' }; + const options = { command: 'echo ${Message}', volumes: ['/tmp'] }; + const worker = new Worker(message, options); + const err = new Error('foo'); + + sinon.stub(child_process, 'spawn').callsFake(() => { + const p = new events.EventEmitter(); + p.stdout = new stream.Readable({ read: function() { this.push(null); } }); + p.stderr = new stream.Readable({ read: function() { this.push(null); } }); + setImmediate(() => p.emit('error', err)); + return p; + }); + + try { + await worker.waitFor(); + } catch (err) { + assert.ifError(err, 'failed'); + } + + assert.ok(logger.workerError.calledWith(err), 'logged worker error'); + assert.equal(message.retry.callCount, 1, 'calls message.retry()'); + + child_process.spawn.restore(); + logger.teardown(); + assert.end(); +});