├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── index.js ├── package-lock.json ├── package.json └── test ├── glueFactory.js └── integration.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 17 | do not have permission to do that, you may request the second reviewer to merge it for you. 18 | 19 | ## Code of Conduct 20 | 21 | ### Our Pledge 22 | 23 | In the interest of fostering an open and welcoming environment, we as 24 | contributors and maintainers pledge to making participation in our project and 25 | our community a harassment-free experience for everyone, regardless of age, body 26 | size, disability, ethnicity, gender identity and expression, level of experience, 27 | nationality, personal appearance, race, religion, or sexual identity and 28 | orientation. 29 | 30 | ### Our Standards 31 | 32 | Examples of behavior that contributes to creating a positive environment 33 | include: 34 | 35 | * Using welcoming and inclusive language 36 | * Being respectful of differing viewpoints and experiences 37 | * Gracefully accepting constructive criticism 38 | * Focusing on what is best for the community 39 | * Showing empathy towards other community members 40 | 41 | Examples of unacceptable behavior by participants include: 42 | 43 | * The use of sexualized language or imagery and unwelcome sexual attention or 44 | advances 45 | * Trolling, insulting/derogatory comments, and personal or political attacks 46 | * Public or private harassment 47 | * Publishing others' private information, such as a physical or electronic 48 | address, without explicit permission 49 | * Other conduct which could reasonably be considered inappropriate in a 50 | professional setting 51 | 52 | ### Our Responsibilities 53 | 54 | Project maintainers are responsible for clarifying the standards of acceptable 55 | behavior and are expected to take appropriate and fair corrective action in 56 | response to any instances of unacceptable behavior. 57 | 58 | Project maintainers have the right and responsibility to remove, edit, or 59 | reject comments, commits, code, wiki edits, issues, and other contributions 60 | that are not aligned to this Code of Conduct, or to ban temporarily or 61 | permanently any contributor for other behaviors that they deem inappropriate, 62 | threatening, offensive, or harmful. 63 | 64 | ### Scope 65 | 66 | This Code of Conduct applies both within project spaces and in public spaces 67 | when an individual is representing the project or its community. Examples of 68 | representing a project or community include using an official project e-mail 69 | address, posting via an official social media account, or acting as an appointed 70 | representative at an online or offline event. Representation of a project may be 71 | further defined and clarified by project maintainers. 72 | 73 | ### Enforcement 74 | 75 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 76 | reported by contacting the project team at dev@littlstar.com. All 77 | complaints will be reviewed and investigated and will result in a response that 78 | is deemed necessary and appropriate to the circumstances. The project team is 79 | obligated to maintain confidentiality with regard to the reporter of an incident. 80 | Further details of specific enforcement policies may be posted separately. 81 | 82 | Project maintainers who do not follow or enforce the Code of Conduct in good 83 | faith may face temporary or permanent repercussions as determined by other 84 | members of the project's leadership. 85 | 86 | ### Attribution 87 | 88 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 89 | available at [http://contributor-covenant.org/version/1/4][version] 90 | 91 | [homepage]: http://contributor-covenant.org 92 | [version]: http://contributor-covenant.org/version/1/4/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2017 Littlstar Media, Inc 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Hivemind 2 | 3 | For creating distributed jobs using AWS Lambda functions. 4 | 5 | ### Install: 6 | 7 | ```bash 8 | npm install lambda-hivemind 9 | ``` 10 | 11 | ### Quick Example: 12 | 13 | ```javascript 14 | const Hivemind = require('lambda-hivemind') 15 | 16 | const hivemind = new Hivemind({ 17 | func: { 18 | name: 'buzzbuzz', 19 | handler: 'buzzbuzz.sting', // '.' 20 | role: '' 21 | }, 22 | accessKeyId: '', // AWS credentials. Optional. 23 | secretAccessKey: '' // AWS credentials. Optional. 24 | awsRegion: 'us-east-1', 25 | data: [ 26 | 'bee 1', 27 | 'bee 2', 28 | 'bee 3', 29 | ... 30 | ], 31 | chunkSize: 10 // Size of chunks to split data into 32 | }) 33 | 34 | // Oh no, we haven't published a function of this name yet! 35 | 36 | // List all files you want published as your function 37 | hivemind.publish({ 38 | files: [ 39 | 'buzzbuzz.js' 40 | ] 41 | }, { 42 | // Any AWS parameters specified under http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#createFunction-property 43 | }) 44 | 45 | hivemind.on('create', () => { 46 | // Ok, let's go! 47 | hivemind.run() 48 | }) 49 | 50 | hivemind.on('finish', (results) => { 51 | // Each job's results will stream to here. 52 | console.log("Woah!") 53 | }) 54 | 55 | hivemind.on('end', () => { 56 | // All jobs have finished! 57 | process.exit(0) 58 | }) 59 | 60 | hivemind.on('error', (err) => { 61 | console.log("Aww, man!") 62 | }) 63 | ``` 64 | 65 | ## Methods 66 | 67 | ### constructor(params) 68 | 69 | #### Parameters: 70 | - `func` - Description of function 71 | - `name` - Name of the function 72 | - `handler` (optional) - Handler of function (If your file is named index and your function is named handler, your handler will be `index.handler`) (default: index.handler) 73 | - `role` - ARN of AWS Role to run function under 74 | - `runtime` (optional) - What framework to run function with (default: node6.10) 75 | - `lambda` (optional) - Overload of AWS Lambda class 76 | - `data` - Array of data to run on 77 | - `chunkSize` - How many pieces of data to give to each function 78 | - `accessKeyId` (optional) - AWS Access key 79 | - `secretAccessKey` (optional) - AWS Secret key 80 | - `awsRegion` - AWS region to execute your function in 81 | 82 | ### publish(params, awsParams = {}) 83 | 84 | Publishes or updates specified code as a Lambda function. This method is not required if the function has been previously published and does not need to updated. 85 | 86 | #### Parameters: 87 | - `zipFile` - Relative path to ZIP file to publish as function. This method is required if your script has dependencies. See `Code.S3Key` below if your ZIP is over 10MB. 88 | - `files` - Array of relative paths to files to publish 89 | - `lambdaFunc` - JavaScript function to publish as your function. The function must use take 3 parameters (event, context, callback). Data is loaded under `event`, `callback` is called when function is done. 90 | 91 | #### AWS Parameters: 92 | - `Code.S3Key` - Key for file to be used as code (Useful for using ZIP or script stored on S3. Required if your ZIP is over 10MB.) 93 | - Any parameter specified here: http://docs.aws.amazon.com/lambda/latest/dg/API_CreateFunction.html 94 | 95 | ### run() 96 | 97 | Chunks and runs data given in constructor through the function specified in constructor and published in `publish()` 98 | 99 | ## Notes: 100 | 101 | AWS credentials in constructor are only optional if you have the AWS CLI configured or have your credentials as environment variables! 102 | 103 | Full example can be found under [`test/` folder](test). 104 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const fs = require('fs') 4 | const zip = require('yazl') 5 | const path = require('path') 6 | const AWS = require('aws-sdk') 7 | const through2 = require('through2') 8 | const EventEmitter = require('events') 9 | const Persist = require('persist-store') 10 | 11 | /** 12 | * Create distributed jobs using AWS Lambda functions 13 | * 14 | * @type {Class} 15 | */ 16 | 17 | module.exports = class Hivemind extends EventEmitter { 18 | constructor(params) { 19 | super() 20 | 21 | this.func = params.func 22 | 23 | this.lambda = params.awsLambda || new AWS.Lambda({ 24 | AccessKeyId: params.accessKeyId, 25 | SecretAccessKey: params.secretAccessKey, 26 | region: params.awsRegion 27 | }) 28 | 29 | this.persister = new Persist([ 30 | { 31 | type: 'local', 32 | path: './jobs', 33 | }, 34 | { 35 | type: 's3', 36 | bucket: 'ls-hivemind-jobs', 37 | accessKeyId: params.accessKeyId, 38 | secretAccessKey: params.secretAccessKey 39 | } 40 | ]) 41 | 42 | // Chunk the data into individual arrays for processing 43 | this.chunks = [[]] 44 | let currentChunk = 0 45 | params.data.forEach((item) => { 46 | 47 | // If chunk doesn't exist yet, create it. 48 | if (this.chunks[currentChunk].length === params.chunkSize) { 49 | 50 | // Overly clever way of saying: increment `currentChunk` then use the incremented value 51 | this.chunks[++currentChunk] = [] 52 | } 53 | 54 | this.chunks[currentChunk].push(item) 55 | }) 56 | } 57 | 58 | /** 59 | * Publishes the ZIP file as a Lambda function. Can be passed `files` or 60 | * `zipFile` to specify how the code is packaged. 61 | * 62 | * `zipFile` means that the code has been pre-packaged into a ZIP file and the string is the 63 | * relative location of the file. 64 | * 65 | * `files` is an array of files to be built 66 | * into a ZIP file dynamically. 67 | * 68 | * Note: dynamic ZIP file creation cannot include 69 | * folders currently. 70 | * 71 | * @param {Object} params Parameters for publishing function 72 | * @param {Object} [awsParams] Parameters specified in AWS documentation that overrides 73 | * or supplements parameters 74 | */ 75 | 76 | publish(params, awsParams = {}) { 77 | 78 | const publishFunc = (code) => { 79 | 80 | // Merge parameters and AWS parameters 81 | // This is so add'l parameters that only AWS cares about can be passed 82 | const mergedParams = Object.assign({ 83 | Code: { 84 | ZipFile: code 85 | }, 86 | FunctionName: this.func.name, 87 | Handler: this.func.handler || 'index.handler', 88 | Role: this.func.role, 89 | Runtime: this.func.runtime || 'nodejs6.10' 90 | }, awsParams || {}) 91 | 92 | // Check if function already exists! 93 | // This determines whether we will create or update the function 94 | this.lambda.getFunction({ 95 | FunctionName: mergedParams.FunctionName 96 | }, (err, res) => { 97 | const deployCallback = (error) => { 98 | if (error) { 99 | return this.emit('error', error) 100 | } 101 | 102 | return this.emit('create') 103 | } 104 | 105 | if (err) { 106 | // If the function doesn't exist, create it. 107 | if (err.statusCode === 404) { 108 | return this.lambda.createFunction(mergedParams, deployCallback) 109 | } else { 110 | return this.emit('error', err) 111 | } 112 | } else { 113 | // If the function exists, we should update the code 114 | this.lambda.updateFunctionCode({ 115 | FunctionName: res.Configuration.FunctionArn, 116 | ZipFile: mergedParams.Code.ZipFile 117 | }, deployCallback) 118 | } 119 | }) 120 | } 121 | 122 | const createAndPublishZipFile = (files) => { 123 | const file = new zip.ZipFile() 124 | files.forEach(filePath => { file.addFile(path.resolve(filePath), filePath) }) 125 | 126 | // Signal that there are no more files 127 | file.end() 128 | 129 | // Initialize an empty buffer 130 | let buff = Buffer.alloc(0) 131 | 132 | // We have to pipe the stream through 'through' so we can extract 133 | // the buffers that are contained in the stream 134 | file.outputStream 135 | .pipe(through2((chunk, _, callback) => { 136 | 137 | // Add each chunk to a single buffer 138 | buff = Buffer.concat([buff, chunk]) 139 | return callback() 140 | })) 141 | .on('finish', () => { 142 | publishFunc(buff) 143 | }) 144 | } 145 | 146 | // Is ZIP file 147 | if (params.zipFile) { 148 | publishFunc(fs.readFileSync(path.resolve(params.zipFile))) 149 | 150 | // ZIP file should be created dynamically 151 | } else if (params.files) { 152 | createAndPublishZipFile(params.files) 153 | 154 | // Find the files on S3 155 | } else if (awsParams.Code && awsParams.Code.S3Key) { 156 | publishFunc() 157 | } else if (params.lambdaFunc) { 158 | fs.writeFileSync(`_${this.func.name}.js`, params.lambdaFunc.toString()) 159 | createAndPublishZipFile([ `_${this.func.name}.js` ]) 160 | } else { 161 | // Otherwise, the user has done something wrong. 162 | throw new Error('You have to specify a code location to publish a function') 163 | } 164 | } 165 | 166 | /** 167 | * Launches jobs using the chunked data as parameters for each job 168 | */ 169 | 170 | async run() { 171 | 172 | // Promises allow us to track the completion of each job. 173 | // These are only internal and are used for triggering the on('end') event 174 | const promises = this.chunks.map(async chunk => { 175 | try { 176 | const data = await this.lambda.invoke({ 177 | FunctionName: this.func.name, 178 | Payload: JSON.stringify({ 179 | chunk 180 | }) 181 | }).promise() 182 | 183 | // Emit 'finish' and return the payload 184 | this.emit('finish', data.Payload) 185 | 186 | return data.Payload 187 | } catch (err) { 188 | this.emit('error', err) 189 | 190 | throw err 191 | } 192 | }) 193 | 194 | // After all the jobs finish, emit 'end' 195 | const results = await Promise.all(promises) 196 | 197 | this.emit('end') 198 | 199 | return results 200 | } 201 | } 202 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lambda-hivemind", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@ava/babel-plugin-throws-helper": { 8 | "version": "2.0.0", 9 | "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", 10 | "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", 11 | "dev": true 12 | }, 13 | "@ava/babel-preset-stage-4": { 14 | "version": "1.1.0", 15 | "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", 16 | "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", 17 | "dev": true, 18 | "requires": { 19 | "babel-plugin-check-es2015-constants": "6.22.0", 20 | "babel-plugin-syntax-trailing-function-commas": "6.22.0", 21 | "babel-plugin-transform-async-to-generator": "6.24.1", 22 | "babel-plugin-transform-es2015-destructuring": "6.23.0", 23 | "babel-plugin-transform-es2015-function-name": "6.24.1", 24 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", 25 | "babel-plugin-transform-es2015-parameters": "6.24.1", 26 | "babel-plugin-transform-es2015-spread": "6.22.0", 27 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1", 28 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1", 29 | "babel-plugin-transform-exponentiation-operator": "6.24.1", 30 | "package-hash": "1.2.0" 31 | }, 32 | "dependencies": { 33 | "md5-hex": { 34 | "version": "1.3.0", 35 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", 36 | "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", 37 | "dev": true, 38 | "requires": { 39 | "md5-o-matic": "0.1.1" 40 | } 41 | }, 42 | "package-hash": { 43 | "version": "1.2.0", 44 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", 45 | "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", 46 | "dev": true, 47 | "requires": { 48 | "md5-hex": "1.3.0" 49 | } 50 | } 51 | } 52 | }, 53 | "@ava/babel-preset-transform-test-files": { 54 | "version": "3.0.0", 55 | "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", 56 | "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", 57 | "dev": true, 58 | "requires": { 59 | "@ava/babel-plugin-throws-helper": "2.0.0", 60 | "babel-plugin-espower": "2.3.2" 61 | } 62 | }, 63 | "@ava/write-file-atomic": { 64 | "version": "2.2.0", 65 | "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", 66 | "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", 67 | "dev": true, 68 | "requires": { 69 | "graceful-fs": "4.1.11", 70 | "imurmurhash": "0.1.4", 71 | "slide": "1.1.6" 72 | } 73 | }, 74 | "@concordance/react": { 75 | "version": "1.0.0", 76 | "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", 77 | "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", 78 | "dev": true, 79 | "requires": { 80 | "arrify": "1.0.1" 81 | } 82 | }, 83 | "ansi-align": { 84 | "version": "2.0.0", 85 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", 86 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", 87 | "dev": true, 88 | "requires": { 89 | "string-width": "2.1.1" 90 | } 91 | }, 92 | "ansi-escapes": { 93 | "version": "2.0.0", 94 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", 95 | "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", 96 | "dev": true 97 | }, 98 | "ansi-regex": { 99 | "version": "2.1.1", 100 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 101 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 102 | "dev": true 103 | }, 104 | "ansi-styles": { 105 | "version": "3.2.0", 106 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 107 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 108 | "dev": true, 109 | "requires": { 110 | "color-convert": "1.9.0" 111 | } 112 | }, 113 | "anymatch": { 114 | "version": "1.3.2", 115 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 116 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 117 | "dev": true, 118 | "requires": { 119 | "micromatch": "2.3.11", 120 | "normalize-path": "2.1.1" 121 | } 122 | }, 123 | "argparse": { 124 | "version": "1.0.9", 125 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 126 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 127 | "dev": true, 128 | "requires": { 129 | "sprintf-js": "1.0.3" 130 | } 131 | }, 132 | "arr-diff": { 133 | "version": "2.0.0", 134 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 135 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 136 | "dev": true, 137 | "requires": { 138 | "arr-flatten": "1.1.0" 139 | } 140 | }, 141 | "arr-exclude": { 142 | "version": "1.0.0", 143 | "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", 144 | "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", 145 | "dev": true 146 | }, 147 | "arr-flatten": { 148 | "version": "1.1.0", 149 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 150 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 151 | "dev": true 152 | }, 153 | "array-differ": { 154 | "version": "1.0.0", 155 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 156 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 157 | "dev": true 158 | }, 159 | "array-find-index": { 160 | "version": "1.0.2", 161 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 162 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 163 | "dev": true 164 | }, 165 | "array-union": { 166 | "version": "1.0.2", 167 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 168 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 169 | "dev": true, 170 | "requires": { 171 | "array-uniq": "1.0.3" 172 | } 173 | }, 174 | "array-uniq": { 175 | "version": "1.0.3", 176 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 177 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 178 | "dev": true 179 | }, 180 | "array-unique": { 181 | "version": "0.2.1", 182 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 183 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 184 | "dev": true 185 | }, 186 | "arrify": { 187 | "version": "1.0.1", 188 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 189 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 190 | "dev": true 191 | }, 192 | "async-each": { 193 | "version": "1.0.1", 194 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 195 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 196 | "dev": true 197 | }, 198 | "auto-bind": { 199 | "version": "1.1.0", 200 | "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", 201 | "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", 202 | "dev": true 203 | }, 204 | "ava": { 205 | "version": "0.22.0", 206 | "resolved": "https://registry.npmjs.org/ava/-/ava-0.22.0.tgz", 207 | "integrity": "sha512-dYxvVDL9CeIcgaQ/FojaBVaL/rnIsXdgPVliDOMe1O5nSsIZEsPYDIzmZ1KnO/cuxeQx1PQbtW6qziiEwQZusg==", 208 | "dev": true, 209 | "requires": { 210 | "@ava/babel-preset-stage-4": "1.1.0", 211 | "@ava/babel-preset-transform-test-files": "3.0.0", 212 | "@ava/write-file-atomic": "2.2.0", 213 | "@concordance/react": "1.0.0", 214 | "ansi-escapes": "2.0.0", 215 | "ansi-styles": "3.2.0", 216 | "arr-flatten": "1.1.0", 217 | "array-union": "1.0.2", 218 | "array-uniq": "1.0.3", 219 | "arrify": "1.0.1", 220 | "auto-bind": "1.1.0", 221 | "ava-init": "0.2.1", 222 | "babel-core": "6.26.0", 223 | "bluebird": "3.5.0", 224 | "caching-transform": "1.0.1", 225 | "chalk": "2.1.0", 226 | "chokidar": "1.7.0", 227 | "clean-stack": "1.3.0", 228 | "clean-yaml-object": "0.1.0", 229 | "cli-cursor": "2.1.0", 230 | "cli-spinners": "1.0.0", 231 | "cli-truncate": "1.1.0", 232 | "co-with-promise": "4.6.0", 233 | "code-excerpt": "2.1.0", 234 | "common-path-prefix": "1.0.0", 235 | "concordance": "3.0.0", 236 | "convert-source-map": "1.5.0", 237 | "core-assert": "0.2.1", 238 | "currently-unhandled": "0.4.1", 239 | "debug": "2.6.8", 240 | "dot-prop": "4.2.0", 241 | "empower-core": "0.6.2", 242 | "equal-length": "1.0.1", 243 | "figures": "2.0.0", 244 | "find-cache-dir": "1.0.0", 245 | "fn-name": "2.0.1", 246 | "get-port": "3.2.0", 247 | "globby": "6.1.0", 248 | "has-flag": "2.0.0", 249 | "hullabaloo-config-manager": "1.1.1", 250 | "ignore-by-default": "1.0.1", 251 | "import-local": "0.1.1", 252 | "indent-string": "3.2.0", 253 | "is-ci": "1.0.10", 254 | "is-generator-fn": "1.0.0", 255 | "is-obj": "1.0.1", 256 | "is-observable": "0.2.0", 257 | "is-promise": "2.1.0", 258 | "js-yaml": "3.9.1", 259 | "last-line-stream": "1.0.0", 260 | "lodash.clonedeepwith": "4.5.0", 261 | "lodash.debounce": "4.0.8", 262 | "lodash.difference": "4.5.0", 263 | "lodash.flatten": "4.4.0", 264 | "loud-rejection": "1.6.0", 265 | "make-dir": "1.0.0", 266 | "matcher": "1.0.0", 267 | "md5-hex": "2.0.0", 268 | "meow": "3.7.0", 269 | "ms": "2.0.0", 270 | "multimatch": "2.1.0", 271 | "observable-to-promise": "0.5.0", 272 | "option-chain": "1.0.0", 273 | "package-hash": "2.0.0", 274 | "pkg-conf": "2.0.0", 275 | "plur": "2.1.2", 276 | "pretty-ms": "2.1.0", 277 | "require-precompiled": "0.1.0", 278 | "resolve-cwd": "2.0.0", 279 | "safe-buffer": "5.1.1", 280 | "slash": "1.0.0", 281 | "source-map-support": "0.4.16", 282 | "stack-utils": "1.0.1", 283 | "strip-ansi": "4.0.0", 284 | "strip-bom-buf": "1.0.0", 285 | "supports-color": "4.2.1", 286 | "time-require": "0.1.2", 287 | "trim-off-newlines": "1.0.1", 288 | "unique-temp-dir": "1.0.0", 289 | "update-notifier": "2.2.0" 290 | } 291 | }, 292 | "ava-init": { 293 | "version": "0.2.1", 294 | "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", 295 | "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", 296 | "dev": true, 297 | "requires": { 298 | "arr-exclude": "1.0.0", 299 | "execa": "0.7.0", 300 | "has-yarn": "1.0.0", 301 | "read-pkg-up": "2.0.0", 302 | "write-pkg": "3.1.0" 303 | } 304 | }, 305 | "aws-sdk": { 306 | "version": "2.104.0", 307 | "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.104.0.tgz", 308 | "integrity": "sha1-M14FUzgMCujdQ9Ebdtc9+5JvYzM=", 309 | "requires": { 310 | "buffer": "4.9.1", 311 | "crypto-browserify": "1.0.9", 312 | "events": "1.1.1", 313 | "jmespath": "0.15.0", 314 | "querystring": "0.2.0", 315 | "sax": "1.2.1", 316 | "url": "0.10.3", 317 | "uuid": "3.0.1", 318 | "xml2js": "0.4.17", 319 | "xmlbuilder": "4.2.1" 320 | } 321 | }, 322 | "aws-sdk-mock": { 323 | "version": "1.7.0", 324 | "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-1.7.0.tgz", 325 | "integrity": "sha1-dpizuoL0k/cf8GCuISPNCAathnY=", 326 | "dev": true, 327 | "requires": { 328 | "aws-sdk": "2.104.0", 329 | "sinon": "1.17.7", 330 | "traverse": "0.6.6" 331 | } 332 | }, 333 | "babel-code-frame": { 334 | "version": "6.26.0", 335 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 336 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 337 | "dev": true, 338 | "requires": { 339 | "chalk": "1.1.3", 340 | "esutils": "2.0.2", 341 | "js-tokens": "3.0.2" 342 | }, 343 | "dependencies": { 344 | "ansi-styles": { 345 | "version": "2.2.1", 346 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 347 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 348 | "dev": true 349 | }, 350 | "chalk": { 351 | "version": "1.1.3", 352 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 353 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 354 | "dev": true, 355 | "requires": { 356 | "ansi-styles": "2.2.1", 357 | "escape-string-regexp": "1.0.5", 358 | "has-ansi": "2.0.0", 359 | "strip-ansi": "3.0.1", 360 | "supports-color": "2.0.0" 361 | } 362 | }, 363 | "strip-ansi": { 364 | "version": "3.0.1", 365 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 366 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 367 | "dev": true, 368 | "requires": { 369 | "ansi-regex": "2.1.1" 370 | } 371 | }, 372 | "supports-color": { 373 | "version": "2.0.0", 374 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 375 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 376 | "dev": true 377 | } 378 | } 379 | }, 380 | "babel-core": { 381 | "version": "6.26.0", 382 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 383 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 384 | "dev": true, 385 | "requires": { 386 | "babel-code-frame": "6.26.0", 387 | "babel-generator": "6.26.0", 388 | "babel-helpers": "6.24.1", 389 | "babel-messages": "6.23.0", 390 | "babel-register": "6.26.0", 391 | "babel-runtime": "6.26.0", 392 | "babel-template": "6.26.0", 393 | "babel-traverse": "6.26.0", 394 | "babel-types": "6.26.0", 395 | "babylon": "6.18.0", 396 | "convert-source-map": "1.5.0", 397 | "debug": "2.6.8", 398 | "json5": "0.5.1", 399 | "lodash": "4.17.4", 400 | "minimatch": "3.0.4", 401 | "path-is-absolute": "1.0.1", 402 | "private": "0.1.7", 403 | "slash": "1.0.0", 404 | "source-map": "0.5.7" 405 | } 406 | }, 407 | "babel-generator": { 408 | "version": "6.26.0", 409 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", 410 | "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", 411 | "dev": true, 412 | "requires": { 413 | "babel-messages": "6.23.0", 414 | "babel-runtime": "6.26.0", 415 | "babel-types": "6.26.0", 416 | "detect-indent": "4.0.0", 417 | "jsesc": "1.3.0", 418 | "lodash": "4.17.4", 419 | "source-map": "0.5.7", 420 | "trim-right": "1.0.1" 421 | }, 422 | "dependencies": { 423 | "jsesc": { 424 | "version": "1.3.0", 425 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 426 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 427 | "dev": true 428 | } 429 | } 430 | }, 431 | "babel-helper-builder-binary-assignment-operator-visitor": { 432 | "version": "6.24.1", 433 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 434 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 435 | "dev": true, 436 | "requires": { 437 | "babel-helper-explode-assignable-expression": "6.24.1", 438 | "babel-runtime": "6.26.0", 439 | "babel-types": "6.26.0" 440 | } 441 | }, 442 | "babel-helper-call-delegate": { 443 | "version": "6.24.1", 444 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 445 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 446 | "dev": true, 447 | "requires": { 448 | "babel-helper-hoist-variables": "6.24.1", 449 | "babel-runtime": "6.26.0", 450 | "babel-traverse": "6.26.0", 451 | "babel-types": "6.26.0" 452 | } 453 | }, 454 | "babel-helper-explode-assignable-expression": { 455 | "version": "6.24.1", 456 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 457 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 458 | "dev": true, 459 | "requires": { 460 | "babel-runtime": "6.26.0", 461 | "babel-traverse": "6.26.0", 462 | "babel-types": "6.26.0" 463 | } 464 | }, 465 | "babel-helper-function-name": { 466 | "version": "6.24.1", 467 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 468 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 469 | "dev": true, 470 | "requires": { 471 | "babel-helper-get-function-arity": "6.24.1", 472 | "babel-runtime": "6.26.0", 473 | "babel-template": "6.26.0", 474 | "babel-traverse": "6.26.0", 475 | "babel-types": "6.26.0" 476 | } 477 | }, 478 | "babel-helper-get-function-arity": { 479 | "version": "6.24.1", 480 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 481 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 482 | "dev": true, 483 | "requires": { 484 | "babel-runtime": "6.26.0", 485 | "babel-types": "6.26.0" 486 | } 487 | }, 488 | "babel-helper-hoist-variables": { 489 | "version": "6.24.1", 490 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 491 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 492 | "dev": true, 493 | "requires": { 494 | "babel-runtime": "6.26.0", 495 | "babel-types": "6.26.0" 496 | } 497 | }, 498 | "babel-helper-regex": { 499 | "version": "6.26.0", 500 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 501 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 502 | "dev": true, 503 | "requires": { 504 | "babel-runtime": "6.26.0", 505 | "babel-types": "6.26.0", 506 | "lodash": "4.17.4" 507 | } 508 | }, 509 | "babel-helper-remap-async-to-generator": { 510 | "version": "6.24.1", 511 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 512 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 513 | "dev": true, 514 | "requires": { 515 | "babel-helper-function-name": "6.24.1", 516 | "babel-runtime": "6.26.0", 517 | "babel-template": "6.26.0", 518 | "babel-traverse": "6.26.0", 519 | "babel-types": "6.26.0" 520 | } 521 | }, 522 | "babel-helpers": { 523 | "version": "6.24.1", 524 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 525 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 526 | "dev": true, 527 | "requires": { 528 | "babel-runtime": "6.26.0", 529 | "babel-template": "6.26.0" 530 | } 531 | }, 532 | "babel-messages": { 533 | "version": "6.23.0", 534 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 535 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 536 | "dev": true, 537 | "requires": { 538 | "babel-runtime": "6.26.0" 539 | } 540 | }, 541 | "babel-plugin-check-es2015-constants": { 542 | "version": "6.22.0", 543 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 544 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 545 | "dev": true, 546 | "requires": { 547 | "babel-runtime": "6.26.0" 548 | } 549 | }, 550 | "babel-plugin-espower": { 551 | "version": "2.3.2", 552 | "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", 553 | "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", 554 | "dev": true, 555 | "requires": { 556 | "babel-generator": "6.26.0", 557 | "babylon": "6.18.0", 558 | "call-matcher": "1.0.1", 559 | "core-js": "2.5.0", 560 | "espower-location-detector": "1.0.0", 561 | "espurify": "1.7.0", 562 | "estraverse": "4.2.0" 563 | } 564 | }, 565 | "babel-plugin-syntax-async-functions": { 566 | "version": "6.13.0", 567 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 568 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 569 | "dev": true 570 | }, 571 | "babel-plugin-syntax-exponentiation-operator": { 572 | "version": "6.13.0", 573 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 574 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 575 | "dev": true 576 | }, 577 | "babel-plugin-syntax-trailing-function-commas": { 578 | "version": "6.22.0", 579 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 580 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 581 | "dev": true 582 | }, 583 | "babel-plugin-transform-async-to-generator": { 584 | "version": "6.24.1", 585 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 586 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 587 | "dev": true, 588 | "requires": { 589 | "babel-helper-remap-async-to-generator": "6.24.1", 590 | "babel-plugin-syntax-async-functions": "6.13.0", 591 | "babel-runtime": "6.26.0" 592 | } 593 | }, 594 | "babel-plugin-transform-es2015-destructuring": { 595 | "version": "6.23.0", 596 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 597 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 598 | "dev": true, 599 | "requires": { 600 | "babel-runtime": "6.26.0" 601 | } 602 | }, 603 | "babel-plugin-transform-es2015-function-name": { 604 | "version": "6.24.1", 605 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 606 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 607 | "dev": true, 608 | "requires": { 609 | "babel-helper-function-name": "6.24.1", 610 | "babel-runtime": "6.26.0", 611 | "babel-types": "6.26.0" 612 | } 613 | }, 614 | "babel-plugin-transform-es2015-modules-commonjs": { 615 | "version": "6.26.0", 616 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", 617 | "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", 618 | "dev": true, 619 | "requires": { 620 | "babel-plugin-transform-strict-mode": "6.24.1", 621 | "babel-runtime": "6.26.0", 622 | "babel-template": "6.26.0", 623 | "babel-types": "6.26.0" 624 | } 625 | }, 626 | "babel-plugin-transform-es2015-parameters": { 627 | "version": "6.24.1", 628 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 629 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 630 | "dev": true, 631 | "requires": { 632 | "babel-helper-call-delegate": "6.24.1", 633 | "babel-helper-get-function-arity": "6.24.1", 634 | "babel-runtime": "6.26.0", 635 | "babel-template": "6.26.0", 636 | "babel-traverse": "6.26.0", 637 | "babel-types": "6.26.0" 638 | } 639 | }, 640 | "babel-plugin-transform-es2015-spread": { 641 | "version": "6.22.0", 642 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 643 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 644 | "dev": true, 645 | "requires": { 646 | "babel-runtime": "6.26.0" 647 | } 648 | }, 649 | "babel-plugin-transform-es2015-sticky-regex": { 650 | "version": "6.24.1", 651 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 652 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 653 | "dev": true, 654 | "requires": { 655 | "babel-helper-regex": "6.26.0", 656 | "babel-runtime": "6.26.0", 657 | "babel-types": "6.26.0" 658 | } 659 | }, 660 | "babel-plugin-transform-es2015-unicode-regex": { 661 | "version": "6.24.1", 662 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 663 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 664 | "dev": true, 665 | "requires": { 666 | "babel-helper-regex": "6.26.0", 667 | "babel-runtime": "6.26.0", 668 | "regexpu-core": "2.0.0" 669 | } 670 | }, 671 | "babel-plugin-transform-exponentiation-operator": { 672 | "version": "6.24.1", 673 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 674 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 675 | "dev": true, 676 | "requires": { 677 | "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", 678 | "babel-plugin-syntax-exponentiation-operator": "6.13.0", 679 | "babel-runtime": "6.26.0" 680 | } 681 | }, 682 | "babel-plugin-transform-strict-mode": { 683 | "version": "6.24.1", 684 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 685 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 686 | "dev": true, 687 | "requires": { 688 | "babel-runtime": "6.26.0", 689 | "babel-types": "6.26.0" 690 | } 691 | }, 692 | "babel-register": { 693 | "version": "6.26.0", 694 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 695 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 696 | "dev": true, 697 | "requires": { 698 | "babel-core": "6.26.0", 699 | "babel-runtime": "6.26.0", 700 | "core-js": "2.5.0", 701 | "home-or-tmp": "2.0.0", 702 | "lodash": "4.17.4", 703 | "mkdirp": "0.5.1", 704 | "source-map-support": "0.4.16" 705 | } 706 | }, 707 | "babel-runtime": { 708 | "version": "6.26.0", 709 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 710 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 711 | "dev": true, 712 | "requires": { 713 | "core-js": "2.5.0", 714 | "regenerator-runtime": "0.11.0" 715 | } 716 | }, 717 | "babel-template": { 718 | "version": "6.26.0", 719 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 720 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 721 | "dev": true, 722 | "requires": { 723 | "babel-runtime": "6.26.0", 724 | "babel-traverse": "6.26.0", 725 | "babel-types": "6.26.0", 726 | "babylon": "6.18.0", 727 | "lodash": "4.17.4" 728 | } 729 | }, 730 | "babel-traverse": { 731 | "version": "6.26.0", 732 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 733 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 734 | "dev": true, 735 | "requires": { 736 | "babel-code-frame": "6.26.0", 737 | "babel-messages": "6.23.0", 738 | "babel-runtime": "6.26.0", 739 | "babel-types": "6.26.0", 740 | "babylon": "6.18.0", 741 | "debug": "2.6.8", 742 | "globals": "9.18.0", 743 | "invariant": "2.2.2", 744 | "lodash": "4.17.4" 745 | } 746 | }, 747 | "babel-types": { 748 | "version": "6.26.0", 749 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 750 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 751 | "dev": true, 752 | "requires": { 753 | "babel-runtime": "6.26.0", 754 | "esutils": "2.0.2", 755 | "lodash": "4.17.4", 756 | "to-fast-properties": "1.0.3" 757 | } 758 | }, 759 | "babylon": { 760 | "version": "6.18.0", 761 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 762 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 763 | "dev": true 764 | }, 765 | "balanced-match": { 766 | "version": "1.0.0", 767 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 768 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 769 | "dev": true 770 | }, 771 | "base64-js": { 772 | "version": "1.2.1", 773 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", 774 | "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" 775 | }, 776 | "batch": { 777 | "version": "0.5.3", 778 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", 779 | "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" 780 | }, 781 | "binary-extensions": { 782 | "version": "1.10.0", 783 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", 784 | "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", 785 | "dev": true 786 | }, 787 | "bluebird": { 788 | "version": "3.5.0", 789 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 790 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", 791 | "dev": true 792 | }, 793 | "boxen": { 794 | "version": "1.2.1", 795 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", 796 | "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", 797 | "dev": true, 798 | "requires": { 799 | "ansi-align": "2.0.0", 800 | "camelcase": "4.1.0", 801 | "chalk": "2.1.0", 802 | "cli-boxes": "1.0.0", 803 | "string-width": "2.1.1", 804 | "term-size": "1.2.0", 805 | "widest-line": "1.0.0" 806 | }, 807 | "dependencies": { 808 | "camelcase": { 809 | "version": "4.1.0", 810 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 811 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 812 | "dev": true 813 | } 814 | } 815 | }, 816 | "brace-expansion": { 817 | "version": "1.1.8", 818 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 819 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 820 | "dev": true, 821 | "requires": { 822 | "balanced-match": "1.0.0", 823 | "concat-map": "0.0.1" 824 | } 825 | }, 826 | "braces": { 827 | "version": "1.8.5", 828 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 829 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 830 | "dev": true, 831 | "requires": { 832 | "expand-range": "1.8.2", 833 | "preserve": "0.2.0", 834 | "repeat-element": "1.1.2" 835 | } 836 | }, 837 | "buf-compare": { 838 | "version": "1.0.1", 839 | "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", 840 | "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", 841 | "dev": true 842 | }, 843 | "buffer": { 844 | "version": "4.9.1", 845 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", 846 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", 847 | "requires": { 848 | "base64-js": "1.2.1", 849 | "ieee754": "1.1.8", 850 | "isarray": "1.0.0" 851 | } 852 | }, 853 | "buffer-crc32": { 854 | "version": "0.2.13", 855 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 856 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 857 | }, 858 | "builtin-modules": { 859 | "version": "1.1.1", 860 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 861 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 862 | "dev": true 863 | }, 864 | "caching-transform": { 865 | "version": "1.0.1", 866 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", 867 | "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", 868 | "dev": true, 869 | "requires": { 870 | "md5-hex": "1.3.0", 871 | "mkdirp": "0.5.1", 872 | "write-file-atomic": "1.3.4" 873 | }, 874 | "dependencies": { 875 | "md5-hex": { 876 | "version": "1.3.0", 877 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", 878 | "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", 879 | "dev": true, 880 | "requires": { 881 | "md5-o-matic": "0.1.1" 882 | } 883 | }, 884 | "write-file-atomic": { 885 | "version": "1.3.4", 886 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", 887 | "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", 888 | "dev": true, 889 | "requires": { 890 | "graceful-fs": "4.1.11", 891 | "imurmurhash": "0.1.4", 892 | "slide": "1.1.6" 893 | } 894 | } 895 | } 896 | }, 897 | "call-matcher": { 898 | "version": "1.0.1", 899 | "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", 900 | "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", 901 | "dev": true, 902 | "requires": { 903 | "core-js": "2.5.0", 904 | "deep-equal": "1.0.1", 905 | "espurify": "1.7.0", 906 | "estraverse": "4.2.0" 907 | } 908 | }, 909 | "call-signature": { 910 | "version": "0.0.2", 911 | "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", 912 | "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", 913 | "dev": true 914 | }, 915 | "camelcase": { 916 | "version": "2.1.1", 917 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 918 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 919 | "dev": true 920 | }, 921 | "camelcase-keys": { 922 | "version": "2.1.0", 923 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 924 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 925 | "dev": true, 926 | "requires": { 927 | "camelcase": "2.1.1", 928 | "map-obj": "1.0.1" 929 | } 930 | }, 931 | "capture-stack-trace": { 932 | "version": "1.0.0", 933 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", 934 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", 935 | "dev": true 936 | }, 937 | "chalk": { 938 | "version": "2.1.0", 939 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", 940 | "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", 941 | "dev": true, 942 | "requires": { 943 | "ansi-styles": "3.2.0", 944 | "escape-string-regexp": "1.0.5", 945 | "supports-color": "4.2.1" 946 | } 947 | }, 948 | "chokidar": { 949 | "version": "1.7.0", 950 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 951 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 952 | "dev": true, 953 | "requires": { 954 | "anymatch": "1.3.2", 955 | "async-each": "1.0.1", 956 | "glob-parent": "2.0.0", 957 | "inherits": "2.0.3", 958 | "is-binary-path": "1.0.1", 959 | "is-glob": "2.0.1", 960 | "path-is-absolute": "1.0.1", 961 | "readdirp": "2.1.0" 962 | } 963 | }, 964 | "ci-info": { 965 | "version": "1.0.0", 966 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", 967 | "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", 968 | "dev": true 969 | }, 970 | "clean-stack": { 971 | "version": "1.3.0", 972 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", 973 | "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", 974 | "dev": true 975 | }, 976 | "clean-yaml-object": { 977 | "version": "0.1.0", 978 | "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", 979 | "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", 980 | "dev": true 981 | }, 982 | "cli-boxes": { 983 | "version": "1.0.0", 984 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 985 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 986 | "dev": true 987 | }, 988 | "cli-cursor": { 989 | "version": "2.1.0", 990 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 991 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 992 | "dev": true, 993 | "requires": { 994 | "restore-cursor": "2.0.0" 995 | } 996 | }, 997 | "cli-spinners": { 998 | "version": "1.0.0", 999 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", 1000 | "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", 1001 | "dev": true 1002 | }, 1003 | "cli-truncate": { 1004 | "version": "1.1.0", 1005 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", 1006 | "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", 1007 | "dev": true, 1008 | "requires": { 1009 | "slice-ansi": "1.0.0", 1010 | "string-width": "2.1.1" 1011 | } 1012 | }, 1013 | "co-with-promise": { 1014 | "version": "4.6.0", 1015 | "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", 1016 | "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", 1017 | "dev": true, 1018 | "requires": { 1019 | "pinkie-promise": "1.0.0" 1020 | } 1021 | }, 1022 | "code-excerpt": { 1023 | "version": "2.1.0", 1024 | "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", 1025 | "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", 1026 | "dev": true, 1027 | "requires": { 1028 | "convert-to-spaces": "1.0.2" 1029 | } 1030 | }, 1031 | "code-point-at": { 1032 | "version": "1.1.0", 1033 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 1034 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 1035 | "dev": true 1036 | }, 1037 | "color-convert": { 1038 | "version": "1.9.0", 1039 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", 1040 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", 1041 | "dev": true, 1042 | "requires": { 1043 | "color-name": "1.1.3" 1044 | } 1045 | }, 1046 | "color-name": { 1047 | "version": "1.1.3", 1048 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1049 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1050 | "dev": true 1051 | }, 1052 | "common-path-prefix": { 1053 | "version": "1.0.0", 1054 | "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", 1055 | "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", 1056 | "dev": true 1057 | }, 1058 | "commondir": { 1059 | "version": "1.0.1", 1060 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1061 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1062 | "dev": true 1063 | }, 1064 | "concat-map": { 1065 | "version": "0.0.1", 1066 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1067 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1068 | "dev": true 1069 | }, 1070 | "concordance": { 1071 | "version": "3.0.0", 1072 | "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", 1073 | "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", 1074 | "dev": true, 1075 | "requires": { 1076 | "date-time": "2.1.0", 1077 | "esutils": "2.0.2", 1078 | "fast-diff": "1.1.1", 1079 | "function-name-support": "0.2.0", 1080 | "js-string-escape": "1.0.1", 1081 | "lodash.clonedeep": "4.5.0", 1082 | "lodash.flattendeep": "4.4.0", 1083 | "lodash.merge": "4.6.0", 1084 | "md5-hex": "2.0.0", 1085 | "semver": "5.4.1", 1086 | "well-known-symbols": "1.0.0" 1087 | } 1088 | }, 1089 | "configstore": { 1090 | "version": "3.1.1", 1091 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", 1092 | "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", 1093 | "dev": true, 1094 | "requires": { 1095 | "dot-prop": "4.2.0", 1096 | "graceful-fs": "4.1.11", 1097 | "make-dir": "1.0.0", 1098 | "unique-string": "1.0.0", 1099 | "write-file-atomic": "2.3.0", 1100 | "xdg-basedir": "3.0.0" 1101 | } 1102 | }, 1103 | "convert-source-map": { 1104 | "version": "1.5.0", 1105 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 1106 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 1107 | "dev": true 1108 | }, 1109 | "convert-to-spaces": { 1110 | "version": "1.0.2", 1111 | "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", 1112 | "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", 1113 | "dev": true 1114 | }, 1115 | "core-assert": { 1116 | "version": "0.2.1", 1117 | "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", 1118 | "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", 1119 | "dev": true, 1120 | "requires": { 1121 | "buf-compare": "1.0.1", 1122 | "is-error": "2.2.1" 1123 | } 1124 | }, 1125 | "core-js": { 1126 | "version": "2.5.0", 1127 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", 1128 | "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", 1129 | "dev": true 1130 | }, 1131 | "core-util-is": { 1132 | "version": "1.0.2", 1133 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1134 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1135 | }, 1136 | "create-error-class": { 1137 | "version": "3.0.2", 1138 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 1139 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 1140 | "dev": true, 1141 | "requires": { 1142 | "capture-stack-trace": "1.0.0" 1143 | } 1144 | }, 1145 | "cross-spawn": { 1146 | "version": "5.1.0", 1147 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 1148 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 1149 | "dev": true, 1150 | "requires": { 1151 | "lru-cache": "4.1.1", 1152 | "shebang-command": "1.2.0", 1153 | "which": "1.3.0" 1154 | } 1155 | }, 1156 | "crypto-browserify": { 1157 | "version": "1.0.9", 1158 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", 1159 | "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=" 1160 | }, 1161 | "crypto-random-string": { 1162 | "version": "1.0.0", 1163 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 1164 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 1165 | "dev": true 1166 | }, 1167 | "currently-unhandled": { 1168 | "version": "0.4.1", 1169 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 1170 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 1171 | "dev": true, 1172 | "requires": { 1173 | "array-find-index": "1.0.2" 1174 | } 1175 | }, 1176 | "date-time": { 1177 | "version": "2.1.0", 1178 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", 1179 | "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", 1180 | "dev": true, 1181 | "requires": { 1182 | "time-zone": "1.0.0" 1183 | } 1184 | }, 1185 | "debug": { 1186 | "version": "2.6.8", 1187 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 1188 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 1189 | "dev": true, 1190 | "requires": { 1191 | "ms": "2.0.0" 1192 | } 1193 | }, 1194 | "decamelize": { 1195 | "version": "1.2.0", 1196 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 1197 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 1198 | "dev": true 1199 | }, 1200 | "deep-equal": { 1201 | "version": "1.0.1", 1202 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 1203 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 1204 | "dev": true 1205 | }, 1206 | "deep-extend": { 1207 | "version": "0.4.2", 1208 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 1209 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", 1210 | "dev": true 1211 | }, 1212 | "detect-indent": { 1213 | "version": "4.0.0", 1214 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 1215 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1216 | "dev": true, 1217 | "requires": { 1218 | "repeating": "2.0.1" 1219 | } 1220 | }, 1221 | "dot-prop": { 1222 | "version": "4.2.0", 1223 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", 1224 | "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", 1225 | "dev": true, 1226 | "requires": { 1227 | "is-obj": "1.0.1" 1228 | } 1229 | }, 1230 | "duplexer3": { 1231 | "version": "0.1.4", 1232 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 1233 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 1234 | "dev": true 1235 | }, 1236 | "empower-core": { 1237 | "version": "0.6.2", 1238 | "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", 1239 | "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", 1240 | "dev": true, 1241 | "requires": { 1242 | "call-signature": "0.0.2", 1243 | "core-js": "2.5.0" 1244 | } 1245 | }, 1246 | "equal-length": { 1247 | "version": "1.0.1", 1248 | "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", 1249 | "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", 1250 | "dev": true 1251 | }, 1252 | "error-ex": { 1253 | "version": "1.3.1", 1254 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 1255 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 1256 | "dev": true, 1257 | "requires": { 1258 | "is-arrayish": "0.2.1" 1259 | } 1260 | }, 1261 | "es6-error": { 1262 | "version": "4.0.2", 1263 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", 1264 | "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", 1265 | "dev": true 1266 | }, 1267 | "escape-string-regexp": { 1268 | "version": "1.0.5", 1269 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1270 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1271 | "dev": true 1272 | }, 1273 | "espower-location-detector": { 1274 | "version": "1.0.0", 1275 | "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", 1276 | "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", 1277 | "dev": true, 1278 | "requires": { 1279 | "is-url": "1.2.2", 1280 | "path-is-absolute": "1.0.1", 1281 | "source-map": "0.5.7", 1282 | "xtend": "4.0.1" 1283 | } 1284 | }, 1285 | "esprima": { 1286 | "version": "4.0.0", 1287 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 1288 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 1289 | "dev": true 1290 | }, 1291 | "espurify": { 1292 | "version": "1.7.0", 1293 | "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", 1294 | "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", 1295 | "dev": true, 1296 | "requires": { 1297 | "core-js": "2.5.0" 1298 | } 1299 | }, 1300 | "estraverse": { 1301 | "version": "4.2.0", 1302 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1303 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1304 | "dev": true 1305 | }, 1306 | "esutils": { 1307 | "version": "2.0.2", 1308 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1309 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1310 | "dev": true 1311 | }, 1312 | "events": { 1313 | "version": "1.1.1", 1314 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 1315 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" 1316 | }, 1317 | "execa": { 1318 | "version": "0.7.0", 1319 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 1320 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 1321 | "dev": true, 1322 | "requires": { 1323 | "cross-spawn": "5.1.0", 1324 | "get-stream": "3.0.0", 1325 | "is-stream": "1.1.0", 1326 | "npm-run-path": "2.0.2", 1327 | "p-finally": "1.0.0", 1328 | "signal-exit": "3.0.2", 1329 | "strip-eof": "1.0.0" 1330 | } 1331 | }, 1332 | "expand-brackets": { 1333 | "version": "0.1.5", 1334 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 1335 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 1336 | "dev": true, 1337 | "requires": { 1338 | "is-posix-bracket": "0.1.1" 1339 | } 1340 | }, 1341 | "expand-range": { 1342 | "version": "1.8.2", 1343 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 1344 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 1345 | "dev": true, 1346 | "requires": { 1347 | "fill-range": "2.2.3" 1348 | } 1349 | }, 1350 | "extglob": { 1351 | "version": "0.3.2", 1352 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1353 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1354 | "dev": true, 1355 | "requires": { 1356 | "is-extglob": "1.0.0" 1357 | } 1358 | }, 1359 | "fast-diff": { 1360 | "version": "1.1.1", 1361 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", 1362 | "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", 1363 | "dev": true 1364 | }, 1365 | "figures": { 1366 | "version": "2.0.0", 1367 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1368 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1369 | "dev": true, 1370 | "requires": { 1371 | "escape-string-regexp": "1.0.5" 1372 | } 1373 | }, 1374 | "filename-regex": { 1375 | "version": "2.0.1", 1376 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1377 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1378 | "dev": true 1379 | }, 1380 | "fill-range": { 1381 | "version": "2.2.3", 1382 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 1383 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 1384 | "dev": true, 1385 | "requires": { 1386 | "is-number": "2.1.0", 1387 | "isobject": "2.1.0", 1388 | "randomatic": "1.1.7", 1389 | "repeat-element": "1.1.2", 1390 | "repeat-string": "1.6.1" 1391 | } 1392 | }, 1393 | "find-cache-dir": { 1394 | "version": "1.0.0", 1395 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", 1396 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", 1397 | "dev": true, 1398 | "requires": { 1399 | "commondir": "1.0.1", 1400 | "make-dir": "1.0.0", 1401 | "pkg-dir": "2.0.0" 1402 | } 1403 | }, 1404 | "find-up": { 1405 | "version": "2.1.0", 1406 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1407 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1408 | "dev": true, 1409 | "requires": { 1410 | "locate-path": "2.0.0" 1411 | } 1412 | }, 1413 | "fn-name": { 1414 | "version": "2.0.1", 1415 | "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", 1416 | "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", 1417 | "dev": true 1418 | }, 1419 | "for-in": { 1420 | "version": "1.0.2", 1421 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1422 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1423 | "dev": true 1424 | }, 1425 | "for-own": { 1426 | "version": "0.1.5", 1427 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1428 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1429 | "dev": true, 1430 | "requires": { 1431 | "for-in": "1.0.2" 1432 | } 1433 | }, 1434 | "formatio": { 1435 | "version": "1.1.1", 1436 | "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", 1437 | "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", 1438 | "dev": true, 1439 | "requires": { 1440 | "samsam": "1.1.2" 1441 | } 1442 | }, 1443 | "fs-extra": { 1444 | "version": "0.6.4", 1445 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz", 1446 | "integrity": "sha1-9G8MdbeEH40gCzNIzU1pHVoJnRU=", 1447 | "requires": { 1448 | "jsonfile": "1.0.1", 1449 | "mkdirp": "0.3.5", 1450 | "ncp": "0.4.2", 1451 | "rimraf": "2.2.8" 1452 | }, 1453 | "dependencies": { 1454 | "mkdirp": { 1455 | "version": "0.3.5", 1456 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", 1457 | "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" 1458 | } 1459 | } 1460 | }, 1461 | "fs.realpath": { 1462 | "version": "1.0.0", 1463 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1464 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1465 | "dev": true 1466 | }, 1467 | "function-name-support": { 1468 | "version": "0.2.0", 1469 | "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", 1470 | "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", 1471 | "dev": true 1472 | }, 1473 | "get-port": { 1474 | "version": "3.2.0", 1475 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 1476 | "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", 1477 | "dev": true 1478 | }, 1479 | "get-stdin": { 1480 | "version": "4.0.1", 1481 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 1482 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", 1483 | "dev": true 1484 | }, 1485 | "get-stream": { 1486 | "version": "3.0.0", 1487 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1488 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 1489 | "dev": true 1490 | }, 1491 | "glob": { 1492 | "version": "7.1.2", 1493 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1494 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1495 | "dev": true, 1496 | "requires": { 1497 | "fs.realpath": "1.0.0", 1498 | "inflight": "1.0.6", 1499 | "inherits": "2.0.3", 1500 | "minimatch": "3.0.4", 1501 | "once": "1.4.0", 1502 | "path-is-absolute": "1.0.1" 1503 | } 1504 | }, 1505 | "glob-base": { 1506 | "version": "0.3.0", 1507 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1508 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1509 | "dev": true, 1510 | "requires": { 1511 | "glob-parent": "2.0.0", 1512 | "is-glob": "2.0.1" 1513 | } 1514 | }, 1515 | "glob-parent": { 1516 | "version": "2.0.0", 1517 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1518 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1519 | "dev": true, 1520 | "requires": { 1521 | "is-glob": "2.0.1" 1522 | } 1523 | }, 1524 | "globals": { 1525 | "version": "9.18.0", 1526 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1527 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1528 | "dev": true 1529 | }, 1530 | "globby": { 1531 | "version": "6.1.0", 1532 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 1533 | "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", 1534 | "dev": true, 1535 | "requires": { 1536 | "array-union": "1.0.2", 1537 | "glob": "7.1.2", 1538 | "object-assign": "4.1.1", 1539 | "pify": "2.3.0", 1540 | "pinkie-promise": "2.0.1" 1541 | }, 1542 | "dependencies": { 1543 | "pinkie": { 1544 | "version": "2.0.4", 1545 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1546 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1547 | "dev": true 1548 | }, 1549 | "pinkie-promise": { 1550 | "version": "2.0.1", 1551 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1552 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1553 | "dev": true, 1554 | "requires": { 1555 | "pinkie": "2.0.4" 1556 | } 1557 | } 1558 | } 1559 | }, 1560 | "got": { 1561 | "version": "6.7.1", 1562 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 1563 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 1564 | "dev": true, 1565 | "requires": { 1566 | "create-error-class": "3.0.2", 1567 | "duplexer3": "0.1.4", 1568 | "get-stream": "3.0.0", 1569 | "is-redirect": "1.0.0", 1570 | "is-retry-allowed": "1.1.0", 1571 | "is-stream": "1.1.0", 1572 | "lowercase-keys": "1.0.0", 1573 | "safe-buffer": "5.1.1", 1574 | "timed-out": "4.0.1", 1575 | "unzip-response": "2.0.1", 1576 | "url-parse-lax": "1.0.0" 1577 | } 1578 | }, 1579 | "graceful-fs": { 1580 | "version": "4.1.11", 1581 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1582 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1583 | "dev": true 1584 | }, 1585 | "has-ansi": { 1586 | "version": "2.0.0", 1587 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1588 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1589 | "dev": true, 1590 | "requires": { 1591 | "ansi-regex": "2.1.1" 1592 | } 1593 | }, 1594 | "has-color": { 1595 | "version": "0.1.7", 1596 | "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", 1597 | "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", 1598 | "dev": true 1599 | }, 1600 | "has-flag": { 1601 | "version": "2.0.0", 1602 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1603 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 1604 | "dev": true 1605 | }, 1606 | "has-yarn": { 1607 | "version": "1.0.0", 1608 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", 1609 | "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", 1610 | "dev": true 1611 | }, 1612 | "home-or-tmp": { 1613 | "version": "2.0.0", 1614 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 1615 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 1616 | "dev": true, 1617 | "requires": { 1618 | "os-homedir": "1.0.2", 1619 | "os-tmpdir": "1.0.2" 1620 | } 1621 | }, 1622 | "hosted-git-info": { 1623 | "version": "2.5.0", 1624 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 1625 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 1626 | "dev": true 1627 | }, 1628 | "hullabaloo-config-manager": { 1629 | "version": "1.1.1", 1630 | "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", 1631 | "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", 1632 | "dev": true, 1633 | "requires": { 1634 | "dot-prop": "4.2.0", 1635 | "es6-error": "4.0.2", 1636 | "graceful-fs": "4.1.11", 1637 | "indent-string": "3.2.0", 1638 | "json5": "0.5.1", 1639 | "lodash.clonedeep": "4.5.0", 1640 | "lodash.clonedeepwith": "4.5.0", 1641 | "lodash.isequal": "4.5.0", 1642 | "lodash.merge": "4.6.0", 1643 | "md5-hex": "2.0.0", 1644 | "package-hash": "2.0.0", 1645 | "pkg-dir": "2.0.0", 1646 | "resolve-from": "3.0.0", 1647 | "safe-buffer": "5.1.1" 1648 | } 1649 | }, 1650 | "ieee754": { 1651 | "version": "1.1.8", 1652 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", 1653 | "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" 1654 | }, 1655 | "ignore-by-default": { 1656 | "version": "1.0.1", 1657 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1658 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", 1659 | "dev": true 1660 | }, 1661 | "import-lazy": { 1662 | "version": "2.1.0", 1663 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1664 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 1665 | "dev": true 1666 | }, 1667 | "import-local": { 1668 | "version": "0.1.1", 1669 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", 1670 | "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", 1671 | "dev": true, 1672 | "requires": { 1673 | "pkg-dir": "2.0.0", 1674 | "resolve-cwd": "2.0.0" 1675 | } 1676 | }, 1677 | "imurmurhash": { 1678 | "version": "0.1.4", 1679 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1680 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1681 | "dev": true 1682 | }, 1683 | "indent-string": { 1684 | "version": "3.2.0", 1685 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 1686 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 1687 | "dev": true 1688 | }, 1689 | "inflight": { 1690 | "version": "1.0.6", 1691 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1692 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1693 | "dev": true, 1694 | "requires": { 1695 | "once": "1.4.0", 1696 | "wrappy": "1.0.2" 1697 | } 1698 | }, 1699 | "inherits": { 1700 | "version": "2.0.3", 1701 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1702 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1703 | }, 1704 | "ini": { 1705 | "version": "1.3.4", 1706 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 1707 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 1708 | "dev": true 1709 | }, 1710 | "invariant": { 1711 | "version": "2.2.2", 1712 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 1713 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 1714 | "dev": true, 1715 | "requires": { 1716 | "loose-envify": "1.3.1" 1717 | } 1718 | }, 1719 | "irregular-plurals": { 1720 | "version": "1.3.0", 1721 | "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", 1722 | "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", 1723 | "dev": true 1724 | }, 1725 | "is-arrayish": { 1726 | "version": "0.2.1", 1727 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1728 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1729 | "dev": true 1730 | }, 1731 | "is-binary-path": { 1732 | "version": "1.0.1", 1733 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1734 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1735 | "dev": true, 1736 | "requires": { 1737 | "binary-extensions": "1.10.0" 1738 | } 1739 | }, 1740 | "is-buffer": { 1741 | "version": "1.1.5", 1742 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 1743 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 1744 | "dev": true 1745 | }, 1746 | "is-builtin-module": { 1747 | "version": "1.0.0", 1748 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 1749 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 1750 | "dev": true, 1751 | "requires": { 1752 | "builtin-modules": "1.1.1" 1753 | } 1754 | }, 1755 | "is-ci": { 1756 | "version": "1.0.10", 1757 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", 1758 | "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", 1759 | "dev": true, 1760 | "requires": { 1761 | "ci-info": "1.0.0" 1762 | } 1763 | }, 1764 | "is-dotfile": { 1765 | "version": "1.0.3", 1766 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1767 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1768 | "dev": true 1769 | }, 1770 | "is-equal-shallow": { 1771 | "version": "0.1.3", 1772 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1773 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1774 | "dev": true, 1775 | "requires": { 1776 | "is-primitive": "2.0.0" 1777 | } 1778 | }, 1779 | "is-error": { 1780 | "version": "2.2.1", 1781 | "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", 1782 | "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", 1783 | "dev": true 1784 | }, 1785 | "is-extendable": { 1786 | "version": "0.1.1", 1787 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1788 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1789 | "dev": true 1790 | }, 1791 | "is-extglob": { 1792 | "version": "1.0.0", 1793 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1794 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1795 | "dev": true 1796 | }, 1797 | "is-finite": { 1798 | "version": "1.0.2", 1799 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1800 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1801 | "dev": true, 1802 | "requires": { 1803 | "number-is-nan": "1.0.1" 1804 | } 1805 | }, 1806 | "is-fullwidth-code-point": { 1807 | "version": "2.0.0", 1808 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1809 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1810 | "dev": true 1811 | }, 1812 | "is-generator-fn": { 1813 | "version": "1.0.0", 1814 | "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", 1815 | "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", 1816 | "dev": true 1817 | }, 1818 | "is-glob": { 1819 | "version": "2.0.1", 1820 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1821 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1822 | "dev": true, 1823 | "requires": { 1824 | "is-extglob": "1.0.0" 1825 | } 1826 | }, 1827 | "is-npm": { 1828 | "version": "1.0.0", 1829 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 1830 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", 1831 | "dev": true 1832 | }, 1833 | "is-number": { 1834 | "version": "2.1.0", 1835 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1836 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1837 | "dev": true, 1838 | "requires": { 1839 | "kind-of": "3.2.2" 1840 | } 1841 | }, 1842 | "is-obj": { 1843 | "version": "1.0.1", 1844 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1845 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1846 | "dev": true 1847 | }, 1848 | "is-observable": { 1849 | "version": "0.2.0", 1850 | "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", 1851 | "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", 1852 | "dev": true, 1853 | "requires": { 1854 | "symbol-observable": "0.2.4" 1855 | } 1856 | }, 1857 | "is-plain-obj": { 1858 | "version": "1.1.0", 1859 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1860 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 1861 | "dev": true 1862 | }, 1863 | "is-posix-bracket": { 1864 | "version": "0.1.1", 1865 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1866 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1867 | "dev": true 1868 | }, 1869 | "is-primitive": { 1870 | "version": "2.0.0", 1871 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1872 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1873 | "dev": true 1874 | }, 1875 | "is-promise": { 1876 | "version": "2.1.0", 1877 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1878 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1879 | "dev": true 1880 | }, 1881 | "is-redirect": { 1882 | "version": "1.0.0", 1883 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 1884 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", 1885 | "dev": true 1886 | }, 1887 | "is-retry-allowed": { 1888 | "version": "1.1.0", 1889 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 1890 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", 1891 | "dev": true 1892 | }, 1893 | "is-stream": { 1894 | "version": "1.1.0", 1895 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1896 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1897 | "dev": true 1898 | }, 1899 | "is-url": { 1900 | "version": "1.2.2", 1901 | "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", 1902 | "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", 1903 | "dev": true 1904 | }, 1905 | "is-utf8": { 1906 | "version": "0.2.1", 1907 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1908 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1909 | "dev": true 1910 | }, 1911 | "isarray": { 1912 | "version": "1.0.0", 1913 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1914 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1915 | }, 1916 | "isexe": { 1917 | "version": "2.0.0", 1918 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1919 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1920 | "dev": true 1921 | }, 1922 | "isobject": { 1923 | "version": "2.1.0", 1924 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1925 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1926 | "dev": true, 1927 | "requires": { 1928 | "isarray": "1.0.0" 1929 | } 1930 | }, 1931 | "jmespath": { 1932 | "version": "0.15.0", 1933 | "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", 1934 | "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" 1935 | }, 1936 | "js-string-escape": { 1937 | "version": "1.0.1", 1938 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 1939 | "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", 1940 | "dev": true 1941 | }, 1942 | "js-tokens": { 1943 | "version": "3.0.2", 1944 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1945 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1946 | "dev": true 1947 | }, 1948 | "js-yaml": { 1949 | "version": "3.9.1", 1950 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", 1951 | "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", 1952 | "dev": true, 1953 | "requires": { 1954 | "argparse": "1.0.9", 1955 | "esprima": "4.0.0" 1956 | } 1957 | }, 1958 | "jsesc": { 1959 | "version": "0.5.0", 1960 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1961 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1962 | "dev": true 1963 | }, 1964 | "json5": { 1965 | "version": "0.5.1", 1966 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1967 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 1968 | "dev": true 1969 | }, 1970 | "jsonfile": { 1971 | "version": "1.0.1", 1972 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz", 1973 | "integrity": "sha1-6l7+QLg2kLmGZ2FKc5L8YOhCwN0=" 1974 | }, 1975 | "kind-of": { 1976 | "version": "3.2.2", 1977 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1978 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1979 | "dev": true, 1980 | "requires": { 1981 | "is-buffer": "1.1.5" 1982 | } 1983 | }, 1984 | "last-line-stream": { 1985 | "version": "1.0.0", 1986 | "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", 1987 | "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", 1988 | "dev": true, 1989 | "requires": { 1990 | "through2": "2.0.3" 1991 | } 1992 | }, 1993 | "latest-version": { 1994 | "version": "3.1.0", 1995 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 1996 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 1997 | "dev": true, 1998 | "requires": { 1999 | "package-json": "4.0.1" 2000 | } 2001 | }, 2002 | "load-json-file": { 2003 | "version": "2.0.0", 2004 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2005 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 2006 | "dev": true, 2007 | "requires": { 2008 | "graceful-fs": "4.1.11", 2009 | "parse-json": "2.2.0", 2010 | "pify": "2.3.0", 2011 | "strip-bom": "3.0.0" 2012 | } 2013 | }, 2014 | "locate-path": { 2015 | "version": "2.0.0", 2016 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2017 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2018 | "dev": true, 2019 | "requires": { 2020 | "p-locate": "2.0.0", 2021 | "path-exists": "3.0.0" 2022 | } 2023 | }, 2024 | "lodash": { 2025 | "version": "4.17.4", 2026 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 2027 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" 2028 | }, 2029 | "lodash.clonedeep": { 2030 | "version": "4.5.0", 2031 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2032 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 2033 | "dev": true 2034 | }, 2035 | "lodash.clonedeepwith": { 2036 | "version": "4.5.0", 2037 | "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", 2038 | "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", 2039 | "dev": true 2040 | }, 2041 | "lodash.debounce": { 2042 | "version": "4.0.8", 2043 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 2044 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", 2045 | "dev": true 2046 | }, 2047 | "lodash.difference": { 2048 | "version": "4.5.0", 2049 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", 2050 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", 2051 | "dev": true 2052 | }, 2053 | "lodash.flatten": { 2054 | "version": "4.4.0", 2055 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 2056 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", 2057 | "dev": true 2058 | }, 2059 | "lodash.flattendeep": { 2060 | "version": "4.4.0", 2061 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 2062 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 2063 | "dev": true 2064 | }, 2065 | "lodash.isequal": { 2066 | "version": "4.5.0", 2067 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 2068 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", 2069 | "dev": true 2070 | }, 2071 | "lodash.merge": { 2072 | "version": "4.6.0", 2073 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", 2074 | "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", 2075 | "dev": true 2076 | }, 2077 | "lolex": { 2078 | "version": "1.3.2", 2079 | "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", 2080 | "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", 2081 | "dev": true 2082 | }, 2083 | "loose-envify": { 2084 | "version": "1.3.1", 2085 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 2086 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 2087 | "dev": true, 2088 | "requires": { 2089 | "js-tokens": "3.0.2" 2090 | } 2091 | }, 2092 | "loud-rejection": { 2093 | "version": "1.6.0", 2094 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 2095 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 2096 | "dev": true, 2097 | "requires": { 2098 | "currently-unhandled": "0.4.1", 2099 | "signal-exit": "3.0.2" 2100 | } 2101 | }, 2102 | "lowercase-keys": { 2103 | "version": "1.0.0", 2104 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 2105 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", 2106 | "dev": true 2107 | }, 2108 | "lru-cache": { 2109 | "version": "4.1.1", 2110 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 2111 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", 2112 | "dev": true, 2113 | "requires": { 2114 | "pseudomap": "1.0.2", 2115 | "yallist": "2.1.2" 2116 | } 2117 | }, 2118 | "make-dir": { 2119 | "version": "1.0.0", 2120 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", 2121 | "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", 2122 | "dev": true, 2123 | "requires": { 2124 | "pify": "2.3.0" 2125 | } 2126 | }, 2127 | "map-obj": { 2128 | "version": "1.0.1", 2129 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 2130 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 2131 | "dev": true 2132 | }, 2133 | "matcher": { 2134 | "version": "1.0.0", 2135 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", 2136 | "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", 2137 | "dev": true, 2138 | "requires": { 2139 | "escape-string-regexp": "1.0.5" 2140 | } 2141 | }, 2142 | "md5-hex": { 2143 | "version": "2.0.0", 2144 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", 2145 | "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", 2146 | "dev": true, 2147 | "requires": { 2148 | "md5-o-matic": "0.1.1" 2149 | } 2150 | }, 2151 | "md5-o-matic": { 2152 | "version": "0.1.1", 2153 | "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", 2154 | "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", 2155 | "dev": true 2156 | }, 2157 | "meow": { 2158 | "version": "3.7.0", 2159 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 2160 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 2161 | "dev": true, 2162 | "requires": { 2163 | "camelcase-keys": "2.1.0", 2164 | "decamelize": "1.2.0", 2165 | "loud-rejection": "1.6.0", 2166 | "map-obj": "1.0.1", 2167 | "minimist": "1.2.0", 2168 | "normalize-package-data": "2.4.0", 2169 | "object-assign": "4.1.1", 2170 | "read-pkg-up": "1.0.1", 2171 | "redent": "1.0.0", 2172 | "trim-newlines": "1.0.0" 2173 | }, 2174 | "dependencies": { 2175 | "find-up": { 2176 | "version": "1.1.2", 2177 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 2178 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 2179 | "dev": true, 2180 | "requires": { 2181 | "path-exists": "2.1.0", 2182 | "pinkie-promise": "2.0.1" 2183 | } 2184 | }, 2185 | "load-json-file": { 2186 | "version": "1.1.0", 2187 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 2188 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 2189 | "dev": true, 2190 | "requires": { 2191 | "graceful-fs": "4.1.11", 2192 | "parse-json": "2.2.0", 2193 | "pify": "2.3.0", 2194 | "pinkie-promise": "2.0.1", 2195 | "strip-bom": "2.0.0" 2196 | } 2197 | }, 2198 | "minimist": { 2199 | "version": "1.2.0", 2200 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2201 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2202 | "dev": true 2203 | }, 2204 | "path-exists": { 2205 | "version": "2.1.0", 2206 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 2207 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 2208 | "dev": true, 2209 | "requires": { 2210 | "pinkie-promise": "2.0.1" 2211 | } 2212 | }, 2213 | "path-type": { 2214 | "version": "1.1.0", 2215 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 2216 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 2217 | "dev": true, 2218 | "requires": { 2219 | "graceful-fs": "4.1.11", 2220 | "pify": "2.3.0", 2221 | "pinkie-promise": "2.0.1" 2222 | } 2223 | }, 2224 | "pinkie": { 2225 | "version": "2.0.4", 2226 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2227 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2228 | "dev": true 2229 | }, 2230 | "pinkie-promise": { 2231 | "version": "2.0.1", 2232 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2233 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2234 | "dev": true, 2235 | "requires": { 2236 | "pinkie": "2.0.4" 2237 | } 2238 | }, 2239 | "read-pkg": { 2240 | "version": "1.1.0", 2241 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 2242 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 2243 | "dev": true, 2244 | "requires": { 2245 | "load-json-file": "1.1.0", 2246 | "normalize-package-data": "2.4.0", 2247 | "path-type": "1.1.0" 2248 | } 2249 | }, 2250 | "read-pkg-up": { 2251 | "version": "1.0.1", 2252 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 2253 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 2254 | "dev": true, 2255 | "requires": { 2256 | "find-up": "1.1.2", 2257 | "read-pkg": "1.1.0" 2258 | } 2259 | }, 2260 | "strip-bom": { 2261 | "version": "2.0.0", 2262 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2263 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2264 | "dev": true, 2265 | "requires": { 2266 | "is-utf8": "0.2.1" 2267 | } 2268 | } 2269 | } 2270 | }, 2271 | "micromatch": { 2272 | "version": "2.3.11", 2273 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 2274 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 2275 | "dev": true, 2276 | "requires": { 2277 | "arr-diff": "2.0.0", 2278 | "array-unique": "0.2.1", 2279 | "braces": "1.8.5", 2280 | "expand-brackets": "0.1.5", 2281 | "extglob": "0.3.2", 2282 | "filename-regex": "2.0.1", 2283 | "is-extglob": "1.0.0", 2284 | "is-glob": "2.0.1", 2285 | "kind-of": "3.2.2", 2286 | "normalize-path": "2.1.1", 2287 | "object.omit": "2.0.1", 2288 | "parse-glob": "3.0.4", 2289 | "regex-cache": "0.4.3" 2290 | } 2291 | }, 2292 | "mimic-fn": { 2293 | "version": "1.1.0", 2294 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", 2295 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", 2296 | "dev": true 2297 | }, 2298 | "minimatch": { 2299 | "version": "3.0.4", 2300 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2301 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2302 | "dev": true, 2303 | "requires": { 2304 | "brace-expansion": "1.1.8" 2305 | } 2306 | }, 2307 | "minimist": { 2308 | "version": "0.0.8", 2309 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2310 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 2311 | }, 2312 | "mkdirp": { 2313 | "version": "0.5.1", 2314 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2315 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2316 | "requires": { 2317 | "minimist": "0.0.8" 2318 | } 2319 | }, 2320 | "mock-aws-s3": { 2321 | "version": "2.6.0", 2322 | "resolved": "https://registry.npmjs.org/mock-aws-s3/-/mock-aws-s3-2.6.0.tgz", 2323 | "integrity": "sha512-eZVouXl5EKoXSDX/TRyVsIg9MXBnlL60iPBpF5XPOEMPtpftLc57nLDjqtNkWyRhTjn3jWc/oP0TaAgXv5bYKA==", 2324 | "requires": { 2325 | "fs-extra": "0.6.4", 2326 | "underscore": "1.8.3" 2327 | } 2328 | }, 2329 | "ms": { 2330 | "version": "2.0.0", 2331 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2332 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2333 | "dev": true 2334 | }, 2335 | "multimatch": { 2336 | "version": "2.1.0", 2337 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", 2338 | "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", 2339 | "dev": true, 2340 | "requires": { 2341 | "array-differ": "1.0.0", 2342 | "array-union": "1.0.2", 2343 | "arrify": "1.0.1", 2344 | "minimatch": "3.0.4" 2345 | } 2346 | }, 2347 | "ncp": { 2348 | "version": "0.4.2", 2349 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", 2350 | "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" 2351 | }, 2352 | "normalize-package-data": { 2353 | "version": "2.4.0", 2354 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 2355 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 2356 | "dev": true, 2357 | "requires": { 2358 | "hosted-git-info": "2.5.0", 2359 | "is-builtin-module": "1.0.0", 2360 | "semver": "5.4.1", 2361 | "validate-npm-package-license": "3.0.1" 2362 | } 2363 | }, 2364 | "normalize-path": { 2365 | "version": "2.1.1", 2366 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2367 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2368 | "dev": true, 2369 | "requires": { 2370 | "remove-trailing-separator": "1.1.0" 2371 | } 2372 | }, 2373 | "npm-run-path": { 2374 | "version": "2.0.2", 2375 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2376 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2377 | "dev": true, 2378 | "requires": { 2379 | "path-key": "2.0.1" 2380 | } 2381 | }, 2382 | "number-is-nan": { 2383 | "version": "1.0.1", 2384 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2385 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2386 | "dev": true 2387 | }, 2388 | "object-assign": { 2389 | "version": "4.1.1", 2390 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2391 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2392 | "dev": true 2393 | }, 2394 | "object.omit": { 2395 | "version": "2.0.1", 2396 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2397 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2398 | "dev": true, 2399 | "requires": { 2400 | "for-own": "0.1.5", 2401 | "is-extendable": "0.1.1" 2402 | } 2403 | }, 2404 | "observable-to-promise": { 2405 | "version": "0.5.0", 2406 | "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", 2407 | "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", 2408 | "dev": true, 2409 | "requires": { 2410 | "is-observable": "0.2.0", 2411 | "symbol-observable": "1.0.4" 2412 | }, 2413 | "dependencies": { 2414 | "symbol-observable": { 2415 | "version": "1.0.4", 2416 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", 2417 | "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", 2418 | "dev": true 2419 | } 2420 | } 2421 | }, 2422 | "once": { 2423 | "version": "1.4.0", 2424 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2425 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2426 | "dev": true, 2427 | "requires": { 2428 | "wrappy": "1.0.2" 2429 | } 2430 | }, 2431 | "onetime": { 2432 | "version": "2.0.1", 2433 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2434 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 2435 | "dev": true, 2436 | "requires": { 2437 | "mimic-fn": "1.1.0" 2438 | } 2439 | }, 2440 | "option-chain": { 2441 | "version": "1.0.0", 2442 | "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", 2443 | "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", 2444 | "dev": true 2445 | }, 2446 | "os-homedir": { 2447 | "version": "1.0.2", 2448 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2449 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2450 | "dev": true 2451 | }, 2452 | "os-tmpdir": { 2453 | "version": "1.0.2", 2454 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2455 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2456 | "dev": true 2457 | }, 2458 | "p-finally": { 2459 | "version": "1.0.0", 2460 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2461 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 2462 | "dev": true 2463 | }, 2464 | "p-limit": { 2465 | "version": "1.1.0", 2466 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", 2467 | "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", 2468 | "dev": true 2469 | }, 2470 | "p-locate": { 2471 | "version": "2.0.0", 2472 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2473 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2474 | "dev": true, 2475 | "requires": { 2476 | "p-limit": "1.1.0" 2477 | } 2478 | }, 2479 | "package-hash": { 2480 | "version": "2.0.0", 2481 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", 2482 | "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", 2483 | "dev": true, 2484 | "requires": { 2485 | "graceful-fs": "4.1.11", 2486 | "lodash.flattendeep": "4.4.0", 2487 | "md5-hex": "2.0.0", 2488 | "release-zalgo": "1.0.0" 2489 | } 2490 | }, 2491 | "package-json": { 2492 | "version": "4.0.1", 2493 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 2494 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 2495 | "dev": true, 2496 | "requires": { 2497 | "got": "6.7.1", 2498 | "registry-auth-token": "3.3.1", 2499 | "registry-url": "3.1.0", 2500 | "semver": "5.4.1" 2501 | } 2502 | }, 2503 | "parse-glob": { 2504 | "version": "3.0.4", 2505 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2506 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2507 | "dev": true, 2508 | "requires": { 2509 | "glob-base": "0.3.0", 2510 | "is-dotfile": "1.0.3", 2511 | "is-extglob": "1.0.0", 2512 | "is-glob": "2.0.1" 2513 | } 2514 | }, 2515 | "parse-json": { 2516 | "version": "2.2.0", 2517 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2518 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2519 | "dev": true, 2520 | "requires": { 2521 | "error-ex": "1.3.1" 2522 | } 2523 | }, 2524 | "parse-ms": { 2525 | "version": "1.0.1", 2526 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", 2527 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 2528 | "dev": true 2529 | }, 2530 | "path-exists": { 2531 | "version": "3.0.0", 2532 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2533 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2534 | "dev": true 2535 | }, 2536 | "path-is-absolute": { 2537 | "version": "1.0.1", 2538 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2539 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2540 | "dev": true 2541 | }, 2542 | "path-key": { 2543 | "version": "2.0.1", 2544 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2545 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2546 | "dev": true 2547 | }, 2548 | "path-type": { 2549 | "version": "2.0.0", 2550 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2551 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2552 | "dev": true, 2553 | "requires": { 2554 | "pify": "2.3.0" 2555 | } 2556 | }, 2557 | "persist-store": { 2558 | "version": "2.0.1", 2559 | "resolved": "https://registry.npmjs.org/persist-store/-/persist-store-2.0.1.tgz", 2560 | "integrity": "sha1-N0sP6albXQYANZZOj8zCoPIbg0s=", 2561 | "requires": { 2562 | "mkdirp": "0.5.1", 2563 | "s3-lambda": "5.1.8" 2564 | } 2565 | }, 2566 | "pify": { 2567 | "version": "2.3.0", 2568 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2569 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2570 | "dev": true 2571 | }, 2572 | "pinkie": { 2573 | "version": "1.0.0", 2574 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", 2575 | "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", 2576 | "dev": true 2577 | }, 2578 | "pinkie-promise": { 2579 | "version": "1.0.0", 2580 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", 2581 | "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", 2582 | "dev": true, 2583 | "requires": { 2584 | "pinkie": "1.0.0" 2585 | } 2586 | }, 2587 | "pkg-conf": { 2588 | "version": "2.0.0", 2589 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", 2590 | "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", 2591 | "dev": true, 2592 | "requires": { 2593 | "find-up": "2.1.0", 2594 | "load-json-file": "2.0.0" 2595 | } 2596 | }, 2597 | "pkg-dir": { 2598 | "version": "2.0.0", 2599 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2600 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2601 | "dev": true, 2602 | "requires": { 2603 | "find-up": "2.1.0" 2604 | } 2605 | }, 2606 | "plur": { 2607 | "version": "2.1.2", 2608 | "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", 2609 | "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", 2610 | "dev": true, 2611 | "requires": { 2612 | "irregular-plurals": "1.3.0" 2613 | } 2614 | }, 2615 | "prepend-http": { 2616 | "version": "1.0.4", 2617 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 2618 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 2619 | "dev": true 2620 | }, 2621 | "preserve": { 2622 | "version": "0.2.0", 2623 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2624 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2625 | "dev": true 2626 | }, 2627 | "pretty-ms": { 2628 | "version": "2.1.0", 2629 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", 2630 | "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", 2631 | "dev": true, 2632 | "requires": { 2633 | "is-finite": "1.0.2", 2634 | "parse-ms": "1.0.1", 2635 | "plur": "1.0.0" 2636 | }, 2637 | "dependencies": { 2638 | "plur": { 2639 | "version": "1.0.0", 2640 | "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", 2641 | "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", 2642 | "dev": true 2643 | } 2644 | } 2645 | }, 2646 | "private": { 2647 | "version": "0.1.7", 2648 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 2649 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 2650 | "dev": true 2651 | }, 2652 | "process-nextick-args": { 2653 | "version": "1.0.7", 2654 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 2655 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" 2656 | }, 2657 | "progress": { 2658 | "version": "1.1.8", 2659 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 2660 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" 2661 | }, 2662 | "pseudomap": { 2663 | "version": "1.0.2", 2664 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2665 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 2666 | "dev": true 2667 | }, 2668 | "punycode": { 2669 | "version": "1.3.2", 2670 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2671 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 2672 | }, 2673 | "querystring": { 2674 | "version": "0.2.0", 2675 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2676 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2677 | }, 2678 | "randomatic": { 2679 | "version": "1.1.7", 2680 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 2681 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 2682 | "dev": true, 2683 | "requires": { 2684 | "is-number": "3.0.0", 2685 | "kind-of": "4.0.0" 2686 | }, 2687 | "dependencies": { 2688 | "is-number": { 2689 | "version": "3.0.0", 2690 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2691 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2692 | "dev": true, 2693 | "requires": { 2694 | "kind-of": "3.2.2" 2695 | }, 2696 | "dependencies": { 2697 | "kind-of": { 2698 | "version": "3.2.2", 2699 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2700 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2701 | "dev": true, 2702 | "requires": { 2703 | "is-buffer": "1.1.5" 2704 | } 2705 | } 2706 | } 2707 | }, 2708 | "kind-of": { 2709 | "version": "4.0.0", 2710 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2711 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2712 | "dev": true, 2713 | "requires": { 2714 | "is-buffer": "1.1.5" 2715 | } 2716 | } 2717 | } 2718 | }, 2719 | "rc": { 2720 | "version": "1.2.1", 2721 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", 2722 | "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", 2723 | "dev": true, 2724 | "requires": { 2725 | "deep-extend": "0.4.2", 2726 | "ini": "1.3.4", 2727 | "minimist": "1.2.0", 2728 | "strip-json-comments": "2.0.1" 2729 | }, 2730 | "dependencies": { 2731 | "minimist": { 2732 | "version": "1.2.0", 2733 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2734 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2735 | "dev": true 2736 | } 2737 | } 2738 | }, 2739 | "read-pkg": { 2740 | "version": "2.0.0", 2741 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2742 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2743 | "dev": true, 2744 | "requires": { 2745 | "load-json-file": "2.0.0", 2746 | "normalize-package-data": "2.4.0", 2747 | "path-type": "2.0.0" 2748 | } 2749 | }, 2750 | "read-pkg-up": { 2751 | "version": "2.0.0", 2752 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2753 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2754 | "dev": true, 2755 | "requires": { 2756 | "find-up": "2.1.0", 2757 | "read-pkg": "2.0.0" 2758 | } 2759 | }, 2760 | "readable-stream": { 2761 | "version": "2.3.3", 2762 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2763 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2764 | "requires": { 2765 | "core-util-is": "1.0.2", 2766 | "inherits": "2.0.3", 2767 | "isarray": "1.0.0", 2768 | "process-nextick-args": "1.0.7", 2769 | "safe-buffer": "5.1.1", 2770 | "string_decoder": "1.0.3", 2771 | "util-deprecate": "1.0.2" 2772 | } 2773 | }, 2774 | "readdirp": { 2775 | "version": "2.1.0", 2776 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2777 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2778 | "dev": true, 2779 | "requires": { 2780 | "graceful-fs": "4.1.11", 2781 | "minimatch": "3.0.4", 2782 | "readable-stream": "2.3.3", 2783 | "set-immediate-shim": "1.0.1" 2784 | } 2785 | }, 2786 | "redent": { 2787 | "version": "1.0.0", 2788 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 2789 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 2790 | "dev": true, 2791 | "requires": { 2792 | "indent-string": "2.1.0", 2793 | "strip-indent": "1.0.1" 2794 | }, 2795 | "dependencies": { 2796 | "indent-string": { 2797 | "version": "2.1.0", 2798 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 2799 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 2800 | "dev": true, 2801 | "requires": { 2802 | "repeating": "2.0.1" 2803 | } 2804 | } 2805 | } 2806 | }, 2807 | "regenerate": { 2808 | "version": "1.3.2", 2809 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", 2810 | "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", 2811 | "dev": true 2812 | }, 2813 | "regenerator-runtime": { 2814 | "version": "0.11.0", 2815 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", 2816 | "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", 2817 | "dev": true 2818 | }, 2819 | "regex-cache": { 2820 | "version": "0.4.3", 2821 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 2822 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 2823 | "dev": true, 2824 | "requires": { 2825 | "is-equal-shallow": "0.1.3", 2826 | "is-primitive": "2.0.0" 2827 | } 2828 | }, 2829 | "regexpu-core": { 2830 | "version": "2.0.0", 2831 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 2832 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 2833 | "dev": true, 2834 | "requires": { 2835 | "regenerate": "1.3.2", 2836 | "regjsgen": "0.2.0", 2837 | "regjsparser": "0.1.5" 2838 | } 2839 | }, 2840 | "registry-auth-token": { 2841 | "version": "3.3.1", 2842 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", 2843 | "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", 2844 | "dev": true, 2845 | "requires": { 2846 | "rc": "1.2.1", 2847 | "safe-buffer": "5.1.1" 2848 | } 2849 | }, 2850 | "registry-url": { 2851 | "version": "3.1.0", 2852 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 2853 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 2854 | "dev": true, 2855 | "requires": { 2856 | "rc": "1.2.1" 2857 | } 2858 | }, 2859 | "regjsgen": { 2860 | "version": "0.2.0", 2861 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 2862 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 2863 | "dev": true 2864 | }, 2865 | "regjsparser": { 2866 | "version": "0.1.5", 2867 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 2868 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 2869 | "dev": true, 2870 | "requires": { 2871 | "jsesc": "0.5.0" 2872 | } 2873 | }, 2874 | "release-zalgo": { 2875 | "version": "1.0.0", 2876 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 2877 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 2878 | "dev": true, 2879 | "requires": { 2880 | "es6-error": "4.0.2" 2881 | } 2882 | }, 2883 | "remove-trailing-separator": { 2884 | "version": "1.1.0", 2885 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2886 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2887 | "dev": true 2888 | }, 2889 | "repeat-element": { 2890 | "version": "1.1.2", 2891 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2892 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2893 | "dev": true 2894 | }, 2895 | "repeat-string": { 2896 | "version": "1.6.1", 2897 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2898 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2899 | "dev": true 2900 | }, 2901 | "repeating": { 2902 | "version": "2.0.1", 2903 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 2904 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2905 | "dev": true, 2906 | "requires": { 2907 | "is-finite": "1.0.2" 2908 | } 2909 | }, 2910 | "require-precompiled": { 2911 | "version": "0.1.0", 2912 | "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", 2913 | "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", 2914 | "dev": true 2915 | }, 2916 | "resolve-cwd": { 2917 | "version": "2.0.0", 2918 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", 2919 | "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", 2920 | "dev": true, 2921 | "requires": { 2922 | "resolve-from": "3.0.0" 2923 | } 2924 | }, 2925 | "resolve-from": { 2926 | "version": "3.0.0", 2927 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 2928 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 2929 | "dev": true 2930 | }, 2931 | "restore-cursor": { 2932 | "version": "2.0.0", 2933 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 2934 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 2935 | "dev": true, 2936 | "requires": { 2937 | "onetime": "2.0.1", 2938 | "signal-exit": "3.0.2" 2939 | } 2940 | }, 2941 | "rimraf": { 2942 | "version": "2.2.8", 2943 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", 2944 | "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" 2945 | }, 2946 | "s3-lambda": { 2947 | "version": "5.1.8", 2948 | "resolved": "https://registry.npmjs.org/s3-lambda/-/s3-lambda-5.1.8.tgz", 2949 | "integrity": "sha1-ugU7WtEXLaKom6sVX37JBGuftU8=", 2950 | "requires": { 2951 | "aws-sdk": "2.104.0", 2952 | "batch": "0.5.3", 2953 | "mock-aws-s3": "2.6.0", 2954 | "progress": "1.1.8" 2955 | } 2956 | }, 2957 | "safe-buffer": { 2958 | "version": "5.1.1", 2959 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2960 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 2961 | }, 2962 | "samsam": { 2963 | "version": "1.1.2", 2964 | "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", 2965 | "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", 2966 | "dev": true 2967 | }, 2968 | "sax": { 2969 | "version": "1.2.1", 2970 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", 2971 | "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" 2972 | }, 2973 | "semver": { 2974 | "version": "5.4.1", 2975 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 2976 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 2977 | "dev": true 2978 | }, 2979 | "semver-diff": { 2980 | "version": "2.1.0", 2981 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 2982 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 2983 | "dev": true, 2984 | "requires": { 2985 | "semver": "5.4.1" 2986 | } 2987 | }, 2988 | "set-immediate-shim": { 2989 | "version": "1.0.1", 2990 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2991 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2992 | "dev": true 2993 | }, 2994 | "shebang-command": { 2995 | "version": "1.2.0", 2996 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2997 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2998 | "dev": true, 2999 | "requires": { 3000 | "shebang-regex": "1.0.0" 3001 | } 3002 | }, 3003 | "shebang-regex": { 3004 | "version": "1.0.0", 3005 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3006 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3007 | "dev": true 3008 | }, 3009 | "signal-exit": { 3010 | "version": "3.0.2", 3011 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3012 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3013 | "dev": true 3014 | }, 3015 | "sinon": { 3016 | "version": "1.17.7", 3017 | "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", 3018 | "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", 3019 | "dev": true, 3020 | "requires": { 3021 | "formatio": "1.1.1", 3022 | "lolex": "1.3.2", 3023 | "samsam": "1.1.2", 3024 | "util": "0.10.3" 3025 | } 3026 | }, 3027 | "slash": { 3028 | "version": "1.0.0", 3029 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 3030 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 3031 | "dev": true 3032 | }, 3033 | "slice-ansi": { 3034 | "version": "1.0.0", 3035 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 3036 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 3037 | "dev": true, 3038 | "requires": { 3039 | "is-fullwidth-code-point": "2.0.0" 3040 | } 3041 | }, 3042 | "slide": { 3043 | "version": "1.1.6", 3044 | "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", 3045 | "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", 3046 | "dev": true 3047 | }, 3048 | "sort-keys": { 3049 | "version": "2.0.0", 3050 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", 3051 | "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", 3052 | "dev": true, 3053 | "requires": { 3054 | "is-plain-obj": "1.1.0" 3055 | } 3056 | }, 3057 | "source-map": { 3058 | "version": "0.5.7", 3059 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3060 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3061 | "dev": true 3062 | }, 3063 | "source-map-support": { 3064 | "version": "0.4.16", 3065 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", 3066 | "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", 3067 | "dev": true, 3068 | "requires": { 3069 | "source-map": "0.5.7" 3070 | } 3071 | }, 3072 | "spdx-correct": { 3073 | "version": "1.0.2", 3074 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 3075 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 3076 | "dev": true, 3077 | "requires": { 3078 | "spdx-license-ids": "1.2.2" 3079 | } 3080 | }, 3081 | "spdx-expression-parse": { 3082 | "version": "1.0.4", 3083 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 3084 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 3085 | "dev": true 3086 | }, 3087 | "spdx-license-ids": { 3088 | "version": "1.2.2", 3089 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 3090 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 3091 | "dev": true 3092 | }, 3093 | "sprintf-js": { 3094 | "version": "1.0.3", 3095 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3096 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3097 | "dev": true 3098 | }, 3099 | "stack-utils": { 3100 | "version": "1.0.1", 3101 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", 3102 | "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", 3103 | "dev": true 3104 | }, 3105 | "string-width": { 3106 | "version": "2.1.1", 3107 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3108 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3109 | "dev": true, 3110 | "requires": { 3111 | "is-fullwidth-code-point": "2.0.0", 3112 | "strip-ansi": "4.0.0" 3113 | } 3114 | }, 3115 | "string_decoder": { 3116 | "version": "1.0.3", 3117 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 3118 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 3119 | "requires": { 3120 | "safe-buffer": "5.1.1" 3121 | } 3122 | }, 3123 | "strip-ansi": { 3124 | "version": "4.0.0", 3125 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3126 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3127 | "dev": true, 3128 | "requires": { 3129 | "ansi-regex": "3.0.0" 3130 | }, 3131 | "dependencies": { 3132 | "ansi-regex": { 3133 | "version": "3.0.0", 3134 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 3135 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 3136 | "dev": true 3137 | } 3138 | } 3139 | }, 3140 | "strip-bom": { 3141 | "version": "3.0.0", 3142 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3143 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3144 | "dev": true 3145 | }, 3146 | "strip-bom-buf": { 3147 | "version": "1.0.0", 3148 | "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", 3149 | "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", 3150 | "dev": true, 3151 | "requires": { 3152 | "is-utf8": "0.2.1" 3153 | } 3154 | }, 3155 | "strip-eof": { 3156 | "version": "1.0.0", 3157 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3158 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3159 | "dev": true 3160 | }, 3161 | "strip-indent": { 3162 | "version": "1.0.1", 3163 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 3164 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 3165 | "dev": true, 3166 | "requires": { 3167 | "get-stdin": "4.0.1" 3168 | } 3169 | }, 3170 | "strip-json-comments": { 3171 | "version": "2.0.1", 3172 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3173 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 3174 | "dev": true 3175 | }, 3176 | "supports-color": { 3177 | "version": "4.2.1", 3178 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", 3179 | "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", 3180 | "dev": true, 3181 | "requires": { 3182 | "has-flag": "2.0.0" 3183 | } 3184 | }, 3185 | "symbol-observable": { 3186 | "version": "0.2.4", 3187 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", 3188 | "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", 3189 | "dev": true 3190 | }, 3191 | "term-size": { 3192 | "version": "1.2.0", 3193 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 3194 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 3195 | "dev": true, 3196 | "requires": { 3197 | "execa": "0.7.0" 3198 | } 3199 | }, 3200 | "text-table": { 3201 | "version": "0.2.0", 3202 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3203 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3204 | "dev": true 3205 | }, 3206 | "through2": { 3207 | "version": "2.0.3", 3208 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 3209 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 3210 | "requires": { 3211 | "readable-stream": "2.3.3", 3212 | "xtend": "4.0.1" 3213 | } 3214 | }, 3215 | "time-require": { 3216 | "version": "0.1.2", 3217 | "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", 3218 | "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", 3219 | "dev": true, 3220 | "requires": { 3221 | "chalk": "0.4.0", 3222 | "date-time": "0.1.1", 3223 | "pretty-ms": "0.2.2", 3224 | "text-table": "0.2.0" 3225 | }, 3226 | "dependencies": { 3227 | "ansi-styles": { 3228 | "version": "1.0.0", 3229 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", 3230 | "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", 3231 | "dev": true 3232 | }, 3233 | "chalk": { 3234 | "version": "0.4.0", 3235 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", 3236 | "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", 3237 | "dev": true, 3238 | "requires": { 3239 | "ansi-styles": "1.0.0", 3240 | "has-color": "0.1.7", 3241 | "strip-ansi": "0.1.1" 3242 | } 3243 | }, 3244 | "date-time": { 3245 | "version": "0.1.1", 3246 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", 3247 | "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", 3248 | "dev": true 3249 | }, 3250 | "parse-ms": { 3251 | "version": "0.1.2", 3252 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", 3253 | "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", 3254 | "dev": true 3255 | }, 3256 | "pretty-ms": { 3257 | "version": "0.2.2", 3258 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", 3259 | "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", 3260 | "dev": true, 3261 | "requires": { 3262 | "parse-ms": "0.1.2" 3263 | } 3264 | }, 3265 | "strip-ansi": { 3266 | "version": "0.1.1", 3267 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", 3268 | "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", 3269 | "dev": true 3270 | } 3271 | } 3272 | }, 3273 | "time-zone": { 3274 | "version": "1.0.0", 3275 | "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", 3276 | "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", 3277 | "dev": true 3278 | }, 3279 | "timed-out": { 3280 | "version": "4.0.1", 3281 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 3282 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 3283 | "dev": true 3284 | }, 3285 | "to-fast-properties": { 3286 | "version": "1.0.3", 3287 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 3288 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 3289 | "dev": true 3290 | }, 3291 | "traverse": { 3292 | "version": "0.6.6", 3293 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", 3294 | "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", 3295 | "dev": true 3296 | }, 3297 | "trim-newlines": { 3298 | "version": "1.0.0", 3299 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 3300 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 3301 | "dev": true 3302 | }, 3303 | "trim-off-newlines": { 3304 | "version": "1.0.1", 3305 | "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", 3306 | "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", 3307 | "dev": true 3308 | }, 3309 | "trim-right": { 3310 | "version": "1.0.1", 3311 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 3312 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 3313 | "dev": true 3314 | }, 3315 | "uid2": { 3316 | "version": "0.0.3", 3317 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", 3318 | "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", 3319 | "dev": true 3320 | }, 3321 | "underscore": { 3322 | "version": "1.8.3", 3323 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", 3324 | "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" 3325 | }, 3326 | "unique-string": { 3327 | "version": "1.0.0", 3328 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 3329 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 3330 | "dev": true, 3331 | "requires": { 3332 | "crypto-random-string": "1.0.0" 3333 | } 3334 | }, 3335 | "unique-temp-dir": { 3336 | "version": "1.0.0", 3337 | "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", 3338 | "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", 3339 | "dev": true, 3340 | "requires": { 3341 | "mkdirp": "0.5.1", 3342 | "os-tmpdir": "1.0.2", 3343 | "uid2": "0.0.3" 3344 | } 3345 | }, 3346 | "unzip-response": { 3347 | "version": "2.0.1", 3348 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 3349 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", 3350 | "dev": true 3351 | }, 3352 | "update-notifier": { 3353 | "version": "2.2.0", 3354 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", 3355 | "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", 3356 | "dev": true, 3357 | "requires": { 3358 | "boxen": "1.2.1", 3359 | "chalk": "1.1.3", 3360 | "configstore": "3.1.1", 3361 | "import-lazy": "2.1.0", 3362 | "is-npm": "1.0.0", 3363 | "latest-version": "3.1.0", 3364 | "semver-diff": "2.1.0", 3365 | "xdg-basedir": "3.0.0" 3366 | }, 3367 | "dependencies": { 3368 | "ansi-styles": { 3369 | "version": "2.2.1", 3370 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 3371 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 3372 | "dev": true 3373 | }, 3374 | "chalk": { 3375 | "version": "1.1.3", 3376 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 3377 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 3378 | "dev": true, 3379 | "requires": { 3380 | "ansi-styles": "2.2.1", 3381 | "escape-string-regexp": "1.0.5", 3382 | "has-ansi": "2.0.0", 3383 | "strip-ansi": "3.0.1", 3384 | "supports-color": "2.0.0" 3385 | } 3386 | }, 3387 | "strip-ansi": { 3388 | "version": "3.0.1", 3389 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3390 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3391 | "dev": true, 3392 | "requires": { 3393 | "ansi-regex": "2.1.1" 3394 | } 3395 | }, 3396 | "supports-color": { 3397 | "version": "2.0.0", 3398 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 3399 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 3400 | "dev": true 3401 | } 3402 | } 3403 | }, 3404 | "url": { 3405 | "version": "0.10.3", 3406 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 3407 | "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", 3408 | "requires": { 3409 | "punycode": "1.3.2", 3410 | "querystring": "0.2.0" 3411 | } 3412 | }, 3413 | "url-parse-lax": { 3414 | "version": "1.0.0", 3415 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 3416 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 3417 | "dev": true, 3418 | "requires": { 3419 | "prepend-http": "1.0.4" 3420 | } 3421 | }, 3422 | "util": { 3423 | "version": "0.10.3", 3424 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 3425 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 3426 | "dev": true, 3427 | "requires": { 3428 | "inherits": "2.0.1" 3429 | }, 3430 | "dependencies": { 3431 | "inherits": { 3432 | "version": "2.0.1", 3433 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 3434 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 3435 | "dev": true 3436 | } 3437 | } 3438 | }, 3439 | "util-deprecate": { 3440 | "version": "1.0.2", 3441 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3442 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3443 | }, 3444 | "uuid": { 3445 | "version": "3.0.1", 3446 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", 3447 | "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" 3448 | }, 3449 | "validate-npm-package-license": { 3450 | "version": "3.0.1", 3451 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 3452 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 3453 | "dev": true, 3454 | "requires": { 3455 | "spdx-correct": "1.0.2", 3456 | "spdx-expression-parse": "1.0.4" 3457 | } 3458 | }, 3459 | "well-known-symbols": { 3460 | "version": "1.0.0", 3461 | "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", 3462 | "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", 3463 | "dev": true 3464 | }, 3465 | "which": { 3466 | "version": "1.3.0", 3467 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 3468 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 3469 | "dev": true, 3470 | "requires": { 3471 | "isexe": "2.0.0" 3472 | } 3473 | }, 3474 | "widest-line": { 3475 | "version": "1.0.0", 3476 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", 3477 | "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", 3478 | "dev": true, 3479 | "requires": { 3480 | "string-width": "1.0.2" 3481 | }, 3482 | "dependencies": { 3483 | "is-fullwidth-code-point": { 3484 | "version": "1.0.0", 3485 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 3486 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 3487 | "dev": true, 3488 | "requires": { 3489 | "number-is-nan": "1.0.1" 3490 | } 3491 | }, 3492 | "string-width": { 3493 | "version": "1.0.2", 3494 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 3495 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 3496 | "dev": true, 3497 | "requires": { 3498 | "code-point-at": "1.1.0", 3499 | "is-fullwidth-code-point": "1.0.0", 3500 | "strip-ansi": "3.0.1" 3501 | } 3502 | }, 3503 | "strip-ansi": { 3504 | "version": "3.0.1", 3505 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3506 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3507 | "dev": true, 3508 | "requires": { 3509 | "ansi-regex": "2.1.1" 3510 | } 3511 | } 3512 | } 3513 | }, 3514 | "wrappy": { 3515 | "version": "1.0.2", 3516 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3517 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3518 | "dev": true 3519 | }, 3520 | "write-file-atomic": { 3521 | "version": "2.3.0", 3522 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", 3523 | "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", 3524 | "dev": true, 3525 | "requires": { 3526 | "graceful-fs": "4.1.11", 3527 | "imurmurhash": "0.1.4", 3528 | "signal-exit": "3.0.2" 3529 | } 3530 | }, 3531 | "write-json-file": { 3532 | "version": "2.2.0", 3533 | "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", 3534 | "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", 3535 | "dev": true, 3536 | "requires": { 3537 | "detect-indent": "5.0.0", 3538 | "graceful-fs": "4.1.11", 3539 | "make-dir": "1.0.0", 3540 | "pify": "2.3.0", 3541 | "sort-keys": "1.1.2", 3542 | "write-file-atomic": "2.3.0" 3543 | }, 3544 | "dependencies": { 3545 | "detect-indent": { 3546 | "version": "5.0.0", 3547 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", 3548 | "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", 3549 | "dev": true 3550 | }, 3551 | "sort-keys": { 3552 | "version": "1.1.2", 3553 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 3554 | "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", 3555 | "dev": true, 3556 | "requires": { 3557 | "is-plain-obj": "1.1.0" 3558 | } 3559 | } 3560 | } 3561 | }, 3562 | "write-pkg": { 3563 | "version": "3.1.0", 3564 | "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", 3565 | "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", 3566 | "dev": true, 3567 | "requires": { 3568 | "sort-keys": "2.0.0", 3569 | "write-json-file": "2.2.0" 3570 | } 3571 | }, 3572 | "xdg-basedir": { 3573 | "version": "3.0.0", 3574 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 3575 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 3576 | "dev": true 3577 | }, 3578 | "xml2js": { 3579 | "version": "0.4.17", 3580 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", 3581 | "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", 3582 | "requires": { 3583 | "sax": "1.2.1", 3584 | "xmlbuilder": "4.2.1" 3585 | } 3586 | }, 3587 | "xmlbuilder": { 3588 | "version": "4.2.1", 3589 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", 3590 | "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", 3591 | "requires": { 3592 | "lodash": "4.17.4" 3593 | } 3594 | }, 3595 | "xtend": { 3596 | "version": "4.0.1", 3597 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 3598 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 3599 | }, 3600 | "yallist": { 3601 | "version": "2.1.2", 3602 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3603 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 3604 | "dev": true 3605 | }, 3606 | "yazl": { 3607 | "version": "2.4.2", 3608 | "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.2.tgz", 3609 | "integrity": "sha1-FMsZCD4eJacAksFYiqvg9OTdTYg=", 3610 | "requires": { 3611 | "buffer-crc32": "0.2.13" 3612 | } 3613 | } 3614 | } 3615 | } 3616 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lambda-hivemind", 3 | "version": "1.0.0", 4 | "description": "Launch AWS Lambda functions for distributed computing", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/littlstar/hivemind.git" 12 | }, 13 | "keywords": [ 14 | "distributed", 15 | "computing", 16 | "lambda", 17 | "aws", 18 | "aws", 19 | "lambda" 20 | ], 21 | "author": "Madeline Cameron", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/littlstar/hivemind/issues" 25 | }, 26 | "homepage": "https://github.com/littlstar/hivemind#readme", 27 | "dependencies": { 28 | "aws-sdk": "^2.104.0", 29 | "persist-store": "^2.0.1", 30 | "through2": "^2.0.3", 31 | "yazl": "^2.4.2" 32 | }, 33 | "devDependencies": { 34 | "ava": "^0.22.0", 35 | "aws-sdk-mock": "^1.7.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /test/glueFactory.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | exports.belt = function (event, context, callback) { 4 | const messages = [] 5 | 6 | event.chunk.forEach((pony) => { 7 | messages.push(`Yum, yum ${pony}`) 8 | }) 9 | 10 | return callback(null, messages) 11 | } 12 | -------------------------------------------------------------------------------- /test/integration.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const Hivemind = require('../') 4 | 5 | // Initialize our job manager 6 | const hivemind = new Hivemind({ 7 | func: { 8 | name: 'glueFactory', 9 | role: '', 10 | handler: 'glueFactory.belt' // . 11 | }, 12 | awsRegion: 'us-east-1', // What region to execute your jobs in 13 | data: [ // Unchunked array of data you want jobs to run on. 14 | 'Fluttershy', 15 | 'Rarity', 16 | 'Pinkie-Pie', 17 | 'Applejack' 18 | ], 19 | chunkSize: 2 // How many pieces of data per job 20 | }) 21 | 22 | // Publish the function as a Lambda function to your AWS 23 | hivemind.publish({ 24 | files: [ 25 | 'glueFactory.js' 26 | ] 27 | }) 28 | 29 | // After creation 30 | hivemind.on('create', () => { 31 | 32 | // Run the jobs 33 | hivemind.run() 34 | }) 35 | 36 | // After a job has completed 37 | hivemind.on('finish', (res) => { 38 | console.log(`Response: ${res}`) 39 | }) 40 | 41 | // After all jobs have finished 42 | hivemind.on('end', () => { 43 | console.log('Dear Celestia:...') 44 | }) 45 | 46 | // If an error occurs in a job 47 | hivemind.on('error', (err) => { 48 | console.log(`Error: ${err}`) 49 | }) 50 | --------------------------------------------------------------------------------