├── .gitignore ├── .jshintrc ├── .travis.yml ├── LICENSE ├── Makefile ├── README.md ├── index.js ├── lib ├── email-ses.js ├── index.js └── template-handlebars.js ├── package-lock.json ├── package.json └── test ├── emails └── registration.html └── plugin.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | npm-debug.log 4 | dump.rdb 5 | node_modules 6 | results.tap 7 | results.xml 8 | npm-shrinkwrap.json 9 | .DS_Store 10 | */.DS_Store 11 | */*/.DS_Store 12 | ._* 13 | */._* 14 | */*/._* -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "esnext": true, 4 | "indent": 4, 5 | "-W100": true, 6 | "-W079": true 7 | } 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "6" 5 | - "8" 6 | 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | @node node_modules/lab/bin/lab 3 | test-cov: 4 | @node node_modules/lab/bin/lab -r threshold -t 100 5 | test-cov-html: 6 | @node node_modules/lab/bin/lab -r html -o coverage.html 7 | 8 | .PHONY: test test-cov test-cov-html -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hapi-mail 2 | 3 | [](https://travis-ci.org/paullang/hapi-mail) 4 | 5 | Email plugin for [Hapi.js](https://github.com/hapijs/hapi) 6 | 7 | ## Background 8 | 9 | Currently this plugin supports handlebars as the HTML template engine for the email body and Amazon Simple Email Service (SES) as the email engine, but it was designed in a way that more providers can be easily added if necessary. 10 | 11 | ## Getting Started 12 | Install **hapi-mail** by either running `npm install hapi-mail --save` in your application's root directory or add 'hapi-mail' to the dependencies section of the 'package.json' file and run npm install. 13 | 14 | ## How to use 15 | 16 | This module assumes you are already familiar with [Hapi.js](https://github.com/hapijs/hapi) and it's plugin conventions. 17 | 18 | ```javascript 19 | const options = { 20 | template: { 21 | engine: 'handlebars', 22 | path: './emails/' 23 | }, 24 | email: { 25 | engine: 'ses', 26 | options: { accessKeyId: process.env.AWS_BACKEND_ID, secretAccessKey: process.env.AWS_BACKEND_SECRET, region: 'us-east-1' }, 27 | defaultFrom: 'you@domain.com' 28 | } 29 | }; 30 | 31 | const email = { 32 | from: 'somebody@yourdomain.com', 33 | to: ['user@userland.com'], 34 | cc: ['boss@yourdomain.com'], 35 | bcc: ['somebody@yourdomain.com'], 36 | replyTo: ['reply@yourdomain.com'], 37 | returnPath: 'bounce@yourdomain.com', 38 | subject: 'Example registration confirmation', 39 | bodyTemplate: 'registration.html', 40 | bodyData: { name: 'Paul Lang', username: 'paullang' } 41 | }; 42 | 43 | server.register({register: require('hapi-mail'), options: options}, function (err) { 44 | 45 | .... 46 | }); 47 | 48 | 49 | // If you have a reference to the server, you can use this 50 | server.plugins['hapi-mail'].sendMail(email, function(err, response) { 51 | 52 | .... 53 | }); 54 | 55 | // If you have a reference to a request, you can use this 56 | request.server.plugins['hapi-mail'].sendMail(email, function(err, data) { 57 | 58 | .... 59 | }); 60 | 61 | 62 | ``` 63 | 64 | **hapi-mail PROTIPS:** 65 | See [test/plugin.js](https://github.com/paullang/hapi-mail/tree/master/test) for working example, but you will need to set three environment variables for it to run: AWS_BACKEND_ID, AWS_BACKEND_SECRET, EMAIL 66 | 67 | Since this module name has a - in the name, you cannot use dot notation to register and access it. 68 | e.g. server.plugins['hapi-mail'].sendMail(...) and cannot use server.plugins.hapi-mail.sendMail(...) 69 | 70 | **AWS PROTIP:** Don't store your actual AWS key and secret in your source code and don't use your root AWS key and secret for your applications. 71 | Setup a limited access key using [AWS IAM](http://aws.amazon.com/iam/) and either put them in environment variables or into a separate configuration file that won't get uploaded somewhere public like Github or NPM. 72 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib'); -------------------------------------------------------------------------------- /lib/email-ses.js: -------------------------------------------------------------------------------- 1 | // Load modules 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | // Declare internals 6 | 7 | const internals = {}; 8 | 9 | exports.Email = internals.Email = function (options) { 10 | 11 | AWS.config.update(options); 12 | internals.ses = new AWS.SES(); 13 | }; 14 | 15 | internals.Email.prototype.sendEmail = function (email, callback) { 16 | 17 | const params = { 18 | Source: email.from, 19 | Destination: { 20 | ToAddresses: email.to, 21 | CcAddresses: email.cc, 22 | BccAddresses: email.bcc 23 | }, 24 | Message: { 25 | Subject: { Data: email.subject, Charset: 'UTF-8' }, 26 | Body: { 27 | Html: { 28 | Data: email.body, 29 | Charset: 'UTF-8' 30 | } 31 | } 32 | }, 33 | ReplyToAddresses: email.replyTo, 34 | ReturnPath: email.returnPath 35 | }; 36 | 37 | if (params.Destination.CcAddresses.length < 1) { 38 | delete params.Destination.CcAddresses; 39 | } 40 | if (params.Destination.BccAddresses.length < 1) { 41 | delete params.Destination.BccAddresses; 42 | } 43 | 44 | internals.ses.sendEmail(params, function (err, data) { 45 | 46 | callback(err, data); 47 | }); 48 | }; 49 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const Fs = require('fs'); 4 | const Utils = require('hoek'); 5 | 6 | // Declare internals 7 | 8 | const internals = {}; 9 | 10 | // Defaults 11 | 12 | internals.defaults = { 13 | template: { 14 | engine: 'handlebars', 15 | path: './templates/' 16 | }, 17 | email: { 18 | engine: 'ses', 19 | options: { region: 'us-west-2' } 20 | } 21 | }; 22 | 23 | exports.register = function (server, options, next) { 24 | 25 | const settings = Utils.clone(internals.defaults); 26 | Utils.merge(settings, options); 27 | 28 | // Set the templateEngine 29 | 30 | let templateFactory = null; 31 | if (settings.template.engine === 'handlebars') { 32 | templateFactory = require('./template-handlebars'); 33 | } 34 | Utils.assert(templateFactory, 'The supplied options.template.engine is not valid'); 35 | const templateEngine = new templateFactory.Template(settings.template); 36 | 37 | 38 | // Set the emailEngine 39 | 40 | let emailFactory = null; 41 | if (settings.email.engine === 'ses') { 42 | emailFactory = require('./email-ses') 43 | } 44 | Utils.assert(emailFactory, 'The supplied options.email.engine is not valid'); 45 | 46 | const emailEngine = new emailFactory.Email(settings.email.options); 47 | 48 | 49 | const getTemplateAsString = function (template) { 50 | 51 | return Fs.readFileSync(settings.template.path + template, { encoding: 'utf8' }); 52 | }; 53 | 54 | 55 | const sendMail = function (email, callback) { 56 | 57 | const templateString = getTemplateAsString(email.bodyTemplate); 58 | 59 | templateEngine.substitute(templateString, email.bodyData, function (converted) { 60 | 61 | if ( (!email.from || email.from === '') && (settings.email.defaultFrom && settings.email.defaultFrom != '') ) { 62 | email.from = settings.email.defaultFrom; 63 | } 64 | 65 | if (!email.cc) { 66 | email.cc = []; 67 | } 68 | 69 | if (!email.bcc) { 70 | email.bcc = []; 71 | } 72 | 73 | if ( !email.replyTo || email.replyTo.length === 0 ) { 74 | email.replyTo = [email.from]; 75 | } 76 | 77 | if ( !email.returnPath || email.returnPath === '' ) { 78 | email.returnPath = email.from; 79 | } 80 | 81 | email.body = converted; 82 | emailEngine.sendEmail(email, function(err, response) { 83 | 84 | callback(err, response); 85 | }); 86 | }); 87 | }; 88 | 89 | server.expose('sendMail', sendMail); 90 | 91 | next(); 92 | }; 93 | 94 | exports.register.attributes = { 95 | pkg: require('../package.json') 96 | }; 97 | 98 | 99 | -------------------------------------------------------------------------------- /lib/template-handlebars.js: -------------------------------------------------------------------------------- 1 | // Load modules 2 | 3 | const Handlebars = require('handlebars'); 4 | 5 | // Declare internals 6 | 7 | const internals = {}; 8 | 9 | exports.Template = internals.Template = function (options) { 10 | 11 | }; 12 | 13 | internals.Template.prototype.substitute = function (templateString, data, callback) { 14 | 15 | const convert = Handlebars.compile(templateString); 16 | const converted = convert(data); 17 | 18 | callback(converted.toString('utf8')); 19 | }; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hapi-mail", 3 | "version": "15.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accept": { 8 | "version": "https://registry.npmjs.org/accept/-/accept-2.1.3.tgz", 9 | "integrity": "sha1-qw9b2kxEm76SaupgezUiVi9az4Y=", 10 | "dev": true, 11 | "requires": { 12 | "boom": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", 13 | "hoek": "4.2.1" 14 | }, 15 | "dependencies": { 16 | "hoek": { 17 | "version": "4.2.1", 18 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 19 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 20 | "dev": true 21 | } 22 | } 23 | }, 24 | "acorn": { 25 | "version": "5.5.3", 26 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", 27 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", 28 | "dev": true 29 | }, 30 | "acorn-jsx": { 31 | "version": "3.0.1", 32 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 33 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 34 | "dev": true, 35 | "requires": { 36 | "acorn": "3.3.0" 37 | }, 38 | "dependencies": { 39 | "acorn": { 40 | "version": "3.3.0", 41 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 42 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 43 | "dev": true 44 | } 45 | } 46 | }, 47 | "ajv": { 48 | "version": "5.5.2", 49 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 50 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 51 | "dev": true, 52 | "requires": { 53 | "co": "4.6.0", 54 | "fast-deep-equal": "1.1.0", 55 | "fast-json-stable-stringify": "2.0.0", 56 | "json-schema-traverse": "0.3.1" 57 | } 58 | }, 59 | "ajv-keywords": { 60 | "version": "2.1.1", 61 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", 62 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", 63 | "dev": true 64 | }, 65 | "align-text": { 66 | "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 67 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 68 | "requires": { 69 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", 70 | "longest": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 71 | "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" 72 | } 73 | }, 74 | "amdefine": { 75 | "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 76 | "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=" 77 | }, 78 | "ammo": { 79 | "version": "https://registry.npmjs.org/ammo/-/ammo-2.0.2.tgz", 80 | "integrity": "sha1-NmxV97xPLyQhjtOk3UuN8TXC5so=", 81 | "dev": true, 82 | "requires": { 83 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 84 | "hoek": "4.2.1" 85 | }, 86 | "dependencies": { 87 | "boom": { 88 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 89 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 90 | "dev": true, 91 | "requires": { 92 | "hoek": "4.2.1" 93 | } 94 | }, 95 | "hoek": { 96 | "version": "4.2.1", 97 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 98 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 99 | "dev": true 100 | } 101 | } 102 | }, 103 | "ansi-escapes": { 104 | "version": "3.1.0", 105 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", 106 | "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", 107 | "dev": true 108 | }, 109 | "ansi-regex": { 110 | "version": "2.1.1", 111 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 112 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 113 | "dev": true 114 | }, 115 | "ansi-styles": { 116 | "version": "2.2.1", 117 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 118 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 119 | "dev": true 120 | }, 121 | "argparse": { 122 | "version": "1.0.10", 123 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 124 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 125 | "dev": true, 126 | "requires": { 127 | "sprintf-js": "1.0.3" 128 | } 129 | }, 130 | "array-union": { 131 | "version": "1.0.2", 132 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 133 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 134 | "dev": true, 135 | "requires": { 136 | "array-uniq": "1.0.3" 137 | } 138 | }, 139 | "array-uniq": { 140 | "version": "1.0.3", 141 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 142 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 143 | "dev": true 144 | }, 145 | "arrify": { 146 | "version": "1.0.1", 147 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 148 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 149 | "dev": true 150 | }, 151 | "async": { 152 | "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 153 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 154 | }, 155 | "aws-sdk": { 156 | "version": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.6.1.tgz", 157 | "integrity": "sha1-Ne4QET1DGgZu8LoRFpR7mLHGixM=", 158 | "requires": { 159 | "buffer": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", 160 | "crypto-browserify": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", 161 | "jmespath": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", 162 | "sax": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", 163 | "xml2js": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", 164 | "xmlbuilder": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz" 165 | } 166 | }, 167 | "b64": { 168 | "version": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", 169 | "integrity": "sha1-ep1gRmrfe43hFMvfZRpf38yQiU0=", 170 | "dev": true 171 | }, 172 | "babel-code-frame": { 173 | "version": "6.26.0", 174 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 175 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 176 | "dev": true, 177 | "requires": { 178 | "chalk": "1.1.3", 179 | "esutils": "2.0.2", 180 | "js-tokens": "3.0.2" 181 | }, 182 | "dependencies": { 183 | "chalk": { 184 | "version": "1.1.3", 185 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 186 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 187 | "dev": true, 188 | "requires": { 189 | "ansi-styles": "2.2.1", 190 | "escape-string-regexp": "1.0.5", 191 | "has-ansi": "2.0.0", 192 | "strip-ansi": "3.0.1", 193 | "supports-color": "2.0.0" 194 | } 195 | }, 196 | "strip-ansi": { 197 | "version": "3.0.1", 198 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 199 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 200 | "dev": true, 201 | "requires": { 202 | "ansi-regex": "2.1.1" 203 | } 204 | }, 205 | "supports-color": { 206 | "version": "2.0.0", 207 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 208 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 209 | "dev": true 210 | } 211 | } 212 | }, 213 | "balanced-match": { 214 | "version": "1.0.0", 215 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 216 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 217 | "dev": true 218 | }, 219 | "base64-js": { 220 | "version": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", 221 | "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg=" 222 | }, 223 | "boom": { 224 | "version": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", 225 | "integrity": "sha1-fllGkmTq3bdP7fvBsWUk1pppRXc=", 226 | "dev": true, 227 | "requires": { 228 | "hoek": "4.2.1" 229 | }, 230 | "dependencies": { 231 | "hoek": { 232 | "version": "4.2.1", 233 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 234 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 235 | "dev": true 236 | } 237 | } 238 | }, 239 | "bossy": { 240 | "version": "3.0.4", 241 | "resolved": "https://registry.npmjs.org/bossy/-/bossy-3.0.4.tgz", 242 | "integrity": "sha1-+a6fJugbQaMY9O4Ng2huSlwlB7k=", 243 | "dev": true, 244 | "requires": { 245 | "hoek": "4.2.1", 246 | "joi": "10.6.0" 247 | }, 248 | "dependencies": { 249 | "hoek": { 250 | "version": "4.2.1", 251 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 252 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 253 | "dev": true 254 | }, 255 | "joi": { 256 | "version": "10.6.0", 257 | "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", 258 | "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", 259 | "dev": true, 260 | "requires": { 261 | "hoek": "4.2.1", 262 | "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", 263 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 264 | "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" 265 | } 266 | } 267 | } 268 | }, 269 | "brace-expansion": { 270 | "version": "1.1.11", 271 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 272 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 273 | "dev": true, 274 | "requires": { 275 | "balanced-match": "1.0.0", 276 | "concat-map": "0.0.1" 277 | } 278 | }, 279 | "buffer": { 280 | "version": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", 281 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", 282 | "requires": { 283 | "base64-js": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", 284 | "ieee754": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", 285 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 286 | } 287 | }, 288 | "buffer-from": { 289 | "version": "1.0.0", 290 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", 291 | "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", 292 | "dev": true 293 | }, 294 | "call": { 295 | "version": "https://registry.npmjs.org/call/-/call-3.0.3.tgz", 296 | "integrity": "sha1-5HSN27t/Qa5AzuBV+LJwtzO/fI0=", 297 | "dev": true, 298 | "requires": { 299 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 300 | "hoek": "4.2.1" 301 | }, 302 | "dependencies": { 303 | "boom": { 304 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 305 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 306 | "dev": true, 307 | "requires": { 308 | "hoek": "4.2.1" 309 | } 310 | }, 311 | "hoek": { 312 | "version": "4.2.1", 313 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 314 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 315 | "dev": true 316 | } 317 | } 318 | }, 319 | "caller-path": { 320 | "version": "0.1.0", 321 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 322 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 323 | "dev": true, 324 | "requires": { 325 | "callsites": "0.2.0" 326 | } 327 | }, 328 | "callsites": { 329 | "version": "0.2.0", 330 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 331 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 332 | "dev": true 333 | }, 334 | "catbox": { 335 | "version": "https://registry.npmjs.org/catbox/-/catbox-7.1.2.tgz", 336 | "integrity": "sha1-RnIbHJmWdRP9e36UUXBqBe3+1a0=", 337 | "dev": true, 338 | "requires": { 339 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 340 | "hoek": "4.2.1", 341 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz" 342 | }, 343 | "dependencies": { 344 | "boom": { 345 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 346 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 347 | "dev": true, 348 | "requires": { 349 | "hoek": "4.2.1" 350 | } 351 | }, 352 | "hoek": { 353 | "version": "4.2.1", 354 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 355 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 356 | "dev": true 357 | } 358 | } 359 | }, 360 | "catbox-memory": { 361 | "version": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.3.tgz", 362 | "integrity": "sha1-36qcFj+tND2a3W18H9x7Qps2nDg=", 363 | "dev": true, 364 | "requires": { 365 | "hoek": "4.2.1" 366 | }, 367 | "dependencies": { 368 | "hoek": { 369 | "version": "4.2.1", 370 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 371 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 372 | "dev": true 373 | } 374 | } 375 | }, 376 | "center-align": { 377 | "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 378 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 379 | "optional": true, 380 | "requires": { 381 | "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 382 | "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" 383 | } 384 | }, 385 | "chalk": { 386 | "version": "2.4.1", 387 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 388 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 389 | "dev": true, 390 | "requires": { 391 | "ansi-styles": "3.2.1", 392 | "escape-string-regexp": "1.0.5", 393 | "supports-color": "5.4.0" 394 | }, 395 | "dependencies": { 396 | "ansi-styles": { 397 | "version": "3.2.1", 398 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 399 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 400 | "dev": true, 401 | "requires": { 402 | "color-convert": "1.9.1" 403 | } 404 | }, 405 | "supports-color": { 406 | "version": "5.4.0", 407 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 408 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 409 | "dev": true, 410 | "requires": { 411 | "has-flag": "3.0.0" 412 | } 413 | } 414 | } 415 | }, 416 | "chardet": { 417 | "version": "0.4.2", 418 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 419 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", 420 | "dev": true 421 | }, 422 | "circular-json": { 423 | "version": "0.3.3", 424 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 425 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 426 | "dev": true 427 | }, 428 | "cli-cursor": { 429 | "version": "2.1.0", 430 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 431 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 432 | "dev": true, 433 | "requires": { 434 | "restore-cursor": "2.0.0" 435 | } 436 | }, 437 | "cli-width": { 438 | "version": "2.2.0", 439 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 440 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 441 | "dev": true 442 | }, 443 | "co": { 444 | "version": "4.6.0", 445 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 446 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 447 | "dev": true 448 | }, 449 | "code": { 450 | "version": "https://registry.npmjs.org/code/-/code-3.0.2.tgz", 451 | "integrity": "sha1-cyZccBWdvOKwI8j7aGPnt2cEpPw=", 452 | "dev": true, 453 | "requires": { 454 | "hoek": "4.2.1" 455 | }, 456 | "dependencies": { 457 | "hoek": { 458 | "version": "4.2.1", 459 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 460 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 461 | "dev": true 462 | } 463 | } 464 | }, 465 | "color-convert": { 466 | "version": "1.9.1", 467 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 468 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", 469 | "dev": true, 470 | "requires": { 471 | "color-name": "1.1.3" 472 | } 473 | }, 474 | "color-name": { 475 | "version": "1.1.3", 476 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 477 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 478 | "dev": true 479 | }, 480 | "concat-map": { 481 | "version": "0.0.1", 482 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 483 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 484 | "dev": true 485 | }, 486 | "concat-stream": { 487 | "version": "1.6.2", 488 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 489 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 490 | "dev": true, 491 | "requires": { 492 | "buffer-from": "1.0.0", 493 | "inherits": "2.0.3", 494 | "readable-stream": "2.3.6", 495 | "typedarray": "0.0.6" 496 | } 497 | }, 498 | "content": { 499 | "version": "https://registry.npmjs.org/content/-/content-3.0.2.tgz", 500 | "integrity": "sha1-8di0w6uyHqTA4hc/Q6wCKaTtbRw=", 501 | "dev": true, 502 | "requires": { 503 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz" 504 | }, 505 | "dependencies": { 506 | "boom": { 507 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 508 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 509 | "dev": true, 510 | "requires": { 511 | "hoek": "4.2.1" 512 | }, 513 | "dependencies": { 514 | "hoek": { 515 | "version": "4.2.1", 516 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 517 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 518 | "dev": true 519 | } 520 | } 521 | } 522 | } 523 | }, 524 | "core-util-is": { 525 | "version": "1.0.2", 526 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 527 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 528 | "dev": true 529 | }, 530 | "cross-spawn": { 531 | "version": "5.1.0", 532 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 533 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 534 | "dev": true, 535 | "requires": { 536 | "lru-cache": "4.1.2", 537 | "shebang-command": "1.2.0", 538 | "which": "1.3.0" 539 | } 540 | }, 541 | "cryptiles": { 542 | "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.1.tgz", 543 | "integrity": "sha1-hqkgP3NnoOkyS8dVX/D89fgZee4=", 544 | "dev": true, 545 | "requires": { 546 | "boom": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz" 547 | } 548 | }, 549 | "crypto-browserify": { 550 | "version": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", 551 | "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=" 552 | }, 553 | "debug": { 554 | "version": "3.1.0", 555 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 556 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 557 | "dev": true, 558 | "requires": { 559 | "ms": "2.0.0" 560 | } 561 | }, 562 | "deep-is": { 563 | "version": "0.1.3", 564 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 565 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 566 | "dev": true 567 | }, 568 | "del": { 569 | "version": "2.2.2", 570 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 571 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 572 | "dev": true, 573 | "requires": { 574 | "globby": "5.0.0", 575 | "is-path-cwd": "1.0.0", 576 | "is-path-in-cwd": "1.0.1", 577 | "object-assign": "4.1.1", 578 | "pify": "2.3.0", 579 | "pinkie-promise": "2.0.1", 580 | "rimraf": "2.6.2" 581 | } 582 | }, 583 | "diff": { 584 | "version": "3.5.0", 585 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 586 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 587 | "dev": true 588 | }, 589 | "doctrine": { 590 | "version": "2.1.0", 591 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 592 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 593 | "dev": true, 594 | "requires": { 595 | "esutils": "2.0.2" 596 | } 597 | }, 598 | "escape-string-regexp": { 599 | "version": "1.0.5", 600 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 601 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 602 | "dev": true 603 | }, 604 | "eslint": { 605 | "version": "4.19.1", 606 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", 607 | "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", 608 | "dev": true, 609 | "requires": { 610 | "ajv": "5.5.2", 611 | "babel-code-frame": "6.26.0", 612 | "chalk": "2.4.1", 613 | "concat-stream": "1.6.2", 614 | "cross-spawn": "5.1.0", 615 | "debug": "3.1.0", 616 | "doctrine": "2.1.0", 617 | "eslint-scope": "3.7.1", 618 | "eslint-visitor-keys": "1.0.0", 619 | "espree": "3.5.4", 620 | "esquery": "1.0.1", 621 | "esutils": "2.0.2", 622 | "file-entry-cache": "2.0.0", 623 | "functional-red-black-tree": "1.0.1", 624 | "glob": "7.1.2", 625 | "globals": "11.5.0", 626 | "ignore": "3.3.8", 627 | "imurmurhash": "0.1.4", 628 | "inquirer": "3.3.0", 629 | "is-resolvable": "1.1.0", 630 | "js-yaml": "3.11.0", 631 | "json-stable-stringify-without-jsonify": "1.0.1", 632 | "levn": "0.3.0", 633 | "lodash": "4.17.10", 634 | "minimatch": "3.0.4", 635 | "mkdirp": "0.5.1", 636 | "natural-compare": "1.4.0", 637 | "optionator": "0.8.2", 638 | "path-is-inside": "1.0.2", 639 | "pluralize": "7.0.0", 640 | "progress": "2.0.0", 641 | "regexpp": "1.1.0", 642 | "require-uncached": "1.0.3", 643 | "semver": "5.5.0", 644 | "strip-ansi": "4.0.0", 645 | "strip-json-comments": "2.0.1", 646 | "table": "4.0.2", 647 | "text-table": "0.2.0" 648 | }, 649 | "dependencies": { 650 | "lodash": { 651 | "version": "4.17.10", 652 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 653 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", 654 | "dev": true 655 | } 656 | } 657 | }, 658 | "eslint-config-hapi": { 659 | "version": "10.1.0", 660 | "resolved": "https://registry.npmjs.org/eslint-config-hapi/-/eslint-config-hapi-10.1.0.tgz", 661 | "integrity": "sha512-tAUedyvZla1qKt6jhOx7mj5tYDVCwdSyImpEK7wk/A/atKUjg18aHUK6Q6qWWM6rq21I1F/A8JAhIpkk0SvFMQ==", 662 | "dev": true 663 | }, 664 | "eslint-plugin-hapi": { 665 | "version": "4.1.0", 666 | "resolved": "https://registry.npmjs.org/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz", 667 | "integrity": "sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ==", 668 | "dev": true, 669 | "requires": { 670 | "hapi-capitalize-modules": "1.1.6", 671 | "hapi-for-you": "1.0.0", 672 | "hapi-no-var": "1.0.1", 673 | "hapi-scope-start": "2.1.1", 674 | "no-arrowception": "1.0.0" 675 | } 676 | }, 677 | "eslint-scope": { 678 | "version": "3.7.1", 679 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 680 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 681 | "dev": true, 682 | "requires": { 683 | "esrecurse": "4.2.1", 684 | "estraverse": "4.2.0" 685 | } 686 | }, 687 | "eslint-visitor-keys": { 688 | "version": "1.0.0", 689 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 690 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 691 | "dev": true 692 | }, 693 | "espree": { 694 | "version": "3.5.4", 695 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", 696 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", 697 | "dev": true, 698 | "requires": { 699 | "acorn": "5.5.3", 700 | "acorn-jsx": "3.0.1" 701 | } 702 | }, 703 | "esprima": { 704 | "version": "4.0.0", 705 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 706 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 707 | "dev": true 708 | }, 709 | "esquery": { 710 | "version": "1.0.1", 711 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 712 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 713 | "dev": true, 714 | "requires": { 715 | "estraverse": "4.2.0" 716 | } 717 | }, 718 | "esrecurse": { 719 | "version": "4.2.1", 720 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 721 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 722 | "dev": true, 723 | "requires": { 724 | "estraverse": "4.2.0" 725 | } 726 | }, 727 | "estraverse": { 728 | "version": "4.2.0", 729 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 730 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 731 | "dev": true 732 | }, 733 | "esutils": { 734 | "version": "2.0.2", 735 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 736 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 737 | "dev": true 738 | }, 739 | "external-editor": { 740 | "version": "2.2.0", 741 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", 742 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", 743 | "dev": true, 744 | "requires": { 745 | "chardet": "0.4.2", 746 | "iconv-lite": "0.4.21", 747 | "tmp": "0.0.33" 748 | } 749 | }, 750 | "fast-deep-equal": { 751 | "version": "1.1.0", 752 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 753 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", 754 | "dev": true 755 | }, 756 | "fast-json-stable-stringify": { 757 | "version": "2.0.0", 758 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 759 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 760 | "dev": true 761 | }, 762 | "fast-levenshtein": { 763 | "version": "2.0.6", 764 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 765 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 766 | "dev": true 767 | }, 768 | "figures": { 769 | "version": "2.0.0", 770 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 771 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 772 | "dev": true, 773 | "requires": { 774 | "escape-string-regexp": "1.0.5" 775 | } 776 | }, 777 | "file-entry-cache": { 778 | "version": "2.0.0", 779 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 780 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 781 | "dev": true, 782 | "requires": { 783 | "flat-cache": "1.3.0", 784 | "object-assign": "4.1.1" 785 | } 786 | }, 787 | "find-rc": { 788 | "version": "3.0.1", 789 | "resolved": "https://registry.npmjs.org/find-rc/-/find-rc-3.0.1.tgz", 790 | "integrity": "sha1-VKQXg3DxC8k3H6jRssKAmir6DM4=", 791 | "dev": true 792 | }, 793 | "flat-cache": { 794 | "version": "1.3.0", 795 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", 796 | "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", 797 | "dev": true, 798 | "requires": { 799 | "circular-json": "0.3.3", 800 | "del": "2.2.2", 801 | "graceful-fs": "4.1.11", 802 | "write": "0.2.1" 803 | } 804 | }, 805 | "fs.realpath": { 806 | "version": "1.0.0", 807 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 808 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 809 | "dev": true 810 | }, 811 | "functional-red-black-tree": { 812 | "version": "1.0.1", 813 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 814 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 815 | "dev": true 816 | }, 817 | "glob": { 818 | "version": "7.1.2", 819 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 820 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 821 | "dev": true, 822 | "requires": { 823 | "fs.realpath": "1.0.0", 824 | "inflight": "1.0.6", 825 | "inherits": "2.0.3", 826 | "minimatch": "3.0.4", 827 | "once": "1.4.0", 828 | "path-is-absolute": "1.0.1" 829 | } 830 | }, 831 | "globals": { 832 | "version": "11.5.0", 833 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", 834 | "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", 835 | "dev": true 836 | }, 837 | "globby": { 838 | "version": "5.0.0", 839 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 840 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 841 | "dev": true, 842 | "requires": { 843 | "array-union": "1.0.2", 844 | "arrify": "1.0.1", 845 | "glob": "7.1.2", 846 | "object-assign": "4.1.1", 847 | "pify": "2.3.0", 848 | "pinkie-promise": "2.0.1" 849 | } 850 | }, 851 | "graceful-fs": { 852 | "version": "4.1.11", 853 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 854 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 855 | "dev": true 856 | }, 857 | "handlebars": { 858 | "version": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.5.tgz", 859 | "integrity": "sha1-ksbta7FkEQxQ1NjQ+93HCAbG+Oc=", 860 | "requires": { 861 | "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 862 | "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 863 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 864 | "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz" 865 | }, 866 | "dependencies": { 867 | "uglify-js": { 868 | "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz", 869 | "integrity": "sha1-9QvoikLNOWpiUdxSqzcvccwS/vA=", 870 | "optional": true, 871 | "requires": { 872 | "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 873 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz", 874 | "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 875 | "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" 876 | }, 877 | "dependencies": { 878 | "async": { 879 | "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 880 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 881 | "optional": true 882 | }, 883 | "source-map": { 884 | "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz", 885 | "integrity": "sha1-gmdLhacbC+dsPnQW0V6fUlLrO+A=", 886 | "optional": true 887 | }, 888 | "uglify-to-browserify": { 889 | "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 890 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 891 | "optional": true 892 | } 893 | } 894 | }, 895 | "wordwrap": { 896 | "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 897 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 898 | "optional": true 899 | }, 900 | "yargs": { 901 | "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 902 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 903 | "optional": true, 904 | "requires": { 905 | "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 906 | "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 907 | "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 908 | "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" 909 | }, 910 | "dependencies": { 911 | "camelcase": { 912 | "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 913 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 914 | "optional": true 915 | }, 916 | "cliui": { 917 | "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 918 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 919 | "optional": true, 920 | "requires": { 921 | "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 922 | "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 923 | "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" 924 | } 925 | }, 926 | "decamelize": { 927 | "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 928 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 929 | "optional": true 930 | }, 931 | "window-size": { 932 | "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 933 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 934 | "optional": true 935 | } 936 | } 937 | } 938 | } 939 | }, 940 | "hapi": { 941 | "version": "https://registry.npmjs.org/hapi/-/hapi-15.0.3.tgz", 942 | "integrity": "sha1-tROmR3H5Fd6FDS/0W7N5Zh1BUVM=", 943 | "dev": true, 944 | "requires": { 945 | "accept": "https://registry.npmjs.org/accept/-/accept-2.1.3.tgz", 946 | "ammo": "https://registry.npmjs.org/ammo/-/ammo-2.0.2.tgz", 947 | "boom": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", 948 | "call": "https://registry.npmjs.org/call/-/call-3.0.3.tgz", 949 | "catbox": "https://registry.npmjs.org/catbox/-/catbox-7.1.2.tgz", 950 | "catbox-memory": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.3.tgz", 951 | "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.1.tgz", 952 | "heavy": "https://registry.npmjs.org/heavy/-/heavy-4.0.2.tgz", 953 | "hoek": "4.2.1", 954 | "iron": "https://registry.npmjs.org/iron/-/iron-4.0.4.tgz", 955 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 956 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz", 957 | "mimos": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", 958 | "podium": "https://registry.npmjs.org/podium/-/podium-1.2.3.tgz", 959 | "shot": "https://registry.npmjs.org/shot/-/shot-3.3.2.tgz", 960 | "statehood": "https://registry.npmjs.org/statehood/-/statehood-5.0.0.tgz", 961 | "subtext": "https://registry.npmjs.org/subtext/-/subtext-4.2.1.tgz", 962 | "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" 963 | }, 964 | "dependencies": { 965 | "hoek": { 966 | "version": "4.2.1", 967 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 968 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 969 | "dev": true 970 | } 971 | } 972 | }, 973 | "hapi-capitalize-modules": { 974 | "version": "1.1.6", 975 | "resolved": "https://registry.npmjs.org/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz", 976 | "integrity": "sha1-eZEXFBXhXmqjIx5k3ac8gUZmUxg=", 977 | "dev": true 978 | }, 979 | "hapi-for-you": { 980 | "version": "1.0.0", 981 | "resolved": "https://registry.npmjs.org/hapi-for-you/-/hapi-for-you-1.0.0.tgz", 982 | "integrity": "sha1-02L77o172pwseAHiB+WlzRoLans=", 983 | "dev": true 984 | }, 985 | "hapi-no-var": { 986 | "version": "1.0.1", 987 | "resolved": "https://registry.npmjs.org/hapi-no-var/-/hapi-no-var-1.0.1.tgz", 988 | "integrity": "sha512-kk2xyyTzI+eQ/oA1rO4eVdCpYsrPHVERHa6+mTHD08XXFLaAkkaEs6reMg1VyqGh2o5xPt//DO4EhCacLx/cRA==", 989 | "dev": true 990 | }, 991 | "hapi-scope-start": { 992 | "version": "2.1.1", 993 | "resolved": "https://registry.npmjs.org/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz", 994 | "integrity": "sha1-dJWnJv5yt7yo3izcwdh82M5qtPI=", 995 | "dev": true 996 | }, 997 | "has-ansi": { 998 | "version": "2.0.0", 999 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1000 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1001 | "dev": true, 1002 | "requires": { 1003 | "ansi-regex": "2.1.1" 1004 | } 1005 | }, 1006 | "has-flag": { 1007 | "version": "3.0.0", 1008 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1009 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1010 | "dev": true 1011 | }, 1012 | "heavy": { 1013 | "version": "https://registry.npmjs.org/heavy/-/heavy-4.0.2.tgz", 1014 | "integrity": "sha1-27Zs2l8BellPxsgwHfaZnqjVM/A=", 1015 | "dev": true, 1016 | "requires": { 1017 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1018 | "hoek": "4.2.1", 1019 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz" 1020 | }, 1021 | "dependencies": { 1022 | "boom": { 1023 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1024 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 1025 | "dev": true, 1026 | "requires": { 1027 | "hoek": "4.2.1" 1028 | } 1029 | }, 1030 | "hoek": { 1031 | "version": "4.2.1", 1032 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1033 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1034 | "dev": true 1035 | } 1036 | } 1037 | }, 1038 | "hoek": { 1039 | "version": "5.0.3", 1040 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.3.tgz", 1041 | "integrity": "sha512-Bmr56pxML1c9kU+NS51SMFkiVQAb+9uFfXwyqR2tn4w2FPvmPt65eZ9aCcEfRXd9G74HkZnILC6p967pED4aiw==" 1042 | }, 1043 | "iconv-lite": { 1044 | "version": "0.4.21", 1045 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", 1046 | "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", 1047 | "dev": true, 1048 | "requires": { 1049 | "safer-buffer": "2.1.2" 1050 | } 1051 | }, 1052 | "ieee754": { 1053 | "version": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", 1054 | "integrity": "sha1-LhATIZxtZxKXPsVNmB7BnlV53pc=" 1055 | }, 1056 | "ignore": { 1057 | "version": "3.3.8", 1058 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", 1059 | "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", 1060 | "dev": true 1061 | }, 1062 | "imurmurhash": { 1063 | "version": "0.1.4", 1064 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1065 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1066 | "dev": true 1067 | }, 1068 | "inflight": { 1069 | "version": "1.0.6", 1070 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1071 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1072 | "dev": true, 1073 | "requires": { 1074 | "once": "1.4.0", 1075 | "wrappy": "1.0.2" 1076 | } 1077 | }, 1078 | "inherits": { 1079 | "version": "2.0.3", 1080 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1081 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1082 | "dev": true 1083 | }, 1084 | "inquirer": { 1085 | "version": "3.3.0", 1086 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", 1087 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", 1088 | "dev": true, 1089 | "requires": { 1090 | "ansi-escapes": "3.1.0", 1091 | "chalk": "2.4.1", 1092 | "cli-cursor": "2.1.0", 1093 | "cli-width": "2.2.0", 1094 | "external-editor": "2.2.0", 1095 | "figures": "2.0.0", 1096 | "lodash": "4.17.10", 1097 | "mute-stream": "0.0.7", 1098 | "run-async": "2.3.0", 1099 | "rx-lite": "4.0.8", 1100 | "rx-lite-aggregates": "4.0.8", 1101 | "string-width": "2.1.1", 1102 | "strip-ansi": "4.0.0", 1103 | "through": "2.3.8" 1104 | }, 1105 | "dependencies": { 1106 | "lodash": { 1107 | "version": "4.17.10", 1108 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 1109 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", 1110 | "dev": true 1111 | } 1112 | } 1113 | }, 1114 | "iron": { 1115 | "version": "https://registry.npmjs.org/iron/-/iron-4.0.4.tgz", 1116 | "integrity": "sha1-wfjMTJFFQZSriSDZJHuoguUoBho=", 1117 | "dev": true, 1118 | "requires": { 1119 | "boom": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", 1120 | "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.1.tgz", 1121 | "hoek": "4.2.1" 1122 | }, 1123 | "dependencies": { 1124 | "hoek": { 1125 | "version": "4.2.1", 1126 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1127 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1128 | "dev": true 1129 | } 1130 | } 1131 | }, 1132 | "is-buffer": { 1133 | "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz", 1134 | "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=" 1135 | }, 1136 | "is-fullwidth-code-point": { 1137 | "version": "2.0.0", 1138 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1139 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1140 | "dev": true 1141 | }, 1142 | "is-path-cwd": { 1143 | "version": "1.0.0", 1144 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 1145 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 1146 | "dev": true 1147 | }, 1148 | "is-path-in-cwd": { 1149 | "version": "1.0.1", 1150 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", 1151 | "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", 1152 | "dev": true, 1153 | "requires": { 1154 | "is-path-inside": "1.0.1" 1155 | } 1156 | }, 1157 | "is-path-inside": { 1158 | "version": "1.0.1", 1159 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1160 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1161 | "dev": true, 1162 | "requires": { 1163 | "path-is-inside": "1.0.2" 1164 | } 1165 | }, 1166 | "is-promise": { 1167 | "version": "2.1.0", 1168 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1169 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1170 | "dev": true 1171 | }, 1172 | "is-resolvable": { 1173 | "version": "1.1.0", 1174 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1175 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1176 | "dev": true 1177 | }, 1178 | "isarray": { 1179 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1180 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1181 | }, 1182 | "isemail": { 1183 | "version": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", 1184 | "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", 1185 | "dev": true 1186 | }, 1187 | "isexe": { 1188 | "version": "2.0.0", 1189 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1190 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1191 | "dev": true 1192 | }, 1193 | "items": { 1194 | "version": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 1195 | "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", 1196 | "dev": true 1197 | }, 1198 | "jmespath": { 1199 | "version": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", 1200 | "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" 1201 | }, 1202 | "joi": { 1203 | "version": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz", 1204 | "integrity": "sha1-iNZIkJFavrEnzXVwJxFtUN8+aN8=", 1205 | "dev": true, 1206 | "requires": { 1207 | "hoek": "4.2.1", 1208 | "isemail": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", 1209 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 1210 | "moment": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", 1211 | "topo": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz" 1212 | }, 1213 | "dependencies": { 1214 | "hoek": { 1215 | "version": "4.2.1", 1216 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1217 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1218 | "dev": true 1219 | } 1220 | } 1221 | }, 1222 | "js-tokens": { 1223 | "version": "3.0.2", 1224 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1225 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1226 | "dev": true 1227 | }, 1228 | "js-yaml": { 1229 | "version": "3.11.0", 1230 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", 1231 | "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", 1232 | "dev": true, 1233 | "requires": { 1234 | "argparse": "1.0.10", 1235 | "esprima": "4.0.0" 1236 | } 1237 | }, 1238 | "json-schema-traverse": { 1239 | "version": "0.3.1", 1240 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 1241 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 1242 | "dev": true 1243 | }, 1244 | "json-stable-stringify": { 1245 | "version": "1.0.1", 1246 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 1247 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 1248 | "dev": true, 1249 | "requires": { 1250 | "jsonify": "0.0.0" 1251 | } 1252 | }, 1253 | "json-stable-stringify-without-jsonify": { 1254 | "version": "1.0.1", 1255 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1256 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1257 | "dev": true 1258 | }, 1259 | "json-stringify-safe": { 1260 | "version": "5.0.1", 1261 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1262 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 1263 | "dev": true 1264 | }, 1265 | "jsonify": { 1266 | "version": "0.0.0", 1267 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1268 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1269 | "dev": true 1270 | }, 1271 | "kind-of": { 1272 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.3.tgz", 1273 | "integrity": "sha1-xhYIdH2BWwNiVW2zJ2Nip6OK3tM=", 1274 | "requires": { 1275 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" 1276 | } 1277 | }, 1278 | "lab": { 1279 | "version": "14.3.4", 1280 | "resolved": "https://registry.npmjs.org/lab/-/lab-14.3.4.tgz", 1281 | "integrity": "sha512-IFnuYVRd6CtnFTFgUbjPCFrrCIked5BvGH/dX+/h+6pi3IrQrK21JsKy/J1CshEm6sMe980+oswtK8lZCusHSA==", 1282 | "dev": true, 1283 | "requires": { 1284 | "bossy": "3.0.4", 1285 | "code": "4.1.0", 1286 | "diff": "3.5.0", 1287 | "eslint": "4.19.1", 1288 | "eslint-config-hapi": "10.1.0", 1289 | "eslint-plugin-hapi": "4.1.0", 1290 | "espree": "3.5.4", 1291 | "find-rc": "3.0.1", 1292 | "handlebars": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.5.tgz", 1293 | "hoek": "4.2.1", 1294 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 1295 | "json-stable-stringify": "1.0.1", 1296 | "json-stringify-safe": "5.0.1", 1297 | "mkdirp": "0.5.1", 1298 | "seedrandom": "2.4.3", 1299 | "source-map": "0.6.1", 1300 | "source-map-support": "0.4.18", 1301 | "supports-color": "4.4.0" 1302 | }, 1303 | "dependencies": { 1304 | "code": { 1305 | "version": "4.1.0", 1306 | "resolved": "https://registry.npmjs.org/code/-/code-4.1.0.tgz", 1307 | "integrity": "sha1-IJrRHQWvigwceq9pTZ+k0sfZW4U=", 1308 | "dev": true, 1309 | "requires": { 1310 | "hoek": "4.2.1" 1311 | } 1312 | }, 1313 | "hoek": { 1314 | "version": "4.2.1", 1315 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1316 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1317 | "dev": true 1318 | }, 1319 | "source-map": { 1320 | "version": "0.6.1", 1321 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1322 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1323 | "dev": true 1324 | } 1325 | } 1326 | }, 1327 | "lazy-cache": { 1328 | "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 1329 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 1330 | "optional": true 1331 | }, 1332 | "levn": { 1333 | "version": "0.3.0", 1334 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1335 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1336 | "dev": true, 1337 | "requires": { 1338 | "prelude-ls": "1.1.2", 1339 | "type-check": "0.3.2" 1340 | } 1341 | }, 1342 | "lodash": { 1343 | "version": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", 1344 | "integrity": "sha1-Gbs/TVEnjwuMgY7RRcdOz5/kDm0=" 1345 | }, 1346 | "longest": { 1347 | "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 1348 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" 1349 | }, 1350 | "lru-cache": { 1351 | "version": "4.1.2", 1352 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", 1353 | "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", 1354 | "dev": true, 1355 | "requires": { 1356 | "pseudomap": "1.0.2", 1357 | "yallist": "2.1.2" 1358 | } 1359 | }, 1360 | "mime-db": { 1361 | "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", 1362 | "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=", 1363 | "dev": true 1364 | }, 1365 | "mimic-fn": { 1366 | "version": "1.2.0", 1367 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1368 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1369 | "dev": true 1370 | }, 1371 | "mimos": { 1372 | "version": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", 1373 | "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", 1374 | "dev": true, 1375 | "requires": { 1376 | "hoek": "4.2.1", 1377 | "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" 1378 | }, 1379 | "dependencies": { 1380 | "hoek": { 1381 | "version": "4.2.1", 1382 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1383 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1384 | "dev": true 1385 | } 1386 | } 1387 | }, 1388 | "minimatch": { 1389 | "version": "3.0.4", 1390 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1391 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1392 | "dev": true, 1393 | "requires": { 1394 | "brace-expansion": "1.1.11" 1395 | } 1396 | }, 1397 | "minimist": { 1398 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1399 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 1400 | }, 1401 | "mkdirp": { 1402 | "version": "0.5.1", 1403 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1404 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1405 | "dev": true, 1406 | "requires": { 1407 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 1408 | } 1409 | }, 1410 | "moment": { 1411 | "version": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", 1412 | "integrity": "sha1-s1snxH5X7S3ccAU9awe+zbKRdBw=", 1413 | "dev": true 1414 | }, 1415 | "ms": { 1416 | "version": "2.0.0", 1417 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1418 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1419 | "dev": true 1420 | }, 1421 | "mute-stream": { 1422 | "version": "0.0.7", 1423 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1424 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1425 | "dev": true 1426 | }, 1427 | "natural-compare": { 1428 | "version": "1.4.0", 1429 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1430 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1431 | "dev": true 1432 | }, 1433 | "nigel": { 1434 | "version": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", 1435 | "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", 1436 | "dev": true, 1437 | "requires": { 1438 | "hoek": "4.2.1", 1439 | "vise": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz" 1440 | }, 1441 | "dependencies": { 1442 | "hoek": { 1443 | "version": "4.2.1", 1444 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1445 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1446 | "dev": true 1447 | } 1448 | } 1449 | }, 1450 | "no-arrowception": { 1451 | "version": "1.0.0", 1452 | "resolved": "https://registry.npmjs.org/no-arrowception/-/no-arrowception-1.0.0.tgz", 1453 | "integrity": "sha1-W/PpXrnEG1c4SoBTM9qjtzTuMno=", 1454 | "dev": true 1455 | }, 1456 | "object-assign": { 1457 | "version": "4.1.1", 1458 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1459 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1460 | "dev": true 1461 | }, 1462 | "once": { 1463 | "version": "1.4.0", 1464 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1465 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1466 | "dev": true, 1467 | "requires": { 1468 | "wrappy": "1.0.2" 1469 | } 1470 | }, 1471 | "onetime": { 1472 | "version": "2.0.1", 1473 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1474 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1475 | "dev": true, 1476 | "requires": { 1477 | "mimic-fn": "1.2.0" 1478 | } 1479 | }, 1480 | "optimist": { 1481 | "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 1482 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 1483 | "requires": { 1484 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1485 | "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" 1486 | }, 1487 | "dependencies": { 1488 | "wordwrap": { 1489 | "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 1490 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 1491 | } 1492 | } 1493 | }, 1494 | "optionator": { 1495 | "version": "0.8.2", 1496 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 1497 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1498 | "dev": true, 1499 | "requires": { 1500 | "deep-is": "0.1.3", 1501 | "fast-levenshtein": "2.0.6", 1502 | "levn": "0.3.0", 1503 | "prelude-ls": "1.1.2", 1504 | "type-check": "0.3.2", 1505 | "wordwrap": "1.0.0" 1506 | } 1507 | }, 1508 | "os-tmpdir": { 1509 | "version": "1.0.2", 1510 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1511 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1512 | "dev": true 1513 | }, 1514 | "path-is-absolute": { 1515 | "version": "1.0.1", 1516 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1517 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1518 | "dev": true 1519 | }, 1520 | "path-is-inside": { 1521 | "version": "1.0.2", 1522 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1523 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1524 | "dev": true 1525 | }, 1526 | "pez": { 1527 | "version": "https://registry.npmjs.org/pez/-/pez-2.1.2.tgz", 1528 | "integrity": "sha1-0dEjcXkqVYluI+IeUJxAle0IHbI=", 1529 | "dev": true, 1530 | "requires": { 1531 | "b64": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", 1532 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1533 | "content": "https://registry.npmjs.org/content/-/content-3.0.2.tgz", 1534 | "hoek": "4.2.1", 1535 | "nigel": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz" 1536 | }, 1537 | "dependencies": { 1538 | "boom": { 1539 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1540 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 1541 | "dev": true, 1542 | "requires": { 1543 | "hoek": "4.2.1" 1544 | } 1545 | }, 1546 | "hoek": { 1547 | "version": "4.2.1", 1548 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1549 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1550 | "dev": true 1551 | } 1552 | } 1553 | }, 1554 | "pify": { 1555 | "version": "2.3.0", 1556 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1557 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1558 | "dev": true 1559 | }, 1560 | "pinkie": { 1561 | "version": "2.0.4", 1562 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1563 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1564 | "dev": true 1565 | }, 1566 | "pinkie-promise": { 1567 | "version": "2.0.1", 1568 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1569 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1570 | "dev": true, 1571 | "requires": { 1572 | "pinkie": "2.0.4" 1573 | } 1574 | }, 1575 | "pluralize": { 1576 | "version": "7.0.0", 1577 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 1578 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 1579 | "dev": true 1580 | }, 1581 | "podium": { 1582 | "version": "https://registry.npmjs.org/podium/-/podium-1.2.3.tgz", 1583 | "integrity": "sha1-XJW3zC9ch90yTgrUqTY6xi1ms3E=", 1584 | "dev": true, 1585 | "requires": { 1586 | "hoek": "4.2.1", 1587 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 1588 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz" 1589 | }, 1590 | "dependencies": { 1591 | "hoek": { 1592 | "version": "4.2.1", 1593 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1594 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1595 | "dev": true 1596 | } 1597 | } 1598 | }, 1599 | "prelude-ls": { 1600 | "version": "1.1.2", 1601 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1602 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1603 | "dev": true 1604 | }, 1605 | "process-nextick-args": { 1606 | "version": "2.0.0", 1607 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 1608 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 1609 | "dev": true 1610 | }, 1611 | "progress": { 1612 | "version": "2.0.0", 1613 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 1614 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 1615 | "dev": true 1616 | }, 1617 | "pseudomap": { 1618 | "version": "1.0.2", 1619 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1620 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1621 | "dev": true 1622 | }, 1623 | "readable-stream": { 1624 | "version": "2.3.6", 1625 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1626 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1627 | "dev": true, 1628 | "requires": { 1629 | "core-util-is": "1.0.2", 1630 | "inherits": "2.0.3", 1631 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1632 | "process-nextick-args": "2.0.0", 1633 | "safe-buffer": "5.1.2", 1634 | "string_decoder": "1.1.1", 1635 | "util-deprecate": "1.0.2" 1636 | } 1637 | }, 1638 | "regexpp": { 1639 | "version": "1.1.0", 1640 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", 1641 | "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", 1642 | "dev": true 1643 | }, 1644 | "repeat-string": { 1645 | "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz", 1646 | "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=" 1647 | }, 1648 | "require-uncached": { 1649 | "version": "1.0.3", 1650 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1651 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1652 | "dev": true, 1653 | "requires": { 1654 | "caller-path": "0.1.0", 1655 | "resolve-from": "1.0.1" 1656 | } 1657 | }, 1658 | "resolve-from": { 1659 | "version": "1.0.1", 1660 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1661 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1662 | "dev": true 1663 | }, 1664 | "restore-cursor": { 1665 | "version": "2.0.0", 1666 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1667 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1668 | "dev": true, 1669 | "requires": { 1670 | "onetime": "2.0.1", 1671 | "signal-exit": "3.0.2" 1672 | } 1673 | }, 1674 | "right-align": { 1675 | "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 1676 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1677 | "optional": true, 1678 | "requires": { 1679 | "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" 1680 | } 1681 | }, 1682 | "rimraf": { 1683 | "version": "2.6.2", 1684 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 1685 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 1686 | "dev": true, 1687 | "requires": { 1688 | "glob": "7.1.2" 1689 | } 1690 | }, 1691 | "run-async": { 1692 | "version": "2.3.0", 1693 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1694 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1695 | "dev": true, 1696 | "requires": { 1697 | "is-promise": "2.1.0" 1698 | } 1699 | }, 1700 | "rx-lite": { 1701 | "version": "4.0.8", 1702 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 1703 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 1704 | "dev": true 1705 | }, 1706 | "rx-lite-aggregates": { 1707 | "version": "4.0.8", 1708 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 1709 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 1710 | "dev": true, 1711 | "requires": { 1712 | "rx-lite": "4.0.8" 1713 | } 1714 | }, 1715 | "safe-buffer": { 1716 | "version": "5.1.2", 1717 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1718 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1719 | "dev": true 1720 | }, 1721 | "safer-buffer": { 1722 | "version": "2.1.2", 1723 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1724 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1725 | "dev": true 1726 | }, 1727 | "sax": { 1728 | "version": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", 1729 | "integrity": "sha1-HaUKjQDN7NWUBWWfX/hTSf53N0M=" 1730 | }, 1731 | "seedrandom": { 1732 | "version": "2.4.3", 1733 | "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", 1734 | "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=", 1735 | "dev": true 1736 | }, 1737 | "semver": { 1738 | "version": "5.5.0", 1739 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 1740 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 1741 | "dev": true 1742 | }, 1743 | "shebang-command": { 1744 | "version": "1.2.0", 1745 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1746 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1747 | "dev": true, 1748 | "requires": { 1749 | "shebang-regex": "1.0.0" 1750 | } 1751 | }, 1752 | "shebang-regex": { 1753 | "version": "1.0.0", 1754 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1755 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1756 | "dev": true 1757 | }, 1758 | "shot": { 1759 | "version": "https://registry.npmjs.org/shot/-/shot-3.3.2.tgz", 1760 | "integrity": "sha1-aRwmEXWd7MIEh7INJcwpnznl+bc=", 1761 | "dev": true, 1762 | "requires": { 1763 | "hoek": "4.2.1", 1764 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz" 1765 | }, 1766 | "dependencies": { 1767 | "hoek": { 1768 | "version": "4.2.1", 1769 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1770 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1771 | "dev": true 1772 | } 1773 | } 1774 | }, 1775 | "signal-exit": { 1776 | "version": "3.0.2", 1777 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1778 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1779 | "dev": true 1780 | }, 1781 | "slice-ansi": { 1782 | "version": "1.0.0", 1783 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 1784 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 1785 | "dev": true, 1786 | "requires": { 1787 | "is-fullwidth-code-point": "2.0.0" 1788 | } 1789 | }, 1790 | "source-map": { 1791 | "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 1792 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", 1793 | "requires": { 1794 | "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1795 | } 1796 | }, 1797 | "source-map-support": { 1798 | "version": "0.4.18", 1799 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1800 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1801 | "dev": true, 1802 | "requires": { 1803 | "source-map": "0.5.7" 1804 | }, 1805 | "dependencies": { 1806 | "source-map": { 1807 | "version": "0.5.7", 1808 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1809 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1810 | "dev": true 1811 | } 1812 | } 1813 | }, 1814 | "sprintf-js": { 1815 | "version": "1.0.3", 1816 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1817 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1818 | "dev": true 1819 | }, 1820 | "statehood": { 1821 | "version": "https://registry.npmjs.org/statehood/-/statehood-5.0.0.tgz", 1822 | "integrity": "sha1-ziKFqr6uOYrofLunRhhLdZm4+jE=", 1823 | "dev": true, 1824 | "requires": { 1825 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1826 | "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.1.tgz", 1827 | "hoek": "4.2.1", 1828 | "iron": "https://registry.npmjs.org/iron/-/iron-4.0.4.tgz", 1829 | "items": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 1830 | "joi": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz" 1831 | }, 1832 | "dependencies": { 1833 | "boom": { 1834 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1835 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 1836 | "dev": true, 1837 | "requires": { 1838 | "hoek": "4.2.1" 1839 | } 1840 | }, 1841 | "hoek": { 1842 | "version": "4.2.1", 1843 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1844 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1845 | "dev": true 1846 | } 1847 | } 1848 | }, 1849 | "string-width": { 1850 | "version": "2.1.1", 1851 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1852 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1853 | "dev": true, 1854 | "requires": { 1855 | "is-fullwidth-code-point": "2.0.0", 1856 | "strip-ansi": "4.0.0" 1857 | } 1858 | }, 1859 | "string_decoder": { 1860 | "version": "1.1.1", 1861 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1862 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1863 | "dev": true, 1864 | "requires": { 1865 | "safe-buffer": "5.1.2" 1866 | } 1867 | }, 1868 | "strip-ansi": { 1869 | "version": "4.0.0", 1870 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1871 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1872 | "dev": true, 1873 | "requires": { 1874 | "ansi-regex": "3.0.0" 1875 | }, 1876 | "dependencies": { 1877 | "ansi-regex": { 1878 | "version": "3.0.0", 1879 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1880 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1881 | "dev": true 1882 | } 1883 | } 1884 | }, 1885 | "strip-json-comments": { 1886 | "version": "2.0.1", 1887 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1888 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1889 | "dev": true 1890 | }, 1891 | "subtext": { 1892 | "version": "https://registry.npmjs.org/subtext/-/subtext-4.2.1.tgz", 1893 | "integrity": "sha1-7j5yVX9eXFmz+MFbaZ8bP5Wf2OA=", 1894 | "dev": true, 1895 | "requires": { 1896 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1897 | "content": "https://registry.npmjs.org/content/-/content-3.0.2.tgz", 1898 | "hoek": "4.2.1", 1899 | "pez": "https://registry.npmjs.org/pez/-/pez-2.1.2.tgz", 1900 | "wreck": "https://registry.npmjs.org/wreck/-/wreck-8.0.1.tgz" 1901 | }, 1902 | "dependencies": { 1903 | "boom": { 1904 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1905 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 1906 | "dev": true, 1907 | "requires": { 1908 | "hoek": "4.2.1" 1909 | } 1910 | }, 1911 | "hoek": { 1912 | "version": "4.2.1", 1913 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1914 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1915 | "dev": true 1916 | } 1917 | } 1918 | }, 1919 | "supports-color": { 1920 | "version": "4.4.0", 1921 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", 1922 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", 1923 | "dev": true, 1924 | "requires": { 1925 | "has-flag": "2.0.0" 1926 | }, 1927 | "dependencies": { 1928 | "has-flag": { 1929 | "version": "2.0.0", 1930 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1931 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 1932 | "dev": true 1933 | } 1934 | } 1935 | }, 1936 | "table": { 1937 | "version": "4.0.2", 1938 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", 1939 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", 1940 | "dev": true, 1941 | "requires": { 1942 | "ajv": "5.5.2", 1943 | "ajv-keywords": "2.1.1", 1944 | "chalk": "2.4.1", 1945 | "lodash": "4.17.10", 1946 | "slice-ansi": "1.0.0", 1947 | "string-width": "2.1.1" 1948 | }, 1949 | "dependencies": { 1950 | "lodash": { 1951 | "version": "4.17.10", 1952 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 1953 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", 1954 | "dev": true 1955 | } 1956 | } 1957 | }, 1958 | "text-table": { 1959 | "version": "0.2.0", 1960 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1961 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1962 | "dev": true 1963 | }, 1964 | "through": { 1965 | "version": "2.3.8", 1966 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1967 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1968 | "dev": true 1969 | }, 1970 | "tmp": { 1971 | "version": "0.0.33", 1972 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1973 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1974 | "dev": true, 1975 | "requires": { 1976 | "os-tmpdir": "1.0.2" 1977 | } 1978 | }, 1979 | "topo": { 1980 | "version": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", 1981 | "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", 1982 | "dev": true, 1983 | "requires": { 1984 | "hoek": "4.2.1" 1985 | }, 1986 | "dependencies": { 1987 | "hoek": { 1988 | "version": "4.2.1", 1989 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 1990 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 1991 | "dev": true 1992 | } 1993 | } 1994 | }, 1995 | "type-check": { 1996 | "version": "0.3.2", 1997 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1998 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1999 | "dev": true, 2000 | "requires": { 2001 | "prelude-ls": "1.1.2" 2002 | } 2003 | }, 2004 | "typedarray": { 2005 | "version": "0.0.6", 2006 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2007 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2008 | "dev": true 2009 | }, 2010 | "util-deprecate": { 2011 | "version": "1.0.2", 2012 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2013 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2014 | "dev": true 2015 | }, 2016 | "vise": { 2017 | "version": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", 2018 | "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", 2019 | "dev": true, 2020 | "requires": { 2021 | "hoek": "4.2.1" 2022 | }, 2023 | "dependencies": { 2024 | "hoek": { 2025 | "version": "4.2.1", 2026 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 2027 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 2028 | "dev": true 2029 | } 2030 | } 2031 | }, 2032 | "which": { 2033 | "version": "1.3.0", 2034 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 2035 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 2036 | "dev": true, 2037 | "requires": { 2038 | "isexe": "2.0.0" 2039 | } 2040 | }, 2041 | "wordwrap": { 2042 | "version": "1.0.0", 2043 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2044 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2045 | "dev": true 2046 | }, 2047 | "wrappy": { 2048 | "version": "1.0.2", 2049 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2050 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2051 | "dev": true 2052 | }, 2053 | "wreck": { 2054 | "version": "https://registry.npmjs.org/wreck/-/wreck-8.0.1.tgz", 2055 | "integrity": "sha1-B+BcT5+u/XOeRI91I/SiH/wOCDc=", 2056 | "dev": true, 2057 | "requires": { 2058 | "boom": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 2059 | "hoek": "4.2.1" 2060 | }, 2061 | "dependencies": { 2062 | "boom": { 2063 | "version": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 2064 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 2065 | "dev": true, 2066 | "requires": { 2067 | "hoek": "4.2.1" 2068 | } 2069 | }, 2070 | "hoek": { 2071 | "version": "4.2.1", 2072 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", 2073 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", 2074 | "dev": true 2075 | } 2076 | } 2077 | }, 2078 | "write": { 2079 | "version": "0.2.1", 2080 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 2081 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 2082 | "dev": true, 2083 | "requires": { 2084 | "mkdirp": "0.5.1" 2085 | } 2086 | }, 2087 | "xml2js": { 2088 | "version": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", 2089 | "integrity": "sha1-lc0D/y3RROwovGJzvysokMWBrQw=", 2090 | "requires": { 2091 | "sax": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", 2092 | "xmlbuilder": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz" 2093 | } 2094 | }, 2095 | "xmlbuilder": { 2096 | "version": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", 2097 | "integrity": "sha1-+Rb20Q1F3BcbG+Lm5nP7bgzDXQo=", 2098 | "requires": { 2099 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" 2100 | } 2101 | }, 2102 | "yallist": { 2103 | "version": "2.1.2", 2104 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2105 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2106 | "dev": true 2107 | } 2108 | } 2109 | } 2110 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hapi-mail", 3 | "description": "Email plugin for Hapi.js", 4 | "version": "15.0.1", 5 | "author": "Paul Lang", 6 | "contributors": [], 7 | "repository": "https://github.com/paullang/hapi-mail.git", 8 | "main": "index", 9 | "keywords": [ 10 | "hapi", 11 | "plugin", 12 | "email", 13 | "ses" 14 | ], 15 | "engines": { 16 | "node": ">=6.0.0" 17 | }, 18 | "scripts": { 19 | "test": "make test" 20 | }, 21 | "dependencies": { 22 | "handlebars": "4.x.x", 23 | "aws-sdk": "2.x.x", 24 | "hoek": "5.x.x" 25 | }, 26 | "devDependencies": { 27 | "lab": "14.x.x", 28 | "hapi": "15.x.x", 29 | "code": "3.x.x" 30 | }, 31 | "peerDependencies": { 32 | "hapi": "15.x.x" 33 | }, 34 | "license": "Apache-2.0" 35 | } 36 | -------------------------------------------------------------------------------- /test/emails/registration.html: -------------------------------------------------------------------------------- 1 | {{name}}, 2 |
3 | Thank you for signing up for Example! 4 |
5 |6 | Your username is "{{username}}". 7 |
8 |9 | We hope you enjoy the service and be sure to let us know if there is anything that could make your experience better. 10 |
11 | Regards,