From 8f2e659e3a21d9ceae8518ef2c0986060232c7e0 Mon Sep 17 00:00:00 2001 From: matticbot Date: Fri, 5 Jul 2024 19:09:08 +0000 Subject: [PATCH 01/74] chore(release): 4.5.0-alpha.1 [skip ci] # [4.5.0-alpha.1](https://github.com/Automattic/newspack-plugin/compare/v4.4.0...v4.5.0-alpha.1) (2024-07-05) ### Bug Fixes * display transaction fee as an amount instead of a percentage ([#3206](https://github.com/Automattic/newspack-plugin/issues/3206)) ([b977c01](https://github.com/Automattic/newspack-plugin/commit/b977c018b6ae8004aa96e78dd73141a4e05fe5c8)) * **js:** skip regenerator-runtime fix for some files ([#3205](https://github.com/Automattic/newspack-plugin/issues/3205)) ([0a7d5c5](https://github.com/Automattic/newspack-plugin/commit/0a7d5c5e18fbd420dcd04497804af19bfbcc1c63)) ### Features * add support for reCAPTCHA v2 ([#3126](https://github.com/Automattic/newspack-plugin/issues/3126)) ([1a1bd30](https://github.com/Automattic/newspack-plugin/commit/1a1bd30682366c2546789bba94c0b8a8de1cb608)) * **cli:** cap-migration tweaks ([#3198](https://github.com/Automattic/newspack-plugin/issues/3198)) ([9b372e9](https://github.com/Automattic/newspack-plugin/commit/9b372e9e866c9584c62e9aec04c250ce3396486d)) * **cli:** setup - set permalinks to pretty unless already set ([f0c44d9](https://github.com/Automattic/newspack-plugin/commit/f0c44d90b91f7cb64f4067859a322365bb86c59a)) * **ras:** don't require WC Subscriptions for displaying auth link ([b6d6589](https://github.com/Automattic/newspack-plugin/commit/b6d65890d76586d3fc57d329319e9db6e810397d)) * update membership patterns ([#3193](https://github.com/Automattic/newspack-plugin/issues/3193)) ([c595329](https://github.com/Automattic/newspack-plugin/commit/c5953294b16df0ed813796b52bfceb238c3442f8)) * **wc-memberships:** update two and three tiers patterns with checkout-button border radius ([#3208](https://github.com/Automattic/newspack-plugin/issues/3208)) ([c57b58b](https://github.com/Automattic/newspack-plugin/commit/c57b58ba6601b449b4666ae96dc3303725f6b701)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index accacc8482..b0b642134d 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.4.0 + * Version: 4.5.0-alpha.1 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.4.0' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.1' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From 66d48184d59f4d68eef02abaa0d3a4da12b28005 Mon Sep 17 00:00:00 2001 From: matticbot Date: Mon, 8 Jul 2024 16:03:07 +0000 Subject: [PATCH 02/74] chore(release): 4.5.0-alpha.2 [skip ci] # [4.5.0-alpha.2](https://github.com/Automattic/newspack-plugin/compare/v4.5.0-alpha.1...v4.5.0-alpha.2) (2024-07-08) ### Bug Fixes * update text domain ([#3222](https://github.com/Automattic/newspack-plugin/issues/3222)) ([ac9da56](https://github.com/Automattic/newspack-plugin/commit/ac9da56d80d1362cc8cc6c5ab0264ce55c2e2ed4)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index b0b642134d..5827324ace 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.5.0-alpha.1 + * Version: 4.5.0-alpha.2 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.1' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.2' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From afab078a038b8a130b667a9da6e05a134974ea36 Mon Sep 17 00:00:00 2001 From: matticbot Date: Wed, 10 Jul 2024 16:27:04 +0000 Subject: [PATCH 03/74] chore(release): 4.5.0-alpha.3 [skip ci] # [4.5.0-alpha.3](https://github.com/Automattic/newspack-plugin/compare/v4.5.0-alpha.2...v4.5.0-alpha.3) (2024-07-10) ### Bug Fixes * add credits meta attributes check and dependencies to image block effect hook ([#3230](https://github.com/Automattic/newspack-plugin/issues/3230)) ([b257d2b](https://github.com/Automattic/newspack-plugin/commit/b257d2bfcd6127908c015963c467c596a7cbc89b)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index 5827324ace..5cdad9fbdc 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.5.0-alpha.2 + * Version: 4.5.0-alpha.3 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.2' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.3' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From b37a747575f7846abedd51267ffa941c65c5f49d Mon Sep 17 00:00:00 2001 From: matticbot Date: Thu, 11 Jul 2024 17:52:48 +0000 Subject: [PATCH 04/74] chore(release): 4.6.0-alpha.1 [skip ci] # [4.6.0-alpha.1](https://github.com/Automattic/newspack-plugin/compare/v4.5.0...v4.6.0-alpha.1) (2024-07-11) ### Bug Fixes * display transaction fee as an amount instead of a percentage ([#3206](https://github.com/Automattic/newspack-plugin/issues/3206)) ([b977c01](https://github.com/Automattic/newspack-plugin/commit/b977c018b6ae8004aa96e78dd73141a4e05fe5c8)) * **js:** skip regenerator-runtime fix for some files ([#3205](https://github.com/Automattic/newspack-plugin/issues/3205)) ([0a7d5c5](https://github.com/Automattic/newspack-plugin/commit/0a7d5c5e18fbd420dcd04497804af19bfbcc1c63)) ### Features * add support for reCAPTCHA v2 ([#3126](https://github.com/Automattic/newspack-plugin/issues/3126)) ([1a1bd30](https://github.com/Automattic/newspack-plugin/commit/1a1bd30682366c2546789bba94c0b8a8de1cb608)) * **cli:** cap-migration tweaks ([#3198](https://github.com/Automattic/newspack-plugin/issues/3198)) ([9b372e9](https://github.com/Automattic/newspack-plugin/commit/9b372e9e866c9584c62e9aec04c250ce3396486d)) * **cli:** setup - set permalinks to pretty unless already set ([f0c44d9](https://github.com/Automattic/newspack-plugin/commit/f0c44d90b91f7cb64f4067859a322365bb86c59a)) * **ras:** don't require WC Subscriptions for displaying auth link ([b6d6589](https://github.com/Automattic/newspack-plugin/commit/b6d65890d76586d3fc57d329319e9db6e810397d)) * update membership patterns ([#3193](https://github.com/Automattic/newspack-plugin/issues/3193)) ([c595329](https://github.com/Automattic/newspack-plugin/commit/c5953294b16df0ed813796b52bfceb238c3442f8)) * **wc-memberships:** update two and three tiers patterns with checkout-button border radius ([#3208](https://github.com/Automattic/newspack-plugin/issues/3208)) ([c57b58b](https://github.com/Automattic/newspack-plugin/commit/c57b58ba6601b449b4666ae96dc3303725f6b701)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index 5cdad9fbdc..e85c135372 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.5.0-alpha.3 + * Version: 4.6.0-alpha.1 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0-alpha.3' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0-alpha.1' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From 83713e1eb7f678461e7c64e1de5bbd6a96370c4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:01:47 +0000 Subject: [PATCH 05/74] chore(deps-dev): bump stylelint from 16.6.1 to 16.7.0 Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.6.1 to 16.7.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.6.1...16.7.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 92 ++++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 60 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae4007763b..043ae1d0ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "postcss-scss": "^4.0.9", "prettier": "npm:wp-prettier@^2.6.2-beta-1", "regenerator-runtime": "^0.14.1", - "stylelint": "^16.6.1" + "stylelint": "^16.7.0" }, "engines": { "node": "16", @@ -25246,9 +25246,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "dev": true, "funding": [ { @@ -25266,7 +25266,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -30037,9 +30037,9 @@ } }, "node_modules/stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.7.0.tgz", + "integrity": "sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==", "dev": true, "funding": [ { @@ -30052,9 +30052,9 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", + "@csstools/media-query-list-parser": "^2.1.13", "@csstools/selector-specificity": "^3.1.1", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", @@ -30062,7 +30062,7 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.2", "css-tree": "^2.3.1", - "debug": "^4.3.4", + "debug": "^4.3.5", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^9.0.0", @@ -30073,13 +30073,13 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.34.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", "postcss-selector-parser": "^6.1.0", @@ -30171,6 +30171,23 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/stylelint/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/stylelint/node_modules/emoji-regex": { "version": "8.0.0", "dev": true, @@ -30247,9 +30264,9 @@ } }, "node_modules/stylelint/node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "dev": true }, "node_modules/stylelint/node_modules/mdn-data": { @@ -50252,13 +50269,13 @@ "dev": true }, "postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "dev": true, "requires": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" } }, @@ -53567,14 +53584,14 @@ } }, "stylelint": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", - "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.7.0.tgz", + "integrity": "sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==", "dev": true, "requires": { - "@csstools/css-parser-algorithms": "^2.6.3", - "@csstools/css-tokenizer": "^2.3.1", - "@csstools/media-query-list-parser": "^2.1.11", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", + "@csstools/media-query-list-parser": "^2.1.13", "@csstools/selector-specificity": "^3.1.1", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", @@ -53582,7 +53599,7 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.2", "css-tree": "^2.3.1", - "debug": "^4.3.4", + "debug": "^4.3.5", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^9.0.0", @@ -53593,13 +53610,13 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.31.0", + "known-css-properties": "^0.34.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", "postcss-selector-parser": "^6.1.0", @@ -53652,6 +53669,15 @@ "source-map-js": "^1.0.1" } }, + "debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "emoji-regex": { "version": "8.0.0", "dev": true @@ -53707,9 +53733,9 @@ } }, "known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "dev": true }, "mdn-data": { diff --git a/package.json b/package.json index f011328f3e..138c83f173 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "postcss-scss": "^4.0.9", "prettier": "npm:wp-prettier@^2.6.2-beta-1", "regenerator-runtime": "^0.14.1", - "stylelint": "^16.6.1" + "stylelint": "^16.7.0" }, "browserslist": [ "extends @wordpress/browserslist-config" From abecca41daf6311ee2b572e1079c7264822e271c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:02:07 +0000 Subject: [PATCH 06/74] chore(deps): bump @babel/preset-env from 7.24.7 to 7.24.8 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.7 to 7.24.8. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.8/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 307 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 156 insertions(+), 153 deletions(-) diff --git a/package-lock.json b/package-lock.json index 043ae1d0ce..a03b291558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.24.7", + "@babel/preset-env": "^7.24.8", "classnames": "^2.5.1", "colord": "^2.9.3", "deep-map-keys": "^2.0.1", @@ -211,9 +211,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", + "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", "engines": { "node": ">=6.9.0" } @@ -291,13 +291,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -454,9 +454,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", + "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -483,9 +483,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "engines": { "node": ">=6.9.0" } @@ -574,9 +574,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } @@ -1073,15 +1073,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", + "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" @@ -1109,11 +1109,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1301,12 +1301,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-simple-access": "^7.24.7" }, "engines": { @@ -1455,11 +1455,11 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1705,11 +1705,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1795,14 +1795,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", - "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", @@ -1833,9 +1833,9 @@ "@babel/plugin-transform-block-scoping": "^7.24.7", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", "@babel/plugin-transform-dynamic-import": "^7.24.7", @@ -1848,7 +1848,7 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-modules-systemjs": "^7.24.7", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", @@ -1858,7 +1858,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-object-super": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", @@ -1869,7 +1869,7 @@ "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", "@babel/plugin-transform-unicode-escapes": "^7.24.7", "@babel/plugin-transform-unicode-property-regex": "^7.24.7", "@babel/plugin-transform-unicode-regex": "^7.24.7", @@ -1878,7 +1878,7 @@ "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -10339,9 +10339,9 @@ "license": "BSD-2-Clause" }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "funding": [ { "type": "opencollective", @@ -10357,10 +10357,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -10543,9 +10543,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001600", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", - "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "funding": [ { "type": "opencollective", @@ -11537,9 +11537,9 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dependencies": { "browserslist": "^4.23.0" }, @@ -12783,9 +12783,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.715", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", - "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==" + "version": "1.4.827", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz", + "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==" }, "node_modules/emittery": { "version": "0.8.1", @@ -13186,8 +13186,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -31619,9 +31620,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -31637,8 +31638,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -32549,9 +32550,9 @@ } }, "@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==" + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", + "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==" }, "@babel/core": { "version": "7.16.7", @@ -32607,13 +32608,13 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "requires": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -32734,9 +32735,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", + "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", "requires": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -32754,9 +32755,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==" + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==" }, "@babel/helper-remap-async-to-generator": { "version": "7.24.7", @@ -32815,9 +32816,9 @@ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" }, "@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==" + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==" }, "@babel/helper-wrap-function": { "version": "7.24.7", @@ -33119,15 +33120,15 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", + "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", "requires": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" @@ -33143,11 +33144,11 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-dotall-regex": { @@ -33257,12 +33258,12 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-simple-access": "^7.24.7" } }, @@ -33351,11 +33352,11 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "requires": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } @@ -33500,11 +33501,11 @@ } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-typescript": { @@ -33554,14 +33555,14 @@ } }, "@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", - "requires": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "requires": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", @@ -33592,9 +33593,9 @@ "@babel/plugin-transform-block-scoping": "^7.24.7", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", "@babel/plugin-transform-dynamic-import": "^7.24.7", @@ -33607,7 +33608,7 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-modules-systemjs": "^7.24.7", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", @@ -33617,7 +33618,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-object-super": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", @@ -33628,7 +33629,7 @@ "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", "@babel/plugin-transform-unicode-escapes": "^7.24.7", "@babel/plugin-transform-unicode-property-regex": "^7.24.7", "@babel/plugin-transform-unicode-regex": "^7.24.7", @@ -33637,7 +33638,7 @@ "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "dependencies": { @@ -40050,14 +40051,14 @@ "dev": true }, "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.1.0" } }, "bser": { @@ -40187,9 +40188,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001600", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", - "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==" + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==" }, "capital-case": { "version": "1.0.4", @@ -40925,9 +40926,9 @@ "version": "1.2.7" }, "core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "requires": { "browserslist": "^4.23.0" } @@ -41772,9 +41773,9 @@ } }, "electron-to-chromium": { - "version": "1.4.715", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", - "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==" + "version": "1.4.827", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz", + "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==" }, "emittery": { "version": "0.8.1", @@ -42085,7 +42086,9 @@ } }, "escalade": { - "version": "3.1.1" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" }, "escape-html": { "version": "1.0.3", @@ -54642,12 +54645,12 @@ } }, "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" } }, "upper-case": { diff --git a/package.json b/package.json index 138c83f173..b6dab58254 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.24.7", + "@babel/preset-env": "^7.24.8", "classnames": "^2.5.1", "colord": "^2.9.3", "deep-map-keys": "^2.0.1", From ec3668de7885ce6b9ce6b3280be1a5d370a1732a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:09:07 +0000 Subject: [PATCH 07/74] chore(deps): bump qs from 6.12.2 to 6.12.3 Bumps [qs](https://github.com/ljharb/qs) from 6.12.2 to 6.12.3. - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.12.2...v6.12.3) --- updated-dependencies: - dependency-name: qs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a03b291558..60d3e8d95d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "lodash": "^4.17.21", "moment": "^2.30.1", "moment-range": "^3.1.1", - "qs": "^6.12.2", + "qs": "^6.12.3", "react": "^17.0.2", "react-daterange-picker": "^2.0.1", "react-router-dom": "^5.3.4", @@ -26902,9 +26902,9 @@ } }, "node_modules/qs": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", - "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", "dependencies": { "side-channel": "^1.0.6" }, @@ -51329,9 +51329,9 @@ "dev": true }, "qs": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", - "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", "requires": { "side-channel": "^1.0.6" } diff --git a/package.json b/package.json index b6dab58254..ddd282f7a3 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "lodash": "^4.17.21", "moment": "^2.30.1", "moment-range": "^3.1.1", - "qs": "^6.12.2", + "qs": "^6.12.3", "react": "^17.0.2", "react-daterange-picker": "^2.0.1", "react-router-dom": "^5.3.4", From a2274ea950f08b227434d0387f9e7b68d9089033 Mon Sep 17 00:00:00 2001 From: matticbot Date: Mon, 15 Jul 2024 17:54:26 +0000 Subject: [PATCH 08/74] chore(release): 4.6.0 [skip ci] # [4.6.0](https://github.com/Automattic/newspack-plugin/compare/v4.5.0...v4.6.0) (2024-07-15) ### Bug Fixes * display transaction fee as an amount instead of a percentage ([#3206](https://github.com/Automattic/newspack-plugin/issues/3206)) ([b977c01](https://github.com/Automattic/newspack-plugin/commit/b977c018b6ae8004aa96e78dd73141a4e05fe5c8)) * **js:** skip regenerator-runtime fix for some files ([#3205](https://github.com/Automattic/newspack-plugin/issues/3205)) ([0a7d5c5](https://github.com/Automattic/newspack-plugin/commit/0a7d5c5e18fbd420dcd04497804af19bfbcc1c63)) ### Features * add support for reCAPTCHA v2 ([#3126](https://github.com/Automattic/newspack-plugin/issues/3126)) ([1a1bd30](https://github.com/Automattic/newspack-plugin/commit/1a1bd30682366c2546789bba94c0b8a8de1cb608)) * **cli:** cap-migration tweaks ([#3198](https://github.com/Automattic/newspack-plugin/issues/3198)) ([9b372e9](https://github.com/Automattic/newspack-plugin/commit/9b372e9e866c9584c62e9aec04c250ce3396486d)) * **cli:** setup - set permalinks to pretty unless already set ([f0c44d9](https://github.com/Automattic/newspack-plugin/commit/f0c44d90b91f7cb64f4067859a322365bb86c59a)) * **ras:** don't require WC Subscriptions for displaying auth link ([b6d6589](https://github.com/Automattic/newspack-plugin/commit/b6d65890d76586d3fc57d329319e9db6e810397d)) * update membership patterns ([#3193](https://github.com/Automattic/newspack-plugin/issues/3193)) ([c595329](https://github.com/Automattic/newspack-plugin/commit/c5953294b16df0ed813796b52bfceb238c3442f8)) * **wc-memberships:** update two and three tiers patterns with checkout-button border radius ([#3208](https://github.com/Automattic/newspack-plugin/issues/3208)) ([c57b58b](https://github.com/Automattic/newspack-plugin/commit/c57b58ba6601b449b4666ae96dc3303725f6b701)) --- CHANGELOG.md | 18 ++++++++++++++++++ newspack.php | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e25a977a4..be8b93144e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +# [4.6.0](https://github.com/Automattic/newspack-plugin/compare/v4.5.0...v4.6.0) (2024-07-15) + + +### Bug Fixes + +* display transaction fee as an amount instead of a percentage ([#3206](https://github.com/Automattic/newspack-plugin/issues/3206)) ([b977c01](https://github.com/Automattic/newspack-plugin/commit/b977c018b6ae8004aa96e78dd73141a4e05fe5c8)) +* **js:** skip regenerator-runtime fix for some files ([#3205](https://github.com/Automattic/newspack-plugin/issues/3205)) ([0a7d5c5](https://github.com/Automattic/newspack-plugin/commit/0a7d5c5e18fbd420dcd04497804af19bfbcc1c63)) + + +### Features + +* add support for reCAPTCHA v2 ([#3126](https://github.com/Automattic/newspack-plugin/issues/3126)) ([1a1bd30](https://github.com/Automattic/newspack-plugin/commit/1a1bd30682366c2546789bba94c0b8a8de1cb608)) +* **cli:** cap-migration tweaks ([#3198](https://github.com/Automattic/newspack-plugin/issues/3198)) ([9b372e9](https://github.com/Automattic/newspack-plugin/commit/9b372e9e866c9584c62e9aec04c250ce3396486d)) +* **cli:** setup - set permalinks to pretty unless already set ([f0c44d9](https://github.com/Automattic/newspack-plugin/commit/f0c44d90b91f7cb64f4067859a322365bb86c59a)) +* **ras:** don't require WC Subscriptions for displaying auth link ([b6d6589](https://github.com/Automattic/newspack-plugin/commit/b6d65890d76586d3fc57d329319e9db6e810397d)) +* update membership patterns ([#3193](https://github.com/Automattic/newspack-plugin/issues/3193)) ([c595329](https://github.com/Automattic/newspack-plugin/commit/c5953294b16df0ed813796b52bfceb238c3442f8)) +* **wc-memberships:** update two and three tiers patterns with checkout-button border radius ([#3208](https://github.com/Automattic/newspack-plugin/issues/3208)) ([c57b58b](https://github.com/Automattic/newspack-plugin/commit/c57b58ba6601b449b4666ae96dc3303725f6b701)) + # [4.5.0](https://github.com/Automattic/newspack-plugin/compare/v4.4.2...v4.5.0) (2024-07-11) diff --git a/newspack.php b/newspack.php index e85c135372..051c2e2220 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.6.0-alpha.1 + * Version: 4.6.0 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0-alpha.1' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); diff --git a/package-lock.json b/package-lock.json index 2521f74708..e193259806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", diff --git a/package.json b/package.json index 4a2fb24039..4be944749b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "description": "The Newspack plugin. https://newspack.com", "bugs": { "url": "https://github.com/Automattic/newspack-plugin/issues" From 86f6b7cc8ccd4d13ad4ace823729ef22651a206b Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Mon, 15 Jul 2024 17:04:17 -0300 Subject: [PATCH 09/74] Merge branch 'release' into trunk --- CHANGELOG.md | 18 ++++++++++++++++++ newspack.php | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e25a977a4..be8b93144e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +# [4.6.0](https://github.com/Automattic/newspack-plugin/compare/v4.5.0...v4.6.0) (2024-07-15) + + +### Bug Fixes + +* display transaction fee as an amount instead of a percentage ([#3206](https://github.com/Automattic/newspack-plugin/issues/3206)) ([b977c01](https://github.com/Automattic/newspack-plugin/commit/b977c018b6ae8004aa96e78dd73141a4e05fe5c8)) +* **js:** skip regenerator-runtime fix for some files ([#3205](https://github.com/Automattic/newspack-plugin/issues/3205)) ([0a7d5c5](https://github.com/Automattic/newspack-plugin/commit/0a7d5c5e18fbd420dcd04497804af19bfbcc1c63)) + + +### Features + +* add support for reCAPTCHA v2 ([#3126](https://github.com/Automattic/newspack-plugin/issues/3126)) ([1a1bd30](https://github.com/Automattic/newspack-plugin/commit/1a1bd30682366c2546789bba94c0b8a8de1cb608)) +* **cli:** cap-migration tweaks ([#3198](https://github.com/Automattic/newspack-plugin/issues/3198)) ([9b372e9](https://github.com/Automattic/newspack-plugin/commit/9b372e9e866c9584c62e9aec04c250ce3396486d)) +* **cli:** setup - set permalinks to pretty unless already set ([f0c44d9](https://github.com/Automattic/newspack-plugin/commit/f0c44d90b91f7cb64f4067859a322365bb86c59a)) +* **ras:** don't require WC Subscriptions for displaying auth link ([b6d6589](https://github.com/Automattic/newspack-plugin/commit/b6d65890d76586d3fc57d329319e9db6e810397d)) +* update membership patterns ([#3193](https://github.com/Automattic/newspack-plugin/issues/3193)) ([c595329](https://github.com/Automattic/newspack-plugin/commit/c5953294b16df0ed813796b52bfceb238c3442f8)) +* **wc-memberships:** update two and three tiers patterns with checkout-button border radius ([#3208](https://github.com/Automattic/newspack-plugin/issues/3208)) ([c57b58b](https://github.com/Automattic/newspack-plugin/commit/c57b58ba6601b449b4666ae96dc3303725f6b701)) + # [4.5.0](https://github.com/Automattic/newspack-plugin/compare/v4.4.2...v4.5.0) (2024-07-11) diff --git a/newspack.php b/newspack.php index fc0791f522..051c2e2220 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.5.0 + * Version: 4.6.0 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.5.0' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); diff --git a/package-lock.json b/package-lock.json index 60d3e8d95d..b1ad2f8f0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", diff --git a/package.json b/package.json index ddd282f7a3..32c772c62f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newspack", - "version": "4.5.0", + "version": "4.6.0", "description": "The Newspack plugin. https://newspack.com", "bugs": { "url": "https://github.com/Automattic/newspack-plugin/issues" From 14ad71bd98a24466da188a56f8e5f7e6d6e80930 Mon Sep 17 00:00:00 2001 From: Adam Cassis Date: Wed, 17 Jul 2024 09:15:05 +0200 Subject: [PATCH 10/74] feat(cli-co-authors-plus): ensure correct author slug is set (#3248) --- includes/cli/class-co-authors-plus.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/includes/cli/class-co-authors-plus.php b/includes/cli/class-co-authors-plus.php index a1ab68daac..819ac9a30b 100644 --- a/includes/cli/class-co-authors-plus.php +++ b/includes/cli/class-co-authors-plus.php @@ -294,6 +294,8 @@ private static function migrate_linked_guest_authors() { WP_CLI::warning( sprintf( 'No term found for user %d.', $user_id ) ); } + $author_slug = preg_replace( '/^cap-/', '', $guest_term->slug ); + if ( self::$live ) { if ( $wp_user_term ) { // If the WP User term exists, delete the Guest Author term and reassign the posts. @@ -326,7 +328,7 @@ private static function migrate_linked_guest_authors() { } } - self::assign_user_props( $guest_author_data, $user_id ); + self::assign_user_props( $guest_author_data, $user_id, $author_slug ); self::assign_user_meta( $guest_author, $user_id ); // Add the Non-Editing Contributor role. @@ -355,11 +357,12 @@ private static function delete_guest_author_post( $guest_author_id ) { /** * Assign user props from guest author post's data. * - * @param array $guest_author_data The guest author post's data. - * @param int $user_id The user ID to update the avatar for. + * @param array $guest_author_data The guest author post's data. + * @param int $user_id The user ID to update the avatar for. + * @param string $author_slug Intended author slug. Must match the of the Guest Author slug (w/o "cap-" prefix). * @return bool True if the user meta was updated, false otherwise. */ - private static function assign_user_props( $guest_author_data, $user_id ) { + private static function assign_user_props( $guest_author_data, $user_id, $author_slug ) { $display_name = $guest_author_data['cap-display_name'][0]; $user_login = $guest_author_data['cap-user_login'][0]; @@ -371,7 +374,7 @@ private static function assign_user_props( $guest_author_data, $user_id ) { [ 'ID' => $user_id, 'display_name' => $display_name, - 'user_nicename' => $display_name, + 'user_nicename' => $author_slug, ] ); } From 2567cd2f4dd9d9f3a865beffec888d71237a1ba6 Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Wed, 17 Jul 2024 10:13:52 -0400 Subject: [PATCH 11/74] fix: reader registration empty div styles applying outside block (#3252) This PR fixes an issue where styles for empty divs were affecting blocks outside of the reader registration block. As a result, a spacer added after the RR block would be hidden, while empty divs within the block would not. --- assets/blocks/reader-registration/edit.js | 4 ++-- assets/blocks/reader-registration/index.php | 6 +++--- assets/blocks/reader-registration/style.scss | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/blocks/reader-registration/edit.js b/assets/blocks/reader-registration/edit.js index 9d1e2620b7..23c53a8f9f 100644 --- a/assets/blocks/reader-registration/edit.js +++ b/assets/blocks/reader-registration/edit.js @@ -390,13 +390,13 @@ export default function ReaderRegistrationEdit( { ) } { editedState === 'registration' && ( <> -
+
) } { editedState === 'login' && ( <> -
+ setAttributes( { signedInLabel: value } ) } diff --git a/assets/blocks/reader-registration/index.php b/assets/blocks/reader-registration/index.php index c2a35c27ab..8356a19774 100644 --- a/assets/blocks/reader-registration/index.php +++ b/assets/blocks/reader-registration/index.php @@ -201,7 +201,7 @@ function render_block( $attrs, $content ) {
-
+
@@ -314,11 +314,11 @@ function render_block( $attrs, $content ) {
-
+
diff --git a/assets/blocks/reader-registration/style.scss b/assets/blocks/reader-registration/style.scss index a11635e3e3..89fe082d1b 100644 --- a/assets/blocks/reader-registration/style.scss +++ b/assets/blocks/reader-registration/style.scss @@ -234,7 +234,7 @@ } &--hidden, - + div:empty { + div:empty { display: none; } From 10dfcd166eb533c0fc89f73487f6dd4f45237275 Mon Sep 17 00:00:00 2001 From: Adam Cassis Date: Wed, 17 Jul 2024 11:37:16 +0200 Subject: [PATCH 12/74] fix(reader-activation): handle user login clash --- includes/reader-activation/class-reader-activation.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index 747bc336f3..8fb78b96ee 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1753,6 +1753,11 @@ public static function canonize_user_data( $user_data = [] ) { ] ); + // Check if a user with this login exists. + if ( \username_exists( $user_data['user_login'] ) ) { + $user_data['user_login'] = $user_data['user_login'] . '-' . \wp_generate_password( 4, false ); + } + /* * Filters the user_data used to register a new RAS reader account. * See https://developer.wordpress.org/reference/functions/wp_insert_user/ for supported args. From 54eefccf3736a4a2a90b8364babcc433143d8e5e Mon Sep 17 00:00:00 2001 From: matticbot Date: Fri, 19 Jul 2024 14:11:43 +0000 Subject: [PATCH 13/74] chore(release): 4.7.0-alpha.1 [skip ci] # [4.7.0-alpha.1](https://github.com/Automattic/newspack-plugin/compare/v4.6.0...v4.7.0-alpha.1) (2024-07-19) ### Bug Fixes * **reader-activation:** handle user login clash ([10dfcd1](https://github.com/Automattic/newspack-plugin/commit/10dfcd166eb533c0fc89f73487f6dd4f45237275)) ### Features * **cli-co-authors-plus:** ensure correct author slug is set ([#3248](https://github.com/Automattic/newspack-plugin/issues/3248)) ([14ad71b](https://github.com/Automattic/newspack-plugin/commit/14ad71bd98a24466da188a56f8e5f7e6d6e80930)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index 051c2e2220..03aae874c8 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.6.0 + * Version: 4.7.0-alpha.1 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.7.0-alpha.1' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From 36311c622d0c1ab056e7666d88718221ec821a48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:42:18 +0000 Subject: [PATCH 14/74] chore(deps-dev): bump lint-staged from 15.2.2 to 15.2.7 Bumps [lint-staged](https://github.com/okonet/lint-staged) from 15.2.2 to 15.2.7. - [Release notes](https://github.com/okonet/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md) - [Commits](https://github.com/okonet/lint-staged/compare/v15.2.2...v15.2.7) --- updated-dependencies: - dependency-name: lint-staged dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 240 +++++++++++++++++++--------------------------- package.json | 2 +- 2 files changed, 102 insertions(+), 140 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1ad2f8f0f..49d13dc06a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "@types/wordpress__components": "^23.0.12", "@wordpress/browserslist-config": "^5.40.0", "eslint": "^7.32.0", - "lint-staged": "^15.2.2", + "lint-staged": "^15.2.7", "newspack-scripts": "^5.5.1", "postcss-scss": "^4.0.9", "prettier": "npm:wp-prettier@^2.6.2-beta-1", @@ -11069,9 +11069,9 @@ } }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -19276,12 +19276,15 @@ } }, "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/line-height": { @@ -19302,21 +19305,21 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz", - "integrity": "sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==", - "dev": true, - "dependencies": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "3.0.0", - "listr2": "8.0.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.4" + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", + "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", + "dev": true, + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.4", + "execa": "~8.0.1", + "lilconfig": "~3.1.1", + "listr2": "~8.2.1", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.4.2" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -19341,12 +19344,12 @@ } }, "node_modules/lint-staged/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/lint-staged/node_modules/execa": { @@ -19484,25 +19487,28 @@ } }, "node_modules/lint-staged/node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, "node_modules/listr2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", - "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz", + "integrity": "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==", "dev": true, "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.0.0", - "rfdc": "^1.3.0", + "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" }, "engines": { @@ -19534,9 +19540,9 @@ } }, "node_modules/listr2/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -19833,13 +19839,10 @@ } }, "node_modules/log-update/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -19934,9 +19937,9 @@ } }, "node_modules/log-update/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -19965,18 +19968,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -20262,11 +20253,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, - "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -28122,9 +28114,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "node_modules/rgb-regex": { @@ -30288,19 +30280,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/stylelint/node_modules/postcss-safe-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", @@ -40567,9 +40546,9 @@ "dev": true }, "string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "requires": { "emoji-regex": "^10.3.0", @@ -46167,9 +46146,9 @@ } }, "lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true }, "line-height": { @@ -46186,21 +46165,21 @@ "dev": true }, "lint-staged": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz", - "integrity": "sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==", + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", + "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", "dev": true, "requires": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "3.0.0", - "listr2": "8.0.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.4" + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.4", + "execa": "~8.0.1", + "lilconfig": "~3.1.1", + "listr2": "~8.2.1", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.4.2" }, "dependencies": { "chalk": { @@ -46210,9 +46189,9 @@ "dev": true }, "commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true }, "execa": { @@ -46293,24 +46272,24 @@ "dev": true }, "yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true } } }, "listr2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", - "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz", + "integrity": "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==", "dev": true, "requires": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.0.0", - "rfdc": "^1.3.0", + "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" }, "dependencies": { @@ -46327,9 +46306,9 @@ "dev": true }, "string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "requires": { "emoji-regex": "^10.3.0", @@ -46558,13 +46537,10 @@ }, "dependencies": { "ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dev": true, - "requires": { - "type-fest": "^3.0.0" - } + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true }, "ansi-regex": { "version": "6.0.1", @@ -46617,9 +46593,9 @@ } }, "string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "requires": { "emoji-regex": "^10.3.0", @@ -46636,12 +46612,6 @@ "ansi-regex": "^6.0.1" } }, - "type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true - }, "wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -46833,10 +46803,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -52200,9 +52172,9 @@ "dev": true }, "rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "rgb-regex": { @@ -53753,16 +53725,6 @@ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true }, - "micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, "postcss-safe-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", diff --git a/package.json b/package.json index 32c772c62f..0f38b9bdda 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@types/wordpress__components": "^23.0.12", "@wordpress/browserslist-config": "^5.40.0", "eslint": "^7.32.0", - "lint-staged": "^15.2.2", + "lint-staged": "^15.2.7", "newspack-scripts": "^5.5.1", "postcss-scss": "^4.0.9", "prettier": "npm:wp-prettier@^2.6.2-beta-1", From 36399b3909b4910999e6b4d560d9309456b0b78b Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Wed, 24 Jul 2024 15:24:30 -0400 Subject: [PATCH 15/74] fix(ras-acc): update auth modal button spacing (#3267) This PR fixes the button spacing above the anchor elements disguised as buttons --- assets/newspack-ui/scss/_modals.scss | 5 +++-- assets/newspack-ui/scss/elements/misc/_reader-auth.scss | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/assets/newspack-ui/scss/_modals.scss b/assets/newspack-ui/scss/_modals.scss index cd5dd8da74..97db2e6b01 100644 --- a/assets/newspack-ui/scss/_modals.scss +++ b/assets/newspack-ui/scss/_modals.scss @@ -86,8 +86,9 @@ color: var( --newspack-ui-color-neutral-90 ); padding: var( --newspack-ui-spacer-5 ); - // Make sure there's enough space above the first button in modals - .newspack-ui__button:not( :first-child ):first-of-type { + // Make sure there's enough space above the first button in modals. + // Ignore a tag buttons as they will never be first. + .newspack-ui__button:not( :first-child, a.newspack-ui__button ):first-of-type { margin-top: var( --newspack-ui-spacer-5 ); } } diff --git a/assets/newspack-ui/scss/elements/misc/_reader-auth.scss b/assets/newspack-ui/scss/elements/misc/_reader-auth.scss index 6a26a6d169..d94162b65c 100644 --- a/assets/newspack-ui/scss/elements/misc/_reader-auth.scss +++ b/assets/newspack-ui/scss/elements/misc/_reader-auth.scss @@ -1,8 +1,9 @@ // Re-adds some modal-like spacing for when the sign up form ends up embedded in a page. +// Ignore a tag buttons as they will never be first.. .newspack-ui { &.newspack-reader-auth { - .newspack-ui__button:not( :first-child ):first-of-type { + .newspack-ui__button:not( :first-child, a.newspack-ui__button ):first-of-type { margin-top: var( --newspack-ui-spacer-5 ); } } -} \ No newline at end of file +} From 20f7597abee663eb993838e0def00a571e3d506f Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Wed, 24 Jul 2024 15:27:05 -0400 Subject: [PATCH 16/74] fix(ras-acc): qa testing design feedback (#3266) This PR adds various style fixes to RAS-ACC auth form: 1. Consistent font weights for bolded text in modals 2. Normalize button font styles in newspack ui 3. Spacing between google icon and button text --- assets/newspack-ui/scss/_modals.scss | 4 ++++ assets/newspack-ui/scss/elements/forms/_buttons.scss | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/assets/newspack-ui/scss/_modals.scss b/assets/newspack-ui/scss/_modals.scss index 97db2e6b01..821515c48e 100644 --- a/assets/newspack-ui/scss/_modals.scss +++ b/assets/newspack-ui/scss/_modals.scss @@ -123,5 +123,9 @@ margin-bottom: 0; } } + + h1, h2, h3, h4, h5, h6, strong { + font-weight: 600; + } } } diff --git a/assets/newspack-ui/scss/elements/forms/_buttons.scss b/assets/newspack-ui/scss/elements/forms/_buttons.scss index 4ec1ce0559..1bd5f8e261 100644 --- a/assets/newspack-ui/scss/elements/forms/_buttons.scss +++ b/assets/newspack-ui/scss/elements/forms/_buttons.scss @@ -9,7 +9,9 @@ font-family: var( --newspack-ui-font-family ); font-size: var( --newspack-ui-font-size-s ); font-weight: 600; - gap: calc( var( --newspack-ui-spacer-base ) / 2 ); + letter-spacing: initial; + text-transform: none; + gap: var( --newspack-ui-spacer-2 ); justify-content: center; line-height: var( --newspack-ui-line-height-s ); margin-bottom: var( --newspack-ui-spacer-2 ); From 5be703b3c80c55c01377a9b263667ca313bad8af Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Wed, 24 Jul 2024 16:49:59 -0400 Subject: [PATCH 17/74] fix(ras-acc): add newsletter modal to register flow (#3269) This PR adds the newsletters signup modal step to the auth modal registration flow --- assets/reader-activation-auth/auth-form.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/assets/reader-activation-auth/auth-form.js b/assets/reader-activation-auth/auth-form.js index c802d3de2b..4de396aaad 100644 --- a/assets/reader-activation-auth/auth-form.js +++ b/assets/reader-activation-auth/auth-form.js @@ -4,6 +4,7 @@ * Internal dependencies. */ import { domReady, formatTime } from '../utils'; +import { openNewslettersSignupModal } from '../reader-activation-newsletters/newsletters-modal'; import './google-oauth'; import './otp-input'; @@ -235,10 +236,20 @@ window.newspackRAS.push( function ( readerActivation ) { readerActivation.setAuthenticated( !! data.authenticated ); } + let callback; + if ( container.authCallback && data?.registered ) { + callback = ( authMessage, authData ) => + openNewslettersSignupModal( { + callback: container.authCallback( authMessage, authData ), + } ); + } else { + callback = container.authCallback; + } + /** Resolve the modal immediately or display the "success" state. */ if ( container.config?.skipSuccess ) { - if ( container.authCallback ) { - container.authCallback( message, data ); + if ( callback ) { + callback( message, data ); } } else { let labels = newspack_reader_activation_labels.signin; @@ -253,8 +264,8 @@ window.newspackRAS.push( function ( readerActivation ) { if ( callbackButton ) { callbackButton.addEventListener( 'click', ev => { ev.preventDefault(); - if ( container.authCallback ) { - container.authCallback( message, data ); + if ( callback ) { + callback( message, data ); } } ); } From db105dc28e40f0cb7133194e1113d41f572ac8c8 Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Wed, 24 Jul 2024 16:54:13 -0400 Subject: [PATCH 18/74] fix(ras-acc): correctly update myaccount link after signing in (#3271) This PR ensures we are always updating the RAS-ACC my account button URL after successfully signing in or creating an account. --- assets/reader-activation-auth/index.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/assets/reader-activation-auth/index.js b/assets/reader-activation-auth/index.js index f536a67422..8743adca88 100644 --- a/assets/reader-activation-auth/index.js +++ b/assets/reader-activation-auth/index.js @@ -59,13 +59,10 @@ window.newspackRAS.push( readerActivation => { } } } - if ( redirect !== '#' ) { + if ( redirect && redirect !== '#' ) { callback = () => { window.location.href = redirect; }; - } else { - // Set account URL after logging in. - ev.target.href = newspack_ras_config.account_url; } openAuthModal( { callback } ); } @@ -97,6 +94,11 @@ window.newspackRAS.push( readerActivation => { const labelEl = link.querySelector( '.newspack-reader__account-link__label' ); if ( labelEl ) { labelEl.textContent = reader?.authenticated ? labels.signedin : labels.signedout; + + // Set my account link href if the reader is authenticated. + if ( reader?.authenticated ) { + link.setAttribute( 'href', newspack_ras_config.account_url ); + } } } ); } From eda5553bf5fcf84b060aa433894a16e50827dee1 Mon Sep 17 00:00:00 2001 From: Adam Cassis Date: Tue, 23 Jul 2024 11:11:05 +0200 Subject: [PATCH 19/74] feat(ga4): filter custom params --- includes/data-events/connectors/ga4/class-ga4.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/includes/data-events/connectors/ga4/class-ga4.php b/includes/data-events/connectors/ga4/class-ga4.php index 68f97ce7bb..bc8a626557 100644 --- a/includes/data-events/connectors/ga4/class-ga4.php +++ b/includes/data-events/connectors/ga4/class-ga4.php @@ -222,7 +222,12 @@ function( $category ) { } } - return $params; + /** + * Filters the custom parameters passed to GA4. + * + * @param array $params Custom parameters sent to GA4. + */ + return apply_filters( 'newspack_ga4_custom_parameters', $params ); } /** From 53a772ad2685c30b66ee07f44155eeabccf8e939 Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Fri, 26 Jul 2024 10:34:33 -0400 Subject: [PATCH 20/74] fix(ras-acc): adjust newsletters modal spacing and always display email text (#3273) This PR ensures the newsletters modal is always populated with an email address for logged in users. It also updates the spacing of some of the text in the modal. --- .../newsletters-modal.js | 8 +++++++- assets/reader-activation-newsletters/style.scss | 9 +++++++-- .../reader-activation/class-reader-activation.php | 14 ++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/assets/reader-activation-newsletters/newsletters-modal.js b/assets/reader-activation-newsletters/newsletters-modal.js index 22d12043ab..ec7d7da805 100644 --- a/assets/reader-activation-newsletters/newsletters-modal.js +++ b/assets/reader-activation-newsletters/newsletters-modal.js @@ -81,7 +81,13 @@ export function openNewslettersSignupModal( config = {} ) { const emailInput = modal.querySelector( 'span.email' ); if ( emailInput && ! emailInput.innerText ) { const reader = window?.newspackReaderActivation?.getReader(); - emailInput.textContent = reader?.email || ''; + + if ( reader?.email ) { + emailInput.textContent = reader.email; + } else { + // Remove parent element of emailInput if no email is found. + emailInput.parentElement.remove(); + } } modal.setAttribute( 'data-state', 'open' ); diff --git a/assets/reader-activation-newsletters/style.scss b/assets/reader-activation-newsletters/style.scss index cfcf846af9..6df8162da7 100644 --- a/assets/reader-activation-newsletters/style.scss +++ b/assets/reader-activation-newsletters/style.scss @@ -5,11 +5,16 @@ } p.details { - margin-bottom: 4px; + margin-bottom: 0; } p.recipient { - margin-top: 0; + margin-top: 4px; + margin-bottom: 0; + } + + .newspack-newsletters-signup { + margin-top: var( --newspack-ui-spacer-5 ); } } diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index 4076398508..617e23918c 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1424,14 +1424,12 @@ public static function render_newsletters_signup_modal() {

- -

- - -

- +

+ + +

From 6439079fd76c43d8a6f16bc4cc80a03b4c822dc9 Mon Sep 17 00:00:00 2001 From: dkoo Date: Fri, 26 Jul 2024 09:11:13 -0600 Subject: [PATCH 21/74] chore: remove duplicate files that were moved and renamed to auth-form --- assets/reader-activation/auth.js | 658 ----------------------------- assets/reader-activation/auth.scss | 523 ----------------------- 2 files changed, 1181 deletions(-) delete mode 100644 assets/reader-activation/auth.js delete mode 100644 assets/reader-activation/auth.scss diff --git a/assets/reader-activation/auth.js b/assets/reader-activation/auth.js deleted file mode 100644 index 441cce90c3..0000000000 --- a/assets/reader-activation/auth.js +++ /dev/null @@ -1,658 +0,0 @@ -/* globals newspack_ras_config newspack_reader_auth_labels */ - -/** - * Internal dependencies. - */ -import './auth.scss'; - -/** - * Specify a function to execute when the DOM is fully loaded. - * - * @see https://github.com/WordPress/gutenberg/blob/trunk/packages/dom-ready/ - * - * @param {Function} callback A function to execute after the DOM is ready. - * @return {void} - */ -function domReady( callback ) { - if ( typeof document === 'undefined' ) { - return; - } - if ( - document.readyState === 'complete' || // DOMContentLoaded + Images/Styles/etc loaded, so we call directly. - document.readyState === 'interactive' // DOMContentLoaded fires at this point, so we call directly. - ) { - return void callback(); - } - // DOMContentLoaded has not fired yet, delay callback until then. - document.addEventListener( 'DOMContentLoaded', callback ); -} - -/** - * Converts FormData into an object. - * - * @param {FormData} formData The form data to convert. - * @param {Array} includedFields Form fields to include. - * - * @return {Object} The converted form data. - */ -const convertFormDataToObject = ( formData, includedFields = [] ) => - Array.from( formData.entries() ).reduce( ( acc, [ key, val ] ) => { - if ( ! includedFields.includes( key ) ) { - return acc; - } - if ( key.indexOf( '[]' ) > -1 ) { - key = key.replace( '[]', '' ); - acc[ key ] = acc[ key ] || []; - acc[ key ].push( val ); - } else { - acc[ key ] = val; - } - return acc; - }, {} ); - -const SIGN_IN_MODAL_HASHES = [ 'signin_modal', 'register_modal' ]; -let currentHash; - -window.newspackRAS = window.newspackRAS || []; - -window.newspackRAS.push( function ( readerActivation ) { - domReady( function () { - const containers = [ ...document.querySelectorAll( '.newspack-reader-auth' ) ]; - const alerts = [ ...document.querySelectorAll( '.woocommerce-message' ) ]; - if ( ! containers.length ) { - return; - } - - let accountLinks, triggerLinks; - const initLinks = function () { - accountLinks = document.querySelectorAll( '.newspack-reader__account-link' ); - triggerLinks = document.querySelectorAll( - `[data-newspack-reader-account-link],[href="${ newspack_ras_config.account_url }"]` - ); - triggerLinks.forEach( link => { - link.addEventListener( 'click', handleAccountLinkClick ); - } ); - }; - const handleHashChange = function ( ev ) { - currentHash = window.location.hash.replace( '#', '' ); - if ( SIGN_IN_MODAL_HASHES.includes( currentHash ) ) { - if ( ev ) { - ev.preventDefault(); - } - handleAccountLinkClick(); - } - }; - window.addEventListener( 'hashchange', handleHashChange ); - handleHashChange(); - initLinks(); - /** Re-initialize links in case the navigation DOM was modified by a third-party. */ - setTimeout( initLinks, 1000 ); - - /** - * Handle reader changes. - */ - function handleReaderChanges() { - const allContainers = [ ...document.querySelectorAll( '.newspack-reader-auth' ) ]; - /** If no modal login form, bail. */ - if ( ! allContainers.length ) { - return; - } - - allContainers.forEach( container => { - const form = container.querySelector( 'form' ); - const emailInput = container.querySelector( 'input[name="npe"]' ); - const redirectInput = container.querySelector( 'input[name="redirect"]' ); - const reader = readerActivation.getReader(); - - if ( emailInput ) { - emailInput.value = reader?.email || ''; - } - - if ( accountLinks?.length ) { - accountLinks.forEach( link => { - /** If there's a pre-auth, signing in redirects to the reader account. */ - if ( reader?.email && ! reader?.authenticated ) { - link.setAttribute( 'data-redirect', link.getAttribute( 'href' ) ); - redirectInput.value = link.getAttribute( 'href' ); - } else { - link.removeAttribute( 'data-redirect' ); - } - try { - const labels = JSON.parse( link.getAttribute( 'data-labels' ) ); - link.querySelector( '.newspack-reader__account-link__label' ).textContent = - reader?.email && reader?.authenticated ? labels.signedin : labels.signedout; - } catch {} - } ); - } - if ( reader?.authenticated ) { - const messageContentElement = container.querySelector( - '.newspack-reader__auth-form__response__content' - ); - if ( messageContentElement && form ) { - form.replaceWith( messageContentElement.parentNode ); - } - } - } ); - } - readerActivation.on( 'reader', handleReaderChanges ); - handleReaderChanges(); - - /** - * Handle account links. - */ - function handleAccountLinkClick( ev ) { - const reader = readerActivation.getReader(); - /** If logged in, bail and allow page redirection. */ - if ( reader?.authenticated ) { - return; - } - - const container = document.querySelector( - '.newspack-reader-auth:not(.newspack-reader__auth-form__inline)' - ); - /** If no modal login form, bail. */ - if ( ! container ) { - return; - } - - if ( ev ) { - ev.preventDefault(); - } - - const authLinkMessage = container.querySelector( '[data-has-auth-link]' ); - const emailInput = container.querySelector( 'input[name="npe"]' ); - const redirectInput = container.querySelector( 'input[name="redirect"]' ); - const passwordInput = container.querySelector( 'input[name="password"]' ); - const actionInput = container.querySelector( 'input[name="action"]' ); - - if ( authLinkMessage ) { - if ( readerActivation.hasAuthLink() ) { - authLinkMessage.style.display = 'flex'; - } else { - authLinkMessage.style.display = 'none'; - } - } - - if ( emailInput ) { - emailInput.value = reader?.email || ''; - } - - if ( redirectInput && ev?.target?.getAttribute( 'data-redirect' ) ) { - redirectInput.value = ev.target.getAttribute( 'data-redirect' ); - } - - container.hidden = false; - container.style.display = 'flex'; - - document.body.classList.add( 'newspack-signin' ); - - if ( passwordInput && emailInput?.value && 'pwd' === actionInput?.value ) { - passwordInput.focus(); - } else { - emailInput.focus(); - } - container.overlayId = readerActivation.overlays.add(); - } - - containers.forEach( container => { - const initialForm = container.querySelector( 'form' ); - if ( ! initialForm ) { - return; - } - let form; - /** Workaround AMP's enforced XHR strategy. */ - if ( initialForm.getAttribute( 'action-xhr' ) ) { - initialForm.removeAttribute( 'action-xhr' ); - form = initialForm.cloneNode( true ); - initialForm.replaceWith( form ); - } else { - form = initialForm; - } - - const actionInput = form.querySelector( 'input[name="action"]' ); - const emailInput = form.querySelector( 'input[name="npe"]' ); - const otpCodeInput = form.querySelector( 'input[name="otp_code"]' ); - const passwordInput = form.querySelector( 'input[name="password"]' ); - const submitButtons = form.querySelectorAll( '[type="submit"]' ); - const closeButton = container.querySelector( 'button[data-close]' ); - - if ( closeButton ) { - closeButton.addEventListener( 'click', function ( ev ) { - ev.preventDefault(); - container.classList.remove( 'newspack-reader__auth-form__visible' ); - container.style.display = 'none'; - document.body.classList.remove( 'newspack-signin' ); - if ( SIGN_IN_MODAL_HASHES.includes( window.location.hash.replace( '#', '' ) ) ) { - history.pushState( - '', - document.title, - window.location.pathname + window.location.search - ); - } - if ( container.overlayId ) { - readerActivation.overlays.remove( container.overlayId ); - } - } ); - } - - const messageContentElement = container.querySelector( - '.newspack-reader__auth-form__response__content' - ); - - const authLinkMessage = container.querySelector( '[data-has-auth-link]' ); - authLinkMessage.hidden = true; - - /** - * Handle auth form action selection. - */ - function setFormAction( action, shouldFocus = false ) { - container.setAttribute( 'data-action', action ); - if ( 'otp' === action ) { - if ( ! readerActivation.getOTPHash() ) { - return; - } - createOTPInputs(); - } - if ( [ 'link', 'pwd' ].includes( action ) ) { - readerActivation.setAuthStrategy( action ); - if ( 'link' === action ) { - // Destroy any existing OTP input. - destroyOTPInputs(); - } - } - actionInput.value = action; - container.removeAttribute( 'data-form-status' ); - messageContentElement.innerHTML = ''; - container.querySelectorAll( '[data-action]' ).forEach( item => { - if ( 'none' !== item.style.display ) { - item.prevDisplay = item.style.display; - } - item.style.display = 'none'; - } ); - container.querySelectorAll( '[data-action~="' + action + '"]' ).forEach( item => { - item.style.display = item.prevDisplay; - } ); - try { - const labels = JSON.parse( container.getAttribute( 'data-labels' ) ); - const label = 'register' === action ? labels.register : labels.signin; - container.querySelector( 'h2' ).textContent = label; - } catch {} - if ( shouldFocus ) { - if ( action === 'pwd' && emailInput.value ) { - passwordInput.focus(); - } else if ( action === 'otp' ) { - otpCodeInput.focus(); - } else { - emailInput.focus(); - } - } - } - setFormAction( - currentHash === 'register_modal' ? 'register' : readerActivation.getAuthStrategy() || 'link' - ); - window.addEventListener( 'hashchange', () => { - if ( SIGN_IN_MODAL_HASHES.includes( currentHash ) ) { - setFormAction( - currentHash === 'register_modal' - ? 'register' - : readerActivation.getAuthStrategy() || 'link' - ); - } - } ); - container.querySelectorAll( '[data-set-action]' ).forEach( item => { - item.addEventListener( 'click', function ( ev ) { - ev.preventDefault(); - setFormAction( ev.target.getAttribute( 'data-set-action' ), true ); - } ); - } ); - - form.startLoginFlow = () => { - container.removeAttribute( 'data-form-status' ); - submitButtons.forEach( button => { - button.disabled = true; - } ); - messageContentElement.innerHTML = ''; - form.style.opacity = 0.5; - }; - - form.endLoginFlow = ( message = null, status = 500, data = null, redirect ) => { - if ( message ) { - const messageNode = document.createElement( 'p' ); - messageNode.textContent = message; - messageContentElement.appendChild( messageNode ); - } - if ( status === 200 && data ) { - const authenticated = !! data?.authenticated; - readerActivation.setReaderEmail( data.email ); - readerActivation.setAuthenticated( authenticated ); - if ( authenticated ) { - if ( redirect ) { - window.location = redirect; - } - } else { - form.replaceWith( messageContentElement.parentNode ); - } - } - container.setAttribute( 'data-form-status', status ); - form.style.opacity = 1; - submitButtons.forEach( button => { - button.disabled = false; - } ); - }; - - /** - * Handle auth form submission. - */ - form.addEventListener( 'submit', ev => { - ev.preventDefault(); - form.startLoginFlow(); - - if ( 0 < alerts.length ) { - alerts.forEach( alert => ( alert.style.display = 'none' ) ); - } - - const action = form.action?.value; - - if ( ! form.npe?.value ) { - return form.endLoginFlow( newspack_reader_auth_labels.invalid_email, 400 ); - } - - if ( 'pwd' === action && ! form.password?.value ) { - return form.endLoginFlow( newspack_reader_auth_labels.invalid_password, 400 ); - } - - readerActivation - .getCaptchaV3Token() // Get a token for reCAPTCHA v3, if needed. - .then( captchaToken => { - // If there's no token, we don't need to do anything. - if ( ! captchaToken ) { - return; - } - let tokenField = form[ 'g-recaptcha-response' ]; - if ( ! tokenField ) { - tokenField = document.createElement( 'input' ); - tokenField.setAttribute( 'type', 'hidden' ); - tokenField.setAttribute( 'name', 'g-recaptcha-response' ); - tokenField.setAttribute( 'autocomplete', 'off' ); - form.appendChild( tokenField ); - } - tokenField.value = captchaToken; - } ) - .catch( e => { - form.endLoginFlow( e, 400 ); - } ) - .finally( () => { - const body = new FormData( ev.target ); - if ( ! body.has( 'npe' ) || ! body.get( 'npe' ) ) { - return form.endFlow( newspack_reader_auth_labels.invalid_email, 400 ); - } - if ( 'otp' === action ) { - readerActivation - .authenticateOTP( body.get( 'otp_code' ) ) - .then( data => { - form.endLoginFlow( - data.message, - 200, - data, - currentHash ? '' : body.get( 'redirect' ) - ); - } ) - .catch( data => { - if ( data.expired ) { - setFormAction( 'link' ); - } - form.endLoginFlow( data.message, 400 ); - } ); - } else { - fetch( form.getAttribute( 'action' ) || window.location.pathname, { - method: 'POST', - headers: { - Accept: 'application/json', - }, - body, - } ) - .then( res => { - container.setAttribute( 'data-form-status', res.status ); - res - .json() - .then( ( { message, data } ) => { - let status = res.status; - let redirect = body.get( 'redirect' ); - /** Redirect every registration to the account page for verification if not coming from a hash link */ - if ( action === 'register' ) { - redirect = newspack_ras_config.account_url; - } - // Never redirect from hash links. - if ( currentHash ) { - redirect = ''; - } - if ( status === 200 ) { - readerActivation.setReaderEmail( body.get( 'npe' ) ); - } - const otpHash = readerActivation.getOTPHash(); - if ( otpHash && [ 'register', 'link' ].includes( action ) ) { - if ( status === 200 ) { - setFormAction( 'otp' ); - } - /** If action is link, suppress message and status so the OTP handles it. */ - if ( status === 200 && action === 'link' ) { - status = null; - message = null; - } - } - form.endLoginFlow( message, status, data, redirect ); - } ) - .catch( () => { - form.endLoginFlow(); - } ); - } ) - .catch( () => { - form.endLoginFlow(); - } ); - } - } ); - } ); - } ); - - /** - * OTP Input - */ - function createOTPInputs() { - const otpInputs = document.querySelectorAll( 'input[name="otp_code"]' ); - otpInputs.forEach( originalInput => { - const length = parseInt( originalInput.getAttribute( 'maxlength' ) ); - if ( ! length ) { - return; - } - const inputContainer = originalInput.parentNode; - inputContainer.removeChild( originalInput ); - const values = []; - const otpCodeInput = document.createElement( 'input' ); - otpCodeInput.setAttribute( 'type', 'hidden' ); - otpCodeInput.setAttribute( 'name', 'otp_code' ); - otpCodeInput.setAttribute( 'maxlength', length ); - inputContainer.appendChild( otpCodeInput ); - for ( let i = 0; i < length; i++ ) { - const digit = document.createElement( 'input' ); - digit.setAttribute( 'name', 'otp_code_input' ); - digit.setAttribute( 'type', 'text' ); - digit.setAttribute( 'maxlength', '1' ); - digit.setAttribute( 'pattern', '[0-9]' ); - digit.setAttribute( 'autocomplete', 'off' ); - digit.setAttribute( 'inputmode', 'numeric' ); - digit.setAttribute( 'data-index', i ); - digit.addEventListener( 'keydown', ev => { - const prev = inputContainer.querySelector( `[data-index="${ i - 1 }"]` ); - const next = inputContainer.querySelector( `[data-index="${ i + 1 }"]` ); - switch ( ev.key ) { - case 'Backspace': - ev.preventDefault(); - ev.target.value = ''; - if ( prev ) { - prev.focus(); - } - values[ i ] = ''; - otpCodeInput.value = values.join( '' ); - break; - case 'ArrowLeft': - ev.preventDefault(); - if ( prev ) { - prev.focus(); - } - break; - case 'ArrowRight': - ev.preventDefault(); - if ( next ) { - next.focus(); - } - break; - default: - if ( ev.key.match( /^[0-9]$/ ) ) { - ev.preventDefault(); - ev.target.value = ev.key; - ev.target.dispatchEvent( - new Event( 'input', { - bubbles: true, - cancelable: true, - } ) - ); - if ( next ) { - next.focus(); - } - } - break; - } - } ); - digit.addEventListener( 'input', ev => { - if ( ev.target.value.match( /^[0-9]$/ ) ) { - values[ i ] = ev.target.value; - } else { - ev.target.value = ''; - } - otpCodeInput.value = values.join( '' ); - } ); - digit.addEventListener( 'paste', ev => { - ev.preventDefault(); - const paste = ( ev.clipboardData || window.clipboardData ).getData( 'text' ); - if ( paste.length !== length ) { - return; - } - for ( let j = 0; j < length; j++ ) { - if ( paste[ j ].match( /^[0-9]$/ ) ) { - const digitInput = inputContainer.querySelector( `[data-index="${ j }"]` ); - digitInput.value = paste[ j ]; - values[ j ] = paste[ j ]; - } - } - otpCodeInput.value = values.join( '' ); - } ); - inputContainer.appendChild( digit ); - } - } ); - } - - function destroyOTPInputs() { - const otpInputs = document.querySelectorAll( 'input[name="otp_code"]' ); - otpInputs.forEach( originalInput => { - originalInput.value = ''; - const inputContainer = originalInput.parentNode; - const digits = inputContainer.querySelectorAll( 'input[name="otp_code_input"]' ); - digits.forEach( digit => { - inputContainer.removeChild( digit ); - } ); - } ); - } - - /** - * Third party auth. - */ - const loginsElements = document.querySelectorAll( '.newspack-reader__logins' ); - [ ...loginsElements ].forEach( element => { - element.classList.remove( 'newspack-reader__logins--disabled' ); - } ); - const googleLoginElements = document.querySelectorAll( '.newspack-reader__logins__google' ); - googleLoginElements.forEach( googleLoginElement => { - const googleLoginForm = googleLoginElement.closest( 'form' ); - const redirectInput = googleLoginForm.querySelector( 'input[name="redirect"]' ); - const checkLoginStatus = metadata => { - fetch( - `/wp-json/newspack/v1/login/google/register?metadata=${ JSON.stringify( metadata ) }` - ) - .then( res => { - res - .json() - .then( ( { message, data } ) => { - const redirect = redirectInput?.value || null; - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( message, res.status, data, redirect ); - } - } ) - .catch( error => { - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( error?.message, res.status ); - } - } ); - } ) - .catch( error => { - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( error?.message ); - } - } ); - }; - - googleLoginElement.addEventListener( 'click', () => { - if ( googleLoginForm?.startLoginFlow ) { - googleLoginForm.startLoginFlow(); - } - - const metadata = googleLoginForm - ? convertFormDataToObject( new FormData( googleLoginForm ), [ 'lists[]' ] ) - : {}; - metadata.current_page_url = window.location.href; - const authWindow = window.open( - 'about:blank', - 'newspack_google_login', - 'width=500,height=600' - ); - let googleOAuthSuccess = false; - window.addEventListener( 'google-oauth-success', () => { - googleOAuthSuccess = true; - checkLoginStatus( metadata ); - } ); - - fetch( '/wp-json/newspack/v1/login/google' ) - .then( res => res.json().then( data => Promise.resolve( { data, status: res.status } ) ) ) - .then( ( { data, status } ) => { - if ( status !== 200 ) { - if ( authWindow ) { - authWindow.close(); - } - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( data.message, status ); - } - } else if ( authWindow ) { - authWindow.location = data; - const interval = setInterval( () => { - if ( ! googleOAuthSuccess && authWindow.closed ) { - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( newspack_reader_auth_labels.login_canceled, 401 ); - } - clearInterval( interval ); - } - }, 500 ); - } else if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( newspack_reader_auth_labels.blocked_popup ); - } - } ) - .catch( error => { - if ( googleLoginForm?.endLoginFlow ) { - googleLoginForm.endLoginFlow( error?.message, 400 ); - } - if ( authWindow ) { - authWindow.close(); - } - } ); - } ); - } ); - } ); -} ); diff --git a/assets/reader-activation/auth.scss b/assets/reader-activation/auth.scss deleted file mode 100644 index 96df25885d..0000000000 --- a/assets/reader-activation/auth.scss +++ /dev/null @@ -1,523 +0,0 @@ -@use 'sass:color'; -@use '~@wordpress/base-styles/colors' as wp-colors; -@use '../shared/scss/mixins'; - -.entry-content .newspack-reader, -.newspack-reader { - /** - * Account Link - */ - &__account-link { - color: inherit; - position: relative; - - span { - display: inline-block; - } - - &__mobile { - display: flex; - justify-content: center; - margin-left: 0.5rem; - - @media screen and ( min-width: 960px ) { - display: none; - } - - a { - display: flex; - padding: 0.4em; - } - } - - &__icon { - height: 24px; - width: 24px; - - @media screen and ( min-width: 960px ) { - margin-left: -4px; - margin-top: -12px; - position: absolute; - top: 50%; - } - } - - &__label { - margin-left: calc( 16px + 0.4rem ); - - @media screen and ( max-width: 959px ) { - @include mixins.visuallyHidden; - } - } - } - - /** - * Sign-In/Register Form - */ - &__auth-form { - display: none; - background: rgba( 0, 0, 0, 0.75 ); - position: fixed; - width: 100% !important; - inset: 0; - justify-content: center; - align-items: center; - z-index: 2000000000; - font-size: 0.8888em; - - .grecaptcha-container { - display: none; - } - - &[data-action='register'] .grecaptcha-container { - display: flex; - } - - @media screen and ( min-width: 600px ) { - font-size: 0.8em; - } - - &__visible { - display: flex !important; - } - - &__inline { - display: block; - background: none; - position: relative; - width: auto; - z-index: auto; - } - - .nphp, - input[type='email'].nphp { - @include mixins.visuallyHidden; - } - - &[data-form-status='200'] { - .newspack-reader__auth-form { - &__response { - text-align: center; - font-size: 1em; - &__icon[data-form-status='200'] { - display: flex; - margin: 0 auto 1em; - border-radius: 100%; - width: 40px; - height: 40px; - justify-content: center; - align-items: center; - color: white; - background: wp-colors.$alert-green; - } - } - } - } - - &[data-form-status='400'], - &[data-form-status='500'] { - .newspack-reader__auth-form { - &__response { - background: color.adjust( wp-colors.$alert-red, $lightness: 51% ); - border-radius: 3px; - display: flex; - justify-content: center; - margin: 0 0 0.4rem; - padding: 0.4rem; - width: 100%; - &__icon[data-form-status='400'] { - display: flex; - flex: 1 1 0; - color: wp-colors.$alert-red; - margin: 0 0.4rem 0 0; - } - &__content { - align-items: center; - display: flex; - flex: 1 1 100%; - } - } - } - } - - @media screen and ( max-width: 744px ) { - align-items: flex-end; - } - - a { - text-decoration: underline; - } - - p { - line-height: 1.5; - margin: 0.8rem 0; - &.small { - margin: 0; - font-size: 0.8125em; - line-height: 1.2307; - a { - color: inherit; - } - } - } - - .components-form { - &__field { - font-size: 1rem; - margin: 0.4rem 0; - } - - &__submit { - flex: 1 1 100%; - font-size: 1rem; - margin: 0; - - button[type='submit'] { - background-color: var( --newspack-cta-color ); - color: var( --newspack-cta-contrast-color ); - transition: background-color 150ms ease-in-out; - - &:hover, - &:focus { - background-color: #111; - color: white; - } - } - } - - &__help { - color: wp-colors.$gray-700; - display: flex; - flex: 1 1 100%; - flex-wrap: wrap; - gap: 0.4rem; - justify-content: space-between; - margin: 0.4rem 0 0; - - a { - color: inherit; - } - } - } - - &__wrapper { - position: relative; - width: 100%; - max-width: 544px; - background: white; - max-height: 100vh; - transition: height 125ms ease-in-out; - - .newspack-reader__auth-form__inline & { - margin: auto; - max-width: 780px; - overflow-y: hidden; - } - } - &__have-account { - background-color: #111; - padding: 4px 15px; - margin-bottom: 11px; - padding-top: 6px !important; - padding-bottom: 8px !important; - text-align: center; - width: calc( 100% - 37px ); - @media screen and ( min-width: 600px ) { - width: 100%; - } - &, - a { - color: #fff; - } - a:active, - a:hover { - color: #d6d6d6; - } - } - - &__header { - align-items: baseline; - display: flex; - flex-wrap: wrap; - gap: 0.5em; - justify-content: space-between; - margin: 0 0 1em; - padding-right: 40px; - - .newspack-reader__auth-form__inline & { - padding-right: 0; - } - - @media screen and ( min-width: 600px ) { - padding-right: 0; - } - - h2 { - font-size: 1rem; - line-height: 1.3333; - margin: 0; - - @media screen and ( min-width: 600px ) { - font-size: 1.3125em; - line-height: 1.5238; - } - } - } - - & &__header { - a { - color: wp-colors.$gray-700; - font-size: 0.8125em; - line-height: 1.2307; - - &:active, - &:focus, - &:hover { - text-decoration: none; - } - } - } - - &__content { - padding: 16px; - - @media screen and ( min-width: 600px ) { - padding: 32px; - } - - @media screen and ( min-width: 782px ) { - padding: 47px 64px 64px; - } - - form { - transition: opacity 0.2s ease-in-out; - - > *:last-child { - margin-bottom: 0 !important; - } - } - input[type='text'], - input[type='email'], - input[type='password'] { - width: 100%; - } - .otp-field { - display: flex; - gap: 0.4rem; - justify-content: center; - margin: 0.8rem 0; - input[type='text'] { - flex: 1 1 100%; - font-family: monospace; - font-size: 1.2rem; - max-width: 2.4rem; - text-align: center; - } - } - input[name='otp_code'] { - font-size: 1.2rem; - text-align: center; - font-family: monospace; - } - .newspack-reader__auth-form__inline & { - padding: 0; - } - } - - &__actions { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - button { - display: block; - width: 100%; - } - } - - &__response { - font-size: 0.8125em; - line-height: 1.2307; - &__content { - p { - margin: 0; - } - } - &__icon { - display: none; - } - } - - &__close { - align-items: center; - background: white; - border: none; - border-radius: 3px; - box-shadow: none; - color: inherit; - cursor: pointer; - display: flex; - font-size: inherit; - height: 40px; - justify-content: center; - margin: 8px; - padding: 0; - position: absolute; - right: 0; - top: 7px; - width: 40px; - - @media screen and ( min-width: 600px ) { - height: 30px; - margin: 2px; - width: 30px; - } - - @media screen and ( min-width: 782px ) { - height: 48px; - margin: 8px; - width: 48px; - } - - svg { - fill: currentcolor; - flex: 0 0 24px; - } - - &:focus { - outline: 1.5px solid #111; - outline-offset: 2px; - } - } - - &__terms-text { - color: wp-colors.$gray-700; - font-size: 0.8125em; - line-height: 1.2307 !important; - a { - color: inherit; - } - } - } - - /** - * Newsletters subscription lists. - */ - &__lists { - flex: 1 1 100%; - font-size: 0.8rem; - border: 1px solid wp-colors.$gray-200; - border-radius: 2px; - padding: 0.5em; - box-sizing: border-box; - max-height: 21vh; - overflow-y: auto; - h3 { - display: none; - } - ul { - list-style: none; - margin: 0; - padding: 0; - display: flex; - flex-wrap: wrap; - min-width: 100%; - li { - flex: 1 1 33.3333%; - display: flex; - min-width: 142px; - box-sizing: border-box; - margin: 0.5em; - padding: 0; - } - } - - &__checkbox { - align-items: center; - display: flex; - flex: 0 0 auto; - height: 1.6em; - margin: 0 0.5rem 0 0; - } - - &__title { - display: block; - } - - &__description { - display: block; - font-size: 0.8rem; - color: #757575; - margin: 0; - } - } - - /** - * Third party auth. - */ - &__logins { - font-size: 1rem; - margin-top: 0.8rem; - &__separator { - align-items: center; - display: flex; - margin-bottom: 0.8rem; - div { - text-align: center; - &:nth-child( 2 ) { - font-size: 0.8rem; - line-height: 1.5; - padding: 0 0.5em; - } - &:first-child, - &:last-child { - flex: 1; - border-top: 1px solid wp-colors.$gray-200; - } - } - } - &--disabled { - button { - opacity: 0.5; - pointer-events: none; - } - } - button { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - background-color: wp-colors.$gray-100; - color: black; - transition: all 300ms; - span { - padding-left: 10px; - } - } - } -} - -/** - * Hide desktop account link on mobile. - */ -ul.newspack-reader__account-menu, -li.menu-item .newspack-reader__account-link { - @media screen and ( max-width: 959px ) { - display: none !important; - } -} - -/** - * Handle header with solid background. - */ -.h-sb { - .newspack-reader__account-link a { - color: #fff; - } -} - -/** - * Hide WooCommerce page title on My Account pages. - */ -.woocommerce-account .entry-header .entry-title { - display: none; -} From 1122c301f57205bb9d8e1ed48abc3b083e6a438a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:11:40 +0000 Subject: [PATCH 22/74] chore(deps-dev): bump @rushstack/eslint-patch from 1.10.3 to 1.10.4 Bumps [@rushstack/eslint-patch](https://github.com/microsoft/rushstack/tree/HEAD/eslint/eslint-patch) from 1.10.3 to 1.10.4. - [Changelog](https://github.com/microsoft/rushstack/blob/main/eslint/eslint-patch/CHANGELOG.md) - [Commits](https://github.com/microsoft/rushstack/commits/@rushstack/eslint-patch_v1.10.4/eslint/eslint-patch) --- updated-dependencies: - dependency-name: "@rushstack/eslint-patch" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 49d13dc06a..e8512d6db6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "tachyons": "^4.12.0" }, "devDependencies": { - "@rushstack/eslint-patch": "^1.10.3", + "@rushstack/eslint-patch": "^1.10.4", "@testing-library/react": "^12.1.4", "@types/qs": "^6.9.15", "@types/react": "^17.0.75", @@ -4316,9 +4316,9 @@ } }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", - "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", "dev": true }, "node_modules/@semantic-release/changelog": { @@ -35362,9 +35362,9 @@ } }, "@rushstack/eslint-patch": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", - "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", "dev": true }, "@semantic-release/changelog": { diff --git a/package.json b/package.json index 0f38b9bdda..5011885517 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "npm": "8" }, "devDependencies": { - "@rushstack/eslint-patch": "^1.10.3", + "@rushstack/eslint-patch": "^1.10.4", "@testing-library/react": "^12.1.4", "@types/qs": "^6.9.15", "@types/react": "^17.0.75", From 6bfb7019759f7b46cf8c75415545356273e0263e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:12:29 +0000 Subject: [PATCH 23/74] chore(deps): bump @babel/preset-env from 7.24.8 to 7.25.0 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.8 to 7.25.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.25.0/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 541 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 280 insertions(+), 263 deletions(-) diff --git a/package-lock.json b/package-lock.json index e8512d6db6..901b66fdec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.24.8", + "@babel/preset-env": "^7.25.0", "classnames": "^2.5.1", "colord": "^2.9.3", "deep-map-keys": "^2.0.1", @@ -211,9 +211,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", - "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", + "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==", "engines": { "node": ">=6.9.0" } @@ -254,11 +254,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -357,9 +357,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", + "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -418,24 +418,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -454,15 +443,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", - "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", + "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -491,13 +479,13 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -507,13 +495,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -558,9 +546,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } @@ -582,14 +570,13 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -622,9 +609,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -633,12 +620,26 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", + "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -648,11 +649,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -678,12 +679,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -981,14 +982,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1028,11 +1029,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1073,17 +1074,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" }, "engines": { @@ -1151,6 +1150,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", @@ -1212,13 +1226,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1317,14 +1331,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1795,18 +1809,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", - "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", + "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", "dependencies": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.0", "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1827,29 +1842,30 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-classes": "^7.25.0", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", "@babel/plugin-transform-dynamic-import": "^7.24.7", "@babel/plugin-transform-exponentiation-operator": "^7.24.7", "@babel/plugin-transform-export-namespace-from": "^7.24.7", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.0", "@babel/plugin-transform-json-strings": "^7.24.7", "@babel/plugin-transform-literals": "^7.24.7", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-new-target": "^7.24.7", @@ -1985,31 +2001,28 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2018,11 +2031,11 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -32529,9 +32542,9 @@ } }, "@babel/compat-data": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", - "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==" + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", + "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==" }, "@babel/core": { "version": "7.16.7", @@ -32559,11 +32572,11 @@ } }, "@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "requires": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -32642,9 +32655,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", + "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", "requires": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -32687,21 +32700,13 @@ "@babel/types": "^7.24.7" } }, - "@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "requires": { - "@babel/types": "^7.24.7" - } - }, "@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" } }, "@babel/helper-module-imports": { @@ -32714,15 +32719,14 @@ } }, "@babel/helper-module-transforms": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", - "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", + "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", "requires": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-optimise-call-expression": { @@ -32739,23 +32743,23 @@ "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==" }, "@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "requires": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-simple-access": { @@ -32785,9 +32789,9 @@ } }, "@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==" + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==" }, "@babel/helper-validator-identifier": { "version": "7.24.7", @@ -32800,14 +32804,13 @@ "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==" }, "@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "requires": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/helpers": { @@ -32830,25 +32833,33 @@ } }, "@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==" + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==" }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", + "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { @@ -32862,12 +32873,12 @@ } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-proposal-class-properties": { @@ -33043,14 +33054,14 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-transform-async-to-generator": { @@ -33072,11 +33083,11 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-class-properties": { @@ -33099,17 +33110,15 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "requires": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" } }, @@ -33147,6 +33156,15 @@ "@babel/helper-plugin-utils": "^7.24.7" } }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, "@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", @@ -33184,13 +33202,13 @@ } }, "@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "requires": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" } }, "@babel/plugin-transform-json-strings": { @@ -33247,14 +33265,14 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "requires": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-transform-modules-umd": { @@ -33534,18 +33552,19 @@ } }, "@babel/preset-env": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", - "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", + "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", "requires": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.0", "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -33566,29 +33585,30 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-classes": "^7.25.0", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", "@babel/plugin-transform-dynamic-import": "^7.24.7", "@babel/plugin-transform-exponentiation-operator": "^7.24.7", "@babel/plugin-transform-export-namespace-from": "^7.24.7", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.0", "@babel/plugin-transform-json-strings": "^7.24.7", "@babel/plugin-transform-literals": "^7.24.7", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-new-target": "^7.24.7", @@ -33698,38 +33718,35 @@ } }, "@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "requires": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "requires": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "requires": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" } diff --git a/package.json b/package.json index 5011885517..348872f48a 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.24.8", + "@babel/preset-env": "^7.25.0", "classnames": "^2.5.1", "colord": "^2.9.3", "deep-map-keys": "^2.0.1", From e76d8af7d0a239e46bceb8de44accbf9a7063b1e Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Mon, 29 Jul 2024 10:23:09 -0400 Subject: [PATCH 24/74] fix: use percentage rather than value for cover fee text (#3280) This fixes an issue where we are using the cover fee display value in the cover fee name. Woo escapes HTML entities when outputting the cover fee name as a result, HTML tags are rendered on the frontend in the transaction order review table. We fix this by outputting just a string of the percentage rather than the display value. --- .../class-woocommerce-cover-fees.php | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/includes/reader-revenue/woocommerce/class-woocommerce-cover-fees.php b/includes/reader-revenue/woocommerce/class-woocommerce-cover-fees.php index 576666ce59..2f71b899aa 100644 --- a/includes/reader-revenue/woocommerce/class-woocommerce-cover-fees.php +++ b/includes/reader-revenue/woocommerce/class-woocommerce-cover-fees.php @@ -79,7 +79,7 @@ public static function add_transaction_fee( $cart ) { sprintf( // Translators: %s is the fee percentage. __( 'Transaction fee (%s)', 'newspack-plugin' ), - self::get_cart_fee_display_value() + self::get_cart_fee_percentage() ), self::get_cart_fee_value() ); @@ -261,10 +261,25 @@ public static function get_fee_value( $subtotal ) { return $fee; } + /** + * Get the fee percentage. + * + * @param float $subtotal The subtotal to calculate the fee for. + * + * @return string + */ + public static function get_fee_percentage( $subtotal ) { + $total = self::get_total_with_fee( $subtotal ); + // Just one decimal place, please. + $flat_percentage = (float) number_format( ( ( $total - $subtotal ) * 100 ) / $subtotal, 1 ); + return $flat_percentage . '%'; + } + /** * Calculate the adjusted total, taking the fee into account. * * @param float $subtotal The subtotal to calculate the total for. + * * @return float */ public static function get_total_with_fee( $subtotal ) { @@ -280,6 +295,15 @@ public static function get_cart_fee_value() { return self::get_fee_value( WC()->cart->get_subtotal() ); } + /** + * Get the fee percentage for the current cart. + * + * @return float + */ + public static function get_cart_fee_percentage() { + return self::get_fee_percentage( WC()->cart->get_subtotal() ); + } + /** * Get the fee display value for the current cart. * From ff14fab9dd0bf18996f34c42c4470288af796aad Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Mon, 29 Jul 2024 10:25:19 -0400 Subject: [PATCH 25/74] fix(ras-acc): handle invalid removechild js error (#3281) This resolves some js errors that appear whenever transitioning from the auth modal to the checkout modal. It looks like there is some logic that tries to remove a loading state spinner in the auth modal which throws an error since the modal is closed and transitioned to the checkout modal. --- assets/blocks/reader-registration/view.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/blocks/reader-registration/view.js b/assets/blocks/reader-registration/view.js index d2ce4409b7..ace39f8b75 100644 --- a/assets/blocks/reader-registration/view.js +++ b/assets/blocks/reader-registration/view.js @@ -83,7 +83,9 @@ window.newspackRAS.push( function ( readerActivation ) { messageElement.appendChild( messageNode ); messageElement.classList.remove( 'newspack-registration--hidden' ); } - submitElement.removeChild( spinner ); + if ( submitElement.contains( spinner ) ) { + submitElement.removeChild( spinner ); + } submitElement.disabled = false; container.classList.remove( 'newspack-registration--in-progress' ); }; From 733d5cb0475d80edb7dce294f2d07a19e82c529a Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Mon, 29 Jul 2024 10:27:21 -0400 Subject: [PATCH 26/74] fix(ras-acc): correctly render auth modal response message and success button spacing (#3276) This PR ensures the auth modal response messages render correctly and removes extra padding from the success modal Continue button when logging in with a password. --- assets/reader-activation-auth/auth-form.js | 58 +++++++++++++++---- assets/reader-activation-auth/style.scss | 4 ++ .../class-reader-activation.php | 2 +- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/assets/reader-activation-auth/auth-form.js b/assets/reader-activation-auth/auth-form.js index 4de396aaad..059c5a50bc 100644 --- a/assets/reader-activation-auth/auth-form.js +++ b/assets/reader-activation-auth/auth-form.js @@ -72,8 +72,6 @@ window.newspackRAS.push( function ( readerActivation ) { formAction = action; actionInput.value = action; container.removeAttribute( 'data-form-status' ); - messageContentElement.style.display = 'none'; - messageContentElement.innerHTML = ''; container.querySelectorAll( '[data-action]' ).forEach( item => { if ( 'none' !== item.style.display ) { item.prevDisplay = item.style.display; @@ -157,7 +155,7 @@ window.newspackRAS.push( function ( readerActivation ) { handleOTPTimer(); sendCodeButtons.forEach( button => { button.addEventListener( 'click', function ( ev ) { - messageContentElement.innerHTML = ''; + form.setMessageContent(); ev.preventDefault(); form.startLoginFlow(); const body = new FormData(); @@ -184,8 +182,7 @@ window.newspackRAS.push( function ( readerActivation ) { body, } ) .then( () => { - messageContentElement.style.display = 'block'; - messageContentElement.innerHTML = newspack_reader_activation_labels.code_resent; + form.setMessageContent( newspack_reader_activation_labels.code_resent ); container.setFormAction( 'otp' ); readerActivation.setOTPTimer(); } ) @@ -211,7 +208,7 @@ window.newspackRAS.push( function ( readerActivation ) { submitButtons.forEach( button => { button.disabled = true; } ); - messageContentElement.innerHTML = ''; + form.setMessageContent(); form.style.opacity = 0.5; }; @@ -224,11 +221,13 @@ window.newspackRAS.push( function ( readerActivation ) { if ( message ) { const messageNode = document.createElement( 'p' ); messageNode.innerHTML = message; - messageContentElement.style.display = 'block'; - messageContentElement.appendChild( messageNode ); - messageContentElement - .querySelectorAll( '[data-set-action]' ) - .forEach( setActionListener ); + + if ( status !== 200 ) { + form.setMessageContent( message, true ); + messageContentElement + .querySelectorAll( '[data-set-action]' ) + .forEach( setActionListener ); + } } if ( status === 200 ) { if ( data ) { @@ -279,12 +278,49 @@ window.newspackRAS.push( function ( readerActivation ) { } else { setPasswordButton.style.display = 'none'; setPasswordButton.setAttribute( 'href', '#' ); + const continueButton = container.querySelector( '.auth-callback' ); + if ( continueButton ) { + continueButton.classList.add( 'newspack-ui__last-child' ); + } } } } } }; + /** + * Sets response message content. + * + * @param {string|HTMLElement} message Message content. + * @param {boolean} isError Whether the message is an error. + * + * @return {void} + */ + form.setMessageContent = ( message = '', isError = false ) => { + if ( message ) { + if ( typeof message === 'string' ) { + messageContentElement.innerHTML = message; + } else { + messageContentElement.appendChild( message ); + } + if ( isError ) { + messageContentElement.classList.remove( 'newspack-ui__helper-text' ); + messageContentElement.classList.add( 'newspack-ui__inline-error' ); + } else { + messageContentElement.classList.remove( 'newspack-ui__inline-error' ); + messageContentElement.classList.add( 'newspack-ui__helper-text' ); + } + messageContentElement.style.display = 'block'; + } else { + messageContentElement.style.display = 'none'; + messageContentElement.innerHTML = ''; + messageContentElement.classList.remove( + 'newspack-ui__inline-error', + 'newspack-ui__helper-text' + ); + } + }; + /** * Handle auth form submission. */ diff --git a/assets/reader-activation-auth/style.scss b/assets/reader-activation-auth/style.scss index 4da4c4b228..6657fee6c5 100644 --- a/assets/reader-activation-auth/style.scss +++ b/assets/reader-activation-auth/style.scss @@ -7,6 +7,10 @@ input[type='email'].nphp { @include mixins.visuallyHidden; } + + .response-container { + margin-bottom: 12px; + } } .entry-content .newspack-reader, diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index 617e23918c..536e44e43e 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1273,7 +1273,7 @@ public static function render_auth_form() {
-
+

From b8d85c8c86390ea1499585e740e9ece203e893e5 Mon Sep 17 00:00:00 2001 From: matticbot Date: Mon, 29 Jul 2024 14:28:25 +0000 Subject: [PATCH 27/74] chore(release): 4.6.1 [skip ci] ## [4.6.1](https://github.com/Automattic/newspack-plugin/compare/v4.6.0...v4.6.1) (2024-07-29) ### Bug Fixes * use percentage rather than value for cover fee text ([#3280](https://github.com/Automattic/newspack-plugin/issues/3280)) ([e76d8af](https://github.com/Automattic/newspack-plugin/commit/e76d8af7d0a239e46bceb8de44accbf9a7063b1e)) --- CHANGELOG.md | 7 +++++++ newspack.php | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be8b93144e..4cfef1751f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [4.6.1](https://github.com/Automattic/newspack-plugin/compare/v4.6.0...v4.6.1) (2024-07-29) + + +### Bug Fixes + +* use percentage rather than value for cover fee text ([#3280](https://github.com/Automattic/newspack-plugin/issues/3280)) ([e76d8af](https://github.com/Automattic/newspack-plugin/commit/e76d8af7d0a239e46bceb8de44accbf9a7063b1e)) + # [4.6.0](https://github.com/Automattic/newspack-plugin/compare/v4.5.0...v4.6.0) (2024-07-15) diff --git a/newspack.php b/newspack.php index 051c2e2220..a113a77513 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.6.0 + * Version: 4.6.1 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.6.0' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.6.1' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); diff --git a/package-lock.json b/package-lock.json index e193259806..a96fd8d8f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "newspack", - "version": "4.6.0", + "version": "4.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "newspack", - "version": "4.6.0", + "version": "4.6.1", "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", diff --git a/package.json b/package.json index 4be944749b..866d94a64d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newspack", - "version": "4.6.0", + "version": "4.6.1", "description": "The Newspack plugin. https://newspack.com", "bugs": { "url": "https://github.com/Automattic/newspack-plugin/issues" From 311665d96a6aab60c3786dfd06590363e6d31090 Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Mon, 29 Jul 2024 11:53:56 -0400 Subject: [PATCH 28/74] fix(ras-acc): redirect to homepage after logging out via my account (#3272) This PR redirects readers to the homepage after logging out via my account. This is because we now provide a signin option from every other page and it's not necessary to visit the my-account page to login anymore when RAS is setup. This also handles cases where folks are logging in from the my account page, forcing a redirect to trigger the updated my account dashboard. --- .../class-reader-activation.php | 19 +++++++++-------- .../class-woocommerce-my-account.php | 21 ++++--------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index 536e44e43e..a98cd06cc9 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1152,12 +1152,8 @@ private static function get_account_link() { } /** Do not render link for authenticated readers if account page doesn't exist. */ - if ( empty( $account_url ) ) { - if ( \is_user_logged_in() ) { - return ''; - } else { - $account_url = '#'; - } + if ( empty( $account_url ) && \is_user_logged_in() ) { + return ''; } $class = function( ...$parts ) { @@ -1230,8 +1226,13 @@ public static function render_auth_form() { } // phpcs:enable - $referer = \wp_parse_url( \wp_get_referer() ); - $labels = self::get_reader_activation_labels( 'signin' ); + $referer = \wp_parse_url( \wp_get_referer() ); + $labels = self::get_reader_activation_labels( 'signin' ); + $auth_callback_url = '#'; + // If we are already on the my account page, set the my account URL so the page reloads on submit. + if ( function_exists( 'wc_get_page_permalink' ) && function_exists( 'is_account_page' ) && \is_account_page() ) { + $auth_callback_url = \wc_get_page_permalink( 'myaccount' ); + } ?>
@@ -1298,7 +1299,7 @@ public static function render_auth_form() { - +
1 ], - $redirect_to - ); + $redirect_to = \get_home_url(); } return $redirect_to; } - /** - * Show a logout success message to readers after logging out via My Account. - */ - public static function show_message_after_logout() { - if ( isset( $_GET['logged_out'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - WooCommerce_Connection::add_wc_notice( __( 'You have successfully logged out.', 'newspack-plugin' ), 'success' ); - } - } - /** * Check if a reader has memberships that aren't associated with subscriptions. * From 0813369e0a904ebf4b4f0a17d7bbc8c59f29d749 Mon Sep 17 00:00:00 2001 From: Derrick Koo Date: Mon, 29 Jul 2024 10:03:49 -0600 Subject: [PATCH 29/74] feat: show deprecation warning for CM in Engagement wizard (#3264) * feat: show deprecation warning for CM in Engagement wizard * fix: use "warning" status for notification --- .../wizards/engagement/views/newsletters/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/assets/wizards/engagement/views/newsletters/index.js b/assets/wizards/engagement/views/newsletters/index.js index a3523c9743..c3c5cf4f6e 100644 --- a/assets/wizards/engagement/views/newsletters/index.js +++ b/assets/wizards/engagement/views/newsletters/index.js @@ -14,7 +14,7 @@ import once from 'lodash/once'; import { useEffect, useState, Fragment } from '@wordpress/element'; import apiFetch from '@wordpress/api-fetch'; import { sprintf, __ } from '@wordpress/i18n'; -import { CheckboxControl, TextareaControl, ExternalLink } from '@wordpress/components'; +import { CheckboxControl, TextareaControl, ExternalLink, Notice } from '@wordpress/components'; /** * Internal dependencies @@ -188,6 +188,18 @@ export const NewspackNewsletters = ( { ) } + { 'campaign_monitor' === + config?.settings?.newspack_newsletters_service_provider?.value && ( + +

{ __( 'Campaign Monitor support will be deprecated', 'newspack-plugin' ) }

+

+ { __( + 'Please connect a different service provider to ensure continued support.', + 'newspack-' + ) } +

+
+ ) } { values( config.settings ) .filter( setting => ! setting.provider || setting.provider === providerSelectProps.value From 68077ea96fafb426d9a16a736873aff8c7115ff6 Mon Sep 17 00:00:00 2001 From: Laurel Fulford Date: Mon, 29 Jul 2024 11:22:00 -0700 Subject: [PATCH 30/74] fix: set max width for in-page sign-in form --- assets/newspack-ui/scss/elements/forms/_buttons.scss | 1 + .../scss/elements/woocommerce/_overrides.scss | 12 +++++++++++- includes/templates/reader-activation/login-form.php | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/assets/newspack-ui/scss/elements/forms/_buttons.scss b/assets/newspack-ui/scss/elements/forms/_buttons.scss index 1bd5f8e261..8bd07f8e77 100644 --- a/assets/newspack-ui/scss/elements/forms/_buttons.scss +++ b/assets/newspack-ui/scss/elements/forms/_buttons.scss @@ -17,6 +17,7 @@ margin-bottom: var( --newspack-ui-spacer-2 ); min-height: var( --newspack-ui-spacer-9 ); padding: var( --newspack-ui-spacer-2 ) var( --newspack-ui-spacer-5 ); + text-decoration: none; transition: background-color 125ms ease-in-out, border-color 125ms ease-in-out, outline 125ms ease-in-out; &:last-child { diff --git a/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss b/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss index 20a3d75e49..57ea9eda72 100644 --- a/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss +++ b/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss @@ -20,4 +20,14 @@ display: block; } } -} \ No newline at end of file +} + +.woocommerce-account { + // Inline sign up form max-width. + .woocommerce-notices-wrapper:has( + .newspack-reader-auth__inline-wrapper ), + .newspack-reader-auth__inline-wrapper { + margin-left: auto; + margin-right: auto; + max-width: var( --newspack-ui-modal-width-s ); + } +} diff --git a/includes/templates/reader-activation/login-form.php b/includes/templates/reader-activation/login-form.php index b3a0099bf1..a3b88cbc88 100644 --- a/includes/templates/reader-activation/login-form.php +++ b/includes/templates/reader-activation/login-form.php @@ -16,7 +16,7 @@ \do_action( 'woocommerce_before_customer_login_form' ); ?> -
+

From 08030f062e52165c0da459d7e9e88a8020eaeb17 Mon Sep 17 00:00:00 2001 From: Laurel Fulford Date: Mon, 29 Jul 2024 12:44:18 -0700 Subject: [PATCH 31/74] fix: fix order of elements in registration block --- assets/blocks/reader-registration/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/blocks/reader-registration/index.php b/assets/blocks/reader-registration/index.php index 8356a19774..543f834cd6 100644 --- a/assets/blocks/reader-registration/index.php +++ b/assets/blocks/reader-registration/index.php @@ -263,6 +263,7 @@ function render_block( $attrs, $content ) { +
-

From c0c45c05e6a2b33c74ee8e6c419a0a11c3822a65 Mon Sep 17 00:00:00 2001 From: Laurel Fulford Date: Mon, 29 Jul 2024 13:27:40 -0700 Subject: [PATCH 32/74] fix: update block order in editor --- assets/blocks/reader-registration/edit.js | 28 +++++++++---------- assets/blocks/reader-registration/editor.scss | 17 +++++++++++ assets/reader-activation-auth/style.scss | 20 ++----------- 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/assets/blocks/reader-registration/edit.js b/assets/blocks/reader-registration/edit.js index 23c53a8f9f..eea05a8ffe 100644 --- a/assets/blocks/reader-registration/edit.js +++ b/assets/blocks/reader-registration/edit.js @@ -345,6 +345,19 @@ export default function ReaderRegistrationEdit( {
) : null }
+ { newspack_blocks.has_google_oauth && ( +
+ +
+ { __( 'Or', 'newspack-plugin' ) } +
+
+ ) }
@@ -358,21 +371,6 @@ export default function ReaderRegistrationEdit( {
- { newspack_blocks.has_google_oauth && ( -
-
-
-
{ __( 'OR', 'newspack-plugin' ) }
-
-
- -
- ) }
diff --git a/assets/blocks/reader-registration/editor.scss b/assets/blocks/reader-registration/editor.scss index 7cef42e19c..e7447bb26e 100644 --- a/assets/blocks/reader-registration/editor.scss +++ b/assets/blocks/reader-registration/editor.scss @@ -154,3 +154,20 @@ } } } + +.newspack-ui__word-divider { + align-items: center; + display: flex; + font-size: 14px; + gap: 12px; + justify-content: space-evenly; + margin: 24px 0; + + &::before, + &::after { + border-top: 1px solid #ddd; + content: ''; + display: block; + width: 100%; + } +} \ No newline at end of file diff --git a/assets/reader-activation-auth/style.scss b/assets/reader-activation-auth/style.scss index 6657fee6c5..2ad0c760d1 100644 --- a/assets/reader-activation-auth/style.scss +++ b/assets/reader-activation-auth/style.scss @@ -120,24 +120,6 @@ &__logins { font-size: 1rem; margin-top: 0.8rem; - &__separator { - align-items: center; - display: flex; - margin: 0.8rem 0; - div { - text-align: center; - &:nth-child( 2 ) { - font-size: 0.8rem; - line-height: 1.5; - padding: 0 0.5em; - } - &:first-child, - &:last-child { - flex: 1; - border-top: 1px solid wp-colors.$gray-200; - } - } - } &--disabled { button { opacity: 0.5; @@ -184,3 +166,5 @@ li.menu-item .newspack-reader__account-link { .woocommerce-account .entry-header .entry-title { display: none; } + + From a2700ea5a0574a5d361dd110b8bad60e404136bf Mon Sep 17 00:00:00 2001 From: matticbot Date: Tue, 30 Jul 2024 07:46:40 +0000 Subject: [PATCH 33/74] chore(release): 4.7.0 [skip ci] # [4.7.0](https://github.com/Automattic/newspack-plugin/compare/v4.6.1...v4.7.0) (2024-07-30) ### Bug Fixes * **reader-activation:** handle user login clash ([10dfcd1](https://github.com/Automattic/newspack-plugin/commit/10dfcd166eb533c0fc89f73487f6dd4f45237275)) ### Features * **cli-co-authors-plus:** ensure correct author slug is set ([#3248](https://github.com/Automattic/newspack-plugin/issues/3248)) ([14ad71b](https://github.com/Automattic/newspack-plugin/commit/14ad71bd98a24466da188a56f8e5f7e6d6e80930)) --- CHANGELOG.md | 12 ++++++++++++ newspack.php | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cfef1751f..52fdc669a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [4.7.0](https://github.com/Automattic/newspack-plugin/compare/v4.6.1...v4.7.0) (2024-07-30) + + +### Bug Fixes + +* **reader-activation:** handle user login clash ([10dfcd1](https://github.com/Automattic/newspack-plugin/commit/10dfcd166eb533c0fc89f73487f6dd4f45237275)) + + +### Features + +* **cli-co-authors-plus:** ensure correct author slug is set ([#3248](https://github.com/Automattic/newspack-plugin/issues/3248)) ([14ad71b](https://github.com/Automattic/newspack-plugin/commit/14ad71bd98a24466da188a56f8e5f7e6d6e80930)) + ## [4.6.1](https://github.com/Automattic/newspack-plugin/compare/v4.6.0...v4.6.1) (2024-07-29) diff --git a/newspack.php b/newspack.php index 03aae874c8..ff4eccbb7b 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.7.0-alpha.1 + * Version: 4.7.0 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.7.0-alpha.1' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.7.0' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); diff --git a/package-lock.json b/package-lock.json index 1b07375d7f..9ef3709be5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "newspack", - "version": "4.6.1", + "version": "4.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "newspack", - "version": "4.6.1", + "version": "4.7.0", "hasInstallScript": true, "dependencies": { "@babel/plugin-transform-runtime": "^7.24.7", diff --git a/package.json b/package.json index a65895c4fc..c2abdd9b8f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newspack", - "version": "4.6.1", + "version": "4.7.0", "description": "The Newspack plugin. https://newspack.com", "bugs": { "url": "https://github.com/Automattic/newspack-plugin/issues" From 46db669d9faa19c6350768ac1cca692ecfe05b80 Mon Sep 17 00:00:00 2001 From: Adam Cassis Date: Fri, 26 Jul 2024 11:19:42 +0200 Subject: [PATCH 34/74] fix(woocommerce): prevent /shop redirect from author archives If a user is a Customer, but assignable to posts ("Non-Editing Contributor" role), they should have their archive page working. --- includes/class-newspack.php | 1 + includes/plugins/class-woocommerce.php | 31 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 includes/plugins/class-woocommerce.php diff --git a/includes/class-newspack.php b/includes/class-newspack.php index bc3f583776..26d993b37b 100644 --- a/includes/class-newspack.php +++ b/includes/class-newspack.php @@ -159,6 +159,7 @@ private function includes() { include_once NEWSPACK_ABSPATH . 'includes/plugins/class-perfmatters.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/class-co-authors-plus.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/wc-memberships/class-memberships.php'; + include_once NEWSPACK_ABSPATH . 'includes/plugins/class-woocommerce.php'; include_once NEWSPACK_ABSPATH . 'includes/class-patches.php'; include_once NEWSPACK_ABSPATH . 'includes/polyfills/class-amp-polyfills.php'; diff --git a/includes/plugins/class-woocommerce.php b/includes/plugins/class-woocommerce.php new file mode 100644 index 0000000000..64c5bcf369 --- /dev/null +++ b/includes/plugins/class-woocommerce.php @@ -0,0 +1,31 @@ + Date: Wed, 31 Jul 2024 12:48:09 -0400 Subject: [PATCH 35/74] fix(ras-acc): handle content gate auth checkout flow (#3294) This PR addresses an issue where the registration/login+checkout flow via content gate is cutoff after the auth step. We fix this by adding a cookie flag to indicate auth checkout status, and only reload when that flag is no longer set (after checkout). This PR also addresses another smaller issue where the newsletters modal should not triggered by the auth modal when this checkout flag is set since the checkout flow will manage which modals should appear next. --- assets/reader-activation-auth/auth-form.js | 6 ++++- assets/reader-activation/index.js | 22 +++++++++++++++++++ .../wc-memberships/class-memberships.php | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/assets/reader-activation-auth/auth-form.js b/assets/reader-activation-auth/auth-form.js index 059c5a50bc..9f1d772b9d 100644 --- a/assets/reader-activation-auth/auth-form.js +++ b/assets/reader-activation-auth/auth-form.js @@ -236,7 +236,11 @@ window.newspackRAS.push( function ( readerActivation ) { } let callback; - if ( container.authCallback && data?.registered ) { + if ( + container.authCallback && + data?.registered && + ! readerActivation.getCheckoutStatus() + ) { callback = ( authMessage, authData ) => openNewslettersSignupModal( { callback: container.authCallback( authMessage, authData ), diff --git a/assets/reader-activation/index.js b/assets/reader-activation/index.js index e1d4b69cee..7944cb5e88 100644 --- a/assets/reader-activation/index.js +++ b/assets/reader-activation/index.js @@ -326,6 +326,26 @@ export function getAuthStrategy() { } return getCookie( 'np_auth_strategy' ); } +/** + * Set the reader checkout status. + * + * @param {boolean} status Checkout status. Default is false. + * + * @return {void} + */ +export function setCheckoutStatus( status = false ) { + setCookie( 'np_auth_checkout_status', status ); + emit( EVENTS.reader, getReader() ); + return status; +} +/** + * Get the reader checkout status. + * + * @return {boolean} Reader checkout status. + */ +export function getCheckoutStatus() { + return 'true' === getCookie( 'np_auth_checkout_status' ); +} /** * Ensure the client ID cookie is set. @@ -424,6 +444,8 @@ const readerActivation = { authenticateOTP, setAuthStrategy, getAuthStrategy, + setCheckoutStatus, + getCheckoutStatus, getCaptchaV3Token: window.newspack_grecaptcha ? window.newspack_grecaptcha?.getCaptchaV3Token : () => new Promise( res => res( '' ) ), // Empty promise. diff --git a/includes/plugins/wc-memberships/class-memberships.php b/includes/plugins/wc-memberships/class-memberships.php index 635e43d53b..33f9d54c8a 100644 --- a/includes/plugins/wc-memberships/class-memberships.php +++ b/includes/plugins/wc-memberships/class-memberships.php @@ -717,7 +717,7 @@ public static function render_js() { window.newspackRAS = window.newspackRAS || []; window.newspackRAS.push( function( ras ) { ras.on( 'reader', function( ev ) { - if ( ev.detail.authenticated ) { + if ( ev.detail.authenticated && ! window?.newspackReaderActivation?.getCheckoutStatus() ) { if ( ras.overlays.get().length ) { ras.on( 'overlay', function( ev ) { if ( ! ev.detail.overlays.length ) { From e47e42274cf446ec5882c01edc2b4a081be846b7 Mon Sep 17 00:00:00 2001 From: leogermani Date: Thu, 1 Aug 2024 07:17:20 -0300 Subject: [PATCH 36/74] feat: enhancements for the Non editing contributor role (#3277) * feat: enhancements for the Non editing contributor role * fix: rename the file * feat: default role PHP handling * feat: add a fake email in case of empty * feat: also add a placeholder email on updates --------- Co-authored-by: Adam Cassis --- assets/other-scripts/co-authors-plus/index.js | 68 ++++ includes/plugins/class-co-authors-plus.php | 332 +++++++++++++++++- .../class-woocommerce-my-account.php | 7 + 3 files changed, 406 insertions(+), 1 deletion(-) create mode 100644 assets/other-scripts/co-authors-plus/index.js diff --git a/assets/other-scripts/co-authors-plus/index.js b/assets/other-scripts/co-authors-plus/index.js new file mode 100644 index 0000000000..766a26b6c7 --- /dev/null +++ b/assets/other-scripts/co-authors-plus/index.js @@ -0,0 +1,68 @@ +/* globals guestAuthorRole, jQuery */ + +jQuery( document ).ready( function ( $ ) { + $( 'select#role' ).change( function () { + if ( guestAuthorRole.role !== $( this ).val() ) { + deactivateGuestAuthor(); + } else { + activateGuestAuthor(); + } + } ); + + const loginLabel = $( 'label[for="user_login"]' )[ 0 ].innerHTML; + + function activateGuestAuthor() { + // Make email not required. + $( 'label[for="email"] > span.description' ).hide(); + $( '#createuser input[name=email]' ).closest( 'tr' ).removeClass( 'form-required' ); + + // User login. + if ( 'new' === guestAuthorRole.screen ) { + $( 'label[for="user_login"]' )[ 0 ].innerHTML = guestAuthorRole.displayNameLabel; + } else { + $( 'label[for="user_login"]' ).parents( 'tr' ).hide(); + } + + // Password. + $( 'label[for="pass1"]' ).parents( 'tr' ).hide(); + + // Email notification. + $( 'input#send_user_notification' ).parents( 'tr' ).hide(); + + // User profile fields. + $( 'label[for="rich_editing"]' ).parents( 'tr' ).hide(); + $( 'label[for="comment_shortcuts"]' ).parents( 'tr' ).hide(); + $( 'label[for="admin_bar_front"]' ).parents( 'tr' ).hide(); + $( 'label[for="locale"]' ).parents( 'tr' ).hide(); + $( 'tr.user-admin-color-wrap' ).hide(); + } + + function deactivateGuestAuthor() { + // Make email required. + $( 'label[for="email"] > span.description' ).show(); + $( '#createuser input[name=email]' ).closest( 'tr' ).addClass( 'form-required' ); + + // User login. + if ( 'new' === guestAuthorRole.screen ) { + $( 'label[for="user_login"]' )[ 0 ].innerHTML = loginLabel; + } else { + $( 'label[for="user_login"]' ).parents( 'tr' ).show(); + } + + // Password. + $( 'label[for="pass1"]' ).parents( 'tr' ).show(); + + // Email notification. + $( 'input#send_user_notification' ).parents( 'tr' ).show(); + + // User profile fields. + $( 'label[for="rich_editing"]' ).parents( 'tr' ).show(); + $( 'label[for="comment_shortcuts"]' ).parents( 'tr' ).show(); + $( 'label[for="admin_bar_front"]' ).parents( 'tr' ).show(); + $( 'label[for="locale"]' ).parents( 'tr' ).show(); + $( 'tr.user-admin-color-wrap' ).show(); + } + + // Trigger change event on page load. + $( 'select#role' ).change(); +} ); diff --git a/includes/plugins/class-co-authors-plus.php b/includes/plugins/class-co-authors-plus.php index 62d8a79b21..9fc03513f5 100644 --- a/includes/plugins/class-co-authors-plus.php +++ b/includes/plugins/class-co-authors-plus.php @@ -10,8 +10,15 @@ defined( 'ABSPATH' ) || exit; +use WP_User; + /** - * Main class. + * This class implements an alternative for the Guest Authors feature of Co-Authors Plus. + * + * The Non Editing Contributor role behaves similarly to the Guest Authors feature, but it's a custom role that can be assigned to users. + * + * This role can also be assigned to users who have other roles, so they can be assigned as co-authors of a post without having the capability to edit posts. + * This is done via a custom UI in the user profile. */ class Co_Authors_Plus { /** @@ -37,6 +44,34 @@ public static function init() { add_filter( 'coauthors_edit_author_cap', [ __CLASS__, 'coauthors_edit_author_cap' ] ); add_action( 'admin_init', [ __CLASS__, 'setup_custom_role_and_capability' ] ); add_action( 'template_redirect', [ __CLASS__, 'prevent_myaccount_update' ] ); + add_action( 'newspack_before_delete_account', [ __CLASS__, 'before_delete_account' ] ); + + if ( defined( 'NEWSPACK_DISABLE_CAP_GUEST_AUTHORS' ) && NEWSPACK_DISABLE_CAP_GUEST_AUTHORS ) { + add_filter( 'coauthors_guest_authors_enabled', '__return_false' ); + add_action( 'admin_menu', [ __CLASS__, 'guest_author_menu_replacement' ] ); + } + + // Do not allow guest authors to login. + \add_filter( 'wp_authenticate_user', [ __CLASS__, 'wp_authenticate_user' ], 10, 2 ); + + // Modify the user profile and user creation forms. + \add_action( 'admin_footer', [ __CLASS__, 'admin_footer' ] ); + \add_filter( 'user_profile_update_errors', [ __CLASS__, 'user_profile_update_errors' ], 10, 3 ); + \add_action( 'admin_print_scripts-user-new.php', [ __CLASS__, 'admin_footer' ] ); + \add_action( 'admin_print_scripts-user-edit.php', [ __CLASS__, 'admin_footer' ] ); + + \add_filter( 'option_default_role', [ __CLASS__, 'create_user_default_role' ] ); + \add_filter( 'option_cme_capabilities_add_user_multi_roles', [ __CLASS__, 'cme_capabilities_add_user_multi_roles' ] ); + + // Disable some features from the user profile. + \add_filter( 'show_password_fields', [ __CLASS__, 'disable_feature' ], 10, 2 ); + \add_filter( 'wp_is_application_passwords_available_for_user', [ __CLASS__, 'disable_feature' ], 10, 2 ); + \add_filter( 'allow_password_reset', [ __CLASS__, 'disable_feature' ], 10, 2 ); + \add_filter( 'woocommerce_current_user_can_edit_customer_meta_fields', [ __CLASS__, 'disable_feature' ], 10, 2 ); + + // Add UI to the user profile to assign the custom role. + add_action( 'edit_user_profile', [ __CLASS__, 'edit_user_profile' ] ); + add_action( 'wp_update_user', [ __CLASS__, 'edit_user_profile_update' ] ); } /** @@ -48,6 +83,20 @@ public static function coauthors_edit_author_cap( $edit_cap ) { return self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME; } + /** + * Determines whether a user is only a "guest author", meaning it only has the custom role and no other role. + * + * In this case, the user won't be able to login and will have some features removed from their profile. + * + * Users who have more than one role other than non_edit_contributor are still able to login and a have a full profile. + * + * @param WP_User $user The user to check. + * @return bool + */ + private static function is_guest_author( WP_User $user ) { + return 1 === count( $user->roles ) && self::CONTRIBUTOR_NO_EDIT_ROLE_NAME === array_shift( $user->roles ); + } + /** * Prevent users from updating their account details in My Account, if they have the custom role. */ @@ -73,6 +122,27 @@ public static function prevent_myaccount_update() { } } + /** + * Prevents the Delete Account email to be sent and display an error message to the user + * + * @param int $user_id The user ID trying to delete the account. + * @return void + */ + public static function before_delete_account( $user_id ) { + if ( user_can( $user_id, self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME ) ) { + \wp_safe_redirect( + \add_query_arg( + [ + 'message' => __( 'It looks like you are an author on this site. Please contact a site adminstrator to get your account deactivated.', 'newspack-plugin' ), + 'is_error' => true, + ], + \remove_query_arg( WooCommerce_My_Account::DELETE_ACCOUNT_URL_PARAM ) + ) + ); + exit; + } + } + /** * Create the custom role and then add custom capability. */ @@ -103,5 +173,265 @@ public static function setup_custom_role_and_capability() { \update_option( self::SETTINGS_VERSION_OPTION_NAME, $current_settings_version ); } + + /** + * Filters user validation to allow empty emails for guest authors + * + * When creating a new user, also automatically generate a username from the display name. + * + * @param WP_Error $errors WP_Error object (passed by reference). + * @param bool $update Whether this is a user update. + * @param stdClass $user User object (passed by reference). + * @return WP_Error + */ + public static function user_profile_update_errors( $errors, $update, $user ) { + + if ( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME !== $user->role ) { + return $errors; + } + + if ( ! empty( $errors->errors['empty_email'] ) ) { + $errors->remove( 'empty_email' ); + } + + if ( ! empty( $errors->errors['user_login'] ) ) { + $errors->remove( 'user_login' ); + } + + // We still don't want users with duplicate emails. + if ( ! empty( $errors->errors['email_exists'] ) ) { + return $errors; + } + + if ( ! $update ) { + // For guest authors, the form is modified via JS and we get the display name in the username field. + $user->display_name = $user->user_login; + + // Create user name from Display name. + $user->user_login = self::generate_username( $user->display_name ); + } + + if ( empty( $user->user_email ) ) { + // Create a placeholder email address to avoid any issues with empty emails. + $user->user_email = $user->user_login . '@example.com'; + } + + return $errors; + } + + /** + * Generates a unique username from a display name. + * + * @param string $display_name The user's display name. + * @return string + */ + public static function generate_username( $display_name ) { + $username = \sanitize_user( $display_name, true ); + $username = \sanitize_title( $username ); + + while ( \username_exists( $username ) ) { + $username = $username . '-' . \wp_rand( 1, 100 ); + } + + return $username; + } + + /** + * Enqueues the JS that modifies the user profile and user creation forms. + * + * @return void + */ + public static function admin_footer() { + global $pagenow; + \wp_enqueue_script( + 'newspack-co-authors-plus', + Newspack::plugin_url() . '/dist/other-scripts/co-authors-plus.js', + [ 'jquery' ], + NEWSPACK_PLUGIN_VERSION, + true + ); + + wp_localize_script( + 'newspack-co-authors-plus', + 'guestAuthorRole', + [ + 'role' => self::CONTRIBUTOR_NO_EDIT_ROLE_NAME, + 'displayNameLabel' => __( 'Display name', 'newspack-plugin' ), + 'screen' => $pagenow === 'user-new.php' ? 'new' : 'edit', + ] + ); + } + + /** + * A generic callback applied to filters that check if a user has access to a feature, or if a certain field should be displayed in its profile. + * + * These callbacks pass the return of the check as the first argument ant the user or user ID as the second. + * + * @param bool $result The result of the check. + * @param int|WP_User $user A user ID or user object. + * @return bool + */ + public static function disable_feature( $result, $user ) { + if ( is_int( $user ) ) { + $user = \get_user_by( 'id', $user ); + } + + if ( ! is_a( $user, 'WP_User' ) ) { + return $result; + } + + if ( self::is_guest_author( $user ) ) { + return false; + } + + return $result; + } + + /** + * Filters user authentication to prevent guest authors from logging in. + * + * @param WP_Error|WP_User $user The logged in user or login error. + * @param string $password The user's password. + * @return WP_Error|WP_User + */ + public static function wp_authenticate_user( $user, $password ) { + if ( ! is_a( $user, 'WP_User' ) ) { + return $user; + } + + if ( self::is_guest_author( $user ) ) { + return new WP_Error( 'guest_authors_cannot_login', __( 'Non-Editing Contributors cannot login.', 'newspack-plugin' ) ); + } + + return $user; + } + + /** + * Adds a replacement Guest Authors menu item. + */ + public static function guest_author_menu_replacement() { + add_submenu_page( + 'users.php', + __( 'Guest Authors', 'newspack-plugin' ), + __( 'Guest Authors', 'newspack-plugin' ), + 'list_users', + 'newspack-view-guest-authors', + [ __CLASS__, 'render_guest_authors_replacement_page' ] + ); + } + + /** + * Render the replacement Guest Authors page. + */ + public static function render_guest_authors_replacement_page() { + ?> +
+

+ +

+

+ + + +
+ add_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ); + } else { + $user->remove_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ); + } + } + + /** + * Add user profile fields. + * + * @param WP_User $user The current WP_User object. + */ + public static function edit_user_profile( $user ) { + + if ( self::is_guest_author( get_userdata( $user->ID ) ) ) { // For some reason $user is not the full user object. + return; + } + $current_status = user_can( $user->ID, self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ); + ?> +
+ +

+ + + + + + + +
+ $form_nonce, From aebe581d451dc27429b40a222a9c712227fa44d9 Mon Sep 17 00:00:00 2001 From: Derrick Koo Date: Thu, 1 Aug 2024 09:57:44 -0600 Subject: [PATCH 37/74] fix: force active membership if the user has active subs (#3268) * fix: force active membership if the user has active subs * fix: match memberships product ownership logic (OR, not AND) * fix: logical error * fix: logical error * fix: incorrect condition * fix: feedback from code review --- .../wc-memberships/class-memberships.php | 96 +++++++++++++++---- .../class-woocommerce-connection.php | 49 ++++++++-- 2 files changed, 118 insertions(+), 27 deletions(-) diff --git a/includes/plugins/wc-memberships/class-memberships.php b/includes/plugins/wc-memberships/class-memberships.php index 635e43d53b..d7d8749488 100644 --- a/includes/plugins/wc-memberships/class-memberships.php +++ b/includes/plugins/wc-memberships/class-memberships.php @@ -8,6 +8,7 @@ namespace Newspack; use Newspack\Memberships\Metering; +use Newspack\WooCommerce_Connection; defined( 'ABSPATH' ) || exit; @@ -56,6 +57,7 @@ public static function init() { add_filter( 'newspack_popups_assess_has_disabled_popups', [ __CLASS__, 'disable_popups' ] ); add_filter( 'newspack_reader_activity_article_view', [ __CLASS__, 'suppress_article_view_activity' ], 100 ); add_filter( 'user_has_cap', [ __CLASS__, 'user_has_cap' ], 10, 3 ); + add_filter( 'get_post_status', [ __CLASS__, 'check_membership_status' ], 10, 2 ); add_action( 'wp', [ __CLASS__, 'remove_unnecessary_content_restriction' ], 11 ); /** Add gate content filters to mimic 'the_content'. See 'wp-includes/default-filters.php' for reference. */ @@ -78,6 +80,13 @@ public static function init() { include __DIR__ . '/class-metering.php'; } + /** + * Check if Memberships is available. + */ + public static function is_active() { + return class_exists( 'WC_Memberships' ) && function_exists( 'wc_memberships' ); + } + /** * Parses dynamic blocks out of `post_content` and re-renders them. * @@ -321,7 +330,7 @@ private static function get_plan_gate_id( $plan_id ) { * @return string[] Plan names keyed by plan ID. */ private static function get_gate_plans( $gate_id ) { - if ( ! function_exists( 'wc_memberships_get_membership_plan' ) ) { + if ( ! self::is_active() || ! function_exists( 'wc_memberships_get_membership_plan' ) ) { return []; } $ids = get_post_meta( $gate_id, 'plans', true ); @@ -344,7 +353,7 @@ private static function get_gate_plans( $gate_id ) { * @return array */ public static function get_plans() { - if ( ! function_exists( 'wc_memberships_get_membership_plans' ) ) { + if ( ! self::is_active() || ! function_exists( 'wc_memberships_get_membership_plans' ) ) { return []; } $membership_plans = wc_memberships_get_membership_plans(); @@ -415,7 +424,7 @@ private static function current_user_has_plan( $plan_id ) { if ( ! \is_user_logged_in() ) { return false; } - if ( ! function_exists( 'wc_memberships_is_user_active_or_delayed_member' ) ) { + if ( ! self::is_active() || ! function_exists( 'wc_memberships_is_user_active_or_delayed_member' ) ) { return false; } return \wc_memberships_is_user_active_or_delayed_member( \get_current_user_id(), $plan_id ); @@ -480,7 +489,7 @@ public static function is_post_restricted( $post_id = null ) { if ( ! $post_id ) { $post_id = get_the_ID(); } - if ( ! function_exists( 'wc_memberships_is_post_content_restricted' ) || ! \wc_memberships_is_post_content_restricted( $post_id ) ) { + if ( ! self::is_active() || ! function_exists( 'wc_memberships_is_post_content_restricted' ) || ! \wc_memberships_is_post_content_restricted( $post_id ) ) { return false; } return ! is_user_logged_in() || ! current_user_can( 'wc_memberships_view_restricted_post_content', $post_id ); // phpcs:ignore WordPress.WP.Capabilities.Unknown @@ -795,7 +804,7 @@ private static function can_manage_woocommerce( $caps ) { */ public static function user_has_cap( $all_caps, $caps, $args ) { // Bail if Woo Memberships is not active. - if ( ! class_exists( 'WC_Memberships' ) || ! function_exists( 'wc_memberships' ) ) { + if ( ! self::is_active() ) { return $all_caps; } @@ -803,6 +812,18 @@ public static function user_has_cap( $all_caps, $caps, $args ) { foreach ( $caps as $cap ) { switch ( $cap ) { + case 'wc_memberships_access_all_restricted_content': + case 'wc_memberships_view_restricted_product': + case 'wc_memberships_purchase_restricted_product': + case 'wc_memberships_view_restricted_product_taxonomy_term': + case 'wc_memberships_view_delayed_product_taxonomy_term': + case 'wc_memberships_view_restricted_taxonomy_term': + case 'wc_memberships_view_restricted_taxonomy': + case 'wc_memberships_view_restricted_post_type': + case 'wc_memberships_view_delayed_post_type': + case 'wc_memberships_view_delayed_taxonomy': + case 'wc_memberships_view_delayed_taxonomy_term': + case 'wc_memberships_view_delayed_post_content': case 'wc_memberships_view_restricted_post_content': if ( self::can_manage_woocommerce( $all_caps ) ) { $all_caps[ $cap ] = true; @@ -815,6 +836,10 @@ public static function user_has_cap( $all_caps, $caps, $args ) { break; } + if ( ! isset( $args[1] ) || ! isset( $args[2] ) ) { + break; + } + $user_id = (int) $args[1]; $post_id = (int) $args[2]; @@ -828,20 +853,8 @@ public static function user_has_cap( $all_caps, $caps, $args ) { break; - case 'wc_memberships_access_all_restricted_content': - case 'wc_memberships_view_restricted_product': - case 'wc_memberships_purchase_restricted_product': - case 'wc_memberships_view_restricted_product_taxonomy_term': - case 'wc_memberships_view_delayed_product_taxonomy_term': - case 'wc_memberships_view_restricted_taxonomy_term': - case 'wc_memberships_view_restricted_taxonomy': - case 'wc_memberships_view_restricted_post_type': - case 'wc_memberships_view_delayed_post_type': - case 'wc_memberships_view_delayed_taxonomy': - case 'wc_memberships_view_delayed_taxonomy_term': - case 'wc_memberships_view_delayed_post_content': case 'wc_memberships_view_delayed_product': - // Allow user who can edit posts (by default: editors, authors, contributors). + // Allow users who can edit posts (by default: editors, authors, contributors). if ( isset( $all_caps['edit_posts'] ) && true === $all_caps['edit_posts'] ) { $all_caps[ $cap ] = true; break; @@ -876,10 +889,19 @@ private static function user_has_content_access_from_rules( $user_id, array $rul return true; } + $integrations = wc_memberships()->get_integrations_instance(); + $integration = $integrations ? $integrations->get_subscriptions_instance() : null; $require_all_plans = self::get_require_all_plans_setting(); $has_access = false; + $has_subscription = false; foreach ( $rules as $rule ) { + $membership_plan_id = $rule->get_membership_plan_id(); + if ( $integration && $integration->has_membership_plan_subscription( $membership_plan_id ) ) { + $subscription_plan = new \WC_Memberships_Integration_Subscriptions_Membership_Plan( $membership_plan_id ); + $required_products = $subscription_plan->get_subscription_product_ids(); + $has_subscription = ! empty( WooCommerce_Connection::get_active_subscriptions_for_user( $user_id, $required_products ) ); + } // If no object ID is provided, then we are looking at rules that apply to whole post types or taxonomies. // In this case, rules that apply to specific objects should be skipped. @@ -887,7 +909,7 @@ private static function user_has_content_access_from_rules( $user_id, array $rul continue; } - if ( wc_memberships_is_user_active_or_delayed_member( $user_id, $rule->get_membership_plan_id() ) ) { + if ( $has_subscription || wc_memberships_is_user_active_or_delayed_member( $user_id, $rule->get_membership_plan_id() ) ) { $has_access = true; if ( ! $require_all_plans ) { break; @@ -901,6 +923,41 @@ private static function user_has_content_access_from_rules( $user_id, array $rul return $has_access; } + /** + * Check if a user has an active subscription with the required products when checking membership status. + * If they have an active subscription, reset inactive memberships to active link to the active subscription. + * + * @param string $post_status Post status. + * @param WP_Post $post Post object. + * + * @return string + */ + public static function check_membership_status( $post_status, $post ) { + if ( 'wc_user_membership' !== $post->post_type || 'wcm-active' === $post->post_status || ! self::is_active() || ! function_exists( 'wc_memberships_get_user_membership' ) ) { + return $post_status; + } + $integrations = wc_memberships()->get_integrations_instance(); + $integration = $integrations ? $integrations->get_subscriptions_instance() : null; + $membership = wc_memberships_get_user_membership( $post->ID ); + $plan_id = $membership->get_plan_id(); + if ( $integration && $integration->has_membership_plan_subscription( $plan_id ) ) { + $subscription_plan = new \WC_Memberships_Integration_Subscriptions_Membership_Plan( $plan_id ); + $required_products = $subscription_plan->get_subscription_product_ids(); + $active_subscriptions = WooCommerce_Connection::get_active_subscriptions_for_user( $membership->get_user_id(), $required_products ); + $has_subscription = ! empty( $active_subscriptions ); + if ( $has_subscription ) { + $post_status = 'wcm-active'; + $membership = new \WC_Memberships_Integration_Subscriptions_User_Membership( $post->ID ); + $membership->unschedule_expiration_events(); + $membership->set_subscription_id( $active_subscriptions[0] ); + $membership->set_end_date(); // Clear the end date. + $membership->update_status( 'active' ); + } + } + + return $post_status; + } + /** * Deactivate the cron job. */ @@ -952,6 +1009,7 @@ public static function fix_expired_memberships_for_active_subscriptions() { foreach ( $memberships as $membership ) { // If the membership is not active and has an end date in the past, reactivate it. if ( $membership && ! $membership->has_status( $active_membership_statuses ) && $membership->has_end_date() && $membership->get_end_date( 'timestamp' ) < time() ) { + $membership->unschedule_expiration_events(); $membership->set_end_date(); // Clear the end date. $membership->update_status( 'active' ); // Reactivate the membership. $reactivated_memberships++; diff --git a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php index afc7ee9df0..3f99a13cb6 100644 --- a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php +++ b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php @@ -148,6 +148,41 @@ public static function get_batch_of_active_subscriptions( $batch_size = 100, $of return ! empty( $subscriptions ) ? array_values( $subscriptions ) : false; } + /** + * Does the given user have any subscriptions with an active status? + * Can optionally pass an array of product IDs. If given, only subscriptions + * that have at least one of the given product IDs will be returned. + * + * @param int $user_id User ID. + * @param array $product_ids Optional array of product IDs to filter by. + * + * @return int[] Array of active subscription IDs. + */ + public static function get_active_subscriptions_for_user( $user_id, $product_ids = [] ) { + $subcriptions = array_reduce( + array_keys( \wcs_get_users_subscriptions( $user_id ) ), + function( $acc, $subscription_id ) use ( $product_ids ) { + $subscription = \wcs_get_subscription( $subscription_id ); + if ( $subscription->has_status( self::ACTIVE_SUBSCRIPTION_STATUSES ) ) { + if ( ! empty( $product_ids ) ) { + foreach ( $product_ids as $product_id ) { + if ( $subscription->has_product( $product_id ) ) { + $acc[] = $subscription_id; + return $acc; + } + } + } else { + $acc[] = $subscription_id; + } + } + return $acc; + }, + [] + ); + + return $subcriptions; + } + /** * Get the most recent active subscription, or the last successful order for a given customer. * @@ -160,20 +195,18 @@ public static function get_last_successful_order( $customer ) { return false; } + $user_id = $customer->get_id(); + // Prioritize any currently active subscriptions. - $user_subscriptions = \wcs_get_users_subscriptions( $customer->get_id() ); - if ( ! empty( $user_subscriptions ) ) { - foreach ( $user_subscriptions as $subscription ) { - if ( $subscription->has_status( self::ACTIVE_SUBSCRIPTION_STATUSES ) ) { - return $subscription; - } - } + $active_subscriptions = self::get_active_subscriptions_for_user( $user_id ); + if ( ! empty( $active_subscriptions ) ) { + return reset( $active_subscriptions ); } // If no active subscriptions, get the most recent completed order. // See https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query for query args. $args = [ - 'customer_id' => $customer->get_id(), + 'customer_id' => $user_id, 'status' => [ 'wc-completed' ], 'limit' => 1, 'order' => 'DESC', From 61d7eb08096a462401aaa0ff9f99eb565227d52e Mon Sep 17 00:00:00 2001 From: matticbot Date: Thu, 1 Aug 2024 16:39:52 +0000 Subject: [PATCH 38/74] chore(release): 4.8.0-alpha.1 [skip ci] # [4.8.0-alpha.1](https://github.com/Automattic/newspack-plugin/compare/v4.7.0...v4.8.0-alpha.1) (2024-08-01) ### Bug Fixes * force active membership if the user has active subs ([#3268](https://github.com/Automattic/newspack-plugin/issues/3268)) ([aebe581](https://github.com/Automattic/newspack-plugin/commit/aebe581d451dc27429b40a222a9c712227fa44d9)) * **woocommerce:** prevent /shop redirect from author archives ([46db669](https://github.com/Automattic/newspack-plugin/commit/46db669d9faa19c6350768ac1cca692ecfe05b80)) ### Features * enhancements for the Non editing contributor role ([#3277](https://github.com/Automattic/newspack-plugin/issues/3277)) ([e47e422](https://github.com/Automattic/newspack-plugin/commit/e47e42274cf446ec5882c01edc2b4a081be846b7)) * **ga4:** filter custom params ([eda5553](https://github.com/Automattic/newspack-plugin/commit/eda5553bf5fcf84b060aa433894a16e50827dee1)) * show deprecation warning for CM in Engagement wizard ([#3264](https://github.com/Automattic/newspack-plugin/issues/3264)) ([0813369](https://github.com/Automattic/newspack-plugin/commit/0813369e0a904ebf4b4f0a17d7bbc8c59f29d749)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index ff4eccbb7b..38509b5d8c 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.7.0 + * Version: 4.8.0-alpha.1 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.7.0' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.8.0-alpha.1' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From 9cb1c4b3e412628977baad80f57dab4671ade2e6 Mon Sep 17 00:00:00 2001 From: Laurel Fulford Date: Thu, 1 Aug 2024 16:30:39 -0700 Subject: [PATCH 39/74] feat: add heading to inline sign-in form --- .../newspack-ui/scss/elements/woocommerce/_overrides.scss | 5 +++++ includes/reader-activation/class-reader-activation.php | 8 +++++++- includes/templates/reader-activation/login-form.php | 4 +++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss b/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss index 57ea9eda72..5393592038 100644 --- a/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss +++ b/assets/newspack-ui/scss/elements/woocommerce/_overrides.scss @@ -30,4 +30,9 @@ margin-right: auto; max-width: var( --newspack-ui-modal-width-s ); } + + .newspack-reader-auth__inline-wrapper h2 { + font-size: var(--newspack-ui-font-size-m); + font-weight: 600; + } } diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index a98cd06cc9..c545fc122a 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1204,8 +1204,10 @@ public static function render_honeypot_field( $placeholder = '' ) { /** * Renders reader authentication form. + * + * @param boolean $in_modal Whether the form is rendiner in a modal; defaults to true. */ - public static function render_auth_form() { + public static function render_auth_form( $in_modal = true ) { /** * Filters whether to render reader auth form. * @@ -1235,6 +1237,10 @@ public static function render_auth_form() { } ?>
+ +

+

+
diff --git a/includes/templates/reader-activation/login-form.php b/includes/templates/reader-activation/login-form.php index a3b88cbc88..64055ec6fc 100644 --- a/includes/templates/reader-activation/login-form.php +++ b/includes/templates/reader-activation/login-form.php @@ -15,9 +15,11 @@ } \do_action( 'woocommerce_before_customer_login_form' ); + +$in_modal = false; ?>
- +

Date: Fri, 2 Aug 2024 11:31:23 -0400 Subject: [PATCH 40/74] fix(ras-acc): recognize active non release newspack plugins (#3300) This PR resolves an issue where our wizards don't recognize non-release versions of our plugins as active. --- includes/class-plugin-manager.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/includes/class-plugin-manager.php b/includes/class-plugin-manager.php index 06163bad59..5bd20799c9 100644 --- a/includes/class-plugin-manager.php +++ b/includes/class-plugin-manager.php @@ -392,6 +392,7 @@ private static function get_managed_plugin_status( $plugin_slug ) { } $status = 'uninstalled'; $installed_plugins = self::get_installed_plugins(); + if ( isset( $installed_plugins[ $plugin_slug ] ) ) { if ( \is_plugin_active( $installed_plugins[ $plugin_slug ] ) ) { $status = 'active'; @@ -407,6 +408,25 @@ private static function get_managed_plugin_status( $plugin_slug ) { } } + // Also check for alpha or epic versions of newspack plugins. + if ( 'active' !== $status && str_contains( $plugin_slug, 'newspack' ) ) { + foreach ( $installed_plugins as $slug => $path ) { + if ( $slug !== $plugin_slug && str_contains( $slug, $plugin_slug ) ) { + $versions = [ + 'alpha', + 'epic', + ]; + + foreach ( $versions as $version ) { + if ( str_contains( $slug, $version ) && \is_plugin_active( $path ) ) { + $status = 'active'; + break; + } + } + } + } + } + return $status; } From da21561290e722910707653d2f32f3949d3d0cb8 Mon Sep 17 00:00:00 2001 From: Derrick Koo Date: Fri, 2 Aug 2024 09:58:47 -0600 Subject: [PATCH 41/74] fix(data-events): ensure get_last_successful_order returns WC_Order (#3299) --- .../reader-revenue/woocommerce/class-woocommerce-connection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php index 3f99a13cb6..102921e3c6 100644 --- a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php +++ b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php @@ -200,7 +200,7 @@ public static function get_last_successful_order( $customer ) { // Prioritize any currently active subscriptions. $active_subscriptions = self::get_active_subscriptions_for_user( $user_id ); if ( ! empty( $active_subscriptions ) ) { - return reset( $active_subscriptions ); + return \wcs_get_subscription( reset( $active_subscriptions ) ); } // If no active subscriptions, get the most recent completed order. From 222f58c3e28bdf9c6acc33d1c9afa0d88df94025 Mon Sep 17 00:00:00 2001 From: dkoo Date: Thu, 1 Aug 2024 15:29:51 -0600 Subject: [PATCH 42/74] fix(data-events): ensure get_last_successful_order returns WC_Order --- .../reader-revenue/woocommerce/class-woocommerce-connection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php index 3f99a13cb6..102921e3c6 100644 --- a/includes/reader-revenue/woocommerce/class-woocommerce-connection.php +++ b/includes/reader-revenue/woocommerce/class-woocommerce-connection.php @@ -200,7 +200,7 @@ public static function get_last_successful_order( $customer ) { // Prioritize any currently active subscriptions. $active_subscriptions = self::get_active_subscriptions_for_user( $user_id ); if ( ! empty( $active_subscriptions ) ) { - return reset( $active_subscriptions ); + return \wcs_get_subscription( reset( $active_subscriptions ) ); } // If no active subscriptions, get the most recent completed order. From e5c33a59a1355dd3600993bcef0d86828f3d95ac Mon Sep 17 00:00:00 2001 From: matticbot Date: Fri, 2 Aug 2024 16:03:24 +0000 Subject: [PATCH 43/74] chore(release): 4.8.0-alpha.2 [skip ci] # [4.8.0-alpha.2](https://github.com/Automattic/newspack-plugin/compare/v4.8.0-alpha.1...v4.8.0-alpha.2) (2024-08-02) ### Bug Fixes * **data-events:** ensure get_last_successful_order returns WC_Order ([#3299](https://github.com/Automattic/newspack-plugin/issues/3299)) ([da21561](https://github.com/Automattic/newspack-plugin/commit/da21561290e722910707653d2f32f3949d3d0cb8)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index 38509b5d8c..31a4795532 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.8.0-alpha.1 + * Version: 4.8.0-alpha.2 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.8.0-alpha.1' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.8.0-alpha.2' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From 33cb63791e9432a832ac668e095282239775c89e Mon Sep 17 00:00:00 2001 From: Rasmy Nguyen Date: Fri, 2 Aug 2024 13:23:27 -0400 Subject: [PATCH 44/74] fix(ras-acc): ensure all headings are 600 font weight (#3296) This PR makes all headings have a font weight of 600. --- assets/newspack-ui/scss/elements/_typography.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/newspack-ui/scss/elements/_typography.scss b/assets/newspack-ui/scss/elements/_typography.scss index ee5825271f..26aa944be7 100644 --- a/assets/newspack-ui/scss/elements/_typography.scss +++ b/assets/newspack-ui/scss/elements/_typography.scss @@ -11,6 +11,7 @@ h1, h2, h3, h4, h5, h6 { font-family: var( --newspack-ui-font-family ); + font-weight: var( --newspack-ui-font-weight-strong ); } strong, From c7f691753f62605178caccd4bf486d6490d5b718 Mon Sep 17 00:00:00 2001 From: leogermani Date: Fri, 2 Aug 2024 14:47:35 -0300 Subject: [PATCH 45/74] feat: rename guest contributor role (#3302) * feat: rename guest contributor role * fix: wp-error namespace --- includes/plugins/class-co-authors-plus.php | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/includes/plugins/class-co-authors-plus.php b/includes/plugins/class-co-authors-plus.php index 9fc03513f5..8d48914447 100644 --- a/includes/plugins/class-co-authors-plus.php +++ b/includes/plugins/class-co-authors-plus.php @@ -10,6 +10,7 @@ defined( 'ABSPATH' ) || exit; +use WP_Error; use WP_User; /** @@ -147,21 +148,20 @@ public static function before_delete_account( $user_id ) { * Create the custom role and then add custom capability. */ public static function setup_custom_role_and_capability() { - $current_settings_version = '1'; + $current_settings_version = '2'; if ( \get_option( self::SETTINGS_VERSION_OPTION_NAME ) === $current_settings_version ) { return; } - // Create the custom role if it doesn't exist. - if ( get_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ) === null ) { - add_role( // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.custom_role_add_role - self::CONTRIBUTOR_NO_EDIT_ROLE_NAME, - __( 'Non-Editing Contributor', 'newspack-plugin' ), - [ - self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME => true, - ] - ); - } + // Update the custom role. + remove_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ); + add_role( // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.custom_role_add_role + self::CONTRIBUTOR_NO_EDIT_ROLE_NAME, + __( 'Guest Contributor', 'newspack-plugin' ), + [ + self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME => true, + ] + ); $wp_roles = wp_roles(); foreach ( $wp_roles->roles as $role_name => $role ) { @@ -300,7 +300,7 @@ public static function wp_authenticate_user( $user, $password ) { } if ( self::is_guest_author( $user ) ) { - return new WP_Error( 'guest_authors_cannot_login', __( 'Non-Editing Contributors cannot login.', 'newspack-plugin' ) ); + return new WP_Error( 'guest_authors_cannot_login', __( 'Guest Contributors cannot login.', 'newspack-plugin' ) ); } return $user; @@ -328,11 +328,11 @@ public static function render_guest_authors_replacement_page() {

-

+

- - + +
Date: Fri, 2 Aug 2024 14:47:35 -0300 Subject: [PATCH 46/74] feat: rename guest contributor role (#3302) * feat: rename guest contributor role * fix: wp-error namespace --- includes/plugins/class-co-authors-plus.php | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/includes/plugins/class-co-authors-plus.php b/includes/plugins/class-co-authors-plus.php index 9fc03513f5..8d48914447 100644 --- a/includes/plugins/class-co-authors-plus.php +++ b/includes/plugins/class-co-authors-plus.php @@ -10,6 +10,7 @@ defined( 'ABSPATH' ) || exit; +use WP_Error; use WP_User; /** @@ -147,21 +148,20 @@ public static function before_delete_account( $user_id ) { * Create the custom role and then add custom capability. */ public static function setup_custom_role_and_capability() { - $current_settings_version = '1'; + $current_settings_version = '2'; if ( \get_option( self::SETTINGS_VERSION_OPTION_NAME ) === $current_settings_version ) { return; } - // Create the custom role if it doesn't exist. - if ( get_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ) === null ) { - add_role( // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.custom_role_add_role - self::CONTRIBUTOR_NO_EDIT_ROLE_NAME, - __( 'Non-Editing Contributor', 'newspack-plugin' ), - [ - self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME => true, - ] - ); - } + // Update the custom role. + remove_role( self::CONTRIBUTOR_NO_EDIT_ROLE_NAME ); + add_role( // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.custom_role_add_role + self::CONTRIBUTOR_NO_EDIT_ROLE_NAME, + __( 'Guest Contributor', 'newspack-plugin' ), + [ + self::ASSIGNABLE_TO_POSTS_CAPABILITY_NAME => true, + ] + ); $wp_roles = wp_roles(); foreach ( $wp_roles->roles as $role_name => $role ) { @@ -300,7 +300,7 @@ public static function wp_authenticate_user( $user, $password ) { } if ( self::is_guest_author( $user ) ) { - return new WP_Error( 'guest_authors_cannot_login', __( 'Non-Editing Contributors cannot login.', 'newspack-plugin' ) ); + return new WP_Error( 'guest_authors_cannot_login', __( 'Guest Contributors cannot login.', 'newspack-plugin' ) ); } return $user; @@ -328,11 +328,11 @@ public static function render_guest_authors_replacement_page() {

-

+

- - + +
Date: Fri, 2 Aug 2024 18:01:28 +0000 Subject: [PATCH 47/74] chore(release): 4.8.0-alpha.3 [skip ci] # [4.8.0-alpha.3](https://github.com/Automattic/newspack-plugin/compare/v4.8.0-alpha.2...v4.8.0-alpha.3) (2024-08-02) ### Features * rename guest contributor role ([#3302](https://github.com/Automattic/newspack-plugin/issues/3302)) ([76ac05e](https://github.com/Automattic/newspack-plugin/commit/76ac05e740f007c5894d538226beea06ee097a0c)) --- newspack.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newspack.php b/newspack.php index 31a4795532..cdbdc29dfb 100644 --- a/newspack.php +++ b/newspack.php @@ -2,7 +2,7 @@ /** * Plugin Name: Newspack * Description: An advanced open-source publishing and revenue-generating platform for news organizations. - * Version: 4.8.0-alpha.2 + * Version: 4.8.0-alpha.3 * Author: Automattic * Author URI: https://newspack.com/ * License: GPL2 @@ -14,7 +14,7 @@ defined( 'ABSPATH' ) || exit; -define( 'NEWSPACK_PLUGIN_VERSION', '4.8.0-alpha.2' ); +define( 'NEWSPACK_PLUGIN_VERSION', '4.8.0-alpha.3' ); // Load language files. load_plugin_textdomain( 'newspack-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); From f70a4b9f1ae2180e753799558ba0e34810950907 Mon Sep 17 00:00:00 2001 From: Laurel Fulford Date: Fri, 2 Aug 2024 13:11:22 -0700 Subject: [PATCH 48/74] fix: apply code feedback --- includes/reader-activation/class-reader-activation.php | 2 +- includes/templates/reader-activation/login-form.php | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index c545fc122a..e1d4af9220 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1237,7 +1237,7 @@ public static function render_auth_form( $in_modal = true ) { } ?>
- +

diff --git a/includes/templates/reader-activation/login-form.php b/includes/templates/reader-activation/login-form.php index 64055ec6fc..6ffe14311a 100644 --- a/includes/templates/reader-activation/login-form.php +++ b/includes/templates/reader-activation/login-form.php @@ -15,11 +15,9 @@ } \do_action( 'woocommerce_before_customer_login_form' ); - -$in_modal = false; ?>
- +

Date: Fri, 2 Aug 2024 14:32:07 -0600 Subject: [PATCH 49/74] fix: update dependencies to support `@wordpress/scripts` (#3181) BREAKING CHANGE: Updates dependencies for compatibility with WordPress 6.6.*, but breaks JS in WordPress 6.5.* and below. If you need support for WP 6.5.*, please do not upgrade to this new major version. * chore: refactor for updating dependencies in newspack-scripts * chore: JS formatting fixes for eslint errors * chore: update NPM scripts and other dependencies * chore: fix jest unit tests * chore: update dependencies in newspack-components * fix: peer dependency conflicts with @wordp ress/* packages * chore: update newspack-components dependencies * chore: proxy stylelint from newspack-scripts * chore: remove unnecessary stylelint * refactor: use proxy script for eslint and stylelint scripts * chore: remove console.log * chore: update newspack-scripts to NPM alpha version * chore: update newspack-scripts to git branch * chore: update newspack-scripts to alpha.3 * test: remove unneeded mocks * deps: newspack-scripts@5.6.0-alpha.1 * chore: fix scripts * fix: update newspack-scripts to v5.6.0-alpha.2 * fix: add newspack-revisions.js to webpack build for linting * fix: update stylelint and format CSS for errors * chore: clear TS check errors * fix: start command * fix: remove i18n script (Blocks only) * temporarily revert stylelint autoformat to avoid merge conflicts * chore: add .stylelintrc.js * fix: reformat SCSS * chore: update newspack-scripts to v5.6.0-alpha.4 * fix: add missing Prettier config files * chore: update newspack-scripts to 5.6.0-alpha.5 * chore: update newspack-scripts to v5.6.0-alpha.7 * style: stylelint autofixes * fix: add fix:js script; temporarily remove format:js * fix: update newspack-scripts to v5.5.0-alpha.8 and restore format:js script * chore: add NPM scripts for PHP * refactor: move recaptcha JS to src directory * fix: ignore dist and node_modules inside src/components, too * fix: update Babel configs for components * fix(components): output TS and JS, and publish new major version to NPM * fix: do not delete node_modules after post-publish * chore: bump newspack-scripts to v5.5.2 --------- Co-authored-by: Adam Cassis --- .distignore | 4 +- .eslintrc.js | 5 +- .github/dependabot.yml | 4 +- .gitignore | 6 +- .nvmrc | 2 +- .prettierignore | 3 + .prettierrc | 10 - .prettierrc.js | 5 + .stylelintrc.js | 9 + __mocks__/@wordpress/api-fetch.js | 2 +- assets/admin/style.scss | 1 - assets/components/package.json | 54 - .../components/src/position-control/index.js | 122 - assets/images/recaptcha-v2-checkbox.gif | Bin 59883 -> 0 bytes assets/images/recaptcha-v2-invisible.png | Bin 4862 -> 0 bytes composer.json | 4 +- composer.lock | 262 +- includes/class-blocks.php | 4 +- includes/class-handoff-banner.php | 2 +- .../class-reader-activation.php | 2 +- includes/reader-revenue/my-account/style.scss | 19 +- .../class-major-revisions.php | 4 +- .../revisions-control/newspack-revisions.js | 110 +- ...-revisions.css => newspack-revisions.scss} | 4 +- languages/newspack-plugin.pot | 5124 +- package-lock.json | 60915 +++++----------- package.json | 48 +- phpcs.xml | 1 + {assets => src}/admin/index.js | 0 src/admin/style.scss | 1 + {assets => src}/blocks/core-image/index.tsx | 1 + {assets => src}/blocks/core-image/types.ts | 0 {assets => src}/blocks/index.js | 1 - .../blocks/reader-registration/block.json | 0 .../blocks/reader-registration/edit.js | 38 +- .../blocks/reader-registration/editor.scss | 44 +- .../reader-registration/icons/google.svg | 0 .../blocks/reader-registration/index.js | 0 .../blocks/reader-registration/index.php | 0 .../blocks/reader-registration/style.scss | 44 +- .../blocks/reader-registration/view.js | 4 +- {assets => src}/components/.npmrc | 0 {assets => src}/components/README.md | 0 src/components/babel.config.cjs.js | 26 + src/components/babel.config.js | 26 + {assets => src}/components/copy-styles.js | 0 src/components/package.json | 61 + .../components/src/accordion/index.js | 3 + .../components/src/accordion/style.scss | 6 +- .../components/src/action-card/index.js | 0 .../components/src/action-card/style.scss | 18 +- .../src/autocomplete-tokenfield/index.js | 0 .../src/autocomplete-tokenfield/style.scss | 6 +- .../autocomplete-with-suggestions/index.js | 90 +- .../autocomplete-with-suggestions/style.scss | 16 +- .../components/src/button-card/index.js | 0 .../components/src/button-card/style.scss | 32 +- .../components/src/button/index.tsx | 0 .../components/src/button/style.scss | 2 +- {assets => src}/components/src/card/index.js | 0 .../components/src/card/style.scss | 2 +- .../src/category-autocomplete/index.js | 0 .../src/category-autocomplete/style.scss | 4 +- .../components/src/color-picker/index.js | 0 .../components/src/color-picker/style.scss | 6 +- {assets => src}/components/src/consts.js | 0 .../src/custom-select-control/index.js | 0 .../src/custom-select-control/style.scss | 21 +- .../components/src/date-range-picker/index.js | 0 .../src/date-range-picker/style.scss | 12 +- .../components/src/footer/index.js | 0 .../components/src/footer/style.scss | 2 +- .../components/src/form-token-field/index.js | 0 .../src/form-token-field/style.scss | 2 +- .../components/src/global-notices/index.js | 0 {assets => src}/components/src/grid/index.tsx | 0 .../components/src/grid/style.scss | 18 +- .../components/src/handoff-message/index.js | 4 +- .../components/src/handoff/index.js | 0 {assets => src}/components/src/hooks/index.ts | 0 .../components/src/hooks/useObjectState.js | 0 .../src/hooks/useObjectState.test.js | 0 .../components/src/hooks/useOnClickOutside.js | 0 .../components/src/hooks/usePrompt.ts | 0 .../components/src/image-upload/index.js | 2 +- .../components/src/image-upload/index.test.js | 7 +- .../components/src/image-upload/style.scss | 10 +- {assets => src}/components/src/index.js | 0 .../components/src/info-button/index.js | 0 .../components/src/info-button/style.scss | 0 {assets => src}/components/src/modal/index.js | 0 .../components/src/modal/style.scss | 10 +- .../components/src/newspack-icon/index.js | 0 .../components/src/newspack-icon/style.scss | 2 +- .../components/src/newspack-logo/index.js | 0 .../components/src/newspack-logo/style.scss | 2 +- .../components/src/notice/index.js | 0 .../components/src/notice/style.scss | 22 +- .../components/src/patrons-logo/index.js | 0 .../components/src/plugin-installer/index.js | 0 .../src/plugin-installer/style.scss | 2 +- .../src/plugin-settings/SettingsSection.js | 0 .../components/src/plugin-settings/index.js | 0 .../components/src/plugin-settings/style.scss | 2 +- .../components/src/plugin-toggle/README.md | 0 .../components/src/plugin-toggle/index.js | 13 +- .../components/src/plugin-toggle/style.scss | 2 +- .../components/src/popover/index.js | 0 .../components/src/popover/style.scss | 14 +- src/components/src/position-control/index.js | 121 + .../src/position-control/style.scss | 16 +- .../components/src/progress-bar/index.js | 0 .../components/src/progress-bar/index.test.js | 0 .../components/src/progress-bar/style.scss | 4 +- .../components/src/proxied-imports/router.js | 0 .../components/src/radio-control/index.js | 0 .../components/src/radio-control/style.scss | 6 +- .../components/src/section-header/index.js | 0 .../components/src/section-header/style.scss | 2 +- .../src/select-control/ButtonGroupControl.js | 0 .../select-control/GroupedSelectControl.js | 0 .../components/src/select-control/index.js | 0 .../components/src/select-control/style.scss | 8 +- .../components/src/settings/MinMaxSetting.js | 0 .../components/src/settings/SettingsCard.js | 0 .../src/settings/SettingsSection.js | 0 .../components/src/settings/index.js | 0 .../components/src/settings/style.scss | 2 +- .../sortable-newsletter-list-control/index.js | 0 .../style.scss | 0 .../components/src/steps-list-item/index.js | 0 .../components/src/steps-list-item/style.scss | 10 +- .../components/src/steps-list/index.js | 0 .../components/src/steps-list/style.scss | 4 +- .../components/src/style-card/index.js | 0 .../components/src/style-card/style.scss | 8 +- {assets => src}/components/src/style.scss | 2 +- .../components/src/tabbed-navigation/index.js | 0 .../src/tabbed-navigation/style.scss | 8 +- .../components/src/text-control/index.tsx | 0 .../components/src/text-control/style.scss | 0 {assets => src}/components/src/utils/index.js | 0 .../components/src/waiting/index.js | 0 .../components/src/waiting/style.scss | 0 .../components/src/web-preview/index.js | 0 .../components/src/web-preview/style.scss | 10 +- .../src/with-wizard-screen/index.js | 0 .../src/with-wizard-screen/style.scss | 14 +- .../components/src/with-wizard/index.js | 0 .../components/src/with-wizard/style.scss | 66 +- .../src/wizard/components/WizardError.js | 0 .../components/src/wizard/index.js | 0 .../components/src/wizard/store/index.js | 0 .../components/src/wizard/store/utils.js | 0 .../memberships-gate/block-patterns.js | 0 .../memberships-gate/block-patterns.scss | 17 +- {assets => src}/memberships-gate/editor.js | 0 {assets => src}/memberships-gate/editor.scss | 16 +- {assets => src}/memberships-gate/gate.js | 0 {assets => src}/memberships-gate/gate.scss | 32 +- {assets => src}/memberships-gate/metering.js | 0 {assets => src}/memberships-gate/vars.scss | 0 .../other-scripts/co-authors-plus/index.js | 0 .../custom-product-options/index.js | 0 {assets => src}/other-scripts/emails/index.js | 0 .../other-scripts/emails/style.scss | 0 .../other-scripts/lightbox/index.js | 0 .../other-scripts/lightbox/style.scss | 2 +- .../organic-profile-block/index.js | 0 .../organic-profile-block/style.scss | 8 +- .../other-scripts/recaptcha/index.js | 0 .../other-scripts/recaptcha/style.scss | 2 +- .../other-scripts/salesforce/index.js | 0 .../other-scripts/wc-cover-fees/index.js | 0 .../plugins-screen/plugins-screen.js | 30 +- .../plugins-screen/plugins-screen.scss | 8 +- .../reader-activation/article-view.js | 0 {assets => src}/reader-activation/auth.js | 0 {assets => src}/reader-activation/auth.scss | 46 +- {assets => src}/reader-activation/events.js | 0 {assets => src}/reader-activation/index.js | 0 .../reader-activation/index.test.js | 0 {assets => src}/reader-activation/overlays.js | 0 .../reader-activation/overlays.test.js | 0 {assets => src}/reader-activation/store.js | 0 .../reader-activation/store.test.js | 0 {assets => src}/reader-activation/utils.js | 6 +- .../reader-activation/utils.test.js | 0 {assets => src}/shared/js/button-props.js | 0 {assets => src}/shared/js/index.js | 0 {assets => src}/shared/js/public-path.js | 0 {assets => src}/shared/scss/_colors.scss | 0 {assets => src}/shared/scss/_mixins.scss | 4 +- .../components/ad-refresh-control/index.js | 0 .../components/ad-unit-size-control/index.js | 0 .../advertising/components/add-ons/index.js | 0 .../components/onboarding/index.js | 4 +- .../components/placement-control/index.js | 10 +- .../advertising/components/utils/index.js | 0 {assets => src}/wizards/advertising/index.js | 0 .../wizards/advertising/style.scss | 4 +- .../advertising/views/ad-unit/index.js | 7 +- .../advertising/views/ad-units/index.js | 0 .../views/ad-units/options-popover.js | 0 .../ad-units/service-account-connection.js | 0 .../advertising/views/add-ons/index.js | 0 .../wizards/advertising/views/index.js | 0 .../advertising/views/placements/index.js | 0 .../advertising/views/providers/index.js | 0 .../advertising/views/settings/index.js | 0 .../advertising/views/suppression/index.js | 0 {assets => src}/wizards/analytics/index.js | 0 {assets => src}/wizards/analytics/style.scss | 6 +- .../wizards/analytics/views/index.js | 0 .../views/newspack-custom-events/index.js | 0 .../wizards/analytics/views/plugins/index.js | 0 .../wizards/componentsDemo/index.js | 0 {assets => src}/wizards/connections/index.js | 0 .../wizards/connections/style.scss | 12 +- .../wizards/connections/views/index.js | 0 .../connections/views/main/fivetran.js | 0 .../wizards/connections/views/main/google.js | 0 .../wizards/connections/views/main/index.js | 0 .../connections/views/main/mailchimp.js | 0 .../wizards/connections/views/main/plugins.js | 0 .../connections/views/main/recaptcha.js | 0 .../connections/views/main/webhooks.js | 33 +- {assets => src}/wizards/dashboard/index.js | 0 {assets => src}/wizards/dashboard/style.scss | 4 +- .../wizards/dashboard/views/dashboardCard.js | 0 .../engagement/components/active-campaign.js | 0 .../engagement/components/mailchimp.js | 0 .../engagement/components/metadata-fields.js | 0 .../engagement/components/prerequisite.tsx | 12 +- .../wizards/engagement/components/prompt.tsx | 17 +- .../wizards/engagement/components/types.ts | 0 {assets => src}/wizards/engagement/index.js | 0 .../wizards/engagement/views/index.js | 0 .../engagement/views/newsletters/index.js | 5 +- .../engagement/views/newsletters/style.scss | 0 .../views/reader-activation/campaign.js | 4 +- .../views/reader-activation/complete.js | 0 .../views/reader-activation/index.js | 0 .../views/reader-activation/style.scss | 9 +- .../engagement/views/related-content/index.js | 0 .../wizards/engagement/views/social/index.js | 0 .../engagement/views/social/meta-pixel.js | 0 .../wizards/engagement/views/social/pixel.js | 0 .../engagement/views/social/twitter-pixel.js | 0 .../wizards/handoff-banner/block-editor.js | 0 .../wizards/handoff-banner/index.js | 0 .../wizards/handoff-banner/style.scss | 10 +- {assets => src}/wizards/health-check/index.js | 0 .../health-check/views/configuration/index.js | 0 .../wizards/health-check/views/index.js | 0 .../health-check/views/plugins/index.js | 0 .../campaign-management-popover/index.js | 0 .../popups/components/lists-control/index.js | 0 .../components/prompt-action-card/index.js | 0 .../components/prompt-action-card/style.scss | 2 +- .../components/prompt-popovers/primary.js | 0 .../components/prompt-popovers/style.scss | 6 +- .../segment-group/SegmentGroup.test.js | 0 .../popups/components/segment-group/icons.js | 0 .../popups/components/segment-group/index.js | 0 .../components/segment-group/style.scss | 10 +- .../components/segmentation-preview/index.js | 0 .../popups/components/settings-modal/index.js | 0 .../wizards/popups/contexts/Campaigns.js | 0 .../wizards/popups/contexts/index.js | 0 {assets => src}/wizards/popups/index.js | 0 {assets => src}/wizards/popups/utils.js | 6 +- .../wizards/popups/views/analytics/index.js | 0 .../wizards/popups/views/analytics/style.scss | 6 +- .../wizards/popups/views/campaigns/index.js | 37 +- .../wizards/popups/views/campaigns/style.scss | 8 +- {assets => src}/wizards/popups/views/index.js | 0 .../wizards/popups/views/segments/index.js | 0 .../popups/views/segments/segments-list.js | 0 .../popups/views/segments/single-segment.js | 0 .../views/segments/single-segment.test.js | 4 +- .../wizards/popups/views/segments/style.scss | 8 +- .../wizards/popups/views/settings/index.js | 0 .../wizards/readerRevenue/components/index.js | 0 .../components/money-input/index.js | 0 .../components/money-input/style.scss | 4 +- .../wizards/readerRevenue/constants.js | 0 .../wizards/readerRevenue/index.js | 0 .../readerRevenue/views/donation/index.tsx | 23 +- .../readerRevenue/views/emails/index.js | 12 +- .../wizards/readerRevenue/views/index.js | 0 .../readerRevenue/views/nrh-settings/index.js | 0 .../readerRevenue/views/platform/index.js | 0 .../readerRevenue/views/salesforce/index.js | 0 .../readerRevenue/views/stripe-setup/index.js | 0 .../views/stripe-setup/style.scss | 2 +- {assets => src}/wizards/seo/index.js | 0 {assets => src}/wizards/seo/views/index.js | 0 .../wizards/seo/views/settings/index.js | 0 {assets => src}/wizards/setup/index.js | 5 +- {assets => src}/wizards/setup/style.scss | 4 +- .../wizards/setup/views/completed/index.js | 0 {assets => src}/wizards/setup/views/index.js | 0 .../setup/views/services/ReaderRevenue.js | 0 .../wizards/setup/views/services/index.js | 0 .../wizards/setup/views/services/style.scss | 0 .../wizards/setup/views/settings/index.js | 0 .../wizards/setup/views/welcome/index.js | 0 .../theme-selection/images/joseph.png | Bin .../theme-selection/images/katharine.png | Bin .../theme-selection/images/nelson.png | Bin .../theme-selection/images/newspack.png | Bin .../theme-selection/images/sacha.png | Bin .../theme-selection/images/scott.png | Bin .../components/theme-selection/index.js | 0 {assets => src}/wizards/site-design/index.js | 0 .../wizards/site-design/views/index.js | 0 .../wizards/site-design/views/main/index.js | 18 +- .../wizards/site-design/views/main/style.scss | 10 +- .../wizards/site-design/views/main/utils.js | 0 .../site-design/views/theme-settings/index.js | 0 .../views/theme-settings/style.scss | 0 {assets => src}/wizards/syndication/index.js | 0 .../wizards/syndication/views/index.js | 0 .../wizards/syndication/views/intro/index.js | 0 tsconfig.json | 18 +- webpack.config.js | 75 +- 327 files changed, 18062 insertions(+), 50089 deletions(-) delete mode 100644 .prettierrc create mode 100644 .prettierrc.js create mode 100644 .stylelintrc.js delete mode 100644 assets/admin/style.scss delete mode 100644 assets/components/package.json delete mode 100644 assets/components/src/position-control/index.js delete mode 100644 assets/images/recaptcha-v2-checkbox.gif delete mode 100644 assets/images/recaptcha-v2-invisible.png rename includes/revisions-control/{newspack-revisions.css => newspack-revisions.scss} (77%) rename {assets => src}/admin/index.js (100%) create mode 100644 src/admin/style.scss rename {assets => src}/blocks/core-image/index.tsx (97%) rename {assets => src}/blocks/core-image/types.ts (100%) rename {assets => src}/blocks/index.js (99%) rename {assets => src}/blocks/reader-registration/block.json (100%) rename {assets => src}/blocks/reader-registration/edit.js (91%) rename {assets => src}/blocks/reader-registration/editor.scss (77%) rename {assets => src}/blocks/reader-registration/icons/google.svg (100%) rename {assets => src}/blocks/reader-registration/index.js (100%) rename {assets => src}/blocks/reader-registration/index.php (100%) rename {assets => src}/blocks/reader-registration/style.scss (85%) rename {assets => src}/blocks/reader-registration/view.js (98%) rename {assets => src}/components/.npmrc (100%) rename {assets => src}/components/README.md (100%) create mode 100644 src/components/babel.config.cjs.js create mode 100644 src/components/babel.config.js rename {assets => src}/components/copy-styles.js (100%) create mode 100644 src/components/package.json rename {assets => src}/components/src/accordion/index.js (86%) rename {assets => src}/components/src/accordion/style.scss (77%) rename {assets => src}/components/src/action-card/index.js (100%) rename {assets => src}/components/src/action-card/style.scss (95%) rename {assets => src}/components/src/autocomplete-tokenfield/index.js (100%) rename {assets => src}/components/src/autocomplete-tokenfield/style.scss (79%) rename {assets => src}/components/src/autocomplete-with-suggestions/index.js (86%) rename {assets => src}/components/src/autocomplete-with-suggestions/style.scss (89%) rename {assets => src}/components/src/button-card/index.js (100%) rename {assets => src}/components/src/button-card/style.scss (72%) rename {assets => src}/components/src/button/index.tsx (100%) rename {assets => src}/components/src/button/style.scss (75%) rename {assets => src}/components/src/card/index.js (100%) rename {assets => src}/components/src/card/style.scss (97%) rename {assets => src}/components/src/category-autocomplete/index.js (100%) rename {assets => src}/components/src/category-autocomplete/style.scss (87%) rename {assets => src}/components/src/color-picker/index.js (100%) rename {assets => src}/components/src/color-picker/style.scss (68%) rename {assets => src}/components/src/consts.js (100%) rename {assets => src}/components/src/custom-select-control/index.js (100%) rename {assets => src}/components/src/custom-select-control/style.scss (65%) rename {assets => src}/components/src/date-range-picker/index.js (100%) rename {assets => src}/components/src/date-range-picker/style.scss (74%) rename {assets => src}/components/src/footer/index.js (100%) rename {assets => src}/components/src/footer/style.scss (95%) rename {assets => src}/components/src/form-token-field/index.js (100%) rename {assets => src}/components/src/form-token-field/style.scss (89%) rename {assets => src}/components/src/global-notices/index.js (100%) rename {assets => src}/components/src/grid/index.tsx (100%) rename {assets => src}/components/src/grid/style.scss (83%) rename {assets => src}/components/src/handoff-message/index.js (96%) rename {assets => src}/components/src/handoff/index.js (100%) rename {assets => src}/components/src/hooks/index.ts (100%) rename {assets => src}/components/src/hooks/useObjectState.js (100%) rename {assets => src}/components/src/hooks/useObjectState.test.js (100%) rename {assets => src}/components/src/hooks/useOnClickOutside.js (100%) rename {assets => src}/components/src/hooks/usePrompt.ts (100%) rename {assets => src}/components/src/image-upload/index.js (96%) rename {assets => src}/components/src/image-upload/index.test.js (92%) rename {assets => src}/components/src/image-upload/style.scss (90%) rename {assets => src}/components/src/index.js (100%) rename {assets => src}/components/src/info-button/index.js (100%) rename {assets => src}/components/src/info-button/style.scss (100%) rename {assets => src}/components/src/modal/index.js (100%) rename {assets => src}/components/src/modal/style.scss (76%) rename {assets => src}/components/src/newspack-icon/index.js (100%) rename {assets => src}/components/src/newspack-icon/style.scss (89%) rename {assets => src}/components/src/newspack-logo/index.js (100%) rename {assets => src}/components/src/newspack-logo/style.scss (90%) rename {assets => src}/components/src/notice/index.js (100%) rename {assets => src}/components/src/notice/style.scss (67%) rename {assets => src}/components/src/patrons-logo/index.js (100%) rename {assets => src}/components/src/plugin-installer/index.js (100%) rename {assets => src}/components/src/plugin-installer/style.scss (96%) rename {assets => src}/components/src/plugin-settings/SettingsSection.js (100%) rename {assets => src}/components/src/plugin-settings/index.js (100%) rename {assets => src}/components/src/plugin-settings/style.scss (65%) rename {assets => src}/components/src/plugin-toggle/README.md (100%) rename {assets => src}/components/src/plugin-toggle/index.js (96%) rename {assets => src}/components/src/plugin-toggle/style.scss (83%) rename {assets => src}/components/src/popover/index.js (100%) rename {assets => src}/components/src/popover/style.scss (89%) create mode 100644 src/components/src/position-control/index.js rename {assets => src}/components/src/position-control/style.scss (71%) rename {assets => src}/components/src/progress-bar/index.js (100%) rename {assets => src}/components/src/progress-bar/index.test.js (100%) rename {assets => src}/components/src/progress-bar/style.scss (85%) rename {assets => src}/components/src/proxied-imports/router.js (100%) rename {assets => src}/components/src/radio-control/index.js (100%) rename {assets => src}/components/src/radio-control/style.scss (92%) rename {assets => src}/components/src/section-header/index.js (100%) rename {assets => src}/components/src/section-header/style.scss (90%) rename {assets => src}/components/src/select-control/ButtonGroupControl.js (100%) rename {assets => src}/components/src/select-control/GroupedSelectControl.js (100%) rename {assets => src}/components/src/select-control/index.js (100%) rename {assets => src}/components/src/select-control/style.scss (85%) rename {assets => src}/components/src/settings/MinMaxSetting.js (100%) rename {assets => src}/components/src/settings/SettingsCard.js (100%) rename {assets => src}/components/src/settings/SettingsSection.js (100%) rename {assets => src}/components/src/settings/index.js (100%) rename {assets => src}/components/src/settings/style.scss (97%) rename {assets => src}/components/src/sortable-newsletter-list-control/index.js (100%) rename {assets => src}/components/src/sortable-newsletter-list-control/style.scss (100%) rename {assets => src}/components/src/steps-list-item/index.js (100%) rename {assets => src}/components/src/steps-list-item/style.scss (82%) rename {assets => src}/components/src/steps-list/index.js (100%) rename {assets => src}/components/src/steps-list/style.scss (53%) rename {assets => src}/components/src/style-card/index.js (100%) rename {assets => src}/components/src/style-card/style.scss (89%) rename {assets => src}/components/src/style.scss (93%) rename {assets => src}/components/src/tabbed-navigation/index.js (100%) rename {assets => src}/components/src/tabbed-navigation/style.scss (83%) rename {assets => src}/components/src/text-control/index.tsx (100%) rename {assets => src}/components/src/text-control/style.scss (100%) rename {assets => src}/components/src/utils/index.js (100%) rename {assets => src}/components/src/waiting/index.js (100%) rename {assets => src}/components/src/waiting/style.scss (100%) rename {assets => src}/components/src/web-preview/index.js (100%) rename {assets => src}/components/src/web-preview/style.scss (93%) rename {assets => src}/components/src/with-wizard-screen/index.js (100%) rename {assets => src}/components/src/with-wizard-screen/style.scss (87%) rename {assets => src}/components/src/with-wizard/index.js (100%) rename {assets => src}/components/src/with-wizard/style.scss (71%) rename {assets => src}/components/src/wizard/components/WizardError.js (100%) rename {assets => src}/components/src/wizard/index.js (100%) rename {assets => src}/components/src/wizard/store/index.js (100%) rename {assets => src}/components/src/wizard/store/utils.js (100%) rename {assets => src}/memberships-gate/block-patterns.js (100%) rename {assets => src}/memberships-gate/block-patterns.scss (72%) rename {assets => src}/memberships-gate/editor.js (100%) rename {assets => src}/memberships-gate/editor.scss (58%) rename {assets => src}/memberships-gate/gate.js (100%) rename {assets => src}/memberships-gate/gate.scss (69%) rename {assets => src}/memberships-gate/metering.js (100%) rename {assets => src}/memberships-gate/vars.scss (100%) rename {assets => src}/other-scripts/co-authors-plus/index.js (100%) rename {assets => src}/other-scripts/custom-product-options/index.js (100%) rename {assets => src}/other-scripts/emails/index.js (100%) rename {assets => src}/other-scripts/emails/style.scss (100%) rename {assets => src}/other-scripts/lightbox/index.js (100%) rename {assets => src}/other-scripts/lightbox/style.scss (93%) rename {assets => src}/other-scripts/organic-profile-block/index.js (100%) rename {assets => src}/other-scripts/organic-profile-block/style.scss (91%) rename {assets => src}/other-scripts/recaptcha/index.js (100%) rename {assets => src}/other-scripts/recaptcha/style.scss (98%) rename {assets => src}/other-scripts/salesforce/index.js (100%) rename {assets => src}/other-scripts/wc-cover-fees/index.js (100%) rename {assets => src}/plugins-screen/plugins-screen.js (83%) rename {assets => src}/plugins-screen/plugins-screen.scss (84%) rename {assets => src}/reader-activation/article-view.js (100%) rename {assets => src}/reader-activation/auth.js (100%) rename {assets => src}/reader-activation/auth.scss (90%) rename {assets => src}/reader-activation/events.js (100%) rename {assets => src}/reader-activation/index.js (100%) rename {assets => src}/reader-activation/index.test.js (100%) rename {assets => src}/reader-activation/overlays.js (100%) rename {assets => src}/reader-activation/overlays.test.js (100%) rename {assets => src}/reader-activation/store.js (100%) rename {assets => src}/reader-activation/store.test.js (100%) rename {assets => src}/reader-activation/utils.js (92%) rename {assets => src}/reader-activation/utils.test.js (100%) rename {assets => src}/shared/js/button-props.js (100%) rename {assets => src}/shared/js/index.js (100%) rename {assets => src}/shared/js/public-path.js (100%) rename {assets => src}/shared/scss/_colors.scss (100%) rename {assets => src}/shared/scss/_mixins.scss (82%) rename {assets => src}/wizards/advertising/components/ad-refresh-control/index.js (100%) rename {assets => src}/wizards/advertising/components/ad-unit-size-control/index.js (100%) rename {assets => src}/wizards/advertising/components/add-ons/index.js (100%) rename {assets => src}/wizards/advertising/components/onboarding/index.js (98%) rename {assets => src}/wizards/advertising/components/placement-control/index.js (96%) rename {assets => src}/wizards/advertising/components/utils/index.js (100%) rename {assets => src}/wizards/advertising/index.js (100%) rename {assets => src}/wizards/advertising/style.scss (78%) rename {assets => src}/wizards/advertising/views/ad-unit/index.js (96%) rename {assets => src}/wizards/advertising/views/ad-units/index.js (100%) rename {assets => src}/wizards/advertising/views/ad-units/options-popover.js (100%) rename {assets => src}/wizards/advertising/views/ad-units/service-account-connection.js (100%) rename {assets => src}/wizards/advertising/views/add-ons/index.js (100%) rename {assets => src}/wizards/advertising/views/index.js (100%) rename {assets => src}/wizards/advertising/views/placements/index.js (100%) rename {assets => src}/wizards/advertising/views/providers/index.js (100%) rename {assets => src}/wizards/advertising/views/settings/index.js (100%) rename {assets => src}/wizards/advertising/views/suppression/index.js (100%) rename {assets => src}/wizards/analytics/index.js (100%) rename {assets => src}/wizards/analytics/style.scss (93%) rename {assets => src}/wizards/analytics/views/index.js (100%) rename {assets => src}/wizards/analytics/views/newspack-custom-events/index.js (100%) rename {assets => src}/wizards/analytics/views/plugins/index.js (100%) rename {assets => src}/wizards/componentsDemo/index.js (100%) rename {assets => src}/wizards/connections/index.js (100%) rename {assets => src}/wizards/connections/style.scss (88%) rename {assets => src}/wizards/connections/views/index.js (100%) rename {assets => src}/wizards/connections/views/main/fivetran.js (100%) rename {assets => src}/wizards/connections/views/main/google.js (100%) rename {assets => src}/wizards/connections/views/main/index.js (100%) rename {assets => src}/wizards/connections/views/main/mailchimp.js (100%) rename {assets => src}/wizards/connections/views/main/plugins.js (100%) rename {assets => src}/wizards/connections/views/main/recaptcha.js (100%) rename {assets => src}/wizards/connections/views/main/webhooks.js (95%) rename {assets => src}/wizards/dashboard/index.js (100%) rename {assets => src}/wizards/dashboard/style.scss (76%) rename {assets => src}/wizards/dashboard/views/dashboardCard.js (100%) rename {assets => src}/wizards/engagement/components/active-campaign.js (100%) rename {assets => src}/wizards/engagement/components/mailchimp.js (100%) rename {assets => src}/wizards/engagement/components/metadata-fields.js (100%) rename {assets => src}/wizards/engagement/components/prerequisite.tsx (94%) rename {assets => src}/wizards/engagement/components/prompt.tsx (96%) rename {assets => src}/wizards/engagement/components/types.ts (100%) rename {assets => src}/wizards/engagement/index.js (100%) rename {assets => src}/wizards/engagement/views/index.js (100%) rename {assets => src}/wizards/engagement/views/newsletters/index.js (99%) rename {assets => src}/wizards/engagement/views/newsletters/style.scss (100%) rename {assets => src}/wizards/engagement/views/reader-activation/campaign.js (98%) rename {assets => src}/wizards/engagement/views/reader-activation/complete.js (100%) rename {assets => src}/wizards/engagement/views/reader-activation/index.js (100%) rename {assets => src}/wizards/engagement/views/reader-activation/style.scss (92%) rename {assets => src}/wizards/engagement/views/related-content/index.js (100%) rename {assets => src}/wizards/engagement/views/social/index.js (100%) rename {assets => src}/wizards/engagement/views/social/meta-pixel.js (100%) rename {assets => src}/wizards/engagement/views/social/pixel.js (100%) rename {assets => src}/wizards/engagement/views/social/twitter-pixel.js (100%) rename {assets => src}/wizards/handoff-banner/block-editor.js (100%) rename {assets => src}/wizards/handoff-banner/index.js (100%) rename {assets => src}/wizards/handoff-banner/style.scss (72%) rename {assets => src}/wizards/health-check/index.js (100%) rename {assets => src}/wizards/health-check/views/configuration/index.js (100%) rename {assets => src}/wizards/health-check/views/index.js (100%) rename {assets => src}/wizards/health-check/views/plugins/index.js (100%) rename {assets => src}/wizards/popups/components/campaign-management-popover/index.js (100%) rename {assets => src}/wizards/popups/components/lists-control/index.js (100%) rename {assets => src}/wizards/popups/components/prompt-action-card/index.js (100%) rename {assets => src}/wizards/popups/components/prompt-action-card/style.scss (95%) rename {assets => src}/wizards/popups/components/prompt-popovers/primary.js (100%) rename {assets => src}/wizards/popups/components/prompt-popovers/style.scss (64%) rename {assets => src}/wizards/popups/components/segment-group/SegmentGroup.test.js (100%) rename {assets => src}/wizards/popups/components/segment-group/icons.js (100%) rename {assets => src}/wizards/popups/components/segment-group/index.js (100%) rename {assets => src}/wizards/popups/components/segment-group/style.scss (84%) rename {assets => src}/wizards/popups/components/segmentation-preview/index.js (100%) rename {assets => src}/wizards/popups/components/settings-modal/index.js (100%) rename {assets => src}/wizards/popups/contexts/Campaigns.js (100%) rename {assets => src}/wizards/popups/contexts/index.js (100%) rename {assets => src}/wizards/popups/index.js (100%) rename {assets => src}/wizards/popups/utils.js (99%) rename {assets => src}/wizards/popups/views/analytics/index.js (100%) rename {assets => src}/wizards/popups/views/analytics/style.scss (93%) rename {assets => src}/wizards/popups/views/campaigns/index.js (95%) rename {assets => src}/wizards/popups/views/campaigns/style.scss (88%) rename {assets => src}/wizards/popups/views/index.js (100%) rename {assets => src}/wizards/popups/views/segments/index.js (100%) rename {assets => src}/wizards/popups/views/segments/segments-list.js (100%) rename {assets => src}/wizards/popups/views/segments/single-segment.js (100%) rename {assets => src}/wizards/popups/views/segments/single-segment.test.js (99%) rename {assets => src}/wizards/popups/views/segments/style.scss (91%) rename {assets => src}/wizards/popups/views/settings/index.js (100%) rename {assets => src}/wizards/readerRevenue/components/index.js (100%) rename {assets => src}/wizards/readerRevenue/components/money-input/index.js (100%) rename {assets => src}/wizards/readerRevenue/components/money-input/style.scss (92%) rename {assets => src}/wizards/readerRevenue/constants.js (100%) rename {assets => src}/wizards/readerRevenue/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/donation/index.tsx (95%) rename {assets => src}/wizards/readerRevenue/views/emails/index.js (93%) rename {assets => src}/wizards/readerRevenue/views/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/nrh-settings/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/platform/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/salesforce/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/stripe-setup/index.js (100%) rename {assets => src}/wizards/readerRevenue/views/stripe-setup/style.scss (78%) rename {assets => src}/wizards/seo/index.js (100%) rename {assets => src}/wizards/seo/views/index.js (100%) rename {assets => src}/wizards/seo/views/settings/index.js (100%) rename {assets => src}/wizards/setup/index.js (97%) rename {assets => src}/wizards/setup/style.scss (92%) rename {assets => src}/wizards/setup/views/completed/index.js (100%) rename {assets => src}/wizards/setup/views/index.js (100%) rename {assets => src}/wizards/setup/views/services/ReaderRevenue.js (100%) rename {assets => src}/wizards/setup/views/services/index.js (100%) rename {assets => src}/wizards/setup/views/services/style.scss (100%) rename {assets => src}/wizards/setup/views/settings/index.js (100%) rename {assets => src}/wizards/setup/views/welcome/index.js (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/joseph.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/katharine.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/nelson.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/newspack.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/sacha.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/images/scott.png (100%) rename {assets => src}/wizards/site-design/components/theme-selection/index.js (100%) rename {assets => src}/wizards/site-design/index.js (100%) rename {assets => src}/wizards/site-design/views/index.js (100%) rename {assets => src}/wizards/site-design/views/main/index.js (97%) rename {assets => src}/wizards/site-design/views/main/style.scss (71%) rename {assets => src}/wizards/site-design/views/main/utils.js (100%) rename {assets => src}/wizards/site-design/views/theme-settings/index.js (100%) rename {assets => src}/wizards/site-design/views/theme-settings/style.scss (100%) rename {assets => src}/wizards/syndication/index.js (100%) rename {assets => src}/wizards/syndication/views/index.js (100%) rename {assets => src}/wizards/syndication/views/intro/index.js (100%) diff --git a/.distignore b/.distignore index 6c2ab97c11..8407058d76 100644 --- a/.distignore +++ b/.distignore @@ -42,8 +42,8 @@ node_modules .circleci /tests /bin -/assets/**/*.js -/assets/**/*.scss +/src/**/*.js +/src/**/*.scss /release .cache codecov diff --git a/.eslintrc.js b/.eslintrc.js index f6a8967027..df1b9f776a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,8 +6,5 @@ module.exports = { newspack_urls: 'readonly', newspack_aux_data: 'readonly', }, - rules: { - '@typescript-eslint/ban-ts-comment': 'warn', - }, - ignorePatterns: [ 'dist/', 'node_modules/', 'assets/components/node_modules' ], + ignorePatterns: [ '*/dist/', '*/node_modules/', '*/release' ], }; diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3549ed950a..d7048dee22 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,8 +16,8 @@ updates: # Enable version updates for npm - package-ecosystem: 'npm' - # Look for `package.json` and `lock` files in the `assets/components` directory - directory: '/assets/components' + # Look for `package.json` and `lock` files in the `src/components` directory + directory: '/src/components' # Check the npm registry for updates every day (weekdays) schedule: interval: 'weekly' diff --git a/.gitignore b/.gitignore index 8f5cde7972..c627063f44 100644 --- a/.gitignore +++ b/.gitignore @@ -29,9 +29,9 @@ Thumbs.db # Built files /dist -/assets/components/dist -/assets/components/shared -/assets/components/node_modules +/src/components/dist +/src/components/shared +/src/components/node_modules release # Tests diff --git a/.nvmrc b/.nvmrc index 141e9a2a2c..b009dfb9d9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.11.1 +lts/* diff --git a/.prettierignore b/.prettierignore index 1521c8b765..7407e7d72b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,4 @@ dist +node_modules +release +vendor \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index aea29e6249..0000000000 --- a/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -useTabs: true -tabWidth: 2 -printWidth: 100 -singleQuote: true -trailingComma: es5 -bracketSpacing: true -parenSpacing: true -jsxBracketSameLine: false -semi: true -arrowParens: avoid diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000000..9f7a1d3d48 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,5 @@ +const baseConfig = require( './node_modules/newspack-scripts/config/prettier.config.js' ); + +module.exports = { + ...baseConfig +}; diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000000..d9a285768b --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,9 @@ +module.exports = { + ignoreFiles: [ + 'dist/**', + 'node_modules/**', + 'release/**', + 'scripts/**', + ], + extends: [ './node_modules/newspack-scripts/config/stylelint.config.js' ], +}; diff --git a/__mocks__/@wordpress/api-fetch.js b/__mocks__/@wordpress/api-fetch.js index 15be623f4a..e2b79982cd 100644 --- a/__mocks__/@wordpress/api-fetch.js +++ b/__mocks__/@wordpress/api-fetch.js @@ -1,4 +1,4 @@ -const apiFetch = ( { path } ) => +const apiFetch = () => new Promise( resolve => { resolve(); } ); diff --git a/assets/admin/style.scss b/assets/admin/style.scss deleted file mode 100644 index 92fcb02d27..0000000000 --- a/assets/admin/style.scss +++ /dev/null @@ -1 +0,0 @@ -@import url( '~tachyons/css/tachyons.min.css' ); diff --git a/assets/components/package.json b/assets/components/package.json deleted file mode 100644 index a017894939..0000000000 --- a/assets/components/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "newspack-components", - "version": "2.2.1", - "description": "Newspack design system components", - "author": "Automattic", - "license": "GPL-2.0-or-later", - "keywords": [ - "wordpress", - "newspack", - "components" - ], - "bugs": { - "url": "https://github.com/Automattic/newspack-plugin/issues" - }, - "homepage": "https://github.com/Automattic/newspack-plugin", - "repository": { - "type": "git", - "url": "https://github.com/Automattic/newspack-plugin.git", - "directory": "assets/src/components" - }, - "main": "dist/esm/index.js", - "publishConfig": { - "access": "public" - }, - "dependencies": { - "@wordpress/base-styles": "^4.0.0", - "@wordpress/components": "^23.6.0", - "@wordpress/element": "^5.5.0", - "@wordpress/i18n": "^4.2.2", - "@wordpress/icons": "^9.11.0", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "moment-range": "^3.1.1", - "qs": "^6.10.1", - "react-daterange-picker": "^2.0.1", - "react-router-dom": "^5.3.0" - }, - "devDependencies": { - "@automattic/calypso-build": "^10.0.0", - "@babel/cli": "^7.15.0", - "@babel/core": "^7.15.0", - "@types/wordpress__components": "^23.0.11", - "recursive-copy": "^2.0.13" - }, - "babel": { - "ignore": [ - "./node_modules" - ] - }, - "scripts": { - "prepublishOnly": "transpile && node copy-styles.js", - "postpublish": "rm -r dist && rm -r shared" - } -} diff --git a/assets/components/src/position-control/index.js b/assets/components/src/position-control/index.js deleted file mode 100644 index cce34580af..0000000000 --- a/assets/components/src/position-control/index.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { ButtonGroup, Button } from '@wordpress/components'; - -/** - * External dependencies - */ -import classnames from 'classnames'; - -/** - * Internal dependencies - */ -import './style.scss'; - -export default function PositionControl( { - allowedPositions, - value, - label, - help, - onChange, - size, - ...props -} ) { - /** - * Set layout options - */ - const options = - size === 'full-width' - ? [ - { - value: 'top', - /* translators: Overlay Position */ - label: __( 'Top', 'newspack-plugin' ), - }, - { - value: 'center', - /* translators: Overlay Position */ - label: __( 'Center', 'newspack-plugin' ), - }, - { - value: 'bottom', - /* translators: Overlay Position */ - label: __( 'Bottom', 'newspack-plugin' ), - }, - ] - : [ - { - value: 'top_left', - /* translators: Overlay Position */ - label: __( 'Top Left', 'newspack-plugin' ), - }, - { - value: 'top', - /* translators: Overlay Position */ - label: __( 'Top Center', 'newspack-plugin' ), - }, - { - value: 'top_right', - /* translators: Overlay Position */ - label: __( 'Top Right', 'newspack-plugin' ), - }, - { - value: 'center_left', - /* translators: Overlay Position */ - label: __( 'Center Left', 'newspack-plugin' ), - }, - { - value: 'center', - /* translators: Overlay Position */ - label: __( 'Center', 'newspack-plugin' ), - }, - { - value: 'center_right', - /* translators: Overlay Position */ - label: __( 'Center Right', 'newspack-plugin' ), - }, - { - value: 'bottom_left', - /* translators: Overlay Position */ - label: __( 'Bottom Left', 'newspack-plugin' ), - }, - { - value: 'bottom', - /* translators: Overlay Position */ - label: __( 'Bottom Center', 'newspack-plugin' ), - }, - { - value: 'bottom_right', - /* translators: Overlay Position */ - label: __( 'Bottom Right', 'newspack-plugin' ), - }, - ]; - return ( -
-

{ label }

- - { options.map( ( option, index ) => { - return ( -
-
- ); - } ) } -
-

{ help }

-
- ); -} diff --git a/assets/images/recaptcha-v2-checkbox.gif b/assets/images/recaptcha-v2-checkbox.gif deleted file mode 100644 index c3d21bce5b93979fd3fcd270d757548feb0b057d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59883 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

l-$qC7Mpy4f&(=oY zpN)R9%|W5fVS~-lS|ri`8?1u+Cs;)R-~sTz(SHZ4K3C6J4%#cGFfF^t){-aB*8F5> z^yy7n_Ndva={q%zm}U`JFxqNT@XXs)&nletbhP%8wDSv*4+s>a3ysEg3Ji`3jZcgr zapq4+Of%wi%Z#QlO305kDoOFwh$>Iitf^2pt*@0r$ZHN&mFmcnV(e*=Xz%xvY#Wa5 z5+9GY5+fIz4$b~ZHoxFUg76UlSzVLd@m>Eo_if)Hd*$TRoM{6xcJ*Cy=uXi+R0f))6Fx{auV4{)byk)ITu#0v;AZlc~ny z2ZL(?+S463`xJ3x2Pm-ri4gv0(cb|$0m1;G|5^0Vs5u)B6UDrl#R-=h-FmGpoXIO! z9>f?-IhI#-#d_Udw(i)|heLX&zO7KsU$ur?jf{q$A%-Lf!IBgP5fTO@{4rv5(TTD8 z>JdJv8U~2L$;#PU`U#GlQH4$pp86n1#82i9&0;N<%GDN)TAdP|ZJPRY7B}w z&~GCp^h*)pIzeU)#?2X3R}7y`n@5fz+{Q~ZvJ~`38RQXRQdS8W&6DNERa!4px|R1$%@r?VF1u>T z3e`b;>56GxZCFTwQ)Sap-d39!94x5w)=%uVGo-QIhwZhUHaWVHu0BPu3mNbD=1|Bs zJ$@LUV5pP33^`aKc}YgFX7R6Qh9eM$ zvj*p@^_ZmVevBfc$oqU^klbis`x_q{FZ|G9g;1-C4-y7M+dt0mz45X{b%tqr2xsNo zEQF&ex+mPn=R^!2CrrKWkRkjmQG^uf=!Gp7|1pNQFr-6%nJU^Yp-~bUbclR}#q?e$ zoRp;E(E=M`nC+POPmXtJmYL&RS++&Qbuc_rNaYDCBd?lB2o#5H2s0Qc8=}NF?F?5K z%6NQ=9{JZ9QW%10D*+_>J12^i5tMFI00<$rmC44TIL9w4la<8!A1fvSumB|9=nXnV z{%@Qc5+#avlE77SqRxEYCUK2az>AN7YZFWzGWx-{wUsg z^`H~<)dbN6M0g;Es8K}5JG>b(L{Jdm9-(V&l%R*G66_kxArx<1VN_8a$t1*)W|=O8 zlVyyr+da{iU*}rn^1IlVoUQOmK3#yMK13^K1XWo0kYR zs-|(EELZ;%=RVY5X&9AED+|2)^S9DLzjSJ>7{1r#6=$-Usu0vCD@fX?BHfsui-Q@N z5~1E`*25jd{=DmAT{QUqRaw{kK%@jF?oPcgnZZp%LDNfoA=z`$tmie$o&ev)c%fXy z3pe(%#rvLKjuJjfvu2GWUX0r(O!|GgE92Kx!-)5xTCJ5|3LquK%omuaSv4QNo$}lK zwCAIs>6{gmP2I2OG8?D4oM?Ne*Anz;*?ozNQ&}(z-bg0O&=pzQvE*VY&(NTOewK5>v;T&0+ zgfT&8T0~qM79e2fy14YtFNrTW9txWP!8G5tk&}p^=8wq?5W}+onkPLSF}R)WlYx(+ zSpmsFvdrV+T!P(+>dKKbD_}+xb;w&BDIpj!!3VXP4gva%TI;s%b3xO2o;B3O0}42) z*9%b=19H6YuF0%a4YX?_gLc<6&*AU}BYpFTc4%7zlkgpN9`YxAt2g1bbxgVEH^0PA zJM4Doh3|N==QHJ1ukU^SUif3+>9{Hw2x3)PMxi(r>6b><@^$)`H-P|50Qooimp4I9 zTWt7w%GIR9-`)wU#gt1qUSD>v;m^mjzG~EY&HT-qJblD>v)#BN3HDW5TK*B>Ktkc` zN)e!>5+!foN#Y!;1tjr`PD@vbwWkwIv6EX*>A&yx^Lu~ROpEw=Y57f!COYb&x3 z$pf~w_Z8aFB??w6GAWFaOejr`&W z7>O^Ej-3d?CK^vJYzVyxr`{)o(wphx@CAzCo0evcZ%&AlfnGhN{=)wrRXgryO?W

c^d>!&v% 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 z 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 diff --git a/composer.json b/composer.json index 2f0564237e..5b07d0ff79 100644 --- a/composer.json +++ b/composer.json @@ -45,11 +45,11 @@ }, "config": { "platform": { - "php": "7.4" + "php": "8.0" }, "allow-plugins": { "composer/installers": true, "dealerdirect/phpcodesniffer-composer-installer": true } } -} +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 86e091a45a..f4ddea4078 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": "eaa2343fefcc9e8911a0dbf27e36f791", + "content-hash": "e09fc59048c5ec81150899b159250af0", "packages": [ { "name": "composer/installers", @@ -154,26 +154,26 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.0", + "version": "v6.10.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff" + "reference": "500501c2ce893c824c801da135d02661199f60c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", + "reference": "500501c2ce893c824c801da135d02661199f60c5", "shasum": "" }, "require": { - "php": "^7.4||^8.0" + "php": "^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", + "guzzlehttp/guzzle": "^7.4", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", + "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" }, @@ -211,40 +211,42 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.0" + "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" }, - "time": "2023-12-01T16:26:39+00:00" + "time": "2024-05-18T18:05:11+00:00" }, { "name": "google/auth", - "version": "v1.37.1", + "version": "v1.40.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-auth-library-php.git", - "reference": "1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46" + "reference": "bff9f2d01677e71a98394b5ac981b99523df5178" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46", - "reference": "1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/bff9f2d01677e71a98394b5ac981b99523df5178", + "reference": "bff9f2d01677e71a98394b5ac981b99523df5178", "shasum": "" }, "require": { "firebase/php-jwt": "^6.0", - "guzzlehttp/guzzle": "^6.5.8||^7.4.5", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.4.5", - "php": "^7.4||^8.0", - "psr/cache": "^1.0||^2.0||^3.0", + "php": "^8.0", + "psr/cache": "^2.0||^3.0", "psr/http-message": "^1.1||^2.0" }, "require-dev": { "guzzlehttp/promises": "^2.0", "kelvinmo/simplejwt": "0.7.1", - "phpseclib/phpseclib": "^3.0", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.0.0", + "phpseclib/phpseclib": "^3.0.35", + "phpspec/prophecy-phpunit": "^2.1", + "phpunit/phpunit": "^9.6", "sebastian/comparator": ">=1.2.3", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^6.0||^7.0", + "webmozart/assert": "^1.11" }, "suggest": { "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2." @@ -269,9 +271,9 @@ "support": { "docs": "https://googleapis.github.io/google-auth-library-php/main/", "issues": "https://github.com/googleapis/google-auth-library-php/issues", - "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.37.1" + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.40.0" }, - "time": "2024-04-03T18:41:12+00:00" + "time": "2024-05-31T19:16:15+00:00" }, { "name": "guzzlehttp/guzzle", @@ -650,20 +652,20 @@ }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -683,7 +685,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -693,9 +695,9 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/http-client", @@ -751,20 +753,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -788,7 +790,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -800,9 +802,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -1247,16 +1249,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -1264,11 +1266,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -1294,7 +1297,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -1302,20 +1305,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v5.1.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", "shasum": "" }, "require": { @@ -1326,7 +1329,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -1358,9 +1361,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2024-07-01T20:03:41+00:00" }, { "name": "phar-io/manifest", @@ -1764,22 +1767,22 @@ }, { "name": "phpcsstandards/phpcsutils", - "version": "1.0.11", + "version": "1.0.12", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a" + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c457da9dabb60eb7106dd5e3c05132b1a6539c6a", - "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.9.0 || 4.0.x-dev@dev" + "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" }, "require-dev": { "ext-filter": "*", @@ -1848,7 +1851,7 @@ "type": "open_collective" } ], - "time": "2024-04-24T11:47:18+00:00" + "time": "2024-05-20T13:34:27+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3285,16 +3288,16 @@ }, { "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.18", + "version": "v2.11.19", "source": { "type": "git", "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0" + "reference": "bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0", - "reference": "ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1", + "reference": "bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1", "shasum": "" }, "require": { @@ -3339,20 +3342,20 @@ "source": "https://github.com/sirbrillig/phpcs-variable-analysis", "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" }, - "time": "2024-04-13T16:42:46+00:00" + "time": "2024-06-26T20:08:34+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2" + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", "shasum": "" }, "require": { @@ -3419,20 +3422,20 @@ "type": "open_collective" } ], - "time": "2024-05-20T08:11:32+00:00" + "time": "2024-05-22T21:24:41+00:00" }, { "name": "symfony/console", - "version": "v5.4.21", + "version": "v5.4.41", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" + "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "url": "https://api.github.com/repos/symfony/console/zipball/6473d441a913cb997123b59ff2dbe3d1cf9e11ba", + "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba", "shasum": "" }, "require": { @@ -3497,12 +3500,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.21" + "source": "https://github.com/symfony/console/tree/v5.4.41" }, "funding": [ { @@ -3518,20 +3521,20 @@ "type": "tidelift" } ], - "time": "2023-02-25T16:59:41+00:00" + "time": "2024-06-28T07:48:55+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -3581,7 +3584,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -3597,20 +3600,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -3621,9 +3624,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3662,7 +3662,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -3678,20 +3678,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -3743,7 +3743,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -3759,20 +3759,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -3823,7 +3823,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -3839,20 +3839,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1", + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1", "shasum": "" }, "require": { @@ -3860,9 +3860,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3902,7 +3899,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0" }, "funding": [ { @@ -3918,20 +3915,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", "shasum": "" }, "require": { @@ -3939,9 +3936,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3985,7 +3979,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" }, "funding": [ { @@ -4001,20 +3995,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", "shasum": "" }, "require": { @@ -4068,7 +4062,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" }, "funding": [ { @@ -4084,20 +4078,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-04-21T15:04:16+00:00" }, { "name": "symfony/string", - "version": "v5.4.21", + "version": "v5.4.41", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" + "reference": "065a9611e0b1fd2197a867e1fb7f2238191b7096" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", + "url": "https://api.github.com/repos/symfony/string/zipball/065a9611e0b1fd2197a867e1fb7f2238191b7096", + "reference": "065a9611e0b1fd2197a867e1fb7f2238191b7096", "shasum": "" }, "require": { @@ -4154,7 +4148,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.21" + "source": "https://github.com/symfony/string/tree/v5.4.41" }, "funding": [ { @@ -4170,7 +4164,7 @@ "type": "tidelift" } ], - "time": "2023-02-22T08:00:55+00:00" + "time": "2024-06-28T09:20:55+00:00" }, { "name": "theseer/tokenizer", @@ -4360,7 +4354,7 @@ "platform": [], "platform-dev": [], "platform-overrides": { - "php": "7.4" + "php": "8.0" }, "plugin-api-version": "2.6.0" } diff --git a/includes/class-blocks.php b/includes/class-blocks.php index 3e83802063..35da660d36 100644 --- a/includes/class-blocks.php +++ b/includes/class-blocks.php @@ -17,7 +17,7 @@ final class Blocks { * Initialize Hooks. */ public static function init() { - require_once NEWSPACK_ABSPATH . 'assets/blocks/reader-registration/index.php'; + require_once NEWSPACK_ABSPATH . 'src/blocks/reader-registration/index.php'; \add_action( 'enqueue_block_editor_assets', [ __CLASS__, 'enqueue_block_editor_assets' ] ); } @@ -42,7 +42,7 @@ public static function enqueue_block_editor_assets() { 'has_reader_activation' => Reader_Activation::is_enabled(), 'newsletters_url' => Wizards::get_wizard( 'engagement' )->newsletters_settings_url(), 'has_google_oauth' => Google_OAuth::is_oauth_configured(), - 'google_logo_svg' => file_get_contents( dirname( NEWSPACK_PLUGIN_FILE ) . '/assets/blocks/reader-registration/icons/google.svg' ), + 'google_logo_svg' => file_get_contents( dirname( NEWSPACK_PLUGIN_FILE ) . '/src/blocks/reader-registration/icons/google.svg' ), 'reader_activation_terms' => Reader_Activation::get_setting( 'terms_text' ), 'reader_activation_url' => Reader_Activation::get_setting( 'terms_url' ), 'has_recaptcha' => Recaptcha::can_use_captcha(), diff --git a/includes/class-handoff-banner.php b/includes/class-handoff-banner.php index 5b0560d4a1..ebbeb8e489 100644 --- a/includes/class-handoff-banner.php +++ b/includes/class-handoff-banner.php @@ -54,7 +54,7 @@ public function insert_block_editor_handoff_banner() { $handle = 'newspack-handoff-banner-block-editor'; wp_register_script( $handle, - Newspack::plugin_url() . '/assets/wizards/handoff-banner/block-editor.js', + Newspack::plugin_url() . '/src/wizards/handoff-banner/block-editor.js', [ 'wp-element', 'wp-editor', 'wp-components' ], NEWSPACK_PLUGIN_VERSION, true diff --git a/includes/reader-activation/class-reader-activation.php b/includes/reader-activation/class-reader-activation.php index 8fb78b96ee..19fe1308e5 100644 --- a/includes/reader-activation/class-reader-activation.php +++ b/includes/reader-activation/class-reader-activation.php @@ -1409,7 +1409,7 @@ public static function render_third_party_auth() {