Skip to content

Commit

Permalink
Use wp_unique_id-based block class names instead of uniqid
Browse files Browse the repository at this point in the history
This transforms hash-based block class names into a more predictable class names based on `wp_unique_id()`. This should allow for re-enabling automatic parsed CSS transient caching.
  • Loading branch information
delawski committed Mar 1, 2022
1 parent 28bc1bb commit 3c91cc4
Show file tree
Hide file tree
Showing 4 changed files with 462 additions and 115 deletions.
115 changes: 58 additions & 57 deletions .phpstorm.meta.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,63 +7,64 @@

// TODO: I'd like to use AmpWpPlugin::SERVICES directly here but it doesn't seem to work.
map( [
'admin.analytics_menu' => \AmpProject\AmpWP\Admin\AnalyticsOptionsSubmenu::class,
'admin.google_fonts' => \AmpProject\AmpWP\Admin\GoogleFonts::class,
'admin.onboarding_menu' => \AmpProject\AmpWP\Admin\OnboardingWizardSubmenu::class,
'admin.onboarding_wizard' => \AmpProject\AmpWP\Admin\OnboardingWizardSubmenuPage::class,
'admin.options_menu' => \AmpProject\AmpWP\Admin\OptionsMenu::class,
'admin.support_screen' => \AmpProject\AmpWP\Admin\SupportScreen::class,
'admin.support' => \AmpProject\AmpWP\Admin\SupportLink::class,
'admin.paired_browsing' => \AmpProject\AmpWP\Admin\PairedBrowsing::class,
'admin.plugin_row_meta' => \AmpProject\AmpWP\Admin\PluginRowMeta::class,
'admin.polyfills' => \AmpProject\AmpWP\Admin\Polyfills::class,
'admin.user_rest_endpoint_extension' => \AmpProject\AmpWP\Admin\UserRESTEndpointExtension::class,
'admin.validation_counts' => \AmpProject\AmpWP\Admin\ValidationCounts::class,
'amp_slug_customization_watcher' => \AmpProject\AmpWP\AmpSlugCustomizationWatcher::class,
'background_task_deactivator' => \AmpProject\AmpWP\BackgroundTask\BackgroundTaskDeactivator::class,
'cli.command_namespace' => \AmpProject\AmpWP\CliCli\CommandNamespaceRegistration::class,
'cli.optimizer_command' => \AmpProject\AmpWP\CliCli\OptimizerCommand::class,
'cli.transformer_command' => \AmpProject\AmpWP\CliCli\TransformerCommand::class,
'cli.validation_command' => \AmpProject\AmpWP\CliCli\ValidationCommand::class,
'css_transient_cache.ajax_handler' => \AmpProject\AmpWP\Admin\ReenableCssTransientCachingAjaxAction::class,
'css_transient_cache.monitor' => \AmpProject\AmpWP\BackgroundTask\MonitorCssTransientCaching::class,
'dependency_support' => \AmpProject\AmpWP\DependencySupport::class,
'dev_tools.block_sources' => \AmpProject\AmpWP\DevTools\BlockSources::class,
'dev_tools.callback_reflection' => \AmpProject\AmpWP\DevTools\CallbackReflection::class,
'dev_tools.error_page' => \AmpProject\AmpWP\DevTools\ErrorPage::class,
'dev_tools.file_reflection' => \AmpProject\AmpWP\DevTools\FileReflection::class,
'dev_tools.likely_culprit_detector' => \AmpProject\AmpWP\DevTools\LikelyCulpritDetector::class,
'dev_tools.user_access' => \AmpProject\AmpWP\DevTools\UserAccess::class,
'editor.editor_support' => \AmpProject\AmpWP\Editor\EditorSupport::class,
'extra_theme_and_plugin_headers' => \AmpProject\AmpWP\ExtraThemeAndPluginHeaders::class,
'injector' => \AmpProject\AmpWP\Infrastructure\Injector::class,
'loading_error' => \AmpProject\AmpWP\LoadingError::class,
'mobile_redirection' => \AmpProject\AmpWP\MobileRedirection::class,
'obsolete_block_attribute_remover' => \AmpProject\AmpWP\ObsoleteBlockAttributeRemover::class,
'optimizer' => \AmpProject\AmpWP\Optimizer\OptimizerService::class,
'optimizer.hero_candidate_filtering' => \AmpProject\AmpWP\Optimizer\HeroCandidateFiltering::class,
'paired_routing' => \AmpProject\AmpWP\PairedRouting::class,
'paired_url' => \AmpProject\AmpWP\PairedUrl::class,
'plugin_activation_notice' => \AmpProject\AmpWP\Admin\PluginActivationNotice::class,
'plugin_activation_site_scan' => \AmpProject\AmpWP\Admin\PluginActivationSiteScan::class,
'plugin_registry' => \AmpProject\AmpWP\PluginRegistry::class,
'plugin_suppression' => \AmpProject\AmpWP\PluginSuppression::class,
'reader_theme_loader' => \AmpProject\AmpWP\ReaderThemeLoader::class,
'reader_theme_support_features' => \AmpProject\AmpWP\ReaderThemeSupportFeatures::class,
'rest.options_controller' => \AmpProject\AmpWP\OptionsRESTController::class,
'rest.scannable_urls_controller' => \AmpProject\AmpWP\Validation\ScannableURLsRestController::class,
'rest.validation_counts_controller' => \AmpProject\AmpWP\Validation\ValidationCountsRestController::class,
'sandboxing' => \AmpProject\AmpWP\Sandboxing::class,
'server_timing' => \AmpProject\AmpWP\Instrumentation\ServerTiming::class,
'site_health_integration' => \AmpProject\AmpWP\Admin\SiteHealth::class,
'support' => \AmpProject\AmpWP\Support\SupportCliCommand::class,
'support_rest_controller' => \AmpProject\AmpWP\Support\SupportRESTController::class,
'url_validation_cron' => \AmpProject\AmpWP\Validation\URLValidationCron::class,
'url_validation_rest_controller' => \AmpProject\AmpWP\Validation\URLValidationRESTController::class,
'validated_url_stylesheet_gc' => \AmpProject\AmpWP\BackgroundTask\ValidatedUrlStylesheetDataGarbageCollection::class,
'validation_data_gc' => \AmpProject\AmpWP\BackgroundTask\ValidationDataGarbageCollection::class,
'validation.scannable_url_provider' => \AmpProject\AmpWP\Validation\ScannableURLProvider::class,
'validation.url_validation_provider' => \AmpProject\AmpWP\Validation\URLValidationProvider::class,
'admin.analytics_menu' => \AmpProject\AmpWP\Admin\AnalyticsOptionsSubmenu::class,
'admin.google_fonts' => \AmpProject\AmpWP\Admin\GoogleFonts::class,
'admin.onboarding_menu' => \AmpProject\AmpWP\Admin\OnboardingWizardSubmenu::class,
'admin.onboarding_wizard' => \AmpProject\AmpWP\Admin\OnboardingWizardSubmenuPage::class,
'admin.options_menu' => \AmpProject\AmpWP\Admin\OptionsMenu::class,
'admin.support_screen' => \AmpProject\AmpWP\Admin\SupportScreen::class,
'admin.support' => \AmpProject\AmpWP\Admin\SupportLink::class,
'admin.paired_browsing' => \AmpProject\AmpWP\Admin\PairedBrowsing::class,
'admin.plugin_row_meta' => \AmpProject\AmpWP\Admin\PluginRowMeta::class,
'admin.polyfills' => \AmpProject\AmpWP\Admin\Polyfills::class,
'admin.user_rest_endpoint_extension' => \AmpProject\AmpWP\Admin\UserRESTEndpointExtension::class,
'admin.validation_counts' => \AmpProject\AmpWP\Admin\ValidationCounts::class,
'amp_slug_customization_watcher' => \AmpProject\AmpWP\AmpSlugCustomizationWatcher::class,
'background_task_deactivator' => \AmpProject\AmpWP\BackgroundTask\BackgroundTaskDeactivator::class,
'block_uniqid_class_name_transformer' => \AmpProject\AmpWP\BlockUniqidClassNameTransformer::class,
'cli.command_namespace' => \AmpProject\AmpWP\CliCli\CommandNamespaceRegistration::class,
'cli.optimizer_command' => \AmpProject\AmpWP\CliCli\OptimizerCommand::class,
'cli.transformer_command' => \AmpProject\AmpWP\CliCli\TransformerCommand::class,
'cli.validation_command' => \AmpProject\AmpWP\CliCli\ValidationCommand::class,
'css_transient_cache.ajax_handler' => \AmpProject\AmpWP\Admin\ReenableCssTransientCachingAjaxAction::class,
'css_transient_cache.monitor' => \AmpProject\AmpWP\BackgroundTask\MonitorCssTransientCaching::class,
'dependency_support' => \AmpProject\AmpWP\DependencySupport::class,
'dev_tools.block_sources' => \AmpProject\AmpWP\DevTools\BlockSources::class,
'dev_tools.callback_reflection' => \AmpProject\AmpWP\DevTools\CallbackReflection::class,
'dev_tools.error_page' => \AmpProject\AmpWP\DevTools\ErrorPage::class,
'dev_tools.file_reflection' => \AmpProject\AmpWP\DevTools\FileReflection::class,
'dev_tools.likely_culprit_detector' => \AmpProject\AmpWP\DevTools\LikelyCulpritDetector::class,
'dev_tools.user_access' => \AmpProject\AmpWP\DevTools\UserAccess::class,
'editor.editor_support' => \AmpProject\AmpWP\Editor\EditorSupport::class,
'extra_theme_and_plugin_headers' => \AmpProject\AmpWP\ExtraThemeAndPluginHeaders::class,
'injector' => \AmpProject\AmpWP\Infrastructure\Injector::class,
'loading_error' => \AmpProject\AmpWP\LoadingError::class,
'mobile_redirection' => \AmpProject\AmpWP\MobileRedirection::class,
'obsolete_block_attribute_remover' => \AmpProject\AmpWP\ObsoleteBlockAttributeRemover::class,
'optimizer' => \AmpProject\AmpWP\Optimizer\OptimizerService::class,
'optimizer.hero_candidate_filtering' => \AmpProject\AmpWP\Optimizer\HeroCandidateFiltering::class,
'paired_routing' => \AmpProject\AmpWP\PairedRouting::class,
'paired_url' => \AmpProject\AmpWP\PairedUrl::class,
'plugin_activation_notice' => \AmpProject\AmpWP\Admin\PluginActivationNotice::class,
'plugin_activation_site_scan' => \AmpProject\AmpWP\Admin\PluginActivationSiteScan::class,
'plugin_registry' => \AmpProject\AmpWP\PluginRegistry::class,
'plugin_suppression' => \AmpProject\AmpWP\PluginSuppression::class,
'reader_theme_loader' => \AmpProject\AmpWP\ReaderThemeLoader::class,
'reader_theme_support_features' => \AmpProject\AmpWP\ReaderThemeSupportFeatures::class,
'rest.options_controller' => \AmpProject\AmpWP\OptionsRESTController::class,
'rest.scannable_urls_controller' => \AmpProject\AmpWP\Validation\ScannableURLsRestController::class,
'rest.validation_counts_controller' => \AmpProject\AmpWP\Validation\ValidationCountsRestController::class,
'sandboxing' => \AmpProject\AmpWP\Sandboxing::class,
'server_timing' => \AmpProject\AmpWP\Instrumentation\ServerTiming::class,
'site_health_integration' => \AmpProject\AmpWP\Admin\SiteHealth::class,
'support' => \AmpProject\AmpWP\Support\SupportCliCommand::class,
'support_rest_controller' => \AmpProject\AmpWP\Support\SupportRESTController::class,
'url_validation_cron' => \AmpProject\AmpWP\Validation\URLValidationCron::class,
'url_validation_rest_controller' => \AmpProject\AmpWP\Validation\URLValidationRESTController::class,
'validated_url_stylesheet_gc' => \AmpProject\AmpWP\BackgroundTask\ValidatedUrlStylesheetDataGarbageCollection::class,
'validation_data_gc' => \AmpProject\AmpWP\BackgroundTask\ValidationDataGarbageCollection::class,
'validation.scannable_url_provider' => \AmpProject\AmpWP\Validation\ScannableURLProvider::class,
'validation.url_validation_provider' => \AmpProject\AmpWP\Validation\URLValidationProvider::class,
] )
);

Expand Down
117 changes: 59 additions & 58 deletions src/AmpWpPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,64 +69,65 @@ final class AmpWpPlugin extends ServiceBasedPlugin {
* @var string[]
*/
const SERVICES = [
'admin.analytics_menu' => Admin\AnalyticsOptionsSubmenu::class,
'admin.google_fonts' => Admin\GoogleFonts::class,
'admin.onboarding_menu' => Admin\OnboardingWizardSubmenu::class,
'admin.onboarding_wizard' => Admin\OnboardingWizardSubmenuPage::class,
'admin.options_menu' => Admin\OptionsMenu::class,
'admin.paired_browsing' => Admin\PairedBrowsing::class,
'admin.plugin_row_meta' => Admin\PluginRowMeta::class,
'admin.support_screen' => Admin\SupportScreen::class,
'admin.support' => Admin\SupportLink::class,
'admin.polyfills' => Admin\Polyfills::class,
'admin.user_rest_endpoint_extension' => Admin\UserRESTEndpointExtension::class,
'admin.validation_counts' => Admin\ValidationCounts::class,
'admin.amp_plugins' => Admin\AmpPlugins::class,
'admin.amp_themes' => Admin\AmpThemes::class,
'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class,
'background_task_deactivator' => BackgroundTaskDeactivator::class,
'cli.command_namespace' => Cli\CommandNamespaceRegistration::class,
'cli.optimizer_command' => Cli\OptimizerCommand::class,
'cli.transformer_command' => Cli\TransformerCommand::class,
'cli.validation_command' => Cli\ValidationCommand::class,
'css_transient_cache.ajax_handler' => Admin\ReenableCssTransientCachingAjaxAction::class,
'css_transient_cache.monitor' => BackgroundTask\MonitorCssTransientCaching::class,
'dependency_support' => DependencySupport::class,
'dev_tools.block_sources' => DevTools\BlockSources::class,
'dev_tools.callback_reflection' => DevTools\CallbackReflection::class,
'dev_tools.error_page' => DevTools\ErrorPage::class,
'dev_tools.file_reflection' => DevTools\FileReflection::class,
'dev_tools.likely_culprit_detector' => DevTools\LikelyCulpritDetector::class,
'dev_tools.user_access' => DevTools\UserAccess::class,
'editor.editor_support' => Editor\EditorSupport::class,
'extra_theme_and_plugin_headers' => ExtraThemeAndPluginHeaders::class,
'loading_error' => LoadingError::class,
'mobile_redirection' => MobileRedirection::class,
'obsolete_block_attribute_remover' => ObsoleteBlockAttributeRemover::class,
'optimizer' => OptimizerService::class,
'optimizer.hero_candidate_filtering' => HeroCandidateFiltering::class,
'paired_routing' => PairedRouting::class,
'paired_url' => PairedUrl::class,
'plugin_activation_notice' => Admin\PluginActivationNotice::class,
'plugin_activation_site_scan' => Admin\PluginActivationSiteScan::class,
'plugin_registry' => PluginRegistry::class,
'plugin_suppression' => PluginSuppression::class,
'reader_theme_loader' => ReaderThemeLoader::class,
'reader_theme_support_features' => ReaderThemeSupportFeatures::class,
'rest.options_controller' => OptionsRESTController::class,
'rest.scannable_urls_controller' => Validation\ScannableURLsRestController::class,
'rest.validation_counts_controller' => Validation\ValidationCountsRestController::class,
'sandboxing' => Sandboxing::class,
'server_timing' => Instrumentation\ServerTiming::class,
'site_health_integration' => Admin\SiteHealth::class,
'support' => SupportCliCommand::class,
'support_rest_controller' => SupportRESTController::class,
'url_validation_cron' => URLValidationCron::class,
'url_validation_rest_controller' => Validation\URLValidationRESTController::class,
'validated_url_stylesheet_gc' => BackgroundTask\ValidatedUrlStylesheetDataGarbageCollection::class,
'validated_data_gc' => BackgroundTask\ValidationDataGarbageCollection::class,
'validation.scannable_url_provider' => ScannableURLProvider::class,
'validation.url_validation_provider' => URLValidationProvider::class,
'admin.analytics_menu' => Admin\AnalyticsOptionsSubmenu::class,
'admin.google_fonts' => Admin\GoogleFonts::class,
'admin.onboarding_menu' => Admin\OnboardingWizardSubmenu::class,
'admin.onboarding_wizard' => Admin\OnboardingWizardSubmenuPage::class,
'admin.options_menu' => Admin\OptionsMenu::class,
'admin.paired_browsing' => Admin\PairedBrowsing::class,
'admin.plugin_row_meta' => Admin\PluginRowMeta::class,
'admin.support_screen' => Admin\SupportScreen::class,
'admin.support' => Admin\SupportLink::class,
'admin.polyfills' => Admin\Polyfills::class,
'admin.user_rest_endpoint_extension' => Admin\UserRESTEndpointExtension::class,
'admin.validation_counts' => Admin\ValidationCounts::class,
'admin.amp_plugins' => Admin\AmpPlugins::class,
'admin.amp_themes' => Admin\AmpThemes::class,
'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class,
'background_task_deactivator' => BackgroundTaskDeactivator::class,
'block_uniqid_class_name_transformer' => BlockUniqidClassNameTransformer::class,
'cli.command_namespace' => Cli\CommandNamespaceRegistration::class,
'cli.optimizer_command' => Cli\OptimizerCommand::class,
'cli.transformer_command' => Cli\TransformerCommand::class,
'cli.validation_command' => Cli\ValidationCommand::class,
'css_transient_cache.ajax_handler' => Admin\ReenableCssTransientCachingAjaxAction::class,
'css_transient_cache.monitor' => BackgroundTask\MonitorCssTransientCaching::class,
'dependency_support' => DependencySupport::class,
'dev_tools.block_sources' => DevTools\BlockSources::class,
'dev_tools.callback_reflection' => DevTools\CallbackReflection::class,
'dev_tools.error_page' => DevTools\ErrorPage::class,
'dev_tools.file_reflection' => DevTools\FileReflection::class,
'dev_tools.likely_culprit_detector' => DevTools\LikelyCulpritDetector::class,
'dev_tools.user_access' => DevTools\UserAccess::class,
'editor.editor_support' => Editor\EditorSupport::class,
'extra_theme_and_plugin_headers' => ExtraThemeAndPluginHeaders::class,
'loading_error' => LoadingError::class,
'mobile_redirection' => MobileRedirection::class,
'obsolete_block_attribute_remover' => ObsoleteBlockAttributeRemover::class,
'optimizer' => OptimizerService::class,
'optimizer.hero_candidate_filtering' => HeroCandidateFiltering::class,
'paired_routing' => PairedRouting::class,
'paired_url' => PairedUrl::class,
'plugin_activation_notice' => Admin\PluginActivationNotice::class,
'plugin_activation_site_scan' => Admin\PluginActivationSiteScan::class,
'plugin_registry' => PluginRegistry::class,
'plugin_suppression' => PluginSuppression::class,
'reader_theme_loader' => ReaderThemeLoader::class,
'reader_theme_support_features' => ReaderThemeSupportFeatures::class,
'rest.options_controller' => OptionsRESTController::class,
'rest.scannable_urls_controller' => Validation\ScannableURLsRestController::class,
'rest.validation_counts_controller' => Validation\ValidationCountsRestController::class,
'sandboxing' => Sandboxing::class,
'server_timing' => Instrumentation\ServerTiming::class,
'site_health_integration' => Admin\SiteHealth::class,
'support' => SupportCliCommand::class,
'support_rest_controller' => SupportRESTController::class,
'url_validation_cron' => URLValidationCron::class,
'url_validation_rest_controller' => Validation\URLValidationRESTController::class,
'validated_url_stylesheet_gc' => BackgroundTask\ValidatedUrlStylesheetDataGarbageCollection::class,
'validated_data_gc' => BackgroundTask\ValidationDataGarbageCollection::class,
'validation.scannable_url_provider' => ScannableURLProvider::class,
'validation.url_validation_provider' => URLValidationProvider::class,
];

/**
Expand Down
Loading

0 comments on commit 3c91cc4

Please sign in to comment.