diff --git a/Gemfile b/Gemfile index d2cc1b567c..af89d2a9da 100644 --- a/Gemfile +++ b/Gemfile @@ -14,8 +14,10 @@ gem "selenium-webdriver", ">= 4.0.0.alpha7" gem "rack-cache", "~> 1.2" gem "sass-rails" -gem "turbolinks", "~> 5" -gem "webpacker", "~> 5.0", require: ENV["SKIP_REQUIRE_WEBPACKER"] != "true" +gem "stimulus-rails" +gem "turbo-rails" +gem "webpacker", "~> 6.0.0.rc.5", require: ENV["SKIP_REQUIRE_WEBPACKER"] != "true" +gem "importmap-rails" # require: false so bcrypt is loaded only when has_secure_password is used. # This is to avoid Active Model (and by extension the entire framework) # being dependent on a binary library. @@ -111,8 +113,8 @@ instance_eval File.read local_gemfile if File.exist? local_gemfile group :test do gem "minitest-bisect" + gem "minitest-ci", require: false gem "minitest-retry" - gem "minitest-reporters" platforms :mri do gem "stackprof" diff --git a/Gemfile.lock b/Gemfile.lock index e9135bec98..262ce9e613 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,7 +110,6 @@ GEM addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) amq-protocol (2.3.2) - ansi (1.5.0) ast (2.4.2) aws-eventstream (1.1.1) aws-partitions (1.469.0) @@ -287,6 +286,8 @@ GEM image_processing (1.12.1) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) + importmap-rails (0.3.4) + rails (>= 6.0.0) jmespath (1.4.0) json (2.5.1) jwt (2.2.3) @@ -312,11 +313,8 @@ GEM minitest-bisect (1.5.1) minitest-server (~> 1.0) path_expander (~> 1.1) - minitest-reporters (1.4.3) - ansi - builder - minitest (>= 5.0) - ruby-progressbar + minitest-ci (3.4.0) + minitest (>= 5.0.6) minitest-retry (0.2.2) minitest (>= 5.0) minitest-server (1.0.6) @@ -479,6 +477,8 @@ GEM sprockets (>= 3.0.0) sqlite3 (1.4.2) stackprof (0.2.17) + stimulus-rails (0.3.9) + rails (>= 6.0.0) sucker_punch (3.0.1) concurrent-ruby (~> 1.0) terser (1.1.4) @@ -490,9 +490,8 @@ GEM thor (1.1.0) tilt (2.0.10) trailblazer-option (0.1.1) - turbolinks (5.2.1) - turbolinks-source (~> 5.2) - turbolinks-source (5.2.0) + turbo-rails (0.7.4) + rails (>= 6.0.0) tzinfo (2.0.4) concurrent-ruby (~> 1.0) uber (0.1.0) @@ -512,7 +511,7 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webpacker (5.4.0) + webpacker (6.0.0.rc.5) activesupport (>= 5.2) rack-proxy (>= 0.6.1) railties (>= 5.2) @@ -553,12 +552,13 @@ DEPENDENCIES google-cloud-storage (~> 1.11) hiredis image_processing (~> 1.2) + importmap-rails json (>= 2.0.0) kindlerb (~> 1.2.0) libxml-ruby listen (~> 3.3) minitest-bisect - minitest-reporters + minitest-ci minitest-retry mysql2 (~> 0.5)! nokogiri (>= 1.8.1, != 1.11.0) @@ -592,17 +592,18 @@ DEPENDENCIES sprockets-export sqlite3 (~> 1.4) stackprof + stimulus-rails sucker_punch terser (>= 1.1.4) - turbolinks (~> 5) + turbo-rails tzinfo-data w3c_validators (~> 1.3.6) wdm (>= 0.1.0) webdrivers webmock - webpacker (~> 5.0) + webpacker (~> 6.0.0.rc.5) webrick websocket-client-simple! BUNDLED WITH - 2.2.19 + 2.2.25 diff --git a/actioncable/lib/action_cable/helpers/action_cable_helper.rb b/actioncable/lib/action_cable/helpers/action_cable_helper.rb index aa0c194e28..26cddad2b6 100644 --- a/actioncable/lib/action_cable/helpers/action_cable_helper.rb +++ b/actioncable/lib/action_cable/helpers/action_cable_helper.rb @@ -8,14 +8,15 @@ module ActionCable # # # <%= action_cable_meta_tag %> - # <%= javascript_include_tag 'application', 'data-turbolinks-track' => 'reload' %> + # <%= javascript_include_tag 'application', 'data-turbo-track' => 'reload' %> # # # This is then used by Action Cable to determine the URL of your WebSocket server. # Your JavaScript can then connect to the server without needing to specify the # URL directly: # - # window.Cable = require("@rails/actioncable") + # import Cable from "@rails/actioncable" + # window.Cable = Cable # window.App = {} # App.cable = Cable.createConsumer() # diff --git a/actioncable/lib/rails/generators/channel/USAGE b/actioncable/lib/rails/generators/channel/USAGE index a603af1993..6dda8c9858 100644 --- a/actioncable/lib/rails/generators/channel/USAGE +++ b/actioncable/lib/rails/generators/channel/USAGE @@ -10,4 +10,4 @@ Example: creates a Chat channel class, test and JavaScript asset: Channel: app/channels/chat_channel.rb Test: test/channels/chat_channel_test.rb - Assets: app/javascript/channels/chat_channel.js + Assets: $JAVASCRIPT_PATH/channels/chat_channel.js diff --git a/actioncable/lib/rails/generators/channel/channel_generator.rb b/actioncable/lib/rails/generators/channel/channel_generator.rb index 0b80d1f96b..ec342066e0 100644 --- a/actioncable/lib/rails/generators/channel/channel_generator.rb +++ b/actioncable/lib/rails/generators/channel/channel_generator.rb @@ -18,11 +18,23 @@ module Rails if options[:assets] if behavior == :invoke - template "javascript/index.js", "app/javascript/channels/index.js" - template "javascript/consumer.js", "app/javascript/channels/consumer.js" + if defined?(Webpacker::Engine) + template "javascript/index.js", "#{Webpacker.config.source_path}/channels/index.js" + template "javascript/consumer.js", "#{Webpacker.config.source_path}/channels/consumer.js" + else + template "javascript/consumer.js", "app/javascript/channels/consumer.js" + end end - js_template "javascript/channel", File.join("app/javascript/channels", class_path, "#{file_name}_channel") + if defined?(Webpacker::Engine) + js_template "javascript/channel", File.join(Webpacker.config.source_path, "channels", class_path, "#{file_name}_channel") + else + channel_js_path = File.join("app/javascript/channels", class_path, "#{file_name}_channel") + js_template "javascript/channel", channel_js_path + gsub_file "#{channel_js_path}.js", /\.\/consumer/, "channels/consumer" + + append_to_file "app/javascript/application.js", %(\nimport "channels/#{file_name}_channel"\n) + end end generate_application_cable_files diff --git a/actiontext/lib/generators/action_text/install/install_generator.rb b/actiontext/lib/generators/action_text/install/install_generator.rb index e03d8ef552..70fda1973f 100644 --- a/actiontext/lib/generators/action_text/install/install_generator.rb +++ b/actiontext/lib/generators/action_text/install/install_generator.rb @@ -10,45 +10,52 @@ module ActionText def install_javascript_dependencies if defined?(Webpacker::Engine) - rails_command "app:binstub:yarn", inline: true - say "Installing JavaScript dependencies", :green - yarn_command "add #{js_dependencies.map { |name, version| "#{name}@#{version}" }.join(" ")}", capture: true + yarn_command "add #{js_dependencies.map { |name, version| "#{name}@#{version}" }.join(" ")}" end end def append_javascript_dependencies if defined?(Webpacker::Engine) - in_root do - if (app_javascript_pack_path = Pathname.new("app/javascript/packs/application.js")).exist? - js_dependencies.each_key do |dependency| - line = %[require("#{dependency}")] + if (app_javascript_pack_path = Pathname.new("#{Webpacker.config.source_entry_path}/application.js")).exist? + js_dependencies.each_key do |dependency| + line = %[import "#{dependency}"] - unless app_javascript_pack_path.read.include? line - say "Adding #{dependency} to #{app_javascript_pack_path}", :green - append_to_file app_javascript_pack_path, "\n#{line}" - end + unless app_javascript_pack_path.read.include? line + say "Adding #{dependency} to #{app_javascript_pack_path}", :green + append_to_file app_javascript_pack_path, "\n#{line}" end - else - say <<~WARNING, :red - WARNING: Action Text can't locate your JavaScript bundle to add its package dependencies. - - Add these lines to any bundles: - - require("trix") - require("@rails/actiontext") - - Alternatively, install and setup the webpacker gem then rerun `bin/rails action_text:install` - to have these dependencies added automatically. - WARNING end + else + say <<~WARNING, :red + WARNING: Action Text can't locate your JavaScript bundle to add its package dependencies. + + Add these lines to any bundles: + + import "trix" + import "@rails/actiontext" + + Alternatively, install and setup the webpacker gem then rerun `bin/rails action_text:install` + to have these dependencies added automatically. + WARNING end else - if (application_javascript_path = Rails.root.join("app/assets/javascripts/application.js")).exist? + if (application_javascript_path = Rails.root.join("app/javascript/application.js")).exist? insert_into_file application_javascript_path.to_s, %(\nimport "trix"\nimport "@rails/actiontext") else say <<~INSTRUCTIONS, :green - You must import the @rails/actiontext.js and trix.js JavaScript files in your application entrypoint. + You must import the @rails/actiontext and trix JavaScript modules in your application entrypoint. + INSTRUCTIONS + end + + if (importmap_path = Rails.root.join("config/importmap.rb")).exist? + insert_into_file \ + importmap_path.to_s, + %( pin "trix"\n pin "@rails/actiontext", to: "actiontext.js"\n\n), + after: "Rails.application.config.importmap.draw do\n" + else + say <<~INSTRUCTIONS, :green + You must add @rails/actiontext and trix to your importmap to reference them via ESM. INSTRUCTIONS end end @@ -66,9 +73,8 @@ module ActionText def enable_image_processing_gem if (gemfile_path = Rails.root.join("Gemfile")).exist? - say "Ensure image_processing gem has been enabled so image uploads will work" + say "Ensure image_processing gem has been enabled so image uploads will work (remember to bundle!)" uncomment_lines gemfile_path, /gem "image_processing"/ - run "bundle install" end end diff --git a/guides/source/action_text_overview.md b/guides/source/action_text_overview.md index ef8099d845..a361b12bb2 100644 --- a/guides/source/action_text_overview.md +++ b/guides/source/action_text_overview.md @@ -55,8 +55,8 @@ After the installation is complete, a Rails app using Webpacker should have the ```js // application.js - require("trix") - require("@rails/actiontext") + import "trix" + import "@rails/actiontext" ``` 2. The `trix` stylesheet should be imported into `actiontext.scss`. diff --git a/guides/source/asset_pipeline.md b/guides/source/asset_pipeline.md index 6916807259..09783a8f8d 100644 --- a/guides/source/asset_pipeline.md +++ b/guides/source/asset_pipeline.md @@ -317,12 +317,12 @@ familiar `javascript_include_tag` and `stylesheet_link_tag`: ``` If using the turbolinks gem, which is included by default in Rails, then -include the 'data-turbolinks-track' option which causes turbolinks to check if +include the 'data-turbo-track' option which causes Turbo to check if an asset has been updated and if so loads it into the page: ```erb -<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => "reload" %> -<%= javascript_include_tag "application", "data-turbolinks-track" => "reload" %> +<%= stylesheet_link_tag "application", media: "all", "data-turbo-track" => "reload" %> +<%= javascript_include_tag "application", "data-turbo-track" => "reload" %> ``` In regular views you can access images in the `app/assets/images` directory diff --git a/guides/source/getting_started.md b/guides/source/getting_started.md index 3af56a484f..703e34dee2 100644 --- a/guides/source/getting_started.md +++ b/guides/source/getting_started.md @@ -206,7 +206,6 @@ of the files and folders that Rails creates by default: |Gemfile
Gemfile.lock|These files allow you to specify what gem dependencies are needed for your Rails application. These files are used by the Bundler gem. For more information about Bundler, see the [Bundler website](https://bundler.io).| |lib/|Extended modules for your application.| |log/|Application log files.| -|package.json|This file allows you to specify what npm dependencies are needed for your Rails application. This file is used by Yarn. For more information about Yarn, see the [Yarn website](https://yarnpkg.com/lang/en/).| |public/|Contains static files and compiled assets. When your app is running, this directory will be exposed as-is.| |Rakefile|This file locates and loads tasks that can be run from the command line. The task definitions are defined throughout the components of Rails. Rather than changing `Rakefile`, you should add your own tasks by adding files to the `lib/tasks` directory of your application.| |README.md|This is a brief instruction manual for your application. You should edit this file to tell others what your application does, how to set it up, and so on.| diff --git a/guides/source/upgrading_ruby_on_rails.md b/guides/source/upgrading_ruby_on_rails.md index 471f9d7605..c11b4ba025 100644 --- a/guides/source/upgrading_ruby_on_rails.md +++ b/guides/source/upgrading_ruby_on_rails.md @@ -44,7 +44,7 @@ Repeat this process until you reach your target Rails version. To move between versions: 1. Change the Rails version number in the `Gemfile` and run `bundle update`. -2. Change the versions for Rails JavaScript packages in `package.json` and run `yarn install`. +2. Change the versions for Rails JavaScript packages in `package.json` and run `yarn install`, if running on Webpacker. 3. Run the [Update task](#the-update-task). 4. Run your tests. diff --git a/railties/lib/rails/app_updater.rb b/railties/lib/rails/app_updater.rb index 084992c56e..81fb46e54f 100644 --- a/railties/lib/rails/app_updater.rb +++ b/railties/lib/rails/app_updater.rb @@ -21,13 +21,13 @@ module Rails private def generator_options options = { api: !!Rails.application.config.api_only, update: true } - options[:skip_javascript] = !File.exist?(Rails.root.join("bin", "yarn")) options[:skip_active_record] = !defined?(ActiveRecord::Railtie) options[:skip_active_storage] = !defined?(ActiveStorage::Engine) || !defined?(ActiveRecord::Railtie) options[:skip_action_mailer] = !defined?(ActionMailer::Railtie) options[:skip_action_cable] = !defined?(ActionCable::Engine) options[:skip_sprockets] = !defined?(Sprockets::Railtie) options[:skip_bootsnap] = !defined?(Bootsnap) + options[:webpack] = File.exist?(Rails.root.join("config", "webpacker.yml")) options[:updating] = true options end diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index ea2a64fea2..bb997eb405 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -64,8 +64,8 @@ module Rails class_option :skip_javascript, type: :boolean, aliases: "-J", default: name == "plugin", desc: "Skip JavaScript files" - class_option :skip_turbolinks, type: :boolean, default: false, - desc: "Skip turbolinks gem" + class_option :skip_hotwire, type: :boolean, default: false, + desc: "Skip Hotwire integration" class_option :skip_jbuilder, type: :boolean, default: false, desc: "Skip jbuilder gem" @@ -296,9 +296,7 @@ module Rails # * This makes it a prerelease. That's bad, but we haven't come up with # a better solution at the moment. def npm_version - # TODO: support `options.dev?` - - if options.edge? || options.main? + if options.edge? || options.main? || options.dev? # TODO: ideally this would read from Github # https://github.com/rails/rails/blob/main/actioncable/app/assets/javascripts/action_cable.js # https://github.com/rails/rails/blob/main/activestorage/app/assets/javascripts/activestorage.js @@ -309,16 +307,6 @@ module Rails end end - def turbolinks_npm_version - # since Turbolinks is deprecated, let's just always point to main. - # expect this to be replaced with Hotwire at some point soon. - if options.main? || options.edge? - "turbolinks/turbolinks#master" - else - "^5.2.0" - end - end - def assets_gemfile_entry return [] if options[:skip_sprockets] @@ -326,9 +314,11 @@ module Rails end def webpacker_gemfile_entry - return [] if options[:skip_javascript] - - GemfileEntry.version "webpacker", "~> 5.0", "Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker" + if options[:webpack] + GemfileEntry.version "webpacker", "~> 6.0.0.rc.5", "Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker" + else + [] + end end def jbuilder_gemfile_entry @@ -338,11 +328,21 @@ module Rails end def javascript_gemfile_entry - if options[:skip_javascript] || options[:skip_turbolinks] + importmap_rails_entry = + GemfileEntry.version("importmap-rails", ">= 0.3.4", "Manage modern JavaScript using ESM without transpiling or bundling") + + turbo_rails_entry = + GemfileEntry.version("turbo-rails", ">= 0.7.4", "Hotwire's SPA-like page accelerator. Read more: https://turbo.hotwired.dev") + + stimulus_rails_entry = + GemfileEntry.version("stimulus-rails", ">= 0.3.9", "Hotwire's modest JavaScript framework for the HTML you already have. Read more: https://stimulus.hotwired.dev") + + if options[:skip_javascript] [] + elsif options[:skip_hotwire] + [ importmap_rails_entry ] else - [ GemfileEntry.version("turbolinks", "~> 5", - "Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks") ] + [ importmap_rails_entry, turbo_rails_entry, stimulus_rails_entry ] end end @@ -393,7 +393,15 @@ module Rails end def webpack_install? - !(options[:skip_javascript] || options[:skip_webpack_install]) + options[:webpack] + end + + def importmap_install? + !(options[:skip_javascript] || options[:webpack]) + end + + def hotwire_install? + !(options[:skip_javascript] || options[:skip_hotwire]) end def depends_on_system_test? @@ -420,9 +428,34 @@ module Rails end rails_command "webpacker:install" - if options[:webpack] && options[:webpack] != "webpack" - rails_command "webpacker:install:#{options[:webpack]}" + end + + def run_importmap + return unless importmap_install? + + unless bundle_install? + say <<~EXPLAIN + Skipping `rails importmap:install` because `bundle install` was skipped. + To complete setup, you must run `bundle install` followed by `rails importmap:install`. + EXPLAIN + return end + + rails_command "importmap:install" + end + + def run_hotwire + return unless hotwire_install? + + unless bundle_install? + say <<~EXPLAIN + Skipping `rails turbo:install stimulus:install` because `bundle install` was skipped. + To complete setup, you must run `bundle install` followed by `rails turbo:install stimulus:install`. + EXPLAIN + return + end + + rails_command "turbo:install stimulus:install" end def generate_bundler_binstub diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index fd82c71ac6..5535797dc7 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -79,10 +79,6 @@ module Rails end end - def package_json - template "package.json" - end - def app directory "app" @@ -97,22 +93,12 @@ module Rails "#{shebang}\n" + content end chmod "bin", 0755 & ~File.umask, verbose: false - - remove_file "bin/yarn" if options[:skip_javascript] end def bin_when_updating bin end - def yarn_when_updating - template "bin/yarn", force: true do |content| - "#{shebang}\n" + content - end - - chmod "bin", 0755 & ~File.umask, verbose: false - end - def config empty_directory "config" @@ -278,8 +264,6 @@ module Rails class AppGenerator < AppBase # :stopdoc: - WEBPACKS = %w( react vue angular elm stimulus ) - add_shared_options_for "application" # Add rails command options @@ -295,11 +279,8 @@ module Rails class_option :skip_bundle, type: :boolean, aliases: "-B", default: false, desc: "Don't run bundle install" - class_option :webpack, type: :string, aliases: "--webpacker", default: nil, - desc: "Preconfigure Webpack with a particular framework (options: #{WEBPACKS.join(", ")})" - - class_option :skip_webpack_install, type: :boolean, default: false, - desc: "Don't run Webpack install" + class_option :webpack, type: :boolean, aliases: "--webpacker", default: false, + desc: "Preconfigure Webpack" def initialize(*args) super @@ -308,7 +289,7 @@ module Rails raise Error, "Invalid value for --database option. Supported preconfigurations are: #{DATABASES.join(", ")}." end - # Force sprockets and yarn to be skipped when generating API only apps. + # Force sprockets and JavaScript to be skipped when generating API only apps. # Can't modify options hash as it's frozen by default. if options[:api] self.options = options.merge(skip_sprockets: true, skip_javascript: true).freeze @@ -327,10 +308,8 @@ module Rails skip_javascript: true, skip_jbuilder: true, skip_system_test: true, - skip_webpack_install: true, - skip_turbolinks: true).tap do |option| + skip_hotwire: true).tap do |option| if option[:webpack] - option[:skip_webpack_install] = false option[:skip_javascript] = false end end.freeze @@ -355,7 +334,6 @@ module Rails build(:gemfile) build(:version_control) - build(:package_json) unless options[:skip_javascript] end def create_app_files @@ -371,11 +349,6 @@ module Rails end remove_task :update_bin_files - def update_bin_yarn - build(:yarn_when_updating) - end - remove_task :update_bin_yarn - def update_active_storage unless skip_active_storage? rails_command "active_storage:update", inline: true @@ -487,19 +460,6 @@ module Rails end end - def delete_js_folder_skipping_javascript - if options[:skip_javascript] && !options[:minimal] - remove_dir "app/javascript" - end - end - - def delete_js_packs_when_minimal_skipping_webpack - if options[:minimal] && options[:skip_webpack_install] - remove_dir "app/javascript/packs" - keep_file "app/javascript" - end - end - def delete_assets_initializer_skipping_sprockets if options[:skip_sprockets] remove_file "config/initializers/assets.rb" @@ -564,6 +524,8 @@ module Rails public_task :apply_rails_template, :run_bundle public_task :generate_bundler_binstub public_task :run_webpack + public_task :run_importmap + public_task :run_hotwire def run_after_bundle_callbacks @after_bundle_callbacks.each(&:call) diff --git a/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js b/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js deleted file mode 100644 index 8ec3aad3ae..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +++ /dev/null @@ -1,6 +0,0 @@ -// Action Cable provides the framework to deal with WebSockets in Rails. -// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command. - -import { createConsumer } from "@rails/actioncable" - -export default createConsumer() diff --git a/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js b/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js deleted file mode 100644 index 0cfcf74919..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// Load all the channels within this directory and all subdirectories. -// Channel files must be named *_channel.js. - -const channels = require.context('.', true, /_channel\.js$/) -channels.keys().forEach(channels) diff --git a/railties/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt b/railties/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt deleted file mode 100644 index 8788f89e07..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +++ /dev/null @@ -1,23 +0,0 @@ -// This file is automatically compiled by Webpack, along with any other files -// present in this directory. You're encouraged to place your actual application logic in -// a relevant structure within app/javascript and only use these pack files to reference -// that code so it'll be compiled. - -import Rails from "@rails/ujs" -<%- unless options[:skip_turbolinks] -%> -import Turbolinks from "turbolinks" -<%- end -%> -<%- unless skip_active_storage? -%> -import * as ActiveStorage from "@rails/activestorage" -<%- end -%> -<%- unless options[:skip_action_cable] -%> -import "channels" -<%- end -%> - -Rails.start() -<%- unless options[:skip_turbolinks] -%> -Turbolinks.start() -<%- end -%> -<%- unless skip_active_storage? -%> -ActiveStorage.start() -<%- end -%> diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt index 53402bd2a2..262a21f24f 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt @@ -5,16 +5,10 @@ <%%= csrf_meta_tags %> <%%= csp_meta_tag %> - <%- if options[:skip_javascript] -%> + <%- if options[:skip_hotwire] || options[:skip_javascript] -%> <%%= stylesheet_link_tag "application" %> <%- else -%> - <%- unless options[:skip_turbolinks] -%> - <%%= stylesheet_link_tag "application", "data-turbolinks-track": "reload" %> - <%%= javascript_pack_tag "application", "data-turbolinks-track": "reload" %> - <%- else -%> - <%%= stylesheet_link_tag "application" %> - <%%= javascript_pack_tag "application" %> - <%- end -%> + <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> <%- end -%> diff --git a/railties/lib/rails/generators/rails/app/templates/bin/setup.tt b/railties/lib/rails/generators/rails/app/templates/bin/setup.tt index 9344f6638e..1979f248a6 100644 --- a/railties/lib/rails/generators/rails/app/templates/bin/setup.tt +++ b/railties/lib/rails/generators/rails/app/templates/bin/setup.tt @@ -15,11 +15,6 @@ FileUtils.chdir APP_ROOT do puts "== Installing dependencies ==" system! "gem install bundler --conservative" system("bundle check") || system!("bundle install") -<% unless options.skip_javascript? -%> - - # Install JavaScript dependencies - system! "bin/yarn" -<% end -%> <% unless options.skip_active_record? -%> # puts "\n== Copying sample files ==" diff --git a/railties/lib/rails/generators/rails/app/templates/bin/yarn.tt b/railties/lib/rails/generators/rails/app/templates/bin/yarn.tt deleted file mode 100644 index 0cfa5c6eed..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/bin/yarn.tt +++ /dev/null @@ -1,16 +0,0 @@ -APP_ROOT = File.expand_path("..", __dir__) -Dir.chdir(APP_ROOT) do - yarn = ENV["PATH"].split(File::PATH_SEPARATOR). - select { |dir| File.expand_path(dir) != __dir__ }. - product(["yarn", "yarnpkg", "yarn.cmd", "yarn.ps1"]). - map { |dir, file| File.expand_path(file, dir) }. - find { |file| File.executable?(file) } - - if yarn - exec yarn, *ARGV - else - $stderr.puts "Yarn executable was not detected in the system." - $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" - exit 1 - end -end diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt index 02f4c5ebad..2eeef966fe 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt @@ -5,10 +5,6 @@ Rails.application.config.assets.version = "1.0" # Add additional assets to the asset load path. # Rails.application.config.assets.paths << Emoji.images_path -<%- unless options[:skip_javascript] -%> -# Add Yarn node_modules folder to the asset load path. -Rails.application.config.assets.paths << Rails.root.join("node_modules") -<%- end -%> # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in the app/assets diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt index 3d468f7633..56aa4dc62d 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt @@ -11,7 +11,7 @@ # policy.object_src :none # policy.script_src :self, :https # policy.style_src :self, :https -<%- unless options[:skip_javascript] -%> +<%- if options[:webpack] -%> # # If you are using webpack-dev-server then specify webpack-dev-server host # policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? <%- end -%> diff --git a/railties/lib/rails/generators/rails/app/templates/gitattributes.tt b/railties/lib/rails/generators/rails/app/templates/gitattributes.tt index acad510b52..85a1dade87 100644 --- a/railties/lib/rails/generators/rails/app/templates/gitattributes.tt +++ b/railties/lib/rails/generators/rails/app/templates/gitattributes.tt @@ -5,7 +5,7 @@ db/schema.rb linguist-generated <% end -%> -<% unless options[:skip_javascript] -%> +<% if options[:webpack] -%> # Mark the yarn lockfile as having been generated. yarn.lock linguist-generated <% end -%> diff --git a/railties/lib/rails/generators/rails/app/templates/package.json.tt b/railties/lib/rails/generators/rails/app/templates/package.json.tt deleted file mode 100644 index 2fec18e3ef..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/package.json.tt +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "<%= app_name.underscore.dasherize %>", - "private": true, - "dependencies": { - "@rails/ujs": "<%= npm_version %>"<% unless options[:skip_turbolinks] %>, - "turbolinks": "<%= turbolinks_npm_version %>"<% end -%><% unless skip_active_storage? %>, - "@rails/activestorage": "<%= npm_version %>"<% end -%><% unless options[:skip_action_cable] %>, - "@rails/actioncable": "<%= npm_version %>"<% end %> - }, - "version": "0.1.0" -} diff --git a/railties/lib/rails/generators/rails/plugin/plugin_generator.rb b/railties/lib/rails/generators/rails/plugin/plugin_generator.rb index 65297c748b..4d5cfc59af 100644 --- a/railties/lib/rails/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/rails/generators/rails/plugin/plugin_generator.rb @@ -121,8 +121,7 @@ module Rails opts[:force] = force opts[:skip_bundle] = true opts[:skip_git] = true - opts[:skip_turbolinks] = true - opts[:skip_webpack_install] = true + opts[:skip_hotwire] = true opts[:dummy_app] = true invoke Rails::Generators::AppGenerator, @@ -148,10 +147,6 @@ module Rails end end - def test_dummy_webpacker_assets - template "rails/javascripts.js", "#{dummy_path}/app/javascript/packs/application.js", force: true - end - def test_dummy_sprocket_assets template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true diff --git a/railties/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt b/railties/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt index 6e54a1ce9d..6a2358f02f 100644 --- a/railties/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +++ b/railties/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt @@ -6,9 +6,6 @@ <%%= csp_meta_tag %> <%%= stylesheet_link_tag "<%= namespaced_name %>/application", media: "all" %> - <%- unless options[:skip_javascript] -%> - <%%= javascript_include_tag "<%= namespaced_name %>/application" %> - <%- end -%> diff --git a/railties/lib/rails/generators/rails/plugin/templates/gitignore.tt b/railties/lib/rails/generators/rails/plugin/templates/gitignore.tt index 0d5f6f5c71..8870ebacbf 100644 --- a/railties/lib/rails/generators/rails/plugin/templates/gitignore.tt +++ b/railties/lib/rails/generators/rails/plugin/templates/gitignore.tt @@ -9,7 +9,7 @@ /<%= dummy_path %>/db/*.sqlite3-* <% end -%> /<%= dummy_path %>/log/*.log -<% unless options[:skip_javascript] -%> +<% if options[:webpack] -%> /<%= dummy_path %>/node_modules/ /<%= dummy_path %>/yarn-error.log <% end -%> diff --git a/railties/lib/rails/generators/testing/behaviour.rb b/railties/lib/rails/generators/testing/behaviour.rb index e059308696..826d5c109d 100644 --- a/railties/lib/rails/generators/testing/behaviour.rb +++ b/railties/lib/rails/generators/testing/behaviour.rb @@ -68,7 +68,6 @@ module Rails capture(:stdout) do args += ["--skip-bundle"] unless args.include? "--dev" args |= ["--skip-bootsnap"] unless args.include? "--no-skip-bootsnap" - args |= ["--skip-webpack-install"] unless args.include? "--no-skip-webpack-install" generator_class.start(args, config.reverse_merge(destination_root: destination_root)) end diff --git a/railties/lib/rails/tasks/framework.rake b/railties/lib/rails/tasks/framework.rake index f756bd20cd..5321405c5b 100644 --- a/railties/lib/rails/tasks/framework.rake +++ b/railties/lib/rails/tasks/framework.rake @@ -59,10 +59,4 @@ namespace :app do Rails::AppUpdater.invoke_from_app_generator :display_upgrade_guide_info end end - - namespace :binstub do - task :yarn do - Rails::AppUpdater.invoke_from_app_generator :update_bin_yarn - end - end end diff --git a/railties/test/application/bin_setup_test.rb b/railties/test/application/bin_setup_test.rb index 74ca2b2f6f..dc969dfb28 100644 --- a/railties/test/application/bin_setup_test.rb +++ b/railties/test/application/bin_setup_test.rb @@ -51,10 +51,6 @@ module ApplicationTests assert_equal(<<~OUTPUT, output) == Installing dependencies == The Gemfile's dependencies are satisfied - yarn install - [1/4] Resolving packages... - success Already up-to-date. - Done in 0.00s. == Preparing database == Created database 'app_development' diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb index 868a0f7997..22cfe0e36e 100644 --- a/railties/test/application/middleware_test.rb +++ b/railties/test/application/middleware_test.rb @@ -25,7 +25,6 @@ module ApplicationTests boot! assert_equal [ - "Webpacker::DevServerProxy", "ActionDispatch::HostAuthorization", "Rack::Sendfile", "ActionDispatch::Static", @@ -60,7 +59,6 @@ module ApplicationTests boot! assert_equal [ - "Webpacker::DevServerProxy", "ActionDispatch::HostAuthorization", "Rack::Sendfile", "ActionDispatch::Static", @@ -95,7 +93,6 @@ module ApplicationTests boot! assert_equal [ - "Webpacker::DevServerProxy", "ActionDispatch::HostAuthorization", "Rack::Sendfile", "ActionDispatch::Static", @@ -179,7 +176,7 @@ module ApplicationTests add_to_config "config.ssl_options = { redirect: { host: 'example.com' } }" boot! - assert_equal [{ redirect: { host: "example.com" }, ssl_default_redirect_status: 308 }], Rails.application.middleware[2].args + assert_equal [{ redirect: { host: "example.com" }, ssl_default_redirect_status: 308 }], Rails.application.middleware[1].args end test "removing Active Record omits its middleware" do @@ -263,32 +260,32 @@ module ApplicationTests test "insert middleware after" do add_to_config "config.middleware.insert_after Rack::Sendfile, Rack::Config" boot! - assert_equal "Rack::Config", middleware.fourth + assert_equal "Rack::Config", middleware.third end test "unshift middleware" do add_to_config "config.middleware.unshift Rack::Config" boot! - assert_equal "Rack::Config", middleware.second + assert_equal "Rack::Config", middleware.first end test "Rails.cache does not respond to middleware" do add_to_config "config.cache_store = :memory_store, { timeout: 10 }" boot! - assert_equal "ActionDispatch::MiddlewareStack::FakeRuntime", middleware[5] + assert_equal "ActionDispatch::MiddlewareStack::FakeRuntime", middleware[4] assert_instance_of ActiveSupport::Cache::MemoryStore, Rails.cache end test "Rails.cache does respond to middleware" do boot! - assert_equal "ActiveSupport::Cache::Strategy::LocalCache", middleware[5] - assert_equal "ActionDispatch::MiddlewareStack::FakeRuntime", middleware[6] + assert_equal "ActiveSupport::Cache::Strategy::LocalCache", middleware[4] + assert_equal "ActionDispatch::MiddlewareStack::FakeRuntime", middleware[5] end test "insert middleware before" do add_to_config "config.middleware.insert_before Rack::Sendfile, Rack::Config" boot! - assert_equal "Rack::Config", middleware.third + assert_equal "Rack::Config", middleware.second end test "can't change middleware after it's built" do diff --git a/railties/test/application/rake_test.rb b/railties/test/application/rake_test.rb index e1e4a88323..6c3e763e4d 100644 --- a/railties/test/application/rake_test.rb +++ b/railties/test/application/rake_test.rb @@ -182,7 +182,7 @@ module ApplicationTests end def test_code_statistics_sanity - assert_match "Code LOC: 73 Test LOC: 3 Code to Test Ratio: 1:0.0", + assert_match "Code LOC: 61 Test LOC: 3 Code to Test Ratio: 1:0.0", rails("stats") end @@ -310,22 +310,6 @@ module ApplicationTests end end - test "app:binstub:yarn generates bin/yarn" do - yarn_binstub = File.join(app_path, "bin/yarn") - rails "app:binstub:yarn" - - assert_path_exists yarn_binstub - assert_match %r/\A#!/, File.read(yarn_binstub) - end - - test "app:binstub:yarn overwrites existing bin/yarn" do - yarn_binstub = File.join(app_path, "bin/yarn") - File.write(yarn_binstub, "existing") - rails "app:binstub:yarn" - - assert_match %r/\A#!/, File.read(yarn_binstub) - end - def test_template_load_initializers app_file "config/initializers/dummy.rb", "puts 'Hello, World!'" app_file "template.rb", "" diff --git a/railties/test/application/test_runner_test.rb b/railties/test/application/test_runner_test.rb index f033056499..f77a42c7f7 100644 --- a/railties/test/application/test_runner_test.rb +++ b/railties/test/application/test_runner_test.rb @@ -502,7 +502,7 @@ module ApplicationTests create_test_file :models, "post", pass: false, print: false output = run_test_command("test/models/post_test.rb") - expect = %r{Running:\n\nF\n\nFailure:\nPostTest#test_truth \[[^\]]+test/models/post_test.rb:6\]:\nwups!\n\nrails test test/models/post_test.rb:4\n\n\n\n} + expect = /Failure.*PostTest#test_truth.*wups!/m assert_match expect, output end @@ -510,7 +510,7 @@ module ApplicationTests create_test_file :models, "post", pass: false output = run_test_command("test/models/post_test.rb") - assert_match %r{Finished in.*\n1 runs, 1 assertions}, output + assert_match(/Finished in.*1 runs, 1 assertions/m, output) end def test_fail_fast @@ -566,7 +566,7 @@ module ApplicationTests output = run_test_command(file_name) - assert_match %r{Finished in.*\n2 runs, 2 assertions}, output + assert_match(/Finished in.*2 runs, 2 assertions/m, output) assert_match %r{Running \d+ tests in parallel using \d+ processes}, output assert_no_match "create_table(:users)", output end @@ -645,7 +645,7 @@ module ApplicationTests output = run_test_command(file_name) - assert_match %r{Finished in.*\n2 runs, 2 assertions}, output + assert_match(/Finished in.*2 runs, 2 assertions/m, output) assert_no_match "create_table(:users)", output end diff --git a/railties/test/generators/action_text_install_generator_test.rb b/railties/test/generators/action_text_install_generator_test.rb index d0a0ab94ee..9ef85092ce 100644 --- a/railties/test/generators/action_text_install_generator_test.rb +++ b/railties/test/generators/action_text_install_generator_test.rb @@ -3,7 +3,21 @@ require "generators/generators_test_helper" require "generators/action_text/install/install_generator" -module Webpacker; end +module Webpacker + extend self + + def config + Class.new do + def source_path + "app/packs" + end + + def source_entry_path + "app/packs/entrypoints" + end + end.new + end +end class ActionText::Generators::InstallGeneratorTest < Rails::Generators::TestCase include GeneratorsTestHelper @@ -19,12 +33,6 @@ class ActionText::Generators::InstallGeneratorTest < Rails::Generators::TestCase run_under_asset_pipeline end - test "creates bin/yarn" do - run_generator_instance - - assert_file "bin/yarn" - end - test "installs JavaScript dependencies" do run_generator_instance yarn_commands = @yarn_commands.join("\n") @@ -41,14 +49,16 @@ class ActionText::Generators::InstallGeneratorTest < Rails::Generators::TestCase end test "loads JavaScript dependencies in application.js" do - application_js = Pathname("app/javascript/packs/application.js").expand_path(destination_root) + application_js = Pathname("app/javascript/application.js").expand_path(destination_root) application_js.dirname.mkpath application_js.write("\n") + + run_under_asset_pipeline run_generator_instance assert_file application_js do |content| - assert_match %r"^#{Regexp.escape 'require("@rails/actiontext")'}", content - assert_match %r"^#{Regexp.escape 'require("trix")'}", content + assert_match %r"^#{Regexp.escape 'import "@rails/actiontext"'}", content + assert_match %r"^#{Regexp.escape 'import "trix"'}", content end end @@ -89,21 +99,10 @@ class ActionText::Generators::InstallGeneratorTest < Rails::Generators::TestCase end end - test "#yarn_command runs bin/yarn via Ruby" do - ran = nil - run_stub = -> (command, *) { ran = command } - - generator.stub(:run, run_stub) do - generator.send(:yarn_command, "foo") - end - - assert_match %r"\S bin/yarn foo$", ran - end - test "run just for asset pipeline" do run_under_asset_pipeline - application_js = Pathname("app/assets/javascripts/application.js").expand_path(destination_root) + application_js = Pathname("app/javascript/application.js").expand_path(destination_root) application_js.dirname.mkpath application_js.write "" diff --git a/railties/test/generators/api_app_generator_test.rb b/railties/test/generators/api_app_generator_test.rb index 6e56a053ed..4309c96081 100644 --- a/railties/test/generators/api_app_generator_test.rb +++ b/railties/test/generators/api_app_generator_test.rb @@ -105,8 +105,6 @@ class ApiAppGeneratorTest < Rails::Generators::TestCase generator = Rails::Generators::AppGenerator.new ["rails"], { api: true, update: true }, { destination_root: destination_root, shell: @shell } quietly { generator.update_bin_files } - - assert_no_file "bin/yarn" end private @@ -181,7 +179,6 @@ class ApiAppGeneratorTest < Rails::Generators::TestCase public/apple-touch-icon-precomposed.png public/apple-touch-icon.png public/favicon.ico - package.json ) end end diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 4100973e60..c6d099aa97 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -14,11 +14,6 @@ DEFAULT_APP_FILES = %w( config.ru app/assets/config/manifest.js app/assets/images - app/javascript - app/javascript/channels - app/javascript/channels/consumer.js - app/javascript/channels/index.js - app/javascript/packs/application.js app/assets/stylesheets app/assets/stylesheets/application.css app/channels/application_cable/channel.rb @@ -42,7 +37,6 @@ DEFAULT_APP_FILES = %w( bin/rails bin/rake bin/setup - bin/yarn config/application.rb config/boot.rb config/cable.yml @@ -73,7 +67,6 @@ DEFAULT_APP_FILES = %w( lib/tasks lib/assets log - package.json public storage test/application_system_test_case.rb @@ -101,27 +94,31 @@ class AppGeneratorTest < Rails::Generators::TestCase # brings setup, teardown, and some tests include SharedGeneratorTests + setup do + ENV["SKIP_REQUIRE_WEBPACKER"] = "true" + end + + teardown do + ENV["SKIP_REQUIRE_WEBPACKER"] = nil + end + def default_files ::DEFAULT_APP_FILES end def test_skip_bundle generator([destination_root], skip_bundle: true) - output = run_generator_instance + run_generator_instance assert_empty @bundle_commands # skip_bundle is only about running bundle install so ensure the Gemfile is still generated assert_file "Gemfile" - assert_webpack_installation_skipped(output) end def test_assets run_generator - assert_file("app/views/layouts/application.html.erb", /stylesheet_link_tag\s+"application", "data-turbolinks-track": "reload"/) - assert_file("app/views/layouts/application.html.erb", /javascript_pack_tag\s+"application", "data-turbolinks-track": "reload"/) assert_file("app/assets/stylesheets/application.css") - assert_file("app/javascript/packs/application.js") end def test_application_job_file_present @@ -212,9 +209,10 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_csp_initializer_include_connect_src_example - run_generator + app_root = File.join(destination_root, "myapp") + run_generator [app_root, "--webpack"] - assert_file "config/initializers/content_security_policy.rb" do |content| + assert_file "#{app_root}/config/initializers/content_security_policy.rb" do |content| assert_match(/# policy\.connect_src/, content) end end @@ -287,34 +285,6 @@ class AppGeneratorTest < Rails::Generators::TestCase end end - def test_adds_bin_yarn_into_setup_script - run_generator - - assert_file "bin/yarn" - - assert_file "bin/setup" do |content| - # Does not comment yarn install - assert_match(/(?=[^#]*?) system! "bin\/yarn"/, content) - end - end - - def test_app_update_does_not_generate_yarn_contents_when_bin_yarn_is_not_used - app_root = File.join(destination_root, "myapp") - run_generator [app_root, "--skip-javascript"] - - stub_rails_application(app_root) do - generator = Rails::Generators::AppGenerator.new ["rails"], { update: true, skip_javascript: true }, { destination_root: app_root, shell: @shell } - generator.send(:app_const) - quietly { generator.update_bin_files } - - assert_no_file "#{app_root}/bin/yarn" - - assert_file "#{app_root}/bin/setup" do |content| - assert_no_match(/system! "bin\/yarn"/, content) - end - end - end - def test_app_update_does_not_generate_assets_initializer_when_skip_sprockets_is_given app_root = File.join(destination_root, "myapp") run_generator [app_root, "--skip-sprockets"] @@ -508,54 +478,6 @@ class AppGeneratorTest < Rails::Generators::TestCase end end - def test_package_json_uses_current_versions_and_set_version_of_turbolinks - run_generator - generator = Rails::Generators::AppBase.new ["rails"] - version = generator.send(:npm_version) - - assert_file "package.json" do |content| - assert_match(/"@rails\/ujs": "#{version}"/, content) - assert_match(/"@rails\/activestorage": "#{version}"/, content) - assert_match(/"@rails\/actioncable": "#{version}"/, content) - assert_match(/"turbolinks": "\^5.2.0"/, content) - end - end - - def test_package_json_uses_edge_versions - run_generator [destination_root, "--main"] - - assert_file "package.json" do |content| - assert_match(/"@rails\/ujs": "latest"/, content) - assert_match(/"@rails\/activestorage": "latest"/, content) - assert_match(/"@rails\/actioncable": "latest"/, content) - assert_match(/"turbolinks": "turbolinks\/turbolinks#master"/, content) - end - end - - def test_package_json_excludes_activestorage_if_skipped - run_generator [destination_root, "--skip-active-storage"] - - assert_file "package.json" do |content| - assert_not content.include?("activestorage") - end - end - - def test_package_json_excludes_actioncable_if_skipped - run_generator [destination_root, "--skip-action-cable"] - - assert_file "package.json" do |content| - assert_not content.include?("actioncable") - end - end - - def test_package_json_excludes_turbolinks_if_skipped - run_generator [destination_root, "--skip-turbolinks"] - - assert_file "package.json" do |content| - assert_not content.include?("turbolinks") - end - end - def test_config_database_is_added_by_default run_generator assert_file "config/database.yml", /sqlite3/ @@ -697,7 +619,6 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_file "app/views/layouts/application.html.erb" do |contents| assert_match(/stylesheet_link_tag\s+"application" %>/, contents) - assert_no_match(/javascript_pack_tag\s+'application'/, contents) end end @@ -801,14 +722,14 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_generation_runs_bundle_install - generator([destination_root], skip_webpack_install: true) + generator([destination_root]) run_generator_instance assert_equal 1, @bundle_commands.count("install") end def test_generation_use_original_bundle_environment - generator([destination_root], skip_webpack_install: true) + generator([destination_root]) mock_original_env = -> do { "BUNDLE_RUBYONRAILS__ORG" => "user:pass" } @@ -826,7 +747,7 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_dev_option - generator([destination_root], dev: true, skip_webpack_install: true) + generator([destination_root], dev: true) run_generator_instance assert_equal 1, @bundle_commands.count("install") @@ -836,7 +757,7 @@ class AppGeneratorTest < Rails::Generators::TestCase def test_edge_option Rails.stub(:gem_version, Gem::Version.new("2.1.0")) do - generator([destination_root], edge: true, skip_webpack_install: true) + generator([destination_root], edge: true) run_generator_instance end @@ -846,7 +767,7 @@ class AppGeneratorTest < Rails::Generators::TestCase def test_edge_option_during_alpha Rails.stub(:gem_version, Gem::Version.new("2.1.0.alpha")) do - generator([destination_root], edge: true, skip_webpack_install: true) + generator([destination_root], edge: true) run_generator_instance end @@ -860,7 +781,7 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_main_option - generator([destination_root], main: true, skip_webpack_install: true) + generator([destination_root], main: true) run_generator_instance assert_equal 1, @bundle_commands.count("install") @@ -868,7 +789,7 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_bundler_binstub - generator([destination_root], skip_webpack_install: true) + generator([destination_root]) run_generator_instance assert_equal 1, @bundle_commands.count("binstubs bundler") @@ -906,17 +827,14 @@ class AppGeneratorTest < Rails::Generators::TestCase end end - def test_webpack_option_with_js_framework - generator([destination_root], webpack: "react") + def test_webpack_option + generator([destination_root], webpack: true) webpacker_called = 0 - react_called = 0 command_check = -> command, *_ do case command when "webpacker:install" webpacker_called += 1 - when "webpacker:install:react" - react_called += 1 end end @@ -925,47 +843,32 @@ class AppGeneratorTest < Rails::Generators::TestCase end assert_equal 1, webpacker_called, "`webpacker:install` expected to be called once, but was called #{webpacker_called} times." - assert_equal 1, react_called, "`webpacker:install:react` expected to be called once, but was called #{react_called} times." assert_gem "webpacker" end - def test_skip_webpack_install - generator([destination_root], skip_webpack_install: true) - - command_check = -> command do - if command == "webpacker:install" - flunk "`webpacker:install` expected to not be called." - end - end - - generator.stub(:rails_command, command_check) do - run_generator_instance - end - - assert_gem "webpacker" - assert_no_file "config/webpacker.yml" - - output = Dir.chdir(destination_root) do - `bin/rails help` - end - - assert_match(/The most common rails commands are:/, output) - assert_match(/webpacker:install/, output) - assert_equal true, $?.success? - end - - def test_generator_if_skip_turbolinks_is_given - run_generator [destination_root, "--skip-turbolinks"] - - assert_no_gem "turbolinks" + def test_hotwire + run_generator [destination_root, "--dev"] + assert_gem "turbo-rails" + assert_gem "stimulus-rails" assert_file "app/views/layouts/application.html.erb" do |content| - assert_no_match(/data-turbolinks-track/, content) + assert_match(/data-turbo-track/, content) end - assert_file "app/javascript/packs/application.js" do |content| - assert_no_match(/turbolinks/, content) + assert_file "app/javascript/application.js" do |content| + assert_match(/turbo/, content) + assert_match(/stimulus/, content) end end + def test_skip_hotwire + run_generator [destination_root, "--skip-hotwire"] + + assert_no_gem "turbo-rails" + assert_file "app/views/layouts/application.html.erb" do |content| + assert_no_match(/data-turbo-track/, content) + end + assert_no_file "app/javascript/application.js" + end + def test_bootsnap run_generator [destination_root, "--no-skip-bootsnap"] @@ -1096,7 +999,7 @@ class AppGeneratorTest < Rails::Generators::TestCase end def test_after_bundle_callback - generator([destination_root], skip_webpack_install: true).send(:after_bundle) do + generator([destination_root]).send(:after_bundle) do @bundle_commands_before_callback = @bundle_commands.dup end @@ -1135,13 +1038,11 @@ class AppGeneratorTest < Rails::Generators::TestCase run_generator [app_root, "--minimal"] assert_no_file "#{app_root}/config/storage.yml" - assert_no_file "#{app_root}/config/webpacker.yml" assert_no_file "#{app_root}/config/cable.yml" - assert_no_file "#{app_root}/bin/yarn" assert_no_file "#{app_root}/views/layouts/mailer.html.erb" assert_no_file "#{app_root}/app/jobs/application.rb" assert_file "#{app_root}/app/views/layouts/application.html.erb" do |content| - assert_no_match(/data-turbolinks-track/, content) + assert_no_match(/data-turbo-track/, content) end assert_file "#{app_root}/config/environments/development.rb" do |content| assert_no_match(/config\.active_storage/, content) @@ -1162,7 +1063,6 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_match(/\s+require\s+["']sprockets\/railtie["']/, content) end - assert_no_gem "webpacker", app_root assert_no_gem "jbuilder", app_root assert_no_gem "web-console", app_root end @@ -1192,22 +1092,4 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_no_match(gem, content) end end - - def assert_webpack_installation_skipped(output) - assert_match(/^Skipping `rails webpacker:install`/, output) - - %w( - .browserslistrc - babel.config.js - bin/webpack - bin/webpack-dev-server - config/webpack - config/webpack/development.js - config/webpack/environment.js - config/webpack/production.js - config/webpack/test.js - config/webpacker.yml - postcss.config.js - ).each { |f| assert_no_file(f) } - end end diff --git a/railties/test/generators/channel_generator_test.rb b/railties/test/generators/channel_generator_test.rb index 1a25422c3c..67c7fc0d20 100644 --- a/railties/test/generators/channel_generator_test.rb +++ b/railties/test/generators/channel_generator_test.rb @@ -7,6 +7,11 @@ class ChannelGeneratorTest < Rails::Generators::TestCase include GeneratorsTestHelper tests Rails::Generators::ChannelGenerator + setup do + FileUtils.mkdir_p("#{destination_root}/app/javascript") + FileUtils.touch("#{destination_root}/app/javascript/application.js") + end + def test_application_cable_skeleton_is_created run_generator ["books"] @@ -27,7 +32,7 @@ class ChannelGeneratorTest < Rails::Generators::TestCase end assert_file "app/javascript/channels/chat_channel.js" do |channel| - assert_match(/import consumer from "\.\/consumer"\s+consumer\.subscriptions\.create\("ChatChannel/, channel) + assert_match(/import consumer from "channels\/consumer"\s+consumer\.subscriptions\.create\("ChatChannel/, channel) end end @@ -41,7 +46,7 @@ class ChannelGeneratorTest < Rails::Generators::TestCase end assert_file "app/javascript/channels/chat_channel.js" do |channel| - assert_match(/import consumer from "\.\/consumer"\s+consumer\.subscriptions\.create\("ChatChannel/, channel) + assert_match(/import consumer from "channels\/consumer"\s+consumer\.subscriptions\.create\("ChatChannel/, channel) assert_match(/,\n\n speak/, channel) assert_match(/,\n\n mute: function\(\) \{\n return this\.perform\('mute'\);\n \}\n\}\);/, channel) end @@ -59,11 +64,9 @@ class ChannelGeneratorTest < Rails::Generators::TestCase def test_consumer_js_is_created_if_not_present_already run_generator ["chat"] - FileUtils.rm("#{destination_root}/app/javascript/channels/index.js") FileUtils.rm("#{destination_root}/app/javascript/channels/consumer.js") run_generator ["camp"] - assert_file "app/javascript/channels/index.js" assert_file "app/javascript/channels/consumer.js" end @@ -87,7 +90,6 @@ class ChannelGeneratorTest < Rails::Generators::TestCase assert_file "app/channels/application_cable/channel.rb" assert_file "app/channels/application_cable/connection.rb" - assert_file "app/javascript/channels/index.js" assert_file "app/javascript/channels/consumer.js" end diff --git a/railties/test/generators/plugin_test_runner_test.rb b/railties/test/generators/plugin_test_runner_test.rb index a88e621cf1..3a063c28f9 100644 --- a/railties/test/generators/plugin_test_runner_test.rb +++ b/railties/test/generators/plugin_test_runner_test.rb @@ -7,7 +7,7 @@ class PluginTestRunnerTest < ActiveSupport::TestCase def setup @destination_root = Dir.mktmpdir("bukkits") - Dir.chdir(@destination_root) { `bundle exec rails plugin new bukkits --skip-bundle` } + Dir.chdir(@destination_root) { `bundle exec rails plugin new bukkits --skip-bundle --webpack` } plugin_file "test/dummy/db/schema.rb", "" end diff --git a/railties/test/generators/shared_generator_tests.rb b/railties/test/generators/shared_generator_tests.rb index 4e66f727ed..55199e7148 100644 --- a/railties/test/generators/shared_generator_tests.rb +++ b/railties/test/generators/shared_generator_tests.rb @@ -83,7 +83,7 @@ module SharedGeneratorTests def test_template_is_executed_when_supplied_an_https_path url = "https://gist.github.com/josevalim/103208/raw/" - generator([destination_root], template: url, skip_webpack_install: true) + generator([destination_root], template: url) applied = nil apply_stub = -> (path, *) { applied = path } @@ -189,14 +189,7 @@ module SharedGeneratorTests end def test_generator_for_active_storage - run_generator - - unless generator_class.name == "Rails::Generators::PluginGenerator" - assert_file "#{application_path}/app/javascript/packs/application.js" do |content| - assert_match(/^import \* as ActiveStorage from "@rails\/activestorage"/, content) - assert_match(/^ActiveStorage.start\(\)/, content) - end - end + run_generator([destination_root]) assert_file "#{application_path}/config/environments/development.rb" do |content| assert_match(/config\.active_storage/, content) @@ -224,10 +217,6 @@ module SharedGeneratorTests assert_file "#{application_path}/config/application.rb", /#\s+require\s+["']active_storage\/engine["']/ - assert_file "#{application_path}/app/javascript/packs/application.js" do |content| - assert_no_match(/activestorage/, content) - end - assert_file "#{application_path}/config/environments/development.rb" do |content| assert_no_match(/config\.active_storage/, content) end @@ -254,10 +243,6 @@ module SharedGeneratorTests assert_file "#{application_path}/config/application.rb", /#\s+require\s+["']active_storage\/engine["']/ - assert_file "#{application_path}/app/javascript/packs/application.js" do |content| - assert_no_match(/activestorage/i, content) - end - assert_file "#{application_path}/config/environments/development.rb" do |content| assert_no_match(/config\.active_storage/, content) end @@ -296,7 +281,7 @@ module SharedGeneratorTests end def test_generator_if_skip_action_cable_is_given - run_generator [destination_root, "--skip-action-cable"] + run_generator [destination_root, "--skip-action-cable", "--webpack"] assert_file "#{application_path}/config/application.rb", /#\s+require\s+["']action_cable\/engine["']/ assert_no_file "#{application_path}/config/cable.yml" assert_no_file "#{application_path}/app/javascript/consumer.js" @@ -331,24 +316,6 @@ module SharedGeneratorTests end end - def test_generator_for_yarn - skip "#34009 disabled JS by default for plugins" if generator_class.name == "Rails::Generators::PluginGenerator" - run_generator - assert_file "#{application_path}/package.json", /dependencies/ - assert_file "#{application_path}/bin/yarn" - assert_file "#{application_path}/config/initializers/assets.rb", /node_modules/ - end - - def test_generator_for_yarn_skipped - run_generator([destination_root, "--skip-javascript"]) - assert_no_file "#{application_path}/package.json" - assert_no_file "#{application_path}/bin/yarn" - - assert_file "#{application_path}/config/initializers/assets.rb" do |content| - assert_no_match(/node_modules/, content) - end - end - private def run_generator_instance @bundle_commands = [] diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb index 8a056c5cec..0785d545e7 100644 --- a/railties/test/isolation/abstract_unit.rb +++ b/railties/test/isolation/abstract_unit.rb @@ -511,7 +511,7 @@ Module.new do FileUtils.rm_rf(app_template_path) FileUtils.mkdir_p(app_template_path) - sh "#{Gem.ruby} #{RAILS_FRAMEWORK_ROOT}/railties/exe/rails new #{app_template_path} --skip-bundle --no-rc --skip-webpack-install --quiet" + sh "#{Gem.ruby} #{RAILS_FRAMEWORK_ROOT}/railties/exe/rails new #{app_template_path} --skip-bundle --no-rc --quiet" File.open("#{app_template_path}/config/boot.rb", "w") do |f| f.puts 'require "rails/all"' end @@ -529,26 +529,13 @@ Module.new do end end - # Fix relative file paths - package_json = File.read("#{assets_path}/package.json") - package_json.gsub!(%r{"file:(\.\./[^"]+)"}) do - path = Pathname.new($1).expand_path(assets_path).relative_path_from(Pathname.new(app_template_path)) - "\"file:#{path}\"" - end - File.write("#{app_template_path}/package.json", package_json) - - FileUtils.cp("#{assets_path}/config/webpacker.yml", "#{app_template_path}/config/webpacker.yml") - FileUtils.cp_r("#{assets_path}/config/webpack", "#{app_template_path}/config/webpack") - FileUtils.ln_s("#{assets_path}/node_modules", "#{app_template_path}/node_modules") - FileUtils.chdir(app_template_path) do - sh "yarn install" - sh "bin/rails webpacker:binstubs" - end + FileUtils.mkdir_p "#{app_template_path}/app/javascript" + File.write("#{app_template_path}/app/javascript/application.js", "\n") # Fake 'Bundler.require' -- we run using the repo's Gemfile, not an # app-specific one: we don't want to require every gem that lists. contents = File.read("#{app_template_path}/config/application.rb") - contents.sub!(/^Bundler\.require.*/, "%w(turbolinks webpacker).each { |r| require r }") + contents.sub!(/^Bundler\.require.*/, "%w(importmap-rails).each { |r| require r }") File.write("#{app_template_path}/config/application.rb", contents) require "rails" diff --git a/railties/test/isolation/assets/config/webpack/base.js b/railties/test/isolation/assets/config/webpack/base.js new file mode 100644 index 0000000000..a081a4abd6 --- /dev/null +++ b/railties/test/isolation/assets/config/webpack/base.js @@ -0,0 +1,3 @@ +const { webpackConfig } = require('@rails/webpacker') + +module.exports = webpackConfig diff --git a/railties/test/isolation/assets/config/webpack/development.js b/railties/test/isolation/assets/config/webpack/development.js index 395290f431..c84a413b59 100644 --- a/railties/test/isolation/assets/config/webpack/development.js +++ b/railties/test/isolation/assets/config/webpack/development.js @@ -1,3 +1,5 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development' -const { environment } = require('@rails/webpacker') -module.exports = environment.toWebpackConfig() + +const webpackConfig = require('./base') + +module.exports = webpackConfig diff --git a/railties/test/isolation/assets/config/webpack/production.js b/railties/test/isolation/assets/config/webpack/production.js index d064a6a7fb..c41e043601 100644 --- a/railties/test/isolation/assets/config/webpack/production.js +++ b/railties/test/isolation/assets/config/webpack/production.js @@ -1,3 +1,5 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'production' -const { environment } = require('@rails/webpacker') -module.exports = environment.toWebpackConfig() + +const webpackConfig = require('./base') + +module.exports = webpackConfig diff --git a/railties/test/isolation/assets/config/webpack/test.js b/railties/test/isolation/assets/config/webpack/test.js index 395290f431..c84a413b59 100644 --- a/railties/test/isolation/assets/config/webpack/test.js +++ b/railties/test/isolation/assets/config/webpack/test.js @@ -1,3 +1,5 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development' -const { environment } = require('@rails/webpacker') -module.exports = environment.toWebpackConfig() + +const webpackConfig = require('./base') + +module.exports = webpackConfig diff --git a/railties/test/isolation/assets/config/webpacker.yml b/railties/test/isolation/assets/config/webpacker.yml index 7dfae999c1..c1707a862b 100644 --- a/railties/test/isolation/assets/config/webpacker.yml +++ b/railties/test/isolation/assets/config/webpacker.yml @@ -1,9 +1,61 @@ +# Note: You must restart bin/webpack-dev-server for changes to take effect + default: &default - source_path: app/javascript - check_yarn_integrity: false + source_path: app/packs + source_entry_path: entrypoints + public_root_path: public + public_output_path: packs + cache_path: tmp/webpacker + webpack_compile_output: true + + # Additional paths webpack should look up modules + # ['app/assets', 'engine/foo/app/assets'] + additional_paths: [] + + # Reload manifest.json on all requests so we reload latest compiled packs + cache_manifest: false + development: <<: *default + compile: true + + # Reference: https://webpack.js.org/configuration/dev-server/ + dev_server: + https: false + host: localhost + port: 3035 + public: localhost:3035 + # Hot Module Replacement updates modules while the application is running without a full reload + hmr: false + # Should we show a full-screen overlay in the browser when there are compiler errors or warnings? + overlay: true + # Should we use gzip compression? + compress: true + # Note that apps that do not check the host are vulnerable to DNS rebinding attacks + disable_host_check: true + # This option lets the browser open with your local IP + use_local_ip: false + # When enabled, nothing except the initial startup information will be written to the console. + # This also means that errors or warnings from webpack are not visible. + quiet: false + pretty: true + headers: + 'Access-Control-Allow-Origin': '*' + watch_options: + ignored: '**/node_modules/**' + test: <<: *default + compile: true + + # Compile test packs to a separate directory + public_output_path: packs-test + production: <<: *default + + # Production depends on precompilation of packs prior to booting for performance. + compile: false + + # Cache manifest.json for performance + cache_manifest: true diff --git a/railties/test/isolation/assets/package.json b/railties/test/isolation/assets/package.json index b6748cb458..7f4565c290 100644 --- a/railties/test/isolation/assets/package.json +++ b/railties/test/isolation/assets/package.json @@ -5,7 +5,6 @@ "@rails/actioncable": "file:../../../../actioncable", "@rails/activestorage": "file:../../../../activestorage", "@rails/ujs": "file:../../../../actionview", - "@rails/webpacker": "^5.2.1", - "turbolinks": "^5.2.0" + "@rails/webpacker": "^6.0.0-rc.5" } } diff --git a/tools/test_common.rb b/tools/test_common.rb index 9959f55ded..d5b92b5a26 100644 --- a/tools/test_common.rb +++ b/tools/test_common.rb @@ -1,17 +1,7 @@ # frozen_string_literal: true if ENV["BUILDKITE"] - require "minitest/reporters" - require "fileutils" + require "minitest-ci" - module Minitest - def self.plugin_rails_ci_junit_format_test_report_for_buildkite_init(*) - dir = File.join(__dir__, "../test-reports/#{ENV['BUILDKITE_JOB_ID']}") - reporter << Minitest::Reporters::JUnitReporter.new(dir, false) - FileUtils.mkdir_p(dir) - end - end - - Minitest.load_plugins - Minitest.extensions.unshift "rails_ci_junit_format_test_report_for_buildkite" + Minitest::Ci.report_dir = File.join(__dir__, "../test-reports/#{ENV['BUILDKITE_JOB_ID']}") end diff --git a/yarn.lock b/yarn.lock index 1c558772c6..5d40d4c825 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,11 +62,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/estree@0.0.38": - version "0.0.38" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" - integrity sha512-F/v7t1LwS4vnXuPooJQGBRKRGIoxWUTmA4VHfqjOccFsNDThD5bfUNpITive6s352O7o384wcpEaDV8rHCehDA== - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -412,19 +407,12 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -551,7 +539,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= @@ -560,515 +548,6 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.25.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-external-helpers@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" - integrity sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -1192,15 +671,6 @@ braces@^0.1.2: dependencies: expand-range "^0.1.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1281,14 +751,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -1351,11 +813,6 @@ builtin-modules@^1.0.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" - integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg== - builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" @@ -1431,11 +888,6 @@ callsites@^0.2.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= -caniuse-lite@^1.0.30000844: - version "1.0.30000912" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000912.tgz#08e650d4090a9c0ab06bfd2b46b7d3ad6dcaea28" - integrity sha512-M3zAtV36U+xw5mMROlTXpAHClmPAor6GPKAMD5Yi7glCB5sbMPFtnQ3rGpk4XqPdUrrTIaVYSJZxREZWNy8QJg== - capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" @@ -1628,11 +1080,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -1715,13 +1162,6 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -1744,7 +1184,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.2.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== @@ -1966,13 +1406,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -2040,11 +1473,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.47: - version "1.3.86" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.86.tgz#a45ea01da5b26500d12bca5e0f194ebb3e1fd14e" - integrity sha512-BcmXOu37FCPxrrh0wyKgKi5dAjIu2ohxN5ptapkLPKRC3IBK2NeIwh9n1x/8HzSRQiEKamJkDce1ZgOGgEX9iw== - elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -2476,16 +1904,6 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -estree-walker@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" - integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= - -estree-walker@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== - estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -2571,13 +1989,6 @@ expand-braces@^0.1.1: array-unique "^0.2.1" braces "^0.1.2" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2599,13 +2010,6 @@ expand-range@^0.1.0: is-number "^0.1.1" repeat-string "^0.2.2" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -2642,13 +2046,6 @@ external-editor@^2.0.4: iconv-lite "^0.4.17" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2741,22 +2138,6 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -2851,18 +2232,11 @@ follow-redirects@^1.0.0: dependencies: debug "=3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2984,21 +2358,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -3056,7 +2415,7 @@ globals@^11.0.1: resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== -globals@^9.18.0, globals@^9.2.0: +globals@^9.2.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== @@ -3181,14 +2540,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -3352,13 +2703,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3458,18 +2802,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3482,23 +2814,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -3511,13 +2831,6 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3568,13 +2881,6 @@ is-number@^0.1.1: resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3582,11 +2888,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -3594,16 +2895,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -3714,16 +3005,16 @@ js-reporters@1.2.1: resolved "https://registry.yarnpkg.com/js-reporters/-/js-reporters-1.2.1.tgz#f88c608e324a3373a95bcc45ad305e5c979c459b" integrity sha1-+IxgjjJKM3OpW8xFrTBeXJecRZs= -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-yaml@^3.5.1, js-yaml@^3.9.1: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" @@ -3737,16 +3028,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -3784,7 +3065,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= @@ -3983,13 +3264,6 @@ log4js@^3.0.0: rfdc "^1.1.2" streamroller "0.7.0" -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.3: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -3998,13 +3272,6 @@ lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.3: pseudomap "^1.0.2" yallist "^2.1.2" -magic-string@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" - integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg== - dependencies: - sourcemap-codec "^1.4.1" - magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -4045,11 +3312,6 @@ matcher-collection@^1.0.0: dependencies: minimatch "^3.0.2" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -4082,25 +3344,6 @@ merge@^1.2.0: resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -4348,7 +3591,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -4423,14 +3666,6 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -4503,7 +3738,7 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -4576,16 +3811,6 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -4652,7 +3877,7 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -4782,16 +4007,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -4927,15 +4142,6 @@ qunit@^2.8.0: sane "^4.0.0" walk-sync "0.3.2" -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -5038,32 +4244,6 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5077,27 +4257,6 @@ regexpp@^1.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -5113,18 +4272,11 @@ repeat-string@^0.2.2: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - request@2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -5194,14 +4346,7 @@ resolve@^0.6.3: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.1.6, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - -resolve@^1.17.0, resolve@^1.19.0: +resolve@^1.13.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -5209,6 +4354,13 @@ resolve@^1.17.0, resolve@^1.19.0: is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^1.5.0, resolve@^1.6.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -5250,32 +4402,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-babel@^3.0.4: - version "3.0.7" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.7.tgz#5b13611f1ab8922497e9d15197ae5d8a23fe3b1e" - integrity sha512-bVe2y0z/V5Ax1qU8NX/0idmzIwJPdUGu8Xx3vXH73h0yGjxfv2gkFI82MBVg49SlsFlLTBadBHb67zy4TWM3hA== - dependencies: - rollup-pluginutils "^1.5.0" - -rollup-plugin-commonjs@^9.1.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89" - integrity sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA== - dependencies: - estree-walker "^0.5.2" - magic-string "^0.25.1" - resolve "^1.8.1" - rollup-pluginutils "^2.3.3" - -rollup-plugin-node-resolve@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89" - integrity sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg== - dependencies: - builtin-modules "^2.0.0" - is-module "^1.0.0" - resolve "^1.1.6" - rollup-plugin-terser@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -5286,37 +4412,6 @@ rollup-plugin-terser@^7.0.2: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup-plugin-uglify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86" - integrity sha512-dehLu9eRRoV4l09aC+ySntRw1OAfoyKdbk8Nelblj03tHoynkSybqyEpgavemi1LBOH6S1vzI58/mpxkZIe1iQ== - dependencies: - uglify-es "^3.3.7" - -rollup-pluginutils@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" - integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= - dependencies: - estree-walker "^0.2.1" - minimatch "^3.0.2" - -rollup-pluginutils@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" - integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== - dependencies: - estree-walker "^0.5.2" - micromatch "^2.3.11" - -rollup@^0.58.2: - version "0.58.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.58.2.tgz#2feddea8c0c022f3e74b35c48e3c21b3433803ce" - integrity sha512-RZVvCWm9BHOYloaE6LLiE/ibpjv1CmI8F8k0B0Cp+q1eezo3cswszJH1DN0djgzSlo0hjuuCmyeI+1XOYLl4wg== - dependencies: - "@types/estree" "0.0.38" - "@types/node" "*" - rollup@^2.35.1: version "2.53.3" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.53.3.tgz#14b0e57f0874d4ad23bdbb13050cf70bcd1eabf7" @@ -5520,11 +4615,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" @@ -5629,13 +4719,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -5657,7 +4740,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5672,11 +4755,6 @@ source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" - integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== - sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -6033,11 +5111,6 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6071,11 +5144,6 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - trix@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/trix/-/trix-1.3.1.tgz#ccce8d9e72bf0fe70c8c019ff558c70266f8d857" @@ -6132,14 +5200,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -uglify-es@^3.3.7: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"