diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0a177ccf12..90003872d5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -62,19 +62,10 @@ jobs: # Lint - name: Run RuboCop - shell: bash - continue-on-error: true - run: | - bundle exec rubocop --format github | sed 's/::error/::warning/g' + run: bundle exec rubocop - name: Run ESLint in pageflow package - shell: bash - continue-on-error: true - run: | - yarn --cwd package lint . --format @jamesacarr/github-actions + run: yarn --cwd package lint . - name: Run ESLint in pageflow-scrolled - shell: bash - continue-on-error: true - run: | - yarn --cwd entry_types/scrolled/package lint . --format @jamesacarr/github-actions + run: yarn --cwd entry_types/scrolled/package lint . diff --git a/admins/pageflow/accounts.rb b/admins/pageflow/accounts.rb index 194ba4986a..fc8ec3a9d5 100644 --- a/admins/pageflow/accounts.rb +++ b/admins/pageflow/accounts.rb @@ -21,8 +21,8 @@ module Pageflow account.memberships.size if authorized?(:read, account) end account_memberships = current_user.memberships.on_accounts - account_roles = account_memberships.each_with_object({}) do |membership, roles| - roles[membership.entity_id] = membership.role + account_roles = account_memberships.to_h do |membership| + [membership.entity_id, membership.role] end if authorized?(:see_own_role_on, :accounts) column :own_role do |account| @@ -43,16 +43,16 @@ module Pageflow searchable_select_options(text_attribute: :name, scope: lambda do Account - .accessible_by(current_ability, :read) - .order(:name) + .accessible_by(current_ability, :read) + .order(:name) end) searchable_select_options(name: :member_addable, text_attribute: :name, scope: lambda do AccountPolicy::Scope.new(current_user, Account) - .member_addable - .order(:name) + .member_addable + .order(:name) end) form partial: 'form' diff --git a/admins/pageflow/entry.rb b/admins/pageflow/entry.rb index 64f6ab1690..faccd6d9da 100644 --- a/admins/pageflow/entry.rb +++ b/admins/pageflow/entry.rb @@ -101,9 +101,9 @@ module Pageflow text_attribute: :name, scope: lambda do AccountPolicy::Scope - .new(current_user, Account) - .entry_movable - .order(:name) + .new(current_user, Account) + .entry_movable + .order(:name) end) searchable_select_options(name: :eligible_sites, @@ -111,8 +111,8 @@ module Pageflow scope: lambda do |params| account = Account.find(params[:account_id]) SitePolicy::Scope - .new(current_user, Site) - .sites_allowed_for(account) + .new(current_user, Site) + .sites_allowed_for(account) end, filter: lambda do |term, scope| scope.ransack(account_name_cont: term).result @@ -318,7 +318,7 @@ def site_policy_scope end # rubocop:todo Metrics/PerceivedComplexity - def permitted_attributes # rubocop:todo Metrics/AbcSize + def permitted_attributes # rubocop:todo Metrics/AbcSize, Metrics/CyclomaticComplexity result = [:title, :type_name, {permalink_attributes: [:slug, :directory_id]}] target = if !params[:id] && current_user.admin? Account.first @@ -331,7 +331,7 @@ def permitted_attributes # rubocop:todo Metrics/AbcSize result += permitted_account_attributes result << :folder_id if create_or_new_action? || - (params[:id] && authorized?(:configure_folder_for, resource)) + (params[:id] && authorized?(:configure_folder_for, resource)) accounts = if params[:id] resource.account diff --git a/admins/pageflow/membership.rb b/admins/pageflow/membership.rb index 5c416db4c8..06e8838caa 100644 --- a/admins/pageflow/membership.rb +++ b/admins/pageflow/membership.rb @@ -12,9 +12,9 @@ module Pageflow user = User.find(params[:parent_id]) PotentialMemberships - .creatable_by(current_user) - .accounts_for_user(user) - .order(:name) + .creatable_by(current_user) + .accounts_for_user(user) + .order(:name) end) searchable_select_options(name: :potential_entries_for_user, @@ -24,8 +24,8 @@ module Pageflow scope: lambda do |params| user = User.find(params[:parent_id]) entries = PotentialMemberships - .creatable_by(current_user) - .entries_for_user(user) + .creatable_by(current_user) + .entries_for_user(user) if can?(:see, :accounts) entries.include_account_name.order('account_name', :title) @@ -42,9 +42,9 @@ module Pageflow scope: lambda do |params| account = Account.find(params[:parent_id]) PotentialMemberships - .creatable_by(current_user) - .users_for_account(account) - .order(:last_name, :first_name) + .creatable_by(current_user) + .users_for_account(account) + .order(:last_name, :first_name) end, filter: lambda do |term, scope| UserNameQuery::Scope.new(term, scope).resolve @@ -55,9 +55,9 @@ module Pageflow scope: lambda do |params| entry = Entry.find(params[:parent_id]) PotentialMemberships - .creatable_by(current_user) - .users_for_entry(entry) - .order(:last_name, :first_name) + .creatable_by(current_user) + .users_for_entry(entry) + .order(:last_name, :first_name) end, filter: lambda do |term, scope| UserNameQuery::Scope.new(term, scope).resolve diff --git a/admins/pageflow/translations.rb b/admins/pageflow/translations.rb index 01bb6fe1d1..20557ba655 100644 --- a/admins/pageflow/translations.rb +++ b/admins/pageflow/translations.rb @@ -14,11 +14,11 @@ module Pageflow display_text: lambda do |entry| if entry.translation_group entry.translation_group - .entries - .order('title ASC') - .map(&:title) - .join(' / ') - .presence + .entries + .order('title ASC') + .map(&:title) + .join(' / ') + .presence else entry.title end diff --git a/app/helpers/pageflow/admin/widgets_helper.rb b/app/helpers/pageflow/admin/widgets_helper.rb index 3430288db7..02db36cdd1 100644 --- a/app/helpers/pageflow/admin/widgets_helper.rb +++ b/app/helpers/pageflow/admin/widgets_helper.rb @@ -9,8 +9,8 @@ def admin_widgets_fields(form, config) end def admin_widget_types_collection_for_role(config, role) - config.widget_types.find_all_by_role(role).each_with_object({}) do |widget_type, result| - result[I18n.t(widget_type.translation_key)] = widget_type.name + config.widget_types.find_all_by_role(role).to_h do |widget_type| + [I18n.t(widget_type.translation_key), widget_type.name] end end end diff --git a/app/helpers/pageflow/common_entry_seed_helper.rb b/app/helpers/pageflow/common_entry_seed_helper.rb index 89534014b2..2b58d54fc5 100644 --- a/app/helpers/pageflow/common_entry_seed_helper.rb +++ b/app/helpers/pageflow/common_entry_seed_helper.rb @@ -26,8 +26,8 @@ def initialize(config) end def as_json - config.page_types.each_with_object({}) do |page_type, result| - result[page_type.name.to_sym] = page_type_seed(page_type) + config.page_types.to_h do |page_type| + [page_type.name.to_sym, page_type_seed(page_type)] end end diff --git a/app/helpers/pageflow/entry_json_seed_helper.rb b/app/helpers/pageflow/entry_json_seed_helper.rb index ce1c4b8417..ecca610f88 100644 --- a/app/helpers/pageflow/entry_json_seed_helper.rb +++ b/app/helpers/pageflow/entry_json_seed_helper.rb @@ -51,14 +51,14 @@ def entry_widgets_seed(entry) end def entry_file_ids_seed(entry) - Pageflow.config.file_types.with_thumbnail_support.each_with_object({}) do |file_type, result| - result[file_type.collection_name] = entry.find_files(file_type.model).map(&:perma_id) + Pageflow.config.file_types.with_thumbnail_support.to_h do |file_type| + [file_type.collection_name, entry.find_files(file_type.model).map(&:perma_id)] end end def entry_audio_files_json_seed(entry) - seed = entry.find_files(AudioFile).each_with_object({}) do |audio_file, result| - result[audio_file.perma_id] = audio_file_sources(audio_file) + seed = entry.find_files(AudioFile).to_h do |audio_file| + [audio_file.perma_id, audio_file_sources(audio_file)] end sanitize_json(seed.to_json).html_safe diff --git a/app/helpers/pageflow/public_i18n_helper.rb b/app/helpers/pageflow/public_i18n_helper.rb index cb7cb0966d..ebe1d023d6 100644 --- a/app/helpers/pageflow/public_i18n_helper.rb +++ b/app/helpers/pageflow/public_i18n_helper.rb @@ -14,7 +14,7 @@ def public_i18n_translations(entry) { pageflow: { public: I18n.t('pageflow.public', locale: I18n.default_locale) - .dup + .dup .deep_merge(I18n.t('pageflow.public', locale: entry.locale), &merge_ignoring_nil) } diff --git a/app/helpers/pageflow/themes_helper.rb b/app/helpers/pageflow/themes_helper.rb index d670ad4266..9eaa19bca3 100644 --- a/app/helpers/pageflow/themes_helper.rb +++ b/app/helpers/pageflow/themes_helper.rb @@ -3,9 +3,7 @@ module ThemesHelper # rubocop:todo Style/Documentation include RenderJsonHelper def themes_options_json_seed(config = Pageflow.config) - config.themes.each_with_object({}) { |theme, options| - options[theme.name] = theme.options - }.to_json.html_safe + config.themes.to_h { |theme| [theme.name, theme.options] }.to_json.html_safe end def theme_json_seeds(config) diff --git a/app/models/pageflow/image_file.rb b/app/models/pageflow/image_file.rb index 39cf2d1fb3..fe22063aa6 100644 --- a/app/models/pageflow/image_file.rb +++ b/app/models/pageflow/image_file.rb @@ -40,26 +40,30 @@ def attachment_styles(attachment) Pageflow .config.thumbnail_styles.transform_values { |options| options.merge(style_defaults) } - .merge( - print: {geometry: '300x300>', - **style_defaults, - convert_options: '-quality 10 -interlace Plane'}, - medium: {geometry: '1024x1024>', - **style_defaults, - convert_options: '-quality 70 -interlace Plane'}, - large: {geometry: '1920x1920>', - **style_defaults, - convert_options: '-quality 70 -interlace Plane'}, - ultra: {geometry: '3840x3840>', - **style_defaults, - convert_options: '-quality 90 -interlace Plane'}, - panorama_medium: {geometry: ImageFile.scale_down_to_cover(1024, 1024), - format: panorama_format, - convert_options: '-quality 90 -interlace Plane'}, - panorama_large: {geometry: ImageFile.scale_down_to_cover(1920, 1080), - format: panorama_format, - convert_options: '-quality 90 -interlace Plane'} - ) + .merge( + print: {geometry: '300x300>', + **style_defaults, + convert_options: '-quality 10 -interlace Plane'}, + medium: {geometry: '1024x1024>', + **style_defaults, + convert_options: '-quality 70 -interlace Plane'}, + large: {geometry: '1920x1920>', + **style_defaults, + convert_options: '-quality 70 -interlace Plane'}, + ultra: {geometry: '3840x3840>', + **style_defaults, + convert_options: '-quality 90 -interlace Plane'}, + panorama_medium: { + geometry: ImageFile.scale_down_to_cover(1024, 1024), + format: panorama_format, + convert_options: '-quality 90 -interlace Plane' + }, + panorama_large: { + geometry: ImageFile.scale_down_to_cover(1920, 1080), + format: panorama_format, + convert_options: '-quality 90 -interlace Plane' + } + ) .merge(social_image_styles) end diff --git a/app/models/pageflow/image_file_url_templates.rb b/app/models/pageflow/image_file_url_templates.rb index 8aef58eda3..a6704f03c4 100644 --- a/app/models/pageflow/image_file_url_templates.rb +++ b/app/models/pageflow/image_file_url_templates.rb @@ -1,10 +1,10 @@ module Pageflow class ImageFileUrlTemplates # rubocop:todo Style/Documentation def call - styles.each_with_object({}) do |style, result| - result[style] = replace_extension_with_placeholder( + styles.to_h do |style| + [style, replace_extension_with_placeholder( UrlTemplate.from_attachment(example_file.attachment, style) - ) + )] end end diff --git a/app/models/pageflow/nested_revision_component_copy.rb b/app/models/pageflow/nested_revision_component_copy.rb index 6c08753e30..c570a1baad 100644 --- a/app/models/pageflow/nested_revision_component_copy.rb +++ b/app/models/pageflow/nested_revision_component_copy.rb @@ -166,7 +166,7 @@ def where_belongs_to_old_root(model, chain) "#{[*chain, model].first.old_foreign_key} = #{@old_root_id}" end - Model = Struct.new(:klass, :foreign_key, :level, keyword_init: true) do + Model = Struct.new(:klass, :foreign_key, :level) do def self.for(revision_components:) revision_components.map do |revision_component| Model.new(klass: revision_component, foreign_key: 'revision_id', level: 1) diff --git a/app/models/pageflow/revision.rb b/app/models/pageflow/revision.rb index b41a0f5a13..52dc874b7d 100644 --- a/app/models/pageflow/revision.rb +++ b/app/models/pageflow/revision.rb @@ -212,7 +212,7 @@ def configuration 'manual_start' => manual_start, 'overview_button_enabled' => overview_button_enabled }.delete_if { |_k, v| v.nil? } - .merge(read_attribute(:configuration) || {}) + .merge(read_attribute(:configuration) || {}) end def self.ransackable_attributes(_auth_object = nil) diff --git a/app/models/pageflow/widget.rb b/app/models/pageflow/widget.rb index 69b9a3217c..604a43bf5a 100644 --- a/app/models/pageflow/widget.rb +++ b/app/models/pageflow/widget.rb @@ -95,8 +95,8 @@ def defaults_by_role def placeholders_by_role return {} unless options[:include_placeholders] - config.widget_types.roles.each_with_object({}) do |role, result| - result[role] = Widget.new(role:, type_name: nil, subject: nil) + config.widget_types.roles.to_h do |role| + [role, Widget.new(role:, type_name: nil, subject: nil)] end end diff --git a/db/migrate/20140418225525_setup_schema.rb b/db/migrate/20140418225525_setup_schema.rb index 2ee6ff0a8c..95303a3ec4 100644 --- a/db/migrate/20140418225525_setup_schema.rb +++ b/db/migrate/20140418225525_setup_schema.rb @@ -1,4 +1,4 @@ -# rubocop:disable Layout/LineLength, Metrics/ClassLength, Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength +# rubocop:disable Layout/LineLength, Metrics/ClassLength, Metrics/BlockLength class SetupSchema < ActiveRecord::Migration[5.2] def change @@ -296,4 +296,4 @@ def change end end -# rubocop:enable Layout/LineLength, Metrics/ClassLength, Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength +# rubocop:enable Layout/LineLength, Metrics/ClassLength, Metrics/BlockLength diff --git a/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb b/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb index bf9c4cab7b..3c4cd943f7 100644 --- a/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +++ b/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb @@ -83,8 +83,8 @@ def generate(rules) private def extract_breakpoint_declarations!(declarations) - BREAKPOINTS.keys.each_with_object({}) { |breakpoint_name, result| - result[breakpoint_name] = declarations.delete(breakpoint_name) + BREAKPOINTS.keys.to_h { |breakpoint_name| + [breakpoint_name, declarations.delete(breakpoint_name)] }.compact end diff --git a/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb b/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb index dea6f8cd67..ce9f4a3418 100644 --- a/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +++ b/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb @@ -19,8 +19,8 @@ def register(name, callable, content_element_type_names: nil) # @api private def for(entry, request, options = {}) - items_for_entry(entry, options).each_with_object({}) do |item, result| - result[item.name] = item.callable.call(entry:, request:, foo: 1) + items_for_entry(entry, options).to_h do |item| + [item.name, item.callable.call(entry:, request:, foo: 1)] end end diff --git a/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb b/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb index 87964c9ba1..eceba02c95 100644 --- a/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +++ b/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb @@ -1,6 +1,6 @@ module PageflowScrolled # @api private - class Plugin < Pageflow::Plugin + class Plugin < Pageflow::Plugin # rubocop:disable Metrics/ClassLength def configure(config) config.features.register('scrolled_entry_type') do |feature_config| feature_config.entry_types.register(PageflowScrolled.entry_type) @@ -71,7 +71,8 @@ def configure(config) 'section_default_padding_top' => 'max(10em, 20svh)', 'section_default_padding_bottom' => 'max(10em, 20svh)', 'content_element_margin_style_default' => '2em', - 'content_element_box_shadow_style_default' => '0 4px 6px -1px rgb(0 0 0 / 0.2), 0 2px 4px -2px rgb(0 0 0 / 0.15)', + 'content_element_box_shadow_style_default' => + '0 4px 6px -1px rgb(0 0 0 / 0.2), 0 2px 4px -2px rgb(0 0 0 / 0.15)', 'box_shadow_clip_margin_bottom' => '3rem', 'outline_color' => '#a0a0a080' }, diff --git a/entry_types/scrolled/package/spec/frontend/inlineEditing/LinkTooltip-spec.js b/entry_types/scrolled/package/spec/frontend/inlineEditing/LinkTooltip-spec.js index 5ee2976f2e..4c9b8df865 100644 --- a/entry_types/scrolled/package/spec/frontend/inlineEditing/LinkTooltip-spec.js +++ b/entry_types/scrolled/package/spec/frontend/inlineEditing/LinkTooltip-spec.js @@ -247,6 +247,7 @@ describe('LinkTooltip', () => { + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} Test Link diff --git a/entry_types/scrolled/package/spec/frontend/usePrivacyLink-spec.js b/entry_types/scrolled/package/spec/frontend/usePrivacyLink-spec.js index ef529b69f0..4ca69d92a0 100644 --- a/entry_types/scrolled/package/spec/frontend/usePrivacyLink-spec.js +++ b/entry_types/scrolled/package/spec/frontend/usePrivacyLink-spec.js @@ -127,10 +127,10 @@ describe('usePrivacyLink', () => { it('returns props with onClick for javascript: privacy settings url', () => { const {result} = renderHookInEntry( - // eslint-disable-next-line no-script-url () => usePrivacyLink(), { seed: { legalInfo: { + // eslint-disable-next-line no-script-url privacy: {url: 'javascript:pageflowDisplayPrivacySettings()'} } } @@ -144,10 +144,10 @@ describe('usePrivacyLink', () => { it('does not append vendors to javascript: privacy settings url', () => { const {result} = renderHookInEntry( - // eslint-disable-next-line no-script-url () => usePrivacyLink({vendors: 'spotify'}), { seed: { legalInfo: { + // eslint-disable-next-line no-script-url privacy: {url: 'javascript:pageflowDisplayPrivacySettings()'} } } diff --git a/entry_types/scrolled/package/src/frontend/useScrollPositionLifecycle.js b/entry_types/scrolled/package/src/frontend/useScrollPositionLifecycle.js index d557ecce9c..ce8bc71048 100644 --- a/entry_types/scrolled/package/src/frontend/useScrollPositionLifecycle.js +++ b/entry_types/scrolled/package/src/frontend/useScrollPositionLifecycle.js @@ -1,4 +1,4 @@ -import React, {useRef, useEffect, useContext, useMemo, createContext, useState} from 'react'; +import React, {useRef, useEffect, useContext, useMemo, createContext} from 'react'; import classNames from 'classnames'; import {useOnScreen} from './useOnScreen'; import {useDelayedBoolean} from './useDelayedBoolean'; diff --git a/entry_types/scrolled/spec/helpers/pageflow_scrolled/editor/entry_json_seed_helper_spec.rb b/entry_types/scrolled/spec/helpers/pageflow_scrolled/editor/entry_json_seed_helper_spec.rb index 580b440c2f..003b3fd9f6 100644 --- a/entry_types/scrolled/spec/helpers/pageflow_scrolled/editor/entry_json_seed_helper_spec.rb +++ b/entry_types/scrolled/spec/helpers/pageflow_scrolled/editor/entry_json_seed_helper_spec.rb @@ -119,7 +119,7 @@ def render(helper, entry) pageflow_configure do |config| config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config| entry_type_config.consent_vendor_url_matchers = { - /\.some-vendor\.com\// => 'someVendor' + %r{\.some-vendor\.com/} => 'someVendor' } end end diff --git a/entry_types/scrolled/spec/pageflow_scrolled/plugin_spec.rb b/entry_types/scrolled/spec/pageflow_scrolled/plugin_spec.rb index cc963133c9..34f6e7ef59 100644 --- a/entry_types/scrolled/spec/pageflow_scrolled/plugin_spec.rb +++ b/entry_types/scrolled/spec/pageflow_scrolled/plugin_spec.rb @@ -42,7 +42,7 @@ def request(uri = 'https://example.com/some-entry') pageflow_configure do |config| config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config| entry_type_config.consent_vendor_url_matchers = { - /\.typeform\.com\// => 'typeform' + %r{\.typeform\.com/} => 'typeform' } end end @@ -62,7 +62,7 @@ def request(uri = 'https://example.com/some-entry') pageflow_configure do |config| config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config| entry_type_config.consent_vendor_url_matchers = { - /\.typeform\.com\// => 'typeform' + %r{\.typeform\.com/} => 'typeform' } end end @@ -82,7 +82,7 @@ def request(uri = 'https://example.com/some-entry') pageflow_configure do |config| config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config| entry_type_config.consent_vendor_url_matchers = { - /google\.com\/maps\/embed/ => 'googleMaps' + %r{google\.com/maps/embed} => 'googleMaps' } end end diff --git a/lib/pageflow/entry_export_import/entry_serialization.rb b/lib/pageflow/entry_export_import/entry_serialization.rb index 9f70600c64..06250689d1 100644 --- a/lib/pageflow/entry_export_import/entry_serialization.rb +++ b/lib/pageflow/entry_export_import/entry_serialization.rb @@ -14,10 +14,10 @@ def dump(entry, publication = nil) # to prevent it from showing up in Active Admin JSON exports. # It is included separately as part of the entry export. 'entry' => entry - .as_json(except: [:folder_id, :password_digest, :users_count]) - .merge('features_configuration' => entry.features_configuration, - 'draft' => RevisionSerialization.dump(entry.draft), - 'last_publication' => dump_publication(publication)) + .as_json(except: [:folder_id, :password_digest, :users_count]) + .merge('features_configuration' => entry.features_configuration, + 'draft' => RevisionSerialization.dump(entry.draft), + 'last_publication' => dump_publication(publication)) } end diff --git a/lib/pageflow/entry_export_import/page_type_versions.rb b/lib/pageflow/entry_export_import/page_type_versions.rb index f5332a2c43..617e1da9f9 100644 --- a/lib/pageflow/entry_export_import/page_type_versions.rb +++ b/lib/pageflow/entry_export_import/page_type_versions.rb @@ -7,8 +7,8 @@ module PageTypeVersions class IncompatibleVersionsError < StandardError; end def dump - Pageflow.config.page_types.each_with_object({}) do |page_type, version_requirements| - version_requirements[page_type.name] = page_type.export_version + Pageflow.config.page_types.to_h do |page_type| + [page_type.name, page_type.export_version] end end diff --git a/lib/pageflow/file_type.rb b/lib/pageflow/file_type.rb index 90b61c1be3..fd594b0349 100644 --- a/lib/pageflow/file_type.rb +++ b/lib/pageflow/file_type.rb @@ -153,8 +153,8 @@ def i18n_key def convert_custom_attributes_option(custom_attributes) if custom_attributes.is_a?(Array) - custom_attributes.each_with_object({}) do |attribute_name, result| - result[attribute_name] = {permitted_create_param: true} + custom_attributes.to_h do |attribute_name| + [attribute_name, {permitted_create_param: true}] end elsif custom_attributes.is_a?(Hash) custom_attributes diff --git a/lib/pageflow/file_types.rb b/lib/pageflow/file_types.rb index a32642d5dd..d09517246c 100644 --- a/lib/pageflow/file_types.rb +++ b/lib/pageflow/file_types.rb @@ -35,7 +35,7 @@ def find_by_model!(model) def with_thumbnail_support select do |file_type| - file_type.model.instance_methods.include?(:thumbnail_url) + file_type.model.method_defined?(:thumbnail_url) end end diff --git a/package.json b/package.json index dc8dec8387..00f899e714 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ }, "devDependencies": { "@babel/core": "^7.8.3", - "@jamesacarr/eslint-formatter-github-actions": "^0.2.0", "@rollup/plugin-alias": "^2.2.0", "@rollup/plugin-image": "^2.1.1", "@rollup/plugin-node-resolve": "^11.2.1", diff --git a/package/spec/ui/views/TabsView-spec.js b/package/spec/ui/views/TabsView-spec.js index 98bcd0bcb1..93c10fbbfb 100644 --- a/package/spec/ui/views/TabsView-spec.js +++ b/package/spec/ui/views/TabsView-spec.js @@ -1,5 +1,5 @@ import Backbone from 'backbone'; -import {fireEvent, within} from '@testing-library/dom'; +import {fireEvent} from '@testing-library/dom'; import {TabsView} from 'pageflow/ui'; diff --git a/pageflow.gemspec b/pageflow.gemspec index 47dcd39ff0..eee97d9ef6 100644 --- a/pageflow.gemspec +++ b/pageflow.gemspec @@ -212,7 +212,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'ammeter', '~> 1.1' # Ruby code linter - s.add_development_dependency 'rubocop', '~> 1.78' + s.add_development_dependency 'rubocop', '~> 1.86.0' # Scss code linter s.add_development_dependency 'scss_lint', '~> 0.60.0' diff --git a/spec/helpers/pageflow/structured_data_helper_spec.rb b/spec/helpers/pageflow/structured_data_helper_spec.rb index 6abd46db6e..4dec3b9f3c 100644 --- a/spec/helpers/pageflow/structured_data_helper_spec.rb +++ b/spec/helpers/pageflow/structured_data_helper_spec.rb @@ -54,7 +54,7 @@ module Pageflow 'image' => { '@type' => 'ImageObject', 'url' => image_file - .thumbnail_url(:thumbnail_large), + .thumbnail_url(:thumbnail_large), 'width' => 560, 'height' => 315 }, diff --git a/spec/jobs/pageflow/entry_export_import/upload_and_publish_file_job_spec.rb b/spec/jobs/pageflow/entry_export_import/upload_and_publish_file_job_spec.rb index 5f0d1fea6a..72721d093f 100644 --- a/spec/jobs/pageflow/entry_export_import/upload_and_publish_file_job_spec.rb +++ b/spec/jobs/pageflow/entry_export_import/upload_and_publish_file_job_spec.rb @@ -9,7 +9,7 @@ module EntryExportImport attachment: nil, file_name: 'image.jpg') exported_id = 10 - fixture_file = File.open(Engine.root.join('spec', 'fixtures', 'image.jpg')) + fixture_file = Engine.root.join('spec', 'fixtures', 'image.jpg').open Dir.mktmpdir do |dir| archive_file_name = File.join(dir, 'archive.zip') diff --git a/spec/models/pageflow/nested_revision_component_copy_spec.rb b/spec/models/pageflow/nested_revision_component_copy_spec.rb index 52a2a99f98..4e832e7d4d 100644 --- a/spec/models/pageflow/nested_revision_component_copy_spec.rb +++ b/spec/models/pageflow/nested_revision_component_copy_spec.rb @@ -31,7 +31,7 @@ def respond_to_missing?(method, include_private = false) end end -module Pageflow +module Pageflow # rubocop:disable Style/OneClassPerFile describe NestedRevisionComponentCopy do describe '#copy_all' do it 'copies nested revision components' do diff --git a/spec/pageflow/theme_customizations_spec.rb b/spec/pageflow/theme_customizations_spec.rb index 017fa2b108..be9ab31329 100644 --- a/spec/pageflow/theme_customizations_spec.rb +++ b/spec/pageflow/theme_customizations_spec.rb @@ -551,7 +551,7 @@ module Pageflow rainbow_entry_type = TestEntryType.register(config, name: 'rainbow') config.for_entry_type(rainbow_entry_type) do |c| - c.themes.register_options_transform(->(options, **) { + c.themes.register_options_transform(lambda { |options, **| if options[:colors].blank? options.deep_merge(colors: {accent: '#default'}) else @@ -642,7 +642,6 @@ module Pageflow rainbow_entry_type = TestEntryType.register(config, name: 'rainbow') config.for_entry_type(rainbow_entry_type) do |c| - c.features.register('legacy_colors') do |feature_config| feature_config.themes.register_default_options(colors: {accent: '#legacy'}) end diff --git a/spec/support/pageflow/dom/editor/edit_configuration_view.rb b/spec/support/pageflow/dom/editor/edit_configuration_view.rb index 1c7d89c381..ab3e216342 100644 --- a/spec/support/pageflow/dom/editor/edit_configuration_view.rb +++ b/spec/support/pageflow/dom/editor/edit_configuration_view.rb @@ -10,7 +10,8 @@ def actions_button def select_action(label) actions_button.click - Capybara.current_session.find('#editor_menu_container .drop_down_button_item', text: label).click + Capybara.current_session.find('#editor_menu_container .drop_down_button_item', + text: label).click end def back_button diff --git a/yarn.lock b/yarn.lock index 307aaf776d..8f45247ff0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,34 +2,6 @@ # yarn lockfile v1 -"@actions/core@^1.10.0": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172" - integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A== - dependencies: - "@actions/exec" "^1.1.1" - "@actions/http-client" "^2.0.1" - -"@actions/exec@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" - integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== - dependencies: - "@actions/io" "^1.0.1" - -"@actions/http-client@^2.0.1": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674" - integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA== - dependencies: - tunnel "^0.0.6" - undici "^5.25.4" - -"@actions/io@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" - integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== - "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -1558,11 +1530,6 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - "@floating-ui/core@^1.6.0": version "1.6.4" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.4.tgz#0140cf5091c8dee602bff9da5ab330840ff91df6" @@ -1631,13 +1598,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jamesacarr/eslint-formatter-github-actions@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@jamesacarr/eslint-formatter-github-actions/-/eslint-formatter-github-actions-0.2.0.tgz#5b4a4fae22cd354b3cbb2bad4c972edbe04e8fef" - integrity sha512-/BMX+d6Pg36aHi7FmRsyCXUXCFQOVnJap1xl97kgglNE++d2HtqR6eHVxL56wXnXqC5wyI4T9Y3e2RccyubqQA== - dependencies: - "@actions/core" "^1.10.0" - "@jest/console@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" @@ -12258,7 +12218,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12279,6 +12239,13 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -12708,11 +12675,6 @@ tsutils@^3.17.1, tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -12842,13 +12804,6 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.25.4: - version "5.29.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" - integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== - dependencies: - "@fastify/busboy" "^2.0.0" - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -13289,7 +13244,16 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==