Bump webpacker from 3.5.5 to 4.0.2 (#10277)
Bumps [webpacker](https://github.com/rails/webpacker) from 3.5.5 to 4.0.2. - [Release notes](https://github.com/rails/webpacker/releases) - [Changelog](https://github.com/rails/webpacker/blob/master/CHANGELOG.md) - [Commits](https://github.com/rails/webpacker/compare/v3.5.5...v4.0.2) Signed-off-by: dependabot[bot] <support@dependabot.com> Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
This commit is contained in:
		
							parent
							
								
									9200afd9e6
								
							
						
					
					
						commit
						e0e72c90b6
					
				
					 46 changed files with 1655 additions and 1651 deletions
				
			
		
							
								
								
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							| 
						 | 
					@ -86,7 +86,7 @@ gem 'tty-command', '~> 0.8', require: false
 | 
				
			||||||
gem 'tty-prompt', '~> 0.18', require: false
 | 
					gem 'tty-prompt', '~> 0.18', require: false
 | 
				
			||||||
gem 'twitter-text', '~> 1.14'
 | 
					gem 'twitter-text', '~> 1.14'
 | 
				
			||||||
gem 'tzinfo-data', '~> 1.2018'
 | 
					gem 'tzinfo-data', '~> 1.2018'
 | 
				
			||||||
gem 'webpacker', '~> 3.5'
 | 
					gem 'webpacker', '~> 4.0'
 | 
				
			||||||
gem 'webpush'
 | 
					gem 'webpush'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gem 'json-ld', '~> 3.0'
 | 
					gem 'json-ld', '~> 3.0'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -433,7 +433,7 @@ GEM
 | 
				
			||||||
    rack-cors (1.0.2)
 | 
					    rack-cors (1.0.2)
 | 
				
			||||||
    rack-protection (2.0.5)
 | 
					    rack-protection (2.0.5)
 | 
				
			||||||
      rack
 | 
					      rack
 | 
				
			||||||
    rack-proxy (0.6.4)
 | 
					    rack-proxy (0.6.5)
 | 
				
			||||||
      rack
 | 
					      rack
 | 
				
			||||||
    rack-test (1.1.0)
 | 
					    rack-test (1.1.0)
 | 
				
			||||||
      rack (>= 1.0, < 3)
 | 
					      rack (>= 1.0, < 3)
 | 
				
			||||||
| 
						 | 
					@ -640,7 +640,7 @@ GEM
 | 
				
			||||||
      addressable (>= 2.3.6)
 | 
					      addressable (>= 2.3.6)
 | 
				
			||||||
      crack (>= 0.3.2)
 | 
					      crack (>= 0.3.2)
 | 
				
			||||||
      hashdiff
 | 
					      hashdiff
 | 
				
			||||||
    webpacker (3.5.5)
 | 
					    webpacker (4.0.2)
 | 
				
			||||||
      activesupport (>= 4.2)
 | 
					      activesupport (>= 4.2)
 | 
				
			||||||
      rack-proxy (>= 0.6.1)
 | 
					      rack-proxy (>= 0.6.1)
 | 
				
			||||||
      railties (>= 4.2)
 | 
					      railties (>= 4.2)
 | 
				
			||||||
| 
						 | 
					@ -772,7 +772,7 @@ DEPENDENCIES
 | 
				
			||||||
  twitter-text (~> 1.14)
 | 
					  twitter-text (~> 1.14)
 | 
				
			||||||
  tzinfo-data (~> 1.2018)
 | 
					  tzinfo-data (~> 1.2018)
 | 
				
			||||||
  webmock (~> 3.5)
 | 
					  webmock (~> 3.5)
 | 
				
			||||||
  webpacker (~> 3.5)
 | 
					  webpacker (~> 4.0)
 | 
				
			||||||
  webpush
 | 
					  webpush
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUBY VERSION
 | 
					RUBY VERSION
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def thumbnail
 | 
					  def thumbnail
 | 
				
			||||||
    instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('preview.jpg')
 | 
					    instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.jpg')
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def stats
 | 
					  def stats
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ class RSS::AccountSerializer
 | 
				
			||||||
    builder.title("#{display_name(account)} (@#{account.local_username_and_domain})")
 | 
					    builder.title("#{display_name(account)} (@#{account.local_username_and_domain})")
 | 
				
			||||||
           .description(account_description(account))
 | 
					           .description(account_description(account))
 | 
				
			||||||
           .link(TagManager.instance.url_for(account))
 | 
					           .link(TagManager.instance.url_for(account))
 | 
				
			||||||
           .logo(full_asset_url(asset_pack_path('logo.svg')))
 | 
					           .logo(full_pack_url('media/images/logo.svg'))
 | 
				
			||||||
           .accent_color('2b90d9')
 | 
					           .accent_color('2b90d9')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    builder.image(full_asset_url(account.avatar.url(:original))) if account.avatar?
 | 
					    builder.image(full_asset_url(account.avatar.url(:original))) if account.avatar?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@ class RSS::TagSerializer
 | 
				
			||||||
    builder.title("##{tag.name}")
 | 
					    builder.title("##{tag.name}")
 | 
				
			||||||
           .description(strip_tags(I18n.t('about.about_hashtag_html', hashtag: tag.name)))
 | 
					           .description(strip_tags(I18n.t('about.about_hashtag_html', hashtag: tag.name)))
 | 
				
			||||||
           .link(tag_url(tag))
 | 
					           .link(tag_url(tag))
 | 
				
			||||||
           .logo(full_asset_url(asset_pack_path('logo.svg')))
 | 
					           .logo(full_pack_url('media/images/logo.svg'))
 | 
				
			||||||
           .accent_color('2b90d9')
 | 
					           .accent_color('2b90d9')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    statuses.each do |status|
 | 
					    statuses.each do |status|
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@
 | 
				
			||||||
  .column-0
 | 
					  .column-0
 | 
				
			||||||
    .public-account-header.public-account-header--no-bar
 | 
					    .public-account-header.public-account-header--no-bar
 | 
				
			||||||
      .public-account-header__image
 | 
					      .public-account-header__image
 | 
				
			||||||
        = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
 | 
					        = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .column-1
 | 
					  .column-1
 | 
				
			||||||
    .landing-page__call-to-action{ dir: 'ltr' }
 | 
					    .landing-page__call-to-action{ dir: 'ltr' }
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@
 | 
				
			||||||
            %span= t 'about.status_count_after', count: @instance_presenter.status_count
 | 
					            %span= t 'about.status_count_after', count: @instance_presenter.status_count
 | 
				
			||||||
        .row__mascot
 | 
					        .row__mascot
 | 
				
			||||||
          .landing-page__mascot
 | 
					          .landing-page__mascot
 | 
				
			||||||
            = image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('elephant_ui_plane.svg'), alt: ''
 | 
					            = image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .column-2
 | 
					  .column-2
 | 
				
			||||||
    .landing-page__information.contact-widget
 | 
					    .landing-page__information.contact-widget
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
.landing
 | 
					.landing
 | 
				
			||||||
  .landing__brand
 | 
					  .landing__brand
 | 
				
			||||||
    = link_to root_url, class: 'brand' do
 | 
					    = link_to root_url, class: 'brand' do
 | 
				
			||||||
      = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
					      = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
 | 
				
			||||||
      %span.brand__tagline=t 'about.tagline'
 | 
					      %span.brand__tagline=t 'about.tagline'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .landing__grid
 | 
					  .landing__grid
 | 
				
			||||||
| 
						 | 
					@ -48,7 +48,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      .hero-widget
 | 
					      .hero-widget
 | 
				
			||||||
        .hero-widget__img
 | 
					        .hero-widget__img
 | 
				
			||||||
          = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title
 | 
					          = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        - if @instance_presenter.site_short_description.present?
 | 
					        - if @instance_presenter.site_short_description.present?
 | 
				
			||||||
          .hero-widget__text
 | 
					          .hero-widget__text
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
.hero-widget
 | 
					.hero-widget
 | 
				
			||||||
  .hero-widget__img
 | 
					  .hero-widget__img
 | 
				
			||||||
    = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title
 | 
					    = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .hero-widget__text
 | 
					  .hero-widget__text
 | 
				
			||||||
    %p= @instance_presenter.site_short_description.html_safe.presence || @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
 | 
					    %p= @instance_presenter.site_short_description.html_safe.presence || @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
 | 
					.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
 | 
				
			||||||
  %noscript
 | 
					  %noscript
 | 
				
			||||||
    = image_tag asset_pack_path('logo.svg'), alt: 'Mastodon'
 | 
					    = image_pack_tag 'logo.svg', alt: 'Mastodon'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    %div
 | 
					    %div
 | 
				
			||||||
      = t('errors.noscript_html', apps_path: 'https://joinmastodon.org/apps')
 | 
					      = t('errors.noscript_html', apps_path: 'https://joinmastodon.org/apps')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
    .sidebar-wrapper
 | 
					    .sidebar-wrapper
 | 
				
			||||||
      .sidebar
 | 
					      .sidebar
 | 
				
			||||||
        = link_to root_path do
 | 
					        = link_to root_path do
 | 
				
			||||||
          = image_tag asset_pack_path('logo.svg'), class: 'logo', alt: 'Mastodon'
 | 
					          = image_pack_tag 'logo.svg', class: 'logo', alt: 'Mastodon'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        = render_navigation
 | 
					        = render_navigation
 | 
				
			||||||
    .content-wrapper
 | 
					    .content-wrapper
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
    .logo-container
 | 
					    .logo-container
 | 
				
			||||||
      %h1
 | 
					      %h1
 | 
				
			||||||
        = link_to root_path do
 | 
					        = link_to root_path do
 | 
				
			||||||
          = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
					          = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .form-container
 | 
					    .form-container
 | 
				
			||||||
      = render 'flashes'
 | 
					      = render 'flashes'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@
 | 
				
			||||||
                              %tr
 | 
					                              %tr
 | 
				
			||||||
                                %td.column-cell
 | 
					                                %td.column-cell
 | 
				
			||||||
                                  = link_to root_url do
 | 
					                                  = link_to root_url do
 | 
				
			||||||
                                    = image_tag full_pack_url('logo_full.png'), alt: 'Mastodon', height: 34, class: 'logo'
 | 
					                                    = image_tag full_pack_url('media/images/mailer/logo_full.png'), alt: 'Mastodon', height: 34, class: 'logo'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    = yield
 | 
					    = yield
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,4 +49,4 @@
 | 
				
			||||||
                                %p= link_to t('application_mailer.notification_preferences'), settings_notifications_url
 | 
					                                %p= link_to t('application_mailer.notification_preferences'), settings_notifications_url
 | 
				
			||||||
                              %td.column-cell.text-right
 | 
					                              %td.column-cell.text-right
 | 
				
			||||||
                                = link_to root_url do
 | 
					                                = link_to root_url do
 | 
				
			||||||
                                  = image_tag full_pack_url('logo_transparent.png'), alt: 'Mastodon', height: 24
 | 
					                                  = image_tag full_pack_url('media/images/mailer/logo_transparent.png'), alt: 'Mastodon', height: 24
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
        %nav.header
 | 
					        %nav.header
 | 
				
			||||||
          .nav-left
 | 
					          .nav-left
 | 
				
			||||||
            = link_to root_url, class: 'brand' do
 | 
					            = link_to root_url, class: 'brand' do
 | 
				
			||||||
              = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
					              = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            = link_to t('directories.directory'), explore_path, class: 'nav-link optional' if Setting.profile_directory
 | 
					            = link_to t('directories.directory'), explore_path, class: 'nav-link optional' if Setting.profile_directory
 | 
				
			||||||
            = link_to t('about.about_this'), about_more_path, class: 'nav-link optional'
 | 
					            = link_to t('about.about_this'), about_more_path, class: 'nav-link optional'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_grade.png'), alt:''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt:''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'notification_mailer.favourite.title'
 | 
					                              %h1= t 'notification_mailer.favourite.title'
 | 
				
			||||||
                              %p.lead= t('notification_mailer.favourite.body', name: @account.acct)
 | 
					                              %p.lead= t('notification_mailer.favourite.body', name: @account.acct)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_person_add.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_person_add.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'notification_mailer.follow.title'
 | 
					                              %h1= t 'notification_mailer.follow.title'
 | 
				
			||||||
                              %p.lead= t('notification_mailer.follow.body', name: @account.acct)
 | 
					                              %p.lead= t('notification_mailer.follow.body', name: @account.acct)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_person_add.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_person_add.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'notification_mailer.follow_request.title'
 | 
					                              %h1= t 'notification_mailer.follow_request.title'
 | 
				
			||||||
                              %p.lead= t('notification_mailer.follow_request.body', name: @account.acct)
 | 
					                              %p.lead= t('notification_mailer.follow_request.body', name: @account.acct)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_reply.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_reply.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'notification_mailer.mention.title'
 | 
					                              %h1= t 'notification_mailer.mention.title'
 | 
				
			||||||
                              %p.lead= t('notification_mailer.mention.body', name: @status.account.acct)
 | 
					                              %p.lead= t('notification_mailer.mention.body', name: @status.account.acct)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_cached.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_cached.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'notification_mailer.reblog.title'
 | 
					                              %h1= t 'notification_mailer.reblog.title'
 | 
				
			||||||
                              %p.lead= t('notification_mailer.reblog.body', name: @account.acct)
 | 
					                              %p.lead= t('notification_mailer.reblog.body', name: @account.acct)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
= opengraph 'og:type', 'website'
 | 
					= opengraph 'og:type', 'website'
 | 
				
			||||||
= opengraph 'og:title', @instance_presenter.site_title
 | 
					= opengraph 'og:title', @instance_presenter.site_title
 | 
				
			||||||
= opengraph 'og:description', description
 | 
					= opengraph 'og:description', description
 | 
				
			||||||
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('preview.jpg', protocol: :request))
 | 
					= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg', protocol: :request))
 | 
				
			||||||
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
 | 
					= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
 | 
				
			||||||
= opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630'
 | 
					= opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630'
 | 
				
			||||||
= opengraph 'twitter:card', 'summary_large_image'
 | 
					= opengraph 'twitter:card', 'summary_large_image'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_file_download.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_file_download.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'user_mailer.backup_ready.title'
 | 
					                              %h1= t 'user_mailer.backup_ready.title'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_email.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_email.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'devise.mailer.confirmation_instructions.title'
 | 
					                              %h1= t 'devise.mailer.confirmation_instructions.title'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_email.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_email.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'devise.mailer.email_changed.title'
 | 
					                              %h1= t 'devise.mailer.email_changed.title'
 | 
				
			||||||
                              %p.lead= t 'devise.mailer.email_changed.explanation'
 | 
					                              %p.lead= t 'devise.mailer.email_changed.explanation'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_lock_open.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'devise.mailer.password_change.title'
 | 
					                              %h1= t 'devise.mailer.password_change.title'
 | 
				
			||||||
                              %p.lead= t 'devise.mailer.password_change.explanation'
 | 
					                              %p.lead= t 'devise.mailer.password_change.explanation'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_email.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_email.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'devise.mailer.reconfirmation_instructions.title'
 | 
					                              %h1= t 'devise.mailer.reconfirmation_instructions.title'
 | 
				
			||||||
                              %p.lead= t 'devise.mailer.reconfirmation_instructions.explanation'
 | 
					                              %p.lead= t 'devise.mailer.reconfirmation_instructions.explanation'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_lock_open.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'devise.mailer.reset_password_instructions.title'
 | 
					                              %h1= t 'devise.mailer.reset_password_instructions.title'
 | 
				
			||||||
                              %p.lead= t 'devise.mailer.reset_password_instructions.explanation'
 | 
					                              %p.lead= t 'devise.mailer.reset_password_instructions.explanation'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_warning.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_warning.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t "user_mailer.warning.title.#{@warning.action}"
 | 
					                              %h1= t "user_mailer.warning.title.#{@warning.action}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
                                %tbody
 | 
					                                %tbody
 | 
				
			||||||
                                  %tr
 | 
					                                  %tr
 | 
				
			||||||
                                    %td
 | 
					                                    %td
 | 
				
			||||||
                                      = image_tag full_pack_url('icon_done.png'), alt: ''
 | 
					                                      = image_tag full_pack_url('media/images/mailer/icon_done.png'), alt: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              %h1= t 'user_mailer.welcome.title', name: @resource.account.username
 | 
					                              %h1= t 'user_mailer.welcome.title', name: @resource.account.username
 | 
				
			||||||
                              %p.lead= t 'user_mailer.welcome.explanation'
 | 
					                              %p.lead= t 'user_mailer.welcome.explanation'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,4 +12,8 @@ require "bundler/setup"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require "webpacker"
 | 
					require "webpacker"
 | 
				
			||||||
require "webpacker/webpack_runner"
 | 
					require "webpacker/webpack_runner"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_ROOT = File.expand_path("..", __dir__)
 | 
				
			||||||
 | 
					Dir.chdir(APP_ROOT) do
 | 
				
			||||||
  Webpacker::WebpackRunner.run(ARGV)
 | 
					  Webpacker::WebpackRunner.run(ARGV)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,4 +12,8 @@ require "bundler/setup"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require "webpacker"
 | 
					require "webpacker"
 | 
				
			||||||
require "webpacker/dev_server_runner"
 | 
					require "webpacker/dev_server_runner"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_ROOT = File.expand_path("..", __dir__)
 | 
				
			||||||
 | 
					Dir.chdir(APP_ROOT) do
 | 
				
			||||||
  Webpacker::DevServerRunner.run(ARGV)
 | 
					  Webpacker::DevServerRunner.run(ARGV)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,11 @@
 | 
				
			||||||
// Common configuration for webpacker loaded from config/webpacker.yml
 | 
					// Common configuration for webpacker loaded from config/webpacker.yml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { join, resolve } = require('path');
 | 
					const { resolve } = require('path');
 | 
				
			||||||
const { env } = require('process');
 | 
					const { env } = require('process');
 | 
				
			||||||
const { safeLoad } = require('js-yaml');
 | 
					const { safeLoad } = require('js-yaml');
 | 
				
			||||||
const { readFileSync } = require('fs');
 | 
					const { readFileSync } = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const configPath = resolve('config', 'webpacker.yml');
 | 
					const configPath = resolve('config', 'webpacker.yml');
 | 
				
			||||||
const loadersDir = join(__dirname, 'loaders');
 | 
					 | 
				
			||||||
const settings = safeLoad(readFileSync(configPath), 'utf8')[env.RAILS_ENV || env.NODE_ENV];
 | 
					const settings = safeLoad(readFileSync(configPath), 'utf8')[env.RAILS_ENV || env.NODE_ENV];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const themePath = resolve('config', 'themes.yml');
 | 
					const themePath = resolve('config', 'themes.yml');
 | 
				
			||||||
| 
						 | 
					@ -37,6 +36,5 @@ module.exports = {
 | 
				
			||||||
    CDN_HOST: env.CDN_HOST,
 | 
					    CDN_HOST: env.CDN_HOST,
 | 
				
			||||||
    NODE_ENV: env.NODE_ENV,
 | 
					    NODE_ENV: env.NODE_ENV,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  loadersDir,
 | 
					 | 
				
			||||||
  output,
 | 
					  output,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,10 @@
 | 
				
			||||||
// Note: You must restart bin/webpack-dev-server for changes to take effect
 | 
					// Note: You must restart bin/webpack-dev-server for changes to take effect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const merge = require('webpack-merge');
 | 
					const merge = require('webpack-merge');
 | 
				
			||||||
const sharedConfig = require('./shared.js');
 | 
					const sharedConfig = require('./shared');
 | 
				
			||||||
const { settings, output } = require('./configuration.js');
 | 
					const { settings, output } = require('./configuration');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const watchOptions = {
 | 
					const watchOptions = {};
 | 
				
			||||||
  ignored: /node_modules/,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (process.env.VAGRANT) {
 | 
					if (process.env.VAGRANT) {
 | 
				
			||||||
  // If we are in Vagrant, we can't rely on inotify to update us with changed
 | 
					  // If we are in Vagrant, we can't rely on inotify to update us with changed
 | 
				
			||||||
| 
						 | 
					@ -17,7 +15,7 @@ if (process.env.VAGRANT) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = merge(sharedConfig, {
 | 
					module.exports = merge(sharedConfig, {
 | 
				
			||||||
  mode: 'development',
 | 
					  mode: 'development',
 | 
				
			||||||
 | 
					  cache: true,
 | 
				
			||||||
  devtool: 'cheap-module-eval-source-map',
 | 
					  devtool: 'cheap-module-eval-source-map',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  stats: {
 | 
					  stats: {
 | 
				
			||||||
| 
						 | 
					@ -30,15 +28,33 @@ module.exports = merge(sharedConfig, {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  devServer: {
 | 
					  devServer: {
 | 
				
			||||||
    clientLogLevel: 'none',
 | 
					    clientLogLevel: 'none',
 | 
				
			||||||
    https: settings.dev_server.https,
 | 
					    compress: settings.dev_server.compress,
 | 
				
			||||||
 | 
					    quiet: settings.dev_server.quiet,
 | 
				
			||||||
 | 
					    disableHostCheck: settings.dev_server.disable_host_check,
 | 
				
			||||||
    host: settings.dev_server.host,
 | 
					    host: settings.dev_server.host,
 | 
				
			||||||
    port: settings.dev_server.port,
 | 
					    port: settings.dev_server.port,
 | 
				
			||||||
 | 
					    https: settings.dev_server.https,
 | 
				
			||||||
 | 
					    hot: settings.dev_server.hmr,
 | 
				
			||||||
    contentBase: output.path,
 | 
					    contentBase: output.path,
 | 
				
			||||||
 | 
					    inline: settings.dev_server.inline,
 | 
				
			||||||
 | 
					    useLocalIp: settings.dev_server.use_local_ip,
 | 
				
			||||||
 | 
					    public: settings.dev_server.public,
 | 
				
			||||||
    publicPath: output.publicPath,
 | 
					    publicPath: output.publicPath,
 | 
				
			||||||
    compress: true,
 | 
					    historyApiFallback: {
 | 
				
			||||||
    headers: { 'Access-Control-Allow-Origin': '*' },
 | 
					      disableDotRule: true,
 | 
				
			||||||
    historyApiFallback: true,
 | 
					    },
 | 
				
			||||||
    disableHostCheck: true,
 | 
					    headers: settings.dev_server.headers,
 | 
				
			||||||
    watchOptions: watchOptions,
 | 
					    overlay: settings.dev_server.overlay,
 | 
				
			||||||
 | 
					    stats: {
 | 
				
			||||||
 | 
					      entrypoints: false,
 | 
				
			||||||
 | 
					      errorDetails: false,
 | 
				
			||||||
 | 
					      modules: false,
 | 
				
			||||||
 | 
					      moduleTrace: false,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    watchOptions: Object.assign(
 | 
				
			||||||
 | 
					      {},
 | 
				
			||||||
 | 
					      settings.dev_server.watch_options,
 | 
				
			||||||
 | 
					      watchOptions
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
const { env, publicPath } = require('../configuration.js');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
  test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
 | 
					 | 
				
			||||||
  use: [{
 | 
					 | 
				
			||||||
    loader: 'file-loader',
 | 
					 | 
				
			||||||
    options: {
 | 
					 | 
				
			||||||
      publicPath,
 | 
					 | 
				
			||||||
      name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]',
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  }],
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
const { resolve } = require('path');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const env = process.env.NODE_ENV || 'development';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
  test: /\.js$/,
 | 
					 | 
				
			||||||
  exclude: /node_modules/,
 | 
					 | 
				
			||||||
  loader: 'babel-loader',
 | 
					 | 
				
			||||||
  options: {
 | 
					 | 
				
			||||||
    cacheDirectory: env === 'development' ? false : resolve(__dirname, '..', '..', '..', 'tmp', 'cache', 'babel-loader'),
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,21 +0,0 @@
 | 
				
			||||||
const { resolve } = require('path');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const env = process.env.NODE_ENV || 'development';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if (env === 'development') {
 | 
					 | 
				
			||||||
  module.exports = {};
 | 
					 | 
				
			||||||
} else {
 | 
					 | 
				
			||||||
  // babel options to apply only to external libraries, e.g. remove-prop-types
 | 
					 | 
				
			||||||
  module.exports = {
 | 
					 | 
				
			||||||
    test: /\.js$/,
 | 
					 | 
				
			||||||
    include: /node_modules/,
 | 
					 | 
				
			||||||
    loader: 'babel-loader',
 | 
					 | 
				
			||||||
    options: {
 | 
					 | 
				
			||||||
      babelrc: false,
 | 
					 | 
				
			||||||
      plugins: [
 | 
					 | 
				
			||||||
        'transform-react-remove-prop-types',
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
      cacheDirectory: env === 'development' ? false : resolve(__dirname, '..', '..', '..', 'tmp', 'cache', 'babel-loader-external'),
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,15 +1,15 @@
 | 
				
			||||||
// Note: You must restart bin/webpack-dev-server for changes to take effect
 | 
					// Note: You must restart bin/webpack-dev-server for changes to take effect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const path = require('path');
 | 
				
			||||||
 | 
					const { URL } = require('url');
 | 
				
			||||||
const merge = require('webpack-merge');
 | 
					const merge = require('webpack-merge');
 | 
				
			||||||
 | 
					const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
 | 
				
			||||||
 | 
					const OfflinePlugin = require('offline-plugin');
 | 
				
			||||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
 | 
					const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
 | 
				
			||||||
const CompressionPlugin = require('compression-webpack-plugin');
 | 
					const CompressionPlugin = require('compression-webpack-plugin');
 | 
				
			||||||
const zopfli = require('@gfx/zopfli');
 | 
					const zopfli = require('@gfx/zopfli');
 | 
				
			||||||
const sharedConfig = require('./shared.js');
 | 
					const { output } = require('./configuration');
 | 
				
			||||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
 | 
					const sharedConfig = require('./shared');
 | 
				
			||||||
const OfflinePlugin = require('offline-plugin');
 | 
					 | 
				
			||||||
const { publicPath } = require('./configuration.js');
 | 
					 | 
				
			||||||
const path = require('path');
 | 
					 | 
				
			||||||
const { URL } = require('url');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
let attachmentHost;
 | 
					let attachmentHost;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,15 +28,9 @@ if (process.env.S3_ENABLED === 'true') {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = merge(sharedConfig, {
 | 
					module.exports = merge(sharedConfig, {
 | 
				
			||||||
  mode: 'production',
 | 
					  mode: 'production',
 | 
				
			||||||
 | 
					  devtool: 'source-map',
 | 
				
			||||||
  output: {
 | 
					 | 
				
			||||||
    filename: '[name]-[chunkhash].js',
 | 
					 | 
				
			||||||
    chunkFilename: '[name]-[chunkhash].js',
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  devtool: 'source-map', // separate sourcemap file, suitable for production
 | 
					 | 
				
			||||||
  stats: 'normal',
 | 
					  stats: 'normal',
 | 
				
			||||||
 | 
					  bail: true,
 | 
				
			||||||
  optimization: {
 | 
					  optimization: {
 | 
				
			||||||
    minimize: true,
 | 
					    minimize: true,
 | 
				
			||||||
    minimizer: [
 | 
					    minimizer: [
 | 
				
			||||||
| 
						 | 
					@ -60,10 +54,12 @@ module.exports = merge(sharedConfig, {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  plugins: [
 | 
					  plugins: [
 | 
				
			||||||
    new CompressionPlugin({
 | 
					    new CompressionPlugin({
 | 
				
			||||||
 | 
					      filename: '[path].gz[query]',
 | 
				
			||||||
      algorithm(input, compressionOptions, callback) {
 | 
					      algorithm(input, compressionOptions, callback) {
 | 
				
			||||||
        return zopfli.gzip(input, compressionOptions, callback);
 | 
					        return zopfli.gzip(input, compressionOptions, callback);
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/,
 | 
					      cache: true,
 | 
				
			||||||
 | 
					      test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/,
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
    new BundleAnalyzerPlugin({ // generates report.html and stats.json
 | 
					    new BundleAnalyzerPlugin({ // generates report.html and stats.json
 | 
				
			||||||
      analyzerMode: 'static',
 | 
					      analyzerMode: 'static',
 | 
				
			||||||
| 
						 | 
					@ -76,7 +72,7 @@ module.exports = merge(sharedConfig, {
 | 
				
			||||||
      logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout
 | 
					      logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
    new OfflinePlugin({
 | 
					    new OfflinePlugin({
 | 
				
			||||||
      publicPath: publicPath, // sw.js must be served from the root to avoid scope issues
 | 
					      publicPath: output.publicPath, // sw.js must be served from the root to avoid scope issues
 | 
				
			||||||
      caches: {
 | 
					      caches: {
 | 
				
			||||||
        main: [':rest:'],
 | 
					        main: [':rest:'],
 | 
				
			||||||
        additional: [':externals:'],
 | 
					        additional: [':externals:'],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								config/webpack/rules/babel.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								config/webpack/rules/babel.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					const { join, resolve } = require('path');
 | 
				
			||||||
 | 
					const { env, settings } = require('../configuration');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  test: /\.(js|jsx|mjs)$/,
 | 
				
			||||||
 | 
					  include: [
 | 
				
			||||||
 | 
					    settings.source_path,
 | 
				
			||||||
 | 
					    ...settings.resolved_paths,
 | 
				
			||||||
 | 
					  ].map(p => resolve(p)),
 | 
				
			||||||
 | 
					  exclude: /node_modules/,
 | 
				
			||||||
 | 
					  use: [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      loader: 'babel-loader',
 | 
				
			||||||
 | 
					      options: {
 | 
				
			||||||
 | 
					        cacheDirectory: join(settings.cache_path, 'babel-loader'),
 | 
				
			||||||
 | 
					        cacheCompression: env.NODE_ENV === 'production',
 | 
				
			||||||
 | 
					        compact: env.NODE_ENV === 'production',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,14 @@ module.exports = {
 | 
				
			||||||
  test: /\.s?css$/i,
 | 
					  test: /\.s?css$/i,
 | 
				
			||||||
  use: [
 | 
					  use: [
 | 
				
			||||||
    MiniCssExtractPlugin.loader,
 | 
					    MiniCssExtractPlugin.loader,
 | 
				
			||||||
    'css-loader',
 | 
					    {
 | 
				
			||||||
 | 
					      loader: 'css-loader',
 | 
				
			||||||
 | 
					      options: {
 | 
				
			||||||
 | 
					        sourceMap: true,
 | 
				
			||||||
 | 
					        importLoaders: 2,
 | 
				
			||||||
 | 
					        localIdentName: '[name]__[local]___[hash:base64:5]',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      loader: 'postcss-loader',
 | 
					      loader: 'postcss-loader',
 | 
				
			||||||
      options: {
 | 
					      options: {
 | 
				
			||||||
							
								
								
									
										20
									
								
								config/webpack/rules/file.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								config/webpack/rules/file.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					const { join } = require('path');
 | 
				
			||||||
 | 
					const { settings } = require('../configuration');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  test: new RegExp(`(${settings.static_assets_extensions.join('|')})$`, 'i'),
 | 
				
			||||||
 | 
					  use: [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      loader: 'file-loader',
 | 
				
			||||||
 | 
					      options: {
 | 
				
			||||||
 | 
					        name(file) {
 | 
				
			||||||
 | 
					          if (file.includes(settings.source_path)) {
 | 
				
			||||||
 | 
					            return 'media/[path][name]-[hash].[ext]';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          return 'media/[folder]/[name]-[hash:8].[ext]';
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        context: join(settings.source_path),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										14
									
								
								config/webpack/rules/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								config/webpack/rules/index.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					const babel = require('./babel');
 | 
				
			||||||
 | 
					const css = require('./css');
 | 
				
			||||||
 | 
					const file = require('./file');
 | 
				
			||||||
 | 
					const nodeModules = require('./node_modules');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Webpack loaders are processed in reverse order
 | 
				
			||||||
 | 
					// https://webpack.js.org/concepts/loaders/#loader-features
 | 
				
			||||||
 | 
					// Lastly, process static files using file loader
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  file,
 | 
				
			||||||
 | 
					  css,
 | 
				
			||||||
 | 
					  nodeModules,
 | 
				
			||||||
 | 
					  babel,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										26
									
								
								config/webpack/rules/node_modules.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								config/webpack/rules/node_modules.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					const { join } = require('path');
 | 
				
			||||||
 | 
					const { settings, env } = require('../configuration');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  test: /\.(js|mjs)$/,
 | 
				
			||||||
 | 
					  include: /node_modules/,
 | 
				
			||||||
 | 
					  exclude: /@babel(?:\/|\\{1,2})runtime/,
 | 
				
			||||||
 | 
					  use: [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      loader: 'babel-loader',
 | 
				
			||||||
 | 
					      options: {
 | 
				
			||||||
 | 
					        babelrc: false,
 | 
				
			||||||
 | 
					        presets: [
 | 
				
			||||||
 | 
					          ['@babel/env', { modules: false }],
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        plugins: [
 | 
				
			||||||
 | 
					          'transform-react-remove-prop-types',
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        cacheDirectory: join(settings.cache_path, 'babel-loader-node-modules'),
 | 
				
			||||||
 | 
					        cacheCompression: env.NODE_ENV === 'production',
 | 
				
			||||||
 | 
					        compact: false,
 | 
				
			||||||
 | 
					        sourceMaps: false,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,8 @@ const { sync } = require('glob');
 | 
				
			||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 | 
					const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 | 
				
			||||||
const AssetsManifestPlugin = require('webpack-assets-manifest');
 | 
					const AssetsManifestPlugin = require('webpack-assets-manifest');
 | 
				
			||||||
const extname = require('path-complete-extname');
 | 
					const extname = require('path-complete-extname');
 | 
				
			||||||
const { env, settings, themes, output, loadersDir } = require('./configuration.js');
 | 
					const { env, settings, themes, output } = require('./configuration');
 | 
				
			||||||
 | 
					const rules = require('./rules');
 | 
				
			||||||
const localePackPaths = require('./generateLocalePacks');
 | 
					const localePackPaths = require('./generateLocalePacks');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const extensionGlob = `**/*{${settings.extensions.join(',')}}*`;
 | 
					const extensionGlob = `**/*{${settings.extensions.join(',')}}*`;
 | 
				
			||||||
| 
						 | 
					@ -33,8 +34,9 @@ module.exports = {
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  output: {
 | 
					  output: {
 | 
				
			||||||
    filename: '[name].js',
 | 
					    filename: 'js/[name]-[chunkhash].js',
 | 
				
			||||||
    chunkFilename: '[name].js',
 | 
					    chunkFilename: 'js/[name]-[chunkhash].chunk.js',
 | 
				
			||||||
 | 
					    hotUpdateChunkFilename: 'js/[id]-[hash].hot-update.js',
 | 
				
			||||||
    path: output.path,
 | 
					    path: output.path,
 | 
				
			||||||
    publicPath: output.publicPath,
 | 
					    publicPath: output.publicPath,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
| 
						 | 
					@ -60,7 +62,7 @@ module.exports = {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  module: {
 | 
					  module: {
 | 
				
			||||||
    rules: sync(join(loadersDir, '*.js')).map(loader => require(loader)),
 | 
					    rules: Object.keys(rules).map(key => rules[key]),
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  plugins: [
 | 
					  plugins: [
 | 
				
			||||||
| 
						 | 
					@ -73,11 +75,14 @@ module.exports = {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    new MiniCssExtractPlugin({
 | 
					    new MiniCssExtractPlugin({
 | 
				
			||||||
      filename: env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css',
 | 
					      filename: 'css/[name]-[contenthash:8].css',
 | 
				
			||||||
 | 
					      chunkFilename: 'css/[name]-[contenthash:8].chunk.css',
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
    new AssetsManifestPlugin({
 | 
					    new AssetsManifestPlugin({
 | 
				
			||||||
      publicPath: true,
 | 
					      integrity: false,
 | 
				
			||||||
 | 
					      entrypoints: true,
 | 
				
			||||||
      writeToDisk: true,
 | 
					      writeToDisk: true,
 | 
				
			||||||
 | 
					      publicPath: true,
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,11 @@
 | 
				
			||||||
default: &default
 | 
					default: &default
 | 
				
			||||||
  source_path: app/javascript
 | 
					  source_path: app/javascript
 | 
				
			||||||
  source_entry_path: packs
 | 
					  source_entry_path: packs
 | 
				
			||||||
 | 
					  public_root_path: public
 | 
				
			||||||
  public_output_path: packs
 | 
					  public_output_path: packs
 | 
				
			||||||
  cache_path: tmp/cache/webpacker
 | 
					  cache_path: tmp/cache/webpacker
 | 
				
			||||||
 | 
					  check_yarn_integrity: false
 | 
				
			||||||
 | 
					  webpack_compile_output: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Additional paths webpack should lookup modules
 | 
					  # Additional paths webpack should lookup modules
 | 
				
			||||||
  # ['app/assets', 'engine/foo/app/assets']
 | 
					  # ['app/assets', 'engine/foo/app/assets']
 | 
				
			||||||
| 
						 | 
					@ -13,11 +16,31 @@ default: &default
 | 
				
			||||||
  # Reload manifest.json on all requests so we reload latest compiled packs
 | 
					  # Reload manifest.json on all requests so we reload latest compiled packs
 | 
				
			||||||
  cache_manifest: false
 | 
					  cache_manifest: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Extract and emit a css file
 | 
				
			||||||
 | 
					  extract_css: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static_assets_extensions:
 | 
				
			||||||
 | 
					    - .jpg
 | 
				
			||||||
 | 
					    - .jpeg
 | 
				
			||||||
 | 
					    - .png
 | 
				
			||||||
 | 
					    - .tiff
 | 
				
			||||||
 | 
					    - .ico
 | 
				
			||||||
 | 
					    - .svg
 | 
				
			||||||
 | 
					    - .eot
 | 
				
			||||||
 | 
					    - .otf
 | 
				
			||||||
 | 
					    - .ttf
 | 
				
			||||||
 | 
					    - .woff
 | 
				
			||||||
 | 
					    - .woff2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
 | 
					    - .mjs
 | 
				
			||||||
    - .js
 | 
					    - .js
 | 
				
			||||||
    - .sass
 | 
					    - .sass
 | 
				
			||||||
    - .scss
 | 
					    - .scss
 | 
				
			||||||
    - .css
 | 
					    - .css
 | 
				
			||||||
 | 
					    - .module.sass
 | 
				
			||||||
 | 
					    - .module.scss
 | 
				
			||||||
 | 
					    - .module.css
 | 
				
			||||||
    - .png
 | 
					    - .png
 | 
				
			||||||
    - .svg
 | 
					    - .svg
 | 
				
			||||||
    - .gif
 | 
					    - .gif
 | 
				
			||||||
| 
						 | 
					@ -26,24 +49,38 @@ default: &default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
development:
 | 
					development:
 | 
				
			||||||
  <<: *default
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  compile: true
 | 
					  compile: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Reference: https://webpack.js.org/configuration/dev-server/
 | 
				
			||||||
  dev_server:
 | 
					  dev_server:
 | 
				
			||||||
 | 
					    https: false
 | 
				
			||||||
    host: localhost
 | 
					    host: localhost
 | 
				
			||||||
    port: 3035
 | 
					    port: 3035
 | 
				
			||||||
 | 
					    public: localhost:3035
 | 
				
			||||||
    hmr: false
 | 
					    hmr: false
 | 
				
			||||||
    https: false
 | 
					    # Inline should be set to true if using HMR
 | 
				
			||||||
 | 
					    inline: true
 | 
				
			||||||
 | 
					    overlay: true
 | 
				
			||||||
 | 
					    compress: true
 | 
				
			||||||
 | 
					    disable_host_check: true
 | 
				
			||||||
 | 
					    use_local_ip: false
 | 
				
			||||||
 | 
					    quiet: false
 | 
				
			||||||
 | 
					    headers:
 | 
				
			||||||
 | 
					      'Access-Control-Allow-Origin': '*'
 | 
				
			||||||
 | 
					    watch_options:
 | 
				
			||||||
 | 
					      ignored: '**/node_modules/**'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
  <<: *default
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Compile test packs to a separate directory
 | 
					 | 
				
			||||||
  public_output_path: packs-test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # CircleCI precompiles packs prior to running the tests.
 | 
					  # CircleCI precompiles packs prior to running the tests.
 | 
				
			||||||
  # Also avoids race conditions in parallel_tests.
 | 
					  # Also avoids race conditions in parallel_tests.
 | 
				
			||||||
  compile: false
 | 
					  compile: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Compile test packs to a separate directory
 | 
				
			||||||
 | 
					  public_output_path: packs-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
production:
 | 
					production:
 | 
				
			||||||
  <<: *default
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,29 +0,0 @@
 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
  projects: [
 | 
					 | 
				
			||||||
    '<rootDir>/app/javascript/mastodon',
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  testPathIgnorePatterns: [
 | 
					 | 
				
			||||||
    '<rootDir>/node_modules/',
 | 
					 | 
				
			||||||
    '<rootDir>/vendor/',
 | 
					 | 
				
			||||||
    '<rootDir>/config/',
 | 
					 | 
				
			||||||
    '<rootDir>/log/',
 | 
					 | 
				
			||||||
    '<rootDir>/public/',
 | 
					 | 
				
			||||||
    '<rootDir>/tmp/',
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  setupFiles: [
 | 
					 | 
				
			||||||
    'raf/polyfill',
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  setupTestFrameworkScriptFile: '<rootDir>/app/javascript/mastodon/test_setup.js',
 | 
					 | 
				
			||||||
  collectCoverageFrom: [
 | 
					 | 
				
			||||||
    'app/javascript/mastodon/**/*.js',
 | 
					 | 
				
			||||||
    '!app/javascript/mastodon/features/emoji/emoji_compressed.js',
 | 
					 | 
				
			||||||
    '!app/javascript/mastodon/locales/locale-data/*.js',
 | 
					 | 
				
			||||||
    '!app/javascript/mastodon/service_worker/entry.js',
 | 
					 | 
				
			||||||
    '!app/javascript/mastodon/test_setup.js',
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  coverageDirectory: '<rootDir>/coverage',
 | 
					 | 
				
			||||||
  moduleDirectories: [
 | 
					 | 
				
			||||||
    '<rootDir>/node_modules',
 | 
					 | 
				
			||||||
    '<rootDir>/app/javascript',
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
							
								
								
									
										80
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								package.json
									
									
									
									
									
								
							| 
						 | 
					@ -24,36 +24,66 @@
 | 
				
			||||||
    "iOS >= 9",
 | 
					    "iOS >= 9",
 | 
				
			||||||
    "not dead"
 | 
					    "not dead"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
 | 
					  "jest": {
 | 
				
			||||||
 | 
					    "projects": [
 | 
				
			||||||
 | 
					      "<rootDir>/app/javascript/mastodon"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "testPathIgnorePatterns": [
 | 
				
			||||||
 | 
					      "<rootDir>/node_modules/",
 | 
				
			||||||
 | 
					      "<rootDir>/vendor/",
 | 
				
			||||||
 | 
					      "<rootDir>/config/",
 | 
				
			||||||
 | 
					      "<rootDir>/log/",
 | 
				
			||||||
 | 
					      "<rootDir>/public/",
 | 
				
			||||||
 | 
					      "<rootDir>/tmp/"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "setupFiles": [
 | 
				
			||||||
 | 
					      "raf/polyfill"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "setupFilesAfterEnv": [
 | 
				
			||||||
 | 
					      "<rootDir>/app/javascript/mastodon/test_setup.js"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "collectCoverageFrom": [
 | 
				
			||||||
 | 
					      "app/javascript/mastodon/**/*.js",
 | 
				
			||||||
 | 
					      "!app/javascript/mastodon/features/emoji/emoji_compressed.js",
 | 
				
			||||||
 | 
					      "!app/javascript/mastodon/locales/locale-data/*.js",
 | 
				
			||||||
 | 
					      "!app/javascript/mastodon/service_worker/entry.js",
 | 
				
			||||||
 | 
					      "!app/javascript/mastodon/test_setup.js"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "coverageDirectory": "<rootDir>/coverage",
 | 
				
			||||||
 | 
					    "moduleDirectories": [
 | 
				
			||||||
 | 
					      "<rootDir>/node_modules",
 | 
				
			||||||
 | 
					      "<rootDir>/app/javascript"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@babel/core": "^7.2.2",
 | 
					    "@babel/core": "^7.3.4",
 | 
				
			||||||
    "@babel/plugin-proposal-class-properties": "^7.2.3",
 | 
					    "@babel/plugin-proposal-class-properties": "^7.3.4",
 | 
				
			||||||
    "@babel/plugin-proposal-decorators": "^7.2.3",
 | 
					    "@babel/plugin-proposal-decorators": "^7.3.0",
 | 
				
			||||||
    "@babel/plugin-proposal-object-rest-spread": "^7.2.0",
 | 
					    "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
 | 
				
			||||||
    "@babel/plugin-syntax-dynamic-import": "^7.2.0",
 | 
					    "@babel/plugin-syntax-dynamic-import": "^7.2.0",
 | 
				
			||||||
    "@babel/plugin-transform-react-inline-elements": "^7.2.0",
 | 
					    "@babel/plugin-transform-react-inline-elements": "^7.2.0",
 | 
				
			||||||
    "@babel/plugin-transform-react-jsx-self": "^7.2.0",
 | 
					    "@babel/plugin-transform-react-jsx-self": "^7.2.0",
 | 
				
			||||||
    "@babel/plugin-transform-react-jsx-source": "^7.2.0",
 | 
					    "@babel/plugin-transform-react-jsx-source": "^7.2.0",
 | 
				
			||||||
    "@babel/plugin-transform-runtime": "^7.2.0",
 | 
					    "@babel/plugin-transform-runtime": "^7.3.4",
 | 
				
			||||||
    "@babel/preset-env": "^7.2.3",
 | 
					    "@babel/preset-env": "^7.3.4",
 | 
				
			||||||
    "@babel/preset-react": "^7.0.0",
 | 
					    "@babel/preset-react": "^7.0.0",
 | 
				
			||||||
    "@babel/runtime": "^7.2.0",
 | 
					    "@babel/runtime": "^7.3.4",
 | 
				
			||||||
    "@gfx/zopfli": "^1.0.10",
 | 
					    "@gfx/zopfli": "^1.0.11",
 | 
				
			||||||
    "array-includes": "^3.0.3",
 | 
					    "array-includes": "^3.0.3",
 | 
				
			||||||
    "autoprefixer": "^9.4.3",
 | 
					    "autoprefixer": "^9.4.10",
 | 
				
			||||||
    "axios": "^0.18.0",
 | 
					    "axios": "^0.18.0",
 | 
				
			||||||
    "babel-core": "^7.0.0-bridge.0",
 | 
					    "babel-loader": "^8.0.5",
 | 
				
			||||||
    "babel-loader": "^8.0.4",
 | 
					 | 
				
			||||||
    "babel-plugin-lodash": "^3.3.4",
 | 
					    "babel-plugin-lodash": "^3.3.4",
 | 
				
			||||||
    "babel-plugin-preval": "^3.0.1",
 | 
					    "babel-plugin-preval": "^3.0.1",
 | 
				
			||||||
    "babel-plugin-react-intl": "^3.0.1",
 | 
					    "babel-plugin-react-intl": "^3.0.1",
 | 
				
			||||||
    "babel-plugin-transform-react-remove-prop-types": "^0.4.21",
 | 
					    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
 | 
				
			||||||
    "babel-runtime": "^6.26.0",
 | 
					    "babel-runtime": "^6.26.0",
 | 
				
			||||||
    "classnames": "^2.2.5",
 | 
					    "classnames": "^2.2.5",
 | 
				
			||||||
    "compression-webpack-plugin": "^2.0.0",
 | 
					    "compression-webpack-plugin": "^2.0.0",
 | 
				
			||||||
    "cross-env": "^5.1.4",
 | 
					    "cross-env": "^5.1.4",
 | 
				
			||||||
    "css-loader": "^2.1.0",
 | 
					    "css-loader": "^2.1.1",
 | 
				
			||||||
    "cssnano": "^4.1.8",
 | 
					    "cssnano": "^4.1.10",
 | 
				
			||||||
    "detect-passive-events": "^1.0.2",
 | 
					    "detect-passive-events": "^1.0.2",
 | 
				
			||||||
    "dotenv": "^6.2.0",
 | 
					    "dotenv": "^6.2.0",
 | 
				
			||||||
    "emoji-mart": "Gargron/emoji-mart#build",
 | 
					    "emoji-mart": "Gargron/emoji-mart#build",
 | 
				
			||||||
| 
						 | 
					@ -119,26 +149,25 @@
 | 
				
			||||||
    "requestidlecallback": "^0.3.0",
 | 
					    "requestidlecallback": "^0.3.0",
 | 
				
			||||||
    "reselect": "^4.0.0",
 | 
					    "reselect": "^4.0.0",
 | 
				
			||||||
    "rimraf": "^2.6.1",
 | 
					    "rimraf": "^2.6.1",
 | 
				
			||||||
    "sass": "^1.15.2",
 | 
					    "sass": "^1.17.2",
 | 
				
			||||||
    "sass-loader": "^7.0.3",
 | 
					    "sass-loader": "^7.0.3",
 | 
				
			||||||
    "stringz": "^1.0.0",
 | 
					    "stringz": "^1.0.0",
 | 
				
			||||||
    "style-loader": "0.23.1",
 | 
					 | 
				
			||||||
    "substring-trie": "^1.0.2",
 | 
					    "substring-trie": "^1.0.2",
 | 
				
			||||||
    "throng": "^4.0.0",
 | 
					    "throng": "^4.0.0",
 | 
				
			||||||
    "tiny-queue": "^0.2.1",
 | 
					    "tiny-queue": "^0.2.1",
 | 
				
			||||||
    "uglifyjs-webpack-plugin": "^2.1.1",
 | 
					    "uglifyjs-webpack-plugin": "^2.1.2",
 | 
				
			||||||
    "uuid": "^3.1.0",
 | 
					    "uuid": "^3.1.0",
 | 
				
			||||||
    "uws": "10.148.0",
 | 
					    "uws": "10.148.0",
 | 
				
			||||||
    "webpack": "^4.28.3",
 | 
					    "webpack": "^4.29.6",
 | 
				
			||||||
    "webpack-assets-manifest": "^3.1.1",
 | 
					    "webpack-assets-manifest": "^3.1.1",
 | 
				
			||||||
    "webpack-bundle-analyzer": "^3.0.3",
 | 
					    "webpack-bundle-analyzer": "^3.1.0",
 | 
				
			||||||
    "webpack-cli": "^3.1.2",
 | 
					    "webpack-cli": "^3.2.3",
 | 
				
			||||||
    "webpack-merge": "^4.1.5",
 | 
					    "webpack-merge": "^4.2.1",
 | 
				
			||||||
    "websocket.js": "^0.1.12"
 | 
					    "websocket.js": "^0.1.12"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "babel-eslint": "^10.0.1",
 | 
					    "babel-eslint": "^10.0.1",
 | 
				
			||||||
    "babel-jest": "^23.6.0",
 | 
					    "babel-jest": "^24.5.0",
 | 
				
			||||||
    "enzyme": "^3.8.0",
 | 
					    "enzyme": "^3.8.0",
 | 
				
			||||||
    "enzyme-adapter-react-16": "^1.7.1",
 | 
					    "enzyme-adapter-react-16": "^1.7.1",
 | 
				
			||||||
    "eslint": "^5.11.1",
 | 
					    "eslint": "^5.11.1",
 | 
				
			||||||
| 
						 | 
					@ -146,14 +175,11 @@
 | 
				
			||||||
    "eslint-plugin-jsx-a11y": "~6.1.2",
 | 
					    "eslint-plugin-jsx-a11y": "~6.1.2",
 | 
				
			||||||
    "eslint-plugin-promise": "~4.0.1",
 | 
					    "eslint-plugin-promise": "~4.0.1",
 | 
				
			||||||
    "eslint-plugin-react": "~7.12.1",
 | 
					    "eslint-plugin-react": "~7.12.1",
 | 
				
			||||||
    "jest": "^23.6.0",
 | 
					    "jest": "^24.5.0",
 | 
				
			||||||
    "raf": "^3.4.1",
 | 
					    "raf": "^3.4.1",
 | 
				
			||||||
    "react-intl-translations-manager": "^5.0.3",
 | 
					    "react-intl-translations-manager": "^5.0.3",
 | 
				
			||||||
    "react-test-renderer": "^16.7.0",
 | 
					    "react-test-renderer": "^16.7.0",
 | 
				
			||||||
    "webpack-dev-server": "^3.1.14",
 | 
					    "webpack-dev-server": "^3.2.1",
 | 
				
			||||||
    "yargs": "^12.0.5"
 | 
					    "yargs": "^12.0.5"
 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "optionalDependencies": {
 | 
					 | 
				
			||||||
    "fsevents": "*"
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue