diff --git a/.prettierignore b/.prettierignore index f876cbec05..fa7dad869f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,14 +12,14 @@ vendor-prefixed /dev/data /mailpoet/assets/dist /mailpoet/assets/js/lib -/mailpoet/assets/js/src/newsletter_editor/behaviors/tinymce_icons.js +/mailpoet/assets/js/src/newsletter-editor/behaviors/tinymce-icons.js /mailpoet/generated /mailpoet/lang /mailpoet/lib/Newsletter/Renderer/Template.html /mailpoet/lib-3rd-party /mailpoet/plugin_repository /mailpoet/temp -/mailpoet/tests/javascript_newsletter_editor/testBundles +/mailpoet/tests/javascript-newsletter-editor/testBundles /mailpoet/tests/plugins /mailpoet/tools/wpscan-semgrep-rules /mailpoet/views diff --git a/mailpoet/.gitignore b/mailpoet/.gitignore index bbbfbc66f0..5e438b319d 100644 --- a/mailpoet/.gitignore +++ b/mailpoet/.gitignore @@ -11,7 +11,7 @@ tests/plugins /views/cache/** temp mailpoet.zip -tests/javascript_newsletter_editor/testBundles +tests/javascript-newsletter-editor/testBundles assets/dist .vagrant lang @@ -27,4 +27,4 @@ tasks/phpstan/vendor tasks/phpstan/_phpstan-wp-source.neon /tools/vendor /storybook-static -assets/js/src/newsletter_editor/behaviors/tinymce_icons.js +assets/js/src/newsletter-editor/behaviors/tinymce-icons.js diff --git a/mailpoet/RoboFile.php b/mailpoet/RoboFile.php index 49ee8b1067..5c9d587067 100644 --- a/mailpoet/RoboFile.php +++ b/mailpoet/RoboFile.php @@ -360,8 +360,8 @@ class RoboFile extends \Robo\Tasks { public function testNewsletterEditor($xmlOutputFile = null) { $command = join(' ', [ './node_modules/.bin/mocha', - '-r tests/javascript_newsletter_editor/mochaTestHelper.js', - 'tests/javascript_newsletter_editor/testBundles/**/*.js', + '-r tests/javascript-newsletter-editor/mocha-test-helper.js', + 'tests/javascript-newsletter-editor/testBundles/**/*.js', '--exit', ]); @@ -377,7 +377,7 @@ class RoboFile extends \Robo\Tasks { } public function testJavascript($xmlOutputFile = null) { - $command = './node_modules/.bin/mocha --recursive --require tests/javascript/babel_register.js tests/javascript --extension spec.js --extension spec.ts'; + $command = './node_modules/.bin/mocha --recursive --require tests/javascript/babel-register.js tests/javascript --extension spec.js --extension spec.ts'; if (!empty($xmlOutputFile)) { $command .= sprintf( diff --git a/mailpoet/assets/js/src/form-editor/form-editor.jsx b/mailpoet/assets/js/src/form-editor/form-editor.jsx index 6da3ceb3ea..3c5beba052 100644 --- a/mailpoet/assets/js/src/form-editor/form-editor.jsx +++ b/mailpoet/assets/js/src/form-editor/form-editor.jsx @@ -9,7 +9,7 @@ import { initBlocks } from './blocks/blocks.jsx'; import { initHooks } from './hooks'; import { initTranslations } from './translations'; import { initRichText } from './rich-text/init.ts'; -import './template_selection'; +import './template-selection'; import { registerTranslations } from '../common'; function App() { diff --git a/mailpoet/assets/js/src/newsletter-editor/behaviors/text-editor-behavior.ts b/mailpoet/assets/js/src/newsletter-editor/behaviors/text-editor-behavior.ts index dc0ae447d1..cc126e1087 100644 --- a/mailpoet/assets/js/src/newsletter-editor/behaviors/text-editor-behavior.ts +++ b/mailpoet/assets/js/src/newsletter-editor/behaviors/text-editor-behavior.ts @@ -16,7 +16,7 @@ import 'tinymce/plugins/link'; import 'tinymce/plugins/lists'; import 'tinymce/models/dom'; -import './tinymce_icons'; +import './tinymce-icons'; const configurationFilter = (originalConfig: RawEditorOptions) => originalConfig; diff --git a/mailpoet/assets/js/src/newsletter-editor/webpack-index.jsx b/mailpoet/assets/js/src/newsletter-editor/webpack-index.jsx index edb17867ef..7fc0b241ee 100644 --- a/mailpoet/assets/js/src/newsletter-editor/webpack-index.jsx +++ b/mailpoet/assets/js/src/newsletter-editor/webpack-index.jsx @@ -9,51 +9,51 @@ import 'sticky-kit'; // side effect - extends jQuery import 'velocity-animate'; // side effect - assigns to window // app -import 'newsletter_editor/initializer.jsx'; // side effect - calls Hooks.addAction() -import 'newsletter_editor/App'; // side effect - assigns to window +import 'newsletter-editor/initializer.jsx'; // side effect - calls Hooks.addAction() +import 'newsletter-editor/app'; // side effect - assigns to window // components -import 'newsletter_editor/components/config.jsx'; // side effect - calls App.on() -import 'newsletter_editor/components/styles.js'; // side effect - calls App.on() -import 'newsletter_editor/components/sidebar.tsx'; // side effect - calls App.on() -import 'newsletter_editor/components/content.js'; // side effect - calls App.on() -import 'newsletter_editor/components/heading.js'; // side effect - calls App.on() -import 'newsletter_editor/components/history.js'; // side effect - calls App.on() -import 'newsletter_editor/components/save.js'; // side effect - calls App.on() -import 'newsletter_editor/components/communication.js'; // side effect - calls App.on() +import 'newsletter-editor/components/config.jsx'; // side effect - calls App.on() +import 'newsletter-editor/components/styles.js'; // side effect - calls App.on() +import 'newsletter-editor/components/sidebar.tsx'; // side effect - calls App.on() +import 'newsletter-editor/components/content.js'; // side effect - calls App.on() +import 'newsletter-editor/components/heading.js'; // side effect - calls App.on() +import 'newsletter-editor/components/history.js'; // side effect - calls App.on() +import 'newsletter-editor/components/save.js'; // side effect - calls App.on() +import 'newsletter-editor/components/communication.js'; // side effect - calls App.on() // behaviors -import 'newsletter_editor/behaviors/BehaviorsLookup.js'; // side effect - assings to window and Marionette -import 'newsletter_editor/behaviors/ColorPickerBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/ContainerDropZoneBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/DraggableBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/HighlightEditingBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/MediaManagerBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/ResizableBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/SortableBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/ShowSettingsBehavior.js'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/TextEditorBehavior'; // side effect - assigns to BehaviorsLookup -import 'newsletter_editor/behaviors/WooCommerceStylesBehavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/behaviors-lookup.js'; // side effect - assings to window and Marionette +import 'newsletter-editor/behaviors/color-picker-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/container-drop-zone-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/draggable-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/highlight-editing-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/media-manager-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/resizable-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/sortable-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/show-settings-behavior.js'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/text-editor-behavior'; // side effect - assigns to BehaviorsLookup +import 'newsletter-editor/behaviors/woo-commerce-styles-behavior.js'; // side effect - assigns to BehaviorsLookup // blocks -import 'newsletter_editor/blocks/container.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/button.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/image.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/divider.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/text.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/spacer.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/footer.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/header.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/automatedLatestContent.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/automatedLatestContentLayout.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/posts.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/products.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/abandonedCartContent.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/social.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/woocommerceContent.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/woocommerceHeading.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/unknownBlockFallback.js'; // side effect - calls App.on() -import 'newsletter_editor/blocks/coupon'; // side effect - calls App.on() +import 'newsletter-editor/blocks/container.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/button.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/image.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/divider.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/text.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/spacer.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/footer.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/header.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/automated-latest-content.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/automated-latest-content-layout.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/posts.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/products.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/abandoned-cart-content.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/social.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/woocommerce-content.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/woocommerce-heading.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/unknown-block-fallback.js'; // side effect - calls App.on() +import 'newsletter-editor/blocks/coupon'; // side effect - calls App.on() // register strings for native translation with @wordpress/i18n import { registerTranslations } from 'common'; diff --git a/mailpoet/assets/js/src/post-editor-block/blocks.jsx b/mailpoet/assets/js/src/post-editor-block/blocks.jsx index 726af786bc..13770fdd5e 100644 --- a/mailpoet/assets/js/src/post-editor-block/blocks.jsx +++ b/mailpoet/assets/js/src/post-editor-block/blocks.jsx @@ -1 +1 @@ -import './subscription_form/form_block.jsx'; +import './subscription-form/form-block.jsx'; diff --git a/mailpoet/assets/js/src/types/index.ts b/mailpoet/assets/js/src/types/index.ts index 7125b4cb34..55e666e3a4 100644 --- a/mailpoet/assets/js/src/types/index.ts +++ b/mailpoet/assets/js/src/types/index.ts @@ -27,7 +27,7 @@ import { useCompositeState, } from 'reakit/Composite'; -import './wordpress_modules'; +import './wordpress-modules'; /* eslint-disable @typescript-eslint/no-explicit-any -- some general types in this file need to use "any" */ /* eslint-disable @typescript-eslint/naming-convention -- we have no control over 3rd-party naming conventions */ diff --git a/mailpoet/assets/js/src/webpack-admin-index.tsx b/mailpoet/assets/js/src/webpack-admin-index.tsx index 5ab1ea7495..37c1005d3a 100644 --- a/mailpoet/assets/js/src/webpack-admin-index.tsx +++ b/mailpoet/assets/js/src/webpack-admin-index.tsx @@ -11,13 +11,13 @@ import 'segments/static/static'; // side effect - renders ReactDOM to document import 'segments/dynamic/dynamic'; // side effect - renders ReactDOM to document import 'forms/forms.jsx'; // side effect - renders ReactDOM to document import 'help/help.jsx'; // side effect - renders ReactDOM to document -import 'subscribers/importExport/import.jsx'; // side effect - executes on doc ready, adds events -import 'subscribers/importExport/export'; // side effect - executes on doc ready +import 'subscribers/import-export/import.jsx'; // side effect - executes on doc ready, adds events +import 'subscribers/import-export/export'; // side effect - executes on doc ready import 'wizard/wizard'; // side effect - renders ReactDOM to document -import 'experimental_features/experimental_features.jsx'; // side effect - renders ReactDOM to document +import 'experimental-features/experimental-features.jsx'; // side effect - renders ReactDOM to document import 'logs/logs'; // side effect - renders ReactDOM to document import 'sending-paused-notices-fix-button'; // side effect - renders ReactDOM to document import 'sending-paused-notices-resume-button'; // side effect - executes on doc ready, adds events import 'sending-paused-notices-authorize-email'; // side effect - renders ReactDOM to document import 'landingpage/landingpage'; // side effect - renders ReactDOM to document -import 'wizard/track_wizard_loaded_via_woocommerce'; +import 'wizard/track-wizard-loaded-via-woocommerce'; diff --git a/mailpoet/assets/js/src/webpack-mailpoet-index.jsx b/mailpoet/assets/js/src/webpack-mailpoet-index.jsx index dd8917d1e1..8902e9c907 100644 --- a/mailpoet/assets/js/src/webpack-mailpoet-index.jsx +++ b/mailpoet/assets/js/src/webpack-mailpoet-index.jsx @@ -6,6 +6,6 @@ import 'mailpoet'; // side effect - assigns MailPoet to window import 'dismissible-notice.jsx'; // side effect - adds jQuery event -import 'jquery.serialize_object'; // side effect - extends jQuery +import 'jquery.serialize-object'; // side effect - extends jQuery import 'parsleyjs'; // side effect - extends jQuery import 'parsley-validators.jsx'; diff --git a/mailpoet/assets/js/src/webpack-public-index.jsx b/mailpoet/assets/js/src/webpack-public-index.jsx index afdcdcefd2..1500b2b012 100644 --- a/mailpoet/assets/js/src/webpack-public-index.jsx +++ b/mailpoet/assets/js/src/webpack-public-index.jsx @@ -5,5 +5,5 @@ // Code can be gradually refactored to avoid side effects completely. import 'mailpoet'; // side effect - assigns MailPoet to window -import 'jquery.serialize_object'; // side effect - extends jQuery +import 'jquery.serialize-object'; // side effect - extends jQuery import 'public.tsx'; // side effect - assigns to window, sets up form validation, etc. diff --git a/mailpoet/assets/js/src/webpack-vendor-index.jsx b/mailpoet/assets/js/src/webpack-vendor-index.jsx index ae3175354a..390e05e9a2 100644 --- a/mailpoet/assets/js/src/webpack-vendor-index.jsx +++ b/mailpoet/assets/js/src/webpack-vendor-index.jsx @@ -5,5 +5,5 @@ // Code can be gradually refactored to avoid side effects completely. import 'handlebars'; // no side effect - this just explicitly requires Handlebars -import 'handlebars_helpers'; // side effect - extends Handlebars, assigns to window +import 'handlebars-helpers'; // side effect - extends Handlebars, assigns to window import 'wp-js-hooks'; // side effect - assigns to window diff --git a/mailpoet/eslint.config.js b/mailpoet/eslint.config.js index bc642229f6..46ad31c918 100644 --- a/mailpoet/eslint.config.js +++ b/mailpoet/eslint.config.js @@ -7,14 +7,14 @@ module.exports = [ { ignores: [ 'assets/js/src/vendor/**', - 'tests/javascript_newsletter_editor/testBundles/**', + 'tests/javascript-newsletter-editor/testBundles/**', ], }, ...es5Config.map((config) => ({ ...config, files: [ 'assets/js/src/**/*.js', - 'tests/javascript_newsletter_editor/**/*.js', + 'tests/javascript-newsletter-editor/**/*.js', ], })), ...es6Config.map((config) => ({ @@ -28,7 +28,7 @@ module.exports = [ // ES5 config overrides { - files: ['tests/javascript_newsletter_editor/**/*.js'], + files: ['tests/javascript-newsletter-editor/**/*.js'], languageOptions: { globals: { ...globals.mocha, @@ -75,11 +75,11 @@ module.exports = [ // (These are existing violations that we should fix at some point.) { files: [ - 'assets/js/src/common/premium_key/key_activation_button.tsx', + 'assets/js/src/common/premium-key/key-activation-button.tsx', 'assets/js/src/settings/pages/advanced/reinstall.tsx', - 'assets/js/src/settings/pages/advanced/recalculate_subscriber_score.tsx', - 'assets/js/src/settings/pages/send_with/other/activate_or_cancel.tsx', - 'assets/js/src/settings/pages/send_with/send_with_choice.tsx', + 'assets/js/src/settings/pages/advanced/recalculate-subscriber-score.tsx', + 'assets/js/src/settings/pages/send-with/other/activate-or-cancel.tsx', + 'assets/js/src/settings/pages/send-with/send-with-choice.tsx', ], rules: { '@typescript-eslint/await-thenable': 0, @@ -87,14 +87,14 @@ module.exports = [ }, { files: [ - 'assets/js/src/common/tabs/routed_tabs.tsx', + 'assets/js/src/common/tabs/routed-tabs.tsx', 'assets/js/src/common/thumbnail.ts', - 'assets/js/src/form_editor/components/form_settings/form_placement_options/settings_panels/placement_settings.tsx', - 'assets/js/src/form_editor/form_preview.ts', - 'assets/js/src/newsletters/campaign_stats/newsletter_general_stats.tsx', + 'assets/js/src/form-editor/components/form-settings/form-placement-options/settings-panels/placement-settings.tsx', + 'assets/js/src/form-editor/form-preview.ts', + 'assets/js/src/newsletters/campaign-stats/newsletter-general-stats.tsx', 'assets/js/src/newsletters/types.tsx', - 'assets/js/src/settings/store/normalize_settings.ts', - 'assets/js/src/subscribers/importExport/export.ts', + 'assets/js/src/settings/store/normalize-settings.ts', + 'assets/js/src/subscribers/import-export/export.ts', ], rules: { '@typescript-eslint/restrict-template-expressions': 0, @@ -106,64 +106,64 @@ module.exports = [ 'assets/js/src/automation/editor/components/automation/index.tsx', 'assets/js/src/automation/editor/components/automation/separator.tsx', 'assets/js/src/automation/editor/components/header/index.tsx', - 'assets/js/src/automation/editor/components/header/inserter_toggle.tsx', + 'assets/js/src/automation/editor/components/header/inserter-toggle.tsx', 'assets/js/src/automation/editor/components/sidebar/header.tsx', 'assets/js/src/automation/editor/index.tsx', 'assets/js/src/automation/editor/store/actions.ts', 'assets/js/src/automation/integrations/core/steps/delay/edit.tsx', - 'assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/edit_newsletter.tsx', - 'assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/email_panel.tsx', - 'assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/reply_to_panel.tsx', - 'assets/js/src/automation/integrations/mailpoet/steps/send_email/index.tsx', + 'assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/edit-newsletter.tsx', + 'assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/email-panel.tsx', + 'assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/reply-to-panel.tsx', + 'assets/js/src/automation/integrations/mailpoet/steps/send-email/index.tsx', 'assets/js/src/automation/listing/store/reducer.ts', - 'assets/js/src/common/error_boundary/utils.ts', - 'assets/js/src/common/functions/parsley_helper_functions.ts', - 'assets/js/src/common/listings/newsletter_stats/stats.tsx', - 'assets/js/src/common/top_bar/mailpoet_logo_responsive.tsx', + 'assets/js/src/common/error-boundary/utils.ts', + 'assets/js/src/common/functions/parsley-helper-functions.ts', + 'assets/js/src/common/listings/newsletter-stats/stats.tsx', + 'assets/js/src/common/top-bar/mailpoet-logo-responsive.tsx', 'assets/js/src/date.ts', - 'assets/js/src/form/fields/tokenField.tsx', - 'assets/js/src/form_editor/components/form_settings/form_placement_options/settings_panels/placement_settings.tsx', - 'assets/js/src/form_editor/form_preview.ts', - 'assets/js/src/form_editor/store/blocks_to_form_body.ts', - 'assets/js/src/form_editor/store/controls.tsx', - 'assets/js/src/form_editor/store/reducers/change_active_sidebar.ts', - 'assets/js/src/form_editor/store/reducers/toggle_form.ts', - 'assets/js/src/form_editor/store/reducers/toggle_fullscreen.ts', - 'assets/js/src/form_editor/store/reducers/toggle_sidebar.ts', - 'assets/js/src/form_editor/store/reducers/tutorial_dismiss.ts', - 'assets/js/src/form_editor/store/selectors.ts', + 'assets/js/src/form/fields/token-field.tsx', + 'assets/js/src/form-editor/components/form-settings/form-placement-options/settings-panels/placement-settings.tsx', + 'assets/js/src/form-editor/form-preview.ts', + 'assets/js/src/form-editor/store/blocks-to-form-body.ts', + 'assets/js/src/form-editor/store/controls.tsx', + 'assets/js/src/form-editor/store/reducers/change-active-sidebar.ts', + 'assets/js/src/form-editor/store/reducers/toggle-form.ts', + 'assets/js/src/form-editor/store/reducers/toggle-fullscreen.ts', + 'assets/js/src/form-editor/store/reducers/toggle-sidebar.ts', + 'assets/js/src/form-editor/store/reducers/tutorial-dismiss.ts', + 'assets/js/src/form-editor/store/selectors.ts', 'assets/js/src/homepage/components/product-discovery.tsx', 'assets/js/src/homepage/components/task-list.tsx', - 'assets/js/src/marketing_optin_block/frontend.ts', - 'assets/js/src/newsletter_editor/behaviors/TextEditorBehavior.ts', - 'assets/js/src/newsletter_editor/blocks/coupon.tsx', - 'assets/js/src/newsletter_editor/blocks/coupon/settings_header.tsx', - 'assets/js/src/newsletters/automatic_emails/events/event_options.tsx', - 'assets/js/src/newsletters/listings/heading_steps.tsx', + 'assets/js/src/marketing-optin-block/frontend.ts', + 'assets/js/src/newsletter-editor/behaviors/text-editor-behavior.ts', + 'assets/js/src/newsletter-editor/blocks/coupon.tsx', + 'assets/js/src/newsletter-editor/blocks/coupon/settings-header.tsx', + 'assets/js/src/newsletters/automatic-emails/events/event-options.tsx', + 'assets/js/src/newsletters/listings/heading-steps.tsx', 'assets/js/src/newsletters/send.tsx', - 'assets/js/src/newsletters/send/congratulate/success_pitch_mss.tsx', - 'assets/js/src/newsletters/send/ga_tracking.tsx', - 'assets/js/src/newsletters/send/re_engagement.tsx', + 'assets/js/src/newsletters/send/congratulate/success-pitch-mss.tsx', + 'assets/js/src/newsletters/send/ga-tracking.tsx', + 'assets/js/src/newsletters/send/re-engagement.tsx', 'assets/js/src/newsletters/send/standard.tsx', 'assets/js/src/newsletters/types.tsx', - 'assets/js/src/notices/email_volume_limit_notice.tsx', - 'assets/js/src/segments/dynamic/dynamic_segments_filters/fields/subscriber/subscriber_tag.tsx', - 'assets/js/src/segments/dynamic/dynamic_segments_filters/woocommerce.tsx', - 'assets/js/src/segments/dynamic/subscribers_counter.tsx', + 'assets/js/src/notices/email-volume-limit-notice.tsx', + 'assets/js/src/segments/dynamic/dynamic-segments-filters/fields/subscriber/subscriber-tag.tsx', + 'assets/js/src/segments/dynamic/dynamic-segments-filters/woocommerce.tsx', + 'assets/js/src/segments/dynamic/subscribers-counter.tsx', 'assets/js/src/segments/dynamic/validator.ts', 'assets/js/src/sending-paused-notices-resume-button.ts', - 'assets/js/src/settings/pages/basics/stats_notifications.tsx', - 'assets/js/src/settings/pages/basics/subscribe_on.tsx', - 'assets/js/src/settings/pages/signup_confirmation/confirmation_email_customizer.tsx', - 'assets/js/src/settings/pages/woo_commerce/checkout_optin.tsx', - 'assets/js/src/settings/pages/woo_commerce/email_customizer.tsx', - 'assets/js/src/settings/pages/woo_commerce/subscribe_old_customers.tsx', + 'assets/js/src/settings/pages/basics/stats-notifications.tsx', + 'assets/js/src/settings/pages/basics/subscribe-on.tsx', + 'assets/js/src/settings/pages/signup-confirmation/confirmation-email-customizer.tsx', + 'assets/js/src/settings/pages/woo-commerce/checkout-optin.tsx', + 'assets/js/src/settings/pages/woo-commerce/email-customizer.tsx', + 'assets/js/src/settings/pages/woo-commerce/subscribe-old-customers.tsx', 'assets/js/src/settings/store/actions/settings.ts', - 'assets/js/src/settings/store/hooks/useSelector.ts', - 'assets/js/src/settings/store/hooks/useSetting.ts', - 'assets/js/src/settings/store/normalize_settings.ts', - 'assets/js/src/subscribers/importExport/export.ts', - 'assets/js/src/wizard/welcome_wizard_controller.tsx', + 'assets/js/src/settings/store/hooks/use-selector.ts', + 'assets/js/src/settings/store/hooks/use-setting.ts', + 'assets/js/src/settings/store/normalize-settings.ts', + 'assets/js/src/subscribers/import-export/export.ts', + 'assets/js/src/wizard/welcome-wizard-controller.tsx', ], rules: { '@typescript-eslint/no-unsafe-return': 0, diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php index 4a04d33ea1..b53e3c3dd5 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php @@ -95,10 +95,10 @@ class EmailEditor { if (!$screen || self::MAILPOET_EMAIL_POST_TYPE !== $screen->post_type) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps return; } - $assetsParams = require_once Env::$assetsPath . '/dist/js/email_editor/email_editor.asset.php'; + $assetsParams = require_once Env::$assetsPath . '/dist/js/email-editor/email_editor.asset.php'; $this->wp->wpEnqueueScript( 'mailpoet_email_editor', - Env::$assetsUrl . '/dist/js/email_editor/email_editor.js', + Env::$assetsUrl . '/dist/js/email-editor/email_editor.js', $assetsParams['dependencies'], $assetsParams['version'], true @@ -106,7 +106,7 @@ class EmailEditor { $this->wp->wpEnqueueStyle( 'mailpoet_email_editor', - Env::$assetsUrl . '/dist/js/email_editor/email_editor.css', + Env::$assetsUrl . '/dist/js/email-editor/email_editor.css', [], $assetsParams['version'] ); diff --git a/mailpoet/lib/PostEditorBlocks/MarketingOptinBlock.php b/mailpoet/lib/PostEditorBlocks/MarketingOptinBlock.php index 3c973d96bd..9da3071f4b 100644 --- a/mailpoet/lib/PostEditorBlocks/MarketingOptinBlock.php +++ b/mailpoet/lib/PostEditorBlocks/MarketingOptinBlock.php @@ -34,7 +34,7 @@ class MarketingOptinBlock implements IntegrationInterface { * Register block scripts and assets. */ public function initialize() { - $script_asset_path = Env::$assetsPath . '/dist/js/marketing_optin_block/marketing-optin-block-frontend.asset.php'; + $script_asset_path = Env::$assetsPath . '/dist/js/marketing-optin-block/marketing-optin-block-frontend.asset.php'; $script_asset = file_exists($script_asset_path) ? require $script_asset_path : [ @@ -43,7 +43,7 @@ class MarketingOptinBlock implements IntegrationInterface { ]; $this->wp->wpRegisterScript( 'mailpoet-marketing-optin-block-frontend', - Env::$assetsUrl . '/dist/js/marketing_optin_block/marketing-optin-block-frontend.js', + Env::$assetsUrl . '/dist/js/marketing-optin-block/marketing-optin-block-frontend.js', $script_asset['dependencies'], $script_asset['version'], true diff --git a/mailpoet/lib/PostEditorBlocks/WooCommerceBlocksIntegration.php b/mailpoet/lib/PostEditorBlocks/WooCommerceBlocksIntegration.php index 662d036df2..60595e13b9 100644 --- a/mailpoet/lib/PostEditorBlocks/WooCommerceBlocksIntegration.php +++ b/mailpoet/lib/PostEditorBlocks/WooCommerceBlocksIntegration.php @@ -77,7 +77,7 @@ class WooCommerceBlocksIntegration { '__experimental_woocommerce_blocks_add_data_attributes_to_block', [$this, 'addDataAttributesToBlock'] ); - $block = $this->wp->registerBlockTypeFromMetadata(Env::$assetsPath . '/dist/js/marketing_optin_block'); + $block = $this->wp->registerBlockTypeFromMetadata(Env::$assetsPath . '/dist/js/marketing-optin-block'); // We need to force the script to load in the footer. register_block_type always adds the script to the header. if ($block instanceof \WP_Block_Type && $block->editor_script) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps $wpScripts = $this->wp->getWpScripts(); diff --git a/mailpoet/package.json b/mailpoet/package.json index 1af3ef7773..f62997789b 100644 --- a/mailpoet/package.json +++ b/mailpoet/package.json @@ -4,12 +4,12 @@ "extends @wordpress/browserslist-config" ], "scripts": { - "lint": "NODE_OPTIONS=--max_old_space_size=2048 eslint --max-warnings 0 'assets/js/src/**/*.{js,jsx,ts,tsx}' 'tests/javascript_newsletter_editor/**/*.js'", + "lint": "NODE_OPTIONS=--max_old_space_size=2048 eslint --max-warnings 0 'assets/js/src/**/*.{js,jsx,ts,tsx}' 'tests/javascript-newsletter-editor/**/*.js'", "autoprefixer": "postcss assets/dist/css/*.css --use autoprefixer --no-map --replace", "scss": "sass assets/css/src/:assets/dist/css/ --style compressed", "stylelint": "stylelint --fix", "stylelint-check": "stylelint", - "test": "env NODE_PATH=$NODE_PATH:./assets/js/src mocha --recursive --require tests/javascript/babel_register.js tests/javascript --extension spec.js --extension spec.ts", + "test": "env NODE_PATH=$NODE_PATH:./assets/js/src mocha --recursive --require tests/javascript/babel-register.js tests/javascript --extension spec.js --extension spec.ts", "check-types": "tsc --noEmit", "storybook": "start-storybook -s ./ -p 8083", "build-storybook": "build-storybook", diff --git a/mailpoet/tasks/npm_post_install.sh b/mailpoet/tasks/npm_post_install.sh index 21abdb34be..67757c3fd3 100755 --- a/mailpoet/tasks/npm_post_install.sh +++ b/mailpoet/tasks/npm_post_install.sh @@ -1,12 +1,12 @@ #!/bin/bash echo "/* eslint-disable */ -" > $INIT_CWD/assets/js/src/newsletter_editor/behaviors/tinymce-icons.js +" > $INIT_CWD/assets/js/src/newsletter-editor/behaviors/tinymce-icons.js echo "import tinymce from 'tinymce/tinymce'; -" >> $INIT_CWD/assets/js/src/newsletter_editor/behaviors/tinymce-icons.js +" >> $INIT_CWD/assets/js/src/newsletter-editor/behaviors/tinymce-icons.js -cat $INIT_CWD/node_modules/tinymce/icons/default/icons.min.js >> $INIT_CWD/assets/js/src/newsletter_editor/behaviors/tinymce-icons.js +cat $INIT_CWD/node_modules/tinymce/icons/default/icons.min.js >> $INIT_CWD/assets/js/src/newsletter-editor/behaviors/tinymce-icons.js # fix SCSS file being exposed as CSS file so it can be imported correctly cp $INIT_CWD/node_modules/react-dates/lib/css/_datepicker.css $INIT_CWD/node_modules/react-dates/lib/css/_datepicker.scss diff --git a/mailpoet/tests/javascript-newsletter-editor/mocha-test-helper.js b/mailpoet/tests/javascript-newsletter-editor/mocha-test-helper.js index ed7dbbc5ce..a79a0c7990 100644 --- a/mailpoet/tests/javascript-newsletter-editor/mocha-test-helper.js +++ b/mailpoet/tests/javascript-newsletter-editor/mocha-test-helper.js @@ -43,7 +43,7 @@ global.window.wp = global.window.wp || { }; testHelpers.loadScript( - 'tests/javascript_newsletter_editor/testBundles/vendor.js', + 'tests/javascript-newsletter-editor/testBundles/vendor.js', global.window, ); const Handlebars = global.window.Handlebars; diff --git a/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/blocks/automated-latest-content-layout.spec.js b/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/blocks/automated-latest-content-layout.spec.js index 7e6ab86ea1..7bbc28fc20 100644 --- a/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/blocks/automated-latest-content-layout.spec.js +++ b/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/blocks/automated-latest-content-layout.spec.js @@ -35,7 +35,7 @@ describe('Automated Latest Content Layout Supervisor', function () { .returns(jQuery.Deferred()); module = AutomatedLatestContentInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { getBulkTransformedPosts: mock, }, @@ -410,7 +410,7 @@ describe('Automated latest content layout', function () { before(function () { module = AutomatedLatestContentInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { getPostTypes: function () { return jQuery.Deferred(); diff --git a/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/components/save.spec.js b/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/components/save.spec.js index 3e9ffdadc3..0426e7e557 100644 --- a/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/components/save.spec.js +++ b/mailpoet/tests/javascript-newsletter-editor/newsletter-editor/components/save.spec.js @@ -15,7 +15,7 @@ describe('Save', function () { var module; before(function () { module = SaveInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { saveNewsletter: function () { return jQuery.Deferred(); @@ -53,7 +53,7 @@ describe('Save', function () { }, }); innerModule = SaveInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { saveNewsletter: sinon.stub().returns(promise), }, @@ -67,7 +67,7 @@ describe('Save', function () { it('sends newsletter json to server for saving', function () { var mock = sinon.mock().once().returns(jQuery.Deferred()); var innerModule = SaveInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { saveNewsletter: mock, }, @@ -97,7 +97,7 @@ describe('Save', function () { body: body, }); innerModule = SaveInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { saveNewsletter: mock, }, @@ -277,7 +277,7 @@ describe('Save', function () { trackEvent: function () {}, }, }, - 'newsletter_editor/App': { App }, + 'newsletter-editor/app': { App }, common: { fromNewsletter: function () { return promiseMock; @@ -309,7 +309,7 @@ describe('Save', function () { it('saves newsletter when clicked on "next" button', function () { var spy = sinon.spy(); var module = SaveInjector({ - 'newsletter_editor/components/communication': { + 'newsletter-editor/components/communication': { CommunicationComponent: { saveNewsletter: function () { return jQuery.Deferred(); diff --git a/mailpoet/tsconfig.json b/mailpoet/tsconfig.json index 6537b5517c..2ba5bb62cd 100644 --- a/mailpoet/tsconfig.json +++ b/mailpoet/tsconfig.json @@ -4,7 +4,7 @@ "assets/js/src/**/*", "assets/js/src/**/*.json", "tests/javascript/**/*.ts", - "tests/javascript_newsletter_editor/**/*.ts" + "tests/javascript-newsletter-editor/**/*.ts" ], "compilerOptions": { "baseUrl": "./assets/js/src", diff --git a/mailpoet/webpack.config.js b/mailpoet/webpack.config.js index 1311841b0d..4cf6f2e6d7 100644 --- a/mailpoet/webpack.config.js +++ b/mailpoet/webpack.config.js @@ -122,7 +122,7 @@ const baseConfig = { { include: path.resolve( __dirname, - 'assets/js/src/webpack_admin_expose.js', + 'assets/js/src/webpack-admin-expose.js', ), loader: 'expose-loader', options: { exposes: globalPrefix }, @@ -195,17 +195,17 @@ const baseConfig = { const adminConfig = { name: 'admin', entry: { - vendor: 'webpack_vendor_index.jsx', - mailpoet: 'webpack_mailpoet_index.jsx', - admin_vendor: ['prop-types', 'lodash', 'webpack_admin_expose.js'], // libraries shared between free and premium plugin - admin: 'webpack_admin_index.tsx', + vendor: 'webpack-vendor-index.jsx', + mailpoet: 'webpack-mailpoet-index.jsx', + admin_vendor: ['prop-types', 'lodash', 'webpack-admin-expose.js'], // libraries shared between free and premium plugin + admin: 'webpack-admin-index.tsx', automation: 'automation/automation.tsx', automation_editor: 'automation/editor/index.tsx', automation_analytics: 'automation/integrations/mailpoet/analytics/index.tsx', automation_templates: 'automation/templates/index.tsx', - newsletter_editor: 'newsletter_editor/webpack_index.jsx', - form_editor: 'form_editor/form_editor.jsx', + newsletter_editor: 'newsletter-editor/webpack-index.jsx', + form_editor: 'form-editor/form-editor.jsx', settings: 'settings/index.tsx', }, plugins: [ @@ -241,7 +241,7 @@ const adminConfig = { const publicConfig = { name: 'public', entry: { - public: 'webpack_public_index.jsx', + public: 'webpack-public-index.jsx', }, plugins: [ ...baseConfig.plugins, @@ -249,7 +249,7 @@ const publicConfig = { // replace MailPoet definition with a smaller version for public new webpack.NormalModuleReplacementPlugin( /mailpoet\.ts/, - './mailpoet_public.ts', + './mailpoet-public.ts', ), ], externals: { @@ -261,10 +261,10 @@ const publicConfig = { const testConfig = { name: 'test', entry: { - vendor: 'webpack_vendor_index.jsx', + vendor: 'webpack-vendor-index.jsx', testNewsletterEditor: [ - 'webpack_mailpoet_index.jsx', - 'newsletter_editor/webpack_index.jsx', + 'webpack-mailpoet-index.jsx', + 'newsletter-editor/webpack-index.jsx', 'components/config.spec.js', 'components/content.spec.js', @@ -275,7 +275,7 @@ const testConfig = { 'components/styles.spec.js', 'components/communication.spec.js', - 'blocks/automatedLatestContentLayout.spec.js', + 'blocks/automated-latest-content-layout.spec.js', 'blocks/button.spec.js', 'blocks/container.spec.js', 'blocks/coupon.spec.js', @@ -293,7 +293,7 @@ const testConfig = { output: { path: path.join( __dirname, - 'tests/javascript_newsletter_editor/testBundles', + 'tests/javascript-newsletter-editor/testBundles', ), filename: '[name].js', }, @@ -301,14 +301,14 @@ const testConfig = { // replace MailPoet definition with a smaller version for public new webpack.NormalModuleReplacementPlugin( /mailpoet\.js/, - './mailpoet_tests.js', + './mailpoet-tests.js', ), ], resolve: { modules: [ 'node_modules', 'assets/js/src', - 'tests/javascript_newsletter_editor/newsletter_editor', + 'tests/javascript-newsletter-editor/newsletter-editor', ], extensions: ['.js', '.jsx', '.ts', '.tsx'], alias: { @@ -335,7 +335,7 @@ const testConfig = { const formPreviewConfig = { name: 'form_preview', entry: { - form_preview: 'form_editor/form_preview.ts', + form_preview: 'form-editor/form-preview.ts', }, externals: { jquery: 'jQuery', @@ -346,7 +346,7 @@ const formPreviewConfig = { const postEditorBlock = { name: 'post_editor_block', entry: { - post_editor_block: 'post_editor_block/blocks.jsx', + post_editor_block: 'post-editor-block/blocks.jsx', }, }; @@ -384,13 +384,13 @@ const marketingOptinBlock = Object.assign({}, wpScriptConfig, { stats, name: 'marketing_optin_block', entry: { - 'marketing-optin-block': '/assets/js/src/marketing_optin_block/index.tsx', + 'marketing-optin-block': '/assets/js/src/marketing-optin-block/index.tsx', 'marketing-optin-block-frontend': - '/assets/js/src/marketing_optin_block/frontend.ts', + '/assets/js/src/marketing-optin-block/frontend.ts', }, output: { filename: '[name].js', - path: path.join(__dirname, 'assets/dist/js/marketing_optin_block'), + path: path.join(__dirname, 'assets/dist/js/marketing-optin-block'), }, module: Object.assign({}, wpScriptConfig.module, { rules: [ @@ -431,7 +431,7 @@ const marketingOptinBlock = Object.assign({}, wpScriptConfig, { new WebpackCopyPlugin({ patterns: [ { - from: 'assets/js/src/marketing_optin_block/block.json', + from: 'assets/js/src/marketing-optin-block/block.json', to: 'block.json', }, ], @@ -442,11 +442,11 @@ const marketingOptinBlock = Object.assign({}, wpScriptConfig, { const emailEditor = Object.assign({}, wpScriptConfig, { name: 'email_editor', entry: { - email_editor: 'email_editor/index.ts', + email_editor: 'email-editor/index.ts', }, output: { filename: '[name].js', - path: path.join(__dirname, 'assets/dist/js/email_editor'), + path: path.join(__dirname, 'assets/dist/js/email-editor'), }, resolve: { ...wpScriptConfig.resolve,