appmap 0.51.1 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/CHANGELOG.md +38 -0
  4. data/Rakefile +21 -5
  5. data/appmap.gemspec +11 -7
  6. data/exe/appmap-agent-init +19 -0
  7. data/exe/appmap-inspect +7 -0
  8. data/lib/appmap.rb +44 -12
  9. data/lib/appmap/command/agent_setup/init.rb +44 -0
  10. data/lib/appmap/command/inspect.rb +27 -0
  11. data/lib/appmap/command_error.rb +13 -0
  12. data/lib/appmap/config.rb +6 -24
  13. data/lib/appmap/handler/rails/template.rb +19 -5
  14. data/lib/appmap/node_cli.rb +59 -0
  15. data/lib/appmap/service/guesser.rb +19 -0
  16. data/lib/appmap/trace.rb +4 -2
  17. data/lib/appmap/util.rb +31 -2
  18. data/lib/appmap/version.rb +2 -1
  19. data/package.json +6 -7
  20. data/spec/fixtures/rails5_users_app/docker-compose.yml +1 -1
  21. data/spec/fixtures/rails6_users_app/Dockerfile +9 -0
  22. data/spec/fixtures/rails6_users_app/docker-compose.yml +1 -1
  23. data/spec/{abstract_controller_base_spec.rb → rails_recording_spec.rb} +2 -21
  24. data/spec/rails_spec_helper.rb +22 -0
  25. data/test/agent_setup_init_test.rb +37 -0
  26. data/test/fixtures/gem_test/Gemfile +1 -0
  27. data/test/inspect_cli_test.rb +12 -0
  28. data/yarn.lock +477 -0
  29. metadata +23 -61
  30. data/lib/appmap/algorithm/prune_class_map.rb +0 -67
  31. data/lib/appmap/algorithm/stats.rb +0 -91
  32. data/lib/appmap/command/record.rb +0 -38
  33. data/lib/appmap/command/stats.rb +0 -14
  34. data/lore/pages/2019-05-21-install-and-record/index.pug +0 -51
  35. data/lore/pages/2019-05-21-install-and-record/install_example_appmap.png +0 -0
  36. data/lore/pages/2019-05-21-install-and-record/metadata.yml +0 -5
  37. data/lore/pages/layout.pug +0 -66
  38. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-grid.css +0 -1912
  39. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-grid.css.map +0 -1
  40. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-grid.min.css +0 -7
  41. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-grid.min.css.map +0 -1
  42. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-reboot.css +0 -331
  43. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-reboot.css.map +0 -1
  44. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-reboot.min.css +0 -8
  45. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap-reboot.min.css.map +0 -1
  46. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap.css +0 -9030
  47. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap.css.map +0 -1
  48. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap.min.css +0 -7
  49. data/lore/public/lib/bootstrap-4.1.3/css/bootstrap.min.css.map +0 -1
  50. data/lore/public/stylesheets/style.css +0 -8
  51. data/package-lock.json +0 -1064
@@ -0,0 +1,59 @@
1
+ require 'open3'
2
+ require 'shellwords'
3
+ require 'appmap/util'
4
+ require 'appmap/command_error'
5
+
6
+ module AppMap
7
+ # Utilities for invoking the +@appland/appmap+ CLI.
8
+ class NodeCLI
9
+ APPMAP_JS = Pathname.new(__dir__).join('../../node_modules/@appland/cli/src/cli.js').expand_path.to_s
10
+
11
+ attr_reader :verbose
12
+ # Directory to scan for AppMaps.
13
+ attr_accessor :appmap_dir
14
+
15
+ def initialize(verbose: false, appmap_dir: AppMap::DEFAULT_APPMAP_DIR)
16
+ @verbose = verbose
17
+ @appmap_dir = appmap_dir
18
+
19
+ detect_nodejs
20
+ end
21
+
22
+ def detect_nodejs
23
+ do_fail('node', 'please install NodeJS') unless system('node --version 2>&1 > /dev/null')
24
+ true
25
+ end
26
+
27
+ def index_appmaps
28
+ command [ 'index', '--appmap-dir', appmap_dir ]
29
+ true
30
+ end
31
+
32
+ def command(command, options = {})
33
+ command.unshift << '--verbose' if verbose
34
+ command.unshift APPMAP_JS
35
+ command.unshift 'node'
36
+
37
+ warn command.join(' ') if verbose
38
+ stdout, stderr, status = Open3.capture3({ 'NODE_OPTIONS' => '--trace-warnings' }, *command.map(&:shellescape), options)
39
+ stdout_msg = stdout.split("\n").map {|line| "stdout: #{line}"}.join("\n") unless Util.blank?(stdout)
40
+ stderr_msg = stderr.split("\n").map {|line| "stderr: #{line}"}.join("\n") unless Util.blank?(stderr)
41
+ if verbose
42
+ warn stdout_msg if stdout_msg
43
+ warn stderr_msg if stderr_msg
44
+ end
45
+ unless status.exitstatus == 0
46
+ raise CommandError.new(command, [ stdout_msg, stderr_msg ].compact.join("\n"))
47
+ end
48
+ [ stdout, stderr ]
49
+ end
50
+
51
+ protected
52
+
53
+ def do_fail(command, msg)
54
+ command = command.join(' ') if command.is_a?(Array)
55
+ warn [ command, msg ].join('; ') if verbose
56
+ raise CommandError.new(command, msg)
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppMap
4
+ module Service
5
+ class Guesser
6
+ POSSIBLE_PATHS = %w[app/controllers app/models lib]
7
+ class << self
8
+ def guess_name
9
+ return Pathname.new(`git rev-parse --show-toplevel`.strip).basename.to_s if File.directory?('.git')
10
+ Dir.pwd.split('/').last
11
+ end
12
+
13
+ def guess_paths
14
+ POSSIBLE_PATHS.select { |path| File.directory?(path) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/appmap/trace.rb CHANGED
@@ -2,10 +2,12 @@
2
2
 
3
3
  module AppMap
4
4
  module Trace
5
- class RubyMethod
5
+ class RubyMethod < SimpleDelegator
6
6
  attr_reader :class_name, :static
7
7
 
8
8
  def initialize(package, class_name, method, static)
9
+ super(method)
10
+
9
11
  @package = package
10
12
  @class_name = class_name
11
13
  @method = method
@@ -111,7 +113,7 @@ module AppMap
111
113
  @last_package_for_thread[Thread.current.object_id] = package if package
112
114
  @events << event
113
115
  static = event.static if event.respond_to?(:static)
114
- @methods << Trace::RubyMethod.new(package, defined_class, method, static) \
116
+ record_method Trace::RubyMethod.new(package, defined_class, method, static) \
115
117
  if package && defined_class && method && (event.event == :call)
116
118
  end
117
119
 
data/lib/appmap/util.rb CHANGED
@@ -101,13 +101,13 @@ module AppMap
101
101
  # Rack prepends HTTP_ to all client-sent headers.
102
102
  matching_headers = env
103
103
  .select { |k,v| k.start_with? 'HTTP_'}
104
- .reject { |k,v| v.blank? }
104
+ .reject { |k,v| blank?(v) }
105
105
  .each_with_object({}) do |kv, memo|
106
106
  key = kv[0].sub(/^HTTP_/, '').split('_').map(&:capitalize).join('-')
107
107
  value = kv[1]
108
108
  memo[key] = value
109
109
  end
110
- matching_headers.blank? ? nil : matching_headers
110
+ blank?(matching_headers) ? nil : matching_headers
111
111
  end
112
112
 
113
113
  def normalize_path(path)
@@ -149,6 +149,35 @@ module AppMap
149
149
  bold = bold ? BOLD : ""
150
150
  "#{bold}#{color}#{text}#{CLEAR}"
151
151
  end
152
+
153
+ def classify(word)
154
+ word.split(/[\-_]/).map(&:capitalize).join
155
+ end
156
+
157
+ def deep_dup(hash)
158
+ # This is a simple way to avoid the need for deep_dup from activesupport.
159
+ Marshal.load(Marshal.dump(hash))
160
+ end
161
+
162
+ def blank?(obj)
163
+ return true if obj.nil?
164
+
165
+ return true if obj.is_a?(String) && obj == ''
166
+
167
+ return true if obj.respond_to?(:length) && obj.length == 0
168
+
169
+ return true if obj.respond_to?(:size) && obj.size == 0
170
+
171
+ false
172
+ end
173
+
174
+ def startup_message(msg)
175
+ if defined?(::Rails) && defined?(::Rails.logger) && ::Rails.logger
176
+ ::Rails.logger.debug msg
177
+ elsif ENV['DEBUG'] == 'true'
178
+ warn msg
179
+ end
180
+ end
152
181
  end
153
182
  end
154
183
  end
@@ -3,9 +3,10 @@
3
3
  module AppMap
4
4
  URL = 'https://github.com/applandinc/appmap-ruby'
5
5
 
6
- VERSION = '0.51.1'
6
+ VERSION = '0.53.0'
7
7
 
8
8
  APPMAP_FORMAT_VERSION = '1.5.1'
9
9
 
10
10
  DEFAULT_APPMAP_DIR = 'tmp/appmap'.freeze
11
+ DEFAULT_CONFIG_FILE_PATH = 'appmap.yml'.freeze
11
12
  end
data/package.json CHANGED
@@ -1,12 +1,8 @@
1
1
  {
2
- "name": "appmap-ruby-lore",
2
+ "name": "appmap-ruby",
3
3
  "version": "1.0.0",
4
- "description": "Lore for the AppMap Rubygem",
5
- "scripts": {
6
- "start": "./node_modules/applore/bin/lore serve"
7
- },
4
+ "description": "AppMap client agent for Ruby",
8
5
  "directories": {
9
- "example": "examples",
10
6
  "lib": "lib",
11
7
  "test": "test"
12
8
  },
@@ -14,11 +10,14 @@
14
10
  "type": "git",
15
11
  "url": "git+https://github.com/applandinc/appmap-ruby.git"
16
12
  },
13
+ "author": "kgilpin@gmail.com",
14
+ "license": "MIT",
17
15
  "bugs": {
18
16
  "url": "https://github.com/applandinc/appmap-ruby/issues"
19
17
  },
20
18
  "homepage": "https://github.com/applandinc/appmap-ruby#readme",
21
19
  "dependencies": {
22
- "applore": "^0.3.0"
20
+ "@appland/cli": "^1.1.0"
23
21
  }
24
22
  }
23
+
@@ -13,7 +13,7 @@ services:
13
13
  build:
14
14
  context: .
15
15
  dockerfile: Dockerfile
16
- image: rails-app:${RUBY_VERSION}
16
+ image: rails5-app:${RUBY_VERSION}
17
17
  command:
18
18
  [ "./bin/rails", "server", "-b", "0.0.0.0", "webrick" ]
19
19
  environment:
@@ -4,9 +4,18 @@ ARG RUBY_VERSION
4
4
  FROM appmap:${GEM_VERSION} as appmap
5
5
 
6
6
  FROM ruby:${RUBY_VERSION}
7
+
8
+ SHELL ["/bin/bash", "-c"]
9
+
7
10
  RUN apt-get update && apt-get install -y vim less
8
11
  RUN apt-get install -y postgresql-client
9
12
 
13
+ RUN curl -fsSL https://fnm.vercel.app/install | bash \
14
+ && source /root/.bashrc \
15
+ && fnm install --lts \
16
+ && echo 'fnm default $(fnm current)' >> ~/.bashrc \
17
+ && ln -s $(which node) /usr/local/bin/node
18
+
10
19
  RUN mkdir /app
11
20
  WORKDIR /app
12
21
 
@@ -13,7 +13,7 @@ services:
13
13
  build:
14
14
  context: .
15
15
  dockerfile: Dockerfile
16
- image: rails-app:${RUBY_VERSION}
16
+ image: rails6-app:${RUBY_VERSION}
17
17
  command:
18
18
  [ "./bin/rails", "server", "-b", "0.0.0.0", "webrick" ]
19
19
  environment:
@@ -1,26 +1,6 @@
1
1
  require 'rails_spec_helper'
2
2
 
3
3
  describe 'Rails' do
4
- shared_context 'rails integration test setup' do
5
- def tmpdir
6
- 'tmp/spec/AbstractControllerBase'
7
- end
8
-
9
- unless use_existing_data?
10
- before(:all) do
11
- FileUtils.rm_rf tmpdir
12
- FileUtils.mkdir_p tmpdir
13
- run_spec 'spec/controllers/users_controller_spec.rb'
14
- run_spec 'spec/controllers/users_controller_api_spec.rb'
15
- end
16
- end
17
-
18
- let(:appmap) { JSON.parse File.read File.join tmpdir, 'appmap/rspec', appmap_json_file }
19
- let(:appmap_json_path) { File.join(tmpdir, 'appmap/rspec', appmap_json_file) }
20
- let(:appmap) { JSON.parse File.read(appmap_json_path) }
21
- let(:events) { appmap['events'] }
22
- end
23
-
24
4
  %w[5 6].each do |rails_major_version| # rubocop:disable Metrics/BlockLength
25
5
  context "#{rails_major_version}" do
26
6
  include_context 'Rails app pg database', "spec/fixtures/rails#{rails_major_version}_users_app" unless use_existing_data?
@@ -243,7 +223,8 @@ describe 'Rails' do
243
223
  'children' => include(hash_including(
244
224
  'name' => 'ActionView',
245
225
  'children' => include(hash_including(
246
- 'name' => 'Renderer',
226
+ # Rails 6/5 difference
227
+ 'name' => /^(Template)?Renderer$/,
247
228
  'children' => include(hash_including(
248
229
  'name' => 'render',
249
230
  'labels' => ['mvc.view']
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
+ require 'active_support'
5
+ require 'active_support/core_ext'
4
6
  require 'open3'
5
7
 
6
8
  def wait_for_container(app_name)
@@ -58,3 +60,23 @@ shared_context 'Rails app pg database' do |fixture_dir|
58
60
  end
59
61
  end
60
62
  end
63
+
64
+ shared_context 'rails integration test setup' do
65
+ def tmpdir
66
+ 'tmp/spec/AbstractControllerBase'
67
+ end
68
+
69
+ unless use_existing_data?
70
+ before(:all) do
71
+ FileUtils.rm_rf tmpdir
72
+ FileUtils.mkdir_p tmpdir
73
+ run_spec 'spec/controllers/users_controller_spec.rb'
74
+ run_spec 'spec/controllers/users_controller_api_spec.rb'
75
+ end
76
+ end
77
+
78
+ let(:appmap) { JSON.parse File.read File.join tmpdir, 'appmap/rspec', appmap_json_file }
79
+ let(:appmap_json_path) { File.join(tmpdir, 'appmap/rspec', appmap_json_file) }
80
+ let(:appmap) { JSON.parse File.read(appmap_json_path) }
81
+ let(:events) { appmap['events'] }
82
+ end
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'test_helper'
5
+
6
+ class AgentSetupInitTest < Minitest::Test
7
+ CONFIG_FILENAME = '123.yml'
8
+ SUBFOLDER_CONFIG_FILEPATH = 'conf/123.yml'
9
+ EXPECTED_CONFIG_CONTENT = %(name: appmap-ruby
10
+ packages:
11
+ - path: lib
12
+ )
13
+
14
+ def test_init_when_config_exists
15
+ output = `./exe/appmap-agent-init`
16
+ assert_equal 0, $CHILD_STATUS.exitstatus
17
+ assert_includes output, 'The AppMap config file appmap.yml already exists.'
18
+ end
19
+
20
+ def test_init_with_custom_config_filename
21
+ output = `./exe/appmap-agent-init -c #{CONFIG_FILENAME}`
22
+ assert_equal 0, $CHILD_STATUS.exitstatus
23
+ assert_includes output, "The following AppMap config file #{CONFIG_FILENAME} has been created:"
24
+ assert_equal EXPECTED_CONFIG_CONTENT, File.read(CONFIG_FILENAME)
25
+ ensure
26
+ File.delete(CONFIG_FILENAME) if File.exist?(CONFIG_FILENAME)
27
+ end
28
+
29
+ def test_init_with_custom_config_file_in_subfolder
30
+ output = `./exe/appmap-agent-init --config=#{SUBFOLDER_CONFIG_FILEPATH}`
31
+ assert_equal 0, $CHILD_STATUS.exitstatus
32
+ assert_includes output, "The following AppMap config file #{SUBFOLDER_CONFIG_FILEPATH} has been created:"
33
+ assert_equal EXPECTED_CONFIG_CONTENT, File.read(SUBFOLDER_CONFIG_FILEPATH)
34
+ ensure
35
+ File.delete(SUBFOLDER_CONFIG_FILEPATH) if File.exist?(SUBFOLDER_CONFIG_FILEPATH)
36
+ end
37
+ end
@@ -4,3 +4,4 @@ gem 'appmap', git: 'applandinc/appmap-ruby', branch: `git rev-parse --abbrev-ref
4
4
  gem 'activesupport'
5
5
  gem 'byebug'
6
6
  gem 'minitest'
7
+ gem 'parser'
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'test_helper'
5
+
6
+ class InspectCLITest < Minitest::Test
7
+ def test_help
8
+ output = `./exe/appmap-inspect --help`
9
+ assert_equal 0, $CHILD_STATUS.exitstatus
10
+ assert_includes output, 'Search AppMaps for references to a code object'
11
+ end
12
+ end
data/yarn.lock ADDED
@@ -0,0 +1,477 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@appland/cli@^1.1.0":
6
+ version "1.1.0"
7
+ resolved "https://registry.yarnpkg.com/@appland/cli/-/cli-1.1.0.tgz#db2e207cc10f0fac7ae435128390c3656b430a74"
8
+ integrity sha512-zhxi2Yk6ssueMYMkZk509VR4oJb7+zoskQNoBiqIXYeZs0geBj/kJPQTIjIcIxk1gBoq0JhXWEd7mEUGVWfFfA==
9
+ dependencies:
10
+ "@appland/models" "1.0.6"
11
+ async "^3.2.0"
12
+ chokidar "^3.5.1"
13
+ console-table-printer "^2.9.0"
14
+ crypto-js "^4.0.0"
15
+ diff "^5.0.0"
16
+ fs-extra "^9.1.0"
17
+ glob "^7.1.6"
18
+ js-yaml "^3.14.1"
19
+ semver "^7.3.5"
20
+ yargs "^17.0.1"
21
+
22
+ "@appland/models@1.0.6":
23
+ version "1.0.6"
24
+ resolved "https://registry.yarnpkg.com/@appland/models/-/models-1.0.6.tgz#a3ce8a0063125b9bed8cb71e396067e2853151c9"
25
+ integrity sha512-54FvtaoZyJOIzeS8SxY1UXkYfDa/gGwZcynEWT+KLT9hkAjGsr9pIhgJCvZ1EJpUmiXYoH6sxYl8SvGlNuG5Xw==
26
+ dependencies:
27
+ "@rollup/plugin-alias" "^3.1.2"
28
+ cross-env "^7.0.3"
29
+ crypto-js "^4.0.0"
30
+ sqlite-parser "^1.0.1"
31
+
32
+ "@rollup/plugin-alias@^3.1.2":
33
+ version "3.1.2"
34
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz#c585b05be4a7782d269c69d13def56f44e417772"
35
+ integrity sha512-wzDnQ6v7CcoRzS0qVwFPrFdYA4Qlr+ookA217Y2Z3DPZE1R8jrFNM3jvGgOf6o6DMjbnQIn5lCIJgHPe1Bt3uw==
36
+ dependencies:
37
+ slash "^3.0.0"
38
+
39
+ ansi-regex@^5.0.0:
40
+ version "5.0.0"
41
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
42
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
43
+
44
+ ansi-styles@^4.0.0:
45
+ version "4.3.0"
46
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
47
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
48
+ dependencies:
49
+ color-convert "^2.0.1"
50
+
51
+ anymatch@~3.1.2:
52
+ version "3.1.2"
53
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
54
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
55
+ dependencies:
56
+ normalize-path "^3.0.0"
57
+ picomatch "^2.0.4"
58
+
59
+ argparse@^1.0.7:
60
+ version "1.0.10"
61
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
62
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
63
+ dependencies:
64
+ sprintf-js "~1.0.2"
65
+
66
+ async@^3.2.0:
67
+ version "3.2.0"
68
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
69
+ integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
70
+
71
+ at-least-node@^1.0.0:
72
+ version "1.0.0"
73
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
74
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
75
+
76
+ balanced-match@^1.0.0:
77
+ version "1.0.2"
78
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
79
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
80
+
81
+ binary-extensions@^2.0.0:
82
+ version "2.2.0"
83
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
84
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
85
+
86
+ brace-expansion@^1.1.7:
87
+ version "1.1.11"
88
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
89
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
90
+ dependencies:
91
+ balanced-match "^1.0.0"
92
+ concat-map "0.0.1"
93
+
94
+ braces@~3.0.2:
95
+ version "3.0.2"
96
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
97
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
98
+ dependencies:
99
+ fill-range "^7.0.1"
100
+
101
+ chokidar@^3.5.1:
102
+ version "3.5.2"
103
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
104
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
105
+ dependencies:
106
+ anymatch "~3.1.2"
107
+ braces "~3.0.2"
108
+ glob-parent "~5.1.2"
109
+ is-binary-path "~2.1.0"
110
+ is-glob "~4.0.1"
111
+ normalize-path "~3.0.0"
112
+ readdirp "~3.6.0"
113
+ optionalDependencies:
114
+ fsevents "~2.3.2"
115
+
116
+ cliui@^7.0.2:
117
+ version "7.0.4"
118
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
119
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
120
+ dependencies:
121
+ string-width "^4.2.0"
122
+ strip-ansi "^6.0.0"
123
+ wrap-ansi "^7.0.0"
124
+
125
+ color-convert@^2.0.1:
126
+ version "2.0.1"
127
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
128
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
129
+ dependencies:
130
+ color-name "~1.1.4"
131
+
132
+ color-name@~1.1.4:
133
+ version "1.1.4"
134
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
135
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
136
+
137
+ concat-map@0.0.1:
138
+ version "0.0.1"
139
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
140
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
141
+
142
+ console-table-printer@^2.9.0:
143
+ version "2.9.0"
144
+ resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.9.0.tgz#5d75374bc94ae57048587604829cb914b282a088"
145
+ integrity sha512-20o73riqnclLYJt5ggNqP2ZjtgL5OxJPWzTVi3LyVFVtubMH0XN+oOn9outL1XI5ldJgPcjdMAWc92vRscHAKA==
146
+ dependencies:
147
+ simple-wcswidth "^1.0.1"
148
+
149
+ cross-env@^7.0.3:
150
+ version "7.0.3"
151
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
152
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
153
+ dependencies:
154
+ cross-spawn "^7.0.1"
155
+
156
+ cross-spawn@^7.0.1:
157
+ version "7.0.3"
158
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
159
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
160
+ dependencies:
161
+ path-key "^3.1.0"
162
+ shebang-command "^2.0.0"
163
+ which "^2.0.1"
164
+
165
+ crypto-js@^4.0.0:
166
+ version "4.0.0"
167
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
168
+ integrity sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==
169
+
170
+ diff@^5.0.0:
171
+ version "5.0.0"
172
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
173
+ integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
174
+
175
+ emoji-regex@^8.0.0:
176
+ version "8.0.0"
177
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
178
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
179
+
180
+ escalade@^3.1.1:
181
+ version "3.1.1"
182
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
183
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
184
+
185
+ esprima@^4.0.0:
186
+ version "4.0.1"
187
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
188
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
189
+
190
+ fill-range@^7.0.1:
191
+ version "7.0.1"
192
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
193
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
194
+ dependencies:
195
+ to-regex-range "^5.0.1"
196
+
197
+ fs-extra@^9.1.0:
198
+ version "9.1.0"
199
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
200
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
201
+ dependencies:
202
+ at-least-node "^1.0.0"
203
+ graceful-fs "^4.2.0"
204
+ jsonfile "^6.0.1"
205
+ universalify "^2.0.0"
206
+
207
+ fs.realpath@^1.0.0:
208
+ version "1.0.0"
209
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
210
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
211
+
212
+ fsevents@~2.3.2:
213
+ version "2.3.2"
214
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
215
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
216
+
217
+ get-caller-file@^2.0.5:
218
+ version "2.0.5"
219
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
220
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
221
+
222
+ glob-parent@~5.1.2:
223
+ version "5.1.2"
224
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
225
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
226
+ dependencies:
227
+ is-glob "^4.0.1"
228
+
229
+ glob@^7.1.6:
230
+ version "7.1.7"
231
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
232
+ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
233
+ dependencies:
234
+ fs.realpath "^1.0.0"
235
+ inflight "^1.0.4"
236
+ inherits "2"
237
+ minimatch "^3.0.4"
238
+ once "^1.3.0"
239
+ path-is-absolute "^1.0.0"
240
+
241
+ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
242
+ version "4.2.6"
243
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
244
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
245
+
246
+ inflight@^1.0.4:
247
+ version "1.0.6"
248
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
249
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
250
+ dependencies:
251
+ once "^1.3.0"
252
+ wrappy "1"
253
+
254
+ inherits@2:
255
+ version "2.0.4"
256
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
257
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
258
+
259
+ is-binary-path@~2.1.0:
260
+ version "2.1.0"
261
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
262
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
263
+ dependencies:
264
+ binary-extensions "^2.0.0"
265
+
266
+ is-extglob@^2.1.1:
267
+ version "2.1.1"
268
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
269
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
270
+
271
+ is-fullwidth-code-point@^3.0.0:
272
+ version "3.0.0"
273
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
274
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
275
+
276
+ is-glob@^4.0.1, is-glob@~4.0.1:
277
+ version "4.0.1"
278
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
279
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
280
+ dependencies:
281
+ is-extglob "^2.1.1"
282
+
283
+ is-number@^7.0.0:
284
+ version "7.0.0"
285
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
286
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
287
+
288
+ isexe@^2.0.0:
289
+ version "2.0.0"
290
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
291
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
292
+
293
+ js-yaml@^3.14.1:
294
+ version "3.14.1"
295
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
296
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
297
+ dependencies:
298
+ argparse "^1.0.7"
299
+ esprima "^4.0.0"
300
+
301
+ jsonfile@^6.0.1:
302
+ version "6.1.0"
303
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
304
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
305
+ dependencies:
306
+ universalify "^2.0.0"
307
+ optionalDependencies:
308
+ graceful-fs "^4.1.6"
309
+
310
+ lru-cache@^6.0.0:
311
+ version "6.0.0"
312
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
313
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
314
+ dependencies:
315
+ yallist "^4.0.0"
316
+
317
+ minimatch@^3.0.4:
318
+ version "3.0.4"
319
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
320
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
321
+ dependencies:
322
+ brace-expansion "^1.1.7"
323
+
324
+ normalize-path@^3.0.0, normalize-path@~3.0.0:
325
+ version "3.0.0"
326
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
327
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
328
+
329
+ once@^1.3.0:
330
+ version "1.4.0"
331
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
332
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
333
+ dependencies:
334
+ wrappy "1"
335
+
336
+ path-is-absolute@^1.0.0:
337
+ version "1.0.1"
338
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
339
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
340
+
341
+ path-key@^3.1.0:
342
+ version "3.1.1"
343
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
344
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
345
+
346
+ picomatch@^2.0.4, picomatch@^2.2.1:
347
+ version "2.3.0"
348
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
349
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
350
+
351
+ readdirp@~3.6.0:
352
+ version "3.6.0"
353
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
354
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
355
+ dependencies:
356
+ picomatch "^2.2.1"
357
+
358
+ require-directory@^2.1.1:
359
+ version "2.1.1"
360
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
361
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
362
+
363
+ semver@^7.3.5:
364
+ version "7.3.5"
365
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
366
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
367
+ dependencies:
368
+ lru-cache "^6.0.0"
369
+
370
+ shebang-command@^2.0.0:
371
+ version "2.0.0"
372
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
373
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
374
+ dependencies:
375
+ shebang-regex "^3.0.0"
376
+
377
+ shebang-regex@^3.0.0:
378
+ version "3.0.0"
379
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
380
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
381
+
382
+ simple-wcswidth@^1.0.1:
383
+ version "1.0.1"
384
+ resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2"
385
+ integrity sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==
386
+
387
+ slash@^3.0.0:
388
+ version "3.0.0"
389
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
390
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
391
+
392
+ sprintf-js@~1.0.2:
393
+ version "1.0.3"
394
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
395
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
396
+
397
+ sqlite-parser@^1.0.1:
398
+ version "1.0.1"
399
+ resolved "https://registry.yarnpkg.com/sqlite-parser/-/sqlite-parser-1.0.1.tgz#110183f2682f04ac6c7d8ad09c44446ef976d5ec"
400
+ integrity sha1-EQGD8mgvBKxsfYrQnEREbvl21ew=
401
+
402
+ string-width@^4.1.0, string-width@^4.2.0:
403
+ version "4.2.2"
404
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
405
+ integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
406
+ dependencies:
407
+ emoji-regex "^8.0.0"
408
+ is-fullwidth-code-point "^3.0.0"
409
+ strip-ansi "^6.0.0"
410
+
411
+ strip-ansi@^6.0.0:
412
+ version "6.0.0"
413
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
414
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
415
+ dependencies:
416
+ ansi-regex "^5.0.0"
417
+
418
+ to-regex-range@^5.0.1:
419
+ version "5.0.1"
420
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
421
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
422
+ dependencies:
423
+ is-number "^7.0.0"
424
+
425
+ universalify@^2.0.0:
426
+ version "2.0.0"
427
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
428
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
429
+
430
+ which@^2.0.1:
431
+ version "2.0.2"
432
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
433
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
434
+ dependencies:
435
+ isexe "^2.0.0"
436
+
437
+ wrap-ansi@^7.0.0:
438
+ version "7.0.0"
439
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
440
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
441
+ dependencies:
442
+ ansi-styles "^4.0.0"
443
+ string-width "^4.1.0"
444
+ strip-ansi "^6.0.0"
445
+
446
+ wrappy@1:
447
+ version "1.0.2"
448
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
449
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
450
+
451
+ y18n@^5.0.5:
452
+ version "5.0.8"
453
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
454
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
455
+
456
+ yallist@^4.0.0:
457
+ version "4.0.0"
458
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
459
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
460
+
461
+ yargs-parser@^20.2.2:
462
+ version "20.2.9"
463
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
464
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
465
+
466
+ yargs@^17.0.1:
467
+ version "17.0.1"
468
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb"
469
+ integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==
470
+ dependencies:
471
+ cliui "^7.0.2"
472
+ escalade "^3.1.1"
473
+ get-caller-file "^2.0.5"
474
+ require-directory "^2.1.1"
475
+ string-width "^4.2.0"
476
+ y18n "^5.0.5"
477
+ yargs-parser "^20.2.2"