From afa73e06e3150c2be2ee8d43a4c5712d8939e56d Mon Sep 17 00:00:00 2001 From: Mac Siri Date: Thu, 25 Jan 2024 15:29:21 -0500 Subject: [PATCH] Replace Webpacker with Esbuild (#20470) * Migrate to esbuild WIP * Add exclude * Remove redundant file * Move file * Move to javascript_include_tag * Lint fix * WIP * WIP * Add watch mode to esbuild WIP * Get jest working * Remove babel * Revert "Remove babel" This reverts commit 6da35260aa19d6f97f586deb66c0ecaf48433b73. * More WIP * Got image to load * WIP * Resolve audit * Lint fix * WIP * Fix jest spec * [CI] Remove asset-restore for test build stage * Production compliant * Temp disable sourcemap * Update glob * Add esbuild helper to stimulus * Import fragment * Temp disable coverage to see failing tests * Fix broken spec * Address lint * Set proper es6 target * Use esbuild for everything * wait what * Revert "Set proper es6 target" This reverts commit 98f5278093421baa8ffe2ca580845b01c1a1eadf. * Revert "Use esbuild for everything" This reverts commit 0ac46738f07ffcb6af095ccb1ffa5e439b7fefa3. * Replace uglifier with terser * New compiled assets version * Remvoe honeybadger-io/webpack * Remove cypress coverage checks for now * Update jsconfig.json * Update docker-compose * Remove public/packs-test from ci cache --- .github/workflows/ci.yml | 44 +- .gitignore | 3 + Gemfile | 4 +- Gemfile.lock | 18 +- Procfile.dev | 2 +- app/assets/builds/.keep | 0 app/assets/config/manifest.js | 1 + .../admin/controllers/snackbar_controller.js | 4 +- .../billboard/locations/templates.jsx | 2 +- .../TagAutocompleteSelection.jsx | 2 +- app/javascript/packs/admin.js | 5 +- .../packs/{base.jsx => application.jsx} | 0 .../components/defaultSelectionTemplate.jsx | 4 +- .../codeFullscreenModeSwitcher.test.js | 20 +- .../utilities/codeFullscreenModeSwitcher.js | 4 +- app/views/admin/articles/index.html.erb | 2 +- app/views/admin/billboards/_form.html.erb | 2 +- .../admin/creator_settings/_form.html.erb | 2 +- .../admin/gdpr_delete_requests/index.html.erb | 2 +- app/views/admin/invitations/index.html.erb | 2 +- .../admin/listing_categories/_form.html.erb | 2 +- app/views/admin/organizations/show.html.erb | 2 +- app/views/admin/overview/index.html.erb | 2 +- .../settings/forms/_monetization.html.erb | 2 +- app/views/admin/settings/forms/_smtp.html.erb | 2 +- .../settings/forms/_user_experience.html.erb | 2 +- app/views/admin/settings/show.html.erb | 2 +- .../shared/_flag_reactions_table.html.erb | 2 +- app/views/admin/tags/_form.html.erb | 2 +- app/views/admin/tags/edit.html.erb | 2 +- app/views/admin/users/index.html.erb | 2 +- .../admin/users/index/_controls.html.erb | 2 +- .../users/show/profile/_actions.html.erb | 2 +- app/views/articles/_sidebar.html.erb | 2 +- app/views/articles/edit.html.erb | 2 +- app/views/articles/index.html.erb | 4 +- app/views/articles/new.html.erb | 2 +- app/views/articles/show.html.erb | 6 +- app/views/articles/stats.html.erb | 2 +- app/views/collections/show.html.erb | 2 +- app/views/comments/_form.html.erb | 2 +- app/views/comments/edit.html.erb | 2 +- app/views/comments/index.html.erb | 6 +- .../dashboards/_dashboard_article.html.erb | 2 +- app/views/dashboards/_tags.html.erb | 2 +- app/views/dashboards/analytics.erb | 2 +- app/views/dashboards/show.html.erb | 5 +- app/views/devise/confirmations/new.html.erb | 2 +- app/views/layouts/_nav_menu.html.erb | 2 +- app/views/layouts/_signup_modal.html.erb | 2 +- app/views/layouts/admin.html.erb | 4 +- app/views/layouts/application.html.erb | 6 +- app/views/listings/_form.html.erb | 2 +- app/views/listings/dashboard.html.erb | 2 +- app/views/listings/index.html.erb | 2 +- app/views/listings/new.html.erb | 2 +- app/views/moderations/actions_panel.html.erb | 2 +- app/views/moderations/index.html.erb | 2 +- app/views/moderations/mod.html.erb | 2 +- app/views/notifications/index.html.erb | 4 +- app/views/onboardings/show.html.erb | 2 +- app/views/organizations/members.html.erb | 2 +- app/views/organizations/show.html.erb | 2 +- app/views/podcast_episodes/index.html.erb | 2 +- app/views/podcast_episodes/show.html.erb | 4 +- app/views/podcasts/_form.html.erb | 2 +- app/views/reading_list_items/index.html.erb | 2 +- app/views/shared/_logo_design.html.erb | 2 +- .../_forem_creator_signup.html.erb | 2 +- app/views/stories/_main_stories_feed.html.erb | 2 +- .../stories/articles_search/index.html.erb | 2 +- .../_sidebar_additional.html.erb | 2 +- .../stories/tagged_articles/index.html.erb | 2 +- app/views/tags/edit.html.erb | 2 +- app/views/tags/index.html.erb | 2 +- app/views/users/_customization.html.erb | 2 +- ..._integrations_github_repositories.html.erb | 2 +- app/views/users/_org_non_member.html.erb | 2 +- app/views/users/_profile.html.erb | 2 +- app/views/users/show.html.erb | 2 +- babel.config.js | 1 - bin/dev | 11 + bin/webpack | 19 - bin/webpack-dev-server | 19 - config/environments/production.rb | 2 +- .../initializers/content_security_policy.rb | 6 - ...ts_uglifier_with_source_maps_compressor.rb | 51 - config/webpack/development.js | 27 - config/webpack/environment.js | 61 - config/webpack/loaders/erb.js | 16 - config/webpack/production.js | 7 - config/webpack/test.js | 11 - config/webpacker.yml | 93 - .../podcastFlows/followPodcast.spec.js | 6 +- docker-compose.yml | 21 +- esbuild.config.mjs | 39 + jsconfig.json | 15 +- package.json | 13 +- vendor/cache/jsbundling-rails-1.2.1.gem | Bin 0 -> 10752 bytes vendor/cache/rack-proxy-0.7.6.gem | Bin 14848 -> 0 bytes vendor/cache/semantic_range-3.0.0.gem | Bin 11776 -> 0 bytes vendor/cache/terser-1.1.20.gem | Bin 0 -> 175616 bytes vendor/cache/uglifier-4.2.0.gem | Bin 198144 -> 0 bytes vendor/cache/webpacker-5.4.4.gem | Bin 234496 -> 0 bytes yarn.lock | 2406 +++-------------- 105 files changed, 593 insertions(+), 2497 deletions(-) create mode 100644 app/assets/builds/.keep rename app/javascript/packs/{base.jsx => application.jsx} (100%) create mode 100755 bin/dev delete mode 100755 bin/webpack delete mode 100755 bin/webpack-dev-server delete mode 100644 config/initializers/sprockets_uglifier_with_source_maps_compressor.rb delete mode 100644 config/webpack/development.js delete mode 100644 config/webpack/environment.js delete mode 100644 config/webpack/loaders/erb.js delete mode 100644 config/webpack/production.js delete mode 100644 config/webpack/test.js delete mode 100644 config/webpacker.yml create mode 100644 esbuild.config.mjs create mode 100644 vendor/cache/jsbundling-rails-1.2.1.gem delete mode 100644 vendor/cache/rack-proxy-0.7.6.gem delete mode 100644 vendor/cache/semantic_range-3.0.0.gem create mode 100644 vendor/cache/terser-1.1.20.gem delete mode 100644 vendor/cache/uglifier-4.2.0.gem delete mode 100644 vendor/cache/webpacker-5.4.4.gem diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 449f780c2..480179900 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,10 +73,9 @@ jobs: fail-on-cache-miss: false path: | public/assets - public/packs-test tmp/cache/webpacker - key: ${{ runner.os }}-compiled-assets-v2-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} - restore-keys: ${{ runner.os }}-compiled-assets-v2- + key: ${{ runner.os }}-compiled-assets-v3-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} + restore-keys: ${{ runner.os }}-compiled-assets-v3- - name: setup ruby uses: ruby/setup-ruby@v1 with: @@ -163,10 +162,9 @@ jobs: fail-on-cache-miss: true path: | public/assets - public/packs-test tmp/cache/webpacker - key: ${{ runner.os }}-compiled-assets-v2-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} - restore-keys: ${{ runner.os }}-compiled-assets-v2- + key: ${{ runner.os }}-compiled-assets-v3-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} + restore-keys: ${{ runner.os }}-compiled-assets-v3- - name: Restore node_modules uses: actions/cache/restore@v3 with: @@ -288,16 +286,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Restore compiled assets - uses: actions/cache/restore@v3 - with: - fail-on-cache-miss: true - path: | - public/assets - public/packs-test - tmp/cache/webpacker - key: ${{ runner.os }}-compiled-assets-v2-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} - restore-keys: ${{ runner.os }}-compiled-assets-v2- - name: Restore node_modules uses: actions/cache/restore@v3 with: @@ -348,10 +336,9 @@ jobs: fail-on-cache-miss: true path: | public/assets - public/packs-test tmp/cache/webpacker - key: ${{ runner.os }}-compiled-assets-v2-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} - restore-keys: ${{ runner.os }}-compiled-assets-v2- + key: ${{ runner.os }}-compiled-assets-v3-${{ hashFiles('app/assets/**', 'app/javascript/**', 'config/webpack/**', 'config/webpacker.yml', '**/package.json', '**/yarn.lock', '**/babel.config.js') }} + restore-keys: ${{ runner.os }}-compiled-assets-v3- - name: Restore node_modules uses: actions/cache/restore@v3 with: @@ -394,15 +381,6 @@ jobs: path: | tmp/cypress_screenshots cypress/logs - - name: rename folder - run: | - rm -rf coverage/cypress/lcov-report - mv coverage/cypress coverage/cypress-${{ matrix.ci_node_index }} - - name: Upload test coverage result - uses: actions/upload-artifact@v3 - with: - name: coverage - path: coverage/ - name: Upload test results to BuildPulse for flaky test detection if: '!cancelled()' # Run this step even when the tests fail. Skip if the workflow is cancelled. uses: Workshop64/buildpulse-action@master @@ -424,7 +402,6 @@ jobs: - run: | mkdir coverage coverage/simplecov coverage/cypress mv simplecov-* coverage/simplecov - mv cypress-* coverage/cypress mv jest coverage/jest - uses: Wandalen/wretry.action@master with: @@ -444,15 +421,6 @@ jobs: fail_ci_if_error: ${{ github.ref != 'refs/heads/main' }} attempt_limit: 5 attempt_delay: 60000 - - uses: Wandalen/wretry.action@master - with: - action: codecov/codecov-action@v3 - with: | - flags: cypress, javascript - directory: coverage/cypress - fail_ci_if_error: ${{ github.ref != 'refs/heads/main' }} - attempt_limit: 5 - attempt_delay: 60000 CI-status-report: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 1536400f8..046b2a376 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,6 @@ doc/ # spec reports /spec/reports /junit.xml + +/app/assets/builds/* +!/app/assets/builds/.keep diff --git a/Gemfile b/Gemfile index e11c2c961..15cf95020 100644 --- a/Gemfile +++ b/Gemfile @@ -55,6 +55,7 @@ gem "imgproxy", "~> 2.1" # A gem that easily generates imgproxy URLs for your im gem "inline_svg", "~> 1.8" # Embed SVG documents in your Rails views and style them with CSS gem "jbuilder", "~> 2.11" # Create JSON structures via a Builder-style DSL gem "js-routes", "~> 2.2" # Brings Rails named routes to javascript +gem "jsbundling-rails", "~> 1.2" # A Rails plugin to bundle JavaScript gem "jsonapi-serializer", "~> 2.2" # Serializer for Ruby objects gem "kaminari", "~> 1.2" # A Scope & Engine based, clean, powerful, customizable and sophisticated paginator gem "katex", "~> 0.9.0" # This rubygem enables you to render TeX math to HTML using KaTeX. It uses ExecJS under the hood @@ -106,13 +107,12 @@ gem "staccato", "~> 0.5" # Ruby Google Analytics Measurement gem "sterile", "~> 1.0" # Transliterate Unicode and Latin1 text to 7-bit ASCII for URLs gem "stripe", "~> 5.55" # Ruby library for the Stripe API gem "strong_migrations", "~> 1.2" # Catch unsafe migrations +gem "terser", "~> 1.1" # Terser is a Ruby wrapper for the terser JavaScript parser and minifier gem "twitter", "~> 7.0" # A Ruby interface to the Twitter API -gem "uglifier", "~> 4.2" # Uglifier minifies JavaScript files gem "validate_url", "~> 1.0" # Library for validating urls in Rails gem "vault", "~> 0.17" # Used to store secrets gem "warning", "~> 1.3" # Adds custom processing for warnings, including the ability to ignore specific warning messages gem "wcag_color_contrast", "~> 0.1" # Detect contrast of colors to determine readability and a11y. -gem "webpacker", "~> 5.4.3" # Use webpack to manage app-like JavaScript modules in Rails group :development do gem "better_errors", "~> 2.9" # Provides a better error page for Rails and other Rack apps diff --git a/Gemfile.lock b/Gemfile.lock index 6d7ed6838..d167e6a2f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -430,6 +430,8 @@ GEM sass (>= 3.2) js-routes (2.2.8) railties (>= 4) + jsbundling-rails (1.2.1) + railties (>= 6.0.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) @@ -633,8 +635,6 @@ GEM rack rack-protection (3.1.0) rack (~> 2.2, >= 2.2.4) - rack-proxy (0.7.6) - rack rack-test (2.1.0) rack (>= 1.3) rack-timeout (0.6.3) @@ -825,7 +825,6 @@ GEM addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) sax-machine (1.3.2) - semantic_range (3.0.0) sexp_processor (4.16.1) shellany (0.0.1) shoulda-matchers (5.3.0) @@ -897,6 +896,8 @@ GEM activerecord (>= 5.2) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) + terser (1.1.20) + execjs (>= 0.3.0, < 3) test-prof (1.3.1) thor (1.3.0) thread (0.2.2) @@ -917,8 +918,6 @@ GEM simple_oauth (~> 0.3.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - uglifier (4.2.0) - execjs (>= 0.3.0, < 3) unaccent (0.4.0) unf (0.1.4) unf_ext @@ -945,11 +944,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webpacker (5.4.4) - activesupport (>= 5.2) - rack-proxy (>= 0.6.1) - railties (>= 5.2) - semantic_range (>= 2.3.0) webpush (1.1.0) hkdf (~> 0.2) jwt (~> 2.0) @@ -1044,6 +1038,7 @@ DEPENDENCIES inline_svg (~> 1.8) jbuilder (~> 2.11) js-routes (~> 2.2) + jsbundling-rails (~> 1.2) jsonapi-serializer (~> 2.2) kaminari (~> 1.2) katex (~> 0.9.0) @@ -1118,10 +1113,10 @@ DEPENDENCIES stripe (~> 5.55) stripe-ruby-mock (= 3.1.0.rc3) strong_migrations (~> 1.2) + terser (~> 1.1) test-prof (~> 1.0) timecop (~> 0.9) twitter (~> 7.0) - uglifier (~> 4.2) validate_url (~> 1.0) vault (~> 0.17) vcr (~> 6.1) @@ -1129,7 +1124,6 @@ DEPENDENCIES wcag_color_contrast (~> 0.1) web-console (~> 4.2) webmock (~> 3.17) - webpacker (~> 5.4.3) with_model (~> 2.1.7) yard (~> 0.9) yard-activerecord (~> 0.0) diff --git a/Procfile.dev b/Procfile.dev index 18d7c1e49..e9e055e81 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,3 +1,3 @@ web: bin/rails s -p 3000 -b 0.0.0.0 -webpacker: ./bin/webpack-dev-server sidekiq: bundle exec sidekiq +js: yarn build --watch diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index 1398bb527..b6fd47aaf 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -5,3 +5,4 @@ //= link s3_direct_upload.js //= link katex.css //= link icon.png +//= link_tree ../builds diff --git a/app/javascript/admin/controllers/snackbar_controller.js b/app/javascript/admin/controllers/snackbar_controller.js index 316af6c9e..1e6b721fe 100644 --- a/app/javascript/admin/controllers/snackbar_controller.js +++ b/app/javascript/admin/controllers/snackbar_controller.js @@ -8,7 +8,7 @@ export default class SnackbarController extends Controller { const [{ h, render }, { Snackbar }] = await Promise.all([ import('preact'), // eslint-disable-next-line import/no-unresolved - import('Snackbar'), + import('../../Snackbar'), ]); render(, this.snackZoneTarget); @@ -25,7 +25,7 @@ export default class SnackbarController extends Controller { const { message, addCloseButton = false } = event.detail; // eslint-disable-next-line import/no-unresolved - const { addSnackbarItem } = await import('Snackbar'); + const { addSnackbarItem } = await import('../../Snackbar'); addSnackbarItem({ message, addCloseButton }); } } diff --git a/app/javascript/billboard/locations/templates.jsx b/app/javascript/billboard/locations/templates.jsx index 440705d77..1493f8583 100644 --- a/app/javascript/billboard/locations/templates.jsx +++ b/app/javascript/billboard/locations/templates.jsx @@ -1,7 +1,7 @@ import { h } from 'preact'; import { useCallback } from 'preact/hooks'; import { ButtonNew as Button, Icon } from '@crayons'; -import { Close } from '@images/x.svg'; +import Close from '@images/x.svg'; /** * Higher-order component that returns a template responsible for the layout of diff --git a/app/javascript/crayons/MultiSelectAutocomplete/TagAutocompleteSelection.jsx b/app/javascript/crayons/MultiSelectAutocomplete/TagAutocompleteSelection.jsx index 2e4f556d9..f536425ab 100644 --- a/app/javascript/crayons/MultiSelectAutocomplete/TagAutocompleteSelection.jsx +++ b/app/javascript/crayons/MultiSelectAutocomplete/TagAutocompleteSelection.jsx @@ -1,7 +1,7 @@ import { h } from 'preact'; import PropTypes from 'prop-types'; import { ButtonNew as Button, Icon } from '@crayons'; -import { Close } from '@images/x.svg'; +import Close from '@images/x.svg'; /** * Responsible for the layout of a tag autocomplete selected item in the article form diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index dd239958c..287a2d907 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -1,5 +1,5 @@ import { Application } from '@hotwired/stimulus'; -import { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers'; +import { definitions } from 'stimulus:../admin/controllers'; // eslint-disable-line import/no-unresolved import Rails from '@rails/ujs'; import 'focus-visible'; @@ -11,5 +11,4 @@ Rails.start(); // section of the application. const application = Application.start(); -const context = require.context('admin/controllers', true, /.js$/); -application.load(definitionsFromContext(context)); +application.load(definitions); diff --git a/app/javascript/packs/base.jsx b/app/javascript/packs/application.jsx similarity index 100% rename from app/javascript/packs/base.jsx rename to app/javascript/packs/application.jsx diff --git a/app/javascript/shared/components/defaultSelectionTemplate.jsx b/app/javascript/shared/components/defaultSelectionTemplate.jsx index 779be1c27..02c505db5 100644 --- a/app/javascript/shared/components/defaultSelectionTemplate.jsx +++ b/app/javascript/shared/components/defaultSelectionTemplate.jsx @@ -1,7 +1,7 @@ -import { h } from 'preact'; +import { Fragment, h } from 'preact'; import PropTypes from 'prop-types'; import { Icon, ButtonNew as Button } from '@crayons'; -import { Close } from '@images/x.svg'; +import Close from '@images/x.svg'; /** * Responsible for the layout of a selected item in the crayons autocomplete and multi input components diff --git a/app/javascript/utilities/__tests__/codeFullscreenModeSwitcher.test.js b/app/javascript/utilities/__tests__/codeFullscreenModeSwitcher.test.js index ec6ca636b..492f81d6e 100644 --- a/app/javascript/utilities/__tests__/codeFullscreenModeSwitcher.test.js +++ b/app/javascript/utilities/__tests__/codeFullscreenModeSwitcher.test.js @@ -1,9 +1,11 @@ -const importModule = () => import('@utilities/codeFullscreenModeSwitcher'); +import { + addFullScreenModeControl, + getFullScreenModeStatus, + onPressEscape, + onPopstate, +} from '@utilities/codeFullscreenModeSwitcher'; describe('CodeFullScreenModeSwitcher Utility', () => { - let addFullScreenModeControl, getFullScreenModeStatus; - let onPressEscape, onPopstate; - const getFullScreenElements = () => ['.js-fullscreen-code.is-open', '.js-code-highlight.is-fullscreen'].map( (selector) => document.body.querySelector(selector), @@ -40,19 +42,9 @@ describe('CodeFullScreenModeSwitcher Utility', () => {
`; - }); - - beforeAll(async () => { - ({ addFullScreenModeControl, getFullScreenModeStatus } = - await importModule()); addFullScreenModeControl(getEnterFullScreenButtons()); }); - beforeAll(async () => { - // eventListener functions - ({ onPressEscape, onPopstate } = await importModule()); - }); - // Assertions are called within the `testNonFullScreen` function. // eslint-disable-next-line jest/expect-expect it('starts in non-fullscreen mode', testNonFullScreen); diff --git a/app/javascript/utilities/codeFullscreenModeSwitcher.js b/app/javascript/utilities/codeFullscreenModeSwitcher.js index 5e42a6404..f4cbee18b 100644 --- a/app/javascript/utilities/codeFullscreenModeSwitcher.js +++ b/app/javascript/utilities/codeFullscreenModeSwitcher.js @@ -1,7 +1,5 @@ let isFullScreenModeCodeOn = false; let screenScroll = 0; -const fullScreenWindow = - document.getElementsByClassName('js-fullscreen-code')[0]; const { body } = document; export function getFullScreenModeStatus() { @@ -67,6 +65,8 @@ function removeFullScreenModeControl(elements) { } function fullScreenModeControl(event) { + const fullScreenWindow = + document.getElementsByClassName('js-fullscreen-code')[0]; const codeBlock = event?.currentTarget.closest('.js-code-highlight') ? event.currentTarget.closest('.js-code-highlight').cloneNode(true) : null; diff --git a/app/views/admin/articles/index.html.erb b/app/views/admin/articles/index.html.erb index db7fa74e6..e7ed45cb3 100644 --- a/app/views/admin/articles/index.html.erb +++ b/app/views/admin/articles/index.html.erb @@ -52,4 +52,4 @@ <%= render partial: "image_upload_script" %> -<%= javascript_packs_with_chunks_tag "admin/convertUserIdsToUsernameInputs" %> +<%= javascript_include_tag "admin/convertUserIdsToUsernameInputs" %> diff --git a/app/views/admin/billboards/_form.html.erb b/app/views/admin/billboards/_form.html.erb index 6e74baeba..26796ef41 100644 --- a/app/views/admin/billboards/_form.html.erb +++ b/app/views/admin/billboards/_form.html.erb @@ -157,4 +157,4 @@ -<%= javascript_packs_with_chunks_tag "admin/billboards", defer: true %> +<%= javascript_include_tag "admin/billboards", defer: true %> diff --git a/app/views/admin/creator_settings/_form.html.erb b/app/views/admin/creator_settings/_form.html.erb index 9e76d95b5..88e61b775 100644 --- a/app/views/admin/creator_settings/_form.html.erb +++ b/app/views/admin/creator_settings/_form.html.erb @@ -82,4 +82,4 @@ -<%= javascript_packs_with_chunks_tag "admin/creatorOnboarding", defer: true %> +<%= javascript_include_tag "admin/creatorOnboarding", defer: true %> diff --git a/app/views/admin/gdpr_delete_requests/index.html.erb b/app/views/admin/gdpr_delete_requests/index.html.erb index bbaa6fa75..6e320bf4e 100644 --- a/app/views/admin/gdpr_delete_requests/index.html.erb +++ b/app/views/admin/gdpr_delete_requests/index.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/users/gdprDeleteRequests", defer: true %> +<%= javascript_include_tag "admin/users/gdprDeleteRequests", defer: true %>

GDPR Actions

diff --git a/app/views/admin/invitations/index.html.erb b/app/views/admin/invitations/index.html.erb index 494585c13..a71dae4bc 100644 --- a/app/views/admin/invitations/index.html.erb +++ b/app/views/admin/invitations/index.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/users/controls", "admin/users/memberIndex", defer: true %> +<%= javascript_include_tag "admin/users/controls", "admin/users/memberIndex", defer: true %>
diff --git a/app/views/admin/listing_categories/_form.html.erb b/app/views/admin/listing_categories/_form.html.erb index 0da78c02a..d6b1f4dd2 100644 --- a/app/views/admin/listing_categories/_form.html.erb +++ b/app/views/admin/listing_categories/_form.html.erb @@ -29,4 +29,4 @@ <%= text_area_tag :social_preview_description, @listing_category.social_preview_description, size: "100x10", class: "crayons-textfield" %>
-<%= javascript_packs_with_chunks_tag "enhanceColorPickers", defer: true %> +<%= javascript_include_tag "enhanceColorPickers", defer: true %> diff --git a/app/views/admin/organizations/show.html.erb b/app/views/admin/organizations/show.html.erb index a32cb3ad9..9fd4c9a8a 100644 --- a/app/views/admin/organizations/show.html.erb +++ b/app/views/admin/organizations/show.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/organizations", defer: true %> +<%= javascript_include_tag "admin/organizations", defer: true %>
- <%= javascript_packs_with_chunks_tag "admin/billboardEnabledCountries", defer: true %> + <%= javascript_include_tag "admin/billboardEnabledCountries", defer: true %> <% end %> <%= render "update_setting_button", f: f %> diff --git a/app/views/admin/settings/forms/_smtp.html.erb b/app/views/admin/settings/forms/_smtp.html.erb index 487904fb2..cfa8c4a87 100644 --- a/app/views/admin/settings/forms/_smtp.html.erb +++ b/app/views/admin/settings/forms/_smtp.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/config/smtp", defer: true %> +<%= javascript_include_tag "admin/config/smtp", defer: true %> <%= form_for(Settings::SMTP.new, url: admin_settings_smtp_settings_path, diff --git a/app/views/admin/settings/forms/_user_experience.html.erb b/app/views/admin/settings/forms/_user_experience.html.erb index cb8c1ab53..283e087ef 100644 --- a/app/views/admin/settings/forms/_user_experience.html.erb +++ b/app/views/admin/settings/forms/_user_experience.html.erb @@ -137,4 +137,4 @@ <% end %> -<%= javascript_packs_with_chunks_tag "enhanceColorPickers", defer: true %> +<%= javascript_include_tag "enhanceColorPickers", defer: true %> diff --git a/app/views/admin/settings/show.html.erb b/app/views/admin/settings/show.html.erb index f41ff3c16..643a03e9c 100644 --- a/app/views/admin/settings/show.html.erb +++ b/app/views/admin/settings/show.html.erb @@ -27,4 +27,4 @@ <%= render partial: "forms/user_experience" %> -<%= javascript_packs_with_chunks_tag "admin/convertUserIdsToUsernameInputs" %> +<%= javascript_include_tag "admin/convertUserIdsToUsernameInputs" %> diff --git a/app/views/admin/shared/_flag_reactions_table.html.erb b/app/views/admin/shared/_flag_reactions_table.html.erb index c58996629..50d5b9391 100644 --- a/app/views/admin/shared/_flag_reactions_table.html.erb +++ b/app/views/admin/shared/_flag_reactions_table.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/shared/flagReactionItemDropdownButton", defer: true %> +<%= javascript_include_tag "admin/shared/flagReactionItemDropdownButton", defer: true %> <% if vomit_reactions.present? %> <% vomit_reactions.each do |vomit_reaction| %> <%= render "admin/shared/flag_reaction_item", vomit_reaction: vomit_reaction, text_section: text_section %> diff --git a/app/views/admin/tags/_form.html.erb b/app/views/admin/tags/_form.html.erb index abec29c18..30e7c9885 100644 --- a/app/views/admin/tags/_form.html.erb +++ b/app/views/admin/tags/_form.html.erb @@ -63,4 +63,4 @@ <%= f.submit class: "crayons-btn mt-3" %> <% end %> -<%= javascript_packs_with_chunks_tag "enhanceColorPickers", defer: true %> +<%= javascript_include_tag "enhanceColorPickers", defer: true %> diff --git a/app/views/admin/tags/edit.html.erb b/app/views/admin/tags/edit.html.erb index 4f9230e61..324421b4c 100644 --- a/app/views/admin/tags/edit.html.erb +++ b/app/views/admin/tags/edit.html.erb @@ -48,4 +48,4 @@ -<%= javascript_packs_with_chunks_tag "admin/convertUserIdsToUsernameInputs" %> +<%= javascript_include_tag "admin/convertUserIdsToUsernameInputs" %> diff --git a/app/views/admin/users/index.html.erb b/app/views/admin/users/index.html.erb index 250f6bda6..e4b3ccc86 100644 --- a/app/views/admin/users/index.html.erb +++ b/app/views/admin/users/index.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/users/memberIndex", defer: true %> +<%= javascript_include_tag "admin/users/memberIndex", defer: true %>
diff --git a/app/views/admin/users/index/_controls.html.erb b/app/views/admin/users/index/_controls.html.erb index 8aa2e165b..957607c34 100644 --- a/app/views/admin/users/index/_controls.html.erb +++ b/app/views/admin/users/index/_controls.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/users/controls", defer: true %> +<%= javascript_include_tag "admin/users/controls", defer: true %> <%= form_with url: admin_users_path, method: :get, local: true do |f| %>
diff --git a/app/views/admin/users/show/profile/_actions.html.erb b/app/views/admin/users/show/profile/_actions.html.erb index 293724eae..04839cac6 100644 --- a/app/views/admin/users/show/profile/_actions.html.erb +++ b/app/views/admin/users/show/profile/_actions.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "admin/editUser", defer: true %> +<%= javascript_include_tag "admin/editUser", defer: true %> -<%= javascript_packs_with_chunks_tag "billboard", defer: true %> +<%= javascript_include_tag "billboard", defer: true %> diff --git a/app/views/articles/edit.html.erb b/app/views/articles/edit.html.erb index f057731c8..251c6dd38 100644 --- a/app/views/articles/edit.html.erb +++ b/app/views/articles/edit.html.erb @@ -29,5 +29,5 @@ <%= render "shared/webcomponents_loader_script" %> <%= render "articles/v2_form", article: @article, organizations: @organizations, version: @version %> -<%= javascript_packs_with_chunks_tag "articleForm", defer: true %> +<%= javascript_include_tag "articleForm", defer: true %> - <%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "feedPreviewCards", "heroBannerClose", "localizeArticleDates", "feedEvents", defer: true %> + <%= javascript_include_tag "storiesList", "followButtons", "feedPreviewCards", "heroBannerClose", "localizeArticleDates", "feedEvents", defer: true %> <% end %> diff --git a/app/views/articles/new.html.erb b/app/views/articles/new.html.erb index 15ae7bb0b..057b4485e 100644 --- a/app/views/articles/new.html.erb +++ b/app/views/articles/new.html.erb @@ -6,7 +6,7 @@ <% if user_signed_in? %> <%= render "shared/webcomponents_loader_script" %> <%= render "articles/v2_form", article: @article, organizations: @organizations, version: @version %> - <%= javascript_packs_with_chunks_tag "articleForm", defer: true %> + <%= javascript_include_tag "articleForm", defer: true %> -<%= javascript_packs_with_chunks_tag "followButtons", defer: true %> +<%= javascript_include_tag "followButtons", defer: true %> diff --git a/app/views/organizations/show.html.erb b/app/views/organizations/show.html.erb index 3e053e2b0..74ecbe380 100644 --- a/app/views/organizations/show.html.erb +++ b/app/views/organizations/show.html.erb @@ -29,4 +29,4 @@
-<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "hideBookmarkButtons", "localizeArticleDates", defer: true %> +<%= javascript_include_tag "storiesList", "followButtons", "hideBookmarkButtons", "localizeArticleDates", defer: true %> diff --git a/app/views/podcast_episodes/index.html.erb b/app/views/podcast_episodes/index.html.erb index 25ab3e72b..6e3c7949d 100644 --- a/app/views/podcast_episodes/index.html.erb +++ b/app/views/podcast_episodes/index.html.erb @@ -98,4 +98,4 @@
-<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", defer: true %> +<%= javascript_include_tag "storiesList", "followButtons", defer: true %> diff --git a/app/views/podcast_episodes/show.html.erb b/app/views/podcast_episodes/show.html.erb index 908353d24..e86531882 100644 --- a/app/views/podcast_episodes/show.html.erb +++ b/app/views/podcast_episodes/show.html.erb @@ -98,7 +98,7 @@ data-commentable-id="<%= @episode.id %>" data-commentable-type="PodcastEpisode" data-follow-button-container="true"> - <%= javascript_packs_with_chunks_tag "commentDropdowns", defer: true %> + <%= javascript_include_tag "commentDropdowns", defer: true %> <%= render "/comments/form", commentable: @episode, commentable_type: "PodcastEpisode" %> @@ -115,4 +115,4 @@ <%= render "podcast_episodes/podcast_bar", podcast: @podcast, episode: @episode %> -<%= javascript_packs_with_chunks_tag "followButtons", defer: true %> +<%= javascript_include_tag "followButtons", defer: true %> diff --git a/app/views/podcasts/_form.html.erb b/app/views/podcasts/_form.html.erb index d67f5ce6d..31ad55941 100644 --- a/app/views/podcasts/_form.html.erb +++ b/app/views/podcasts/_form.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "validateFileInputs", defer: true %> +<%= javascript_include_tag "validateFileInputs", defer: true %> <%= form_with(model: podcast, local: true) do |form| %>
diff --git a/app/views/reading_list_items/index.html.erb b/app/views/reading_list_items/index.html.erb index 177ce94cd..9dee5c006 100644 --- a/app/views/reading_list_items/index.html.erb +++ b/app/views/reading_list_items/index.html.erb @@ -19,4 +19,4 @@
-<%= javascript_packs_with_chunks_tag "readingList", defer: true %> +<%= javascript_include_tag "readingList", defer: true %> diff --git a/app/views/shared/_logo_design.html.erb b/app/views/shared/_logo_design.html.erb index ea0a144e9..e3ff9ace8 100644 --- a/app/views/shared/_logo_design.html.erb +++ b/app/views/shared/_logo_design.html.erb @@ -33,4 +33,4 @@ <%= inline_svg_tag("preview-logo.svg", id: "color-select-preview-logo", class: "p-4 radius-default", title: t("views.logo.preview.icon")) %>
-<%= javascript_packs_with_chunks_tag "enhanceColorPickers", defer: true %> +<%= javascript_include_tag "enhanceColorPickers", defer: true %> diff --git a/app/views/shared/authentication/_forem_creator_signup.html.erb b/app/views/shared/authentication/_forem_creator_signup.html.erb index 3f78c16a7..a3afa62c6 100644 --- a/app/views/shared/authentication/_forem_creator_signup.html.erb +++ b/app/views/shared/authentication/_forem_creator_signup.html.erb @@ -1,4 +1,4 @@ -<%= javascript_packs_with_chunks_tag "foremCreatorSignup", defer: true %> +<%= javascript_include_tag "foremCreatorSignup", defer: true %>