diff --git a/admin/formatter/class-metabox-formatter.php b/admin/formatter/class-metabox-formatter.php index 64d7cd2c85c..73b2abf4298 100644 --- a/admin/formatter/class-metabox-formatter.php +++ b/admin/formatter/class-metabox-formatter.php @@ -179,7 +179,6 @@ private function get_defaults() { 'show_markers' => apply_filters( 'wpseo_enable_assessment_markers', true ), 'zapierIntegrationActive' => WPSEO_Options::get( 'zapier_integration_active', false ) ? 1 : 0, 'zapierConnectedStatus' => ! empty( WPSEO_Options::get( 'zapier_subscription', [] ) ) ? 1 : 0, - 'wordproofIntegrationActive' => YoastSEO()->helpers->wordproof->is_active() ? 1 : 0, 'getJetpackBoostPrePublishLink' => WPSEO_Shortlinker::get( 'https://yoa.st/jetpack-boost-get-prepublish?domain=' . $host ), 'upgradeJetpackBoostPrePublishLink' => WPSEO_Shortlinker::get( 'https://yoa.st/jetpack-boost-upgrade-prepublish?domain=' . $host ), 'woocommerceUpsellSchemaLink' => WPSEO_Shortlinker::get( 'https://yoa.st/product-schema-metabox' ), diff --git a/admin/metabox/class-metabox.php b/admin/metabox/class-metabox.php index 7dc1329ff3d..9316bf3e39d 100644 --- a/admin/metabox/class-metabox.php +++ b/admin/metabox/class-metabox.php @@ -208,12 +208,6 @@ public static function translate_meta_boxes() { '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); - /* translators: %s expands to the post type name. */ - WPSEO_Meta::$meta_fields['advanced']['wordproof_timestamp']['title'] = __( 'Timestamp this %s', 'wordpress-seo' ); - WPSEO_Meta::$meta_fields['advanced']['wordproof_timestamp']['description'] = __( 'Use WordProof to timestamp this page to comply with legal regulations and join the fight for a more transparant and accountable internet.', 'wordpress-seo' ); - WPSEO_Meta::$meta_fields['advanced']['wordproof_timestamp']['options']['0'] = __( 'Off', 'wordpress-seo' ); - WPSEO_Meta::$meta_fields['advanced']['wordproof_timestamp']['options']['1'] = __( 'On', 'wordpress-seo' ); - WPSEO_Meta::$meta_fields['advanced']['wordproof_timestamp']['type'] = 'hidden'; WPSEO_Meta::$meta_fields['advanced']['redirect']['title'] = __( '301 Redirect', 'wordpress-seo' ); WPSEO_Meta::$meta_fields['advanced']['redirect']['description'] = __( 'The URL that this page should redirect to.', 'wordpress-seo' ); diff --git a/admin/tracking/class-tracking-settings-data.php b/admin/tracking/class-tracking-settings-data.php index bf3e7a780c2..45e25d35bac 100644 --- a/admin/tracking/class-tracking-settings-data.php +++ b/admin/tracking/class-tracking-settings-data.php @@ -226,7 +226,6 @@ class WPSEO_Tracking_Settings_Data implements WPSEO_Collection { 'search_cleanup_patterns', 'search_character_limit', 'redirect_search_pretty_urls', - 'wordproof_integration_active', 'indexables_overview_state', 'deny_search_crawling', 'deny_wp_json_crawling', diff --git a/composer.json b/composer.json index fe4dce3ee37..c5d15e9e5c2 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,6 @@ "psr/log": "^1.0", "symfony/config": "^3.4", "symfony/dependency-injection": "^3.4", - "wordproof/wordpress-sdk": "1.3.5", "yoast/wp-test-utils": "^1.2", "yoast/yoastcs": "^3.1.0" }, @@ -92,7 +91,7 @@ "Yoast\\WP\\SEO\\Composer\\Actions::check_coding_standards" ], "check-cs-thresholds": [ - "@putenv YOASTCS_THRESHOLD_ERRORS=2523", + "@putenv YOASTCS_THRESHOLD_ERRORS=2514", "@putenv YOASTCS_THRESHOLD_WARNINGS=253", "Yoast\\WP\\SEO\\Composer\\Actions::check_cs_thresholds" ], @@ -135,8 +134,7 @@ ], "prefix-dependencies": [ "composer prefix-oauth2-client", - "composer prefix-symfony", - "composer prefix-wordproof" + "composer prefix-symfony" ], "prefix-oauth2-client": [ "@php ./vendor/humbug/php-scoper/bin/php-scoper add-prefix --prefix=YoastSEO_Vendor --output-dir=./vendor_prefixed/symfony/deprecation-contracts --config=config/php-scoper/deprecation-contracts.inc.php --force --quiet", @@ -147,9 +145,6 @@ "prefix-symfony": [ "@php ./vendor/humbug/php-scoper/bin/php-scoper add-prefix --prefix=YoastSEO_Vendor --output-dir=./vendor_prefixed/symfony/dependency-injection --config=config/php-scoper/dependency-injection.inc.php --force --quiet" ], - "prefix-wordproof": [ - "@php ./vendor/humbug/php-scoper/bin/php-scoper add-prefix --prefix=YoastSEO_Vendor --output-dir=./vendor_prefixed/wordproof/wordpress-sdk --config=config/php-scoper/wordproof.inc.php --force --quiet" - ], "compile-di": [ "rm -f ./src/generated/container.php", "rm -f ./src/generated/container.php.meta", diff --git a/composer.lock b/composer.lock index 793828952ff..e7987e4c402 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f8e6cb2f40397e8fe5789f33a49792e9", + "content-hash": "9ce077c0a8093fbafe06749678422c4c", "packages": [ { "name": "composer/installers", @@ -4585,58 +4585,6 @@ ], "time": "2024-03-03T12:36:25+00:00" }, - { - "name": "wordproof/wordpress-sdk", - "version": "1.3.5", - "source": { - "type": "git", - "url": "https://github.com/wordproof/wordpress-sdk.git", - "reference": "0a61621fe0cf239fd39a687964def340499228a2" - }, - "dist": { - "type": "zip", - "url": "https://github.com/repos/wordproof/wordpress-sdk/zipball/0a61621fe0cf239fd39a687964def340499228a2", - "reference": "0a61621fe0cf239fd39a687964def340499228a2", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^5.6.20 || ^7.0 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.5", - "phpunit/phpunit": "^9", - "spatie/ray": "^1.21", - "wpengine/wpengine-coding-standards": "dev-master", - "yoast/yoastcs": "^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "WordProof\\SDK\\": "app" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Yurii", - "email": "yurii@wordproof.com" - }, - { - "name": "Marijn", - "email": "marijn@wordproof.com" - } - ], - "description": "WordPress SDK", - "support": { - "issues": "https://github.com/wordproof/wordpress-sdk/issues", - "source": "https://github.com/wordproof/wordpress-sdk/tree/1.3.5" - }, - "time": "2022-08-03T13:12:53+00:00" - }, { "name": "wp-coding-standards/wpcs", "version": "3.1.0", diff --git a/config/dependency-injection/deprecated-classes.php b/config/dependency-injection/deprecated-classes.php index c99b5c9208a..8bd81531b55 100644 --- a/config/dependency-injection/deprecated-classes.php +++ b/config/dependency-injection/deprecated-classes.php @@ -19,23 +19,26 @@ */ use Symfony\Component\DependencyInjection\ContainerBuilder; -use Yoast\WP\SEO\Actions\Indexables_Page_Action; -use Yoast\WP\SEO\Conditionals\Indexables_Page_Conditional; -use Yoast\WP\SEO\Conditionals\Schema_Blocks_Conditional; -use Yoast\WP\SEO\Helpers\Indexables_Page_Helper; -use Yoast\WP\SEO\Integrations\Admin\Indexables_Page_Integration; +use Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional; +use Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional; +use Yoast\WP\SEO\Config\Wordproof_App_Config; +use Yoast\WP\SEO\Config\Wordproof_Translations; +use Yoast\WP\SEO\Helpers\Wordproof_Helper; use Yoast\WP\SEO\Integrations\Admin\Old_Premium_Integration; -use Yoast\WP\SEO\Integrations\Admin\Social_Templates_Integration; -use Yoast\WP\SEO\Integrations\Schema_Blocks; use Yoast\WP\SEO\Integrations\Third_Party\Wincher; +use Yoast\WP\SEO\Integrations\Third_Party\Wordproof; use Yoast\WP\SEO\Integrations\Third_Party\Wordproof_Integration_Toggle; -use Yoast\WP\SEO\Routes\Indexables_Page_Route; -use Yoast\WP\SEO\Schema_Templates\Assets\Icons; $deprecated_classes = [ - Old_Premium_Integration::class => '20.10', - Wincher::class => '21.6', - Wordproof_Integration_Toggle::class => '21.6', + Old_Premium_Integration::class => '20.10', + Wincher::class => '21.6', + Wordproof_Integration_Toggle::class => '21.6', + Wordproof::class => '22.10', + Wordproof_Integration_Active_Conditional::class => '22.10', + Wordproof_Plugin_Inactive_Conditional::class => '22.10', + Wordproof_App_Config::class => '22.10', + Wordproof_Translations::class => '22.10', + Wordproof_Helper::class => '22.10', ]; foreach ( $deprecated_classes as $original_class => $version ) { diff --git a/config/grunt/task-config/copy.js b/config/grunt/task-config/copy.js index 20e4c1dda95..0089533eb52 100644 --- a/config/grunt/task-config/copy.js +++ b/config/grunt/task-config/copy.js @@ -34,7 +34,6 @@ module.exports = { "lib/**", "vendor/**", "vendor_prefixed/**/*.php", - "vendor_prefixed/wordproof/wordpress-sdk/build/**/*.js", "index.php", "license.txt", "readme.txt", diff --git a/config/php-scoper/wordproof.inc.php b/config/php-scoper/wordproof.inc.php deleted file mode 100644 index 64b38bc65d1..00000000000 --- a/config/php-scoper/wordproof.inc.php +++ /dev/null @@ -1,46 +0,0 @@ - [ - Finder::create()->files()->in( 'vendor/wordproof/wordpress-sdk' )->exclude( '.php-cs-fixer.dist.php' )->name( [ '*' ] ), - ], - - /* - * When scoping PHP files, there will be scenarios where some of the code being scoped indirectly references the - * original namespace. These will include, for example, strings or string manipulations. PHP-Scoper has limited - * support for prefixing such strings. To circumvent that, you can define patchers to manipulate the file to your - * heart contents. - * - * For more see: https://github.com/humbug/php-scoper#patchers - */ - 'patchers' => [ - /** - * Removes vendor prefixing from WP hook functions. - * - * @param string $filePath The path of the current file. - * @param string $prefix The prefix to be used. - * @param string $content The content of the specific file. - * - * @return string The modified content. - */ - function( $file_path, $prefix, $content ) { - return \preg_replace( - '/YoastSEO_Vendor\\\(?!WordProof)([\w_]+)/', - '$1', - $content - ); - }, - ], -]; diff --git a/config/webpack/paths.js b/config/webpack/paths.js index 3009edcb156..ffbf16647f1 100644 --- a/config/webpack/paths.js +++ b/config/webpack/paths.js @@ -51,7 +51,6 @@ const getEntries = ( sourceDirectory = "./packages/js/src" ) => ( { "used-keywords-assessment": `${ sourceDirectory }/used-keywords-assessment.js`, "react-select": `${ sourceDirectory }/externals/react-select.js`, workouts: `${ sourceDirectory }/workouts.js`, - "wordproof-uikit": `${ sourceDirectory }/wordproof-uikit.js`, "frontend-inspector-resources": `${ sourceDirectory }/frontend-inspector-resources.js`, } ); diff --git a/css/src/metabox.css b/css/src/metabox.css index 65809e8a531..af7c3ce3f78 100644 --- a/css/src/metabox.css +++ b/css/src/metabox.css @@ -710,11 +710,6 @@ div.interface-pinned-items button.components-button.is-pressed[aria-label="Yoast color: var(--yoast-color-white); } -.yoast-wordproof-metabox-alert.yoast-wordproof-metabox-alert { - margin-top: 18px; - margin-bottom: 0px; -} - /* Insights */ .yoast .yoast-insights { color: #404040; diff --git a/css/src/modal.css b/css/src/modal.css index ce868c60506..c059a981719 100644 --- a/css/src/modal.css +++ b/css/src/modal.css @@ -506,35 +506,3 @@ .yoast-related-keyphrases-modal__chart { display: block; } - -.yoast-wordproof-modal { - max-width: 380px; - text-align: center; -} - -.yoast-wordproof-modal-image { - display: flex; - justify-content: center; - margin-block: 40px; -} - -.yoast-wordproof-modal-svg__webhook-failed { - width: 100%; -} - -.yoast-wordproof-modal-svg__success { - width: 175px; -} - -.yoast-wordproof-modal-action { - display: flex; - justify-content: center; - margin-top: 40px; - margin-bottom: 10px; -} - -/* Override default button padding. */ -.yoast-wordproof-modal-action.yoast-wordproof-modal-action > button { - padding-left: 20px; - padding-right: 20px; -} diff --git a/inc/options/class-wpseo-option-ms.php b/inc/options/class-wpseo-option-ms.php index e337c01e6d1..592e798b3bc 100644 --- a/inc/options/class-wpseo-option-ms.php +++ b/inc/options/class-wpseo-option-ms.php @@ -128,7 +128,6 @@ public function __construct() { "{$allow_prefix}search_cleanup_emoji" => true, "{$allow_prefix}search_cleanup_patterns" => true, "{$allow_prefix}redirect_search_pretty_urls" => true, - "{$allow_prefix}wordproof_integration_active" => false, "{$allow_prefix}algolia_integration_active" => true, ]; diff --git a/inc/options/class-wpseo-option-wpseo.php b/inc/options/class-wpseo-option-wpseo.php index aa89d266fae..12536e067c0 100644 --- a/inc/options/class-wpseo-option-wpseo.php +++ b/inc/options/class-wpseo-option-wpseo.php @@ -95,8 +95,6 @@ class WPSEO_Option_Wpseo extends WPSEO_Option { 'wincher_tokens' => [], 'wincher_automatically_add_keyphrases' => false, 'wincher_website_id' => '', - 'wordproof_integration_active' => false, - 'wordproof_integration_changed' => false, 'first_time_install' => false, 'should_redirect_after_install_free' => false, 'activation_redirect_timestamp_free' => 0, @@ -454,13 +452,6 @@ protected function validate_option( $dirty, $clean, $old ) { } break; - case 'wordproof_integration_active': - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - // If the setting has changed, record it. - if ( $old[ $key ] !== $clean[ $key ] ) { - $clean['wordproof_integration_changed'] = true; - } - break; case 'last_known_no_unindexed': $clean[ $key ] = $old[ $key ]; diff --git a/packages/js/.eslintrc.js b/packages/js/.eslintrc.js index 19f3dd48c90..aedbd004eda 100644 --- a/packages/js/.eslintrc.js +++ b/packages/js/.eslintrc.js @@ -38,8 +38,6 @@ module.exports = { // Because `main` in `package.json` points to the `build/index.js` (in the UI library), which is not present before building. // As we are dealing with our source, not the actual NPM download, due to the monorepo setup. "^@yoast/(ui-library|schema-blocks|style-guide|components|helpers|search-metadata-previews|social-metadata-forms|replacement-variable-editor|analysis-report|feature-flag)$", - // In a similar fashion as the above. Ignore the PHP dependency for WordProof, or we have to install the PHP dependencies. - "vendor_prefixed/wordproof", "^@wordpress/(annotations|api|edit-post|sanitize)$", "^jquery$", "yoastseo", diff --git a/packages/js/package.json b/packages/js/package.json index 0c0528f157f..a53241fb8fc 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -30,7 +30,6 @@ "@wordpress/rich-text": "^3.25.3", "@wordpress/server-side-render": "^1.21.1", "@wordpress/url": "^3.17.0", - "@wordproof/uikit": "1.0.41", "@yoast/analysis-report": "^1.21.0", "@yoast/components": "^2.19.0", "@yoast/feature-flag": "^0.5.2", diff --git a/packages/js/src/analysis/isWordProofIntegrationActive.js b/packages/js/src/analysis/isWordProofIntegrationActive.js deleted file mode 100644 index a2be0a10a1c..00000000000 --- a/packages/js/src/analysis/isWordProofIntegrationActive.js +++ /dev/null @@ -1,16 +0,0 @@ -/* External dependencies */ -import { get } from "lodash"; - -/* Internal dependencies */ -import getL10nObject from "./getL10nObject"; - -/** - * Returns whether or not the WordProof integration is active. - * - * @returns {boolean} Whether or not the WordProof integration is active. - */ -export default function isWordProofIntegrationActive() { - const l10nObject = getL10nObject(); - - return get( l10nObject, "wordproofIntegrationActive", 0 ) === 1; -} diff --git a/packages/js/src/components/AdvancedSettings.js b/packages/js/src/components/AdvancedSettings.js index 710dde707fc..89ecfd4547c 100644 --- a/packages/js/src/components/AdvancedSettings.js +++ b/packages/js/src/components/AdvancedSettings.js @@ -5,7 +5,6 @@ import { Alert, MultiSelect, RadioButtonGroup, Select, TextInput } from "@yoast/ import { join } from "@yoast/helpers"; import PropTypes from "prop-types"; import { LocationConsumer } from "@yoast/externals/contexts"; -import WordProofTimestampToggle from "./WordProofTimestampToggle"; /** * Boolean that tells whether the current object refers to a post or a taxonomy. @@ -233,34 +232,6 @@ CanonicalURL.propTypes = { onCanonicalChange: PropTypes.func.isRequired, }; -/** - * Functional component for the WordProof timestamp toggle. - * - * @param {Object} props The props object - * - * @returns {JSX.Element} The canonical URL. - */ -const WordProofTimestamp = ( { wordproofTimestamp, onWordProofTimestampChange, postTypeName } ) => { - return - { - location => { - return ; - } - } - ; -}; - -WordProofTimestamp.propTypes = { - wordproofTimestamp: PropTypes.bool.isRequired, - onWordProofTimestampChange: PropTypes.func.isRequired, - postTypeName: PropTypes.string.isRequired, -}; - /** * The Advanced Settings component. * @@ -275,19 +246,16 @@ const AdvancedSettings = ( props ) => { advanced, breadcrumbsTitle, canonical, - wordproofTimestamp, onNoIndexChange, onNoFollowChange, onAdvancedChange, onBreadcrumbsTitleChange, onCanonicalChange, - onWordProofTimestampChange, onLoad, isLoading, editorContext, isBreadcrumbsDisabled, isPrivateBlog, - isWordProofIntegrationActive, } = props; useEffect( () => { @@ -324,12 +292,6 @@ const AdvancedSettings = ( props ) => { onCanonicalChange, }; - const wordproofTimestampProps = { - wordproofTimestamp, - onWordProofTimestampChange, - postTypeName: editorContext.postTypeNameSingular, - }; - if ( isLoading ) { return null; } @@ -343,7 +305,6 @@ const AdvancedSettings = ( props ) => { ! isBreadcrumbsDisabled && } - { isWordProofIntegrationActive && } ); }; @@ -351,10 +312,8 @@ const AdvancedSettings = ( props ) => { AdvancedSettings.propTypes = { noIndex: PropTypes.string.isRequired, canonical: PropTypes.string.isRequired, - wordproofTimestamp: PropTypes.bool, onNoIndexChange: PropTypes.func.isRequired, onCanonicalChange: PropTypes.func.isRequired, - onWordProofTimestampChange: PropTypes.func, onLoad: PropTypes.func.isRequired, isLoading: PropTypes.bool.isRequired, editorContext: PropTypes.object.isRequired, @@ -366,7 +325,6 @@ AdvancedSettings.propTypes = { onNoFollowChange: PropTypes.func, breadcrumbsTitle: PropTypes.string, onBreadcrumbsTitleChange: PropTypes.func, - isWordProofIntegrationActive: PropTypes.bool.isRequired, }; AdvancedSettings.defaultProps = { @@ -377,8 +335,6 @@ AdvancedSettings.defaultProps = { breadcrumbsTitle: "", onBreadcrumbsTitleChange: () => {}, isPrivateBlog: false, - onWordProofTimestampChange: () => {}, - wordproofTimestamp: false, }; export default AdvancedSettings; diff --git a/packages/js/src/components/WordProofTimestampToggle.js b/packages/js/src/components/WordProofTimestampToggle.js deleted file mode 100644 index 0fd4c77c49b..00000000000 --- a/packages/js/src/components/WordProofTimestampToggle.js +++ /dev/null @@ -1,194 +0,0 @@ -/* eslint-disable require-jsdoc */ -import { Component, Fragment, useCallback } from "@wordpress/element"; -import PropTypes from "prop-types"; -import { Toggle, FieldGroup, Alert } from "@yoast/components"; -import { __, sprintf } from "@wordpress/i18n"; -import { compose } from "@wordpress/compose"; -import { withSelect } from "@wordpress/data"; -import { noop } from "lodash"; -import { openAuthentication, openSettings } from "../helpers/wordproof"; -import { Button } from "@wordpress/components"; - -/** - * The settings link. - * - * @param {Object} props The props object. - * @returns {JSX.Element|null} The settings link. - */ -const SettingsLink = ( props ) => { - if ( ! props.isAuthenticated ) { - return null; - } - - const openLink = useCallback( () => { - openSettings(); - } ); - - return ( - - ); -}; - -SettingsLink.propTypes = { - isAuthenticated: PropTypes.bool.isRequired, -}; - -/** - * The authentication link. - * - * @param {object} props Functional Component props. - * @returns {JSX.Element|string} The authentication link. - * @constructor - */ -const AuthenticationLink = ( props ) => { - const openLink = useCallback( () => { - openAuthentication(); - } ); - - if ( ! props.isAuthenticated && props.toggleIsEnabled ) { - return ( - - ); - } - - return null; -}; - -AuthenticationLink.propTypes = { - isAuthenticated: PropTypes.bool.isRequired, - toggleIsEnabled: PropTypes.bool.isRequired, -}; - -/** - * The WordProofTimestampToggle component. - */ -class WordProofTimestampToggle extends Component { - /** - * @param {Object} props The props object. - * @param {string} props.id The id for the checkbox. - * @param {boolean} props.isEnabled The value of the checkbox. - * @param {func} props.onToggle The callback on toggle. - * @param {boolean} props.isAuthenticated If the site is authenticated. - */ - constructor( props ) { - super( props ); - - this.handleToggle = this.handleToggle.bind( this ); - this.turnToggleOff = this.turnToggleOff.bind( this ); - this.turnToggleOn = this.turnToggleOn.bind( this ); - } - - componentDidMount() { - window.addEventListener( "wordproof:webhook:failed", this.turnToggleOff, false ); - window.addEventListener( "wordproof:oauth:success", this.turnToggleOn, false ); - } - - componentWillUnmount() { - window.removeEventListener( "wordproof:webhook:failed", this.turnToggleOff, false ); - window.removeEventListener( "wordproof:oauth:success", this.turnToggleOn, false ); - } - - /** - * Send new toggle value to onToggle function and open authentication - * if user is not authenticated. - * - * @param {boolean} value The new value. - * - * @returns {void} Returns nothing. - */ - handleToggle( value ) { - if ( ! this.props.isAuthenticated && value ) { - openAuthentication(); - return; - } - - this.props.onToggle( value ); - } - - /** - * Turn on the toggle. - * - * @returns {void} Returns nothing. - */ - turnToggleOn() { - this.props.onToggle( true ); - } - - /** - * Turn off the toggle. - * - * @returns {void} Returns nothing. - */ - turnToggleOff() { - this.props.onToggle( false ); - } - - /** - * Renders the WordProofTimestampToggle component. - * - * @returns {wp.Element} the WordProofTimestampToggle component. - */ - render() { - return ( - - - - ); - } -} - -WordProofTimestampToggle.propTypes = { - id: PropTypes.string, - isEnabled: PropTypes.bool, - onToggle: PropTypes.func, - postTypeName: PropTypes.string, - isAuthenticated: PropTypes.bool.isRequired, -}; - -WordProofTimestampToggle.defaultProps = { - id: "timestamp-toggle", - isEnabled: true, - postTypeName: "post", - onToggle: noop, -}; - -export default compose( [ - withSelect( ( select ) => { - return { - isAuthenticated: select( "wordproof" ).getIsAuthenticated(), - }; - } ), -] )( WordProofTimestampToggle ); diff --git a/packages/js/src/components/fills/MetaboxFill.js b/packages/js/src/components/fills/MetaboxFill.js index 909fedee98a..6f8def95c95 100644 --- a/packages/js/src/components/fills/MetaboxFill.js +++ b/packages/js/src/components/fills/MetaboxFill.js @@ -19,8 +19,6 @@ import AdvancedSettings from "../../containers/AdvancedSettings"; import SocialMetadataPortal from "../portals/SocialMetadataPortal"; import SchemaTabContainer from "../../containers/SchemaTab"; import SEMrushRelatedKeyphrases from "../../containers/SEMrushRelatedKeyphrases"; -import { isWordProofIntegrationActive } from "../../helpers/wordproof"; -import WordProofAuthenticationModals from "../../components/modals/WordProofAuthenticationModals"; import PremiumSEOAnalysisModal from "../modals/PremiumSEOAnalysisModal"; import KeywordUpsell from "../modals/KeywordUpsell"; import { BlackFridayProductEditorChecklistPromotion } from "../BlackFridayProductEditorChecklistPromotion"; @@ -47,7 +45,6 @@ export default function MetaboxFill( { settings } ) { return ( <> - { isWordProofIntegrationActive() && } { - const [ modal, setModal ] = useState( null ); - - /** - * Show oauth failed content. - * - * @returns {void} Returns no value. - */ - const setOauthFailed = useCallback( () => { - setModal( "oauth:failed" ); - } ); - - /** - * Show oauth webhook failed content. - * - * @returns {void} Returns no value. - */ - const setWebhookFailed = useCallback( () => { - setModal( "webhook:failed" ); - } ); - - /** - * Show oauth success content. - * - * @returns {void} Returns no value. - */ - const setOauthSuccess = useCallback( () => { - setModal( "oauth:success" ); - } ); - - /** - * Stop displaying the current modal. - * - * @returns {void} Returns no value. - */ - const closeModal = useCallback( () => { - setModal( null ); - } ); - - useEffect( () => { - window.addEventListener( "wordproof:oauth:success", setOauthSuccess, false ); - - window.addEventListener( "wordproof:oauth:failed", setOauthFailed, false ); - - window.addEventListener( "wordproof:webhook:failed", setWebhookFailed, false ); - - return () => { - window.removeEventListener( "wordproof:oauth:success", setOauthSuccess, false ); - - window.removeEventListener( "wordproof:oauth:failed", setOauthFailed, false ); - - window.removeEventListener( "wordproof:webhook:failed", setWebhookFailed, false ); - }; - }, [] ); - - /** - * Returns the modal title. - * - * @returns {string} The modal title. - */ - const getModalTitle = useCallback( () => { - switch ( modal ) { - case "webhook:failed": - return __( "Connection failed", "wordpress-seo" ); - case "oauth:success": - return __( "Connected to WordProof", "wordpress-seo" ); - default: - return __( "WordProof authentication", "wordpress-seo" ); - } - } ); - - return ( - <> - { modal && ( - - - { modal === "oauth:success" && ( - - ) } - - { modal === "oauth:failed" && ( - - ) } - - { modal === "webhook:failed" && ( - - ) } - - - ) } - - ); -}; - -export default WordProofAuthenticationModals; diff --git a/packages/js/src/components/modals/WordProofOauthFailed.js b/packages/js/src/components/modals/WordProofOauthFailed.js deleted file mode 100644 index 59358b66937..00000000000 --- a/packages/js/src/components/modals/WordProofOauthFailed.js +++ /dev/null @@ -1,35 +0,0 @@ -/* External dependencies */ -import { __, sprintf } from "@wordpress/i18n"; -import { addLinkToString } from "../../helpers/stringHelpers"; - -/** - * Creates the content for the WordProof oauth failed modal. - * - * @returns {wp.Element} The WordProof oauth failed modal content. - */ -const WordProofOauthFailed = () => { - return ( - <> -

- { - addLinkToString( - sprintf( - /* translators: 1: Opening a html tag, 2: Closing a html tag. 3: WordProof. 4. WordPress */ - __( - "Something went wrong authenticating your %3$s account with the %4$s site. Please try again or contact %1$s%3$s support%2$s.", - "wordpress-seo" - ), - "", - "", - "WordProof", - "WordPress" - ), - "https://help.wordproof.com/" - ) - } -

- - ); -}; - -export default WordProofOauthFailed; diff --git a/packages/js/src/components/modals/WordProofOauthSuccess.js b/packages/js/src/components/modals/WordProofOauthSuccess.js deleted file mode 100644 index 7ffd932e4e3..00000000000 --- a/packages/js/src/components/modals/WordProofOauthSuccess.js +++ /dev/null @@ -1,74 +0,0 @@ -/* External dependencies */ -import { __, sprintf } from "@wordpress/i18n"; -import { createInterpolateElement } from "@wordpress/element"; - -/* Yoast dependencies */ -import { ReactComponent as Image } from "../../../images/succes_marieke_bubble_optm.svg"; -import { getWordProofSdkData } from "../../helpers/wordproof"; -import { NewButton as Button } from "@yoast/components"; -import PropTypes from "prop-types"; - -/** - * Creates the content for the WordProof oauth success modal. - * - * @param {object} props Functional Component props. - * - * @returns {JSX.Element} The WordProof oauth success modal. - */ -const WordProofOauthSuccess = ( props ) => { - const { - closeModal, - } = props; - - return ( - <> -
- -
- -

- { sprintf( - /* Translators: %s translates to the Post type in singular form */ - __( "Your %s is now protected via the blockchain!", - "wordpress-seo" ), - getWordProofSdkData( "current_post_type" ) - ) } -
- - { - createInterpolateElement( - sprintf( - __( - /** translators: - * %1$s and %2$s are replaced by opening and closing tags. - * %3$s translates to the Post type in singular form. - */ - "The %3$s will automatically be timestamped every time you %1$supdate%2$s or %1$spublish%2$s.", - "wordpress-seo" - ), - "", - "", - getWordProofSdkData( "current_post_type" ) - ), - { - b: , - } - ) - } - -

-
- -
- - ); -}; - -WordProofOauthSuccess.propTypes = { - closeModal: PropTypes.func.isRequired, -}; - -export default WordProofOauthSuccess; diff --git a/packages/js/src/components/modals/WordProofWebhookFailed.js b/packages/js/src/components/modals/WordProofWebhookFailed.js deleted file mode 100644 index 046c9dd9e50..00000000000 --- a/packages/js/src/components/modals/WordProofWebhookFailed.js +++ /dev/null @@ -1,97 +0,0 @@ -/* External dependencies */ -import { __, sprintf } from "@wordpress/i18n"; -import { useCallback } from "@wordpress/element"; -import { ReactComponent as Image } from "../../../images/connection-assistant.svg"; -import { NewButton as Button } from "@yoast/components"; -import PropTypes from "prop-types"; -import { openAuthentication } from "../../helpers/wordproof"; -import { addLinkToString } from "../../helpers/stringHelpers.js"; - -/** - * Creates the content for the WordProof oauth denied modal. - * - * @param {object} props Functional Component props. - * - * @returns {JSX.Element} The WordProof oauth denied modal content. - * - * @constructor - */ -const WordProofWebhookFailed = ( props ) => { - const { - closeModal, - } = props; - - const retry = useCallback( ( event ) => { - closeModal(); - - event.preventDefault(); - openAuthentication(); - } ); - - return ( -
-
- -
- -
- { __( - "There was a connection problem. This could be because your third party connections are blocked.", - "wordpress-seo" ) - } -
- - { - addLinkToString( - sprintf( - // translators: %1$s and %2$s are replaced by opening and closing tags. - __( - "Find possible solutions in this %1$sArticle%2$s.", - "wordpress-seo" - ), - "", - "" - ), - "https://help.wordproof.com/en/articles/4823201-how-do-i-whitelist-wordproof-in-cloudflare" - ) - } -
- - -
- -
- -
- { - addLinkToString( - sprintf( - // translators: %1$s and %2$s are replaced by opening and closing tags. %3$s expands to WordProof. - __( - "Not working? %1$sContact %3$s support%2$s.", - "wordpress-seo" - ), - "", - "", - "WordProof" - ), - "https://help.wordproof.com" - ) - } - -
- -
- ); -}; - -WordProofWebhookFailed.propTypes = { - closeModal: PropTypes.func.isRequired, -}; - -export default WordProofWebhookFailed; diff --git a/packages/js/src/containers/AdvancedSettings.js b/packages/js/src/containers/AdvancedSettings.js index 807c8f3b6e4..b16ee59a742 100644 --- a/packages/js/src/containers/AdvancedSettings.js +++ b/packages/js/src/containers/AdvancedSettings.js @@ -13,13 +13,12 @@ export default compose( [ getAdvanced, getBreadcrumbsTitle, getCanonical, - getWordProofTimestamp, getIsLoading, getEditorContext, getPreferences, } = select( "yoast-seo/editor" ); - const { isBreadcrumbsDisabled, isPrivateBlog, isWordProofIntegrationActive } = getPreferences(); + const { isBreadcrumbsDisabled, isPrivateBlog } = getPreferences(); return { noIndex: getNoIndex(), @@ -27,12 +26,10 @@ export default compose( [ advanced: getAdvanced(), breadcrumbsTitle: getBreadcrumbsTitle(), canonical: getCanonical(), - wordproofTimestamp: getWordProofTimestamp(), isLoading: getIsLoading(), editorContext: getEditorContext(), isBreadcrumbsDisabled, isPrivateBlog, - isWordProofIntegrationActive, }; } ), @@ -43,7 +40,6 @@ export default compose( [ setAdvanced, setBreadcrumbsTitle, setCanonical, - setWordProofTimestamp, loadAdvancedSettingsData, } = dispatch( "yoast-seo/editor" ); @@ -53,7 +49,6 @@ export default compose( [ onAdvancedChange: setAdvanced, onBreadcrumbsTitleChange: setBreadcrumbsTitle, onCanonicalChange: setCanonical, - onWordProofTimestampChange: setWordProofTimestamp, onLoad: loadAdvancedSettingsData, }; } ), diff --git a/packages/js/src/elementor.js b/packages/js/src/elementor.js index d8be0829bd8..b30f77aa0dc 100644 --- a/packages/js/src/elementor.js +++ b/packages/js/src/elementor.js @@ -1,6 +1,5 @@ import { dispatch } from "@wordpress/data"; import { doAction } from "@wordpress/hooks"; -import initializeWordProofForElementorEditor from "../../../vendor_prefixed/wordproof/wordpress-sdk/resources/js/initializers/elementorEditor"; import initializeAiGenerator from "./ai-generator/initialize"; import initEditorStore from "./elementor/initializers/editor-store"; import initHighlightFocusKeyphraseForms from "./elementor/initializers/highlightFocusKeyphraseForms"; @@ -9,7 +8,6 @@ import initializeIntroductionEditorV2 from "./elementor/initializers/introductio import { applyModifications, pluginReady, pluginReloaded, registerModification, registerPlugin } from "./initializers/pluggable"; import initializeUsedKeywords from "./elementor/initializers/used-keywords-assessment"; import initReplaceVarPlugin, { addReplacement, ReplaceVar } from "./elementor/replaceVars/elementor-replacevar-plugin"; -import { isWordProofIntegrationActive } from "./helpers/wordproof"; import initAnalysis, { collectData } from "./initializers/analysis"; import initElementorEditorIntegration from "./initializers/elementor-editor-integration"; import initializeInsights from "./insights/initializer"; @@ -74,10 +72,6 @@ function initialize() { // Initialize the editor integration. initElementorEditorIntegration(); - if ( isWordProofIntegrationActive() ) { - initializeWordProofForElementorEditor(); - } - const AI_IGNORED_POST_TYPES = [ "attachment", "product" ]; if ( window.wpseoScriptData.postType && ! AI_IGNORED_POST_TYPES.includes( window.wpseoScriptData.postType ) ) { diff --git a/packages/js/src/elementor/components/fills/ElementorFill.js b/packages/js/src/elementor/components/fills/ElementorFill.js index 5a7744e8cb0..89a19bf8062 100644 --- a/packages/js/src/elementor/components/fills/ElementorFill.js +++ b/packages/js/src/elementor/components/fills/ElementorFill.js @@ -21,8 +21,6 @@ import SchemaTabContainer from "../../../containers/SchemaTab"; import AdvancedSettings from "../../../containers/AdvancedSettings"; import SEMrushRelatedKeyphrases from "../../../containers/SEMrushRelatedKeyphrases"; import WincherSEOPerformanceModal from "../../../containers/WincherSEOPerformanceModal"; -import { isWordProofIntegrationActive } from "../../../helpers/wordproof"; -import WordProofAuthenticationModals from "../../../components/modals/WordProofAuthenticationModals"; import KeywordUpsell from "../../../components/modals/KeywordUpsell"; /* eslint-disable complexity */ @@ -53,7 +51,6 @@ export default function ElementorFill( { isLoading, onLoad, settings } ) { return ( <> - { isWordProofIntegrationActive() && } diff --git a/packages/js/src/helpers/fields/AdvancedFields.js b/packages/js/src/helpers/fields/AdvancedFields.js index 3831809de80..0c4ad2e7a55 100644 --- a/packages/js/src/helpers/fields/AdvancedFields.js +++ b/packages/js/src/helpers/fields/AdvancedFields.js @@ -47,15 +47,6 @@ export default class AdvancedFields { return document.getElementById( window.wpseoScriptData.isPost ? "yoast_wpseo_canonical" : "hidden_wpseo_canonical" ); } - /** - * Getter for the wordproofTimestampElement. - * - * @returns {HTMLElement} The wordproofTimestampElement. - */ - static get wordproofTimestampElement() { - return document.getElementById( window.wpseoScriptData.isPost ? "yoast_wpseo_wordproof_timestamp" : "hidden_wpseo_wordproof_timestamp" ); - } - /** * Getter for the No Index setting. * @@ -155,24 +146,4 @@ export default class AdvancedFields { static set canonical( value ) { AdvancedFields.canonicalElement.value = value; } - - /** - * Getter for the Timestamp setting. - * - * @returns {boolean} The Timestamp setting. - */ - static get wordproofTimestamp() { - return AdvancedFields.wordproofTimestampElement && AdvancedFields.wordproofTimestampElement.value === "1" || false; - } - - /** - * Setter for the Timestamp setting. - * - * @param {boolean} value The value to set. - * - * @returns {void} - */ - static set wordproofTimestamp( value ) { - AdvancedFields.wordproofTimestampElement.value = value ? "1" : "0"; - } } diff --git a/packages/js/src/helpers/wordproof.js b/packages/js/src/helpers/wordproof.js deleted file mode 100644 index 45868d47fd7..00000000000 --- a/packages/js/src/helpers/wordproof.js +++ /dev/null @@ -1,50 +0,0 @@ -/* External dependencies */ -import { get } from "lodash"; - -/* Internal dependencies */ -import getL10nObject from "../analysis/getL10nObject"; - -/** - * @param {string} prop Prop to get from WordProof SDK data. - * @returns {Object|*} All WordProof SDK data or a single prop from that data. - */ -export const getWordProofSdkData = ( prop ) => get( window, `wordproofSdk.data${ prop ? `.${prop}` : "" }`, {} ); - -/** - * Returns whether or not the WordProof integration is active. - * - * @returns {boolean} Whether or not the WordProof integration is active. - */ -export const isWordProofIntegrationActive = () => { - const l10nObject = getL10nObject(); - return get( l10nObject, "wordproofIntegrationActive", 0 ) === 1; -}; - -/** - * Dispatches custom event. - * - * @param {string} name The name of the event. - * @returns {void} Returns void. - */ -const dispatchEvent = ( name ) => { - const event = new CustomEvent( name ); - window.dispatchEvent( event ); -}; - -/** - * Dispatches event to open authentication. - * @returns {void} Returns void. - */ -export const openAuthentication = () => { - dispatchEvent( "wordproof:open_authentication" ); -}; - -/** - * Dispatches event to open settings. - * @returns {void} Returns void. - */ -export const openSettings = () => { - dispatchEvent( "wordproof:open_settings" ); -}; - - diff --git a/packages/js/src/initializers/block-editor-integration.js b/packages/js/src/initializers/block-editor-integration.js index d81f1f052a1..6267e65c4eb 100644 --- a/packages/js/src/initializers/block-editor-integration.js +++ b/packages/js/src/initializers/block-editor-integration.js @@ -14,7 +14,6 @@ import { registerFormatType } from "@wordpress/rich-text"; import { Root } from "@yoast/externals/contexts"; import { actions } from "@yoast/externals/redux"; import { get } from "lodash"; -import initializeWordProofForBlockEditor from "../../../../vendor_prefixed/wordproof/wordpress-sdk/resources/js/initializers/blockEditor"; import getL10nObject from "../analysis/getL10nObject"; import YoastIcon from "../components/PluginIcon"; import MetaboxPortal from "../components/portals/MetaboxPortal"; @@ -26,7 +25,6 @@ import PrePublish from "../containers/PrePublish"; import SidebarFill from "../containers/SidebarFill"; import WincherPostPublish from "../containers/WincherPostPublish"; import { isAnnotationAvailable } from "../decorator/gutenberg"; -import { isWordProofIntegrationActive } from "../helpers/wordproof"; import { link } from "../inline-links/edit-link"; /** @@ -222,8 +220,4 @@ export default function initBlockEditorIntegration( store ) { registerFills( store ); registerFormats(); initializeAnnotations( store ); - - if ( isWordProofIntegrationActive() ) { - initializeWordProofForBlockEditor(); - } } diff --git a/packages/js/src/initializers/classic-editor-integration.js b/packages/js/src/initializers/classic-editor-integration.js index 77e6abf452d..a25a58f0494 100644 --- a/packages/js/src/initializers/classic-editor-integration.js +++ b/packages/js/src/initializers/classic-editor-integration.js @@ -1,9 +1,5 @@ /* Internal dependencies */ import { registerReactComponent, renderClassicEditorMetabox } from "../helpers/classicEditor"; -import { isWordProofIntegrationActive } from "../helpers/wordproof"; - -/* External dependencies */ -import initializeWordProofForClassicEditor from "../../../../vendor_prefixed/wordproof/wordpress-sdk/resources/js/initializers/classicEditor"; /** * Initializes the Yoast Classic editor integration. @@ -17,8 +13,4 @@ export default function initClassicEditorIntegration( store ) { window.YoastSEO = window.YoastSEO || {}; window.YoastSEO._registerReactComponent = registerReactComponent; renderClassicEditorMetabox( store ); - - if ( isWordProofIntegrationActive() ) { - initializeWordProofForClassicEditor(); - } } diff --git a/packages/js/src/integrations-page/other-integrations.js b/packages/js/src/integrations-page/other-integrations.js index aaa84b4fa76..07a462401db 100644 --- a/packages/js/src/integrations-page/other-integrations.js +++ b/packages/js/src/integrations-page/other-integrations.js @@ -2,40 +2,11 @@ import { createInterpolateElement } from "@wordpress/element"; import { __, sprintf } from "@wordpress/i18n"; import { getInitialState, getIsNetworkControlEnabled, updateIntegrationState, getIsMultisiteAvailable } from "./helper"; -import { ReactComponent as WordproofLogo } from "../../images/wordproof-logo.svg"; import { ReactComponent as MastodonLogo } from "../../images/mastodon-logo.svg"; import { ToggleableIntegration } from "./toggleable-integration"; import { MastodonIntegration } from "./mastodon-integration"; -const integrations = [ - { - name: "WordProof", - claim: createInterpolateElement( - sprintf( - /* translators: 1: bold open tag; 2: WordProof; 3: bold close tag. */ - __( "Make your terms & privacy pages more trustworthy with %1$s%2$s%3$s", "wordpress-seo" ), - "", - "WordProof", - "" - ), { - strong: , - } - ), - learnMoreLink: "https://yoa.st/integrations-about-wordproof", - logoLink: "https://yoa.st/integrations-logo-wordproof", - slug: "wordproof", - description: sprintf( - /* translators: 1: WordProof */ - __( "Use the power of the blockchain to timestamp your content with %s.", "wordpress-seo" ), - "WordProof" - ), - isPremium: false, - isNew: false, - isMultisiteAvailable: false, - logo: WordproofLogo, - - }, -]; +const integrations = []; const mastodonIntegration = { name: "Mastodon", diff --git a/packages/js/src/redux/actions/advancedSettings.js b/packages/js/src/redux/actions/advancedSettings.js index 6b5170ed12f..1bd2c8298d9 100644 --- a/packages/js/src/redux/actions/advancedSettings.js +++ b/packages/js/src/redux/actions/advancedSettings.js @@ -5,7 +5,6 @@ export const SET_NO_FOLLOW = "SET_NO_FOLLOW"; export const SET_ADVANCED = "SET_ADVANCED"; export const SET_BREADCRUMBS_TITLE = "SET_BREADCRUMBS_TITLE"; export const SET_CANONICAL_URL = "SET_CANONICAL_URL"; -export const SET_WORDPROOF_TIMESTAMP = "SET_WORDPROOF_TIMESTAMP"; export const LOAD_ADVANCED_SETTINGS = "LOAD_ADVANCED_SETTINGS"; /** @@ -68,18 +67,6 @@ export const setCanonical = ( value ) => { return { type: SET_CANONICAL_URL, value }; }; -/** - * An action creator for setting the timestamp setting (Advanced Settings). - * - * @param {Boolean} value The value. - * - * @returns {Object} The action object. - */ -export const setWordProofTimestamp = ( value ) => { - AdvancedFields.wordproofTimestamp = value; - return { type: SET_WORDPROOF_TIMESTAMP, value }; -}; - /** * An action creator for loading all Advanced Settings data. * @@ -94,7 +81,6 @@ export const loadAdvancedSettingsData = () => { advanced: AdvancedFields.advanced.split( "," ), breadcrumbsTitle: AdvancedFields.breadcrumbsTitle, canonical: AdvancedFields.canonical, - wordproofTimestamp: AdvancedFields.wordproofTimestamp, isLoading: false, }, }; diff --git a/packages/js/src/redux/reducers/advancedSettings.js b/packages/js/src/redux/reducers/advancedSettings.js index ac85e09d769..7141ade4ded 100644 --- a/packages/js/src/redux/reducers/advancedSettings.js +++ b/packages/js/src/redux/reducers/advancedSettings.js @@ -6,7 +6,6 @@ import { SET_BREADCRUMBS_TITLE, SET_CANONICAL_URL, LOAD_ADVANCED_SETTINGS, - SET_WORDPROOF_TIMESTAMP, } from "../actions/advancedSettings"; /** @@ -18,7 +17,6 @@ const initialState = { advanced: [], breadcrumbsTitle: "", canonical: "", - wordproofTimestamp: false, isLoading: true, }; @@ -45,8 +43,6 @@ const advancedSettingsReducer = ( state = initialState, action ) => { return { ...state, advanced: action.value }; case SET_CANONICAL_URL: return { ...state, canonical: action.value }; - case SET_WORDPROOF_TIMESTAMP: - return { ...state, wordproofTimestamp: action.value }; case SET_BREADCRUMBS_TITLE: return { ...state, breadcrumbsTitle: action.value }; default: diff --git a/packages/js/src/redux/reducers/preferences.js b/packages/js/src/redux/reducers/preferences.js index f07ebff496c..58bc50b3b4d 100644 --- a/packages/js/src/redux/reducers/preferences.js +++ b/packages/js/src/redux/reducers/preferences.js @@ -8,7 +8,6 @@ import isSEMrushIntegrationActive from "../../analysis/isSEMrushIntegrationActiv import isZapierIntegrationActive from "../../analysis/isZapierIntegrationActive"; import isZapierConnected from "../../analysis/isZapierConnected"; import isWincherIntegrationActive from "../../analysis/isWincherIntegrationActive"; -import isWordProofIntegrationActive from "../../analysis/isWordProofIntegrationActive"; /** * Gets the default state. @@ -36,7 +35,6 @@ function getDefaultState() { isZapierIntegrationActive: isZapierIntegrationActive(), isZapierConnected: isZapierConnected(), isWincherIntegrationActive: isWincherIntegrationActive(), - isWordProofIntegrationActive: isWordProofIntegrationActive(), isInsightsEnabled: get( window, "wpseoScriptData.metabox.isInsightsEnabled", false ), isNewsEnabled: ! ! window.wpseoAdminL10n.news_seo_is_active, }; diff --git a/packages/js/src/redux/selectors/advancedSettings.js b/packages/js/src/redux/selectors/advancedSettings.js index 41775c3f20d..6432b1ec038 100644 --- a/packages/js/src/redux/selectors/advancedSettings.js +++ b/packages/js/src/redux/selectors/advancedSettings.js @@ -45,15 +45,6 @@ export const getBreadcrumbsTitle = state => get( state, "advancedSettings.breadc */ export const getCanonical = state => get( state, "advancedSettings.canonical", "" ); -/** - * Gets the WordProof timestamp value. - * - * @param {Object} state The state. - * - * @returns {Boolean} WordProof timestamp value. - */ -export const getWordProofTimestamp = state => get( state, "advancedSettings.wordproofTimestamp", false ); - /** Gets the Twitter image src from the state. * * @param {Object} state The state. diff --git a/packages/js/src/wordproof-uikit.js b/packages/js/src/wordproof-uikit.js deleted file mode 100644 index 7235694492c..00000000000 --- a/packages/js/src/wordproof-uikit.js +++ /dev/null @@ -1,3 +0,0 @@ -import { defineCustomElements } from "@wordproof/uikit"; - -defineCustomElements(); diff --git a/src/conditionals/third-party/wordproof-integration-active-conditional.php b/src/deprecated/src/conditionals/third-party/wordproof-integration-active-conditional.php similarity index 76% rename from src/conditionals/third-party/wordproof-integration-active-conditional.php rename to src/deprecated/src/conditionals/third-party/wordproof-integration-active-conditional.php index 9ee6bf27630..55b41977aee 100644 --- a/src/conditionals/third-party/wordproof-integration-active-conditional.php +++ b/src/deprecated/src/conditionals/third-party/wordproof-integration-active-conditional.php @@ -7,6 +7,9 @@ /** * Conditional that is met when the WordProof integration is toggled on. + * + * @deprecated 22.10 + * @codeCoverageIgnore */ class Wordproof_Integration_Active_Conditional implements Conditional { @@ -20,18 +23,28 @@ class Wordproof_Integration_Active_Conditional implements Conditional { /** * WordProof integration active constructor. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param Wordproof_Helper $wordproof The options helper. */ public function __construct( Wordproof_Helper $wordproof ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + $this->wordproof = $wordproof; } /** * Returns whether or not the WordProof Timestamp plugin is active. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool Whether or not the WordProof Timestamp plugin is active. */ public function is_met() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return $this->wordproof->integration_is_active(); } } diff --git a/src/conditionals/third-party/wordproof-plugin-inactive-conditional.php b/src/deprecated/src/conditionals/third-party/wordproof-plugin-inactive-conditional.php similarity index 75% rename from src/conditionals/third-party/wordproof-plugin-inactive-conditional.php rename to src/deprecated/src/conditionals/third-party/wordproof-plugin-inactive-conditional.php index a92b1172396..794ab744ebc 100644 --- a/src/conditionals/third-party/wordproof-plugin-inactive-conditional.php +++ b/src/deprecated/src/conditionals/third-party/wordproof-plugin-inactive-conditional.php @@ -6,15 +6,23 @@ /** * Conditional that is met when the WordProof Timestamp plugin is inactive. + * + * @deprecated 22.10 + * @codeCoverageIgnore */ class Wordproof_Plugin_Inactive_Conditional implements Conditional { /** * Returns whether or not the WordProof Timestamp plugin is active. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool Whether or not the WordProof Timestamp plugin is active. */ public function is_met() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return ! \defined( 'WORDPROOF_VERSION' ); } } diff --git a/src/config/wordproof-app-config.php b/src/deprecated/src/config/wordproof-app-config.php similarity index 58% rename from src/config/wordproof-app-config.php rename to src/deprecated/src/config/wordproof-app-config.php index 8cb25e8b5eb..f30e80072d0 100644 --- a/src/config/wordproof-app-config.php +++ b/src/deprecated/src/config/wordproof-app-config.php @@ -2,30 +2,41 @@ namespace Yoast\WP\SEO\Config; -use YoastSEO_Vendor\WordProof\SDK\Config\DefaultAppConfig; - /** * Class WordProof_App_Config. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @package Yoast\WP\SEO\Config */ -class Wordproof_App_Config extends DefaultAppConfig { +class Wordproof_App_Config { /** * Returns the partner. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The partner. */ public function getPartner() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return 'yoast'; } /** * Returns if the WordProof Uikit should be loaded from a cdn. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool True or false. */ public function getLoadUikitFromCdn() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return false; } } diff --git a/src/config/wordproof-translations.php b/src/deprecated/src/config/wordproof-translations.php similarity index 71% rename from src/config/wordproof-translations.php rename to src/deprecated/src/config/wordproof-translations.php index 3188d34d41c..df0fdde765e 100644 --- a/src/config/wordproof-translations.php +++ b/src/deprecated/src/config/wordproof-translations.php @@ -2,21 +2,27 @@ namespace Yoast\WP\SEO\Config; -use YoastSEO_Vendor\WordProof\SDK\Translations\TranslationsInterface; - /** * Class WordProof_Translations * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @package Yoast\WP\SEO\Config */ -class Wordproof_Translations implements TranslationsInterface { +class Wordproof_Translations { /** * Returns no balance notice translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getNoBalanceNotice() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + /* translators: %s expands to WordProof. */ return \sprintf( \__( 'You are out of timestamps. Please upgrade your account by opening the %s settings.', 'wordpress-seo' ), 'WordProof' ); } @@ -24,9 +30,14 @@ public function getNoBalanceNotice() { /** * Returns no balance notice translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getTimestampSuccessNotice() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + /* translators: %s expands to WordProof. */ return \sprintf( \__( '%s has successfully timestamped this page.', 'wordpress-seo' ), 'WordProof' ); } @@ -34,9 +45,14 @@ public function getTimestampSuccessNotice() { /** * Returns timestamp failed notice translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getTimestampFailedNotice() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + /* translators: %s expands to WordProof. */ return \sprintf( \__( '%1$s failed to timestamp this page. Please check if you\'re correctly authenticated with %1$s and try to save this page again.', 'wordpress-seo' ), 'WordProof' ); } @@ -44,9 +60,14 @@ public function getTimestampFailedNotice() { /** * Returns webhook failed notice translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getWebhookFailedNotice() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + /* translators: %s expands to WordProof. */ return \sprintf( \__( 'The timestamp is not retrieved by your site. Please try again or contact %1$s support.', 'wordpress-seo' ), 'WordProof' ); } @@ -54,9 +75,14 @@ public function getWebhookFailedNotice() { /** * Returns no authentication notice translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getNotAuthenticatedNotice() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + /* translators: %s expands to WordProof. */ return \sprintf( \__( 'The timestamp is not created because you need to authenticate with %s first.', 'wordpress-seo' ), 'WordProof' ); } @@ -64,27 +90,42 @@ public function getNotAuthenticatedNotice() { /** * Returns authenticate button text. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getOpenAuthenticationButtonText() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return \__( 'Open authentication', 'wordpress-seo' ); } /** * Returns open settings button translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getOpenSettingsButtonText() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return \__( 'Open settings', 'wordpress-seo' ); } /** * Returns get contact WordProof Support button translation. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return string The translation. */ public function getContactWordProofSupportButtonText() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return \__( 'Contact WordProof support', 'wordpress-seo' ); } } diff --git a/src/helpers/wordproof-helper.php b/src/deprecated/src/helpers/wordproof-helper.php similarity index 64% rename from src/helpers/wordproof-helper.php rename to src/deprecated/src/helpers/wordproof-helper.php index 51fa166c6fc..b5a6a66206b 100644 --- a/src/helpers/wordproof-helper.php +++ b/src/deprecated/src/helpers/wordproof-helper.php @@ -2,13 +2,11 @@ namespace Yoast\WP\SEO\Helpers; -use ReflectionClass; -use Yoast\WP\SEO\Conditionals\Non_Multisite_Conditional; -use Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional; -use Yoast\WP\SEO\Conditionals\User_Can_Publish_Posts_And_Pages_Conditional; - /** * A helper object for WordProof integration. + * + * @deprecated 22.10 + * @codeCoverageIgnore */ class Wordproof_Helper { @@ -36,11 +34,16 @@ class Wordproof_Helper { /** * WordProof_Helper constructor. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param Current_Page_Helper $current_page The current page helper. * @param Woocommerce_Helper $woocommerce The woocommerce helper. * @param Options_Helper $options The options helper. */ public function __construct( Current_Page_Helper $current_page, Woocommerce_Helper $woocommerce, Options_Helper $options ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + $this->current_page = $current_page; $this->woocommerce = $woocommerce; $this->options = $options; @@ -49,9 +52,14 @@ public function __construct( Current_Page_Helper $current_page, Woocommerce_Help /** * Remove site options after disabling the integration. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool Returns if the options are deleted */ public function remove_site_options() { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return \delete_site_option( 'wordproof_access_token' ) && \delete_site_option( 'wordproof_source_id' ); } @@ -59,58 +67,44 @@ public function remove_site_options() { /** * Returns if conditionals are met. If not, the integration should be disabled. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param bool $return_conditional If the conditional class name that was unmet should be returned. * * @return bool|string Returns if the integration should be disabled. */ public function integration_is_disabled( $return_conditional = false ) { - $conditionals = [ new Non_Multisite_Conditional(), new Wordproof_Plugin_Inactive_Conditional() ]; - - foreach ( $conditionals as $conditional ) { - if ( ! $conditional->is_met() ) { - - if ( $return_conditional === true ) { - return ( new ReflectionClass( $conditional ) )->getShortName(); - } - - return true; - } - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); - return false; + return true; } /** * Returns if the WordProof integration toggle is turned on. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool Returns if the integration toggle is set to true if conditionals are met. */ public function integration_is_active() { - if ( $this->integration_is_disabled() ) { - return false; - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); - return $this->options->get( 'wordproof_integration_active', true ); + return false; } /** * Return if WordProof should be active for this post editor page. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return bool Returns if WordProof should be active for this page. */ public function is_active() { - $is_wordproof_active = $this->integration_is_active(); + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); - if ( ! $is_wordproof_active ) { - return false; - } - - $user_can_publish = ( new User_Can_Publish_Posts_And_Pages_Conditional() )->is_met(); - - if ( ! $user_can_publish ) { - return false; - } - - return ( $this->current_page->current_post_is_privacy_policy() || $this->woocommerce->current_post_is_terms_and_conditions_page() ); + return false; } } diff --git a/src/integrations/third-party/wordproof.php b/src/deprecated/src/integrations/third-party/wordproof.php similarity index 52% rename from src/integrations/third-party/wordproof.php rename to src/deprecated/src/integrations/third-party/wordproof.php index 1c670c1fe26..d266c4b2e5e 100644 --- a/src/integrations/third-party/wordproof.php +++ b/src/deprecated/src/integrations/third-party/wordproof.php @@ -2,22 +2,16 @@ namespace Yoast\WP\SEO\Integrations\Third_Party; -use WPSEO_Admin_Asset; use WPSEO_Admin_Asset_Manager; -use Yoast\WP\SEO\Conditionals\Non_Multisite_Conditional; -use Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional; -use Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional; -use Yoast\WP\SEO\Config\Wordproof_App_Config; -use Yoast\WP\SEO\Config\Wordproof_Translations; use Yoast\WP\SEO\Helpers\Wordproof_Helper; use Yoast\WP\SEO\Integrations\Integration_Interface; -use YoastSEO_Vendor\WordProof\SDK\Helpers\CertificateHelper; -use YoastSEO_Vendor\WordProof\SDK\Helpers\PostMetaHelper; -use YoastSEO_Vendor\WordProof\SDK\WordPressSDK; /** * Class WordProof * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @package Yoast\WP\SEO\Integrations\Third_Party */ class Wordproof implements Integration_Interface { @@ -46,10 +40,14 @@ class Wordproof implements Integration_Interface { /** * The WordProof integration constructor. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param Wordproof_Helper $wordproof The WordProof helper instance. * @param WPSEO_Admin_Asset_Manager $asset_manager The WPSEO admin asset manager instance. */ public function __construct( Wordproof_Helper $wordproof, ?WPSEO_Admin_Asset_Manager $asset_manager = null ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); if ( ! $asset_manager ) { $asset_manager = new WPSEO_Admin_Asset_Manager(); } @@ -61,14 +59,14 @@ public function __construct( Wordproof_Helper $wordproof, ?WPSEO_Admin_Asset_Man /** * Returns the conditionals based in which this loadable should be active. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return array */ public static function get_conditionals() { - return [ - Wordproof_Plugin_Inactive_Conditional::class, - Non_Multisite_Conditional::class, - Wordproof_Integration_Active_Conditional::class, - ]; + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + return []; } /** @@ -76,141 +74,99 @@ public static function get_conditionals() { * * This is the place to register hooks and filters. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return void */ public function register_hooks() { - /** - * Used to initialize the WordProof WordPress SDK. - */ - \add_action( 'init', [ $this, 'sdk_setup' ], 11 ); - - /** - * Enqueue the wordproof assets. - */ - \add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ], 10, 0 ); - - if ( \version_compare( \strtok( \get_bloginfo( 'version' ), '-' ), '6.3', '>=' ) ) { - \add_action( - 'wp_enqueue_scripts', - static function () { - \wp_script_add_data( WPSEO_Admin_Asset_Manager::PREFIX . 'wordproof-uikit', 'strategy', 'async' ); - }, - 11, - 0 - ); - } - else { - \add_filter( 'script_loader_tag', [ $this, 'add_async_to_script' ], 10, 3 ); - } - - /** - * Removes the post meta timestamp key for the old privacy page. - */ - \add_action( 'update_option_wp_page_for_privacy_policy', [ $this, 'disable_timestamp_for_previous_legal_page' ], 10, 2 ); - - /** - * Removes the post meta timestamp key for the old terms and conditions page. - */ - \add_action( 'update_option_woocommerce_terms_page_id', [ $this, 'disable_timestamp_for_previous_legal_page' ], 10, 2 ); - - /** - * Called by the WordProof WordPress SDK to determine if the post should be timestamped. - */ - \add_filter( 'wordproof_timestamp_post_meta_key_overrides', [ $this, 'add_post_meta_key' ] ); - - /** - * Called by the WordProof WordPress SDK to determine if the post should be automatically timestamped. - */ - \add_filter( 'wordproof_timestamp_post_types', [ $this, 'wordproof_timestamp_post_types' ] ); - - /** - * Called by the WordProof WordPress SDK to determine if the certificate should be shown. - */ - \add_filter( 'wordproof_timestamp_show_certificate', [ $this, 'show_certificate' ], 10, 2 ); - - /** - * Called by WPSEO_Meta to add extra meta fields to the ones defined there. - */ - \add_filter( 'add_extra_wpseo_meta_fields', [ $this, 'add_meta_field' ] ); + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); } /** * Initializes the WordProof WordPress SDK. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return void */ public function sdk_setup() { - - $config = new Wordproof_App_Config(); - $translations = new Wordproof_Translations(); - - WordPressSDK::getInstance( $config, $translations ) - ->certificate() - ->initialize(); + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); } /** * Removes the WordProof timestamp post meta if a legal page is changed. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param int $old_post_id The old post id. * @param int $new_post_id The new post id. * * @return void */ public function disable_timestamp_for_previous_legal_page( $old_post_id, $new_post_id ) { - - if ( $old_post_id !== $new_post_id ) { - \delete_post_meta( $old_post_id, '_yoast_wpseo_wordproof_timestamp' ); - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); } /** * Return the Yoast post meta key for the SDK to determine if the post should be timestamped. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param array $meta_keys The array containing meta keys that should be used. * @return array */ public function add_post_meta_key( $meta_keys ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); return [ $this->post_meta_key ]; } /** * Return an empty array to disable automatically timestamping selected post types. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param array $post_types The array containing post types that should be automatically timestamped. * @return array */ public function wordproof_timestamp_post_types( $post_types ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); return []; } /** * This filters hides the certificate if the Yoast post meta key is not set to true. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param bool $value If the certificate should be shown. * @param WP_Post $post The post object of the post for which to determine the certificate should be shown. * @return bool|null */ public function show_certificate( $value, $post ) { - if ( ! $value ) { - return $value; - } - - if ( ! $this->wordproof->integration_is_active() ) { - return false; - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); - return \boolval( PostMetaHelper::get( $post->ID, $this->post_meta_key ) ); + return null; } /** * Adds the WordProof integration toggle to the array. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param array $fields The currently registered meta fields. * * @return array A new array with meta fields. */ public function add_meta_field( $fields ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + $fields['advanced']['wordproof_timestamp'] = [ 'type' => 'hidden', 'title' => '', @@ -224,32 +180,21 @@ public function add_meta_field( $fields ) { /** * Enqueue the uikit script. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @return void */ public function enqueue_assets() { - if ( CertificateHelper::show() ) { - $flat_version = $this->asset_manager->flatten_version( \WPSEO_VERSION ); - - /** - * We are using the Admin asset manager to register and enqueue a file served for all visitors, - * authenticated and unauthenticated users. - */ - $script = new WPSEO_Admin_Asset( - [ - 'name' => 'wordproof-uikit', - 'src' => 'wordproof-uikit.js', - 'version' => $flat_version, - ] - ); - - $this->asset_manager->register_script( $script ); - $this->asset_manager->enqueue_script( 'wordproof-uikit' ); - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); } /** * Adds async to the wordproof-uikit script. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param string $tag The script tag for the enqueued script. * @param string $handle The script's registered handle. * @param string $src The script's source URL. @@ -259,6 +204,8 @@ public function enqueue_assets() { * @phpcs:disable WordPress.WP.EnqueuedResources.NonEnqueuedScript */ public function add_async_to_script( $tag, $handle, $src ) { + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); + if ( $handle !== WPSEO_Admin_Asset_Manager::PREFIX . 'wordproof-uikit' ) { return $tag; } diff --git a/src/integrations/admin/integrations-page.php b/src/integrations/admin/integrations-page.php index d62c57315ae..8378668e2a3 100644 --- a/src/integrations/admin/integrations-page.php +++ b/src/integrations/admin/integrations-page.php @@ -171,8 +171,6 @@ public function enqueue_assets() { 'allow_algolia_integration' => $this->options_helper->get( 'allow_algolia_integration_active', true ), 'wincher_integration_active' => $this->options_helper->get( 'wincher_integration_active', true ), 'allow_wincher_integration' => null, - 'wordproof_integration_active' => $this->options_helper->get( 'wordproof_integration_active', true ), - 'allow_wordproof_integration' => null, 'elementor_integration_active' => $elementor_conditional->is_met(), 'jetpack_integration_active' => $jetpack_conditional->is_met(), 'woocommerce_seo_installed' => $woocommerce_seo_installed, diff --git a/src/integrations/watchers/option-wpseo-watcher.php b/src/integrations/watchers/option-wpseo-watcher.php index a29ea972320..b4929ecf518 100644 --- a/src/integrations/watchers/option-wpseo-watcher.php +++ b/src/integrations/watchers/option-wpseo-watcher.php @@ -3,7 +3,6 @@ namespace Yoast\WP\SEO\Integrations\Watchers; use Yoast\WP\SEO\Conditionals\No_Conditionals; -use Yoast\WP\SEO\Helpers\Wordproof_Helper; use Yoast\WP\SEO\Integrations\Integration_Interface; /** @@ -15,22 +14,6 @@ class Option_Wpseo_Watcher implements Integration_Interface { use No_Conditionals; - /** - * Holds the WordProof helper instance. - * - * @var Wordproof_Helper - */ - protected $wordproof; - - /** - * The constructor for a watcher of WPSEO options. - * - * @param Wordproof_Helper $wordproof The WordProof helper instance. - */ - public function __construct( Wordproof_Helper $wordproof ) { - $this->wordproof = $wordproof; - } - /** * Initializes the integration. * @@ -41,7 +24,6 @@ public function __construct( Wordproof_Helper $wordproof ) { public function register_hooks() { \add_action( 'update_option_wpseo', [ $this, 'check_semrush_option_disabled' ], 10, 2 ); \add_action( 'update_option_wpseo', [ $this, 'check_wincher_option_disabled' ], 10, 2 ); - \add_action( 'update_option_wpseo', [ $this, 'check_wordproof_option_disabled' ], 10, 2 ); \add_action( 'update_option_wpseo', [ $this, 'check_toggle_usage_tracking' ], 10, 2 ); } @@ -87,18 +69,18 @@ public function check_wincher_option_disabled( $old_value, $new_value ) { * We delete them if the WordProof integration is disabled, no matter if the * value has actually changed or not. * + * @deprecated 22.10 + * @codeCoverageIgnore + * * @param array $old_value The old value of the option. * @param array $new_value The new value of the option. * * @return bool Whether the WordProof tokens have been deleted or not. */ public function check_wordproof_option_disabled( $old_value, $new_value ) { - $disabled = $this->check_token_option_disabled( 'wordproof_integration_active', 'wordproof_tokens', $new_value ); - if ( $disabled ) { - $this->wordproof->remove_site_options(); - } + \_deprecated_function( __METHOD__, 'Yoast SEO 22.10' ); - return $disabled; + return true; } /** diff --git a/tests/Unit/Integrations/Watchers/Option_Wpseo_Watcher_Test.php b/tests/Unit/Integrations/Watchers/Option_Wpseo_Watcher_Test.php index 68879bd1c14..6ea6c7b51e3 100644 --- a/tests/Unit/Integrations/Watchers/Option_Wpseo_Watcher_Test.php +++ b/tests/Unit/Integrations/Watchers/Option_Wpseo_Watcher_Test.php @@ -5,7 +5,6 @@ use Brain\Monkey; use Mockery; use Yoast\WP\SEO\Helpers\Options_Helper; -use Yoast\WP\SEO\Helpers\Wordproof_Helper; use Yoast\WP\SEO\Integrations\Watchers\Option_Wpseo_Watcher; use Yoast\WP\SEO\Tests\Unit\TestCase; @@ -32,7 +31,7 @@ final class Option_Wpseo_Watcher_Test extends TestCase { protected function set_up() { parent::set_up(); - $this->instance = new Option_Wpseo_Watcher( Mockery::mock( Wordproof_Helper::class ) ); + $this->instance = new Option_Wpseo_Watcher(); } /** diff --git a/yarn.lock b/yarn.lock index 9abc4095313..70ff9f47e18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4260,11 +4260,6 @@ "@types/node" ">=8.9.0" axios "^0.21.1" -"@stencil/core@2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.9.0.tgz#cbac84b996475b8fc983931539ed1261174e2df3" - integrity sha512-kY3xYolZoJO1MKslL0NQccHy72R3TIl1prHgfmIrEoGcnMgc6uiskdWaGMuI5/sCGz9T+QuTVz76B1H2ySyBZg== - "@storybook/addon-a11y@^7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-7.6.17.tgz#77209c23b6908d52dc470a3318d76a0ffe9d47cb" @@ -7833,20 +7828,6 @@ "@babel/runtime" "^7.13.10" lodash "^4.17.19" -"@wordproof/uikit@1.0.41": - version "1.0.41" - resolved "https://registry.yarnpkg.com/@wordproof/uikit/-/uikit-1.0.41.tgz#0aefba14bec5abe494c388b6c4f6936711c6a58a" - integrity sha512-AjavDDgZOSvrXVObRTHdVV82gQvGO9ceDDUaAOPRufFZjBwJatdWYQ9AMCXhd07uabNHnVZXeRijsAB80vPIZA== - dependencies: - "@stencil/core" "2.9.0" - autoprefixer "^10.2.3" - classnames "^2.2.6" - date-fns "^2.19.0" - diff "^5.0.0" - js-sha256 "^0.9.0" - postcss "^8.2.4" - tailwindcss "^2.0.2" - "@wp-g2/components@^0.0.160": version "0.0.160" resolved "https://registry.yarnpkg.com/@wp-g2/components/-/components-0.0.160.tgz#adc9b920c40f21c8de626c1cd6f334b19a2dd5f1" @@ -8088,7 +8069,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-node@^1.6.1, acorn-node@^1.8.2: +acorn-node@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== @@ -8482,11 +8463,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arg@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== - arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -8965,7 +8941,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.2.3, autoprefixer@^10.2.5, autoprefixer@^10.4.7: +autoprefixer@^10.2.5, autoprefixer@^10.4.7: version "10.4.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== @@ -9913,7 +9889,7 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.2, bytes@^3.0.0: +bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -10287,7 +10263,7 @@ cheerio@^1.0.0-rc.3: parse5 "^6.0.0" parse5-htmlparser2-tree-adapter "^6.0.0" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -10393,11 +10369,6 @@ classnames@^2.2.0, classnames@^2.2.5: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -classnames@^2.2.6: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - classnames@^2.3.1, classnames@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" @@ -10640,7 +10611,7 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0, color-string@^1.9.0: +color-string@^1.6.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -10661,14 +10632,6 @@ color@^3.0.0: color-convert "^1.9.3" color-string "^1.6.0" -color@^4.0.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - colord@^2.7.0, colord@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" @@ -10749,7 +10712,7 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^8.0.0, commander@^8.3.0: +commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== @@ -11521,11 +11484,6 @@ css-tree@~2.2.0: mdn-data "2.0.28" source-map-js "^1.0.1" -css-unit-converter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" - integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== - css-url-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" @@ -11939,11 +11897,6 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.19.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== - date-fns@^2.28.0, date-fns@^2.29.2: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -12412,15 +12365,6 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - detective@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" @@ -12488,11 +12432,6 @@ diff@^4.0.2: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -15706,7 +15645,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.7, glob@^7.2.0, glob@~7.2.0: +glob@^7.2.0, glob@~7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -17471,7 +17410,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-color-stop@^1.0.0, is-color-stop@^1.1.0: +is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= @@ -19109,11 +19048,6 @@ js-library-detector@^6.6.0: resolved "https://registry.yarnpkg.com/js-library-detector/-/js-library-detector-6.7.0.tgz#5075c71fcf835b71133bca13363b91509a39235a" integrity sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA== -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -19686,7 +19620,7 @@ lighthouse@^10.4.0: yargs "^17.3.1" yargs-parser "^21.0.0" -lilconfig@^2.0.3, lilconfig@^2.0.4: +lilconfig@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== @@ -19927,11 +19861,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.topath@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" - integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg== - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -20768,11 +20697,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modern-normalize@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7" - integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA== - modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -21002,13 +20926,6 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-emoji@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - node-fetch-native@^1.6.1: version "1.6.2" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.2.tgz#f439000d972eb0c8a741b65dcda412322955e1c6" @@ -21504,11 +21421,6 @@ object-filter@^1.0.2: resolved "https://registry.yarnpkg.com/object-filter/-/object-filter-1.0.2.tgz#af0b797ffebeaf8a52c6637cedbe8816cfec1bc8" integrity sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g= -object-hash@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" @@ -22847,14 +22759,6 @@ postcss-import@^15.1.0: read-cache "^1.0.0" resolve "^1.1.7" -postcss-js@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33" - integrity sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw== - dependencies: - camelcase-css "^2.0.1" - postcss "^8.1.6" - postcss-js@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" @@ -22870,14 +22774,6 @@ postcss-load-config@^3.0.0, postcss-load-config@^3.1.4: lilconfig "^2.0.5" yaml "^1.10.2" -postcss-load-config@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" - integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== - dependencies: - lilconfig "^2.0.4" - yaml "^1.10.2" - postcss-loader@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" @@ -23157,13 +23053,6 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - postcss-nested@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" @@ -23603,7 +23492,7 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.0.9" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== @@ -23715,7 +23604,7 @@ postcss@^7.0.1, postcss@^7.0.27: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.1.6, postcss@^8.2.4, postcss@^8.3.5, postcss@^8.4.14: +postcss@^8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== @@ -24149,16 +24038,6 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== -purgecss@^4.0.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.1.3.tgz#683f6a133c8c4de7aa82fe2746d1393b214918f7" - integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw== - dependencies: - commander "^8.0.0" - glob "^7.1.7" - postcss "^8.3.5" - postcss-selector-parser "^6.0.6" - q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -25037,14 +24916,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -reduce-css-calc@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" - integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== - dependencies: - css-unit-converter "^1.1.1" - postcss-value-parser "^3.3.0" - redux-multi@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/redux-multi/-/redux-multi-0.1.12.tgz#28e1fe5e49672cbc5bd8a07f0b2aeaf0ef8355c2" @@ -27399,44 +27270,6 @@ table@^6.8.1: string-width "^4.2.3" strip-ansi "^6.0.1" -tailwindcss@^2.0.2: - version "2.2.19" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.2.19.tgz#540e464832cd462bb9649c1484b0a38315c2653c" - integrity sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw== - dependencies: - arg "^5.0.1" - bytes "^3.0.0" - chalk "^4.1.2" - chokidar "^3.5.2" - color "^4.0.1" - cosmiconfig "^7.0.1" - detective "^5.2.0" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.7" - fs-extra "^10.0.0" - glob-parent "^6.0.1" - html-tags "^3.1.0" - is-color-stop "^1.1.0" - is-glob "^4.0.1" - lodash "^4.17.21" - lodash.topath "^4.5.2" - modern-normalize "^1.1.0" - node-emoji "^1.11.0" - normalize-path "^3.0.0" - object-hash "^2.2.0" - postcss-js "^3.0.3" - postcss-load-config "^3.1.0" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.6" - postcss-value-parser "^4.1.0" - pretty-hrtime "^1.0.3" - purgecss "^4.0.3" - quick-lru "^5.1.1" - reduce-css-calc "^2.1.8" - resolve "^1.20.0" - tmp "^0.2.1" - tailwindcss@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250"