├── .idea ├── misc.xml ├── vcs.xml ├── jsLibraryMappings.xml ├── modules.xml └── devtools-timline-images.iml ├── lib ├── index.js ├── commands │ ├── images.js │ └── video.js └── utils.js ├── package.json ├── LICENSE ├── README.md ├── .gitignore ├── .github └── logo.svg └── yarn.lock /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/devtools-timline-images.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path = require('path'); 3 | const yargs = require('yargs'); 4 | 5 | // noinspection BadExpressionStatementJS 6 | yargs 7 | .scriptName('dte') 8 | .usage('$0 [args]') 9 | .commandDir(path.join(__dirname, 'commands')) 10 | .demandCommand() 11 | .option('output', { 12 | alias: 'o', 13 | describe: 'Output folder where the images will be exported.' 14 | }) 15 | .demandOption(['output'], 'Please provide output argument.') 16 | .help('h') 17 | .alias('h', 'help') 18 | .argv; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devtools-timeline-images", 3 | "version": "2.1.0", 4 | "description": "Simple utility to transform exported Chrome devtools timeline json to images. ", 5 | "main": "lib/index.js", 6 | "files": [ 7 | "/lib" 8 | ], 9 | "repository": "git@github.com:ilicmarko/devtools-timeline-images.git", 10 | "author": "Marko Ilic ", 11 | "license": "MIT", 12 | "keywords": [ 13 | "Chrome", 14 | "Devtools", 15 | "Timeline", 16 | "Extract", 17 | "Images" 18 | ], 19 | "homepage": "https://github.com/ilicmarko/devtools-timeline-images#readme", 20 | "bin": { 21 | "devtools-timeline-images": "lib/index.js", 22 | "dte": "lib/index.js" 23 | }, 24 | "dependencies": { 25 | "@ffmpeg-installer/ffmpeg": "^1.0.18", 26 | "chalk": "^2.4.2", 27 | "fluent-ffmpeg": "^2.1.2", 28 | "fs-extra": "^8.0.0", 29 | "inquirer": "^6.3.1", 30 | "tmp-promise": "^2.0.1", 31 | "yargs": "^13.2.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Marko Ilic 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /lib/commands/images.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra'); 2 | const chalk = require('chalk'); 3 | const path = require('path'); 4 | const utils = require('../utils'); 5 | 6 | exports.command = 'images '; 7 | exports.aliases = ['i']; 8 | exports.desc = 'Generate sequence of images.'; 9 | exports.builder = { 10 | output: { 11 | type: 'string', 12 | aliases: ['o'], 13 | describe: 'Folder path to output sequence images.', 14 | demand: true, 15 | normalize: true, 16 | } 17 | }; 18 | exports.handler = async (argv) => { 19 | const { input, output } = argv; 20 | 21 | try { 22 | utils.checkInput(input); 23 | await utils.checkOutput(output); 24 | } catch (e) { 25 | console.error(chalk.red(e.message)); 26 | process.exit(1); 27 | } 28 | 29 | const fileData = fs.readFileSync(input, 'utf8'); 30 | const snapshots = utils.exportImagesFromChromeTimeline(fileData); 31 | 32 | if (!snapshots.length) { 33 | console.error(chalk.red('There are no captured frames inside the provided input.')); 34 | process.exit(1); 35 | } 36 | 37 | let imageStream; 38 | let ext; 39 | 40 | snapshots.forEach((snapshot, i) => { 41 | imageStream = Buffer.from(snapshot, 'base64'); 42 | ext = utils.getFileTypeFromStream(imageStream); 43 | if (ext) { 44 | fs.writeFileSync(path.resolve(output, `${i}.${ext}`), imageStream); 45 | } else { 46 | console.log(chalk.yellow(`Frame ${i} couldn't be saved.`)) 47 | } 48 | }); 49 | 50 | console.log(chalk.green.bold(`${snapshots.length} frames exported to ${output}`)); 51 | process.exit(); 52 | }; -------------------------------------------------------------------------------- /lib/commands/video.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra'); 2 | const chalk = require('chalk'); 3 | const path = require('path'); 4 | const utils = require('../utils'); 5 | const tmp = require('tmp-promise'); 6 | const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path; 7 | const ffmpeg = require('fluent-ffmpeg'); 8 | 9 | ffmpeg.setFfmpegPath(ffmpegPath); 10 | 11 | exports.command = 'video '; 12 | exports.aliases = ['v']; 13 | exports.desc = 'Generate slowdown video from the timeline export.'; 14 | exports.builder = { 15 | output: { 16 | type: 'string', 17 | aliases: ['o'], 18 | describe: 'Video file name to export.', 19 | demand: true, 20 | normalize: true, 21 | } 22 | }; 23 | exports.handler = async (argv) => { 24 | const { input, output } = argv; 25 | 26 | try { 27 | utils.checkInput(input); 28 | await utils.checkOutput(output, true); 29 | } catch (e) { 30 | console.error(chalk.red(e.message)); 31 | process.exit(1); 32 | } 33 | 34 | const fileData = fs.readFileSync(input, 'utf8'); 35 | const snapshots = utils.exportImagesFromChromeTimeline(fileData); 36 | 37 | if (!snapshots.length) { 38 | console.error(chalk.red('There are no captured frames inside the provided input.')); 39 | process.exit(1); 40 | } 41 | 42 | let folder = await tmp.dir({ prefix: 'dte_', unsafeCleanup:true }); 43 | convertImages(snapshots, folder.path); 44 | await merge(folder.path, output); 45 | tmp.setGracefulCleanup(); 46 | 47 | console.log(chalk.green.bold(`Video successfully exported to ${output}`)); 48 | process.exit(); 49 | }; 50 | 51 | function convertImages(images, output) { 52 | let filePath; 53 | images.forEach((image, i) => { 54 | filePath = path.join(output, `${i}.jpg`); 55 | fs.writeFileSync(filePath, Buffer.from(image, 'base64')); 56 | }); 57 | } 58 | 59 | async function merge(input, output) { 60 | await new Promise((resolve, reject) => { 61 | ffmpeg() 62 | .addInput(path.join(input, `%d.jpg`)) 63 | .on('error', err => reject(err)) 64 | .on('end', resolve) 65 | .noAudio() 66 | .output(output) 67 | .outputFPS(30) 68 | .run(); 69 | }); 70 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

logo

2 | 3 |

Devtools Timeline Exporter

4 | 5 |

6 | npm 7 |

8 | 9 | A really small utility to extract images from Chrome Timeline. 10 | 11 | ## Installation 12 | 13 | ```bash 14 | yarn global add devtools-timeline-images 15 | # or NPM 16 | npm i -g devtools-timeline-images 17 | ``` 18 | 19 | ## Usage 20 | 21 | As of v2 CLI includes and alias for the name, `dte` (Devtools Timeline Export). This has been changed as in the future 22 | there is a plan to export videos, not only images. 23 | 24 | ### Image 25 | 26 | ```bash 27 | dte images [options] 28 | 29 | Generate sequence of images. 30 | 31 | Options: 32 | --version Show version number [boolean] 33 | --output, -o Path to JSON file generated by Chrome. [string] [required] 34 | -h, --help Show help [boolean] 35 | ``` 36 | 37 | Also you can generate images with an alias `i`, like this: `dte i [options]`. 38 | 39 | ### Video 40 | With a video command you can instantly generate a slowdown video of the loading progress. 41 | 42 | ```bash 43 | dte video [options] 44 | 45 | Generate slowdown video from the timeline export. 46 | 47 | Options: 48 | --version Show version number [boolean] 49 | --output, -o Video file name to export. [string] [required] 50 | -h, --help Show help [boolean] 51 | 52 | ``` 53 | 54 | Also you can generate a video with an alias `v`, like this: `dte v [options]`. 55 | 56 | ## Options 57 | - `-o` or `--output` - Specify the output folder. 58 | 59 | *Note: If the output directory does not exist the CLI will create it.* 60 | 61 | ## Example 62 | 63 | ```bash 64 | dte i ./example-site.json -o ./images 65 | ``` 66 | 67 | ## Save a recoding 68 | 69 | ![Save recoding](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/imgs/save-profile.png) 70 | 71 | More information at [Google Developer Docs](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference#save) 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### JetBrains template 3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 5 | 6 | # User-specific stuff 7 | .idea/**/workspace.xml 8 | .idea/**/tasks.xml 9 | .idea/**/dictionaries 10 | .idea/**/shelf 11 | 12 | # Sensitive or high-churn files 13 | .idea/**/dataSources/ 14 | .idea/**/dataSources.ids 15 | .idea/**/dataSources.local.xml 16 | .idea/**/sqlDataSources.xml 17 | .idea/**/dynamic.xml 18 | .idea/**/uiDesigner.xml 19 | .idea/**/dbnavigator.xml 20 | 21 | # Gradle 22 | .idea/**/gradle.xml 23 | .idea/**/libraries 24 | 25 | # CMake 26 | cmake-build-debug/ 27 | cmake-build-release/ 28 | 29 | # Mongo Explorer plugin 30 | .idea/**/mongoSettings.xml 31 | 32 | # File-based project format 33 | *.iws 34 | 35 | # IntelliJ 36 | out/ 37 | 38 | # mpeltonen/sbt-idea plugin 39 | .idea_modules/ 40 | 41 | # JIRA plugin 42 | atlassian-ide-plugin.xml 43 | 44 | # Cursive Clojure plugin 45 | .idea/replstate.xml 46 | 47 | # Crashlytics plugin (for Android Studio and IntelliJ) 48 | com_crashlytics_export_strings.xml 49 | crashlytics.properties 50 | crashlytics-build.properties 51 | fabric.properties 52 | 53 | # Editor-based Rest Client 54 | .idea/httpRequests 55 | ### Node template 56 | # Logs 57 | logs 58 | *.log 59 | npm-debug.log* 60 | yarn-debug.log* 61 | yarn-error.log* 62 | 63 | # Runtime data 64 | pids 65 | *.pid 66 | *.seed 67 | *.pid.lock 68 | 69 | # Directory for instrumented libs generated by jscoverage/JSCover 70 | lib-cov 71 | 72 | # Coverage directory used by tools like istanbul 73 | coverage 74 | 75 | # nyc test coverage 76 | .nyc_output 77 | 78 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 79 | .grunt 80 | 81 | # Bower dependency directory (https://bower.io/) 82 | bower_components 83 | 84 | # node-waf configuration 85 | .lock-wscript 86 | 87 | # Compiled binary addons (https://nodejs.org/api/addons.html) 88 | build/Release 89 | 90 | # Dependency directories 91 | node_modules/ 92 | jspm_packages/ 93 | 94 | # TypeScript v1 declaration files 95 | typings/ 96 | 97 | # Optional npm cache directory 98 | .npm 99 | 100 | # Optional eslint cache 101 | .eslintcache 102 | 103 | # Optional REPL history 104 | .node_repl_history 105 | 106 | # Output of 'npm pack' 107 | *.tgz 108 | 109 | # Yarn Integrity file 110 | .yarn-integrity 111 | 112 | # dotenv environment variables file 113 | .env 114 | 115 | # next.js build output 116 | .next 117 | 118 | # Sample files 119 | /_samples 120 | -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra'); 2 | const inquirer = require('inquirer'); 3 | const chalk = require('chalk'); 4 | const path = require('path'); 5 | 6 | /** 7 | * Check Buffer for file signature. 8 | * @param {Array} header 9 | * @param {ArrayBuffer} stream 10 | * @param {Object} [settings] 11 | * @returns {boolean} 12 | */ 13 | function checkHeader(header, stream, settings) { 14 | // Basic early checks if the stream is a Buffer 15 | if (!(stream instanceof Uint8Array || stream instanceof ArrayBuffer || Buffer.isBuffer(stream))) throw new Error('Buffer not valid'); 16 | const buffer = stream instanceof Uint8Array ? stream : new Uint8Array(input); 17 | if (!(buffer && buffer.length > 1)) throw new Error('Buffer not valid'); 18 | 19 | const defaultSettings = { offset: 0 }; 20 | const mergedSettings = { ...defaultSettings, ...settings }; 21 | 22 | for (let i = 0; i < header.length; i++) { 23 | if (header[i] !== buffer[i + mergedSettings.offset]) { 24 | return false; 25 | } 26 | } 27 | return true; 28 | } 29 | 30 | function getFileTypeFromStream(stream) { 31 | if (checkHeader([0xFF, 0xD8, 0xFF], stream)) return 'jpg'; 32 | if (checkHeader([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A], stream)) return 'png'; 33 | if (checkHeader([0x57, 0x45, 0x42, 0x50], stream, {offset: 8})) return 'webp'; 34 | return false; 35 | } 36 | 37 | /** 38 | * Check if provided input is valid. 39 | * @param {string} input Path to the JSON file. 40 | * @returns {boolean} 41 | */ 42 | function checkInput(input) { 43 | if (!fs.existsSync(input)) { 44 | throw new Error(`Provided file '${input}' doesn't exist`); 45 | } 46 | return true; 47 | } 48 | 49 | /** 50 | * Check if the provided output is valid. Output can be a folder or a file based on the command. 51 | * @param {string} output 52 | * @param {boolean} [isFile=false] If the output is a file or directory 53 | * @returns {Promise} 54 | */ 55 | async function checkOutput(output, isFile = false) { 56 | if (isFile) { 57 | if (path.extname(output) === '') throw new Error(`Provided output '${output}' is not a file`); 58 | if (!fs.existsSync(path.dirname(output))) throw new Error(`Provided output path '${path.dirname(output)}' doesn't exist`); 59 | return true; 60 | } 61 | 62 | if (fs.existsSync(output)) { 63 | try { 64 | fs.mkdirSync(output); 65 | console.log(chalk.blue(`Directory ${output} created!`)); 66 | } catch (err) { 67 | if (err.code === 'ENOENT') { 68 | throw new Error(`EACCES: permission denied, mkdir '${output}'`); 69 | } 70 | 71 | throw err; 72 | } 73 | } else { 74 | const { overwrite } = await inquirer 75 | .prompt([{ 76 | name: 'overwrite', 77 | type: 'confirm', 78 | message: `Directory \`${output}\` already exists. Do you want to overwrite it?` 79 | }]); 80 | 81 | if (overwrite) fs.emptyDirSync(output); 82 | } 83 | return true; 84 | } 85 | 86 | /** 87 | * Return all screenshots from Chrome Timeline JSON file. 88 | * @param {string} data 89 | * @returns {string[]} Array of base64 strings. 90 | */ 91 | function exportImagesFromChromeTimeline(data) { 92 | let jsonData; 93 | 94 | try { 95 | jsonData = JSON.parse(data); 96 | } catch (e) { 97 | console.error(chalk.red(e)); 98 | process.exit(1) 99 | } 100 | 101 | if (!Array.isArray(jsonData)) { 102 | console.log('This doesn\'t look like Chrome Timeline JSON. Please provide valid data.'); 103 | process.exit(1); 104 | } 105 | 106 | return jsonData.filter(item => item.name === 'Screenshot').map(item => item.args.snapshot); 107 | } 108 | 109 | module.exports = { 110 | getFileTypeFromStream, 111 | checkInput, 112 | checkOutput, 113 | exportImagesFromChromeTimeline, 114 | }; -------------------------------------------------------------------------------- /.github/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ffmpeg-installer/darwin-x64@4.1.0": 6 | version "4.1.0" 7 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz#48e1706c690e628148482bfb64acb67472089aaa" 8 | integrity sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw== 9 | 10 | "@ffmpeg-installer/ffmpeg@^1.0.18": 11 | version "1.0.18" 12 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.0.18.tgz#d0cb83daa7426375adcb6f0b7de84c24b81cf6e1" 13 | integrity sha512-Au9ZVUnvChHKRZ71siWlCxjSI3KlRTYY+o08JHkwVhw85Bv5XeQuPePbkZoJx4JACYPn9WxWBwZDkdnDZbdbHQ== 14 | optionalDependencies: 15 | "@ffmpeg-installer/darwin-x64" "4.1.0" 16 | "@ffmpeg-installer/linux-arm" "4.1.3" 17 | "@ffmpeg-installer/linux-arm64" "4.1.3" 18 | "@ffmpeg-installer/linux-ia32" "4.1.0" 19 | "@ffmpeg-installer/linux-x64" "4.1.0" 20 | "@ffmpeg-installer/win32-ia32" "4.1.0" 21 | "@ffmpeg-installer/win32-x64" "4.1.0" 22 | 23 | "@ffmpeg-installer/linux-arm64@4.1.3": 24 | version "4.1.3" 25 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.3.tgz#300c19a89de1fdeafb2d0983758419da7dcfa848" 26 | integrity sha512-QBlK7H8H/ypnh619OJBASrikToEUUejGwLbl5H1UPNpZyLtlhhvvafDktISWAtR2qNHTfbi1ckLIgC6FMrE+lQ== 27 | 28 | "@ffmpeg-installer/linux-arm@4.1.3": 29 | version "4.1.3" 30 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm/-/linux-arm-4.1.3.tgz#c554f105ed5f10475ec25d7bec94926ce18db4c1" 31 | integrity sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg== 32 | 33 | "@ffmpeg-installer/linux-ia32@4.1.0": 34 | version "4.1.0" 35 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-ia32/-/linux-ia32-4.1.0.tgz#adad70b0d0d9d8d813983d6e683c5a338a75e442" 36 | integrity sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ== 37 | 38 | "@ffmpeg-installer/linux-x64@4.1.0": 39 | version "4.1.0" 40 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-x64/-/linux-x64-4.1.0.tgz#b4a5d89c4e12e6d9306dbcdc573df716ec1c4323" 41 | integrity sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A== 42 | 43 | "@ffmpeg-installer/win32-ia32@4.1.0": 44 | version "4.1.0" 45 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/win32-ia32/-/win32-ia32-4.1.0.tgz#6eac4fb691b64c02e7a116c1e2d167f3e9b40638" 46 | integrity sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw== 47 | 48 | "@ffmpeg-installer/win32-x64@4.1.0": 49 | version "4.1.0" 50 | resolved "https://registry.yarnpkg.com/@ffmpeg-installer/win32-x64/-/win32-x64-4.1.0.tgz#17e8699b5798d4c60e36e2d6326a8ebe5e95a2c5" 51 | integrity sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg== 52 | 53 | ansi-escapes@^3.2.0: 54 | version "3.2.0" 55 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 56 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 57 | 58 | ansi-regex@^2.0.0: 59 | version "2.1.1" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 61 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 62 | 63 | ansi-regex@^3.0.0: 64 | version "3.0.0" 65 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 66 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 67 | 68 | ansi-regex@^4.1.0: 69 | version "4.1.0" 70 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 71 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 72 | 73 | ansi-styles@^3.2.1: 74 | version "3.2.1" 75 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 76 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 77 | dependencies: 78 | color-convert "^1.9.0" 79 | 80 | async@>=0.2.9: 81 | version "3.0.1" 82 | resolved "https://registry.yarnpkg.com/async/-/async-3.0.1.tgz#dfeb34657d1e63c94c0eee424297bf8a2c9a8182" 83 | integrity sha512-ZswD8vwPtmBZzbn9xyi8XBQWXH3AvOQ43Za1KWYq7JeycrZuUYzx01KvHcVbXltjqH4y0MWrQ33008uLTqXuDw== 84 | 85 | balanced-match@^1.0.0: 86 | version "1.0.0" 87 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 88 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 89 | 90 | brace-expansion@^1.1.7: 91 | version "1.1.11" 92 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 93 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 94 | dependencies: 95 | balanced-match "^1.0.0" 96 | concat-map "0.0.1" 97 | 98 | camelcase@^5.0.0: 99 | version "5.3.1" 100 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 101 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 102 | 103 | chalk@^2.4.2: 104 | version "2.4.2" 105 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 106 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 107 | dependencies: 108 | ansi-styles "^3.2.1" 109 | escape-string-regexp "^1.0.5" 110 | supports-color "^5.3.0" 111 | 112 | chardet@^0.7.0: 113 | version "0.7.0" 114 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 115 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 116 | 117 | cli-cursor@^2.1.0: 118 | version "2.1.0" 119 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 120 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 121 | dependencies: 122 | restore-cursor "^2.0.0" 123 | 124 | cli-width@^2.0.0: 125 | version "2.2.0" 126 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 127 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 128 | 129 | cliui@^4.0.0: 130 | version "4.1.0" 131 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 132 | integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== 133 | dependencies: 134 | string-width "^2.1.1" 135 | strip-ansi "^4.0.0" 136 | wrap-ansi "^2.0.0" 137 | 138 | code-point-at@^1.0.0: 139 | version "1.1.0" 140 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 141 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 142 | 143 | color-convert@^1.9.0: 144 | version "1.9.3" 145 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 146 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 147 | dependencies: 148 | color-name "1.1.3" 149 | 150 | color-name@1.1.3: 151 | version "1.1.3" 152 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 153 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 154 | 155 | concat-map@0.0.1: 156 | version "0.0.1" 157 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 158 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 159 | 160 | cross-spawn@^6.0.0: 161 | version "6.0.5" 162 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 163 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 164 | dependencies: 165 | nice-try "^1.0.4" 166 | path-key "^2.0.1" 167 | semver "^5.5.0" 168 | shebang-command "^1.2.0" 169 | which "^1.2.9" 170 | 171 | decamelize@^1.2.0: 172 | version "1.2.0" 173 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 174 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 175 | 176 | emoji-regex@^7.0.1: 177 | version "7.0.3" 178 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 179 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 180 | 181 | end-of-stream@^1.1.0: 182 | version "1.4.1" 183 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 184 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 185 | dependencies: 186 | once "^1.4.0" 187 | 188 | escape-string-regexp@^1.0.5: 189 | version "1.0.5" 190 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 191 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 192 | 193 | execa@^1.0.0: 194 | version "1.0.0" 195 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 196 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 197 | dependencies: 198 | cross-spawn "^6.0.0" 199 | get-stream "^4.0.0" 200 | is-stream "^1.1.0" 201 | npm-run-path "^2.0.0" 202 | p-finally "^1.0.0" 203 | signal-exit "^3.0.0" 204 | strip-eof "^1.0.0" 205 | 206 | external-editor@^3.0.3: 207 | version "3.0.3" 208 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" 209 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== 210 | dependencies: 211 | chardet "^0.7.0" 212 | iconv-lite "^0.4.24" 213 | tmp "^0.0.33" 214 | 215 | figures@^2.0.0: 216 | version "2.0.0" 217 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 218 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 219 | dependencies: 220 | escape-string-regexp "^1.0.5" 221 | 222 | find-up@^3.0.0: 223 | version "3.0.0" 224 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 225 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 226 | dependencies: 227 | locate-path "^3.0.0" 228 | 229 | fluent-ffmpeg@^2.1.2: 230 | version "2.1.2" 231 | resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" 232 | integrity sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ= 233 | dependencies: 234 | async ">=0.2.9" 235 | which "^1.1.1" 236 | 237 | fs-extra@^8.0.0: 238 | version "8.0.0" 239 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.0.tgz#3660bea66719e3a3c46bf7a4b1249fb658db3f0c" 240 | integrity sha512-3hU7dzpfqG+A7gloPULls7j9mKDzpCyMOTBvQS0lZfqVfjA6/m0AkLXq0O1vnfP5roXjjL1DuUGKapr8vJWmQw== 241 | dependencies: 242 | graceful-fs "^4.1.2" 243 | jsonfile "^4.0.0" 244 | universalify "^0.1.0" 245 | 246 | fs.realpath@^1.0.0: 247 | version "1.0.0" 248 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 249 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 250 | 251 | get-caller-file@^2.0.1: 252 | version "2.0.5" 253 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 254 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 255 | 256 | get-stream@^4.0.0: 257 | version "4.1.0" 258 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 259 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 260 | dependencies: 261 | pump "^3.0.0" 262 | 263 | glob@^7.1.3: 264 | version "7.1.4" 265 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 266 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 267 | dependencies: 268 | fs.realpath "^1.0.0" 269 | inflight "^1.0.4" 270 | inherits "2" 271 | minimatch "^3.0.4" 272 | once "^1.3.0" 273 | path-is-absolute "^1.0.0" 274 | 275 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 276 | version "4.1.15" 277 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 278 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 279 | 280 | has-flag@^3.0.0: 281 | version "3.0.0" 282 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 283 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 284 | 285 | iconv-lite@^0.4.24: 286 | version "0.4.24" 287 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 288 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 289 | dependencies: 290 | safer-buffer ">= 2.1.2 < 3" 291 | 292 | inflight@^1.0.4: 293 | version "1.0.6" 294 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 295 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 296 | dependencies: 297 | once "^1.3.0" 298 | wrappy "1" 299 | 300 | inherits@2: 301 | version "2.0.4" 302 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 303 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 304 | 305 | inquirer@^6.3.1: 306 | version "6.3.1" 307 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" 308 | integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== 309 | dependencies: 310 | ansi-escapes "^3.2.0" 311 | chalk "^2.4.2" 312 | cli-cursor "^2.1.0" 313 | cli-width "^2.0.0" 314 | external-editor "^3.0.3" 315 | figures "^2.0.0" 316 | lodash "^4.17.11" 317 | mute-stream "0.0.7" 318 | run-async "^2.2.0" 319 | rxjs "^6.4.0" 320 | string-width "^2.1.0" 321 | strip-ansi "^5.1.0" 322 | through "^2.3.6" 323 | 324 | invert-kv@^2.0.0: 325 | version "2.0.0" 326 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 327 | integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== 328 | 329 | is-fullwidth-code-point@^1.0.0: 330 | version "1.0.0" 331 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 332 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 333 | dependencies: 334 | number-is-nan "^1.0.0" 335 | 336 | is-fullwidth-code-point@^2.0.0: 337 | version "2.0.0" 338 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 339 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 340 | 341 | is-promise@^2.1.0: 342 | version "2.1.0" 343 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 344 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 345 | 346 | is-stream@^1.1.0: 347 | version "1.1.0" 348 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 349 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 350 | 351 | isexe@^2.0.0: 352 | version "2.0.0" 353 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 354 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 355 | 356 | jsonfile@^4.0.0: 357 | version "4.0.0" 358 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 359 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 360 | optionalDependencies: 361 | graceful-fs "^4.1.6" 362 | 363 | lcid@^2.0.0: 364 | version "2.0.0" 365 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" 366 | integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== 367 | dependencies: 368 | invert-kv "^2.0.0" 369 | 370 | locate-path@^3.0.0: 371 | version "3.0.0" 372 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 373 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 374 | dependencies: 375 | p-locate "^3.0.0" 376 | path-exists "^3.0.0" 377 | 378 | lodash@^4.17.11: 379 | version "4.17.14" 380 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" 381 | integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== 382 | 383 | map-age-cleaner@^0.1.1: 384 | version "0.1.3" 385 | resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" 386 | integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== 387 | dependencies: 388 | p-defer "^1.0.0" 389 | 390 | mem@^4.0.0: 391 | version "4.3.0" 392 | resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" 393 | integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== 394 | dependencies: 395 | map-age-cleaner "^0.1.1" 396 | mimic-fn "^2.0.0" 397 | p-is-promise "^2.0.0" 398 | 399 | mimic-fn@^1.0.0: 400 | version "1.2.0" 401 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 402 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 403 | 404 | mimic-fn@^2.0.0: 405 | version "2.1.0" 406 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 407 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 408 | 409 | minimatch@^3.0.4: 410 | version "3.0.4" 411 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 412 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 413 | dependencies: 414 | brace-expansion "^1.1.7" 415 | 416 | mute-stream@0.0.7: 417 | version "0.0.7" 418 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 419 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 420 | 421 | nice-try@^1.0.4: 422 | version "1.0.5" 423 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 424 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 425 | 426 | npm-run-path@^2.0.0: 427 | version "2.0.2" 428 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 429 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 430 | dependencies: 431 | path-key "^2.0.0" 432 | 433 | number-is-nan@^1.0.0: 434 | version "1.0.1" 435 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 436 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 437 | 438 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 439 | version "1.4.0" 440 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 441 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 442 | dependencies: 443 | wrappy "1" 444 | 445 | onetime@^2.0.0: 446 | version "2.0.1" 447 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 448 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 449 | dependencies: 450 | mimic-fn "^1.0.0" 451 | 452 | os-locale@^3.1.0: 453 | version "3.1.0" 454 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" 455 | integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== 456 | dependencies: 457 | execa "^1.0.0" 458 | lcid "^2.0.0" 459 | mem "^4.0.0" 460 | 461 | os-tmpdir@~1.0.2: 462 | version "1.0.2" 463 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 464 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 465 | 466 | p-defer@^1.0.0: 467 | version "1.0.0" 468 | resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" 469 | integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= 470 | 471 | p-finally@^1.0.0: 472 | version "1.0.0" 473 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 474 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 475 | 476 | p-is-promise@^2.0.0: 477 | version "2.1.0" 478 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" 479 | integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== 480 | 481 | p-limit@^2.0.0: 482 | version "2.2.0" 483 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" 484 | integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== 485 | dependencies: 486 | p-try "^2.0.0" 487 | 488 | p-locate@^3.0.0: 489 | version "3.0.0" 490 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 491 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 492 | dependencies: 493 | p-limit "^2.0.0" 494 | 495 | p-try@^2.0.0: 496 | version "2.2.0" 497 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 498 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 499 | 500 | path-exists@^3.0.0: 501 | version "3.0.0" 502 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 503 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 504 | 505 | path-is-absolute@^1.0.0: 506 | version "1.0.1" 507 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 508 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 509 | 510 | path-key@^2.0.0, path-key@^2.0.1: 511 | version "2.0.1" 512 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 513 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 514 | 515 | pump@^3.0.0: 516 | version "3.0.0" 517 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 518 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 519 | dependencies: 520 | end-of-stream "^1.1.0" 521 | once "^1.3.1" 522 | 523 | require-directory@^2.1.1: 524 | version "2.1.1" 525 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 526 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 527 | 528 | require-main-filename@^2.0.0: 529 | version "2.0.0" 530 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 531 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 532 | 533 | restore-cursor@^2.0.0: 534 | version "2.0.0" 535 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 536 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 537 | dependencies: 538 | onetime "^2.0.0" 539 | signal-exit "^3.0.2" 540 | 541 | rimraf@^2.6.3: 542 | version "2.6.3" 543 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 544 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 545 | dependencies: 546 | glob "^7.1.3" 547 | 548 | run-async@^2.2.0: 549 | version "2.3.0" 550 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 551 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 552 | dependencies: 553 | is-promise "^2.1.0" 554 | 555 | rxjs@^6.4.0: 556 | version "6.5.2" 557 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" 558 | integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== 559 | dependencies: 560 | tslib "^1.9.0" 561 | 562 | "safer-buffer@>= 2.1.2 < 3": 563 | version "2.1.2" 564 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 565 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 566 | 567 | semver@^5.5.0: 568 | version "5.7.0" 569 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" 570 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== 571 | 572 | set-blocking@^2.0.0: 573 | version "2.0.0" 574 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 575 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 576 | 577 | shebang-command@^1.2.0: 578 | version "1.2.0" 579 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 580 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 581 | dependencies: 582 | shebang-regex "^1.0.0" 583 | 584 | shebang-regex@^1.0.0: 585 | version "1.0.0" 586 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 587 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 588 | 589 | signal-exit@^3.0.0, signal-exit@^3.0.2: 590 | version "3.0.2" 591 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 592 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 593 | 594 | string-width@^1.0.1: 595 | version "1.0.2" 596 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 597 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 598 | dependencies: 599 | code-point-at "^1.0.0" 600 | is-fullwidth-code-point "^1.0.0" 601 | strip-ansi "^3.0.0" 602 | 603 | string-width@^2.1.0, string-width@^2.1.1: 604 | version "2.1.1" 605 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 606 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 607 | dependencies: 608 | is-fullwidth-code-point "^2.0.0" 609 | strip-ansi "^4.0.0" 610 | 611 | string-width@^3.0.0: 612 | version "3.1.0" 613 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 614 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 615 | dependencies: 616 | emoji-regex "^7.0.1" 617 | is-fullwidth-code-point "^2.0.0" 618 | strip-ansi "^5.1.0" 619 | 620 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 621 | version "3.0.1" 622 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 623 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 624 | dependencies: 625 | ansi-regex "^2.0.0" 626 | 627 | strip-ansi@^4.0.0: 628 | version "4.0.0" 629 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 630 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 631 | dependencies: 632 | ansi-regex "^3.0.0" 633 | 634 | strip-ansi@^5.1.0: 635 | version "5.2.0" 636 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 637 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 638 | dependencies: 639 | ansi-regex "^4.1.0" 640 | 641 | strip-eof@^1.0.0: 642 | version "1.0.0" 643 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 644 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 645 | 646 | supports-color@^5.3.0: 647 | version "5.5.0" 648 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 649 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 650 | dependencies: 651 | has-flag "^3.0.0" 652 | 653 | through@^2.3.6: 654 | version "2.3.8" 655 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 656 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 657 | 658 | tmp-promise@^2.0.1: 659 | version "2.0.1" 660 | resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-2.0.1.tgz#8856f057e782fc9c363a76335cf6165b8eddae19" 661 | integrity sha512-2A0lDPWiuu+92AVO19p5D6eq2egvCPiVUkzR11jE+GG4QMjj4YQ4glr2RqzYT0TMeMs2tIXLPDYo4wWh2/WoSg== 662 | dependencies: 663 | tmp "0.1.0" 664 | 665 | tmp@0.1.0: 666 | version "0.1.0" 667 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" 668 | integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== 669 | dependencies: 670 | rimraf "^2.6.3" 671 | 672 | tmp@^0.0.33: 673 | version "0.0.33" 674 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 675 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 676 | dependencies: 677 | os-tmpdir "~1.0.2" 678 | 679 | tslib@^1.9.0: 680 | version "1.9.3" 681 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 682 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 683 | 684 | universalify@^0.1.0: 685 | version "0.1.2" 686 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 687 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 688 | 689 | which-module@^2.0.0: 690 | version "2.0.0" 691 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 692 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 693 | 694 | which@^1.1.1, which@^1.2.9: 695 | version "1.3.1" 696 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 697 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 698 | dependencies: 699 | isexe "^2.0.0" 700 | 701 | wrap-ansi@^2.0.0: 702 | version "2.1.0" 703 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 704 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= 705 | dependencies: 706 | string-width "^1.0.1" 707 | strip-ansi "^3.0.1" 708 | 709 | wrappy@1: 710 | version "1.0.2" 711 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 712 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 713 | 714 | y18n@^4.0.0: 715 | version "4.0.0" 716 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 717 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 718 | 719 | yargs-parser@^13.0.0: 720 | version "13.1.0" 721 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.0.tgz#7016b6dd03e28e1418a510e258be4bff5a31138f" 722 | integrity sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA== 723 | dependencies: 724 | camelcase "^5.0.0" 725 | decamelize "^1.2.0" 726 | 727 | yargs@^13.2.2: 728 | version "13.2.2" 729 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" 730 | integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== 731 | dependencies: 732 | cliui "^4.0.0" 733 | find-up "^3.0.0" 734 | get-caller-file "^2.0.1" 735 | os-locale "^3.1.0" 736 | require-directory "^2.1.1" 737 | require-main-filename "^2.0.0" 738 | set-blocking "^2.0.0" 739 | string-width "^3.0.0" 740 | which-module "^2.0.0" 741 | y18n "^4.0.0" 742 | yargs-parser "^13.0.0" 743 | --------------------------------------------------------------------------------