├── .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 |
5 |
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 | 
2 |
3 | Devtools Timeline Exporter
4 |
5 |
6 |
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 | 
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 |
--------------------------------------------------------------------------------