lcms-engine 0.3.0 → 0.3.1

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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.env.docker +1 -1
  4. data/.rubocop.yml +8 -7
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +16 -1
  7. data/Dockerfile +1 -1
  8. data/Gemfile.lock +223 -184
  9. data/README.md +3 -2
  10. data/app/controllers/concerns/lcms/engine/reimportable.rb +11 -1
  11. data/app/controllers/lcms/engine/admin/admin_controller.rb +1 -1
  12. data/app/controllers/lcms/engine/admin/documents_controller.rb +19 -4
  13. data/app/controllers/lcms/engine/admin/materials_controller.rb +12 -3
  14. data/app/controllers/lcms/engine/admin/standards_controller.rb +6 -1
  15. data/app/controllers/lcms/engine/admin/users_controller.rb +6 -1
  16. data/app/entities/lcms/engine/grades.rb +17 -6
  17. data/app/entities/lcms/engine/media_embed.rb +1 -1
  18. data/app/entities/lcms/engine/roman_numerals.rb +1 -1
  19. data/app/forms/lcms/engine/document_form.rb +19 -14
  20. data/app/forms/lcms/engine/material_form.rb +3 -2
  21. data/app/helpers/admin/components_helper.rb +2 -2
  22. data/app/helpers/lcms/engine/view_helper.rb +1 -1
  23. data/app/interactors/lcms/engine/explore_curriculum_interactor.rb +1 -1
  24. data/app/javascript/components/admin/ImportStatus.jsx +7 -3
  25. data/app/javascript/components/admin/MultiSelectedOperation.jsx +1 -0
  26. data/app/javascript/components/admin/association-picker/AssociationPicker.jsx +1 -0
  27. data/app/javascript/components/admin/association-picker/AssociationPickerResults.jsx +1 -0
  28. data/app/javascript/components/admin/association-picker/AssociationPickerWindow.jsx +1 -0
  29. data/app/javascript/components/admin/curriculum/CurriculumEditor.jsx +1 -0
  30. data/app/javascript/components/admin/resource-picker/ResourcePicker.jsx +1 -0
  31. data/app/jobs/concerns/lcms/engine/nested_resque_job.rb +1 -4
  32. data/app/jobs/lcms/engine/document_generate_gdoc_job.rb +2 -2
  33. data/app/jobs/lcms/engine/document_generate_job.rb +1 -1
  34. data/app/jobs/lcms/engine/document_parse_job.rb +1 -1
  35. data/app/models/lcms/engine/component.rb +3 -3
  36. data/app/models/lcms/engine/download.rb +1 -1
  37. data/app/models/lcms/engine/search/document.rb +4 -3
  38. data/app/presenters/lcms/engine/document_presenter.rb +2 -2
  39. data/app/queries/lcms/engine/admin_documents_query.rb +1 -1
  40. data/app/serializers/lcms/engine/previews_material_serializer.rb +1 -0
  41. data/app/services/lcms/engine/document_build_service.rb +4 -0
  42. data/app/services/lcms/engine/html_sanitizer.rb +5 -5
  43. data/app/services/lcms/engine/lessons_gdoc_bundler.rb +1 -1
  44. data/app/services/lcms/engine/material_build_service.rb +6 -2
  45. data/app/services/lcms/engine/material_preview_generator.rb +2 -2
  46. data/app/services/lcms/engine/react_materials_resolver.rb +3 -2
  47. data/app/views/lcms/engine/admin/batch_reimports/_search_form.html.erb +1 -1
  48. data/app/views/lcms/engine/admin/curriculums/edit.html.erb +1 -3
  49. data/app/views/lcms/engine/admin/documents/_materials_links.html.erb +2 -2
  50. data/app/views/lcms/engine/admin/documents/_search_form.html.erb +1 -1
  51. data/app/views/lcms/engine/admin/documents/index.html.erb +2 -2
  52. data/app/views/lcms/engine/admin/documents/new.html.erb +1 -1
  53. data/app/views/lcms/engine/admin/materials/_search_form.html.erb +1 -1
  54. data/app/views/lcms/engine/admin/materials/index.html.erb +4 -4
  55. data/app/views/lcms/engine/admin/resource_bulk_edits/new.html.erb +1 -1
  56. data/app/views/lcms/engine/admin/resources/_fields.html.erb +3 -0
  57. data/app/views/lcms/engine/admin/resources/_search_form.html.erb +1 -1
  58. data/app/views/lcms/engine/documents/gdoc/_agenda.html.erb +1 -1
  59. data/app/views/lcms/engine/documents/show.html.erb +1 -1
  60. data/app/views/lcms/engine/materials/show.html.erb +1 -1
  61. data/app/views/lcms/engine/resources/_download.html.erb +2 -2
  62. data/app/views/lcms/engine/resources/_unit_bundles.html.erb +2 -2
  63. data/config/locales/admin/en.yml +1 -1
  64. data/db/schema.rb +1 -1
  65. data/lcms-engine.gemspec +12 -10
  66. data/lib/doc_template.rb +1 -1
  67. data/lib/doc_template/objects/agenda_metadata.rb +1 -1
  68. data/lib/doc_template/objects/metadata_helpers.rb +1 -1
  69. data/lib/doc_template/objects/toc_metadata.rb +2 -2
  70. data/lib/doc_template/tables/base.rb +3 -2
  71. data/lib/doc_template/tags/activity_metadata_type_tag.rb +1 -1
  72. data/lib/doc_template/tags/answer_space_tag.rb +1 -1
  73. data/lib/doc_template/tags/base_tag.rb +3 -3
  74. data/lib/doc_template/tags/columns_tag.rb +1 -1
  75. data/lib/doc_template/tags/def_tag.rb +1 -1
  76. data/lib/doc_template/tags/expand_tag.rb +1 -0
  77. data/lib/doc_template/tags/heading_tag.rb +1 -1
  78. data/lib/doc_template/tags/inset_tag.rb +2 -2
  79. data/lib/doc_template/tags/latex_tag.rb +1 -1
  80. data/lib/doc_template/tags/page_break_tag.rb +1 -1
  81. data/lib/doc_template/tags/pd_tag.rb +4 -4
  82. data/lib/doc_template/tags/section_tag.rb +2 -2
  83. data/lib/doc_template/tags/standard_tag.rb +3 -3
  84. data/lib/doc_template/tags/table_preserve_alignment_tag.rb +1 -1
  85. data/lib/document_exporter/gdoc/base.rb +1 -1
  86. data/lib/document_renderer/part.rb +3 -3
  87. data/lib/elasticsearch/persistence/repository/response/results.rb +1 -1
  88. data/lib/lcms/engine/engine.rb +1 -1
  89. data/lib/lcms/engine/version.rb +1 -1
  90. data/lib/lt/lcms/metadata/base_service.rb +2 -1
  91. data/lib/lt/lcms/metadata/context.rb +2 -2
  92. data/lib/lt/lcms/metadata/service.rb +3 -1
  93. data/lib/resque_job.rb +3 -6
  94. data/lib/standard_importer.rb +4 -4
  95. data/lib/tasks/cloud66.rake +6 -4
  96. data/lib/tasks/document.rake +3 -3
  97. data/lib/tasks/google.rake +1 -1
  98. data/package.json +1 -0
  99. data/spec/controllers/admin/association_picker_controller_spec.rb +6 -8
  100. data/spec/controllers/admin/documents_controller_spec.rb +3 -1
  101. data/spec/controllers/admin/materials_controller_spec.rb +1 -1
  102. data/spec/controllers/admin/resources_controller_spec.rb +2 -2
  103. data/spec/dummy/.env.docker +5 -0
  104. data/spec/dummy/config/environments/production.rb +1 -1
  105. data/spec/dummy/config/puma.rb +3 -3
  106. data/spec/entities/grades_spec.rb +12 -0
  107. data/spec/features/admin/lessons/add_lesson_spec.rb +3 -3
  108. data/spec/features/admin/materials/add_material_spec.rb +3 -3
  109. data/spec/forms/document_form_spec.rb +11 -1
  110. data/spec/lib/doc_template/tables/shared_examples/remove_table.rb +1 -1
  111. data/spec/rails_helper.rb +19 -2
  112. data/spec/services/document_build_service_spec.rb +1 -1
  113. data/yarn.lock +145 -170
  114. metadata +81 -34
@@ -9,7 +9,7 @@ module Lt
9
9
  class Context
10
10
  attr_reader :context
11
11
 
12
- NUM_RE = /\d+/
12
+ NUM_RE = /\d+/.freeze
13
13
 
14
14
  class << self
15
15
  #
@@ -17,7 +17,7 @@ module Lt
17
17
  # Is used inside `#find_or_create_resource` method
18
18
  #
19
19
  def update_grades_level_position_for(grades)
20
- update_level_position_for(grades) { |g| ::Lcms::Engine::Grades::GRADES.index(g.metadata['grade']) }
20
+ update_level_position_for(grades) { |g| ::Lcms::Engine::Grades.grades.index(g.metadata['grade']) }
21
21
  end
22
22
 
23
23
  #
@@ -35,13 +35,15 @@ module Lt
35
35
  )
36
36
  end
37
37
 
38
- def parse(content, *args)
38
+ def parse(content, *args) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
39
39
  super
40
40
  if material?
41
41
  @metadata = DocTemplate::Tables::MaterialMetadata.parse content
42
+ @errors.concat @metadata.errors
42
43
  raise ::MaterialError, 'No metadata present' if !@metadata&.table_exist? || @metadata&.data&.empty?
43
44
  else
44
45
  @metadata = DocTemplate::Tables::Metadata.parse content
46
+ @errors.concat @metadata.errors
45
47
  raise ::DocumentError, 'No metadata present' unless @metadata&.table_exist?
46
48
 
47
49
  @agenda = DocTemplate::Tables::Agenda.parse content
data/lib/resque_job.rb CHANGED
@@ -17,7 +17,8 @@ module ResqueJob
17
17
  end
18
18
 
19
19
  def find_in_queue_by_payload(job_class, &block)
20
- result = Resque.peek(:default, 0, 0)
20
+ jobs = Array.wrap Resque.peek(queue_name, 0, 0)
21
+ result = jobs
21
22
  .select { |j| j['args'].first['job_class'] == job_class.to_s }
22
23
  .flat_map { |j| j['args'] }
23
24
  return result unless block_given?
@@ -46,11 +47,7 @@ module ResqueJob
46
47
  end
47
48
 
48
49
  def fetch_result(job_id)
49
- res = Resque.redis.multi do
50
- key = result_key(job_id)
51
- Resque.redis.get key
52
- Resque.redis.del key
53
- end.first
50
+ res = Resque.redis.get result_key(job_id)
54
51
  JSON.parse(res) rescue res
55
52
  end
56
53
 
@@ -20,7 +20,7 @@ class StandardImporter
20
20
 
21
21
  private
22
22
 
23
- RE_EMPHASIS = /^\(\+\)\s?/
23
+ RE_EMPHASIS = /^\(\+\)\s?/.freeze
24
24
 
25
25
  attr_reader :source_file, :subject
26
26
 
@@ -45,10 +45,10 @@ class StandardImporter
45
45
 
46
46
  return grades if to_name.blank?
47
47
 
48
- from_idx = Grades::GRADES_ABBR.index from_name
49
- to_idx = Grades::GRADES_ABBR.index from_name
48
+ from_idx = Grades.grades_abbrevs.index from_name
49
+ to_idx = Grades.grades_abbrevs.index from_name
50
50
 
51
- Grades::GRADES_ABBR.slice(from_idx..to_idx).each { |name| grades << find_grade(name) }
51
+ Grades.grades_abbrevs.slice(from_idx..to_idx).each { |name| grades << find_grade(name) }
52
52
 
53
53
  grades.compact
54
54
  end
@@ -20,7 +20,9 @@ namespace :cloud66 do # rubocop:disable Metrics/BlockLength
20
20
  end
21
21
 
22
22
  namespace :swap do
23
- SWAP_FILE = Rails.root.join 'export-swap.sql'
23
+ def swap_file
24
+ Rails.root.join 'export-swap.sql'
25
+ end
24
26
 
25
27
  desc 'Exports tables to be synced'
26
28
  task export: :environment do
@@ -29,20 +31,20 @@ namespace :cloud66 do # rubocop:disable Metrics/BlockLength
29
31
  --no-owner \
30
32
  --table=users \
31
33
  --table=access_codes \
32
- --file=#{SWAP_FILE}
34
+ --file=#{swap_file}
33
35
  BASH
34
36
  system cmd
35
37
  end
36
38
 
37
39
  desc 'Deletes existing tables and creates new one'
38
40
  task import: :environment do
39
- raise 'No data file. Please execute `cloud66:swap:export` prior loading the data.' unless File.exist?(SWAP_FILE)
41
+ raise 'No data file. Please execute `cloud66:swap:export` prior loading the data.' unless File.exist?(swap_file)
40
42
 
41
43
  cmd = "psql -U #{ENV['POSTGRESQL_USERNAME']} #{ENV['POSTGRESQL_DATABASE']}"
42
44
  # Drops old tables
43
45
  system "#{cmd} -c 'drop table access_codes, users;'"
44
46
  # Create new and load the data
45
- system "#{cmd} < #{SWAP_FILE}"
47
+ system "#{cmd} < #{swap_file}"
46
48
  end
47
49
  end
48
50
  end
@@ -12,21 +12,21 @@ namespace :document do
12
12
  hierarchy = {}
13
13
 
14
14
  documents.each do |document|
15
- grade_key = 'grade-' + document.metadata['grade']
15
+ grade_key = "grade-#{document.metadata['grade']}"
16
16
  hierarchy[grade_key] ||= {}
17
17
  grade = hierarchy[grade_key]
18
18
 
19
19
  grade['subject'] ||= 'math'
20
20
  grade['modules'] ||= {}
21
21
 
22
- module_key = 'module-' + document.metadata['unit']
22
+ module_key = "module-#{document.metadata['unit']}"
23
23
  grade['modules'][module_key] ||= {}
24
24
  module_ = grade['modules'][module_key]
25
25
 
26
26
  module_['name'] ||= '[name]'
27
27
  module_['topics'] ||= {}
28
28
 
29
- topic_key = 'topic-' + document.metadata['topic']
29
+ topic_key = "topic-#{document.metadata['topic']}"
30
30
  module_['topics'][topic_key] ||= {}
31
31
  topic = module_['topics'][topic_key]
32
32
 
@@ -14,7 +14,7 @@ namespace :google do
14
14
  authorizer = service.authorizer
15
15
  url = authorizer.get_authorization_url(base_url: OOB_URI)
16
16
  puts "Open \n>> #{url}\n in your browser and enter the resulting code:"
17
- code = STDIN.gets.strip
17
+ code = $stdin.gets.strip
18
18
  authorizer.get_and_store_credentials_from_code(
19
19
  user_id: ::Lt::Google::Api::Auth::Cli::USER_ID, code: code, base_url: OOB_URI
20
20
  )
data/package.json CHANGED
@@ -8,6 +8,7 @@
8
8
  "@rails/webpacker": "~4",
9
9
  "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
10
10
  "classnames": "^2.2.6",
11
+ "lodash": "^4.17.20",
11
12
  "prop-types": "^15.7.2",
12
13
  "react": "^16.9.0",
13
14
  "react-dom": "^16.9.0",
@@ -3,19 +3,17 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  describe Lcms::Engine::Admin::AssociationPickerController do
6
- ASSOCIATIONS = %w(content_sources tags grades topics reading_assignment_authors
7
- reading_assignment_texts standards).freeze
8
-
9
6
  let(:user) { create :admin }
10
7
 
11
8
  before { sign_in user }
12
9
 
13
10
  describe '#index' do
14
- ASSOCIATIONS.each do |assoc|
15
- it "list #{assoc} association items" do
16
- get :index, params: { association: assoc, format: :json }
17
- expect(response).to be_successful
11
+ %w(content_sources tags grades topics reading_assignment_authors reading_assignment_texts standards)
12
+ .each do |assoc|
13
+ it "list #{assoc} association items" do
14
+ get :index, params: { association: assoc, format: :json }
15
+ expect(response).to be_successful
16
+ end
18
17
  end
19
- end
20
18
  end
21
19
  end
@@ -9,7 +9,9 @@ describe Lcms::Engine::Admin::DocumentsController do
9
9
 
10
10
  describe '#create' do
11
11
  let(:document) { create :document }
12
- let(:form) { instance_double('Lcms::Engine::DocumentForm', document: document, save: valid) }
12
+ let(:form) do
13
+ instance_double('Lcms::Engine::DocumentForm', document: document, save: valid, service_errors: [])
14
+ end
13
15
  let(:link) { 'link' }
14
16
  let(:params) { { link: link, link_fs: 'link_fs', reimport: '1' } }
15
17
  let(:valid) { true }
@@ -79,7 +79,7 @@ describe Lcms::Engine::Admin::MaterialsController do
79
79
  it { expect { subject }.to change { Lcms::Engine::Material.count }.by(-1) }
80
80
 
81
81
  context 'when there was custom filter' do
82
- let(:query) { 'filter' }
82
+ let(:query) { { course: 'value' } }
83
83
 
84
84
  subject { delete :destroy, params: { id: material.id, query: query } }
85
85
 
@@ -11,13 +11,13 @@ describe Lcms::Engine::Admin::ResourcesController do
11
11
  describe '#edit' do
12
12
  subject { get :edit, params: { id: resource.to_param } }
13
13
 
14
- it { is_expected.to be_success }
14
+ it { is_expected.to be_successful }
15
15
  end
16
16
 
17
17
  describe '#index' do
18
18
  subject { get :index }
19
19
 
20
- it { is_expected.to be_success }
20
+ it { is_expected.to be_successful }
21
21
  end
22
22
 
23
23
  describe '#update' do
@@ -0,0 +1,5 @@
1
+ GIT_AUTHOR_EMAIL=joe@doe.com
2
+ GIT_AUTHOR_NAME="Joe Doe"
3
+ POSTGRESQL_ADDRESS=db
4
+ POSTGRESQL_USERNAME=postgres
5
+ POSTGRESQL_PASSWORD=
@@ -87,7 +87,7 @@ Rails.application.configure do
87
87
  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
88
88
 
89
89
  if ENV['RAILS_LOG_TO_STDOUT'].present?
90
- logger = ActiveSupport::Logger.new(STDOUT)
90
+ logger = ActiveSupport::Logger.new($stdout)
91
91
  logger.formatter = config.log_formatter
92
92
  config.logger = ActiveSupport::TaggedLogging.new(logger)
93
93
  end
@@ -6,16 +6,16 @@
6
6
  # the maximum value specified for Puma. Default is set to 5 threads for minimum
7
7
  # and maximum; this matches the default thread size of Active Record.
8
8
  #
9
- threads_count = ENV.fetch('RAILS_MAX_THREADS') { 5 }
9
+ threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)
10
10
  threads threads_count, threads_count
11
11
 
12
12
  # Specifies the `port` that Puma will listen on to receive requests; default is 3000.
13
13
  #
14
- port ENV.fetch('PORT') { 3000 }
14
+ port ENV.fetch('PORT', 3000)
15
15
 
16
16
  # Specifies the `environment` that Puma will run in.
17
17
  #
18
- environment ENV.fetch('RAILS_ENV') { 'development' }
18
+ environment ENV.fetch('RAILS_ENV', 'development')
19
19
 
20
20
  # Specifies the number of `workers` to boot in clustered mode.
21
21
  # Workers are forked webserver processes. If using threads and workers together
@@ -8,6 +8,18 @@ describe Lcms::Engine::Grades do
8
8
  let(:dir) { [] }
9
9
  let(:resource) { create :resource, metadata: { grade: dir.uniq } }
10
10
 
11
+ describe 'grades' do
12
+ it 'returns GRADES constant' do
13
+ expect(described_class.grades).to eq Lcms::Engine::Grades::GRADES
14
+ end
15
+ end
16
+
17
+ describe 'gardes_abbrevs' do
18
+ it 'returns GRADES_ABBR constant' do
19
+ expect(described_class.grades_abbrevs).to eq Lcms::Engine::Grades::GRADES_ABBR
20
+ end
21
+ end
22
+
11
23
  describe 'list' do
12
24
  let(:dir) { ['grade 2'] }
13
25
  let(:search_doc) { Lcms::Engine::Search::Document.new(grade: ['kindergarten']) }
@@ -3,9 +3,9 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  feature 'Admin adds a lesson' do
6
- SAMPLE_LESSON_PATH = 'spec/features/admin/lessons/sample-lessons'
6
+ given(:sample_lesson_path) { 'spec/features/admin/lessons/sample-lessons' }
7
7
 
8
- DownloadedFile = Struct.new :last_modifying_user, :modified_time, :name, :version
8
+ given(:downloaded_file) { Struct.new :last_modifying_user, :modified_time, :name, :version }
9
9
 
10
10
  given(:sample_lessons) do
11
11
  [
@@ -43,7 +43,7 @@ feature 'Admin adds a lesson' do
43
43
 
44
44
  # stub GDoc download
45
45
  file_content = File.read File.join(SAMPLE_LESSON_PATH, data[:file_name])
46
- allow_any_instance_of(DocumentDownloader::Gdoc).to receive(:file).and_return(DownloadedFile.new(nil, nil, idx))
46
+ allow_any_instance_of(DocumentDownloader::Gdoc).to receive(:file).and_return(downloaded_file.new(nil, nil, idx))
47
47
  allow_any_instance_of(DocumentDownloader::Gdoc).to receive(:content).and_return(file_content)
48
48
 
49
49
  fill_in :document_form_link, with: data[:url]
@@ -6,7 +6,7 @@ require 'lt/lcms/lesson/downloader/gdoc'
6
6
  require 'lt/lcms/lesson/downloader/pdf'
7
7
 
8
8
  feature 'Admin adds a material' do
9
- SAMPLE_PATH = 'spec/features/admin/materials/sample-materials'
9
+ given(:sample_path) { 'spec/features/admin/materials/sample-materials' }
10
10
 
11
11
  given(:downloaded_file) { Struct.new :last_modifying_user, :modified_time, :name, :version }
12
12
 
@@ -34,7 +34,7 @@ feature 'Admin adds a material' do
34
34
  data = samples[:gdoc]
35
35
 
36
36
  # stub GDoc download
37
- file_content = File.read File.join(SAMPLE_PATH, data[:file_name])
37
+ file_content = File.read File.join(sample_path, data[:file_name])
38
38
  base_klass = ::Lt::Lcms::Lesson::Downloader::Base
39
39
  gdoc_klass = ::Lt::Lcms::Lesson::Downloader::Gdoc
40
40
  allow_any_instance_of(base_klass).to receive(:file).and_return(downloaded_file.new(nil, nil, data[:file_name]))
@@ -59,7 +59,7 @@ feature 'Admin adds a material' do
59
59
  base_klass = ::Lt::Lcms::Lesson::Downloader::Base
60
60
  allow_any_instance_of(base_klass).to receive(:file).and_return(downloaded_file.new(nil, nil, data[:file_name]))
61
61
 
62
- file_content = File.read File.join(SAMPLE_PATH, data[:file_name])
62
+ file_content = File.read File.join(sample_path, data[:file_name])
63
63
  allow_any_instance_of(Lt::Lcms::Lesson::Downloader::PDF).to receive(:pdf_content).and_return(file_content)
64
64
  allow_any_instance_of(DocumentExporter::Thumbnail).to receive(:export)
65
65
  allow_any_instance_of(DocumentExporter::Thumbnail).to receive(:orientation)
@@ -10,7 +10,7 @@ describe Lcms::Engine::DocumentForm do
10
10
 
11
11
  describe '#save' do
12
12
  let(:document) { create :document }
13
- let(:service) { instance_double('DocumentBuildService', build_for: document) }
13
+ let(:service) { instance_double('DocumentBuildService', build_for: document, errors: []) }
14
14
 
15
15
  subject { form.save }
16
16
 
@@ -64,6 +64,16 @@ describe Lcms::Engine::DocumentForm do
64
64
  subject
65
65
  end
66
66
  end
67
+
68
+ context 'when there are non-critical errors' do
69
+ let(:errors) { %w(error-1 error-2 error-3) }
70
+ let(:service) { instance_double('DocumentBuildService', build_for: document, errors: errors) }
71
+
72
+ it 'store service errors' do
73
+ subject
74
+ expect(form.service_errors).to eq errors
75
+ end
76
+ end
67
77
  end
68
78
 
69
79
  context 'when is invalid' do
@@ -4,7 +4,7 @@ require 'rails_helper'
4
4
 
5
5
  shared_examples 'removes metadata table' do
6
6
  it 'removes original table' do
7
- table_html = %r{<span\s+[^.]*>\[?#{described_class::HEADER_LABEL}\]?<\/span>}im
7
+ table_html = %r{<span\s+[^.]*>\[?#{described_class::HEADER_LABEL}\]?</span>}im
8
8
  subject
9
9
  expect(fragment.to_html).to_not match(table_html)
10
10
  end
data/spec/rails_helper.rb CHANGED
@@ -16,8 +16,8 @@ require 'email_spec'
16
16
  require 'email_spec/rspec'
17
17
  require 'faker'
18
18
 
19
- Dir[File.expand_path('support/**/*.rb', __dir__)].each(&method(:require))
20
- Dir[File.expand_path('**/shared_examples/*.rb')].each(&method(:require))
19
+ Dir[File.expand_path('support/**/*.rb', __dir__)].sort.each(&method(:require))
20
+ Dir[File.expand_path('**/shared_examples/*.rb')].sort.each(&method(:require))
21
21
 
22
22
  # Checks for pending migrations and applies them before tests are run.
23
23
  # If you are not using ActiveRecord, you can remove these lines.
@@ -32,4 +32,21 @@ RSpec.configure do |config|
32
32
  config.infer_spec_type_from_file_location!
33
33
 
34
34
  config.filter_rails_from_backtrace!
35
+
36
+ config.before(:suite) do
37
+ # Rails 4.2 call `initialize` inside `recycle!`. However Ruby 2.6 doesn't allow calling `initialize` twice.
38
+ # See for detail: https://github.com/rails/rails/issues/34790
39
+ if RUBY_VERSION.to_f >= 2.6 && Rails::VERSION::MAJOR == 4
40
+ class ActionController::TestResponse # rubocop:disable Style/ClassAndModuleChildren
41
+ prepend Module.new {
42
+ def recycle!
43
+ # Patch to avoid MonitorMixin double-initialize error:
44
+ @mon_mutex_owner_object_id = nil
45
+ @mon_mutex = nil
46
+ super
47
+ end
48
+ }
49
+ end
50
+ end
51
+ end
35
52
  end
@@ -27,7 +27,7 @@ describe Lcms::Engine::DocumentBuildService do
27
27
  stubs = {
28
28
  css_styles: '',
29
29
  metadata: {},
30
- metadata_service: nil,
30
+ metadata_service: OpenStruct.new(errors: []),
31
31
  parse: parsed_document,
32
32
  parts: [],
33
33
  'prereq?' => false,
data/yarn.lock CHANGED
@@ -1051,7 +1051,7 @@ ajv@^6.1.0, ajv@^6.10.2:
1051
1051
  json-schema-traverse "^0.4.1"
1052
1052
  uri-js "^4.2.2"
1053
1053
 
1054
- ajv@^6.10.0, ajv@^6.5.5:
1054
+ ajv@^6.10.0:
1055
1055
  version "6.10.2"
1056
1056
  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
1057
1057
  integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
@@ -1061,7 +1061,7 @@ ajv@^6.10.0, ajv@^6.5.5:
1061
1061
  json-schema-traverse "^0.4.1"
1062
1062
  uri-js "^4.2.2"
1063
1063
 
1064
- ajv@^6.12.2:
1064
+ ajv@^6.12.2, ajv@^6.12.3:
1065
1065
  version "6.12.4"
1066
1066
  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234"
1067
1067
  integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==
@@ -1320,9 +1320,9 @@ aws-sign2@~0.7.0:
1320
1320
  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
1321
1321
 
1322
1322
  aws4@^1.8.0:
1323
- version "1.9.0"
1324
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
1325
- integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==
1323
+ version "1.10.1"
1324
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
1325
+ integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==
1326
1326
 
1327
1327
  babel-loader@^8.0.6:
1328
1328
  version "8.0.6"
@@ -1731,11 +1731,6 @@ camelcase@^2.0.0:
1731
1731
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
1732
1732
  integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
1733
1733
 
1734
- camelcase@^3.0.0:
1735
- version "3.0.0"
1736
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
1737
- integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
1738
-
1739
1734
  camelcase@^5.0.0, camelcase@^5.3.1:
1740
1735
  version "5.3.1"
1741
1736
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
@@ -1887,15 +1882,6 @@ cli-width@^2.0.0:
1887
1882
  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
1888
1883
  integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
1889
1884
 
1890
- cliui@^3.2.0:
1891
- version "3.2.0"
1892
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
1893
- integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
1894
- dependencies:
1895
- string-width "^1.0.1"
1896
- strip-ansi "^3.0.1"
1897
- wrap-ansi "^2.0.0"
1898
-
1899
1885
  cliui@^4.0.0:
1900
1886
  version "4.1.0"
1901
1887
  resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
@@ -2425,7 +2411,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
2425
2411
  dependencies:
2426
2412
  ms "2.0.0"
2427
2413
 
2428
- debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
2414
+ debug@^3.1.1, debug@^3.2.5:
2429
2415
  version "3.2.6"
2430
2416
  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
2431
2417
  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
@@ -2439,7 +2425,7 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
2439
2425
  dependencies:
2440
2426
  ms "^2.1.1"
2441
2427
 
2442
- decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
2428
+ decamelize@^1.1.2, decamelize@^1.2.0:
2443
2429
  version "1.2.0"
2444
2430
  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
2445
2431
  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -2958,9 +2944,9 @@ etag@~1.8.1:
2958
2944
  integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
2959
2945
 
2960
2946
  eventemitter3@^4.0.0:
2961
- version "4.0.0"
2962
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb"
2963
- integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==
2947
+ version "4.0.7"
2948
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
2949
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
2964
2950
 
2965
2951
  events@^3.0.0:
2966
2952
  version "3.1.0"
@@ -3110,9 +3096,9 @@ fast-deep-equal@^2.0.1:
3110
3096
  integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
3111
3097
 
3112
3098
  fast-deep-equal@^3.1.1:
3113
- version "3.1.1"
3114
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
3115
- integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
3099
+ version "3.1.3"
3100
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
3101
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
3116
3102
 
3117
3103
  fast-json-stable-stringify@^2.0.0:
3118
3104
  version "2.1.0"
@@ -3286,11 +3272,9 @@ flush-write-stream@^1.0.0:
3286
3272
  readable-stream "^2.3.6"
3287
3273
 
3288
3274
  follow-redirects@^1.0.0:
3289
- version "1.9.0"
3290
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f"
3291
- integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==
3292
- dependencies:
3293
- debug "^3.0.0"
3275
+ version "1.13.0"
3276
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
3277
+ integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
3294
3278
 
3295
3279
  for-in@^1.0.2:
3296
3280
  version "1.0.2"
@@ -3540,9 +3524,9 @@ globby@^6.1.0:
3540
3524
  pinkie-promise "^2.0.0"
3541
3525
 
3542
3526
  globule@^1.0.0:
3543
- version "1.2.1"
3544
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
3545
- integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==
3527
+ version "1.3.2"
3528
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4"
3529
+ integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==
3546
3530
  dependencies:
3547
3531
  glob "~7.1.1"
3548
3532
  lodash "~4.17.10"
@@ -3568,12 +3552,12 @@ har-schema@^2.0.0:
3568
3552
  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
3569
3553
  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
3570
3554
 
3571
- har-validator@~5.1.0:
3572
- version "5.1.3"
3573
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
3574
- integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
3555
+ har-validator@~5.1.3:
3556
+ version "5.1.5"
3557
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
3558
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
3575
3559
  dependencies:
3576
- ajv "^6.5.5"
3560
+ ajv "^6.12.3"
3577
3561
  har-schema "^2.0.0"
3578
3562
 
3579
3563
  has-ansi@^2.0.0:
@@ -3680,9 +3664,9 @@ homedir-polyfill@^1.0.1:
3680
3664
  parse-passwd "^1.0.0"
3681
3665
 
3682
3666
  hosted-git-info@^2.1.4:
3683
- version "2.8.5"
3684
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
3685
- integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
3667
+ version "2.8.8"
3668
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
3669
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
3686
3670
 
3687
3671
  hpack.js@^2.1.6:
3688
3672
  version "2.1.6"
@@ -3767,9 +3751,9 @@ http-proxy-middleware@0.19.1:
3767
3751
  micromatch "^3.1.10"
3768
3752
 
3769
3753
  http-proxy@^1.17.0:
3770
- version "1.18.0"
3771
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a"
3772
- integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==
3754
+ version "1.18.1"
3755
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
3756
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
3773
3757
  dependencies:
3774
3758
  eventemitter3 "^4.0.0"
3775
3759
  follow-redirects "^1.0.0"
@@ -3862,9 +3846,9 @@ imurmurhash@^0.1.4:
3862
3846
  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
3863
3847
 
3864
3848
  in-publish@^2.0.0:
3865
- version "2.0.0"
3866
- resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
3867
- integrity sha1-4g/146KvwmkDILbcVSaCqcf631E=
3849
+ version "2.0.1"
3850
+ resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c"
3851
+ integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==
3868
3852
 
3869
3853
  indent-string@^2.1.0:
3870
3854
  version "2.1.0"
@@ -3912,9 +3896,9 @@ inherits@2.0.3:
3912
3896
  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
3913
3897
 
3914
3898
  ini@^1.3.4, ini@^1.3.5:
3915
- version "1.3.5"
3916
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
3917
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
3899
+ version "1.3.8"
3900
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
3901
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
3918
3902
 
3919
3903
  inquirer@^7.0.0:
3920
3904
  version "7.0.0"
@@ -3955,11 +3939,6 @@ invariant@^2.2.2:
3955
3939
  dependencies:
3956
3940
  loose-envify "^1.0.0"
3957
3941
 
3958
- invert-kv@^1.0.0:
3959
- version "1.0.0"
3960
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
3961
- integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
3962
-
3963
3942
  invert-kv@^2.0.0:
3964
3943
  version "2.0.0"
3965
3944
  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
@@ -4120,11 +4099,9 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
4120
4099
  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
4121
4100
 
4122
4101
  is-finite@^1.0.0:
4123
- version "1.0.2"
4124
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
4125
- integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
4126
- dependencies:
4127
- number-is-nan "^1.0.0"
4102
+ version "1.1.0"
4103
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
4104
+ integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
4128
4105
 
4129
4106
  is-fullwidth-code-point@^1.0.0:
4130
4107
  version "1.0.0"
@@ -4297,9 +4274,9 @@ jest-worker@^25.4.0:
4297
4274
  supports-color "^7.0.0"
4298
4275
 
4299
4276
  js-base64@^2.1.8:
4300
- version "2.5.1"
4301
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
4302
- integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
4277
+ version "2.6.4"
4278
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
4279
+ integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
4303
4280
 
4304
4281
  js-levenshtein@^1.1.3:
4305
4282
  version "1.1.6"
@@ -4433,13 +4410,6 @@ last-call-webpack-plugin@^3.0.0:
4433
4410
  lodash "^4.17.5"
4434
4411
  webpack-sources "^1.1.0"
4435
4412
 
4436
- lcid@^1.0.0:
4437
- version "1.0.0"
4438
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
4439
- integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
4440
- dependencies:
4441
- invert-kv "^1.0.0"
4442
-
4443
4413
  lcid@^2.0.0:
4444
4414
  version "2.0.0"
4445
4415
  resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@@ -4567,10 +4537,10 @@ lodash.uniq@^4.5.0:
4567
4537
  resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
4568
4538
  integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
4569
4539
 
4570
- lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.10:
4571
- version "4.17.19"
4572
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
4573
- integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
4540
+ lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.5, lodash@~4.17.10:
4541
+ version "4.17.20"
4542
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
4543
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
4574
4544
 
4575
4545
  loglevel@^1.6.4:
4576
4546
  version "1.6.6"
@@ -4760,7 +4730,19 @@ mime-db@1.42.0, "mime-db@>= 1.40.0 < 2":
4760
4730
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
4761
4731
  integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
4762
4732
 
4763
- mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
4733
+ mime-db@1.44.0:
4734
+ version "1.44.0"
4735
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
4736
+ integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
4737
+
4738
+ mime-types@^2.1.12, mime-types@~2.1.19:
4739
+ version "2.1.27"
4740
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
4741
+ integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
4742
+ dependencies:
4743
+ mime-db "1.44.0"
4744
+
4745
+ mime-types@~2.1.17, mime-types@~2.1.24:
4764
4746
  version "2.1.25"
4765
4747
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
4766
4748
  integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
@@ -4931,16 +4913,11 @@ mute-stream@0.0.8:
4931
4913
  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
4932
4914
  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
4933
4915
 
4934
- nan@^2.12.1:
4916
+ nan@^2.12.1, nan@^2.13.2:
4935
4917
  version "2.14.1"
4936
4918
  resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
4937
4919
  integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
4938
4920
 
4939
- nan@^2.13.2:
4940
- version "2.14.0"
4941
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
4942
- integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
4943
-
4944
4921
  nanomatch@^1.2.9:
4945
4922
  version "1.2.13"
4946
4923
  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -4978,10 +4955,10 @@ nice-try@^1.0.4:
4978
4955
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
4979
4956
  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
4980
4957
 
4981
- node-forge@0.9.0:
4982
- version "0.9.0"
4983
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
4984
- integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==
4958
+ node-forge@^0.10.0:
4959
+ version "0.10.0"
4960
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
4961
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
4985
4962
 
4986
4963
  node-gyp@^3.8.0:
4987
4964
  version "3.8.0"
@@ -5038,9 +5015,9 @@ node-releases@^1.1.42:
5038
5015
  semver "^6.3.0"
5039
5016
 
5040
5017
  node-sass@^4.13.0:
5041
- version "4.13.0"
5042
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066"
5043
- integrity sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==
5018
+ version "4.14.1"
5019
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5"
5020
+ integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==
5044
5021
  dependencies:
5045
5022
  async-foreach "^0.1.3"
5046
5023
  chalk "^1.1.1"
@@ -5056,7 +5033,7 @@ node-sass@^4.13.0:
5056
5033
  node-gyp "^3.8.0"
5057
5034
  npmlog "^4.0.0"
5058
5035
  request "^2.88.0"
5059
- sass-graph "^2.2.4"
5036
+ sass-graph "2.2.5"
5060
5037
  stdout-stream "^1.4.0"
5061
5038
  "true-case-path" "^1.0.2"
5062
5039
 
@@ -5314,13 +5291,6 @@ os-homedir@^1.0.0:
5314
5291
  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
5315
5292
  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
5316
5293
 
5317
- os-locale@^1.4.0:
5318
- version "1.4.0"
5319
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
5320
- integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
5321
- dependencies:
5322
- lcid "^1.0.0"
5323
-
5324
5294
  os-locale@^3.0.0, os-locale@^3.1.0:
5325
5295
  version "3.1.0"
5326
5296
  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
@@ -6379,10 +6349,10 @@ pseudomap@^1.0.2:
6379
6349
  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
6380
6350
  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
6381
6351
 
6382
- psl@^1.1.24:
6383
- version "1.6.0"
6384
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110"
6385
- integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==
6352
+ psl@^1.1.28:
6353
+ version "1.8.0"
6354
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
6355
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
6386
6356
 
6387
6357
  public-encrypt@^4.0.0:
6388
6358
  version "4.0.3"
@@ -6426,12 +6396,12 @@ punycode@1.3.2:
6426
6396
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
6427
6397
  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
6428
6398
 
6429
- punycode@^1.2.4, punycode@^1.4.1:
6399
+ punycode@^1.2.4:
6430
6400
  version "1.4.1"
6431
6401
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
6432
6402
  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
6433
6403
 
6434
- punycode@^2.1.0:
6404
+ punycode@^2.1.0, punycode@^2.1.1:
6435
6405
  version "2.1.1"
6436
6406
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
6437
6407
  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -6722,9 +6692,9 @@ repeating@^2.0.0:
6722
6692
  is-finite "^1.0.0"
6723
6693
 
6724
6694
  request@^2.87.0, request@^2.88.0:
6725
- version "2.88.0"
6726
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
6727
- integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
6695
+ version "2.88.2"
6696
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
6697
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
6728
6698
  dependencies:
6729
6699
  aws-sign2 "~0.7.0"
6730
6700
  aws4 "^1.8.0"
@@ -6733,7 +6703,7 @@ request@^2.87.0, request@^2.88.0:
6733
6703
  extend "~3.0.2"
6734
6704
  forever-agent "~0.6.1"
6735
6705
  form-data "~2.3.2"
6736
- har-validator "~5.1.0"
6706
+ har-validator "~5.1.3"
6737
6707
  http-signature "~1.2.0"
6738
6708
  is-typedarray "~1.0.0"
6739
6709
  isstream "~0.1.2"
@@ -6743,7 +6713,7 @@ request@^2.87.0, request@^2.88.0:
6743
6713
  performance-now "^2.1.0"
6744
6714
  qs "~6.5.2"
6745
6715
  safe-buffer "^5.1.2"
6746
- tough-cookie "~2.4.3"
6716
+ tough-cookie "~2.5.0"
6747
6717
  tunnel-agent "^0.6.0"
6748
6718
  uuid "^3.3.2"
6749
6719
 
@@ -6797,13 +6767,20 @@ resolve-url@^0.2.1:
6797
6767
  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
6798
6768
  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
6799
6769
 
6800
- resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
6770
+ resolve@^1.1.7, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
6801
6771
  version "1.13.1"
6802
6772
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
6803
6773
  integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
6804
6774
  dependencies:
6805
6775
  path-parse "^1.0.6"
6806
6776
 
6777
+ resolve@^1.10.0:
6778
+ version "1.17.0"
6779
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
6780
+ integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
6781
+ dependencies:
6782
+ path-parse "^1.0.6"
6783
+
6807
6784
  restore-cursor@^3.1.0:
6808
6785
  version "3.1.0"
6809
6786
  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
@@ -6887,11 +6864,16 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
6887
6864
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
6888
6865
  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
6889
6866
 
6890
- safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
6867
+ safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
6891
6868
  version "5.2.0"
6892
6869
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
6893
6870
  integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
6894
6871
 
6872
+ safe-buffer@^5.0.1, safe-buffer@^5.1.2:
6873
+ version "5.2.1"
6874
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
6875
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
6876
+
6895
6877
  safe-regex@^1.1.0:
6896
6878
  version "1.1.0"
6897
6879
  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
@@ -6904,15 +6886,15 @@ safe-regex@^1.1.0:
6904
6886
  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
6905
6887
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
6906
6888
 
6907
- sass-graph@^2.2.4:
6908
- version "2.2.4"
6909
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
6910
- integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=
6889
+ sass-graph@2.2.5:
6890
+ version "2.2.5"
6891
+ resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
6892
+ integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==
6911
6893
  dependencies:
6912
6894
  glob "^7.0.0"
6913
6895
  lodash "^4.0.0"
6914
6896
  scss-tokenizer "^0.2.3"
6915
- yargs "^7.0.0"
6897
+ yargs "^13.3.2"
6916
6898
 
6917
6899
  sass-loader@7.3.1:
6918
6900
  version "7.3.1"
@@ -6978,11 +6960,11 @@ select-hose@^2.0.0:
6978
6960
  integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
6979
6961
 
6980
6962
  selfsigned@^1.10.7:
6981
- version "1.10.7"
6982
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b"
6983
- integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==
6963
+ version "1.10.8"
6964
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30"
6965
+ integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==
6984
6966
  dependencies:
6985
- node-forge "0.9.0"
6967
+ node-forge "^0.10.0"
6986
6968
 
6987
6969
  "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
6988
6970
  version "5.7.1"
@@ -7235,22 +7217,22 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
7235
7217
  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
7236
7218
 
7237
7219
  spdx-correct@^3.0.0:
7238
- version "3.1.0"
7239
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
7240
- integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
7220
+ version "3.1.1"
7221
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
7222
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
7241
7223
  dependencies:
7242
7224
  spdx-expression-parse "^3.0.0"
7243
7225
  spdx-license-ids "^3.0.0"
7244
7226
 
7245
7227
  spdx-exceptions@^2.1.0:
7246
- version "2.2.0"
7247
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
7248
- integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
7228
+ version "2.3.0"
7229
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
7230
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
7249
7231
 
7250
7232
  spdx-expression-parse@^3.0.0:
7251
- version "3.0.0"
7252
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
7253
- integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
7233
+ version "3.0.1"
7234
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
7235
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
7254
7236
  dependencies:
7255
7237
  spdx-exceptions "^2.1.0"
7256
7238
  spdx-license-ids "^3.0.0"
@@ -7394,7 +7376,7 @@ strict-uri-encode@^1.0.0:
7394
7376
  resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
7395
7377
  integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
7396
7378
 
7397
- string-width@^1.0.1, string-width@^1.0.2:
7379
+ string-width@^1.0.1:
7398
7380
  version "1.0.2"
7399
7381
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
7400
7382
  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
@@ -7751,13 +7733,13 @@ toidentifier@1.0.0:
7751
7733
  resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
7752
7734
  integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
7753
7735
 
7754
- tough-cookie@~2.4.3:
7755
- version "2.4.3"
7756
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
7757
- integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
7736
+ tough-cookie@~2.5.0:
7737
+ version "2.5.0"
7738
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
7739
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
7758
7740
  dependencies:
7759
- psl "^1.1.24"
7760
- punycode "^1.4.1"
7741
+ psl "^1.1.28"
7742
+ punycode "^2.1.1"
7761
7743
 
7762
7744
  trim-newlines@^1.0.0:
7763
7745
  version "1.0.0"
@@ -7904,9 +7886,9 @@ upath@^1.1.1:
7904
7886
  integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
7905
7887
 
7906
7888
  uri-js@^4.2.2:
7907
- version "4.2.2"
7908
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
7909
- integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
7889
+ version "4.4.0"
7890
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
7891
+ integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
7910
7892
  dependencies:
7911
7893
  punycode "^2.1.0"
7912
7894
 
@@ -7968,11 +7950,16 @@ utils-merge@1.0.1:
7968
7950
  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
7969
7951
  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
7970
7952
 
7971
- uuid@^3.0.1, uuid@^3.3.2:
7953
+ uuid@^3.0.1:
7972
7954
  version "3.3.3"
7973
7955
  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
7974
7956
  integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
7975
7957
 
7958
+ uuid@^3.3.2:
7959
+ version "3.4.0"
7960
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
7961
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
7962
+
7976
7963
  v8-compile-cache@2.0.3:
7977
7964
  version "2.0.3"
7978
7965
  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
@@ -8179,11 +8166,6 @@ websocket-extensions@>=0.1.1:
8179
8166
  resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
8180
8167
  integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
8181
8168
 
8182
- which-module@^1.0.0:
8183
- version "1.0.0"
8184
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
8185
- integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
8186
-
8187
8169
  which-module@^2.0.0:
8188
8170
  version "2.0.0"
8189
8171
  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
@@ -8256,11 +8238,6 @@ xtend@^4.0.0, xtend@~4.0.1:
8256
8238
  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
8257
8239
  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
8258
8240
 
8259
- y18n@^3.2.1:
8260
- version "3.2.1"
8261
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
8262
- integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
8263
-
8264
8241
  "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
8265
8242
  version "4.0.0"
8266
8243
  resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
@@ -8304,12 +8281,13 @@ yargs-parser@^13.1.0:
8304
8281
  camelcase "^5.0.0"
8305
8282
  decamelize "^1.2.0"
8306
8283
 
8307
- yargs-parser@^5.0.0:
8308
- version "5.0.0"
8309
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
8310
- integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
8284
+ yargs-parser@^13.1.2:
8285
+ version "13.1.2"
8286
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
8287
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
8311
8288
  dependencies:
8312
- camelcase "^3.0.0"
8289
+ camelcase "^5.0.0"
8290
+ decamelize "^1.2.0"
8313
8291
 
8314
8292
  yargs@12.0.5:
8315
8293
  version "12.0.5"
@@ -8346,21 +8324,18 @@ yargs@13.2.4:
8346
8324
  y18n "^4.0.0"
8347
8325
  yargs-parser "^13.1.0"
8348
8326
 
8349
- yargs@^7.0.0:
8350
- version "7.1.0"
8351
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
8352
- integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
8327
+ yargs@^13.3.2:
8328
+ version "13.3.2"
8329
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
8330
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
8353
8331
  dependencies:
8354
- camelcase "^3.0.0"
8355
- cliui "^3.2.0"
8356
- decamelize "^1.1.1"
8357
- get-caller-file "^1.0.1"
8358
- os-locale "^1.4.0"
8359
- read-pkg-up "^1.0.1"
8332
+ cliui "^5.0.0"
8333
+ find-up "^3.0.0"
8334
+ get-caller-file "^2.0.1"
8360
8335
  require-directory "^2.1.1"
8361
- require-main-filename "^1.0.1"
8336
+ require-main-filename "^2.0.0"
8362
8337
  set-blocking "^2.0.0"
8363
- string-width "^1.0.2"
8364
- which-module "^1.0.0"
8365
- y18n "^3.2.1"
8366
- yargs-parser "^5.0.0"
8338
+ string-width "^3.0.0"
8339
+ which-module "^2.0.0"
8340
+ y18n "^4.0.0"
8341
+ yargs-parser "^13.1.2"